
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>TechKoala - Input/Output</title>
    <link>https://www.techkoala.net/</link>
    <description>Recent content on TechKoala - Input/Output</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-CN</language>
    <lastBuildDate>Wed, 10 Dec 2025 13:09:56 +0800</lastBuildDate>
    
    <atom:link href="https://www.techkoala.net/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Linux 内核网络核心：sk_buff 深度解析</title>
      <link>https://www.techkoala.net/linux-%E5%86%85%E6%A0%B8%E7%BD%91%E7%BB%9C%E6%A0%B8%E5%BF%83sk_buff-%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90%E4%B8%8E%E5%AD%90%E7%B3%BB%E7%BB%9F%E4%BA%A4%E4%BA%92/</link>
      <pubDate>Wed, 10 Dec 2025 13:09:56 +0800</pubDate>
      
      <guid>https://www.techkoala.net/linux-%E5%86%85%E6%A0%B8%E7%BD%91%E7%BB%9C%E6%A0%B8%E5%BF%83sk_buff-%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90%E4%B8%8E%E5%AD%90%E7%B3%BB%E7%BB%9F%E4%BA%A4%E4%BA%92/</guid>
      <description>&lt;p&gt;本文档基于 Linux 内核开发者视角，深入剖析网络子系统最核心的数据结构 &lt;code&gt;sk_buff&lt;/code&gt; (socket buffer)。我们将从内存布局、生命周期、软硬件交互以及性能优化机制（如 GRO, Zero Copy, BQL/TSQ）等多个维度进行全景式描述。&lt;/p&gt;
&lt;h2 id=&#34;第一部分sk_buff-的物理与逻辑解剖&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ac%ac%e4%b8%80%e9%83%a8%e5%88%86sk_buff-%e7%9a%84%e7%89%a9%e7%90%86%e4%b8%8e%e9%80%bb%e8%be%91%e8%a7%a3%e5%89%96&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;第一部分：sk_buff 的物理与逻辑解剖&lt;/h2&gt;&lt;h3 id=&#34;1-核心设计哲学元数据与数据的分离&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#1-%e6%a0%b8%e5%bf%83%e8%ae%be%e8%ae%a1%e5%93%b2%e5%ad%a6%e5%85%83%e6%95%b0%e6%8d%ae%e4%b8%8e%e6%95%b0%e6%8d%ae%e7%9a%84%e5%88%86%e7%a6%bb&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;1. 核心设计哲学：元数据与数据的分离&lt;/h3&gt;&lt;p&gt;在 Linux 内核中，网络包并非存储在一个巨大的连续结构体中，而是被拆分为两部分，分别独立分配内存：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;控制结构体 (&lt;code&gt;struct sk_buff&lt;/code&gt;)&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;位置：&lt;/strong&gt; 分配在 Slab Cache (&lt;code&gt;skbuff_head_cache&lt;/code&gt;) 中。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作用：&lt;/strong&gt; 包含管理数据包所需的元数据（如指针、长度、接口、协议、引用计数等）。它的大小固定（约 232~256 字节），随内核配置而变。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据缓冲区 (Data Buffer)&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;位置：&lt;/strong&gt; 通过 &lt;code&gt;kmalloc&lt;/code&gt; 分配的连续物理内存块（线性区）或物理页（非线性区）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作用：&lt;/strong&gt; 存放真实的协议头（MAC/IP/TCP）和用户负载。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;2-内存布局与指针系统&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#2-%e5%86%85%e5%ad%98%e5%b8%83%e5%b1%80%e4%b8%8e%e6%8c%87%e9%92%88%e7%b3%bb%e7%bb%9f&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;2. 内存布局与指针系统&lt;/h3&gt;&lt;p&gt;&lt;code&gt;sk_buff&lt;/code&gt; 通过四个核心指针管理&lt;strong&gt;线性数据区&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-3&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[ struct sk_buff ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      +--- head ----------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      |                                           |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      +--- data ---------+                        |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      |                  |                        |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      +--- tail -----------------------+          |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      |                  |             |          |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      +--- end ------------------------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                         |             |          |            |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      [   Headroom     ] [   Data      ] [ Tailroom ] [ skb_shared_info ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      ^                  ^             ^            ^          ^
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      |                  |             |            |          |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    head               data          tail          end      end 之后&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;head&lt;/code&gt;&lt;/strong&gt;：线性内存块的物理起始地址。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;data&lt;/code&gt;&lt;/strong&gt;：当前协议层有效数据的起始位置。随协议层变化移动（&lt;code&gt;push&lt;/code&gt;/&lt;code&gt;pull&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;tail&lt;/code&gt;&lt;/strong&gt;：当前有效数据的结束位置。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;end&lt;/code&gt;&lt;/strong&gt;：线性内存块的物理结束地址。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;skb_shared_info&lt;/code&gt;&lt;/strong&gt;：&lt;strong&gt;位于 &lt;code&gt;end&lt;/code&gt; 之后&lt;/strong&gt;。它不占用线性区空间，但紧随其后。核心成员是 &lt;code&gt;frags[]&lt;/code&gt; 数组，用于挂载&lt;strong&gt;非线性区&lt;/strong&gt;（物理页数据）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-线性区-vs-非线性区&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#3-%e7%ba%bf%e6%80%a7%e5%8c%ba-vs-%e9%9d%9e%e7%ba%bf%e6%80%a7%e5%8c%ba&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3. 线性区 vs 非线性区&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;线性区 (&lt;code&gt;head&lt;/code&gt; ~ &lt;code&gt;end&lt;/code&gt;)&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;必须存在&lt;/strong&gt;。用于存放所有的&lt;strong&gt;协议头部&lt;/strong&gt;（MAC, IP, TCP）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;原因&lt;/strong&gt;：CPU 访问协议头时需要使用结构体指针强转（如 &lt;code&gt;(struct iphdr *)skb-&amp;gt;data&lt;/code&gt;），要求内存物理连续。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;小包场景&lt;/strong&gt;：Payload 也直接存放在这里。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;非线性区 (&lt;code&gt;frags&lt;/code&gt; / Page Based)&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;可选&lt;/strong&gt;。存放大数据负载（如文件传输、视频流）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;物理形态&lt;/strong&gt;：&lt;code&gt;skb_shared_info-&amp;gt;frags[]&lt;/code&gt; 数组指向一组分散的物理页（Page）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;硬件要求&lt;/strong&gt;：网卡必须支持 &lt;strong&gt;Scatter-Gather (SG) DMA&lt;/strong&gt; 才能直接读取这些分散的页。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;优势&lt;/strong&gt;：实现 &lt;strong&gt;Zero Copy&lt;/strong&gt;（零拷贝）和 &lt;strong&gt;Jumbo Frames&lt;/strong&gt;（巨型帧）的基础。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第二部分数据包的生命周期-flow&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ac%ac%e4%ba%8c%e9%83%a8%e5%88%86%e6%95%b0%e6%8d%ae%e5%8c%85%e7%9a%84%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f-flow&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;第二部分：数据包的生命周期 (Flow)&lt;/h2&gt;&lt;h3 id=&#34;1-发送路径-tx--push-与-克隆&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#1-%e5%8f%91%e9%80%81%e8%b7%af%e5%be%84-tx--push-%e4%b8%8e-%e5%85%8b%e9%9a%86&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;1. 发送路径 (TX) —— &amp;ldquo;Push&amp;rdquo; 与 克隆&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;分配 (Alloc)&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;调用 &lt;code&gt;send()&lt;/code&gt; 时，内核根据 MSS 和 MAX_HEADER 计算大小，分配 &lt;code&gt;sk_buff&lt;/code&gt; 和数据区。&lt;/li&gt;
&lt;li&gt;调用 &lt;code&gt;skb_reserve&lt;/code&gt;，移动 &lt;code&gt;data&lt;/code&gt; 和 &lt;code&gt;tail&lt;/code&gt; 指针，预留 &lt;strong&gt;Headroom&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;用户数据被拷贝（或零拷贝映射）进来。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;克隆 (Clone)&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;TCP 为了可靠传输（重传），在交给 IP 层前执行 &lt;code&gt;skb_clone&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clone 特性&lt;/strong&gt;：只复制 &lt;code&gt;sk_buff&lt;/code&gt; 结构体，&lt;strong&gt;不复制数据区&lt;/strong&gt;。新旧 skb 指向同一块内存。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Original skb&lt;/strong&gt;：留在发送队列，&lt;code&gt;data&lt;/code&gt; 指针指向 Payload 开头。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clone skb&lt;/strong&gt;：用于传输，&lt;code&gt;data&lt;/code&gt; 指针在 Headroom 中前移（&lt;code&gt;skb_push&lt;/code&gt;）以填充协议头。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;填头 (Header Filling)&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TCP 层&lt;/strong&gt;：&lt;code&gt;skb_push&lt;/code&gt; 腾出空间 -&amp;gt; 强转指针 &lt;code&gt;(struct tcphdr*)skb-&amp;gt;data&lt;/code&gt; -&amp;gt; 填入 Seq/Port。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IP 层&lt;/strong&gt;：&lt;code&gt;skb_push&lt;/code&gt; -&amp;gt; 填入 IP 头。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MAC 层&lt;/strong&gt;：&lt;code&gt;skb_push&lt;/code&gt; -&amp;gt; 填入 MAC 头。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;硬件交互 (Ring Buffer)&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;驱动将线性区和 Frags 的物理地址填入 &lt;strong&gt;TX Ring Buffer&lt;/strong&gt; 的描述符。&lt;/li&gt;
&lt;li&gt;按“门铃”（写寄存器），通知网卡 DMA 搬运。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;发送完成&lt;/strong&gt;：指 DMA 将数据搬入网卡 &lt;strong&gt;SRAM&lt;/strong&gt;，内核释放 &lt;code&gt;skb&lt;/code&gt; 内存。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;2-接收路径-rx--pull-与-聚合&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#2-%e6%8e%a5%e6%94%b6%e8%b7%af%e5%be%84-rx--pull-%e4%b8%8e-%e8%81%9a%e5%90%88&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;2. 接收路径 (RX) —— &amp;ldquo;Pull&amp;rdquo; 与 聚合&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;硬件接收&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;数据到达，网卡 DMA 将其写入预先分配的 Ring Buffer 内存块（可能是 Page）。&lt;/li&gt;
&lt;li&gt;触发 &lt;strong&gt;硬中断&lt;/strong&gt;，随后调度 &lt;strong&gt;软中断 (NAPI)&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GRO (Generic Receive Offload)&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;在 NAPI 层，将同属于一条流的多个小包&lt;strong&gt;合并&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;保留第一个包的 &lt;code&gt;skb&lt;/code&gt; 壳，将后续包的物理页（Frags）挂到第一个包的 &lt;code&gt;shinfo&lt;/code&gt; 上，丢弃后续包的壳。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;效果&lt;/strong&gt;：协议栈看到一个巨大的包（哪怕超过 MTU），带有 &lt;code&gt;gso_size&lt;/code&gt; 标记。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;剥离头部 (Header Stripping)&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;进入协议栈，执行 &lt;code&gt;skb_pull&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;data&lt;/code&gt; 指针向后移动，依次跳过 MAC、IP、TCP 头。被跳过的部分变成 Headroom。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;接收缓冲&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;数据包被挂入 Socket 的接收队列（&lt;strong&gt;有序链表&lt;/strong&gt;或&lt;strong&gt;乱序红黑树&lt;/strong&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;接收窗口&lt;/strong&gt;：并非物理连续内存，而是通过 &lt;code&gt;sk_rmem_alloc&lt;/code&gt; 原子计数器限制的总字节数。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;第三部分核心机制与-qa&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ac%ac%e4%b8%89%e9%83%a8%e5%88%86%e6%a0%b8%e5%bf%83%e6%9c%ba%e5%88%b6%e4%b8%8e-qa&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;第三部分：核心机制与 Q&amp;amp;A&lt;/h2&gt;&lt;p&gt;在此部分，我们将之前的讨论整理为问答形式，解答关键的技术细节。&lt;/p&gt;
&lt;h3 id=&#34;q1-sk_buff-中的成员都是对应数据的指针吗真实数据存在哪里&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#q1-sk_buff-%e4%b8%ad%e7%9a%84%e6%88%90%e5%91%98%e9%83%bd%e6%98%af%e5%af%b9%e5%ba%94%e6%95%b0%e6%8d%ae%e7%9a%84%e6%8c%87%e9%92%88%e5%90%97%e7%9c%9f%e5%ae%9e%e6%95%b0%e6%8d%ae%e5%ad%98%e5%9c%a8%e5%93%aa%e9%87%8c&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Q1: sk_buff 中的成员都是对应数据的指针吗？真实数据存在哪里？&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt; 不全是。&lt;code&gt;head/data/tail/end&lt;/code&gt; 是指针。但像 &lt;code&gt;len&lt;/code&gt;, &lt;code&gt;protocol&lt;/code&gt; 是普通变量。还有一个特殊的 &lt;strong&gt;&lt;code&gt;cb[48]&lt;/code&gt; (Control Buffer)&lt;/strong&gt;，它是一个直接存放在结构体内的 48 字节数组。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;真实数据&lt;/strong&gt;：存在于 &lt;code&gt;head&lt;/code&gt; 指向的另一块独立分配的内存（线性区）或 &lt;code&gt;frags&lt;/code&gt; 指向的物理页（非线性区）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TCP Seq&lt;/strong&gt;：在处理过程中，Seq 为了访问速度，被拷贝存放在 &lt;code&gt;cb&lt;/code&gt; 数组中，而不是每次都去读 &lt;code&gt;data&lt;/code&gt; 里的 TCP 头。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;q2-一个完整的数据包是否就包含在-skb-head-和-skb-end-之间&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#q2-%e4%b8%80%e4%b8%aa%e5%ae%8c%e6%95%b4%e7%9a%84%e6%95%b0%e6%8d%ae%e5%8c%85%e6%98%af%e5%90%a6%e5%b0%b1%e5%8c%85%e5%90%ab%e5%9c%a8-skb-head-%e5%92%8c-skb-end-%e4%b9%8b%e9%97%b4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Q2: 一个完整的数据包，是否就包含在 skb-&amp;gt;head 和 skb-&amp;gt;end 之间？&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt; 这是一个误区。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;head~end&lt;/strong&gt;：是内核分配的&lt;strong&gt;线性内存容器&lt;/strong&gt;的总大小。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;data~tail&lt;/strong&gt;：才是&lt;strong&gt;当前协议层&lt;/strong&gt;看到的有效数据。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;非线性数据&lt;/strong&gt;：对于大包，大部分 Payload 存储在 &lt;code&gt;end&lt;/code&gt; 指针之后的 &lt;code&gt;skb_shared_info-&amp;gt;frags&lt;/code&gt; 指向的物理页中，根本不在 &lt;code&gt;head~end&lt;/code&gt; 之间。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;校验和&lt;/strong&gt;：存放在 &lt;code&gt;data~tail&lt;/code&gt; 包含的协议头内部，绝不会在 &lt;code&gt;tail&lt;/code&gt; 后面。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;q3-为什么会有-skb_clone它拷贝数据吗&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#q3-%e4%b8%ba%e4%bb%80%e4%b9%88%e4%bc%9a%e6%9c%89-skb_clone%e5%ae%83%e6%8b%b7%e8%b4%9d%e6%95%b0%e6%8d%ae%e5%90%97&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Q3: 为什么会有 skb_clone？它拷贝数据吗？&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;目的&lt;/strong&gt;：为了高效实现 TCP 重传、抓包（tcpdump）等功能。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;机制&lt;/strong&gt;：&lt;code&gt;skb_clone&lt;/code&gt;&lt;strong&gt;完全不拷贝&lt;/strong&gt;数据区。它只申请一个新的 &lt;code&gt;sk_buff&lt;/code&gt; 结构体（元数据），让其 &lt;code&gt;head&lt;/code&gt; 指针指向原有的数据区。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;副作用&lt;/strong&gt;：Clone 出来的 skb 对数据区是 &lt;strong&gt;只读 (Read-Only)&lt;/strong&gt; 的。如果需要修改数据，必须触发 CoW（写时复制）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;引用计数&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;users&lt;/code&gt;：管 &lt;code&gt;sk_buff&lt;/code&gt; 结构体。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dataref&lt;/code&gt;：管数据区。Clone 时 &lt;code&gt;dataref++&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;q4-环形缓冲区-ring-buffer-在物理上是怎么理解的&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#q4-%e7%8e%af%e5%bd%a2%e7%bc%93%e5%86%b2%e5%8c%ba-ring-buffer-%e5%9c%a8%e7%89%a9%e7%90%86%e4%b8%8a%e6%98%af%e6%80%8e%e4%b9%88%e7%90%86%e8%a7%a3%e7%9a%84&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Q4: 环形缓冲区 (Ring Buffer) 在物理上是怎么理解的？&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它不是存放数据包的环，而是存放 &lt;strong&gt;描述符 (Descriptor)&lt;/strong&gt; 的数组。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;描述符&lt;/strong&gt;：是一个很小的结构体，里面只有物理地址指针和状态位。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工作流&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RX&lt;/strong&gt;：驱动把空闲内存地址填入描述符 -&amp;gt; 网卡 DMA 填数据 -&amp;gt; CPU 读走。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TX&lt;/strong&gt;：驱动把数据地址填入描述符 -&amp;gt; 网卡 DMA 读数据 -&amp;gt; 网卡发送。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;q5-硬中断和软中断具体分工是什么&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#q5-%e7%a1%ac%e4%b8%ad%e6%96%ad%e5%92%8c%e8%bd%af%e4%b8%ad%e6%96%ad%e5%85%b7%e4%bd%93%e5%88%86%e5%b7%a5%e6%98%af%e4%bb%80%e4%b9%88&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Q5: 硬中断和软中断具体分工是什么？&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;硬中断&lt;/strong&gt;：&lt;strong&gt;极短&lt;/strong&gt;。只负责告诉 CPU “DMA 搬运完了”，然后关闭网卡中断，唤醒软中断。它&lt;strong&gt;不拷贝&lt;/strong&gt;数据。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;软中断 (NAPI)&lt;/strong&gt;：&lt;strong&gt;干重活&lt;/strong&gt;。轮询 Ring Buffer，分配 &lt;code&gt;sk_buff&lt;/code&gt;（如果需要），执行 GRO 合并，运行 TCP/IP 协议栈逻辑，直到数据放入 Socket 队列。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;q6-零拷贝-zero-copy-是如何运作的&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#q6-%e9%9b%b6%e6%8b%b7%e8%b4%9d-zero-copy-%e6%98%af%e5%a6%82%e4%bd%95%e8%bf%90%e4%bd%9c%e7%9a%84&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Q6: 零拷贝 (Zero Copy) 是如何运作的？&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt; 核心在于利用 &lt;strong&gt;&lt;code&gt;skb_shared_info-&amp;gt;frags&lt;/code&gt;&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sendfile&lt;/strong&gt;：内核直接把磁盘读取到的 Page Cache（物理页）的地址挂到 &lt;code&gt;frags&lt;/code&gt; 数组里，完全跳过 CPU &lt;code&gt;memcpy&lt;/code&gt; 到线性区的步骤。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Splice&lt;/strong&gt;：在两个 Socket 或 Pipe 之间传递物理页的&lt;strong&gt;指针/引用&lt;/strong&gt;，而不是搬运数据。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;q7-发包时当驱动说发送完成数据真的发出去了吗&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#q7-%e5%8f%91%e5%8c%85%e6%97%b6%e5%bd%93%e9%a9%b1%e5%8a%a8%e8%af%b4%e5%8f%91%e9%80%81%e5%ae%8c%e6%88%90%e6%95%b0%e6%8d%ae%e7%9c%9f%e7%9a%84%e5%8f%91%e5%87%ba%e5%8e%bb%e4%ba%86%e5%90%97&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Q7: 发包时，当驱动说“发送完成”，数据真的发出去了吗？&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt; 通常没有。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它只代表数据已经完整进入了 &lt;strong&gt;网卡的 SRAM (Tx FIFO)&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;内核此时释放内存 (&lt;code&gt;kfree_skb&lt;/code&gt;)。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;隐患&lt;/strong&gt;：Bufferbloat（缓冲区膨胀）。数据可能堵在网卡硬件里，导致 Ping 值虚高且内核 QoS 失效。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;q8-什么是-bql-和-tsq它们解决什么问题&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#q8-%e4%bb%80%e4%b9%88%e6%98%af-bql-%e5%92%8c-tsq%e5%ae%83%e4%bb%ac%e8%a7%a3%e5%86%b3%e4%bb%80%e4%b9%88%e9%97%ae%e9%a2%98&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Q8: 什么是 BQL 和 TSQ？它们解决什么问题？&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt; 它们是为了解决上述的 Bufferbloat 问题。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;BQL (Byte Queue Limits)&lt;/strong&gt;：在驱动层。动态调整提交给网卡硬件队列的字节数，保证网卡不饿死但也&lt;strong&gt;不多留&lt;/strong&gt;数据。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TSQ (TCP Small Queues)&lt;/strong&gt;：在 TCP 层。限制每个 Socket 已发送但未释放（还在网卡或 QDisc 排队）的字节数。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;效果&lt;/strong&gt;：构建了从网卡到应用的&lt;strong&gt;背压 (Backpressure)&lt;/strong&gt; 机制，将排队控制在内核可控的层级（QDisc），从而降低延迟。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;q9-接收窗口-receive-window-对应一块连续物理内存吗&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#q9-%e6%8e%a5%e6%94%b6%e7%aa%97%e5%8f%a3-receive-window-%e5%af%b9%e5%ba%94%e4%b8%80%e5%9d%97%e8%bf%9e%e7%bb%ad%e7%89%a9%e7%90%86%e5%86%85%e5%ad%98%e5%90%97&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Q9: 接收窗口 (Receive Window) 对应一块连续物理内存吗？&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt; 不是。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;接收缓冲区是一堆散落在内存各处的 &lt;code&gt;sk_buff&lt;/code&gt;，通过链表（有序）和红黑树（乱序）组织。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;窗口控制&lt;/strong&gt;：通过原子变量 &lt;code&gt;sk-&amp;gt;sk_rmem_alloc&lt;/code&gt; 统计所有 skb 的 &lt;code&gt;truesize&lt;/code&gt; 总和来实现逻辑限制。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;总结建议&lt;/strong&gt;： 理解 &lt;code&gt;sk_buff&lt;/code&gt; 的关键在于建立 &lt;strong&gt;“元数据(Controller) 与 数据(View) 分离”&lt;/strong&gt; 以及 &lt;strong&gt;“线性(Linear) 与 非线性(Paged) 混合”&lt;/strong&gt; 的立体视图。网络优化的本质，往往就是减少元数据的分配（GRO/XDP）和减少数据的拷贝（Zero Copy）。&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>WireGuard 主要网络拓扑</title>
      <link>https://www.techkoala.net/wireguard-%E4%B8%BB%E8%A6%81%E7%BD%91%E7%BB%9C%E6%8B%93%E6%89%91/</link>
      <pubDate>Tue, 26 Nov 2024 23:41:02 +0800</pubDate>
      
      <guid>https://www.techkoala.net/wireguard-%E4%B8%BB%E8%A6%81%E7%BD%91%E7%BB%9C%E6%8B%93%E6%89%91/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;WireGuard 基础拓扑结构说明&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;WireGuard 网络连接两个端点时，主要有以下四种拓扑结构可供选择：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;点对点（Point to Point）&lt;/li&gt;
&lt;li&gt;星型（Hub and Spoke）&lt;/li&gt;
&lt;li&gt;点到站点（Point to Site）&lt;/li&gt;
&lt;li&gt;站点到站点（Site to Site）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些拓扑结构都能满足常见的端点连接需求，例如：通过 SSH 进行通信、访问另一端的 HTTP 服务器、访问共享文件夹等。&lt;/p&gt;
&lt;p&gt;与其他 VPN 技术不同，WireGuard 没有严格的&amp;quot;客户端&amp;quot;或&amp;quot;服务器&amp;quot;角色之分。所有 WireGuard 节点都具有同等的能力，可以执行传统意义上的&amp;quot;客户端&amp;quot;或&amp;quot;服务器&amp;quot;角色。&lt;/p&gt;
&lt;p&gt;为了简化说明，本文将统一使用以下示例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;端点 A&amp;quot;代表&amp;quot;客户端&amp;rdquo;（如用户的平板电脑）&lt;/li&gt;
&lt;li&gt;&amp;ldquo;端点 B&amp;quot;代表&amp;quot;服务器端&amp;rdquo;（如运行 Web 应用的服务器）&lt;/li&gt;
&lt;li&gt;端口使用约定：
&lt;ul&gt;
&lt;li&gt;51821：代表&amp;quot;客户端&amp;quot;侧的 WireGuard 节点&lt;/li&gt;
&lt;li&gt;51822：代表&amp;quot;服务器&amp;quot;侧的 WireGuard 节点&lt;/li&gt;
&lt;li&gt;51823：用于两者之间的中间 WireGuard 节点（如果存在）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;点对点拓扑&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%82%b9%e5%af%b9%e7%82%b9%e6%8b%93%e6%89%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;点对点拓扑&lt;/h2&gt;&lt;p&gt;&lt;img class=&#34;tw-inline&#34;  loading=&#34;lazy&#34;  src=&#39;https://www.procustodibus.com/images/blog/wireguard-topologies/point-to-point-outline.svg&#39;  
        alt=&#34;WireGuard点对点拓扑&#34;   &gt;&lt;/p&gt;
&lt;p&gt;点对点是最简单的拓扑结构 —— 就是运行 WireGuard 的一个端点直接连接到另一个运行 WireGuard 的端点。这也是唯一能实现端到端（E2E）加密的拓扑结构。其他所有拓扑结构都涉及 WireGuard 数据包在端点之间的某个中间节点被解密。&lt;/p&gt;
&lt;p&gt;要实现点对点连接，两个端点之间的所有防火墙必须允许其中一个端点的 WireGuard 端口接受新连接。&lt;/p&gt;
&lt;h3 id=&#34;简单点对点场景&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ae%80%e5%8d%95%e7%82%b9%e5%af%b9%e7%82%b9%e5%9c%ba%e6%99%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;简单点对点场景&lt;/h3&gt;&lt;p&gt;在最简单的点对点场景中，两个端点位于同一个局域网（LAN）内，它们之间的防火墙配置为允许任一端点连接到对方的 WireGuard 端口。在这种情况下，任何一个端点都可以随时发起与对方的连接。&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;tw-inline&#34;  loading=&#34;lazy&#34;  src=&#39;https://www.procustodibus.com/images/blog/wireguard-topologies/point-to-point-simple.svg&#39;  
        alt=&#34;图1.1：端点A到端点B的简单点对点连接&#34;   &gt;&lt;/p&gt;
&lt;h3 id=&#34;复杂点对点场景&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%a4%8d%e6%9d%82%e7%82%b9%e5%af%b9%e7%82%b9%e5%9c%ba%e6%99%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;复杂点对点场景&lt;/h3&gt;&lt;p&gt;在更复杂但常见的场景中，两个端点都位于防火墙和 NAT（网络地址转换）后面，中间通过互联网连接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;端点 A 前面的防火墙只允许已建立的连接通过&lt;/li&gt;
&lt;li&gt;端点 B 前面的防火墙允许新连接通过 51822 端口&lt;/li&gt;
&lt;li&gt;端点 B 前面的 NAT 将 51822 端口转发到端点 B&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img class=&#34;tw-inline&#34;  loading=&#34;lazy&#34;  src=&#39;https://www.procustodibus.com/images/blog/wireguard-topologies/point-to-point-complex.svg&#39;  
        alt=&#34;图1.2：防火墙和NAT后的端点A到端点B的点对点连接&#34;   &gt;&lt;/p&gt;
&lt;p&gt;在这种场景下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;端点 A 可以随时向端点 B 发起新连接&lt;/li&gt;
&lt;li&gt;由于端点 A 位于只允许已建立连接的防火墙后面，如果要使端点 B 能够向端点 A 发起连接，必须在端点 A 上配置 PersistentKeepalive 设置（设置为 25，即每 25 秒发送一个保活数据包，这个值适用于大多数情况）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;网状拓扑实际上就是一组端点之间的多个点对点连接的组合。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;详细的配置示例请参考&lt;a href=&#34;https://www.procustodibus.com/blog/2020/11/wireguard-point-to-point-config/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;WireGuard 点对点配置&lt;/a&gt;。&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;星型拓扑&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%98%9f%e5%9e%8b%e6%8b%93%e6%89%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;星型拓扑&lt;/h2&gt;&lt;p&gt;&lt;img class=&#34;tw-inline&#34;  loading=&#34;lazy&#34;  src=&#39;https://www.procustodibus.com/images/blog/wireguard-topologies/hub-and-spoke-outline.svg&#39;  
        alt=&#34;WireGuard星型拓扑&#34;   &gt;&lt;/p&gt;
&lt;p&gt;星型拓扑（也称为星形拓扑）是下一个基本拓扑结构，其中两个运行 WireGuard 的端点通过第三台同样运行 WireGuard 的主机连接。这第三台主机作为连接到它的 WireGuard 端点之间的路由器，将从一个端点通过 WireGuard 隧道收到的数据包通过另一个 WireGuard 隧道转发给第二个端点。&lt;/p&gt;
&lt;p&gt;这种拓扑通常用于连接多于两个的端点 —— 这是实现远程访问管理的好方法，可以管理多个远程端点；或者将多个分散的远程主机组成虚拟局域网，在一个中心位置（集线器）集中进行路由规则配置、访问控制和流量检查。&lt;/p&gt;
&lt;p&gt;星型拓扑也可以用作连接两个都位于不允许新入站连接的防火墙后面的端点，或者位于不允许端口转发的 NAT 后面的端点（这时集线器充当&amp;quot;跳板服务器&amp;quot;）。&lt;/p&gt;
&lt;h3 id=&#34;简单星型场景&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ae%80%e5%8d%95%e6%98%9f%e5%9e%8b%e5%9c%ba%e6%99%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;简单星型场景&lt;/h3&gt;&lt;p&gt;在最简单的星型场景中，所有主机都在同一个本地网络中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;分支&amp;quot;端点（端点 A 和端点 B）与&amp;quot;集线器&amp;quot;主机（主机 C）之间的防火墙配置为允许分支连接到集线器的 WireGuard 端口（51823）&lt;/li&gt;
&lt;li&gt;同样允许集线器连接到各个分支的 WireGuard 端口（端点 A 的 51821 和端点 B 的 51822）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一旦端点 A 与主机 C 之间的 WireGuard 隧道建立，以及端点 B 与主机 C 之间的单独 WireGuard 隧道建立，主机 C 就可以在端点 A 和端点 B 之间路由数据包。&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;tw-inline&#34;  loading=&#34;lazy&#34;  src=&#39;https://www.procustodibus.com/images/blog/wireguard-topologies/hub-and-spoke-simple.svg&#39;  
        alt=&#34;图2.1：通过主机C连接端点A到端点B的简单星型拓扑&#34;   &gt;&lt;/p&gt;
&lt;h3 id=&#34;复杂星型场景&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%a4%8d%e6%9d%82%e6%98%9f%e5%9e%8b%e5%9c%ba%e6%99%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;复杂星型场景&lt;/h3&gt;&lt;p&gt;在更复杂的场景中，集线器和分支都位于防火墙和 NAT 后面，中间通过互联网连接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;端点 A 和端点 B 前面的防火墙只允许已建立的连接通过&lt;/li&gt;
&lt;li&gt;主机 C 前面的防火墙允许新连接通过 51823 端口&lt;/li&gt;
&lt;li&gt;主机 C 前面的 NAT 将 51823 端口转发到主机 C&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img class=&#34;tw-inline&#34;  loading=&#34;lazy&#34;  src=&#39;https://www.procustodibus.com/images/blog/wireguard-topologies/hub-and-spoke-complex.svg&#39;  
        alt=&#34;图2.2：防火墙和NAT后通过主机C连接端点A到端点B的星型拓扑&#34;   &gt;&lt;/p&gt;
&lt;p&gt;在这种场景下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;端点 A 和端点 B 都可以独立地与主机 C 建立新连接&lt;/li&gt;
&lt;li&gt;由于端点 A 和 B 的防火墙规则，主机 C 无法与它们建立新连接&lt;/li&gt;
&lt;li&gt;要使端点 A 能够通过 WireGuard 向端点 B 发起连接，必须在端点 B 上配置 PersistentKeepalive&lt;/li&gt;
&lt;li&gt;如果还要允许端点 B 通过 WireGuard 向端点 A 发起连接，则必须在端点 A 上配置 PersistentKeepalive&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
  &lt;p&gt;详细的配置示例请参考《WireGuard 星型拓扑配置》文章。&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;点到站点拓扑&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%82%b9%e5%88%b0%e7%ab%99%e7%82%b9%e6%8b%93%e6%89%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;点到站点拓扑&lt;/h2&gt;&lt;p&gt;&lt;img class=&#34;tw-inline&#34;  loading=&#34;lazy&#34;  src=&#39;https://www.procustodibus.com/images/blog/wireguard-topologies/point-to-site-outline.svg&#39;  
        alt=&#34;WireGuard点到站点拓扑&#34;   &gt;&lt;/p&gt;
&lt;p&gt;在点到站点拓扑中，远程端点通过 WireGuard 连接到另一个网络中的主机，该主机可以将远程端点的数据包路由到其网络内的各个本地端点。点到站点类似于星型拓扑，但区别在于一些分支（与集线器位于同一局域网的端点）不使用 WireGuard 隧道。&lt;/p&gt;
&lt;p&gt;点到站点适用于多种场景，当您想要允许远程端点访问同一局域网上的多个服务器，而不需要在每个服务器上单独设置和管理 WireGuard 时特别有用。常见场景包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;远程 PC 连接到办公室局域网的各个服务器（又称&amp;quot;Road Warrior&amp;rdquo;）&lt;/li&gt;
&lt;li&gt;办公室局域网中的工作站连接到云网络中的多个服务器（又称&amp;quot;Point to Cloud&amp;quot;）&lt;/li&gt;
&lt;li&gt;云虚拟机连接到您办公室局域网的各个服务器&lt;/li&gt;
&lt;li&gt;云服务器连接到另一个云网络中的其他服务器&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;简单点到站点场景&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ae%80%e5%8d%95%e7%82%b9%e5%88%b0%e7%ab%99%e7%82%b9%e5%9c%ba%e6%99%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;简单点到站点场景&lt;/h3&gt;&lt;p&gt;在最简单的点到站点场景中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个运行 WireGuard 的端点（&amp;ldquo;远程端点&amp;rdquo;，端点 A）直接连接到另一个运行 WireGuard 的主机（主机 β）&lt;/li&gt;
&lt;li&gt;主机 β 可以作为路由器连接到本地站点（站点 B）内的其他端点，包括端点 B（&amp;ldquo;本地&amp;quot;端点）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img class=&#34;tw-inline&#34;  loading=&#34;lazy&#34;  src=&#39;https://www.procustodibus.com/images/blog/wireguard-topologies/point-to-site-simple.svg&#39;  
        alt=&#34;图3.1：从端点A到站点B中端点B的简单点到站点连接&#34;   &gt;&lt;/p&gt;
&lt;p&gt;在这种场景中，端点 A 和站点 B 之间的防火墙配置为允许端点 A 与主机 β 相互连接。这使得远程端点（端点 A）可以发起与任何本地端点的连接，任何本地端点（如端点 B）也可以发起与远程端点的连接。&lt;/p&gt;
&lt;h3 id=&#34;复杂点到站点场景&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%a4%8d%e6%9d%82%e7%82%b9%e5%88%b0%e7%ab%99%e7%82%b9%e5%9c%ba%e6%99%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;复杂点到站点场景&lt;/h3&gt;&lt;p&gt;在更复杂（也更常见）的场景中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;远程端点（端点 A）和本地站点（站点 B）都位于防火墙和 NAT 后面，中间通过互联网连接&lt;/li&gt;
&lt;li&gt;端点 A 前面的防火墙只允许已建立的连接通过&lt;/li&gt;
&lt;li&gt;站点 B 前面的防火墙允许新连接通过 51822 端口&lt;/li&gt;
&lt;li&gt;运行 WireGuard 的主机（主机 β）在 51822 端口接受 WireGuard 连接，并将授权流量从其 WireGuard 隧道路由到站点内的端点（如端点 B）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img class=&#34;tw-inline&#34;  loading=&#34;lazy&#34;  src=&#39;https://www.procustodibus.com/images/blog/wireguard-topologies/point-to-site-complex.svg&#39;  
        alt=&#34;图3.2：防火墙和NAT后从端点A到站点B中端点B的点到站点连接&#34;   &gt;&lt;/p&gt;
&lt;p&gt;本地站点（站点 B）内的流量不通过 WireGuard 隧道，因此受制于其他本地流量所适用的任何防火墙或路由限制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HTTP 请求从端点 A 到端点 B 的路径：先通过 WireGuard 隧道从端点 A 到站点 B，然后像任何其他本地流量一样从 WireGuard 隧道路由到端点 B&lt;/li&gt;
&lt;li&gt;要使 HTTP 流量从端点 A 完全通过到端点 B 的 80 端口，主机 β 和端点 B 之间的任何防火墙都需要允许来自主机 β 到端点 B 的 80 端口流量&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;与点对点场景类似：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;端点 A 可以随时向端点 B 发起新连接&lt;/li&gt;
&lt;li&gt;由于端点 A 位于只允许已建立连接的防火墙后面，如果要使端点 B 能够向端点 A 发起连接，必须在端点 A 上配置 PersistentKeepalive&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
  &lt;p&gt;详细的配置示例请参考《WireGuard 点到站点配置》文章。&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;站点到站点拓扑&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ab%99%e7%82%b9%e5%88%b0%e7%ab%99%e7%82%b9%e6%8b%93%e6%89%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;站点到站点拓扑&lt;/h2&gt;&lt;p&gt;&lt;img class=&#34;tw-inline&#34;  loading=&#34;lazy&#34;  src=&#39;https://www.procustodibus.com/images/blog/wireguard-topologies/site-to-site-outline.svg&#39;  
        alt=&#34;WireGuard站点到站点拓扑&#34;   &gt;&lt;/p&gt;
&lt;p&gt;站点到站点拓扑类似于点到站点，但区别在于 WireGuard 隧道的两端都是完整的站点。这是构建虚拟局域网到局域网连接（或云到云、局域网到云等）的简便方法。&lt;/p&gt;
&lt;p&gt;与点到站点类似，在一端有一台运行 WireGuard 的主机，该主机可以路由到其站点内的各个端点。在连接的另一端，在不同的站点中也有一台运行 WireGuard 的主机，这台主机同样可以路由到其站点内的端点。&lt;/p&gt;
&lt;p&gt;在下面最简单的形式中，有两个相邻的子网（站点 A 和站点 B）通过 WireGuard 隧道连接。站点 A 中的流量（如来自端点 A）如果目的地是站点 B 中的端点（如端点 B），会首先路由到站点 A 中的 WireGuard 主机（主机 α），然后通过 WireGuard 隧道到达站点 B，最后从站点 B 中的 WireGuard 主机（主机 β）发送到站点 B 中的目标端点。&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;tw-inline&#34;  loading=&#34;lazy&#34;  src=&#39;https://www.procustodibus.com/images/blog/wireguard-topologies/site-to-site-simple.svg&#39;  
        alt=&#34;图4.1：从站点A中的端点A到站点B中的端点B的简单站点到站点连接&#34;   &gt;&lt;/p&gt;
&lt;p&gt;在这种场景中，站点 A 和站点 B 之间的任何防火墙都应配置为允许站点 A 连接到站点 B 的 WireGuard 端口，反之亦然。这使得站点 A 中的任何端点都可以发起与站点 B 中任何端点的连接，反之亦然。&lt;/p&gt;
&lt;p&gt;在更复杂的场景中，两个站点都位于防火墙和 NAT 后面，中间通过互联网连接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;站点 A 前面的防火墙允许新连接通过 51821 端口，主机 α 在该端口接受 WireGuard 连接，并将授权流量从其 WireGuard 隧道路由到站点内的端点&lt;/li&gt;
&lt;li&gt;类似地，站点 B 前面的防火墙允许新连接通过 51822 端口，主机 β 在该端口接受 WireGuard 流量，并将授权流量从其 WireGuard 隧道路由到站点 B 内的端点&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在这种场景中，站点 A 和站点 B 的 WireGuard 主机都位于各自站点的 DMZ（隔离区）中，它们可以从互联网公开访问，同时也可以路由到其所在站点使用的私有地址空间（以及它们所属的 WireGuard 网络使用的私有地址空间）。&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;tw-inline&#34;  loading=&#34;lazy&#34;  src=&#39;https://www.procustodibus.com/images/blog/wireguard-topologies/site-to-site-complex.svg&#39;  
        alt=&#34;图4.2：防火墙和NAT后从站点A中的端点A到站点B中的端点B的站点到站点连接&#34;   &gt;&lt;/p&gt;
&lt;p&gt;在这种场景下，从端点 A 到端点 B 的流量首先路由到主机 α，然后通过站点 A 和站点 B 之间的 WireGuard 隧道，从主机 β 出来，最后到达端点 B：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;端点 A 和主机 α 之间的防火墙允许来自端点 A 的出站流量（以及已建立连接的回程流量）&lt;/li&gt;
&lt;li&gt;主机 β 到端点 B 之间的防火墙允许到端点 B 的 HTTP（80 端口）入站流量（以及相应的出站流量）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;主机 α 和主机 β 之间的防火墙允许任一 WireGuard 主机向另一方发起连接。因此，通常通过使用 WireGuard 隧道，站点 A 中的任何端点都可以向站点 B 中的任何端点发起连接，反之亦然。但是，端点 A 和主机 α 之间的防火墙只允许已建立的连接进入端点 A，从而保护它免受来自站点 B 的新连接。&lt;/p&gt;
&lt;p&gt;如果我们想允许站点 B 中的端点能够向端点 A 发起新连接，这不需要进行任何 WireGuard 特定的配置 —— 我们只需要更改端点 A 和主机 α 之间的防火墙规则，允许新连接进入（就像我们对端点 B 所做的那样，允许来自主机 β 的新 HTTP 连接通过 80 端口）。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;详细的配置示例请参考&lt;a href=&#34;https://www.procustodibus.com/blog/2020/12/wireguard-site-to-site-config/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;WireGuard 站点到站点配置&lt;/a&gt;。&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;其他拓扑&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%85%b6%e4%bb%96%e6%8b%93%e6%89%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;其他拓扑&lt;/h2&gt;&lt;p&gt;基本上所有其他你会使用的 WireGuard 拓扑都可以通过组合这四种基本模式来构建。例如，对于由多个分散的远程端点（用于移动办公人员）连接到局域网（在你的办公总部）的 WireGuard 网络，你可以将星型拓扑与点到站点拓扑结合使用，其中远程端点作为星型拓扑的分支，而星型拓扑的集线器同时也是点到站点拓扑中的站点 WireGuard 主机。&lt;/p&gt;
&lt;p&gt;另一个例子是，对于连接三个办公室局域网加上两个云站点的 WireGuard 网络，你可以在每个单独的站点之间使用站点到站点拓扑，从每个站点的 WireGuard 主机创建单独的 WireGuard 隧道到其他四个站点。或者你可能决定使用星型拓扑与站点到站点拓扑的组合，这允许你在一个地方集中管理站点间的路由和访问控制，并且每个站点的 WireGuard 主机只需要连接到一个所有其他站点也都连接的集线器主机。&lt;/p&gt;
&lt;h2 id=&#34;原文链接&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8e%9f%e6%96%87%e9%93%be%e6%8e%a5&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;原文链接&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.procustodibus.com/blog/2020/10/wireguard-topologies/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Primary WireGuard Topologies&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>服务器基础设置</title>
      <link>https://www.techkoala.net/server_setup_basics/</link>
      <pubDate>Fri, 11 Oct 2024 23:45:31 +0800</pubDate>
      
      <guid>https://www.techkoala.net/server_setup_basics/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;翻译一篇服务器基本配置的好文章&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;这是我一直想写的一篇文章。虽然说明如何设置自托管应用程序很简单，但在薄弱的基础上托管应用程序毫无意义。在每篇教程的开头都介绍服务器设置是一件非常麻烦的事，所以我也为自己写了这篇文章，作为我如何为自己托管的应用程序设置服务器的参考。我会从基本的东西开始，比如使用 SSH 正确登录、非根用户设置以及为每个应用程序创建用户。我还会介绍 NGINX 设置、一些让服务器管理更轻松的生活质量工具、日志管理和基本网络安全。&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;ssh&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#ssh&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;SSH&lt;/h2&gt;&lt;p&gt;首先是登录。您需要一种安全访问设备的方法。不要使用用户名和密码。你需要使用 SSH（安全外壳），并确保 SSH 是唯一的登录方式。为此，你需要一个 SSH 密钥和一个新的用户账户。在新配置的 VPS 上，你将以根用户身份登录，你需要保护根用户账户。首先在 VPS 或远程机器上创建一个新的普通用户，并将其添加到 &amp;ldquo;sudo &amp;ldquo;组：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-1&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo adduser techkoala
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo usermod -aG sudo techkoala&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;然后在本地电脑是执行：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-2&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssh-keygen -t ed25519 -C &lt;span class=&#34;s2&#34;&gt;&amp;#34;your_email@example.com&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;按照说明操作，它会问你想把文件保存在哪里，以及是否需要密码。请确保设置了字符串密码。要将公钥复制到服务器上，请在本地计算机上运行：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-3&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssh-copy-id -i ~/.ssh/id_ed25519.pub newuser@your_server_ip&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;请记住，newuser@your-server-ip 是用户名，也是你要将公钥复制到的远程设备。提示输入密码时，输入的是远程设备上的账户密码，而不是你刚刚为 SSH 密钥设置的密码。一旦验证通过，它就会复制公钥，现在你就可以通过 SSH 登录了。要关闭用户名和密码登录，请键入：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-4&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo vim /etc/ssh/sshd_config&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;找到下列值，并按你在这里看到的进行设置&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-5&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Port &lt;span class=&#34;m&#34;&gt;2222&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;# Change default port (use a number between 1024 and 65535)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PermitRootLogin no                 &lt;span class=&#34;c1&#34;&gt;# Disable root login&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PasswordAuthentication no          &lt;span class=&#34;c1&#34;&gt;# Disable password authentication&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PubkeyAuthentication yes           &lt;span class=&#34;c1&#34;&gt;# Enable public key authentication&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;AuthorizedKeysFile .ssh/authorized_keys &lt;span class=&#34;c1&#34;&gt;# Specify authorized_keys file location&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;AllowUsers newuser                 &lt;span class=&#34;c1&#34;&gt;# Only allow specific users to login&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;这将禁止除 SSH 之外的所有登录方式，只能通过你复制了公钥的用户登录。停止以 Root 身份登录，只允许你指定的用户登录。点击 CTL+S 保存，点击 CTL+x 退出文件编辑器。重启 SSH：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-6&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl restart ssh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;这可能会导致你退出 SSH 会话。如果出现这种情况，这时可以测试其他登录方法，看看是否被拒绝，然后再继续。此外，不言而喻，你需要妥善保管私钥，一旦丢失，你将无法再远程登录：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-7&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Protocol &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;                 &lt;span class=&#34;c1&#34;&gt;# Use only SSH protocol version 2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;MaxAuthTries &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;             &lt;span class=&#34;c1&#34;&gt;# Limit authentication attempts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ClientAliveInterval &lt;span class=&#34;m&#34;&gt;300&lt;/span&gt;    &lt;span class=&#34;c1&#34;&gt;# Client alive interval in seconds&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ClientAliveCountMax &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;      &lt;span class=&#34;c1&#34;&gt;# Maximum client alive count&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;现在，让我们再深入研究一下用户，看看如何利用他们来提高组织性和安全性。&lt;/p&gt;
&lt;h2 id=&#34;users&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#users&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Users&lt;/h2&gt;&lt;p&gt;在管理 Linux 服务器时，用户非常重要。服务器管理中有一个理念叫做 &amp;ldquo;最小权限原则&amp;rdquo;，其基本意思是，你要给予应用程序或进程完成工作所需的最小权限。Root 拥有无限的权限，没有应用程序真正需要它。为正在运行的应用程序设置用户权限有几个好处。如果正在运行的应用程序受到威胁，它可以限制潜在的损害。当运行多个应用程序时，它可以增加隔离性，有助于审计，让你知道哪些应用程序正在使用哪些系统资源。&lt;/p&gt;
&lt;p&gt;简而言之，用户是组织系统的好帮手，在出现问题时能帮助你排除故障。要添加新用户，请运行&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-8&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo useradd -rms /usr/sbin/nologin -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;a comment&amp;#34;&lt;/span&gt; youruser&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;该命令将创建一个用户，并为其提供一个存放应用程序数据的主目录，但不允许以该用户身份登录。-c标志是可选的，但最好能知道用户的用途，如 &amp;ldquo;运行 Nextcloud &amp;ldquo;之类。将应用程序文件克隆到 /opt 目录中：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-9&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo mkdir /opt/myapp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;该命令会创建一个用户，并为其提供一个存放应用程序数据的主目录，但不允许以该用户身份登录。-c标志是可选的，但最好能知道用户的用途，如 &amp;ldquo;运行 Nextcloud &amp;ldquo;之类。将应用程序文件克隆到 /opt 目录中：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-10&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo chown appuser:appuser /opt/myapp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;好了，这样就锁定了你的登录，你也应该对如何使用用户有了一定的了解。接下来是日志。&lt;/p&gt;
&lt;h2 id=&#34;logs&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#logs&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;&lt;strong&gt;Logs&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;日志对系统管理至关重要。它们可以跟踪系统健康状况，帮助排除故障和检测威胁。因此，你需要设置适当的日志轮换，这样日志就不会占用系统太多空间，而且更易于阅读和管理。要设置正确的日志轮换，需要编辑位于 /etc 目录下的 logrotate.conf 文件。单个应用程序的配置通常存储在 /etc/logrotate.d/，因此 NGINX 的配置示例如下：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-11&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/var/log/nginx/*.log &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    weekly
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    missingok
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    rotate &lt;span class=&#34;m&#34;&gt;52&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    compress
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    delaycompress
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    notifempty
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    create &lt;span class=&#34;m&#34;&gt;0640&lt;/span&gt; www-data adm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    sharedscripts
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    postrotate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; -f /var/run/nginx.pid &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;kill&lt;/span&gt; -USR1 &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;cat /var/run/nginx.pid&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    endscript
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;该配置每周轮换日志，保留 52 周的日志，压缩旧日志，以正确的权限创建新日志，然后在轮换后向 NGINX 发出信号以重新打开日志文件。您可以使用以下配置进行测试&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-12&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo logrotate -d /etc/logrotate.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;这将显示它在不实际旋转日志的情况下会做什么。有了这些设置，你就可以开始做更高级的事情了，比如根据日志条目触发警报。现在，这对单台服务器来说还算不错，但如果你管理的服务器不止一台，最好还是了解一下 Grafana Loki、Graylog 和 Fluentd 等工具。在此我就不详细介绍了，但如果你想提高你的日志游戏水平，这些都是不错的起点。&lt;/p&gt;
&lt;h2 id=&#34;backups&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#backups&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;&lt;strong&gt;Backups&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;备份，更重要的是测试备份，在服务器管理中极其重要。请记住：除非经过测试，否则备份就不是备份。未经测试的备份基本上是无用的。&lt;/p&gt;
&lt;p&gt;备份主要有三种类型。完全备份、差异备份和增量备份。完全备份是磁盘上所有数据的完整副本。这种备份占用资源最多，但最容易恢复。差异备份备份的是上次完整备份后的所有变化，这是一种在空间和恢复速度上都处于中间位置的备份策略。增量备份备份自上次备份后发生变化的数据，这是最快的备份方式，但恢复起来可能最复杂。&lt;/p&gt;
&lt;p&gt;我是这样想的。我使用增量备份来备份照片、文档或项目文件和经常编辑的文件夹。我会使用完全备份来备份整个服务器或磁盘。差异备份用于备份完整文件夹，如 /etc、/opt 和日志文件夹。&lt;/p&gt;
&lt;p&gt;现在该如何存储呢？如果您遵循 3-2-1 原则，您就会如虎添翼。3 份数据副本、2 种存储类型和 1 个异地备份。我想说的是，如果这看起来太多，那么 &amp;ldquo;异地 &amp;ldquo;存储是最重要的，不能省略。万一发生灾难性的数据崩溃，拥有一个带有备份的硬盘是非常宝贵的。异地/离线备份还能让您免受勒索软件的威胁。因此，请牢记这一点。现在有大量的备份软件。我使用 Sync-thing、Borg 备份和老式 FTP 的组合。&lt;/p&gt;
&lt;p&gt;请记住，备份、日志和服务器监控是一个根据您的需求不断发展的过程。您实施的具体策略应符合您的需求和数据的关键性。&lt;/p&gt;
&lt;h2 id=&#34;basic-network-safety&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#basic-network-safety&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;&lt;strong&gt;Basic Network Safety&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;保护服务器安全的下一步是锁定那些不需要暴露在互联网上的端口，并禁止那些在不应该登录的情况下尝试登录的东西。UFW 和 Fail2Ban 是目前广泛使用的两种工具。它们简单易用，UFW 可让你为端口设置流量规则，而 Fail2Ban 则会在 IP 地址进入不应进入的端口或在某些预定义规则后仍无法登录时将其封禁。UFW 或不复杂的防火墙通常会预装在许多 VPS 服务中，Fail2Ban 也是如此，但如果你使用的是新机器且不确定，请运行：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-13&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install ufw
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install fail2ban&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;ufw&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#ufw&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;&lt;strong&gt;UFW&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;关于 Fail2Ban，我们稍后再讨论，现在让我们重点讨论 UFW 设置。首先运行一些默认策略：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-14&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ufw default deny incoming
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ufw allow outgoing&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;这被认为是最佳做法，因为它遵循了我前面提到的 &amp;ldquo;最少权限 &amp;ldquo;理念。它减少了机器的攻击面，让你可以精确控制暴露的内容。简而言之，这种配置在安全性和功能性之间取得了平衡。你的服务器可以根据需要接入互联网，但外部实体只能通过你明确允许的方式连接到你的服务器。现在，让我们允许一些东西进入。&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-15&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ufw allow ssh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ufw allow &lt;span class=&#34;m&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ufw allow &lt;span class=&#34;m&#34;&gt;443&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;如果要运行网络服务器，则需要打开 80 端口和 443 端口。80 端口用于 HTTP，443 端口用于 HTTPS。默认情况下，22 端口是 SSH，如果更改了端口，则需要指定端口，而不是使用 &amp;ldquo;allow ssh &amp;ldquo;命令。下面是其他一些有用的命令：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-16&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#List rules with numbers:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ufw status numbered
&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;#Delete by number:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ufw delete NUMBER
&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;#Delete by rule specification:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ufw delete allow &lt;span class=&#34;m&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#You can allow connections from specific IP addresses:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ufw allow from 192.168.1.100
&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;#You can also only allow an IP to connect to a specfic port with: &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ufw allow from 192.168.1.100 to any port &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#If you neeed to allow a range of ports: &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ufw allow 6000:6007/tcp
&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;#To further protect from brut force attacks you can rate limit specific ports with: &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ufw limit ssh
&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;#This would limit port 22 to 6 connections in 30 seconds from a single IP. To see the status of the firewall you can use: &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&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;#Adding this goves you more info&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ufw status verbose
&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;#and to reset incase you need to start over: &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ufw reset
&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;#and to enable and disable: &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ufw &lt;span class=&#34;nb&#34;&gt;enable&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ufw disable 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#finaly to enable logging and adjusting the log level: &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ufw logging on
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ufw logging medium &lt;span class=&#34;c1&#34;&gt;# levels are low, medium, high, full &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;现在开始 Fail2Ban。&lt;/p&gt;
&lt;h3 id=&#34;fail2ban&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#fail2ban&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;&lt;strong&gt;Fail2Ban&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;主要配置文件位于 /etc/fail2ban/jail.conf，但建议创建本地配置文件：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-17&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo nano /etc/fail2ban/jail.local&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;jail.local 部分的[DEFAULT]部分有一些基本设置，它们是&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-18&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;bantime&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 10m
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;findtime&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 10m
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;maxretry&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;封禁时间是指 IP 被封禁的时间。查找时间是 Fail2Ban 寻找重复失败的时间范围，最大重试次数是 IP 被禁用前的失败次数。您可以根据需要调整这些参数。您还可以设置自定义封禁，Fail2Ban 也支持 SSH 等常用服务的封禁。您还可以采取更多步骤，但我认为这已经涵盖了基本内容。&lt;/p&gt;
&lt;h3 id=&#34;nginx&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#nginx&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;&lt;strong&gt;NGINX&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;您可以使用的网络服务器有很多。Apache, Caddy, nginx, IIS 等等。我使用 Nginx。这是我所熟悉的，而且它运行得非常好。Nginx（发音为 engine-x）是一个网络服务器、反向代理和负载平衡器。作为 Web 服务器，它擅长提供静态内容，并能以相当低的资源占用率处理大量并发连接。作为反向代理，它可以位于应用程序服务器之前，将流量转发给它们，同时确保应用程序的安全。它的负载平衡功能可有效平衡服务器之间的流量，提高可靠性和可扩展性。&lt;/p&gt;
&lt;p&gt;通过 apt 安装时，nginx 的默认位置是 /etc/nginx/，nginx.conf 主要用于全局服务器配置，包括 /etc/nginx/sites-enabled 文件夹中的文件。这种模块化结构便于管理多个站点。需要注意的两个文件夹是 sites-enabled 文件夹和 sites-available 文件夹。您可以将可用站点视为测试站点配置的暂存区，而启用站点则用于实时站点和应用程序。常见的做法是在可用站点中的站点中设置和测试配置，然后当你准备上线并获得 SSL 证书时，将文件链接到启用站点文件夹。具体方法如下&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-19&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ln -s /etc/nginx/sites-available/yoursitefile /etc/nginx/sites-enabled&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;然后重新加载nginx，并再次检查nginx状态：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-20&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl reload nginx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl status nginx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;您的网站现在应该已经上线。&lt;/p&gt;
&lt;p&gt;下面，我将向您展示一些模板化的 Nginx 网站配置。请务必考虑您的应用程序或网站需求，因为这些只是起点。对于静态网站，这是一个不错的起点。&lt;/p&gt;
&lt;p&gt;基本静态网站配置：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-21&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    listen 80&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    listen &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;::&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;:80&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    server_name example.com www.example.com&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    root /var/www/example.com/html&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    index index.html index.htm&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    location / &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        try_files &lt;span class=&#34;nv&#34;&gt;$uri&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$uri&lt;/span&gt;/ &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;404&lt;span class=&#34;p&#34;&gt;;&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;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# Security headers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    add_header X-Frame-Options &lt;span class=&#34;s2&#34;&gt;&amp;#34;SAMEORIGIN&amp;#34;&lt;/span&gt; always&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    add_header X-XSS-Protection &lt;span class=&#34;s2&#34;&gt;&amp;#34;1; mode=block&amp;#34;&lt;/span&gt; always&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    add_header X-Content-Type-Options &lt;span class=&#34;s2&#34;&gt;&amp;#34;nosniff&amp;#34;&lt;/span&gt; always&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    add_header Referrer-Policy &lt;span class=&#34;s2&#34;&gt;&amp;#34;no-referrer-when-downgrade&amp;#34;&lt;/span&gt; always&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    add_header Content-Security-Policy &lt;span class=&#34;s2&#34;&gt;&amp;#34;default-src &amp;#39;self&amp;#39; http: https: data: blob: &amp;#39;unsafe-inline&amp;#39;&amp;#34;&lt;/span&gt; always&lt;span class=&#34;p&#34;&gt;;&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&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;# Logging&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    access_log /var/log/nginx/example.com.access.log&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    error_log /var/log/nginx/example.com.error.log warn&lt;span class=&#34;p&#34;&gt;;&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&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;# SSL configuration (uncomment after running Certbot)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# listen 443 ssl http2;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# listen [::]:443 ssl http2;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# ssl_protocols TLSv1.2 TLSv1.3;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# ssl_prefer_server_ciphers on;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;&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&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;# Certbot will add its own SSL certificate paths&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;&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;o&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;代理通行证配置：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-22&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    listen 80&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    listen &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;::&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;:80&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    server_name app.example.com&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    location / &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_pass http://localhost:3000&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_set_header Host &lt;span class=&#34;nv&#34;&gt;$host&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_set_header X-Real-IP &lt;span class=&#34;nv&#34;&gt;$remote_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_set_header X-Forwarded-For &lt;span class=&#34;nv&#34;&gt;$proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_set_header X-Forwarded-Proto &lt;span class=&#34;nv&#34;&gt;$scheme&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# Security headers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    add_header X-Frame-Options &lt;span class=&#34;s2&#34;&gt;&amp;#34;SAMEORIGIN&amp;#34;&lt;/span&gt; always&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    add_header X-XSS-Protection &lt;span class=&#34;s2&#34;&gt;&amp;#34;1; mode=block&amp;#34;&lt;/span&gt; always&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    add_header X-Content-Type-Options &lt;span class=&#34;s2&#34;&gt;&amp;#34;nosniff&amp;#34;&lt;/span&gt; always&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    add_header Referrer-Policy &lt;span class=&#34;s2&#34;&gt;&amp;#34;no-referrer-when-downgrade&amp;#34;&lt;/span&gt; always&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    add_header Content-Security-Policy &lt;span class=&#34;s2&#34;&gt;&amp;#34;default-src &amp;#39;self&amp;#39; http: https: data: blob: &amp;#39;unsafe-inline&amp;#39;&amp;#34;&lt;/span&gt; always&lt;span class=&#34;p&#34;&gt;;&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&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;# Logging&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    access_log /var/log/nginx/app.example.com.access.log&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    error_log /var/log/nginx/app.example.com.error.log warn&lt;span class=&#34;p&#34;&gt;;&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&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;# SSL configuration (uncomment after running Certbot)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# listen 443 ssl http2;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# listen [::]:443 ssl http2;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# ssl_protocols TLSv1.2 TLSv1.3;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# ssl_prefer_server_ciphers on;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;&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&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;# Certbot will add its own SSL certificate paths&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# ssl_certificate /etc/letsencrypt/live/app.example.com/fullchain.pem;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# ssl_certificate_key /etc/letsencrypt/live/app.example.com/privkey.pem;&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;o&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;WebSocket 升级配置：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-23&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    listen 80&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    listen &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;::&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;:80&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    server_name ws.example.com&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    location / &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_pass http://localhost:8080&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_http_version 1.1&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_set_header Upgrade &lt;span class=&#34;nv&#34;&gt;$http_upgrade&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_set_header Connection &lt;span class=&#34;s2&#34;&gt;&amp;#34;upgrade&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_set_header Host &lt;span class=&#34;nv&#34;&gt;$host&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_set_header X-Real-IP &lt;span class=&#34;nv&#34;&gt;$remote_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_set_header X-Forwarded-For &lt;span class=&#34;nv&#34;&gt;$proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_set_header X-Forwarded-Proto &lt;span class=&#34;nv&#34;&gt;$scheme&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# Security headers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    add_header X-Frame-Options &lt;span class=&#34;s2&#34;&gt;&amp;#34;SAMEORIGIN&amp;#34;&lt;/span&gt; always&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    add_header X-XSS-Protection &lt;span class=&#34;s2&#34;&gt;&amp;#34;1; mode=block&amp;#34;&lt;/span&gt; always&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    add_header X-Content-Type-Options &lt;span class=&#34;s2&#34;&gt;&amp;#34;nosniff&amp;#34;&lt;/span&gt; always&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    add_header Referrer-Policy &lt;span class=&#34;s2&#34;&gt;&amp;#34;no-referrer-when-downgrade&amp;#34;&lt;/span&gt; always&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    add_header Content-Security-Policy &lt;span class=&#34;s2&#34;&gt;&amp;#34;default-src &amp;#39;self&amp;#39; http: https: data: blob: &amp;#39;unsafe-inline&amp;#39;&amp;#34;&lt;/span&gt; always&lt;span class=&#34;p&#34;&gt;;&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&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;# WebSocket timeout settings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    proxy_read_timeout 300s&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    proxy_send_timeout 300s&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# Logging&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    access_log /var/log/nginx/ws.example.com.access.log&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    error_log /var/log/nginx/ws.example.com.error.log warn&lt;span class=&#34;p&#34;&gt;;&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&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;# SSL configuration (uncomment after running Certbot)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# listen 443 ssl http2;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# listen [::]:443 ssl http2;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# ssl_protocols TLSv1.2 TLSv1.3;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# ssl_prefer_server_ciphers on;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;&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&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;# Certbot will add its own SSL certificate paths&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# ssl_certificate /etc/letsencrypt/live/ws.example.com/fullchain.pem;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# ssl_certificate_key /etc/letsencrypt/live/ws.example.com/privkey.pem;&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;o&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;基本配置用于为简单的静态网站提供服务。它指定了域名，IPv4 和 IPv6 都使用 80 端口监听，设置了网站的根目录，使用 try_files 配置了错误处理，添加了一些防止常见网络漏洞的基本标头，设置了访问和错误日志，还包括一个注释掉的 SSL 部分。大部分 SSL 配置将由 certbot 处理，但其中有几行添加了一些 SSL 安全性，可以在运行 certbot 后取消注释。&lt;/p&gt;
&lt;p&gt;代理通行配置与基本配置类似，但它不是直接提供文件，而是将请求代理到本地应用程序（在本例中，运行于 3000 端口）。&lt;/p&gt;
&lt;p&gt;第三个配置文件面向需要网站连接的应用程序，它与代理通行证配置很相似，只是在允许网络套接字方面做了一些改动。&lt;/p&gt;
&lt;p&gt;如果不谈 SSL，任何有关网络服务器的内容都是不完整的。对于普通用户来说，certbot 是他们最好的朋友。它免费，速度快，还他妈的好用。我使用的是 python 版本的 certbot。安装方法如下：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-24&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install certbot python3-certbot-nginx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;安装完成后，你只需在终端运行 &amp;ldquo;certbot&amp;rdquo;，它就会检测你的站点启用文件夹中的配置，并询问你要做什么（续费、重发等&amp;hellip;&amp;hellip;）。按照 certbot 提供的步骤操作就可以了，非常简单。&lt;/p&gt;
&lt;p&gt;因此，现在 certbot 在获取新证书时会为你设置自动续费，所以这只是个 &amp;ldquo;坐等 &amp;ldquo;任务。但为了确保成功，你可以运行&lt;/p&gt;
&lt;p&gt;如果运行正常，使用 systemd 的用户就可以放心使用了。&lt;/p&gt;
&lt;h2 id=&#34;quality-of-life-tools&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#quality-of-life-tools&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;&lt;strong&gt;Quality Of Life Tools&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;关于 &amp;ldquo;让系统管理更轻松的工具 &amp;ldquo;这个话题，我将介绍一些我在服务器上使用的工具，我认为它们能让管理变得更轻松。我不会深入介绍任何工具。所有这些都是可选的，没有特定的顺序。其中很多都是我在网站上找到的，如果你和我一样是个终端迷，那么这个网站很值得浏览。&lt;/p&gt;
&lt;p&gt;第一个工具，这是我的个人必备清单。Btop 是一款资源终端监控器。它能实时显示电脑的 CPU、内存、磁盘、网络和运行附魔的可视化使用统计信息，它由 C++ 编写，可通过大多数软件包管理器安装。&lt;/p&gt;
&lt;p&gt;对于有大量外部连接的服务器（如 nostr 中继站），类似的工具很有帮助。Neoss 的目标是取代常用的 ss 命令，满足基本使用需求。它提供了一个使用中的 TCP 和 UDP 套接字列表及其各自的统计信息。与 SS 原始输出相比，它的主要优势在于清晰简洁的 TUI（终端用户界面），允许你对连接到机器的内容进行排序、刷新和导航。它通过 NPM 安装，这意味着你需要安装 JavaScript。&lt;/p&gt;
&lt;p&gt;是一款基于终端的网络服务器日志分析器。它非常适合在终端上快速实时查看日志，还能实时生成 HTML、JSON 和 CSV 报告。GoAccess 可通过大多数软件包管理器安装，适用于所有平台。&lt;/p&gt;
&lt;p&gt;接下来要介绍的是 Its，它是一款功能强大的基于文本的文件管理器，具有双面显示屏和许多操作文件和目录的功能。它还具有跨平台特性，可通过大多数软件包管理器进行安装。&lt;/p&gt;
&lt;p&gt;与服务器文件管理同属一个主题的是 .NET Framework。这是我的必备清单。它是一款磁盘使用分析器，专门用于查找占用空间的文件。它运行速度快，操作简单。它可以安装在大多数系统和软件包管理器上。Windows 需要安装 Linux 子系统才能使用它。&lt;/p&gt;
&lt;p&gt;希望你能从中找到一些有用的东西。我想谈的最后一个话题是 DNS，这是个比较大的话题，所以我不会做大规模的深入探讨，但如果你是自助托管，掌握一些 DNS 的基本知识还是有帮助的。&lt;/p&gt;
&lt;h2 id=&#34;dns&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#dns&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;&lt;strong&gt;DNS&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;DNS 或域名系统是我们所熟知的互联网运作方式的核心部分。不管你喜欢还是讨厌，如果你想访问更广泛的互联网，我们就必须使用它。(我不喜欢它现在的样子，但我不会在这里说这个）。基本上，把 DNS 想象成电话簿。它可以让你在每次需要搜索互联网时输入 duckduckgo.com，而不是 &amp;ldquo;52.250.42.157&amp;rdquo;。它将人类容易记住的东西转化为计算机所需的信息，从而真正到达 &amp;ldquo;duckduckgo.com&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;如果您使用的是 VPS 主机，您唯一需要知道的就是在决定使用某个域名后，如何将 A 记录指向您的服务器 IP。几乎所有的 VPS 主机都可以为你提供一个静态 IP，所以这主要是一种设置和遗忘类型的交易。&lt;/p&gt;
&lt;p&gt;在家托管会遇到一些挑战。一个突出的问题是（我经常听到的一个有效问题）没有静态 IP 地址。如今，由于需要 IP 地址的在线设备数量众多，我们要做的事情很多，而且大多数 IP 地址都是动态分配的，除非你从 ISP 付费购买。但还是有解决办法的。这就是动态 DNS 或 DDNS。每当 IP 地址发生变化时，DNS 服务器就会自动更新。设置动态 DNS 的方法多种多样。您可以托管自己的服务或使用主机。下面是一些主机和项目的链接，可供参考。&lt;/p&gt;
&lt;p&gt;简而言之，它是这样工作的。你可以选择一个服务提供商，也可以自己设置。你可以获得一个域名，将客户端安装在家庭路由器或服务器上，客户端会定期检查 IP 地址是否发生变化，如果发生变化，它就会更新该域名的 DNS 记录。&lt;/p&gt;
&lt;h2 id=&#34;docker&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#docker&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;&lt;strong&gt;Docker&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;在这里我不会介绍如何安装 docker。无论如何，最好还是按照官方的安装指南来安装。但我想谈几点。首先，docker 在测试新应用程序时非常有用。但我认为也仅此而已。我个人不太喜欢使用 docker，而是尽可能直接运行应用程序。以下是一些值得注意的利弊。&lt;/p&gt;
&lt;h3 id=&#34;优点&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bc%98%e7%82%b9&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;优点&lt;/h3&gt;&lt;p&gt;如果你的系统可以运行 docker，你就可以运行大多数 docker 应用程序。它有助于隔离，减少应用程序之间的冲突。在某些情况下，它可以帮助提高效率，因为它比传统的虚拟机占用更少的资源。微服务架构也很有用，因为它可以将应用程序分解成更小的可管理服务，从而实现服务的独立扩展。最后，该社区规模庞大，文档完善，社区支持总是很有帮助，而且还有大量现成的 docker 映像可供部署。&lt;/p&gt;
&lt;h3 id=&#34;缺点&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%bc%ba%e7%82%b9&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;缺点&lt;/h3&gt;&lt;p&gt;首先是开销。虽然它比传统的虚拟机要好，但它比直接在主机上运行要耗费更多的资源，而且输入/输出操作可能会更慢。docker 共享系统内核的事实意味着，一个受损的应用程序可能会影响系统。持久化数据是可行的，但增加了一层复杂性，可能会导致新用户的数据丢失，也会使备份变得更加复杂。使用 docker 时，网络连接也会变得更加复杂，因此不会那么简单。值得注意的是，如果使用 UFW 或 firewalld 作为防火墙，docker 会绕过这些规则。Docker 只与 iptables 兼容。此外，管理良好的 docker 容器有助于管理服务器资源，但管理不当也会对资源造成损害。容器可能会变得过大，从而影响磁盘大小，而错误的配置则会占用过多的服务器资源。在监控和调试应用程序时，尤其是跨多个容器时，它还会增加额外的复杂性。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%80%bb%e7%bb%93&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;总结&lt;/h2&gt;&lt;p&gt;好了，关于服务器设置和工具的基础知识就介绍到这里。有一个工具可以帮你完成大部分工作。我写它是为了让自己的服务器设置更快。你可以在这里获得它，它包含了我所有的必备工具，并做了一些基本配置。请根据自己的需要进行调整，并一如既往地注意安全。&lt;/p&gt;
&lt;h2 id=&#34;原文&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8e%9f%e6%96%87&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;原文&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] &lt;a href=&#34;https://becomesovran.com/blog/server-setup-basics.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Server Setup Basics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>拥抱Follow</title>
      <link>https://www.techkoala.net/follow/</link>
      <pubDate>Mon, 09 Sep 2024 23:21:54 +0800</pubDate>
      
      <guid>https://www.techkoala.net/follow/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;follow认证信息，欢迎关注订阅&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;This message is used to verify that this feed (feedId:55939235463397383) belongs to me (userId:55938341809190912). Join me in enjoying the next generation information browser &lt;a href=&#34;https://follow.is&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://follow.is&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>搭建 CouchDB 数据库</title>
      <link>https://www.techkoala.net/%E6%90%AD%E5%BB%BAcouchdb%E6%95%B0%E6%8D%AE%E5%BA%93/</link>
      <pubDate>Wed, 11 Oct 2023 17:54:00 +0800</pubDate>
      
      <guid>https://www.techkoala.net/%E6%90%AD%E5%BB%BAcouchdb%E6%95%B0%E6%8D%AE%E5%BA%93/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;记录一下 CouchDB 搭建流程，用于同步 MoonFM、Obsidian&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;很早之前就购买了 MoonFM，但是鉴于没有自带同步服务，所以一直使用 Spotify 听播客。现在终于忍不了这种音乐和播客混在一起，乱七八糟的感觉了，因此抽空研究了 MoonFM 使用的 Couchdb 数据库同步方案，实现了自建同步服务。同时也刚好一并将 Obsidian 的同步服务从&lt;a href=&#34;https://github.com/remotely-save/remotely-save&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Remotely save&lt;/a&gt;迁移到了&lt;a href=&#34;https://github.com/vrtmrz/obsidian-livesync&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;obsidian-livesync&lt;/a&gt;，实现了更好的同步体验！&lt;/p&gt;
&lt;h2 id=&#34;docker-安装-couchdb&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#docker-%e5%ae%89%e8%a3%85-couchdb&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Docker 安装 CouchDB&lt;/h2&gt;&lt;p&gt;首先需要创建一个 data 文件夹和一个 local.ini 用于 docker 内部文件夹和配置文件的映射。其中 local.ini 如下：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;yaml&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-13&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#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;l&#34;&gt;couchdb]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;l&#34;&gt;single_node=true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;
&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;l&#34;&gt;chttpd_auth]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;l&#34;&gt;require_valid_user = true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;l&#34;&gt;authentication_redirect = /_utils/session.html&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;
&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;l&#34;&gt;httpd]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;l&#34;&gt;WWW-Authenticate = Basic realm=&amp;#34;couchdb&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;l&#34;&gt;enable_cors = true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;
&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;l&#34;&gt;cors]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;l&#34;&gt;origins = capacitor://localhost,http://localhost&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;l&#34;&gt;credentials = true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;l&#34;&gt;headers = accept, authorization, content-type, origin, referer&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;l&#34;&gt;methods = GET, PUT, POST, HEAD, DELETE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;l&#34;&gt;max_age = 3600&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;
&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;l&#34;&gt;couch_peruser]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;l&#34;&gt;database_prefix = userdb_&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;l&#34;&gt;delete_dbs = false&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;l&#34;&gt;enable = true&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;docker-compose 文件如下，需要自己修改一下映射端口，账号密码等：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;yaml&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-14&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;3&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;couchdb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;5984:5984&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;./data:/opt/couchdb/data&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;./local.ini:/opt/couchdb/etc/local.ini&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;COUCHDB_USER=管理后台账户名&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;COUCHDB_PASSWORD=管理后台密码&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;always&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;network_mode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;bridge&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;couchdb&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;couchdb&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;然后使用&lt;code&gt;docker-compose up -d&lt;/code&gt;启动 docker&lt;/p&gt;
&lt;h2 id=&#34;数据库管理&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%95%b0%e6%8d%ae%e5%ba%93%e7%ae%a1%e7%90%86&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;数据库管理&lt;/h2&gt;&lt;p&gt;通过&lt;code&gt;http://IP地址:端口号/_utils/&lt;/code&gt;访问数据口后台，账号密码就是上一步自己定义的密码。&lt;/p&gt;
&lt;p&gt;页面中就可以创建并管理自己的数据库和用户，但是我更习惯使用命令行进行管理：&lt;/p&gt;
&lt;p&gt;以 MoonFM 同步数据库创建为例，依次执行下面的命令即可：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;创建用户&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-15&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -X PUT http://管理后台账户名:管理后台密码@IP地址:端口号/_users/org.couchdb.user:用户账号名
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-H &amp;#34;Accept: application/json&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-H &amp;#34;Content-Type: application/json&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-d &amp;#39;{&amp;#34;name&amp;#34;: &amp;#34;用户账号名&amp;#34;, &amp;#34;password&amp;#34;: &amp;#34;用户密码&amp;#34;, &amp;#34;roles&amp;#34;: [], &amp;#34;type&amp;#34;: &amp;#34;user&amp;#34;}&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;创建数据库&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-16&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -X PUT http://管理后台账户名:管理后台密码@IP地址:端口号/数据库名&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;添加用户到数据库&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-17&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -X PUT http://管理后台账户名:管理后台密码@IP地址:端口号/数据库名/_security
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-H &amp;#34;Accept: application/json&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-H &amp;#34;Content-Type: application/json&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-d &amp;#39;{&amp;#34;admins&amp;#34;: {&amp;#34;names&amp;#34;: [], &amp;#34;roles&amp;#34;: []}, &amp;#34;members&amp;#34;: {&amp;#34;names&amp;#34;: [&amp;#34;用户账号名&amp;#34;], &amp;#34;roles&amp;#34;: []}}&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;获得的同步链接如下：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-18&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://用户账号名:用户账号密码@IP地址:端口号/数据库名&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;blockquote&gt;
  &lt;p&gt;这里需要注意区分 curl 参数填入的管理后台账户名密码和数据库用户名密码&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;此后还可以进行反向代理等操作，这里可以参考&lt;a href=&#34;https://www.techkoala.net/nginx_port_reuse/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;使用 Nginx 实现多服务复用端口&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;flyio-搭建免费-couchdb-数据库&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#flyio-%e6%90%ad%e5%bb%ba%e5%85%8d%e8%b4%b9-couchdb-%e6%95%b0%e6%8d%ae%e5%ba%93&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;fly.io 搭建免费 CouchDB 数据库&lt;/h2&gt;&lt;p&gt;未完待续&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Google One VPN 愉快玩耍指南</title>
      <link>https://www.techkoala.net/google_one_vpn/</link>
      <pubDate>Fri, 24 Feb 2023 20:22:43 +0800</pubDate>
      
      <guid>https://www.techkoala.net/google_one_vpn/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;Google 取消了 Google One 订阅用户的 VPN 功能，本文已实质性失效&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;&lt;code&gt;更新&lt;/code&gt;
三月份开始，谷歌又对检测方式进行了更改，要求域名（*.googleapis.com）和原本的检测服务器来自同一区域 IP，否则将一直提示&lt;code&gt;VPN连接中断&lt;/code&gt;
因此需增加将此网址加入检测分流中，见&lt;code&gt;先连接上&lt;/code&gt;章节&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;机制说明&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9c%ba%e5%88%b6%e8%af%b4%e6%98%8e&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;机制说明&lt;/h2&gt;&lt;p&gt;首先，要想愉快使用，需要明确 Google One VPN 的以下几点机制：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;目前仅 Android 手机可以正常连接。（当然如果你在 iPhone 上使用境外卡或使用 Android 虚拟机依然是可以的，但此不在本文讨论范围）&lt;/li&gt;
&lt;li&gt;该服务仅在如下国家提供（且对于大陆来说，通常只有部分地区有实用性）：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-19&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 奥地利
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 澳大利亚
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 比利时
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 加拿大
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 丹麦
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 芬兰
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 法国
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 德国
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 冰岛
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 爱尔兰
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 意大利
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 日本
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 墨西哥
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 荷兰
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 挪威
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 韩国
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 西班牙
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 瑞典
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 瑞士
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 台湾
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 英国
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 美国&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;基于第 2 点，即使真正的服务器可以直连，那么我们也需要先欺骗 IP 检测服务器，具体机制如下：&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/Google_One_VPN/Policy1.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/Google_One_VPN/Policy1.png&#34;  data-sub-html=&#34;&lt;h2&gt;准入 IP 限制&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/Google_One_VPN/Policy1.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;准入 IP 限制&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;即便通过了第 3 点连接上服务器后，Google 依然还会在你每使用 1G 流量的后，再次对你的原始 IP 进行检测。如果此时检测到你的 IP 不在上述地区了，就会强制断开 VPN 连接。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;因此，不仅在于连上，还要避免 1G 断开，才叫做愉快玩耍！So,go on&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;先连接上&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%85%88%e8%bf%9e%e6%8e%a5%e4%b8%8a&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;先连接上&lt;/h2&gt;&lt;p&gt;想要连接上，其实不难，从上面的内容就可以看出，只需要使用受支持地区的 IP 欺骗检测服务器就可以了。
并且，检测服务器的地址是固定的，后缀如下：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-20&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;*.cloud.cupronickel.goog
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;*.googleapis.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;于是，我们需要在代理工具（如 clash for android）中，将此连接加入代理清单即可。&lt;/p&gt;
&lt;p&gt;如果你使用 rule-provider，那么可以如下写规则：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-21&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;payload&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&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;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DOMAIN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SUFFIX&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cloud&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cupronickel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;goog&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;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DOMAIN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SUFFIX&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;googleapis&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;手机通过代理后，即可使用 Google One app 成功连接上对应地区的 Google One VPN 服务器&lt;/p&gt;
&lt;h2 id=&#34;再共享出来&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%86%8d%e5%85%b1%e4%ba%ab%e5%87%ba%e6%9d%a5&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;再共享出来&lt;/h2&gt;&lt;p&gt;等手机连接上后，那么你可以使用诸如 everyproxy 这样的软件在手机上开启 HTTP 或者 socks 代理，分享给局域网的其他设备使用。&lt;/p&gt;
&lt;h2 id=&#34;愉快使用&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%84%89%e5%bf%ab%e4%bd%bf%e7%94%a8&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;愉快使用&lt;/h2&gt;&lt;p&gt;经过上面两步，你其实已经可以正常使用 VPN 了，但是前面说到了，每当你使用了 1G 流量，Google 会再次检测你的 IP，这样你就会掉线。因为手机上只能同时开启一个 VPN 软件，所以 clash 此时没有代理这个检测服务器流量了。&lt;/p&gt;
&lt;h3 id=&#34;你有软路由&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bd%a0%e6%9c%89%e8%bd%af%e8%b7%af%e7%94%b1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;你有软路由？&lt;/h3&gt;&lt;p&gt;如果你有软路由的话，那一切都简单很多。以 opeclash 为例：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;首先，同样将上面检测服务器加入代理，并一直保持代理&lt;/li&gt;
&lt;li&gt;将手机共享出来的 socks 代理或和 HTTP 代理作为一个节点加入文件文件中，如这样：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-22&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - name: &amp;#34;🪜 GoogleOne&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    type: socks5
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    server: 192.168.XXX.XXX
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    port: 1080&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;为了避免嵌套代理，请添加 VPN 服务器 IP 端到新的 rule-provider 中：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;payload:&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-23&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.64.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.65.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.67.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.76.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.83.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.85.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.86.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.87.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.92.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.93.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.94.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.95.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.96.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.97.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.98.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.99.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.100.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.101.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.102.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.103.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.104.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.105.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.106.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.107.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.108.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.109.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.22.110.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.1.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.2.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.3.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.4.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.5.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.6.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.7.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.8.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.9.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.10.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.11.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.12.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.13.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.14.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.15.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.16.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.17.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.18.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.19.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.20.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.21.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.22.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.23.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.24.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.25.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.26.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.27.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.28.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.29.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.30.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.31.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.32.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.33.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.34.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;136.23.35.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;209.107.176.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;209.107.177.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;209.107.178.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;209.107.179.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;209.107.180.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;209.107.181.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;209.107.182.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;209.107.183.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;209.107.184.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;209.107.185.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;209.107.186.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;209.107.187.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;209.107.188.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;209.107.189.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;209.107.190.0/24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - &amp;#39;209.107.191.0/24&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;可以更加精确的将协议限定为 UDP（虽然实际上也只会走 UDP）&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-24&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;script:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    shortcuts:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      GoogleVPNbypass: match_provider(&amp;#39;GoogleVPNbypass&amp;#39;) and network == &amp;#39;udp&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;并将其加入直连：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-25&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - SCRIPT,GoogleVPNbypass,🚀 直接连接&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;至此，你每使用 1G 流量，由于你的前置代理一直都在，也不会掉线。并且通过将其作为节点，可以更加灵活的控制分流规则。&lt;/p&gt;
&lt;h3 id=&#34;没有软路由&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%b2%a1%e6%9c%89%e8%bd%af%e8%b7%af%e7%94%b1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;没有软路由？&lt;/h3&gt;&lt;p&gt;那也没关系，你可以在电脑上使用 clash for windows 实现类似的效果（其他设备也一样，如 iPhone 上的 stash）。思路如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;clash for windows 的配置文件里要对代理检测服务器进行代理&lt;/li&gt;
&lt;li&gt;手机 WiFi 代理中设置电电脑 IP 以及 7890（clash 默认代理地址）&lt;/li&gt;
&lt;li&gt;在 clash for windows 配置文件里面新增一个 http 或者 socks 代理地址就是手机 IP 和 every proxy 共享出来的 http 或 socks 端口&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;你只有安卓&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bd%a0%e5%8f%aa%e6%9c%89%e5%ae%89%e5%8d%93&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;你只有安卓？&lt;/h3&gt;&lt;p&gt;抱歉，目前我还没有发现如何避免断开的方法。
但是你可以使用如下两种方式，出门外面的时候也能仅使用单设备连接上 VPN。&lt;/p&gt;
&lt;p&gt;方法 1：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-26&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. clash-设置-网络-关闭 自动路由系统流量
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. 打开clash开关 global选项卡选择一个支持的国家，例如美国，日本，台湾等
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. WiFi-设置-高级-代理-服务器写入127.0.0.1 端口填入7890 排除项填入 1.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4. 开启Google One VPN
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5. 成功后 clash global 选择direct
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;6. WiFi-高级设置-代理 修改 排除项1.com为任意 比如1.cn。没有排除选项的会造成网页无法打开&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;方法 2：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-27&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. clash-设置-网络-关闭 自动路由系统流量
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. clash 挂一个支持的国家，例如美国，日本，台湾等。只用代理模式，不要用全局模式。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 在数据卡的设置里，设置一个新的 APN ，把 APN 的代理服务器里面设置为 127.0.0.1:7890
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4. 直接用 Google one VPN 连接成功，成功后打开 wifi 和关闭 clash 均能保持连接状态
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;注意：连接成功后记得把clash设置为直连模式，且不可切换APN或关闭clash&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://outti.me/25CA97FE-A9DB-4070-95EE-CA8D324F59FA/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;开始使用 Google One VPN&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Wi-Fi 7 物理层解读</title>
      <link>https://www.techkoala.net/wi-fi7_phy_synopsis/</link>
      <pubDate>Fri, 20 Jan 2023 11:20:05 +0800</pubDate>
      
      <guid>https://www.techkoala.net/wi-fi7_phy_synopsis/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;Wi-Fi 7 物理层变化总结&lt;/p&gt;

&lt;/blockquote&gt;&lt;h1 id=&#34;phy-变化&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#phy-%e5%8f%98%e5%8c%96&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;PHY 变化&lt;/h1&gt;&lt;p&gt;以目前的 802.11be Draft 1.0 版本为蓝本，Wi-Fi 7 相比 Wi-Fi 6 在技术上没有根本性的改变，主要是在原来的基础上对以下特性进行了加强或改进：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;6GHz 频段和 320MHz 带宽&lt;/li&gt;
&lt;li&gt;4K QAM 调制&lt;/li&gt;
&lt;li&gt;增强 MIMO&lt;/li&gt;
&lt;li&gt;MLD（MLO 的基础）&lt;/li&gt;
&lt;li&gt;OFDMA 改进&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;下两图展示了 WiFi 发展历程中重要的参数信息的变化：&lt;/p&gt;
&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/1.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/1.png&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/1.png&#39;  
          &gt;&lt;/a&gt;
&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/2.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/2.png&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/2.png&#39;  
          &gt;&lt;/a&gt;
&lt;h1 id=&#34;6ghz320mhz&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#6ghz320mhz&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;6GHz&amp;amp;320MHz&lt;/h1&gt;&lt;p&gt;6GHz 的频段并非 Wi-Fi 7 首次采用（由 Wi-Fi 6E 引入），但是 Wi-Fi 7 在此基础上将 Wi-Fi 6/6E 最大单信道宽带由 160MHz 提升到了 320MHz 。&lt;/p&gt;
&lt;h2 id=&#34;6ghz&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#6ghz&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;6GHz&lt;/h2&gt;&lt;p&gt;随着 6GHz 频段的引入，未来 Wi-Fi 的频段一共将有三部分组成，如下图所示：&lt;/p&gt;
&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/3.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/3.png&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/3.png&#39;  
          &gt;&lt;/a&gt;
&lt;p&gt;具体到 6GHz 的位置，其可容纳的信道数量如下：&lt;/p&gt;
&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/4.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/4.png&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/4.png&#39;  
          &gt;&lt;/a&gt;
&lt;p&gt;新的 6GHz 频段 (5925-7125 MHz)，宽度为 1.2 GHz，可容纳 3 或 6 个 320MHz 的频带，4 个 240MHz 的频带，7 个 160MHz 的频带，或 14 个 80MHz 的频带。支持首选扫描信道 (PSC) 的通道 (5, 21, 37, 53, 69, 85, 101, 117, 133, 149, 165, 181, 197) , 进行快速被动扫描。&lt;/p&gt;
&lt;h2 id=&#34;320mhz&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#320mhz&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;320MHz&lt;/h2&gt;&lt;p&gt;320MHz信道化: 由6GHz的任意2个连续160MHz组成，包含2种类型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;320MHz-1（信道号为 31, 95, 159）&lt;/li&gt;
&lt;li&gt;320MHz-2（信道号为 63, 127, 191）&lt;/li&gt;
&lt;/ul&gt;
&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/5.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/5.png&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/5.png&#39;  
          &gt;&lt;/a&gt;
&lt;h2 id=&#34;冲突&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%86%b2%e7%aa%81&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;冲突&lt;/h2&gt;&lt;p&gt;虽然一些国家和地区（如美国和欧盟）已经批准 6GHz 中或宽或窄的频段用于 Wi-Fi，但采用 6GHz 也需要考虑如下几种场景可能占用 6GHz 带来冲突：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;5G NR-U（5G New Radio in Unlicensed Spectrum）在 3GPP R16 版本里定义，5G 空中接口可工作于免许可频段。在一些地区，如美国，NR-U 也将被用于部署在 6GHz 频段的服务。此外，基于 NR-U Sidelink 的 C-V2X 服务如果部署，也会占用 6GHz 部分频宽。&lt;/li&gt;
&lt;li&gt;美国已经划分了 5.9GHz 的 20MHz 给 5G C-V2X，部署需要考虑共存问题。&lt;/li&gt;
&lt;li&gt;2023 年世界无线大会 WRC-23 将会讨论是否将 6GHz 频谱授权给 6G。&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;4k-qam&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#4k-qam&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;4K-QAM&lt;/h1&gt;&lt;h2 id=&#34;为什么要有-qam&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%ba%e4%bb%80%e4%b9%88%e8%a6%81%e6%9c%89-qam&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;为什么要有 QAM？&lt;/h2&gt;&lt;p&gt;QAM 在用于 &lt;a href=&#34;https://info.support.huawei.com/info-finder/encyclopedia/zh/WiFi.html&#34; title=&#34;WiFi&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Wi-Fi&lt;/a&gt; 数字信号调制时，与普通幅度调制和相位调制相比能得到更高的速率。因为幅度调制和相位调制仅有 2 种符号（symbol）来区分 0 或 1。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;幅度调制：通过改变载波的振幅来区分 0 和 1。&lt;/li&gt;
&lt;li&gt;相位调制：通过改变载波的相位来区分 0 和 1。例如我们常见的 BPSK，就是使用 0° 和 180° 共 2 个相位表示 0 和 1，即 2 种符号；QPSK 则是使用 0°、90°、180° 和 270° 共 4 个相位，能够表示 00、01、10 和 11 共 4 种符号，传递 2 bit 的信息。其实 QPSK 就是一种特殊的 QAM，即 4-QAM。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而 QAM 则有更多的符号，每个符号都有相应的相位和幅度值。&lt;/p&gt;
&lt;p&gt;以 16-QAM 为例，通过 QAM 调制可得到 16 个不同的波形，分别代表 0000，0001&amp;hellip;. 这也意味着一共有 16 种符号，一个符号可以传递 4 bit 信息。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/6.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/6.png&#34;  data-sub-html=&#34;&lt;h2&gt;16-QAM示意图&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/6.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;16-QAM示意图&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;qam-是如何工作的&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#qam-%e6%98%af%e5%a6%82%e4%bd%95%e5%b7%a5%e4%bd%9c%e7%9a%84&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;QAM 是如何工作的？&lt;/h2&gt;&lt;p&gt;QAM 是将信号加载到 2 个正交的载波上（通常是正弦和余弦），通过对这两个载波幅度调整并叠加，最终得到相位和幅度都调制过的信号。这两个载波通常被称为 I 信号，另一个被称为 Q 信号，所以这种调制方式也被称为 IQ 调制。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/7.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/7.png&#34;  data-sub-html=&#34;&lt;h2&gt;IQ 调制&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/7.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;IQ 调制&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;由于 QAM 最终调制后的信号包含了相位和幅度的变换，因此 QAM 也被认为相位调制和幅度调制的组合。&lt;/p&gt;
&lt;h2 id=&#34;qam-的星座图&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#qam-%e7%9a%84%e6%98%9f%e5%ba%a7%e5%9b%be&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;QAM 的星座图&lt;/h2&gt;&lt;p&gt;在数字信号调制中，星座图通常用于表示 QAM 调制二维图形。星座图相对于 IQ 调制而言，将数据调制信息映射到极坐标中，这些信息包含了信号的幅度信息和相位信息。&lt;/p&gt;
&lt;p&gt;星座图上的每一个点，都表示一个符号。该点 I 轴和 Q 轴的分量分别代表着正交的载波上的幅度调整。该点到原点的距离 &lt;strong&gt;A&lt;/strong&gt; 就是调制后的幅度，夹角 &lt;strong&gt;φ&lt;/strong&gt; 就是调制后的相位。&lt;/p&gt;
&lt;p&gt;而星座图上点的数量，决定了每个符号传输的比特数。例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;256-QAM，256 是 2 的 8 次方，每个符号能传输 8bit 的数据。&lt;/li&gt;
&lt;li&gt;1024-QAM，1024 是 2 的 10 次方，每个符号能传输 10bit 的数据。&lt;/li&gt;
&lt;li&gt;4096-QAM，4096 是 2 的 12 次方，每个符号能传输 12bit 的数据。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此，作为比 Wi-Fi 6 1024-QAM 更高阶的 4096-QAM，数据传输的峰值速率进一步提高 20%。&lt;/p&gt;
&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/8.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/8.png&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/8.png&#39;  
          &gt;&lt;/a&gt;
&lt;h2 id=&#34;qam-对-wi-fi-标准速率影响&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#qam-%e5%af%b9-wi-fi-%e6%a0%87%e5%87%86%e9%80%9f%e7%8e%87%e5%bd%b1%e5%93%8d&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;QAM 对 Wi-Fi 标准速率影响&lt;/h2&gt;&lt;p&gt;在 Wi-Fi 标准中，定义了调制和编码方案 MCS（Modulation and Coding Scheme）。MCS 对应一组调制和编码方式。以 &lt;a href=&#34;https://info.support.huawei.com/info-finder/encyclopedia/zh/WiFi&amp;#43;6.html&#34; title=&#34;WiFi 6&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Wi-Fi 6&lt;/a&gt; 为例，MCS 索引有 12 个。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/9.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/9.png&#34;  data-sub-html=&#34;&lt;h2&gt;Wi-Fi 6 中 MCS 索引对应的调制方式以及编码率&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/9.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Wi-Fi 6 中 MCS 索引对应的调制方式以及编码率&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;如果 MCS 为 1，则使用的是 QPSK 的调制方式；如果 MCS 为 11，则使用的是 1024 的调制方式。
对于每个 MCS 的索引值，根据信道带宽、空间流数和保护间隔（Guard Interval，GI）可以计算出不同的速率。
计算公式如下：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/10.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/10.png&#34;  data-sub-html=&#34;&lt;h2&gt;Wi-Fi 标准的速率计算公式&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/10.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Wi-Fi 标准的速率计算公式&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;代价&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bb%a3%e4%bb%b7&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;代价&lt;/h2&gt;&lt;p&gt;尽管较高阶的调制速率能够为无线电通信系统提供更快的数据速率和更高水平的频谱效率，但这是有代价的。较高阶的调制方案对噪声和干扰的适应性要差得多。&lt;/p&gt;
&lt;p&gt;因为发送一个符号所用的载波频宽是固定的，发送时长也是一定的，较高阶意味着两个符号之间差异就越小。这不仅对接收双方的器件要求很高，而且对环境的要求也很高。也就是说，如果环境过于恶劣，终端将无法使用高阶的 QAM 模式通信，只能使用较低阶次的调制模式。&lt;/p&gt;
&lt;p&gt;4K-QAM 对信号的 EVM 要求已经到了 -38dB 了，已经是一个非常高的要求了&lt;/p&gt;
&lt;h1 id=&#34;mimo-增强&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#mimo-%e5%a2%9e%e5%bc%ba&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;MIMO 增强&lt;/h1&gt;&lt;p&gt;在 Wi-Fi 6 里面，最大的空间流是 8×8，在 Wi-Fi 7 里面，最大空间流提升到了 16×16。不过需要注意一点的是，这个空间流实际上是跑的 MU-MIMO，而不是单纯的 MIMO，实际里面终端部分不会有那么多的天线链路。&lt;/p&gt;
&lt;h1 id=&#34;mld&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#mld&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;MLD&lt;/h1&gt;&lt;p&gt;MLD（Multi-Link Device）其实是MLO在物理层（PHY）的体现，传统的WiFi仅仅包含单个链路的连接能力，MLD能够允许一块IC里面包含多个device的连接能力。在之前部分厂商已经具备并实现该技术，如QCA的DBS以及MTK的DBDC，落实到具体的功能为双WiFi技术。&lt;/p&gt;
&lt;p&gt;下图为传统的芯片结构，由两个独立的RF前端，一个基带处理部分，然后对应到上层接口，该方案只可以做到双频单发（DBSC）。&lt;/p&gt;
&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/11.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/11.png&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/11.png&#39;  
          &gt;&lt;/a&gt;
&lt;p&gt;改进后的芯片结构大致如下图，由两个独立的 RF 前端，这两个独立的 RF 前端对应到两个独立的基带处理，然后对应到上层接口，因此可以在一块 IC 内部，做到两个频段同时连接，即双频双发（DBDC）。&lt;/p&gt;
&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/12.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/12.png&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/12.png&#39;  
          &gt;&lt;/a&gt;
&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/13.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/13.png&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/13.png&#39;  
          &gt;&lt;/a&gt;
&lt;p&gt;802.11be对MLD部分做了一些改动，一个MLD设备由多个AP或者多个STA组成，并且引入新的MAC来标识MLD设备。新增的功能总结大致如下三点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多链路发现和设置：MLD具有能够动态更新每对链路上同时进行帧交换的能力。每个单独的AP/STA还可以提供关于同一MLD内其他附属AP/STA的操作参数的信息。&lt;/li&gt;
&lt;li&gt;流量链路映射：在多链路集里面，对数据帧进行分类的服务质量（QoS）标识符（TID）会映射到所有链路中。该映射会被MLD下所有链路协商更新。此外，MLD接收方将利用buff缓存对多个链路传输的相同TID的QoS数据帧进行重排。&lt;/li&gt;
&lt;li&gt;信道访问和节省功率：MLD的每个AP/STA都会通过它自己所在链路频段接入信道，并独自维护其自身的功率状态。为了更有效的对STA功率管理，AP还可以利用多条链路中已连接的其中一条链路，通过缓冲数据来通知其他链路的功率调整。&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;ofdma-增强&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#ofdma-%e5%a2%9e%e5%bc%ba&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;OFDMA 增强&lt;/h1&gt;&lt;h2 id=&#34;ru&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#ru&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;RU&lt;/h2&gt;&lt;p&gt;OFDMA 允许同时提供具有不同带宽需求的多个用户，从而有效利用可用频谱。子载波被分成若干组，每组表示为具有最小尺寸为 26 个子载波（2MHz 宽）和最大尺寸为 996 个子载波（77.8MHz 宽）的资源单元（RU）。&lt;/p&gt;
&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/14.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/14.png&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/14.png&#39;  
          &gt;&lt;/a&gt;
&lt;h2 id=&#34;前导码打孔--mru&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%89%8d%e5%af%bc%e7%a0%81%e6%89%93%e5%ad%94--mru&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;前导码打孔 &amp;amp; MRU&lt;/h2&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/15.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/15.png&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/15.png&#39;  
          &gt;&lt;/a&gt;
&lt;p&gt;假设 S20 被雷达信号占用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wi-Fi 6，STA 只能使用 P20 传输信号，40MHz 带宽被浪费&lt;/li&gt;
&lt;li&gt;Wi-Fi 7，允许分配打孔 RU 组成 MRU，STA 可以使用 60MHz 带宽&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;打孔的类型：1. 静态打孔（建立 BSS 时打孔）；2. 动态打孔（传输 PPDU 时，在静态打孔的基础上，打孔附加的信道）
80MHz 允许打孔 20MHz 信道，160MHz 允许打孔 20/40MHz，320MHz 允许打孔 40/80/80+40MHz&lt;/p&gt;
&lt;p&gt;Wi-Fi 7 支持在 EHT PPDU 中使用 MRU，以获得更高的频谱效率，实际上 MRU 就是支持多种 tone 根据需要进行组合，使得 RU 分配更加灵活，减小延迟。&lt;/p&gt;
&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/16.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/16.png&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/16.png&#39;  
          &gt;&lt;/a&gt;
&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/17.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/17.png&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/17.png&#39;  
          &gt;&lt;/a&gt;
&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/18.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/18.png&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/18.png&#39;  
          &gt;&lt;/a&gt;
&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/19.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/19.png&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7-PHY/19.png&#39;  
          &gt;&lt;/a&gt;
&lt;h1 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h1&gt;&lt;p&gt;[1] Key Advantages of Wi-Fi 7 MediaTek Whitepaper&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Wi-Fi 7 概述</title>
      <link>https://www.techkoala.net/wi-fi7_synopsis/</link>
      <pubDate>Fri, 20 Jan 2023 11:03:05 +0800</pubDate>
      
      <guid>https://www.techkoala.net/wi-fi7_synopsis/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;Wi-Fi 7 变化的总结&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;wi-fi-7-的发布时间&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#wi-fi-7-%e7%9a%84%e5%8f%91%e5%b8%83%e6%97%b6%e9%97%b4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Wi-Fi 7 的发布时间&lt;/h2&gt;&lt;p&gt;IEEE 802.11be EHT 工作组已于 2019 年 5 月成立，802.11be（Wi-Fi 7）的开发工作仍在进行中，整个协议标准将按照两个 Release 发布，Release1 预计在 2021 年将发布第一版草案 Draft1.0，预期在 2022 年底发布标准；Release2 预计在 2022 年初启动，并且在 2024 年底完成标准发布。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7/20220505143230.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7/20220505143230.png&#34;  data-sub-html=&#34;&lt;h2&gt;会议进程&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7/20220505143230.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;会议进程&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;wi-fi-7-vs-wi-fi-6&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#wi-fi-7-vs-wi-fi-6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Wi-Fi 7 vs Wi-Fi 6&lt;/h2&gt;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7/20220427104250.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7/20220427104250.png&#34;  data-sub-html=&#34;&lt;h2&gt;特性对比&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7/20220427104250.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;特性对比&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;wi-fi-7-支持的新特性&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#wi-fi-7-%e6%94%af%e6%8c%81%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Wi-Fi 7 支持的新特性&lt;/h2&gt;&lt;p&gt;Wi-Fi 7 协议的目标是将 &lt;a href=&#34;https://info.support.huawei.com/info-finder/encyclopedia/zh/WLAN.html&#34; title=&#34;WLAN&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;WLAN&lt;/a&gt; 网络的吞吐率提升到 30Gbps，并且提供低时延的接入保障。为了满足这个目标，整个协议在 PHY 层和 MAC 层都做了相应的改变。相对于 &lt;a href=&#34;https://info.support.huawei.com/info-finder/encyclopedia/zh/WiFi&amp;#43;6.html&#34; title=&#34;WiFi 6&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Wi-Fi 6&lt;/a&gt; 协议，Wi-Fi 7 协议带来的主要技术变革点如下：&lt;/p&gt;
&lt;h3 id=&#34;新频段&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%96%b0%e9%a2%91%e6%ae%b5&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;新频段&lt;/h3&gt;&lt;p&gt;相比 Wi-Fi 6，7 引入了 6GHz 频段（6e 也有），上下限分别为 5.925 —— 7.125 GHz：
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7/20220429105054.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7/20220429105054.png&#34;  data-sub-html=&#34;&lt;h2&gt;频段说明&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/Wi-Fi/7/20220429105054.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;频段说明&lt;/figcaption&gt;
    &lt;/figure&gt;&lt;/p&gt;
&lt;h3 id=&#34;支持最大-320mhz-带宽&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%94%af%e6%8c%81%e6%9c%80%e5%a4%a7-320mhz-%e5%b8%a6%e5%ae%bd&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;支持最大 320MHz 带宽&lt;/h3&gt;&lt;p&gt;2.4GHz 和 5GHz 频段免授权频谱有限且拥挤，现有 &lt;a href=&#34;https://info.support.huawei.com/info-finder/encyclopedia/zh/WiFi.html&#34; title=&#34;WiFi&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Wi-Fi&lt;/a&gt; 在运行 VR/AR 等新兴应用时，不可避免地会遇到 &lt;a href=&#34;https://info.support.huawei.com/info-finder/encyclopedia/zh/QoS.html&#34; title=&#34;QoS&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;QoS&lt;/a&gt; 低的问题。为了实现最大吞吐量不低于 30Gbps 的目标，Wi-Fi 7 将继续引入 6GHz 频段，并增加新的带宽模式，包括连续 240MHz，非连续 160+80MHz，连续 320 MHz 和非连续 160+160MHz。&lt;/p&gt;
&lt;h3 id=&#34;支持-multi-ru-机制&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%94%af%e6%8c%81-multi-ru-%e6%9c%ba%e5%88%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;支持 Multi-RU 机制&lt;/h3&gt;&lt;p&gt;在 Wi-Fi 6 中，每个用户只能在分配到的特定 RU 上发送或接收帧，大大限制了频谱资源调度的灵活性。为解决该问题，进一步提升频谱效率，Wi-Fi 7 中定义了允许将多个 RU 分配给单用户的机制。当然，为了平衡实现的复杂度和频谱的利用率，协议中对 RU 的组合做了一定的限制，即：小规格 RU（小于 242-Tone 的 RU）只能与小规格 RU 合并，大规格 RU（大于等于 242-Tone 的 RU）只能与大规格 RU 合并，不允许小规格 RU 和大规格 RU 混合使用。&lt;/p&gt;
&lt;h3 id=&#34;引入更高阶的-4096-qam-调制技术&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%bc%95%e5%85%a5%e6%9b%b4%e9%ab%98%e9%98%b6%e7%9a%84-4096-qam-%e8%b0%83%e5%88%b6%e6%8a%80%e6%9c%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;引入更高阶的 4096-QAM 调制技术&lt;/h3&gt;&lt;p&gt;Wi-Fi 6 的最高调制方式是 1024-QAM，其中调制符号承载 10bits。为了进一步提升速率，Wi-Fi 7 将会引入 4096-QAM，使得调制符号承载 12bit。在相同的编码下，Wi-Fi 7 的 4096-QAM 比 Wi-Fi 6 的 1024-QAM 可以获得 20% 的速率提升。&lt;/p&gt;
&lt;h3 id=&#34;引入-multi-link-多链路机制&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%bc%95%e5%85%a5-multi-link-%e5%a4%9a%e9%93%be%e8%b7%af%e6%9c%ba%e5%88%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;引入 Multi-Link 多链路机制&lt;/h3&gt;&lt;p&gt;为了实现所有可用频谱资源的高效利用，迫切需要在 2.4 GHz、5 GHz 和 6 GHz 上建立新的频谱管理、协调和传输机制。工作组定义了多&lt;a href=&#34;https://info.support.huawei.com/info-finder/encyclopedia/zh/LACP.html&#34; title=&#34;LACP&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;链路聚合&lt;/a&gt;相关的技术，主要包括增强型多链路聚合的 MAC 架构、多链路信道接入和多链路传输等相关技术。&lt;/p&gt;
&lt;h3 id=&#34;支持更多的数据流mimo-功能增强&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%94%af%e6%8c%81%e6%9b%b4%e5%a4%9a%e7%9a%84%e6%95%b0%e6%8d%ae%e6%b5%81mimo-%e5%8a%9f%e8%83%bd%e5%a2%9e%e5%bc%ba&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;支持更多的数据流，MIMO 功能增强&lt;/h3&gt;&lt;p&gt;在 Wi-Fi 7 中，空间流的数从 Wi-Fi 6 的 8 个增加到 16 个，理论上可以将物理传输速率提升两倍以上。支持更多的数据流也将会带来更强大的特性——分布式 &lt;a href=&#34;https://info.support.huawei.com/info-finder/encyclopedia/zh/MIMO.html&#34; title=&#34;MIMO&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;MIMO&lt;/a&gt;，意为 16 条数据流可以不由一个接入点提供，而是由多个接入点同时提供，这意味着多个 AP 之间需要相互协同进行工作。&lt;/p&gt;
&lt;h3 id=&#34;支持多-ap-间的协同调度&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%94%af%e6%8c%81%e5%a4%9a-ap-%e9%97%b4%e7%9a%84%e5%8d%8f%e5%90%8c%e8%b0%83%e5%ba%a6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;支持多 AP 间的协同调度&lt;/h3&gt;&lt;p&gt;目前在 802.11 的协议框架内，AP 之间实际上是没有太多协作的关系。自动调优、智能漫游等常见的 WLAN 功能都属于厂商自定义的特性。AP 间协作的目的也仅是优化信道选择，调整 AP 间负载等，以实现射频资源高效利用、均衡分配的目的。Wi-Fi 7 中的多 AP 间的协同调度，包括小区间的在时域和频域的协调规划，小区间的干扰协调，以及分布式 MIMO，可以有效降低 AP 之间的干扰，极大的提升空口资源的利用率。&lt;/p&gt;
&lt;p&gt;多 AP 间的协同调度的方式有很多，包括 C-OFDMA（Coordinated &lt;a href=&#34;https://info.support.huawei.com/info-finder/encyclopedia/zh/OFDMA.html&#34; title=&#34;OFDMA&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Orthogonal Frequency-Division Multiple Access&lt;/a&gt;）、CSR（Coordinated Spatial Reuse）、CBF（Coordinated &lt;a href=&#34;https://info.support.huawei.com/info-finder/encyclopedia/zh/%E6%B3%A2%E6%9D%9F%E6%88%90%E5%BD%A2.html&#34; title=&#34;波束成形&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Beamforming&lt;/a&gt;）和 JXT（Joint Transmission）等。&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Ubuntu LVM 磁盘扩容指南：以 Hyper-V 为例</title>
      <link>https://www.techkoala.net/resize_vm_lvm_disk_size/</link>
      <pubDate>Thu, 02 Sep 2021 11:25:59 +0800</pubDate>
      
      <guid>https://www.techkoala.net/resize_vm_lvm_disk_size/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;详细介绍如何在 Hyper-V 环境下为 Ubuntu 虚拟机扩展 LVM 磁盘空间&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;前置条件&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%89%8d%e7%bd%ae%e6%9d%a1%e4%bb%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;前置条件&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Hyper-V 虚拟机运行 Ubuntu 系统&lt;/li&gt;
&lt;li&gt;使用 LVM（Logical Volume Management）进行磁盘管理&lt;/li&gt;
&lt;li&gt;具有 root 或 sudo 权限&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;快速操作指南&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%bf%ab%e9%80%9f%e6%93%8d%e4%bd%9c%e6%8c%87%e5%8d%97&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;快速操作指南&lt;/h2&gt;&lt;p&gt;对于熟悉 LVM 的用户，以下是扩容的快速步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;检查当前分区：&lt;code&gt;fdisk -l&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;启动分区工具：&lt;code&gt;parted&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;扩展分区：&lt;code&gt;resizepart&lt;/code&gt;，选择分区 3，输入 100%&lt;/li&gt;
&lt;li&gt;扩展物理卷：&lt;code&gt;pvresize /dev/sda3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;扩展逻辑卷：&lt;code&gt;lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;调整文件系统：&lt;code&gt;resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;验证结果：&lt;code&gt;df -h&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;详细操作步骤&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%af%a6%e7%bb%86%e6%93%8d%e4%bd%9c%e6%ad%a5%e9%aa%a4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;详细操作步骤&lt;/h2&gt;&lt;h3 id=&#34;1-检查当前磁盘使用情况&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#1-%e6%a3%80%e6%9f%a5%e5%bd%93%e5%89%8d%e7%a3%81%e7%9b%98%e4%bd%bf%e7%94%a8%e6%83%85%e5%86%b5&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;1. 检查当前磁盘使用情况&lt;/h3&gt;&lt;p&gt;首先查看文件系统使用情况：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-1&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ df -h
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Filesystem                         Size  Used  Avail Use% Mounted on
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/dev/mapper/ubuntu--vg-ubuntu--lv  3.9G  3.2G   489M  87% /
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/dev/sda2                         976M   77M   833M   9% /boot
&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;# ... 其他输出省略&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;查看详细的磁盘分区信息：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-2&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo fdisk -l
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Disk /dev/sda: &lt;span class=&#34;m&#34;&gt;25&lt;/span&gt; GiB, &lt;span class=&#34;m&#34;&gt;26843545600&lt;/span&gt; bytes, &lt;span class=&#34;m&#34;&gt;52428800&lt;/span&gt; sectors
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Units: sectors of &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; * &lt;span class=&#34;nv&#34;&gt;512&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;512&lt;/span&gt; bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Sector size &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;logical/physical&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: &lt;span class=&#34;m&#34;&gt;512&lt;/span&gt; bytes / &lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Disklabel type: gpt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Disk identifier: ED41F7A6-5D09-457B-A55C-C7F1E30DE419
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Device      Start      End    Sectors  Size Type
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/dev/sda1    &lt;span class=&#34;m&#34;&gt;2048&lt;/span&gt;     &lt;span class=&#34;m&#34;&gt;4095&lt;/span&gt;      &lt;span class=&#34;m&#34;&gt;2048&lt;/span&gt;    1M BIOS boot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/dev/sda2    &lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;2101247&lt;/span&gt;   &lt;span class=&#34;m&#34;&gt;2097152&lt;/span&gt;    1G Linux filesystem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/dev/sda3 &lt;span class=&#34;m&#34;&gt;2101248&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;52426751&lt;/span&gt;  &lt;span class=&#34;m&#34;&gt;50325504&lt;/span&gt;   24G Linux filesystem&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-在-hyper-v-中扩展虚拟磁盘&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#2-%e5%9c%a8-hyper-v-%e4%b8%ad%e6%89%a9%e5%b1%95%e8%99%9a%e6%8b%9f%e7%a3%81%e7%9b%98&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;2. 在 Hyper-V 中扩展虚拟磁盘&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;关闭虚拟机&lt;/li&gt;
&lt;li&gt;打开 Hyper-V 管理器&lt;/li&gt;
&lt;li&gt;选择目标虚拟机 → 设置&lt;/li&gt;
&lt;li&gt;找到硬盘驱动器 → 编辑&lt;/li&gt;
&lt;li&gt;选择&amp;quot;扩展&amp;quot;并输入新的大小&lt;/li&gt;
&lt;li&gt;启动虚拟机&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;3-调整-linux-分区&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#3-%e8%b0%83%e6%95%b4-linux-%e5%88%86%e5%8c%ba&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3. 调整 Linux 分区&lt;/h3&gt;&lt;p&gt;使用 parted 工具调整分区大小：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-3&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo parted
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GNU Parted 3.2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Using /dev/sda
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Welcome to GNU Parted! Type &lt;span class=&#34;s1&#34;&gt;&amp;#39;help&amp;#39;&lt;/span&gt; to view a list of commands.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 查看当前分区情况&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;o&#34;&gt;(&lt;/span&gt;parted&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; print
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Model: Msft Virtual Disk &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;scsi&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Disk /dev/sda: 26.8GB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Sector size &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;logical/physical&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: 512B/4096B
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Partition Table: gpt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Number  Start   End     Size    File system  Name  Flags
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;      1049kB  2097kB  1049kB               bios_grub
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;      2097kB  1076MB  1074MB  ext4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;      1076MB  26.8GB  25.8GB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 调整分区大小&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;o&#34;&gt;(&lt;/span&gt;parted&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; resizepart
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Partition number? &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;End? &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;26.8GB&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;? 100%
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;o&#34;&gt;(&lt;/span&gt;parted&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; quit&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;4-扩展-lvm-卷&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#4-%e6%89%a9%e5%b1%95-lvm-%e5%8d%b7&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;4. 扩展 LVM 卷&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;扩展物理卷（PV）：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-4&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo pvresize /dev/sda3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Physical volume &lt;span class=&#34;s2&#34;&gt;&amp;#34;/dev/sda3&amp;#34;&lt;/span&gt; changed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; physical volume&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;s&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; resized&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;扩展逻辑卷（LV）：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-5&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Size of logical volume ubuntu-vg/ubuntu-lv changed from 4.00 GiB to 23.00 GiB.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Logical volume ubuntu-vg/ubuntu-lv successfully resized.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;调整文件系统大小：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-6&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;resize2fs 1.44.1 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;24-Mar-2018&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; on-line resizing required
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;old_desc_blocks&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 1, &lt;span class=&#34;nv&#34;&gt;new_desc_blocks&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now &lt;span class=&#34;m&#34;&gt;6029312&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;4k&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; blocks long.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;5-验证扩容结果&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#5-%e9%aa%8c%e8%af%81%e6%89%a9%e5%ae%b9%e7%bb%93%e6%9e%9c&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;5. 验证扩容结果&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-7&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ df -h
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Filesystem                         Size  Used  Avail Use% Mounted on
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/dev/mapper/ubuntu--vg-ubuntu--lv   23G  3.2G    19G  15% /
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/dev/sda2                         976M   77M   833M   9% /boot
&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;# ... 其他输出省略&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;故障排除&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%95%85%e9%9a%9c%e6%8e%92%e9%99%a4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;故障排除&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;分区未显示新增空间&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;检查 Hyper-V 设置中的磁盘大小是否正确更改&lt;/li&gt;
&lt;li&gt;确认虚拟机是否完全重启&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;LVM 扩展失败&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;确保 PV、VG 和 LV 的名称正确&lt;/li&gt;
&lt;li&gt;检查是否有足够的未分配空间&lt;/li&gt;
&lt;li&gt;查看系统日志获取详细错误信息&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;文件系统扩展失败&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;确保文件系统支持在线调整&lt;/li&gt;
&lt;li&gt;检查文件系统是否有错误（使用 fsck）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;参考资料&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考资料&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://ubuntu.com/server/docs/storage-introduction&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Ubuntu Server 指南 - 存储&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_logical_volumes/index&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;LVM 管理指南&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/hyper-v-technology-overview&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Hyper-V 文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>不容错过的 Bash 技巧</title>
      <link>https://www.techkoala.net/bash_tricks/</link>
      <pubDate>Fri, 04 Jun 2021 11:06:47 +0800</pubDate>
      
      <guid>https://www.techkoala.net/bash_tricks/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;一些提升 Bash 使用效率的小技巧&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;在使用 Bash 时，我们通常使用 上 ↑ 下 ↓ 箭头来快速切换历史命令，然而一些重复的、不想要的命令（例如最简单的 ls，敲击比切换快，同时也会增加切换到别的命令的按键次数）也在历史记录里保存，这降低了切换的效率。下面一些技巧可以更好的帮助我们切换到想要的命令：&lt;/p&gt;
&lt;div class=&#34;details admonition info open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;说明&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;&lt;p&gt;下文中需要编辑的内容均在&lt;code&gt;.bashrc&lt;/code&gt;中，使用常用的文本编辑器打开它，例如：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-12&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ vim ~/.bashrc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&#34;使用-histignore-移除历史记录中无意义的命令&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bd%bf%e7%94%a8-histignore-%e7%a7%bb%e9%99%a4%e5%8e%86%e5%8f%b2%e8%ae%b0%e5%bd%95%e4%b8%ad%e6%97%a0%e6%84%8f%e4%b9%89%e7%9a%84%e5%91%bd%e4%bb%a4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;使用 HISTIGNORE 移除历史记录中无意义的命令&lt;/h2&gt;&lt;p&gt;有一些命令极为常用，我们不想它出现在历史记录里，那么在&lt;code&gt;.bashrc&lt;/code&gt;中添加下述内容忽略它即可：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-1&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;HISTIGNORE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;pwd:exit:fg:bg:top:clear:history:ls:uptime:df&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;作为补充，如果我们不希望某些敏感的命令出现在历史记录中，例如在命令行中指定密码或 API 密钥，那么可以使用下面的选项来确保任何以&lt;strong&gt;空格&lt;/strong&gt;开头的命令不会出现在历史文件中：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-2&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;HISTCONTROL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;ignorespace&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;另外：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-3&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;HISTCONTROL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;ignoredups&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;则表示当同一个命令重复出现时，只存储命令的一个副本。&lt;/p&gt;
&lt;h2 id=&#34;设置历史记录数量&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%ae%be%e7%bd%ae%e5%8e%86%e5%8f%b2%e8%ae%b0%e5%bd%95%e6%95%b0%e9%87%8f&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;设置历史记录数量&lt;/h2&gt;&lt;p&gt;为了防止历史记录的丢失，可以适当的将记录数量调整的更大：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-4&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;shopt&lt;/span&gt; -s histappend
&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;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;HISTSIZE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;10000&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;更有效的调用命令&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9b%b4%e6%9c%89%e6%95%88%e7%9a%84%e8%b0%83%e7%94%a8%e5%91%bd%e4%bb%a4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;更有效的调用命令&lt;/h2&gt;&lt;p&gt;&lt;code&gt;!!&lt;/code&gt;可以调用前一行的命令。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-5&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ &lt;span class=&#34;nb&#34;&gt;pwd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/etc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;pwd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/etc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;同时，&lt;code&gt;!!&lt;/code&gt;也可以作为参数加入别的命令配合使用，例如：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-6&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo !!&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;就将使用 root 权限再次执行此前的命令。&lt;/p&gt;
&lt;p&gt;此外，我们还可以通过在历史命令提供的&lt;strong&gt;行号&lt;/strong&gt;前加一个&lt;code&gt;!&lt;/code&gt;来运行历史上的命令，但是请注意不要打错行号，避免执行出错：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-7&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ rm -r temp/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ mkdir temp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ touch temp/test
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ !!
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;touch temp/test
&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;history&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tail -4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;m&#34;&gt;179&lt;/span&gt;  rm -r temp/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;m&#34;&gt;180&lt;/span&gt;  mkdir temp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;m&#34;&gt;181&lt;/span&gt;  touch temp/test
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;m&#34;&gt;182&lt;/span&gt;  touch temp/test
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;m&#34;&gt;183&lt;/span&gt;  &lt;span class=&#34;nb&#34;&gt;history&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tail -5
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ !179:p
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm -r temp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ !180
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;touch temp/test&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;我们也可以用前面的&lt;code&gt;!&lt;/code&gt;来调用一个命令的最后一次出现，例如：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-8&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ !ping&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;将运行我们最后运行的以 &lt;code&gt;ping&lt;/code&gt; 开头的命令。&lt;/p&gt;
&lt;p&gt;为了避免上述内容出错，可以添加一个&lt;code&gt;:p&lt;/code&gt;来显示命令内容，而不实际执行它们。&lt;/p&gt;
&lt;h2 id=&#34;使用--和--调用前一行参数&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bd%bf%e7%94%a8--%e5%92%8c--%e8%b0%83%e7%94%a8%e5%89%8d%e4%b8%80%e8%a1%8c%e5%8f%82%e6%95%b0&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;使用 !$ 和 !* 调用前一行参数&lt;/h2&gt;&lt;p&gt;和&lt;code&gt;!!&lt;/code&gt;不同，&lt;code&gt;!$&lt;/code&gt;和&lt;code&gt;!*&lt;/code&gt;仅指代前一行，命令的部分内容。&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-9&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ mv list.txt items.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ vim !$
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim items.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cp !$ shopping.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp items.txt shopping.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;可以看到&lt;code&gt;!$&lt;/code&gt;指代上一行命令的最后一个参数。&lt;/p&gt;
&lt;p&gt;而&lt;code&gt;!*&lt;/code&gt;指代上一行命令&lt;strong&gt;除了第一个&lt;/strong&gt;以外的所有参数：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-10&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ rm /var/log/httpd/access.log /var/log/httpd/error.log
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ touch !*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;touch /var/log/httpd/access.log /var/log/httpd/error.log&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;用--替换前一行的匹配词&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%94%a8--%e6%9b%bf%e6%8d%a2%e5%89%8d%e4%b8%80%e8%a1%8c%e7%9a%84%e5%8c%b9%e9%85%8d%e8%af%8d&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;用 ^ 替换前一行的匹配词&lt;/h2&gt;&lt;p&gt;&lt;code&gt;^&lt;/code&gt;符号允许你在切换一个匹配的单词后重复前一个命令，比如说：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-11&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ rm /var/log/httpd/error.log
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ^error^access
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm /var/log/httpd/access.log&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] &lt;a href=&#34;https://cyb.org.uk/2021/05/03/bash-productivity.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Be more productive with use of your BASH history&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>使用 Docker 部署 FreshRSS：搭建私有 RSS 阅读服务</title>
      <link>https://www.techkoala.net/frsshrss/</link>
      <pubDate>Fri, 28 May 2021 23:25:46 +0800</pubDate>
      
      <guid>https://www.techkoala.net/frsshrss/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;本文介绍如何使用 Docker 部署 FreshRSS，搭建自己的 RSS 阅读服务。相比商业服务（如 Inoreader），自托管 FreshRSS 无需付费且无功能限制。&lt;/p&gt;

&lt;/blockquote&gt;&lt;div class=&#34;details admonition warning open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 576 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;服务器要求&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;为确保 RSS 源的可靠访问，建议使用境外服务器部署。&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&#34;一部署准备&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%80%e9%83%a8%e7%bd%b2%e5%87%86%e5%a4%87&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;一、部署准备&lt;/h2&gt;&lt;h3 id=&#34;11-系统要求&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#11-%e7%b3%bb%e7%bb%9f%e8%a6%81%e6%b1%82&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;1.1 系统要求&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Docker 和 Docker Compose&lt;/li&gt;
&lt;li&gt;稳定的网络连接&lt;/li&gt;
&lt;li&gt;建议 1GB 以上内存&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;12-创建工作目录&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#12-%e5%88%9b%e5%bb%ba%e5%b7%a5%e4%bd%9c%e7%9b%ae%e5%bd%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;1.2 创建工作目录&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-11&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 创建并进入 FreshRSS 工作目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir ~/freshrss &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/freshrss&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;二docker-配置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%ba%8cdocker-%e9%85%8d%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;二、Docker 配置&lt;/h2&gt;&lt;h3 id=&#34;21-创建配置文件&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#21-%e5%88%9b%e5%bb%ba%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;2.1 创建配置文件&lt;/h3&gt;&lt;p&gt;创建 &lt;code&gt;docker-compose.yml&lt;/code&gt; 文件：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;yaml&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-12&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;3&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# PostgreSQL 数据库服务&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;freshrss-db&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;postgres:latest&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;freshrss-db&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hostname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;freshrss-db&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;always&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;freshrss-db:/var/lib/postgresql/data&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;POSTGRES_USER&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;freshrss        &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 设置数据库用户名&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;POSTGRES_PASSWORD&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;freshrss    &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 设置数据库密码&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;POSTGRES_DB&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;freshrss         &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 设置数据库名&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# FreshRSS 应用服务&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;freshrss-app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;freshrss/freshrss:latest&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;freshrss-app&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hostname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;freshrss-app&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;always&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;s2&#34;&gt;&amp;#34;39954:80&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;                   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 端口映射，可根据需要修改&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;depends_on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;freshrss-db&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;./data:/var/www/FreshRSS/data&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;./extensions:/var/www/FreshRSS/extensions&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;CRON_MIN&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;*/45&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;               &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# RSS 更新间隔（分钟）&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;TZ&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;Asia/Shanghai             &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 时区设置&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;freshrss-db:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;22-启动服务&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#22-%e5%90%af%e5%8a%a8%e6%9c%8d%e5%8a%a1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;2.2 启动服务&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-13&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker-compose up -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;三freshrss-配置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%89freshrss-%e9%85%8d%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;三、FreshRSS 配置&lt;/h2&gt;&lt;h3 id=&#34;31-初始化设置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#31-%e5%88%9d%e5%a7%8b%e5%8c%96%e8%ae%be%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3.1 初始化设置&lt;/h3&gt;&lt;p&gt;访问 &lt;code&gt;http://your-domain:39954&lt;/code&gt; 进行初始化配置：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;数据库配置&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主机名：&lt;code&gt;freshrss-db&lt;/code&gt;（与 Docker 容器名对应）&lt;/li&gt;
&lt;li&gt;用户名：与 POSTGRES_USER 值相同&lt;/li&gt;
&lt;li&gt;密码：与 POSTGRES_PASSWORD 值相同&lt;/li&gt;
&lt;li&gt;数据库名：与 POSTGRES_DB 值相同&lt;/li&gt;
&lt;li&gt;表前缀：可自定义&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;管理员账户&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;设置管理员用户名和密码&lt;/li&gt;
&lt;li&gt;配置网站基本信息&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;32-优化设置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#32-%e4%bc%98%e5%8c%96%e8%ae%be%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3.2 优化设置&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;阅读设置&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;建议关闭：&lt;code&gt;阅读 =&amp;gt; 合适将文章标记为已读 =&amp;gt; 在滚动浏览后&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;原因：避免意外将未读文章标记为已读&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;扩展功能&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;推荐安装 &lt;code&gt;Auto Refresh&lt;/code&gt; 扩展实现自动刷新&lt;/li&gt;
&lt;li&gt;安装步骤：
&lt;ol&gt;
&lt;li&gt;下载扩展文件&lt;/li&gt;
&lt;li&gt;解压到 &lt;code&gt;~/freshrss/extensions/&lt;/code&gt; 目录&lt;/li&gt;
&lt;li&gt;在 FreshRSS 后台启用扩展&lt;/li&gt;
&lt;li&gt;修改刷新间隔：编辑 &lt;code&gt;xExtension-AutoRefresh/static/script.js&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;四nginx-反向代理配置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%9b%9bnginx-%e5%8f%8d%e5%90%91%e4%bb%a3%e7%90%86%e9%85%8d%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;四、Nginx 反向代理配置&lt;/h2&gt;&lt;p&gt;如需配置 Nginx 反向代理，请参考：&lt;a href=&#34;https://www.techkoala.net/nginx_port_reuse/&#34; rel=&#34;&#34;&gt;使用 Nginx 实现多服务复用端口&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;五移动端配置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%ba%94%e7%a7%bb%e5%8a%a8%e7%ab%af%e9%85%8d%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;五、移动端配置&lt;/h2&gt;&lt;h3 id=&#34;51-启用-api-访问&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#51-%e5%90%af%e7%94%a8-api-%e8%ae%bf%e9%97%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;5.1 启用 API 访问&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;进入 FreshRSS 设置&lt;/li&gt;
&lt;li&gt;开启：&lt;code&gt;认证 =&amp;gt; 允许 API 访问&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;设置：&lt;code&gt;用户账户 =&amp;gt; API 管理 =&amp;gt; API 密码&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;52-客户端配置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#52-%e5%ae%a2%e6%88%b7%e7%ab%af%e9%85%8d%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;5.2 客户端配置&lt;/h3&gt;&lt;h4 id=&#34;fluent-reader&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#fluent-reader&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Fluent Reader&lt;/h4&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-14&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API 地址：https://your-domain/api/fever.php
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户名：您的用户名
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;密码：API 密码&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h4 id=&#34;feedme&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#feedme&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;FeedMe&lt;/h4&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-15&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API 地址：https://your-domain/api/greader.php
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用户名：您的用户名
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;密码：API 密码
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;服务类型：选择 FreshRSS&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;div class=&#34;details admonition tip open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 352 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;注意&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;FeedMe 请使用 Google Reader API（greader.php），Fever API 可能导致认证失败。&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&#34;参考资料&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考资料&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://freshrss.github.io/FreshRSS/en/users/02_First_steps.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;FreshRSS 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://hub.docker.com/r/freshrss/freshrss/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Docker Hub - FreshRSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.ichr.me/post/docker-freshrss-setup/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;使用 Docker 部署 FreshRSS 自建专属 RSS 服务&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>常用 youtube-dl 命令</title>
      <link>https://www.techkoala.net/youtube-dl_tricks/</link>
      <pubDate>Tue, 18 May 2021 15:19:43 +0800</pubDate>
      
      <guid>https://www.techkoala.net/youtube-dl_tricks/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;记录一些常用的 youtube-dl 命令，拯救脑容量。&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;下载播放列表视频音频&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8b%e8%bd%bd%e6%92%ad%e6%94%be%e5%88%97%e8%a1%a8%e8%a7%86%e9%a2%91%e9%9f%b3%e9%a2%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;下载播放列表视频+音频&lt;/h2&gt;&lt;p&gt;Windows&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;cmd&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-7&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;youtube-dl.exe -o &lt;span class=&#34;s2&#34;&gt;&amp;#34;D:\xxxxxx\&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;%(title)s.%&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;(ext)s&amp;#34;&lt;/span&gt; -f bestvideo+bestaudio https://www.youtube.com/playlist?list=x&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;仅下载播放列表音频&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bb%85%e4%b8%8b%e8%bd%bd%e6%92%ad%e6%94%be%e5%88%97%e8%a1%a8%e9%9f%b3%e9%a2%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;仅下载播放列表音频&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;cmd&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-8&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;youtububedl.exe -o D:\&lt;span class=&#34;nv&#34;&gt;%(title)s.%&lt;/span&gt;(ext)s -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 https://www.youtube.com/playlist?list=xxxxxxxxxxxx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-9&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-o D:\%(title)s.%(ext)s     #保留原始名称和后缀
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-f bestaudio                #最佳音频
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--extract-audio             #提取音频
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--audio-format mp3          #设置音频格式，下载文件若不同，则调用ffmpeg转换
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--playlist-items 1,2,5      #下载播放列表中的哪些项
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--playstart-start 2         #从第二项开始下载播放列表
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--playstart-end 2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-f &amp;#39;bestvideo[height&amp;lt;=1080]+bestaudio/best[height&amp;lt;=1080]&amp;#39;             #设置最大下载分辨率&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>持久化 Gist file raw 链接</title>
      <link>https://www.techkoala.net/permalink_gist_raw_file/</link>
      <pubDate>Mon, 03 May 2021 22:22:32 +0800</pubDate>
      
      <guid>https://www.techkoala.net/permalink_gist_raw_file/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;如何持久化 Gist file raw 链接地址？&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;问题&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%97%ae%e9%a2%98&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;问题&lt;/h2&gt;&lt;p&gt;通常，Gist 文件的 raw 链接会随着版本而更改，但在使用上往往不便，因此需要持久化文件的 raw 链接地址。&lt;/p&gt;
&lt;h2 id=&#34;解决方法&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;解决方法&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;获得 Gist 文件列表中的第一个文件： &lt;code&gt;https://gist.github.com/gist_user/gist_id/raw/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;例如: &lt;a href=&#34;https://gist.github.com/atenni/5604522/raw/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://gist.github.com/atenni/5604522/raw/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;即便更改了文件名，上述方法依然可以获得列表中的第一个文件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;获得多个文件： &lt;code&gt;https://gist.github.com/gist_user/gist_id/raw/file_name&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;例如: &lt;a href=&#34;https://gist.github.com/atenni/5604522/raw/README.md&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://gist.github.com/atenni/5604522/raw/README.md&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] &lt;a href=&#34;https://gist.github.com/atenni/5604615&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;How to permalink to a gist&amp;rsquo;s raw file&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Windows 网络连接优先级设置</title>
      <link>https://www.techkoala.net/windows_10_network_priority/</link>
      <pubDate>Thu, 29 Apr 2021 20:42:25 +0800</pubDate>
      
      <guid>https://www.techkoala.net/windows_10_network_priority/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;Windows10 默认优先使用有线连接，但是如需优先使用无线连接，除了拔网线/禁用有线网卡外，还可以通过修改接口跃点数，实现不同网络连接的优先级。&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;优先级设置方法&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bc%98%e5%85%88%e7%ba%a7%e8%ae%be%e7%bd%ae%e6%96%b9%e6%b3%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;优先级设置方法&lt;/h2&gt;&lt;h3 id=&#34;方法一控制面板中修改&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%96%b9%e6%b3%95%e4%b8%80%e6%8e%a7%e5%88%b6%e9%9d%a2%e6%9d%bf%e4%b8%ad%e4%bf%ae%e6%94%b9&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;方法一：控制面板中修改&lt;/h3&gt;&lt;p&gt;接口跃点数通过以下步骤找到：&lt;/p&gt;
&lt;p&gt;首先打开&lt;code&gt;控制面板 &amp;gt; 网络和 Internet &amp;gt; 网络连接&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;找到想要修改的网络连接，右键打开&lt;code&gt;属性&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;接下来打开&lt;code&gt;Internet 协议版本 4 属性 &amp;gt; 高级&lt;/code&gt;&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/Network_Priority/GUI.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/Network_Priority/GUI.webp&#34;  data-sub-html=&#34;&lt;h2&gt;控制面板设置界面&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/Network_Priority/GUI.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;控制面板设置界面&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;取消勾选&lt;code&gt;自动跃点&lt;/code&gt;，填入需要设置的数值即可，有关数值设置的注意事项将在后续说明。&lt;/p&gt;
&lt;h3 id=&#34;方法二powershell-中修改&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%96%b9%e6%b3%95%e4%ba%8cpowershell-%e4%b8%ad%e4%bf%ae%e6%94%b9&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;方法二：Powershell 中修改&lt;/h3&gt;&lt;p&gt;更便捷的方式是通过 Powershell 进行修改。&lt;/p&gt;
&lt;p&gt;首先以管理员身份运行 Windows PowerShell，并使用命令&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;powershell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-13&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;PS &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;Users&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;xxxx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Get-NetIPInterface&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;获得当前所有的网络连接，其中&lt;code&gt;InterfaceMetric&lt;/code&gt;即为接口跃点数的值。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/Network_Priority/powershell.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/Network_Priority/powershell.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Powershell 设置界面&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/Network_Priority/powershell.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Powershell 设置界面&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;找到想要修改的网络连接以及它的 ifIndex (接口索引)值，例如 x，使用命令&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;powershell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-14&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;PS &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;Users&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;xxxx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Set-NetIPInterface&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-InterfaceIndex&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-InterfaceMetric&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;10&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;即可将其跃点数设置为 10。&lt;/p&gt;
&lt;p&gt;想要恢复跃点数的话，运行以下命令即可：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;powershell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-15&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;PS &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;Users&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;xxxx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Set-NetIPInterface&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-InterfaceIndex&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-AutomaticMetric&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;enabled&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;跃点数的设置范围&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%b7%83%e7%82%b9%e6%95%b0%e7%9a%84%e8%ae%be%e7%bd%ae%e8%8c%83%e5%9b%b4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;跃点数的设置范围&lt;/h3&gt;&lt;p&gt;跃点数越小，网络优先级越高。&lt;/p&gt;
&lt;p&gt;跃点数的理论范围是 1 ~ 999，但跃点数低于 10 ，可能会导致某些网络访问失败，同时，合理的跃点数值也要参考网络带宽。&lt;/p&gt;
&lt;h2 id=&#34;分流方法&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%88%86%e6%b5%81%e6%96%b9%e6%b3%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;分流方法&lt;/h2&gt;&lt;p&gt;在同时使用 Wi-Fi 和有线网络的环境下可以用 route 命令实现特定网段使用特定接口。&lt;/p&gt;
&lt;p&gt;举例：&lt;/p&gt;
&lt;p&gt;可以连接到互联网的 Wi-Fi 网关地址是 &lt;code&gt;192.168.0.1&lt;/code&gt;，有线网网关 IP 是 &lt;code&gt;10.0.0.1&lt;/code&gt;。
分流：需要访问的内网资源都位于 &lt;code&gt;10.0.0.0/8&lt;/code&gt; 段，其他流量都走 Wi-Fi。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;首先打开管理员身份的命令提示符，输入以下命令删除默认的路由表。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-16&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;route delete 0.0.0.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;添加一个默认路由，指定所有流量走 Wi-Fi。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-17&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;route add 0.0.0.0 mask 0.0.0.0 192.168.0.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;添加另一个路由，指定 &lt;code&gt;10.0.0.1~10.255.255.254&lt;/code&gt; 流量走有线网络。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-18&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;route add 10.0.0.0 mask 255.0.0.0 10.0.0.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;https://windows10.pro/set-netipinterface-interfaceindex-interfacemetric/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;修改接口跃点数，让 Win10 优先使用无线网络连接&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;https://www.appinn.com/wi-fi-or-lan/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;同时连接网线和 Wi-Fi，如何优先使用 Wi-Fi？试试接口跃点数&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>使用 Nginx 实现多服务复用端口</title>
      <link>https://www.techkoala.net/nginx_port_reuse/</link>
      <pubDate>Tue, 20 Apr 2021 14:17:01 +0800</pubDate>
      
      <guid>https://www.techkoala.net/nginx_port_reuse/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;利用 Nginx 在单一服务器上搭建多个同端口的服务&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;说明&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%af%b4%e6%98%8e&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;说明&lt;/h2&gt;&lt;p&gt;目前服务器上运行以下服务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Trojan&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Xray&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;frp&lt;/code&gt; + &lt;code&gt;Bitwarden&lt;/code&gt; 实现内网穿透访问&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FreshRSS&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;三个服务使用了不同域名进行区分，但为了便捷，都使用 &lt;code&gt;443&lt;/code&gt; 端口。&lt;/p&gt;
&lt;h2 id=&#34;流程概览&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%b5%81%e7%a8%8b%e6%a6%82%e8%a7%88&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;流程概览&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;采用 &lt;code&gt;Docker&lt;/code&gt; 在本地服务器上搭建 &lt;code&gt;Bitwarden&lt;/code&gt;，配置并运行 &lt;code&gt;frpc&lt;/code&gt; 指向服务器上的 &lt;code&gt;frps&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在服务器上搭建其他网站或者需要使用 &lt;code&gt;443&lt;/code&gt; 端口的服务（如：&lt;code&gt;Trojan&lt;/code&gt;)，配置运行 &lt;code&gt;frps&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;采用 &lt;code&gt;Docker&lt;/code&gt; 搭建 FreshRSS，首先使用 IP:Port 完成相关配置，然后配置域名，申请证书&lt;/li&gt;
&lt;li&gt;安装 &lt;code&gt;Nginx&lt;/code&gt;，这里需要利用 &lt;code&gt;Nginx&lt;/code&gt; 的 &lt;code&gt;stream_ssl_preread&lt;/code&gt; 模块，使用&lt;code&gt;nginx -V&lt;/code&gt;查看是否包含该模块。（该模块在 &lt;code&gt;Nginx 1.19.2&lt;/code&gt; 已默认包含，但 &lt;code&gt;Ubuntu&lt;/code&gt; 等发行版还在使用更老的 &lt;code&gt;stable&lt;/code&gt; 版本，需要手动添加 &lt;code&gt;mainline&lt;/code&gt; 版本源，并更新 &lt;code&gt;Nginx&lt;/code&gt; 到最新版本）&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;获取-ssl-证书&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%8e%b7%e5%8f%96-ssl-%e8%af%81%e4%b9%a6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;获取 SSL 证书&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-29&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo apt install certbot python3-certbot-nginx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo certbot --nginx -d example.com -d www.example.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;本地配置文件&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9c%ac%e5%9c%b0%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;本地配置文件&lt;/h2&gt;&lt;h3 id=&#34;frpcini&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#frpcini&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;frpc.ini&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-30&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[common]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server_addr = xxx.xxx.xxx.xxx           # 服务器地址
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server_port = xxx                       # 与服务器 frps 通信的端口
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;token = xxxxxx                          # frp 验证密钥
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[bitwarden_https]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;type = https
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;local_port = 443
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;custom_domains = xxx.xxx.xxx            # Bitwarden 域名&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;本地-nginxcof&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9c%ac%e5%9c%b0-nginxcof&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;本地 nginx.cof&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-31&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;user&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;www&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;www&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;worker_processes&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;error_log&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nginx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;error&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;log&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;warn&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;pid&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nginx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;worker_rlimit_nofile&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8192&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;events&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&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;worker_connections&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4096&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&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;http&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&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;include&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;types&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;default_type&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;application&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;octet&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&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;client_max_body_size&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&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;client_body_buffer_size&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;512&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&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;sendfile&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;sendfile_max_chunk&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;tcp_nopush&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;tcp_nodelay&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;keepalive_timeout&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;65&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&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;types_hash_max_size&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4096&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&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;proxy_cache_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nginx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;proxy&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cache&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;levels&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;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;keys_zone&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cache_one&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;inactive&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;n&#34;&gt;d&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;max_size&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;500&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;proxy_cache&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cache_one&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;proxy_temp_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;proxy_temp_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;proxy_temp_file_write_size&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;128&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;proxy_next_upstream&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;error&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;timeout&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;invalid_header&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;http_500&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;http_503&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;http_404&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;proxy_buffer_size&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;proxy_busy_buffers_size&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;proxy_buffers&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;64&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&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;gzip&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;gzip_min_length&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;gzip_buffers&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;gzip_http_version&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;gzip_comp_level&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&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;gzip_types&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;n&#34;&gt;plain&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;application&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;javascript&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;application&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;javascript&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;n&#34;&gt;javascript&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;n&#34;&gt;css&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;application&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;xml&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;gzip_vary&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;gzip_proxied&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;expired&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;no&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cache&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;no&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;store&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;gzip_disable&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;MSIE [1-6]\.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&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;server_tokens&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;off&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&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;server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&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;listen&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;443&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ssl&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;http2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;server_name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xxx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;xxx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;xxx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;                        &lt;span class=&#34;c1&#34;&gt;# 域名&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&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;ssl_certificate&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;xxx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cert&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fullchain&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pem&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;        &lt;span class=&#34;c1&#34;&gt;# 证书路径&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;ssl_certificate_key&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;xxx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cert&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;privkey&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pem&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;ssl_protocols&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TLSv1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TLSv1&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&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;ssl_ciphers&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ECDHE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ECDSA&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AES128&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GCM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SHA256&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ECDHE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RSA&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AES128&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GCM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SHA256&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ECDHE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ECDSA&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AES256&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GCM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SHA384&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ECDHE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RSA&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AES256&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GCM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SHA384&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ECDHE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ECDSA&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CHACHA20&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;POLY1305&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ECDHE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RSA&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CHACHA20&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;POLY1305&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DHE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RSA&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AES128&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GCM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SHA256&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DHE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RSA&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AES256&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GCM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SHA384&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;ssl_prefer_server_ciphers&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;off&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;ssl_session_cache&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;shared&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SSL&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;ssl_session_timeout&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;d&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&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;location&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;proxy_pass&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;127.0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8080&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;proxy_set_header&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Host&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;host&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;proxy_set_header&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;X&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Real&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;IP&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;remote_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;proxy_set_header&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;X&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Forwarded&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;For&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;proxy_set_header&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;X&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Forwarded&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Proto&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scheme&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;location&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;notifications&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;hub&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&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;proxy_pass&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;127.0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3012&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;proxy_set_header&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Upgrade&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;http_upgrade&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;proxy_set_header&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Connection&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;upgrade&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;location&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;notifications&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;hub&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;negotiate&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&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;proxy_pass&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;127.0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8080&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;服务器配置文件&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9c%8d%e5%8a%a1%e5%99%a8%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;服务器配置文件&lt;/h2&gt;&lt;h3 id=&#34;服务器-nginxcof&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9c%8d%e5%8a%a1%e5%99%a8-nginxcof&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;服务器 nginx.cof&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-32&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;user&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;www&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;worker_processes&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;pid&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nginx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;include&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;etc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nginx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;modules&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enabled&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/*.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;conf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&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;events&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&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;worker_connections&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;768&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;# multi_accept on;&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;stream&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&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;map&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ssl_preread_server_name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&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;xxx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;techkoala&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;net&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;frps&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bitwarden&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;# Bitwarden 域名&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;xxx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;techkoala&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;net&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;trojan&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;           &lt;span class=&#34;c1&#34;&gt;# Trojan 域名&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;xxx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;techkoala&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;net&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rss&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;              &lt;span class=&#34;c1&#34;&gt;# FreshRSS 域名&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;xxx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;techkoala&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;net&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xtls&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;             &lt;span class=&#34;c1&#34;&gt;# Xray 域名&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&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;upstream&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;frps&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bitwarden&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&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;server&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;127.0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8080&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;         &lt;span class=&#34;c1&#34;&gt;# Bitwarden的 frps 端口&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&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;upstream&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;trojan&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&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;server&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;127.0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4443&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;         &lt;span class=&#34;c1&#34;&gt;# Trojan 本地监听端口&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&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;upstream&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rss&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&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;server&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;172.17&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;39955&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;       &lt;span class=&#34;c1&#34;&gt;# FreshRSS Docker IP 以及映射本地监听端口&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&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;upstream&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xtls&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&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;server&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;127.0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8443&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;       &lt;span class=&#34;c1&#34;&gt;# Xray 本地监听端口&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&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;server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&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;listen&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;443&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reuseport&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;listen&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[::]:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;443&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reuseport&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;proxy_pass&lt;/span&gt;	&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;ssl_preread&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;               &lt;span class=&#34;c1&#34;&gt;# 开启 ssl_preread&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;http&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;##&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;# Basic Settings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;##&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&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;sendfile&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;tcp_nopush&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;tcp_nodelay&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;keepalive_timeout&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;65&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;types_hash_max_size&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2048&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;# server_tokens off;&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&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;# server_names_hash_bucket_size 64;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;# server_name_in_redirect off;&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&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;include&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;etc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nginx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;types&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;default_type&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;application&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;octet&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&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;##&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;# SSL Settings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;##&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&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;ssl_protocols&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TLSv1&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TLSv1&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;n&#34;&gt;TLSv1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TLSv1&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;c1&#34;&gt;# Dropping SSLv3, ref: POODLE&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;ssl_prefer_server_ciphers&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&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;##&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;# Logging Settings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;##&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&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;access_log&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nginx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;access&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;error_log&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nginx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;error&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&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;##&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;# Gzip Settings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;##&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&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;gzip&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&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;# gzip_vary on;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;# gzip_proxied any;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;# gzip_comp_level 6;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;# gzip_buffers 16 8k;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;# gzip_http_version 1.1;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;&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&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;##&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;# Virtual Host Configs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c1&#34;&gt;##&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&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;include&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;etc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nginx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;conf&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;d&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/*.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;conf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;include&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;etc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nginx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sites&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enabled&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;c1&#34;&gt;# 启用的网站配置放置在此文件夹下&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&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;bitwarden-相关配置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#bitwarden-%e7%9b%b8%e5%85%b3%e9%85%8d%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Bitwarden 相关配置&lt;/h3&gt;&lt;h4 id=&#34;frpsini&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#frpsini&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;frps.ini&lt;/h4&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-33&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[common]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bind_port = xxxx                # 与本地 frpc 通信的端口
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vhost_https_port = xxxx         # 虚拟 https 端口，需要和 nginx.conf 内一致
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;authentication_method = token
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;token = xxxxxx                  # frp 验证密钥&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h4 id=&#34;bitwarden-nginx-站点配置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#bitwarden-nginx-%e7%ab%99%e7%82%b9%e9%85%8d%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Bitwarden Nginx 站点配置&lt;/h4&gt;&lt;p&gt;放置在&lt;code&gt;/etc/nginx/sites-available/&lt;/code&gt;下，文件与域名同名&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-34&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Bitwarden 配置。只负责只将 http 重定向至 https
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;## Bitwarden 的 SSL 握手交给本地服务器端的 Nginx 处理
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        listen 80;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        listen [::]:80;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        server_name xxx.techkoala.net;                    # Bitwarden 域名
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        return 301 https://xxx.techkoala.net$request_uri; # Bitwarden 域名
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;链接配置文件&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-35&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ln -s /etc/nginx/sites-available/xxx.techkoala.net /etc/nginx/sites-enabled/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;trojan-相关配置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#trojan-%e7%9b%b8%e5%85%b3%e9%85%8d%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Trojan 相关配置&lt;/h3&gt;&lt;h4 id=&#34;trojan-nginx-配置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#trojan-nginx-%e9%85%8d%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Trojan Nginx 配置&lt;/h4&gt;&lt;p&gt;放置在&lt;code&gt;/etc/nginx/sites-available/&lt;/code&gt;下，文件与域名同名&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-36&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    listen 127.0.0.1:80 default_server;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    server_name xxx.techkoala.net;             # 自己的域名
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    location / {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        proxy_pass https://www.digitalocean.com; # 伪装的网站
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    listen 127.0.0.1:80;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    server_name xxx.techkoala.net;                 # 自己服务器的 IP
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    return 301 https://xxx.techkoala.net$request_uri;  # 自己的域名
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    listen 0.0.0.0:80;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    listen [::]:80;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    server_name _;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    return 301 https://$host$request_uri;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;链接配置文件&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-37&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ln -s /etc/nginx/sites-available/xxx.techkoala.net /etc/nginx/sites-enabled/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h4 id=&#34;trojan-配置文件&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#trojan-%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Trojan 配置文件&lt;/h4&gt;&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-38&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;run_type&amp;#34;: &amp;#34;server&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;local_addr&amp;#34;: &amp;#34;0.0.0.0&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;local_port&amp;#34;: 4443,             # 本地监听端口，与 nginx.conf 保持一致
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;remote_addr&amp;#34;: &amp;#34;127.0.0.1&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;remote_port&amp;#34;: 80,              # 伪装站点的端口
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;password&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;xxxxxx&amp;#34;                    # 密钥
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;log_level&amp;#34;: 1,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;ssl&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;cert&amp;#34;: &amp;#34;/usr/local/etc/ssl/certificate.crt&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;key&amp;#34;: &amp;#34;/usr/local/etc/ssl/private.key&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;key_password&amp;#34;: &amp;#34;&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;cipher&amp;#34;: &amp;#34;ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;cipher_tls13&amp;#34;: &amp;#34;TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;prefer_server_cipher&amp;#34;: true,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;alpn&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &amp;#34;http/1.1&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;alpn_port_override&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &amp;#34;h2&amp;#34;: 81
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;reuse_session&amp;#34;: true,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;session_ticket&amp;#34;: false,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;session_timeout&amp;#34;: 600,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;plain_http_response&amp;#34;: &amp;#34;&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;curves&amp;#34;: &amp;#34;&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;dhparam&amp;#34;: &amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;tcp&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;prefer_ipv4&amp;#34;: false,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;no_delay&amp;#34;: true,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;keep_alive&amp;#34;: true,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;reuse_port&amp;#34;: false,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;fast_open&amp;#34;: false,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;fast_open_qlen&amp;#34;: 20
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;mysql&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;enabled&amp;#34;: false,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;server_addr&amp;#34;: &amp;#34;127.0.0.1&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;server_port&amp;#34;: 3306,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;database&amp;#34;: &amp;#34;trojan&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;username&amp;#34;: &amp;#34;trojan&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;password&amp;#34;: &amp;#34;&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;key&amp;#34;: &amp;#34;&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;cert&amp;#34;: &amp;#34;&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;ca&amp;#34;: &amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;freshrss-站点配置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#freshrss-%e7%ab%99%e7%82%b9%e9%85%8d%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;FreshRSS 站点配置&lt;/h3&gt;&lt;p&gt;放置在&lt;code&gt;/etc/nginx/sites-available/&lt;/code&gt;下，文件与域名同名&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-39&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        listen 80;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        listen [::]:80;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        server_name xxx.techkoala.net;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        return 301 https://xxx.techkoala.net$request_uri;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    listen 39955 ssl http2;          # FreshRSS 本地监听端口
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    #===注意，nginx 1.25.1之后这里需要修改为
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    listen 39955 ssl;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    http2 on;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    #===
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    server_name rss.techkoala.net;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ssl_certificate /etc/letsencrypt/live/xxx.techkoala.net/fullchain.pem;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ssl_certificate_key /etc/letsencrypt/live/xxx.techkoala.net/privkey.pem;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    location / {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       proxy_pass http://127.0.0.1:39954;   # 转发到 FreshRSS 容器映射的端口
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;链接配置文件&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-40&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ln -s /etc/nginx/sites-available/xxx.techkoala.net /etc/nginx/sites-enabled/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;xray&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#xray&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Xray&lt;/h3&gt;&lt;h4 id=&#34;xray-nginx-配置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#xray-nginx-%e9%85%8d%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Xray Nginx 配置&lt;/h4&gt;&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-41&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        listen 80;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        server_name xxx.techkoala.net;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        if ($host = xxxx.techkoala.net) {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                return 301 https://$host$request_uri;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        return 404;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        listen 127.0.0.1:23333;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        server_name xxxx.techkoala.net;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        location / {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                proxy_pass https://www.digitalocean.com; # 伪装的网站
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h4 id=&#34;xray-配置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#xray-%e9%85%8d%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Xray 配置&lt;/h4&gt;&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-42&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;log&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;loglevel&amp;#34;: &amp;#34;warning&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;inbounds&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &amp;#34;listen&amp;#34;: &amp;#34;127.0.0.1&amp;#34;, # 仅监听在本地防止探测到下面的 8443 端口
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &amp;#34;port&amp;#34;: 8443, # 这里的端口对应 nginx 主配置文件内的 upstream 端口
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &amp;#34;protocol&amp;#34;: &amp;#34;vless&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &amp;#34;settings&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &amp;#34;clients&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &amp;#34;id&amp;#34;: &amp;#34;7f46753a-6a4b-4284-94c0-760340f96f1e&amp;#34;, # 填写你的UUID
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &amp;#34;flow&amp;#34;: &amp;#34;xtls-rprx-direct&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &amp;#34;level&amp;#34;: 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &amp;#34;decryption&amp;#34;: &amp;#34;none&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &amp;#34;fallbacks&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &amp;#34;dest&amp;#34;: &amp;#34;23333&amp;#34; # 回落站点的端口号，与 Xray Nginx 配置一致
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                 ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &amp;#34;streamSettings&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &amp;#34;network&amp;#34;: &amp;#34;tcp&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &amp;#34;security&amp;#34;: &amp;#34;xtls&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &amp;#34;xtlsSettings&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &amp;#34;alpn&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &amp;#34;http/1.1&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &amp;#34;certificates&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                            &amp;#34;certificateFile&amp;#34;: &amp;#34;/usr/local/etc/ssl/fullchain.pem&amp;#34;, # 你的域名证书
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                            &amp;#34;keyFile&amp;#34;: &amp;#34;/usr/local/etc/ssl/privkey.pem&amp;#34; # 你的证书私钥
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;outbounds&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &amp;#34;protocol&amp;#34;: &amp;#34;freedom&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;防火墙设置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%98%b2%e7%81%ab%e5%a2%99%e8%ae%be%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;防火墙设置&lt;/h2&gt;&lt;p&gt;上述操作后，服务器需要打开&lt;code&gt;80&lt;/code&gt;,&lt;code&gt;443&lt;/code&gt;,&lt;code&gt;xxx&lt;/code&gt;（frp 通信端口）&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>OpenWRT 使用 dnscrypt-proxy2 实现 DoH 查询及分流</title>
      <link>https://www.techkoala.net/openwrt_doh/</link>
      <pubDate>Fri, 29 Jan 2021 20:36:35 +0800</pubDate>
      
      <guid>https://www.techkoala.net/openwrt_doh/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;OpenWRT 默认并不支持 DoH 或 DoT，存在 DNS 泄露问题，本文介绍如何 dnscrypt-proxy2 进行加密查询，以及如何与上网插件进行搭配使用&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;安裝-dnscrypt-proxy2&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%ae%89%e8%a3%9d-dnscrypt-proxy2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;安裝 dnscrypt-proxy2&lt;/h2&gt;&lt;p&gt;如果使用 OpenWrt 19.07+版本，那么直接使用 opkg 即可完成安装，命令如下：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-11&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;opkg update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;opkg install dnscrypt-proxy2&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;不过，版本可能不是最新，如果需要最新版本可以自行编译。&lt;/p&gt;
&lt;h2 id=&#34;配置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%85%8d%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;配置&lt;/h2&gt;&lt;p&gt;基本使用只需要&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-12&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim /etc/dnscrypt-proxy2/dnscrypt-proxy.toml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;修改&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-13&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;listen_addresses = [&amp;#39;127.0.0.1:5335&amp;#39;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-14&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;server_names = [&amp;#39;google&amp;#39;, &amp;#39;cloudflare&amp;#39;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;即可&lt;/p&gt;
&lt;p&gt;软件已经内置了常见的 DoH/DoT 服务器了，因此只需要填入名称即可&lt;/p&gt;
&lt;p&gt;然后&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-15&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/etc/init.d/dnscrypt-proxy restart&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;重启软件，dnscrypt-proxy2 就会监听在 5335 这个端口了。&lt;/p&gt;
&lt;h2 id=&#34;分流搭配-ssr&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%88%86%e6%b5%81%e6%90%ad%e9%85%8d-ssr&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;分流（搭配 SSR+）&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;SSR+ 使用大陆 IP 白名单 并使用 5335 的 DNS 解析的方式&lt;/li&gt;
&lt;li&gt;dnscyrpt-proxy2 配置监听在 5335，仅使用 DoH 协议向 &lt;code&gt;Cloudflare/Google&lt;/code&gt; 服务器查询（这些 &lt;code&gt;Https&lt;/code&gt; 的查询请求全部会被 SSR+ 代理转发）&lt;/li&gt;
&lt;li&gt;iptables 劫持所有目标为 53 端口的流量到路由器的 53 端口（默认）&lt;/li&gt;
&lt;li&gt;53 端口使用默认的 &lt;code&gt;dnsmasq&lt;/code&gt; 作为 &lt;code&gt;DNS&lt;/code&gt; 服务，上游设置为 &lt;code&gt;127.0.0.1#5335&lt;/code&gt;，配置文件&lt;code&gt;/etc/dnsmasq.conf&lt;/code&gt;最后添加 &lt;code&gt;conf-dir=/etc/dnsmasq.d&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在&lt;code&gt;/etc/dnsmasq.d/&lt;/code&gt;(如无则新建）中放入&lt;code&gt;https://github.com/felixonmars/dnsmasq-china-list/blob/master/accelerated-domains.china.conf&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样实现了凡是大陆的和在大陆有 cdn 的以及返回 AAAA 记录的域名全部直连查询并直连访问，其余的全部走代理查询，且结果在大陆以外的走代理访问（IP+域名的双白名单机制）&lt;/p&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;https://github.com/coolsnowwolf/lede/issues/2551&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;lede&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;https://github.com/DNSCrypt/dnscrypt-proxy/wiki/Installation-on-OpenWrt&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Installation on OpenWrt&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Vim 小技巧</title>
      <link>https://www.techkoala.net/vim_tips/</link>
      <pubDate>Tue, 19 Jan 2021 19:34:18 +0800</pubDate>
      
      <guid>https://www.techkoala.net/vim_tips/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;记录使用 Vim 时遇到实用的小技巧&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;全局命令-global&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%85%a8%e5%b1%80%e5%91%bd%e4%bb%a4-global&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;全局命令 g(lobal)&lt;/h2&gt;&lt;p&gt;vim 进入文件，命令行模式下执行&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-25&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;:[range]global[!]/{pattern}/{command}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;也即：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-26&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;:[range]g/pattern/command&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;[range] 指定文本范围，默认为整个文档&lt;/li&gt;
&lt;li&gt;pattern 在范围 range 内的行如果匹配 pattern，则执行 command&lt;/li&gt;
&lt;li&gt;! 表示取反，也就是不匹配的行，也可以使用 vglobal&lt;/li&gt;
&lt;li&gt;command 默认是打印文本&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tip1-范围匹配&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#tip1-%e8%8c%83%e5%9b%b4%e5%8c%b9%e9%85%8d&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Tip.1 范围匹配&lt;/h3&gt;&lt;p&gt;20 行到 200 行之间，每一行下插入空行&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-27&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;:20,200g/^/pu _&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;tip2-删除包含字符-pattern-的所有行&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#tip2-%e5%88%a0%e9%99%a4%e5%8c%85%e5%90%ab%e5%ad%97%e7%ac%a6-pattern-%e7%9a%84%e6%89%80%e6%9c%89%e8%a1%8c&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Tip.2 删除包含字符 pattern 的所有行&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-28&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;:g/pattern/d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;tip3-删除空白行&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#tip3-%e5%88%a0%e9%99%a4%e7%a9%ba%e7%99%bd%e8%a1%8c&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Tip.3 删除空白行&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-29&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;:g/^$/d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;tip4-删除不匹配的行&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#tip4-%e5%88%a0%e9%99%a4%e4%b8%8d%e5%8c%b9%e9%85%8d%e7%9a%84%e8%a1%8c&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Tip.4 删除不匹配的行&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-30&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;:g!/pattern/d
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;:v/pattern/d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;tip5-删除大量匹配行&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#tip5-%e5%88%a0%e9%99%a4%e5%a4%a7%e9%87%8f%e5%8c%b9%e9%85%8d%e8%a1%8c&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Tip.5 删除大量匹配行&lt;/h3&gt;&lt;p&gt;Vim 在删除操作时，会先把要删除的内容放到寄存器中，假如没有指定寄存器，会默认放到一个未命名的寄存器中。对于要删除大量匹配行的行为，可能导致 Vim 花一些时间处理这些拷贝。避免花费不必要的时间可以指定一个 blackhole 寄存器 _&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-31&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;:g/pattern/d_&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;tip6-移动匹配的行&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#tip6-%e7%a7%bb%e5%8a%a8%e5%8c%b9%e9%85%8d%e7%9a%84%e8%a1%8c&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Tip.6 移动匹配的行&lt;/h3&gt;&lt;p&gt;将所有匹配的行移动到文件的末尾&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-32&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;:g/pattern/m$&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;tip7-复制匹配的行&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#tip7-%e5%a4%8d%e5%88%b6%e5%8c%b9%e9%85%8d%e7%9a%84%e8%a1%8c&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Tip.7 复制匹配的行&lt;/h3&gt;&lt;p&gt;将所有匹配的行复制到文件末尾&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-33&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;:g/pattern/t$&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;tip8-复制到-register-a&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#tip8-%e5%a4%8d%e5%88%b6%e5%88%b0-register-a&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Tip.8 复制到 register a&lt;/h3&gt;&lt;p&gt;Vim 每个字母都是一个寄存器，所以使用全局命令也可以将内容复制到某一个寄存器，比如 a&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-34&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;qaq:g/pattern/y A&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;qaq 清空寄存器 a，qa 开始记录命令到 a 寄存器，q 停止记录&lt;/li&gt;
&lt;li&gt;y A 将匹配的行 A（append）追加到寄存器 a 中
存放到 a 寄存器之后就可以使用 &amp;ldquo;ap 来粘贴使用或者其他操作了&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tip9-反转文件中的每一行&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#tip9-%e5%8f%8d%e8%bd%ac%e6%96%87%e4%bb%b6%e4%b8%ad%e7%9a%84%e6%af%8f%e4%b8%80%e8%a1%8c&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Tip.9 反转文件中的每一行&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-35&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;:g/^/m0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;:g 命令一行行匹配，匹配第一行时将第一行 m0 放到文件顶部，第二行放到文件顶部，当跑完一遍之后整个文件的每一行就反转了&lt;/p&gt;
&lt;h3 id=&#34;tip10-在匹配行后添加文字&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#tip10-%e5%9c%a8%e5%8c%b9%e9%85%8d%e8%a1%8c%e5%90%8e%e6%b7%bb%e5%8a%a0%e6%96%87%e5%ad%97&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Tip.10 在匹配行后添加文字&lt;/h3&gt;&lt;p&gt;使用 s 命令可以实现，同样使用全局 g 命令也可以实现同样的效果&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-36&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;:g/pattern/s/$/mytext&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;To be continued&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] &lt;a href=&#34;http://einverne.github.io/post/2017/10/vim-global.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Vim 全局命令 g&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：功率控制</title>
      <link>https://www.techkoala.net/lte_power_control/</link>
      <pubDate>Mon, 02 Nov 2020 21:16:56 +0800</pubDate>
      
      <guid>https://www.techkoala.net/lte_power_control/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;LTE 功率控制&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;功率控制&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8a%9f%e7%8e%87%e6%8e%a7%e5%88%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;功率控制&lt;/h2&gt;&lt;p&gt;针对上行和下行信号的发送特点，物理层定义了相应的功率控制的机制。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;对于上行信号，终端的功率控制在&lt;strong&gt;节能&lt;/strong&gt;和&lt;strong&gt;抑制用户间干扰&lt;/strong&gt;的方面具有重要意义，所以，相应的采用&lt;strong&gt;闭环功率控制&lt;/strong&gt;的方式，控制终端在上行单载波符号上的发送功率。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对于下行信号，基站合理的功率分配和相互之间的协调能够&lt;strong&gt;抑制小区间的干扰&lt;/strong&gt;，提高组网的系统性能，所以，相应的采用&lt;strong&gt;开环功率分配&lt;/strong&gt;的机制，控制基站在下行各个子载波上的发送功率。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;上行功率控制&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8a%e8%a1%8c%e5%8a%9f%e7%8e%87%e6%8e%a7%e5%88%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;上行功率控制&lt;/h3&gt;&lt;p&gt;上行功率控制以&lt;strong&gt;各个终端为单位&lt;/strong&gt;，控制终端到达基站的接收功率，使得不同距离的用户都能以适当的功率到达基站，&lt;strong&gt;避免远近效应&lt;/strong&gt;。物理层上行采用&lt;strong&gt;部分功率控制&lt;/strong&gt;（Fractional Power Control）结合&lt;strong&gt;闭环功率控制&lt;/strong&gt;的方案，对无线链路的大尺度衰落和小尺度衰落进行补偿。&lt;/p&gt;
&lt;p&gt;在子帧 i，终端 &lt;code&gt;PUSCH&lt;/code&gt; 信道的发射功率可以表示为：&lt;/p&gt;
&lt;center&gt;$P_{PUSCH}(i)=min\{P_{CMAX},10log_{10}(M_{PUSCH}(i))+P_{O_{PUSCH}} (j)+α(j)·PL+∆TF (i)+f(i)\}[dBm]$&lt;/center&gt;
&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$P_{CMAX}$ 表示终端的最大发射功率&lt;/li&gt;
&lt;li&gt;$M_{PUSCH}(i)$ 表示 &lt;code&gt;PUSCH&lt;/code&gt; 的传输带宽（RB 数目）&lt;/li&gt;
&lt;li&gt;$PL$ 是终端测量得到的下行大尺度损耗&lt;/li&gt;
&lt;li&gt;$∆TF (i)$ 表示由调制编码方式和数据类型（控制信息或者数据信息）所确定的功率偏移量。&lt;/li&gt;
&lt;li&gt;$KS＝1.25$ 或者 0，表示是否针对不同的调制方式进行补偿&lt;/li&gt;
&lt;li&gt;$f(i)$ 是由终端闭环功率控制所形成的调整值。它的数值根据 &lt;code&gt;PDCCH Format0/3/3A&lt;/code&gt; 上的功率控制命令进行调整&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;物理层有两种闭环功率控制类型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;累计型（accumulation）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;绝对值型（absolute）&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;与上行数据调度相类似&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 &lt;code&gt;FDD&lt;/code&gt; 情况下，&lt;code&gt;PDCCH Format 0/3/3A&lt;/code&gt; 功率控制命令和相应的 &lt;code&gt;PUSCH&lt;/code&gt; 发送之间的时延是 4ms&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;TDD&lt;/code&gt; 情况下，该时延的数值根据上下行时间分配比例的不同而有所不同&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;与功率控制相结合，可以通过小区之间交换干扰情况的信息，进行协调的调度，抑制小区间的同频干扰，小区间 X2 接口上交互的信息有两种：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;过载指示（Overload Indicator，OI）&lt;/strong&gt;：指示本小区每个 &lt;code&gt;PRB&lt;/code&gt; 上受到的上行干扰情况。相邻小区通过交换该消息了解对方目前的负载情况，并进行适当的调整&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;干扰指示（High Interference Indicator，HII）&lt;/strong&gt;：指示本小区每个 PRB 对于上行干扰的敏感度情况。该消息反映了本小区的调度安排，相邻小区通过交换该信息了解对方将要采用的调度安排，并进行适当的调整以实现协调的调度。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;下行功率分配&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8b%e8%a1%8c%e5%8a%9f%e7%8e%87%e5%88%86%e9%85%8d&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;下行功率分配&lt;/h3&gt;&lt;p&gt;下行功率分配以每个 &lt;code&gt;RE&lt;/code&gt; 为单位，控制基站在&lt;strong&gt;各个时刻各个子载波&lt;/strong&gt;上的发射功率。&lt;/p&gt;
&lt;p&gt;下行功率分配中包括了&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;提高导频信号的发射功率（即 power boosting）&lt;/li&gt;
&lt;li&gt;用户调度相结合实现小区间干扰抑制的相关机制&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;小区公用导频信号（CRS）在频率上和时间上采用&lt;strong&gt;恒定&lt;/strong&gt;的发射功率，基站通过高层信令指示该发射功率的数值，在接收端，终端通过测量该信号的平均接收功率并与信令指示的发射功率进行比较，获得&lt;strong&gt;大尺度衰落&lt;/strong&gt;的数值。&lt;/p&gt;
&lt;p&gt;下行共享信道 &lt;code&gt;PDSCH&lt;/code&gt; 的发射功率表示为 &lt;code&gt;PDSCH RE&lt;/code&gt; 与 &lt;code&gt;CRS RE&lt;/code&gt; 的功率比值，即 $ρA$ 和 $ρB$ 。其中&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$ρA$ 表示时隙内&lt;strong&gt;不带有&lt;/strong&gt; &lt;code&gt;CRS&lt;/code&gt; 导频信号的 &lt;code&gt;OFDM&lt;/code&gt; 符号上（例如：2 天线、&lt;code&gt;Normal CP&lt;/code&gt; 的情况下，时隙内的第 1、2、3、5、6 个 &lt;code&gt;OFDM&lt;/code&gt; 符号），&lt;code&gt;PDSCH RE&lt;/code&gt; 与 &lt;code&gt;CRS RE&lt;/code&gt; 的功率比值&lt;/li&gt;
&lt;li&gt;$ρB$ 表示时隙内&lt;strong&gt;带有&lt;/strong&gt; &lt;code&gt;CRS&lt;/code&gt; 导频信号的 &lt;code&gt;OFDM&lt;/code&gt; 符号上（例如：2 天线、&lt;code&gt;Normal CP&lt;/code&gt; 的情况下，时隙内第 0、4 个 &lt;code&gt;OFDM&lt;/code&gt; 符号），&lt;code&gt;PDSCH RE&lt;/code&gt; 与 &lt;code&gt;CRS RE&lt;/code&gt; 的功率比值&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;提高-crs-导频信号的发射功率即-power-boosting&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%8f%90%e9%ab%98-crs-%e5%af%bc%e9%a2%91%e4%bf%a1%e5%8f%b7%e7%9a%84%e5%8f%91%e5%b0%84%e5%8a%9f%e7%8e%87%e5%8d%b3-power-boosting&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;提高 CRS 导频信号的发射功率（即 power boosting）&lt;/h4&gt;&lt;p&gt;小区通过高层信令指示 $\frac{ρB}{ρA}$，通过不同的比值可以设置导频信号在基站总功率中不同的开销比例，由此实现了不同程度地提高 &lt;code&gt;CRS&lt;/code&gt; 导频信号发射功率的功能。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;例：以发射天线数目等于 2 为例，支持 4 种不同的小区配置 $\frac{ρB}{ρA}=[\frac{5}{4},1,\frac{3}{4},\frac{1}{2}]$，分别对应于导频占总功率开销为$[\frac{1}{6}，\frac{1}{3}，\frac{3}{6}，\frac{2}{3}]$的情况。&lt;/p&gt;
&lt;p&gt;下图表示了 $\frac{ρB}{ρA} =1$ 和 $\frac{ρB}{ρA} =\frac{1}{2}$ 时天线端口 #0 的信号功率情况，分别实现了导频信号以 3dB 和 9dB 高于同一 &lt;code&gt;OFDM&lt;/code&gt; 符号中数据元素的发送功率。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_43.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_43.webp&#34;  data-sub-html=&#34;&lt;h2&gt;两种情况下天线端口 #0 的信号功率&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_43.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;两种情况下天线端口 #0 的信号功率&lt;/figcaption&gt;
    &lt;/figure&gt;

&lt;/blockquote&gt;&lt;h4 id=&#34;用户功率分配和小区间干扰协调&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%94%a8%e6%88%b7%e5%8a%9f%e7%8e%87%e5%88%86%e9%85%8d%e5%92%8c%e5%b0%8f%e5%8c%ba%e9%97%b4%e5%b9%b2%e6%89%b0%e5%8d%8f%e8%b0%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;用户功率分配和小区间干扰协调&lt;/h4&gt;&lt;p&gt;在指示 $\frac{ρB}{ρA}$ 的基础上，通过高层参数 $P_A$ 可以确定 $ρA$ 的具体数值，得到基站下行针对用户的 &lt;code&gt;PDSCH&lt;/code&gt; 发射功率，该信息将用于 &lt;code&gt;16QAM&lt;/code&gt;、&lt;code&gt;64QAM&lt;/code&gt; 和 &lt;code&gt;MU-MIMO&lt;/code&gt; 等需要幅度信息的检测过程。$P_A$ 和 $ρA$ 的数值关系是&lt;/p&gt;
&lt;center&gt;$ρ_A =δ_{power-offset} +P_A$&lt;/center&gt;
&lt;p&gt;其中 $δ_{power-offset}$ 用于 &lt;code&gt;MU-MIMO&lt;/code&gt; 的场景，例如 $δ_{power-offset} =−3dB$ 可以表示功率平均分配给两个用户的情况。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] LTE-Advanced 关键技术详解&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>告知你不为人知的 UDP —— 疑难杂症和使用</title>
      <link>https://www.techkoala.net/udp_intractable_diseases/</link>
      <pubDate>Mon, 26 Oct 2020 11:06:30 +0800</pubDate>
      
      <guid>https://www.techkoala.net/udp_intractable_diseases/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;UDP 说来简单，但是一些细节你都清楚吗？&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;注：本文系全文转载，原文信息如下：&lt;/p&gt;
&lt;p&gt;作者：贺嘉&lt;/p&gt;
&lt;p&gt;链接：https://zhuanlan.zhihu.com/p/25622691&lt;/p&gt;
&lt;p&gt;来源：知乎&lt;/p&gt;
&lt;p&gt;著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;udp-疑难杂症&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#udp-%e7%96%91%e9%9a%be%e6%9d%82%e7%97%87&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;UDP 疑难杂症&lt;/h2&gt;&lt;h3 id=&#34;udp-的传输方式面向报文&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#udp-%e7%9a%84%e4%bc%a0%e8%be%93%e6%96%b9%e5%bc%8f%e9%9d%a2%e5%90%91%e6%8a%a5%e6%96%87&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;UDP 的传输方式：面向报文&lt;/h3&gt;&lt;p&gt;面向报文的传输方式决定了 UDP 的数据发送方式是一份一份的，也就是应用层交给 UDP 多长的报文，UDP 就照样发送，即一次发送一个报文。那么 UDP 的报文大小由哪些影响因素呢？UDP 数据包的理论长度是多少，合适的 UDP 数据包应该是多少呢？&lt;/p&gt;
&lt;h4 id=&#34;udp-报文大小的影响因素主要有以下-3-个&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#udp-%e6%8a%a5%e6%96%87%e5%a4%a7%e5%b0%8f%e7%9a%84%e5%bd%b1%e5%93%8d%e5%9b%a0%e7%b4%a0%e4%b8%bb%e8%a6%81%e6%9c%89%e4%bb%a5%e4%b8%8b-3-%e4%b8%aa&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;UDP 报文大小的影响因素，主要有以下 3 个&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;UDP 协议本身，UDP 协议中有 16 位的 UDP 报文长度，那么 UDP 报文长度不能超过 $2^{16}=65536$.&lt;/li&gt;
&lt;li&gt;以太网(Ethernet)数据帧的长度，数据链路层的 MTU(最大传输单元)。&lt;/li&gt;
&lt;li&gt;socket 的 UDP 发送缓存区大小&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;udp-数据包最大长度&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#udp-%e6%95%b0%e6%8d%ae%e5%8c%85%e6%9c%80%e5%a4%a7%e9%95%bf%e5%ba%a6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;UDP 数据包最大长度&lt;/h4&gt;&lt;p&gt;根据 UDP 协议规范，UDP 数据包的最大理论长度为 65507 字节，计算方式如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;UDP 包头占用 8 字节&lt;/li&gt;
&lt;li&gt;IP 包头占用 20 字节&lt;/li&gt;
&lt;li&gt;UDP 协议中长度字段为 16 位，即 $2^{16} - 1 = 65535$ 字节&lt;/li&gt;
&lt;li&gt;因此最大理论长度为：65535 - 8 - 20 = 65507 字节&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果发送的数据包超过此长度限制，send 或 sendto 函数会返回错误码 1（Operation not permitted，Message too long）。此外，实际可发送的最大长度还受限于 UDP 发送缓冲区大小（Linux 系统下可通过 &lt;code&gt;cat /proc/sys/net/core/wmem_default&lt;/code&gt; 查看）。如果发送缓冲区小于要发送的数据包大小，同样会返回错误码 1（Operation not permitted，No buffer space available）。&lt;/p&gt;
&lt;h4 id=&#34;udp-数据包理想长度&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#udp-%e6%95%b0%e6%8d%ae%e5%8c%85%e7%90%86%e6%83%b3%e9%95%bf%e5%ba%a6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;UDP 数据包理想长度&lt;/h4&gt;&lt;p&gt;虽然 UDP 报文理论上可以达到 65507 字节，但在实际应用中应当考虑网络传输的效率和可靠性。为了减少 UDP 包在传输过程中被分片的风险，建议控制数据包大小不超过 MTU。&lt;/p&gt;
&lt;p&gt;以太网 MTU 通常为 1500 字节，考虑到 IP 头（20 字节）和 UDP 头（8 字节），建议将 UDP 数据包的大小控制在 1472 字节以内。考虑到互联网上的标准 MTU 值为 576 字节，在进行 Internet 的 UDP 编程时，建议将 UDP 数据长度控制在 548 字节（576-8-20）以内。&lt;/p&gt;
&lt;h3 id=&#34;udp-数据包的发送和接收问题&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#udp-%e6%95%b0%e6%8d%ae%e5%8c%85%e7%9a%84%e5%8f%91%e9%80%81%e5%92%8c%e6%8e%a5%e6%94%b6%e9%97%ae%e9%a2%98&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;UDP 数据包的发送和接收问题&lt;/h3&gt;&lt;h4 id=&#34;udp-的通信有界性&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#udp-%e7%9a%84%e9%80%9a%e4%bf%a1%e6%9c%89%e7%95%8c%e6%80%a7&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;UDP 的通信有界性&lt;/h4&gt;&lt;p&gt;在阻塞模式下，UDP 的通信是以数据包作为界限的，即使 Server 端的缓冲区再大也要按照 Client 发包的次数来多次接收数据包，Server 只能一次一次的接收，Client 发送多少次，Server 就需接收多少次，即客户端分几次发送过来，服务端就必须按几次接收。&lt;/p&gt;
&lt;h4 id=&#34;udp-数据包的无序性和非可靠性&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#udp-%e6%95%b0%e6%8d%ae%e5%8c%85%e7%9a%84%e6%97%a0%e5%ba%8f%e6%80%a7%e5%92%8c%e9%9d%9e%e5%8f%af%e9%9d%a0%e6%80%a7&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;UDP 数据包的无序性和非可靠性&lt;/h4&gt;&lt;p&gt;Client 依次发送 1、2、3 三个 UDP 数据包，Server 端先后调用 3 次接收函数，可能会依次收到 3、2、1 次序的数据包，收包可能是 1、2、3 的任意排列组合，也可能丢失一个或多个数据包。&lt;/p&gt;
&lt;h4 id=&#34;udp-数据包的接收&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#udp-%e6%95%b0%e6%8d%ae%e5%8c%85%e7%9a%84%e6%8e%a5%e6%94%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;UDP 数据包的接收&lt;/h4&gt;&lt;p&gt;Client 发送两次 UDP 数据，第一次 500 字节，第二次 300 字节，Server 端阻塞模式下接包，第一次 recvfrom( 1000 )，收到是 1000，还是 500，还是 300，还是其他？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;由于 UDP 通信的有界性，接收到只能是 500 或 300，又由于 UDP 的无序性和非可靠性，接收到可能是 300，也可能是 500，也可能一直阻塞在 recvfrom 调用上，直到超时返回(也就是什么也收不到)。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在假定数据包是不丢失并且是按照发送顺序按序到达的情况下，Server 端阻塞模式下接包，先后三次调用：recvfrom( 200)，recvfrom( 1000)，recvfrom( 1000)，接收情况如何呢？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;由于 UDP 通信的有界性，第一次 recvfrom( 200)将接收第一个 500 字节的数据包，但是因为用户空间 buf 只有 200 字节，于是只会返回前面 200 字节，剩下 300 字节将丢弃。第二次 recvfrom( 1000)将返回 300 字节，第三次 recvfrom( 1000)将会阻塞。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;udp-包分片问题&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#udp-%e5%8c%85%e5%88%86%e7%89%87%e9%97%ae%e9%a2%98&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;UDP 包分片问题&lt;/h4&gt;&lt;p&gt;如果 MTU 是 1500，Client 发送一个 8000 字节大小的 UDP 包，那么 Server 端阻塞模式下接包，在不丢包的情况下，recvfrom(9000)是收到 1500，还是 8000。如果某个 IP 分片丢失了，recvfrom(9000)，又返回什么呢？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;根据 UDP 通信的有界性，在 buf 足够大的情况下，接收到的一定是一个完整的数据包，UDP 数据在下层的分片和组片问题由 IP 层来处理，提交到 UDP 传输层一定是一个完整的 UDP 包，那么 recvfrom(9000)将返回 8000。如果某个 IP 分片丢失，UDP 里有个 CRC 检验，如果包不完整就会丢弃，也不会通知是否接收成功，所以 UDP 是不可靠的传输协议，那么 recvfrom(9000)将阻塞。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;udp-丢包问题&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#udp-%e4%b8%a2%e5%8c%85%e9%97%ae%e9%a2%98&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;UDP 丢包问题&lt;/h3&gt;&lt;p&gt;在不考虑 UDP 下层 IP 层的分片丢失，CRC 检验包不完整的情况下，造成 UDP 丢包的因素有哪些呢？&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;UDP socket 缓冲区满造成的 UDP 丢包&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;通过 &lt;code&gt;cat /proc/sys/net/core/rmem_default&lt;/code&gt; 和 &lt;code&gt;cat /proc/sys/net/core/rmem_max&lt;/code&gt; 可以查看 socket 缓冲区的缺省值和最大值。如果 socket 缓冲区满了，应用程序没来得及处理在缓冲区中的 UDP 包，那么后续来的 UDP 包会被内核丢弃，造成丢包。在 socket 缓冲区满造成丢包的情况下，可以通过增大缓冲区的方法来缓解 UDP 丢包问题。但是，如果服务已经过载了，简单的增大缓冲区并不能解决问题，反而会造成滚雪球效应，造成请求全部超时，服务不可用。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;UDP socket 缓冲区过小造成的 UDP 丢包&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;如果 Client 发送的 UDP 报文很大，而 socket 缓冲区过小无法容下该 UDP 报文，那么该报文就会丢失。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;ARP 缓存过期导致 UDP 丢包&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ARP 的缓存时间约 10 分钟，APR 缓存列表没有对方的 MAC 地址或缓存过期的时候，会发送 ARP 请求获取 MAC 地址，在没有获取到 MAC 地址之前，用户发送出去的 UDP 数据包会被内核缓存到 arp_queue 这个队列中，默认最多缓存 3 个包，多余的 UDP 包会被丢弃。&lt;/p&gt;
&lt;p&gt;被丢弃的 UDP 包可以从 &lt;code&gt;/proc/net/stat/arp_cache&lt;/code&gt; 的最后一列的 &lt;code&gt;unresolved_discards&lt;/code&gt; 看到。当然我们可以通过 &lt;code&gt;echo 30 &amp;gt; /proc/sys/net/ipv4/neigh/eth1/unres_qlen&lt;/code&gt; 来增大可以缓存的 UDP 包。UDP 的丢包信息可以从 &lt;code&gt;cat /proc/net/udp&lt;/code&gt; 的最后一列 drops 中得到，而倒数第四列 inode 是丢失 UDP 数据包的 socket 的全局唯一的虚拟 i 节点号，可以通过这个 inode 号结合 &lt;code&gt;lsof(lsof -P -n | grep 25445445)&lt;/code&gt;来查到具体的进程。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;udp-冗余传输&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#udp-%e5%86%97%e4%bd%99%e4%bc%a0%e8%be%93&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;UDP 冗余传输&lt;/h3&gt;&lt;p&gt;在外网通信链路不稳定的情况下，有什么办法可以降低 UDP 的丢包率呢？&lt;/p&gt;
&lt;p&gt;一个简单的办法来采用&lt;strong&gt;冗余传输&lt;/strong&gt;的方式。一般采用较多的是延时双发，双发指的是将原本单发的前后连续的两个包合并成一个大包发送，这样发送的数据量是原来的两倍。这种方式提高丢包率的原理比较简单，例如本例的冗余发包方式，在偶数包全丢的情况下，依然能够还原出完整的数据，也就是在这种情况下，50% 的丢包率，依然能够达到 100% 的数据接收。&lt;/p&gt;
&lt;h2 id=&#34;udp-真的比-tcp-要高效吗&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#udp-%e7%9c%9f%e7%9a%84%e6%af%94-tcp-%e8%a6%81%e9%ab%98%e6%95%88%e5%90%97&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;UDP 真的比 TCP 要高效吗&lt;/h2&gt;&lt;p&gt;相信很多同学都认为 UDP 无连接，无需重传和处理确认，UDP 比较高效。然而 UDP 在大多情况下并不一定比 TCP 高效，TCP 发展至今天，为了适应各种复杂的网络环境，其算法已经非常丰富，协议本身经过了很多优化，如果能够合理配置 TCP 的各种参数选项，那么在多数的网络环境下 TCP 是要比 UDP 更高效的。&lt;/p&gt;
&lt;h3 id=&#34;影响-udp-高效因素&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%bd%b1%e5%93%8d-udp-%e9%ab%98%e6%95%88%e5%9b%a0%e7%b4%a0&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;影响 UDP 高效因素&lt;/h3&gt;&lt;h4 id=&#34;无法智能利用空闲带宽导致资源利用率低&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%97%a0%e6%b3%95%e6%99%ba%e8%83%bd%e5%88%a9%e7%94%a8%e7%a9%ba%e9%97%b2%e5%b8%a6%e5%ae%bd%e5%af%bc%e8%87%b4%e8%b5%84%e6%ba%90%e5%88%a9%e7%94%a8%e7%8e%87%e4%bd%8e&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;无法智能利用空闲带宽导致资源利用率低&lt;/h4&gt;&lt;p&gt;一个简单的事实是 UDP 并不会受到 MTU 的影响，MTU 只会影响下层的 IP 分片，对此 UDP 一无所知。在极端情况下，UDP 每次都是发小包，包是 MTU 的几百分之一，这样就造成 UDP 包的有效数据占比较小(UDP 头的封装成本)；或者，UDP 每次都是发巨大的 UDP 包，包大小 MTU 的几百倍，这样会造成下层 IP 层的大量分片，大量分片的情况下，其中某个分片丢失了，就会导致整个 UDP 包的无效。由于网络情况是动态变化的，UDP 无法根据变化进行调整，发包过大或过小，从而导致带宽利用率低下，有效吞吐量较低。而 TCP 有一套智能算法，当发现数据必须积攒的时候，就说明此时不积攒也不行，TCP 的复杂算法会在延迟和吞吐量之间达到一个很好的平衡。&lt;/p&gt;
&lt;h4 id=&#34;无法动态调整发包&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%97%a0%e6%b3%95%e5%8a%a8%e6%80%81%e8%b0%83%e6%95%b4%e5%8f%91%e5%8c%85&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;无法动态调整发包&lt;/h4&gt;&lt;p&gt;由于 UDP 没有确认机制，没有流量控制和拥塞控制，这样在网络出现拥塞或通信两端处理能力不匹配的时候，UDP 并不会进行调整发送速率，从而导致大量丢包。在丢包的时候，不合理的简单重传策略会导致重传风暴，进一步加剧网络的拥塞，从而导致丢包率雪上加霜。更加严重的是，UDP 的无秩序性和自私性，一个疯狂的 UDP 程序可能会导致这个网络的拥塞，挤压其他程序的流量带宽，导致所有业务质量都下降。&lt;/p&gt;
&lt;h4 id=&#34;改进-udp-的成本较高&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%94%b9%e8%bf%9b-udp-%e7%9a%84%e6%88%90%e6%9c%ac%e8%be%83%e9%ab%98&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;改进 UDP 的成本较高&lt;/h4&gt;&lt;p&gt;可能有同学想到针对 UDP 的一些缺点，在用户态做些调整改进，添加上简单的重传和动态发包大小优化。然而，这样的改进并比简单的，UDP 编程可是比 TCP 要难不少的，考虑到改造成本，为什么不直接用 TCP 呢？当然可以拿开源的一些实现来抄一下(例如：libjingle)，或者拥抱一下 Google 的 QUIC 协议，然而，这些都需要不少成本的。&lt;/p&gt;
&lt;p&gt;上面说了这么多，难道真的不该用 UDP 了吗？其实也不是的，在某些场景下，我们还是必须 UDP 才行的。那么 UDP 的较为合适的使用场景是哪些呢？&lt;/p&gt;
&lt;h2 id=&#34;udp-的使用场合&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#udp-%e7%9a%84%e4%bd%bf%e7%94%a8%e5%9c%ba%e5%90%88&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;UDP 的使用场合&lt;/h2&gt;&lt;h3 id=&#34;通信实时性和持续性&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%80%9a%e4%bf%a1%e5%ae%9e%e6%97%b6%e6%80%a7%e5%92%8c%e6%8c%81%e7%bb%ad%e6%80%a7&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;通信实时性和持续性&lt;/h3&gt;&lt;p&gt;在分组交换通信当中，协议栈的成本主要表现在以下两方面：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;封装带来的空间复杂度&lt;/li&gt;
&lt;li&gt;缓存带来的时间复杂度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上两者是对立影响的，如果想减少封装消耗，那么就必须缓存用户数据到一定量在一次性封装发送出去，这样每个协议包的有效载荷将达到最大化，这无疑是节省了带宽空间，带宽利用率较高，但是延时增大了。如果想降低延时，那么就需要将用户数据立马封装发出去，这样显然会造成消耗更多的协议头等消耗，浪费带宽空间。&lt;/p&gt;
&lt;p&gt;因此，我们进行协议选择的时候，需要重点考虑一下&lt;strong&gt;空间复杂度&lt;/strong&gt;和&lt;strong&gt;时间复杂度&lt;/strong&gt;间的平衡。&lt;/p&gt;
&lt;p&gt;通信的持续性对两者的影响比较大，根据通信的持续性有两种通信类型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;短连接通信&lt;/li&gt;
&lt;li&gt;长连接通信&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于短连接通信，一方面如果业务只需要发一两个包并且对丢包有一定的容忍度，同时业务自己有简单的轮询或重复机制，那么采用 UDP 会较为好些。在这样的场景下，如果用 TCP，仅仅握手就需要 3 个包，这样显然有点不划算，一个典型的例子是 DNS 查询。另一方面，如果业务实时性要求非常高，并且不能忍受重传，那么首先就是 UDP 了或者只能用 UDP 了，例如 NTP 协议，重传 NTP 消息纯属添乱(为什么呢？重传一个过期的时间包过来，还不如发一个新的 UDP 包同步新的时间过来)。如果 NTP 协议采用 TCP，撇开握手消耗较多数据包交互的问题，由于 TCP 受 Nagel 算法等影响，用户数据会在一定情况下会被内核缓存延后发送出去，这样时间同步就会出现比较大的偏差，协议将不可用。&lt;/p&gt;
&lt;h3 id=&#34;多点通信&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%a4%9a%e7%82%b9%e9%80%9a%e4%bf%a1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;多点通信&lt;/h3&gt;&lt;p&gt;对于一些多点通信的场景，如果采用有连接的 TCP，那么就需要和多个通信节点建立其双向连接，然后有时在 NAT 环境下，两个通信节点建立其直接的 TCP 连接不是一个容易的事情，在涉及 NAT 穿越的时候，UDP 协议的无连接性使得穿透成功率更高(原因详见：由于 UDP 的无连接性，那么其完全可以向一个组播地址发送数据或者轮转地向多个目的地持续发送相同的数据，从而更为容易实现多点通信。)&lt;/p&gt;
&lt;p&gt;一个典型的场景是多人实时音视频通信，这种场景下实时性要求比较高，可以容忍一定的丢包率。比如：对于音频，对端连续发送 p1、p2、p3 三个包，另一端收到了 p1 和 p3，在没收到 p2 的保持 p1 的最后一个音（也是为什么有时候网络丢包就会听到嗞嗞嗞嗞嗞嗞…或者卟卟卟卟卟卟卟卟…重音的原因），等到到 p3 就接着播 p3 了，不需要也不能补帧，一补就越来越大的延时。对于这样的场景就比较合适用 UDP 了，如果采用 TCP，那么在出现丢包的时候，就可能会出现比较大的延时。&lt;/p&gt;
&lt;h3 id=&#34;udp-使用原则&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#udp-%e4%bd%bf%e7%94%a8%e5%8e%9f%e5%88%99&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;UDP 使用原则&lt;/h3&gt;&lt;p&gt;通常情况下，UDP 的使用范围是较小的，在以下的场景下，使用 UDP 才是明智的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;实时性要求很高，并且几乎不能容忍重传。例子：NTP 协议，实时音视频通信，多人动作类游戏中人物动作、位置&lt;/li&gt;
&lt;li&gt;TCP 实在不方便实现多点传输的情况&lt;/li&gt;
&lt;li&gt;需要进行 NAT 穿越&lt;/li&gt;
&lt;li&gt;对网络状态很熟悉，确保 UDP 网络中没有氓流行为，例如疯狂抢带宽&lt;/li&gt;
&lt;li&gt;熟悉 UDP 编程&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] &lt;a href=&#34;http://blog.csdn.net/dog250/article/details/6896949http://blog.csdn.net/dog250/article/details/6896949&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Netfilter,iptables/OpenVPN/TCP guard&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>DNS 报文详解</title>
      <link>https://www.techkoala.net/dns/</link>
      <pubDate>Tue, 20 Oct 2020 13:24:18 +0800</pubDate>
      
      <guid>https://www.techkoala.net/dns/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;本文主要讲解 DNS 的报文结构&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;dns-简介&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#dns-%e7%ae%80%e4%bb%8b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;DNS 简介&lt;/h2&gt;&lt;p&gt;DNS（域名系统）负责将我们熟知的域名翻译成 IP 地址，其相关定义由 RFC 1034 和 RFC 1035 给出。&lt;/p&gt;
&lt;p&gt;为了实现更好的扩展性，DNS 采用分层次的服务器组织结构，主要分为三层：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;根 DNS 服务器&lt;/li&gt;
&lt;li&gt;顶级域名（TLD）DNS 服务器&lt;/li&gt;
&lt;li&gt;权威 DNS 服务器&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这些服务器的层次结构如下图所示：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/DNS_Level.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/DNS_Level.webp&#34;  data-sub-html=&#34;&lt;h2&gt;DNS 的层次结构&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/DNS_Level.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;DNS 的层次结构&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;关于 DNS 的工作过程及相关信息，请参见&lt;a href=&#34;https://www.techkoala.net/dns_update/&#34; rel=&#34;&#34;&gt;深入浅出 DNS 解析&lt;/a&gt;，本文主要介绍 DNS 报文结构。&lt;/p&gt;
&lt;h3 id=&#34;dns-报文结构&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#dns-%e6%8a%a5%e6%96%87%e7%bb%93%e6%9e%84&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;DNS 报文结构&lt;/h3&gt;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/DNS_Structure.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/DNS_Structure.webp&#34;  data-sub-html=&#34;&lt;h2&gt;DNS 的报文结构&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/DNS_Structure.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;DNS 的报文结构&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;DNS 报文包含以下几个部分：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;首部&lt;/strong&gt;（前 12 个字节）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标识符&lt;/strong&gt;（2 字节）：用于标识请求及其响应报文&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;标志&lt;/strong&gt;（2 字节）：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;QR&lt;/strong&gt;（1 bit）：查询/响应标志，&lt;code&gt;0&lt;/code&gt; 表示查询，&lt;code&gt;1&lt;/code&gt; 表示响应&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;opcode&lt;/strong&gt;（4 bit）：操作码
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;0&lt;/code&gt;：标准查询&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1&lt;/code&gt;：反向查询&lt;/li&gt;
&lt;li&gt;&lt;code&gt;2&lt;/code&gt;：服务器状态请求&lt;/li&gt;
&lt;li&gt;&lt;code&gt;[3,15]&lt;/code&gt;：保留值&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AA&lt;/strong&gt;（1 bit）：授权回答标志，表示响应服务器是否为域名的权威服务器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TC&lt;/strong&gt;（1 bit）：截断标志，表示报文是否因超过长度而被截断&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RD&lt;/strong&gt;（1 bit）：期望递归标志，由请求方设置，响应方返回相同值&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RA&lt;/strong&gt;（1 bit）：支持递归标志，由响应方设置，表示是否支持递归查询&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;rcode&lt;/strong&gt;（4 bit）：返回码
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;0&lt;/code&gt;：无错误&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1&lt;/code&gt;：格式错误&lt;/li&gt;
&lt;li&gt;&lt;code&gt;2&lt;/code&gt;：服务器失败&lt;/li&gt;
&lt;li&gt;&lt;code&gt;3&lt;/code&gt;：域名不存在&lt;/li&gt;
&lt;li&gt;&lt;code&gt;4&lt;/code&gt;：查询类型不支持&lt;/li&gt;
&lt;li&gt;&lt;code&gt;5&lt;/code&gt;：查询被拒绝&lt;/li&gt;
&lt;li&gt;&lt;code&gt;[6,15]&lt;/code&gt;：保留值&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;数量字段&lt;/strong&gt;（8 字节）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Questions：查询问题数量&lt;/li&gt;
&lt;li&gt;Answers：回答数量&lt;/li&gt;
&lt;li&gt;Authoritative nameservers：授权域名服务器数量&lt;/li&gt;
&lt;li&gt;Additional records：附加信息数量&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;（Questions）部分包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;查询的域名 8bit 为单位，长度不受限&lt;/li&gt;
&lt;li&gt;查询的协议类型 16bit&lt;/li&gt;
&lt;li&gt;查询的类 16bit&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;回答&lt;/strong&gt;（Answers）/&lt;strong&gt;权威&lt;/strong&gt;（Authoritys）/&lt;strong&gt;附加&lt;/strong&gt;（Additionals）部分格式相同：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NAME&lt;/strong&gt; 资源记录包含的域名.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TYPE&lt;/strong&gt; 表示 DNS 协议的类型.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CLASS&lt;/strong&gt; 表示 RDATA 的类.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TTL&lt;/strong&gt; 4 字节无符号整数表示资源记录可以缓存的时间。0 代表只能被传输，但是不能被缓存。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RDLENGTH&lt;/strong&gt; 2 个字节无符号整数表示 RDATA 的长度&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RDATA&lt;/strong&gt; 不定长字符串来表示记录，格式根 TYPE 和 CLASS 有关。比如，TYPE 是 A，CLASS 是 IN，那么 RDATA 就是一个 4 个字节的 ARPA 网络地址。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;rrs-说明&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#rrs-%e8%af%b4%e6%98%8e&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;RRs 说明&lt;/h2&gt;&lt;p&gt;每个 DNS 响应报文包含一条或者多条资源记录（resource records ，RRs），资源记录包含下列字段的 4 元组：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-7&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;（Name，Value，Type，TTL）&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;其中 TTL 表示生存时间，决定了资源记录应该从缓存中删除的时间。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果是 Type=A，Name 为主机名，Value 是对应的 IP 地址（如 bar.foo.com，xxx.xxx.xxx.xxx，A）&lt;/li&gt;
&lt;li&gt;如果是 Type=NS，Name 为一个域（如 foo.com），Value 是知道如何获取该域中的主机 IP 地址的权威 DNS 服务器的主机名（如 foo.com，dns.foo.com，NS）&lt;/li&gt;
&lt;li&gt;如果是 Type=CNAME，Value 是别名为 Name 的主机对应的规范主机名。（如 foo.com，relay1.bar.foo.com，CNAME）&lt;/li&gt;
&lt;li&gt;如果是 Type=MX，Value 是别名为 Name 的邮件服务器对应的规范主机名。（如 foo.com，mail.bar.foo.com，MX）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;实例&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%ae%9e%e4%be%8b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;实例&lt;/h2&gt;&lt;p&gt;这里我们使用 WireShark 抓包实际看看，启动 WireShark 时可以设置捕获过滤器为：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-8&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;udp port 53&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;这样我们只抓取通过 UDP 53 端口的 DNS 请求，此外如果需要仅仅显示特定的 DNS 查询，还可以进一步应用显示过滤器，例如这里我们仅查看&lt;code&gt;www.techkoala.top&lt;/code&gt;的查询记录，则显示过滤器设置为：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-9&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dns.qry.name==www.techkoala.top&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Request_16.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Request_16.webp&#34;  data-sub-html=&#34;&lt;h2&gt;16 进制表示&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Request_16.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;16 进制表示&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Request.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Request.webp&#34;  data-sub-html=&#34;&lt;h2&gt;WireShark 中 DNS 请求报文及其结构&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Request.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;WireShark 中 DNS 请求报文及其结构&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;可以看出&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;标识为：0x0000cd13&lt;/li&gt;
&lt;li&gt;这是一个请求报文，仅在 Questions 部分有值&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Request_Flags.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Request_Flags.webp&#34;  data-sub-html=&#34;&lt;h2&gt;标志部分各个字段的值：&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Request_Flags.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;标志部分各个字段的值：&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Request_Queries.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Request_Queries.webp&#34;  data-sub-html=&#34;&lt;h2&gt;查询部分各个字段的值&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Request_Queries.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;查询部分各个字段的值&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;同时 WireShark 还贴心的告诉我们，响应报文的在总抓取包的编号为 10，方便我们快速找到请求报文对应的响应报文。&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Response_16.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Response_16.webp&#34;  data-sub-html=&#34;&lt;h2&gt;16 进制表示&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Response_16.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;16 进制表示&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Response.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Response.webp&#34;  data-sub-html=&#34;&lt;h2&gt;WireShark 中 DNS 响应报文及其结构&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Response.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;WireShark 中 DNS 响应报文及其结构&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Response_Flags.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Response_Flags.webp&#34;  data-sub-html=&#34;&lt;h2&gt;标志部分各个字段的值&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Response_Flags.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;标志部分各个字段的值&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Response_Queries.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Response_Queries.webp&#34;  data-sub-html=&#34;&lt;h2&gt;查询部分各个字段的值&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/DNS/Response_Queries.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;查询部分各个字段的值&lt;/figcaption&gt;
    &lt;/figure&gt;&lt;/p&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] Computer Networking A Top-Down Approach&lt;/li&gt;
&lt;li&gt;[2] &lt;a href=&#34;https://juejin.im/post/6844903582441963527&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;DNS 请求报文详解&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>ARP &amp; RARP 详解</title>
      <link>https://www.techkoala.net/arp_rarp/</link>
      <pubDate>Fri, 16 Oct 2020 15:56:34 +0800</pubDate>
      
      <guid>https://www.techkoala.net/arp_rarp/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;ARP 以及 RARP 如何工作？&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;为什么要有-mac-地址&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%ba%e4%bb%80%e4%b9%88%e8%a6%81%e6%9c%89-mac-%e5%9c%b0%e5%9d%80&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;为什么要有 MAC 地址？&lt;/h2&gt;&lt;p&gt;在说明 ARP 以及 RARP 之前，有必要首先说一下 MAC 地址的必要性。&lt;/p&gt;
&lt;p&gt;引用《Computer Networking A Top-Down Approach》中的描述：&lt;/p&gt;
&lt;div class=&#34;details admonition quote open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;KEEPING THE LAYERS INDEPENDENT&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;There are several reasons why hosts and router interfaces have MAC addresses in addition to network-layer addresses. First, LANs are designed for arbitrary network-layer protocols, not just for IP and the Internet. If adapters were assigned IP addresses rather than “neutral” MAC addresses, then adapters would not easily be able to support other network-layer protocols (for example, IPX or DECnet). Second, if adapters were to use network-layer addresses instead of MAC addresses, the network-layer address would have to be stored in the adapter RAM and reconfigured every time the adapter was moved (or powered up). Another option is to not use any addresses in the adapters and have each adapter pass the data (typically, an IP datagram) of each frame it receives up the protocol stack. The network layer could then check for a matching network-layer address. One problem with this option is that the host would be interrupted by every frame sent on the LAN, including by frames that were destined for other hosts on the same broadcast LAN. In summary, in order for the layers to be largely independent building blocks in a network architecture, different layers need to have their own addressing scheme. We have now seen three types of addresses: host names for the application layer, IP addresses for the network layer, and
MAC addresses for the link layer.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;简单来说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;局域网不仅仅为 IP 和因特网设计，MAC 地址的“中立性”为各种网络层协议（比如 IPX 或者 DECnet)提供了灵活的施展空间&lt;/li&gt;
&lt;li&gt;网络层地址往往是动态的，每次更换网络或者重启都需要对适配器进行重新配置&lt;/li&gt;
&lt;li&gt;如果取消 MAC 地址，让适配器把收到的每帧都往上层传递，就会带来一个问题：主机会去处理局域网中的每个帧，即使这个帧不属于自己，这就带来了不必要的消耗。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;arp&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#arp&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;ARP&lt;/h2&gt;&lt;p&gt;一句话概括 ARP（Address Resolution Protocol，地址解析协议）的目的就是：负责将&lt;strong&gt;网络层地址&lt;/strong&gt;（最常见的就是 IP 地址）解析为/映射到&lt;strong&gt;链路层地址&lt;/strong&gt;（MAC 地址）。&lt;/p&gt;
&lt;h3 id=&#34;报文结构&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%8a%a5%e6%96%87%e7%bb%93%e6%9e%84&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;报文结构&lt;/h3&gt;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/ARP_RARP/ARP.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/ARP_RARP/ARP.webp&#34;  data-sub-html=&#34;&lt;h2&gt;ARP 包结构&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/ARP_RARP/ARP.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;ARP 包结构&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;一般我们讨论以太网中的 ARP 报文时候，ARP 数据会被封装在以太网报文中，其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;以太网报文：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;目标以太网地址&lt;/strong&gt;：目标 MAC 地址，FF:FF:FF:FF:FF:FF （二进制全 1）为广播地址&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;源以太网地址&lt;/strong&gt;：发送方 MAC 地址&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;帧类型&lt;/strong&gt;：以太类型，&lt;strong&gt;ARP 为 0x0806&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ARP 报文数据：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;硬件类型&lt;/strong&gt;：如以太网（0x0001）、分组无线网&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;协议类型&lt;/strong&gt;：如网际协议(IP)（0x0800）、IPv6（0x86DD）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;硬件地址长度&lt;/strong&gt;：每种硬件地址的字节长度，一般为 6（以太网）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;协议地址长度&lt;/strong&gt;：每种协议地址的字节长度，一般为 4（IPv4）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;操作码 OP&lt;/strong&gt;：1 为 ARP 请求，2 为 ARP 应答，3 为 RARP 请求，4 为 RARP 应答&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;源硬件地址&lt;/strong&gt;：n 个字节，n 由硬件地址长度得到，一般为发送方 MAC 地址&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;源协议地址&lt;/strong&gt;：m 个字节，m 由协议地址长度得到，一般为发送方 IP 地址&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;目标硬件地址&lt;/strong&gt;：n 个字节，n 由硬件地址长度得到，一般为目标 MAC 地址&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;目标协议地址&lt;/strong&gt;：m 个字节，m 由协议地址长度得到，一般为目标 IP 地址&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;工作原理&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%b7%a5%e4%bd%9c%e5%8e%9f%e7%90%86&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;工作原理&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;每台主机都会在自己的 ARP 缓冲区（ARP Cache）中建立一个 ARP 列表，表示 IP 地址和 MAC 地址的对应关系。&lt;/li&gt;
&lt;li&gt;当源主机需要将一个数据包要发送到目的主机时，会首先检查自己 ARP 列表中是否存在该 IP 地址对应的 MAC 地址，如果有，就直接将数据包发送到这个 MAC 地址；如果没有，就向本地网段发起一个 ARP 请求的&lt;strong&gt;广播包&lt;/strong&gt;（即将目的硬件地址设置为全 1），查询此目的主机对应的 MAC 地址。此 ARP 请求数据包里包括源主机的 IP 地址、硬件地址、以及目的主机的 IP 地址。&lt;/li&gt;
&lt;li&gt;网络中所有的主机收到这个 ARP 请求后，会检查数据包中的目的 IP 是否和自己的 IP 地址一致。如果不相同就忽略此数据包；如果相同，该主机首先将发送端的 MAC 地址和 IP 地址添加到自己的 ARP 列表中，如果 ARP 表中已经存在该 IP 的信息，则将其覆盖，然后给源主机发送一个 ARP &lt;strong&gt;单播&lt;/strong&gt;响应数据包，告诉对方自己是它需要查找的 MAC 地址；&lt;/li&gt;
&lt;li&gt;源主机收到这个 ARP 响应数据包后，将得到的目的主机的 IP 地址和 MAC 地址添加到自己的 ARP 列表中，并利用此信息开始数据的传输。如果源主机一直没有收到 ARP 响应数据包，表示 ARP 查询失败。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;代理-arp&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bb%a3%e7%90%86-arp&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;代理 ARP&lt;/h3&gt;&lt;p&gt;代理 ARP 是指当 ARP 目标不在同一网段时，网关会拦截该 ARP 请求，然后把自己的 MAC 地址回复给请求者：&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/ARP_RARP/ARP_Proxy.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/ARP_RARP/ARP_Proxy.webp&#34;  data-sub-html=&#34;&lt;h2&gt;代理 ARP&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/ARP_RARP/ARP_Proxy.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;代理 ARP&lt;/figcaption&gt;
    &lt;/figure&gt;
但是需要网关需要满足：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开启代理 ARP 功能&lt;/li&gt;
&lt;li&gt;有目标的路由信息&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;假如不存在网关但使用代理 ARP，则情况如下：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/ARP_RARP/whitout_GW.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/ARP_RARP/whitout_GW.webp&#34;  data-sub-html=&#34;&lt;h2&gt;代理 ARP&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/ARP_RARP/whitout_GW.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;代理 ARP&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;存在网关的情况下，使用正常 ARP，则情况如下：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/ARP_RARP/with_GW.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/ARP_RARP/with_GW.webp&#34;  data-sub-html=&#34;&lt;h2&gt;代理 ARP&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/ARP_RARP/with_GW.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;代理 ARP&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;总结而言：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;没有网关（采用代理 ARP）时：跨网段访问谁，就问谁的 MAC&lt;/li&gt;
&lt;li&gt;有网关（采用正常 ARP）时：跨网段访问谁，都问网关的 MAC&lt;/li&gt;
&lt;li&gt;无论使用哪种 ARP，跨网段通信时，发送方请求得到的目标 MAC 地址都是网关 MAC&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;rarp&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#rarp&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;RARP&lt;/h2&gt;&lt;p&gt;RARP（Reverse Address Resolution Protocol，逆地址解析协议），顾名思义，用于将 MAC 地址映射为网络层地址（例如 IP 地址），用于给 MAC 地址分配 IP 地址（通常在需要远程启动（类似无盘工作站）的系统中使用）。其由于受限于 IP 地址的运用以及其他的一些缺点，因此渐为更新的 BOOTP 或 DHCP 所取代。&lt;/p&gt;
&lt;p&gt;RARP 使用与 ARP 相同的报头结构，只是其中的操作码有所区别，见上文。&lt;/p&gt;
&lt;h3 id=&#34;工作原理-1&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%b7%a5%e4%bd%9c%e5%8e%9f%e7%90%86-1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;工作原理&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;发送主机发送一个本地的 RARP 广播，在此广播包中，声明自己的 MAC 地址并且请求任何收到此请求的 RARP 服务器分配一个 IP 地址；&lt;/li&gt;
&lt;li&gt;本地网段上的 RARP 服务器收到此请求后，检查其 RARP 列表，查找该 MAC 地址对应的 IP 地址；&lt;/li&gt;
&lt;li&gt;如果存在，RARP 服务器就给源主机发送一个响应数据包并将此 IP 地址提供给对方主机使用；&lt;/li&gt;
&lt;li&gt;如果不存在，RARP 服务器对此不做任何的响应；&lt;/li&gt;
&lt;li&gt;源主机收到从 RARP 服务器的响应信息，就利用得到的 IP 地址进行通讯；如果一直没有收到 RARP 服务器的响应信息，表示初始化失败。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;安全问题&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%ae%89%e5%85%a8%e9%97%ae%e9%a2%98&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;安全问题&lt;/h2&gt;&lt;h3 id=&#34;arp-欺骗&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#arp-%e6%ac%ba%e9%aa%97&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;ARP 欺骗&lt;/h3&gt;&lt;p&gt;源主机通过 ARP 协议在局域网内发送广播请求包，按照 ARP 协议的设想应该是对应主机回复，但如果攻击者进行回复，源主机依然会选择相信。这是由 ARP 协议的不验证引起的，它不验证对方是否是所声称 IP 地址的主机。同时，由于 ARP 协议是一种无状态协议，既不验证应答者的身份，也不判断是否发送过 ARP 请求，当收到一条 ARP 应答报文时，它就会更新 ARP 应答缓存表。因此，攻击者甚至可以&lt;strong&gt;主动&lt;/strong&gt;向源主机发送 ARP 响应包，迫使源主机更新其 ARP 缓存表。&lt;/p&gt;
&lt;p&gt;对此，一个简单的方法是使用静态绑定地址，但是此方法维护起来较为麻烦。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] Computer Networking A Top-Down Approach&lt;/li&gt;
&lt;li&gt;[2] &lt;a href=&#34;https://zh.wikipedia.org/wiki/%E5%9C%B0%E5%9D%80%E8%A7%A3%E6%9E%90%E5%8D%8F%E8%AE%AE&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;地址解析协议&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[3] &lt;a href=&#34;https://zh.wikipedia.org/wiki/%E9%80%86%E5%9C%B0%E5%9D%80%E8%A7%A3%E6%9E%90%E5%8D%8F%E8%AE%AE&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;逆地址解析协议&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[4] &lt;a href=&#34;https://www.jianshu.com/p/782f3b60eb19&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;网络协议补完计划&amp;ndash;ARP 协议和 RARP 协议&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>OpenWRT overlay 空间扩容</title>
      <link>https://www.techkoala.net/openwrt_resize/</link>
      <pubDate>Fri, 09 Oct 2020 15:57:29 +0800</pubDate>
      
      <guid>https://www.techkoala.net/openwrt_resize/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;安装 AdguardHome 运行几天后，可怜的剩余空间被日志耗尽，不得不对 OpenWRT overlay 进行扩容，本文对此进行了记录&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;什么是-overlay&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bb%80%e4%b9%88%e6%98%af-overlay&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;什么是 overlay&lt;/h2&gt;&lt;p&gt;&lt;code&gt;OpenWRT&lt;/code&gt; 一般使用的文件系统是 &lt;code&gt;SquashFS&lt;/code&gt; ，这个文件系统的特点就是：&lt;strong&gt;只读&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;一个只读的文件系统要怎么做到保存设置和安装软件的呢？这里就是使用 &lt;code&gt;/overlay&lt;/code&gt; 的分区，&lt;code&gt;overlay&lt;/code&gt; 顾名思义就是覆盖在上面一层的意思。虽然原来的文件不能修改，但把修改的部分放在 &lt;code&gt;overlay&lt;/code&gt; 分区上，然后映射到原来的位置，读取的时候就可以读到修改过的文件了。&lt;/p&gt;
&lt;p&gt;为什么要用这么复杂的方法呢？ &lt;code&gt;OpenWRT&lt;/code&gt; 当然也可以使用 &lt;code&gt;EXT4&lt;/code&gt; 文件系统，但使用 &lt;code&gt;SquashFS + overlay&lt;/code&gt; 的方式有一定的优点。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SquashFS&lt;/code&gt; 是经过压缩的，在路由器这种小型 &lt;code&gt;ROM&lt;/code&gt; 的设备可以放下更多的东西。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OpenWRT&lt;/code&gt; 的恢复出厂设置也要依赖于这个方式。在你重置的时候，它只需要把 &lt;code&gt;overlay&lt;/code&gt; 分区清空就可以了，一切都回到了刚刷进去的样子。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果是 &lt;code&gt;EXT4&lt;/code&gt; 文件系统，就只能够备份每个修改的文件，在恢复出厂设置的时候复制回来，十分复杂。&lt;/p&gt;
&lt;p&gt;当然，&lt;code&gt;SquashFS + overlay&lt;/code&gt; 也有它的缺点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;修改文件的时候会占用更多的空间。首先你不能够删除文件，因为删除文件实际上是在 &lt;code&gt;overlay&lt;/code&gt; 分区中写入一个删除的标识，反而占用更多的空间。&lt;/li&gt;
&lt;li&gt;另外在修改文件的时候相当于增加了一份文件的副本，占用了双份的空间。&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://www.techkoala.net/images/Network/OpenWRT_overlay/overlay.webp&#34; title=&#34;&#34; data-thumbnail=&#34;/images/Network/OpenWRT_overlay/overlay.webp&#34;  data-sub-html=&#34;&lt;h2&gt;overlay 示意图&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://www.techkoala.net/images/Network/OpenWRT_overlay/overlay.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;overlay 示意图&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;创建新分区&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%88%9b%e5%bb%ba%e6%96%b0%e5%88%86%e5%8c%ba&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;创建新分区&lt;/h2&gt;&lt;p&gt;首先，需要创建一个新的分区，这里使用的是 &lt;code&gt;cfdisk&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;如果此前没有安装，首先使用下列命令进行安装：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-1&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;opkg update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;opkg install cfdisk&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;然后输入&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-2&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cfdisk&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;打开磁盘管理界面：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://www.techkoala.net/images/Network/OpenWRT_overlay/cfdisk.webp&#34; title=&#34;&#34; data-thumbnail=&#34;/images/Network/OpenWRT_overlay/cfdisk.webp&#34;  data-sub-html=&#34;&lt;h2&gt;磁盘界面&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://www.techkoala.net/images/Network/OpenWRT_overlay/cfdisk.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;磁盘界面&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;这里可以看到，目前一共有两个已有分区，现在新建一个分区：&lt;/p&gt;
&lt;p&gt;选中 &lt;code&gt;Free Space&lt;/code&gt;，再选中 &lt;code&gt;New&lt;/code&gt;，输入需要的大小，比如 5G。&lt;/p&gt;
&lt;p&gt;接着选择 &lt;code&gt;primary&lt;/code&gt;&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://www.techkoala.net/images/Network/OpenWRT_overlay/primary.webp&#34; title=&#34;&#34; data-thumbnail=&#34;/images/Network/OpenWRT_overlay/primary.webp&#34;  data-sub-html=&#34;&lt;h2&gt;选择主分区&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://www.techkoala.net/images/Network/OpenWRT_overlay/primary.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;选择主分区&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;选择 &lt;code&gt;Write&lt;/code&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://www.techkoala.net/images/Network/OpenWRT_overlay/write.webp&#34; title=&#34;&#34; data-thumbnail=&#34;/images/Network/OpenWRT_overlay/write.webp&#34;  data-sub-html=&#34;&lt;h2&gt;写入更改&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://www.techkoala.net/images/Network/OpenWRT_overlay/write.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;写入更改&lt;/figcaption&gt;
    &lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;输入 &lt;code&gt;yes&lt;/code&gt;，完成新分区的创建&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://www.techkoala.net/images/Network/OpenWRT_overlay/yes.webp&#34; title=&#34;&#34; data-thumbnail=&#34;/images/Network/OpenWRT_overlay/yes.webp&#34;  data-sub-html=&#34;&lt;h2&gt;确认&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://www.techkoala.net/images/Network/OpenWRT_overlay/yes.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;确认&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;格式化分区&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%a0%bc%e5%bc%8f%e5%8c%96%e5%88%86%e5%8c%ba&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;格式化分区&lt;/h2&gt;&lt;p&gt;使用命令：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-3&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkfs.ext4 /dev/sda3&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;格式化分区&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://www.techkoala.net/images/Network/OpenWRT_overlay/format.webp&#34; title=&#34;&#34; data-thumbnail=&#34;/images/Network/OpenWRT_overlay/format.webp&#34;  data-sub-html=&#34;&lt;h2&gt;格式化分区&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://www.techkoala.net/images/Network/OpenWRT_overlay/format.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;格式化分区&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;挂载新分区&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%8c%82%e8%bd%bd%e6%96%b0%e5%88%86%e5%8c%ba&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;挂载新分区&lt;/h2&gt;&lt;p&gt;使用命令：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-4&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mount /dev/sda3 /mnt/sda3&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;挂载分区&lt;/p&gt;
&lt;h2 id=&#34;转移到新分区&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%bd%ac%e7%a7%bb%e5%88%b0%e6%96%b0%e5%88%86%e5%8c%ba&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;转移到新分区&lt;/h2&gt;&lt;p&gt;然后将原来 &lt;code&gt;upper&lt;/code&gt; 层中的数据复制到新的分区中：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-5&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp -r /overlay/* /mnt/sda3&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;web-界面配置修改&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#web-%e7%95%8c%e9%9d%a2%e9%85%8d%e7%bd%ae%e4%bf%ae%e6%94%b9&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Web 界面配置修改&lt;/h2&gt;&lt;p&gt;进入 &lt;code&gt;OpenWRT&lt;/code&gt; Web 界面的&lt;code&gt;挂载点&lt;/code&gt;对配置进行修改：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://www.techkoala.net/images/Network/OpenWRT_overlay/openwrt.webp&#34; title=&#34;&#34; data-thumbnail=&#34;/images/Network/OpenWRT_overlay/openwrt.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Web 界面&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://www.techkoala.net/images/Network/OpenWRT_overlay/openwrt.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Web 界面&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;在&lt;code&gt;挂载点&lt;/code&gt;下方点击&lt;code&gt;添加&lt;/code&gt;，然后如下配置：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://www.techkoala.net/images/Network/OpenWRT_overlay/mountpoint.webp&#34; title=&#34;&#34; data-thumbnail=&#34;/images/Network/OpenWRT_overlay/mountpoint.webp&#34;  data-sub-html=&#34;&lt;h2&gt;挂载点配置&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://www.techkoala.net/images/Network/OpenWRT_overlay/mountpoint.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;挂载点配置&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;完成&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%ae%8c%e6%88%90&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;完成&lt;/h2&gt;&lt;p&gt;到这一步，只需要重启 &lt;code&gt;OpenWRT&lt;/code&gt; 即可成功扩容。&lt;/p&gt;
&lt;p&gt;重启后到 &lt;code&gt;系统 -&amp;gt; 软件包&lt;/code&gt; 可以看到变大后的空间容量。&lt;/p&gt;
&lt;h2 id=&#34;自动挂载&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%87%aa%e5%8a%a8%e6%8c%82%e8%bd%bd&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;自动挂载&lt;/h2&gt;&lt;p&gt;分区默认会在 &lt;code&gt;OpenWRT&lt;/code&gt; 重启后会自动挂载，如果遇到没有挂载的情况，需要编辑 &lt;code&gt;/etc/rc.local&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-6&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim /etc/rc.local&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;在 &lt;code&gt;exit 0&lt;/code&gt; 之前加入一行 &lt;code&gt;mount /dev/sda3 /overlay&lt;/code&gt; 即可。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;https://blog.msm.moe/mount-sd-card-to-overlay-on-openwrt/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;OpenWrt 下把 SD 卡挂载到 /overlay ，扩大软件空间&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;https://www.jianshu.com/p/8179b19cfa6d&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;软路由 LEDE 折腾 overlay 分区扩容之路&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[3] &lt;a href=&#34;https://www.vediotalk.com/archives/13889&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;ESXI 下 OpenWrt 扩容 Overlay,增加安装插件空间&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>单独编译 OpenWRT ipk 插件</title>
      <link>https://www.techkoala.net/openwrt_compile_single_ipk/</link>
      <pubDate>Fri, 09 Oct 2020 15:57:29 +0800</pubDate>
      
      <guid>https://www.techkoala.net/openwrt_compile_single_ipk/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;本文介绍如何单独编译 OpenWRT 的 ipk 插件&lt;/p&gt;

&lt;/blockquote&gt;&lt;div class=&#34;details admonition info open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;说明&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;必须首先完整编译一次固件才能单独编译 ipk&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;当需要单独更新 OpenWRT 某个插件或者需要增加安装某个插件的时候，可以单独编译对应的 ipk 插件进行安装，而不必编译整个系统。&lt;/p&gt;
&lt;h3 id=&#34;下载源码&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8b%e8%bd%bd%e6%ba%90%e7%a0%81&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;下载源码&lt;/h3&gt;&lt;p&gt;使用 &lt;code&gt;git clone&lt;/code&gt; 对应的源码插件到下面的文件夹中&lt;/p&gt;
&lt;h3 id=&#34;存放路径&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%ad%98%e6%94%be%e8%b7%af%e5%be%84&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;存放路径&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-13&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/lede/package&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;配置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%85%8d%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;配置&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-14&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make menuconfig&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;然后进入对应的子菜单中找到对应插件按 &lt;M&gt; 表示选中插件，但不编译进固件。&lt;/p&gt;
&lt;h3 id=&#34;编译&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%bc%96%e8%af%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;编译&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-15&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make package/xxxxx/compile &lt;span class=&#34;nv&#34;&gt;V&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;99&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;xxxxx 就是你需要单独编译的程序。&lt;/p&gt;
&lt;h3 id=&#34;ipk-生成路径&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#ipk-%e7%94%9f%e6%88%90%e8%b7%af%e5%be%84&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;ipk 生成路径&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-16&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/lede/bin/packages/x86_64/xxxx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;上传-ipk-至路由器&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8a%e4%bc%a0-ipk-%e8%87%b3%e8%b7%af%e7%94%b1%e5%99%a8&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;上传 ipk 至路由器&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-17&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scp xxxxxxx.ipk root@192.168.1.1:/tmp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;安装&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%ae%89%e8%a3%85&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;安装&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-18&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;opkg install /tmp/xxxxx.ipk&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>5G 将是一个彻底的失败</title>
      <link>https://www.techkoala.net/5g_will_be_a_complete_failure/</link>
      <pubDate>Sat, 03 Oct 2020 00:17:12 +0800</pubDate>
      
      <guid>https://www.techkoala.net/5g_will_be_a_complete_failure/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;为什么说 5G 将是一个彻底的失败？&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;注：本文系全文转载，原文信息如下：&lt;/p&gt;
&lt;p&gt;作者：杨学志&lt;/p&gt;
&lt;p&gt;链接：https://www.txrjy.com/thread-1061715-1-1.html&lt;/p&gt;
&lt;p&gt;来源：通信人家园&lt;/p&gt;
&lt;p&gt;著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;无线通信产业发展史&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%97%a0%e7%ba%bf%e9%80%9a%e4%bf%a1%e4%ba%a7%e4%b8%9a%e5%8f%91%e5%b1%95%e5%8f%b2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;无线通信产业发展史&lt;/h2&gt;&lt;p&gt;无线通信产业已经发展了四代，目前正处于 5G 产业化前夕，是当下到一个最热的话题，5G 如何发展，前景如何，是各个方面包括学术界、产业界、投资界以及政府都非常关心的。另外，中国已经启动 6G 研究的消息也见诸报端，未来无线通信产业如何发展，是不是会继续有 6、7、8、9G，也引起了大家的关切。为了回答这些问题，我们首先简单地回顾一下无线通信产业发展的历史。&lt;/p&gt;
&lt;p&gt;无线通信产业是由&lt;strong&gt;需求&lt;/strong&gt;和&lt;strong&gt;技术&lt;/strong&gt;两个轮子驱动前进的。&lt;/p&gt;
&lt;p&gt;早在 1947 年，贝尔实验室的科学家就提出了蜂窝通信的概念，其中的核心技术是频率复用和切换。基于这一概念，贝尔实验室于 1978 年研制出&lt;code&gt;先进移动电话系统&lt;/code&gt;（Advanced Mobile Phone Service，AMPS），这就是第一代移动通信系统。&lt;code&gt;AMPS&lt;/code&gt; 是一个模拟通信系统，采用&lt;code&gt;频分多址&lt;/code&gt;（FDMA）的复用技术，主要技术手段是滤波器，容易受噪声的干扰，语音质量较差。&lt;/p&gt;
&lt;p&gt;随着集成电路技术的发展，第二代移动通信系统采用了数字技术，并采用 &lt;code&gt;TDMA&lt;/code&gt; 和信道编码技术，使得通信系统向宽带化发展，语音质量得到了较大的改善。其中欧洲制定的 &lt;code&gt;GSM&lt;/code&gt; 系统非常成功，至今仍在广泛使用。&lt;/p&gt;
&lt;p&gt;20 世纪 90 年代互联网蓬勃发展，顺应这一时代要求，产业界制订了 3G 标准用以实现移动互联网。3G 采用了高通公司开发的 &lt;code&gt;CDMA&lt;/code&gt; 技术。&lt;code&gt;CDMA&lt;/code&gt; 一度被认为是一个神奇的技术，高通公司宣称 &lt;code&gt;CDMA&lt;/code&gt; 的频谱效率可以达到 AMPS 的 18 倍，但是实践表明这个观点太过于浮夸了，&lt;code&gt;CDMA&lt;/code&gt; 存在自干扰问题，其频谱效率只比 &lt;code&gt;GSM&lt;/code&gt; 高 10%左右，并且 3G 的主流标准 &lt;code&gt;WCDMA&lt;/code&gt; 的系统设计过于复杂，导致部署成本比较高，所以一直无法替代 &lt;code&gt;GSM&lt;/code&gt; 系统。&lt;/p&gt;
&lt;p&gt;第四代移动通信采用了 &lt;code&gt;OFDM&lt;/code&gt; 技术，从根本上克服了 &lt;code&gt;CDMA&lt;/code&gt; 的技术缺陷，并且简化了系统设计，成就了一代成功的移动通信系统。&lt;code&gt;OFDM&lt;/code&gt; 如何克服 &lt;code&gt;CDMA&lt;/code&gt; 的缺陷，具体可以参考我的《通信之道-从微积分到 5G》。&lt;/p&gt;
&lt;p&gt;如果我们稍微总结一下，可以发现，1G 发掘出了移动通信的巨大需求，但是采用了比较落后的技术体制，因此长不大。2G 进行了数字化革命，从而获得巨大成功。3G 是为了新出现的移动互联网需求而诞生，但是在技术上走了弯路，全球的 3G 业务都不是太成功；而 4G 回归了正确的技术路线，目前 4G 业务蓬勃发展。&lt;/p&gt;
&lt;p&gt;随着 4G 的成功商用，按照无线通信十年一代的发展规律，产业界开始了 5G 的研发。按照业界目前的一般口径，5G 在 2020 年左右开始规模商用。中国政府已经为 5G 分配了 500MHz 的频谱，三大运营商也已经在多个城市开展了商用实验，商用前的准备工作正在紧锣密鼓地进行。 很多人认为 5G 牌照会在年内（2019）发放。&lt;/p&gt;
&lt;p&gt;对于 5G 的讨论，也要从技术和需求两条线来讨论。&lt;/p&gt;
&lt;h2 id=&#34;无线通信技术体制&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%97%a0%e7%ba%bf%e9%80%9a%e4%bf%a1%e6%8a%80%e6%9c%af%e4%bd%93%e5%88%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;无线通信技术体制&lt;/h2&gt;&lt;p&gt;无线通信产业基本上可以用“端管云”三个字进行概括。 端就是终端，包括电脑， PAD，手机等。云就是存储在网络上的内容，如新浪、百度、淘宝的数据中心，而管就是连接终端和云之间的这条通道。&lt;/p&gt;
&lt;h3 id=&#34;端管云&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ab%af%e7%ae%a1%e4%ba%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;端管云&lt;/h3&gt;&lt;p&gt;这条管道可以分为两段。一段是终端到基站（或者路由器），这段是无线通信，也叫空中接口；另一段是基站到云，是有线通信。云都是挂在因特网上的，因此因特网是这条管道当中必经之路。移动通信有核心网，基站首先挂在核心网上，再连接到因特网。核心网主要是起运营支撑作用，比如身份的识别，计费等等。而另一个体系是大家都熟悉的 &lt;code&gt;WiFi&lt;/code&gt;，没有核心网，路由器是直接戳到因特网的。这就构成了两大生态体系，也就是传说中的 &lt;code&gt;CT&lt;/code&gt; 和 &lt;code&gt;IT&lt;/code&gt;，它们之间的合作与竞争将贯穿无线通信产业的走向。&lt;/p&gt;
&lt;p&gt;在无线通信产业当中，空中接口这一段的产值，包括终端和基站，占绝大部分。如果做一个类比，通信网络可以类比人体的循环系统或这神经系统。骨干网的部分可以类比中枢神经或者主动脉，虽然容量很大，但是只有几条。骨干网络的销售额不大，但是占据战略制高点；而空中接口部分相当于神经末梢或者毛细血管，数量庞大，占据无线通信产业的主要市场份额。&lt;/p&gt;
&lt;p&gt;有线网络现在都光纤化了。光纤的发明是基于高锟的理论，他因此获得诺贝尔奖。光纤的容量大，成本低，彻底改变了人类通信的面貌。最早的光纤线路的速率只有 45Mbps，后来以令人乍舌的速度发展，目前一根光纤已经可以达到 1Tbps。而光纤要比同等长度面条便宜，这是真正的高科技。早期光纤只用于骨干线路（比如北京和上海之间），随着成本的降低，目前光纤已经入户了。 由于光纤的存在，有线网络的主要工作在于怎么组织和利用光纤的容量，如 &lt;code&gt;IPV6&lt;/code&gt;，&lt;code&gt;SDN&lt;/code&gt; 等等，基本上是逻辑性的工作，总体来说是比较简单的。&lt;/p&gt;
&lt;p&gt;空中接口部分就比有线网困难多了。在有线通信当中，信号在一个精心制造的介质里面传播，无论是铜线还是光纤，信号质量非常好，随便搞搞就能达到很高的速率。而无线信号的传播环境就恶劣得多得多。无线电波在传播过程中衰减很快，还受到建筑物、山体、树木的阻挡，很多时候需要经过反射或者穿透障碍物才能达到接收机。并且，无线电波不是规规矩矩地沿着规定的路线走，会走到不希望的地方，造成对他人的干扰。但是无线通信有一个好处，就是摆脱了线的束缚，可以拿着手机随便走，这种便利性是有线通信所无法比拟的。所以尽管挑战很大，无数的研究者前仆后继，攻克无线通信当中的道道难关。&lt;/p&gt;
&lt;h3 id=&#34;网络分层协议&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%bd%91%e7%bb%9c%e5%88%86%e5%b1%82%e5%8d%8f%e8%ae%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;网络分层协议&lt;/h3&gt;&lt;p&gt;刚才说的这些事，背后是网络的分层结构。最底下的一层叫物理层，其他的可以和合并起来叫高层。物理层是处理物理信号的，比如电或者是光，就是如何把信息转换成可以用来传输的电信号或者光信号。物理层解决的是通信能力的问题，或者是带宽的问题。有了这么多的带宽之后，怎么组织和利用是高层要做的事。&lt;/p&gt;
&lt;p&gt;这个和邮政系统非常类似。物理层相当于运送信件或者包裹的方式，可以是马车，汽车、轮船、飞机，这提供了运送的能力。但是寄信的时候，我们要在信封上写通信地址，要跑到邮局交给柜台，后然分拣打包装车，到了目的地后要有邮递员送到收信地址，这些都是高层做的事情。&lt;/p&gt;
&lt;p&gt;所以大家能看出来，通信网络的核心技术在物理层。当然高层也必不可少，但相对来说可以变化的空间不大。 如果说我们的邮政系统比以前先进，主要不是体现在邮局的布置上，而是运输方式的改进，以前是马车，现在改飞机了。虽说邮局也进步了，比如装了玻璃柜台，或者信件实现了机器分拣，但不是主要的因素。&lt;/p&gt;
&lt;p&gt;光纤是现代通信网络的最重要的基石，就是物理层技术。高层技术当中大家最熟悉的是 &lt;code&gt;IP&lt;/code&gt; 协议。&lt;code&gt;IPV4&lt;/code&gt; 获得广泛应用后，虽说存在一些问题，试图通过 &lt;code&gt;IPV6&lt;/code&gt; 去解决。但是 &lt;code&gt;IPV6&lt;/code&gt; 经过二三十年也没有取代 &lt;code&gt;IPV4&lt;/code&gt;，就是因为高层技术相对简单，改进的空间不大。&lt;/p&gt;
&lt;h2 id=&#34;无线通信技术演进&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%97%a0%e7%ba%bf%e9%80%9a%e4%bf%a1%e6%8a%80%e6%9c%af%e6%bc%94%e8%bf%9b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;无线通信技术演进&lt;/h2&gt;&lt;p&gt;同样，空中接口的核心技术也在物理层，每一代移动通信是由这些核心技术所定义的。这些核心技术，也就是《通信原理》课程里面的知识。&lt;/p&gt;
&lt;h3 id=&#34;3g-核心技术&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#3g-%e6%a0%b8%e5%bf%83%e6%8a%80%e6%9c%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3G 核心技术&lt;/h3&gt;&lt;p&gt;空中接口的核心技术可以分为 5 个大类，分别是&lt;code&gt;调制&lt;/code&gt;、&lt;code&gt;编码&lt;/code&gt;、&lt;code&gt;多址&lt;/code&gt;、&lt;code&gt;组网&lt;/code&gt;和&lt;code&gt;多天线&lt;/code&gt;。比核心技术更基础的是基础理论，包括电磁理论和信息论。&lt;/p&gt;
&lt;p&gt;大家都知道，高通公司开发了 &lt;code&gt;CDMA&lt;/code&gt; 技术，并且成为 3G 三大标准（ &lt;code&gt;WCDMA&lt;/code&gt;，&lt;code&gt;CDMA&lt;/code&gt;2000 和 &lt;code&gt;TD-SCDMA&lt;/code&gt;）的核心技术，从而一跃成为芯片业巨头。 上图所示的是 &lt;code&gt;WCDMA&lt;/code&gt; 的核心技术。高通的贡献主要在多址和组网两个领域。&lt;/p&gt;
&lt;p&gt;虽然普遍认为高通开发了 &lt;code&gt;CDMA&lt;/code&gt; 技术，但是 &lt;code&gt;CDMA&lt;/code&gt; 并不是高通发明的，发明人是好莱坞艳星海蒂.拉玛。&lt;code&gt;CDMA&lt;/code&gt; 技术的标准接收机叫 &lt;code&gt;Rake 接收机&lt;/code&gt;，也于 1950 年代由贝尔实验室发明。实际上由于当时普遍认为 &lt;code&gt;CDMA&lt;/code&gt; 的保密性好，一直应用于军事通信。而高通解决的是 &lt;code&gt;CDMA&lt;/code&gt; 的民用问题，这在当时是普遍不被看好的。&lt;/p&gt;
&lt;p&gt;高通解决 &lt;code&gt;CDMA&lt;/code&gt; 民用有三招，分别是&lt;code&gt;功率控制&lt;/code&gt;（Power Ctrl）、&lt;code&gt;同频复用&lt;/code&gt;（UFR）和&lt;code&gt;软切换&lt;/code&gt;。功率控制解决远近效应，同频复用提升频谱效率，软切换解决切换连续性。这构成了高通 &lt;code&gt;CDMA&lt;/code&gt; 的技术体系。 这里只简要介绍一下，技术人员可以参考我的书《通信之道》。因为 UFR 并不是专利，所以高通其实在 &lt;code&gt;CDMA&lt;/code&gt; 上就两个核心专利，其中软切换专利获得美国专利局的授权还载入了高通发展史。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;3G 在编码领域的主要进展是采用了 &lt;code&gt;Turbo&lt;/code&gt; 码，这是法国电信所资助的教授发明的，是通信发展史上的里程碑，因为它首次充分逼近了香农在 1948 年所提出的信道容量。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在多天线领域，&lt;code&gt;Alamouti 编码&lt;/code&gt;应用到了广播信道多编码。因为广播信道在整个业务当中的比重并不大，所以这个编码的作用相对重要性低一些。但是这个编码是多天线技术领域的里程碑，有非常大的影响力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;调制是最基础的通信技术，没有之一。因为基础，所以稳定，一直到现在的 5G 都没有太大的变化。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以看出，高通在 3G 的多址和组网两个方面拥有核心技术。当然，在把核心技术工程化的过程当中也建立起由几千个专利组成的专利组合。凭着这些专利和芯片的联合运作，收取了大量的高通税。&lt;/p&gt;
&lt;p&gt;其实从现在的眼光看，&lt;code&gt;Turbo&lt;/code&gt; 码和 &lt;code&gt;Alamouti 码&lt;/code&gt;是更重要的核心技术。但这两个核心技术在法国电信和 &lt;code&gt;ATT&lt;/code&gt; 这样的大公司里面，没有进行商业化运作的机制，只是收了一些专利费，没有形成象高通这么大的商业。&lt;/p&gt;
&lt;h3 id=&#34;4g-核心技术&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#4g-%e6%a0%b8%e5%bf%83%e6%8a%80%e6%9c%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;4G 核心技术&lt;/h3&gt;&lt;p&gt;到了 4G 之后，&lt;code&gt;CDMA&lt;/code&gt; 技术被 &lt;code&gt;OFDM&lt;/code&gt; 技术所取代。主要的原因是 &lt;code&gt;CDMA&lt;/code&gt; 存在自干扰的问题。高通的功率控制和软切换试图去解决这个问题，但采取的方法是在 &lt;code&gt;CDMA&lt;/code&gt; 缺陷的基础上进行补救，但是怎么补也补不彻底。&lt;/p&gt;
&lt;p&gt;而 &lt;code&gt;OFDM&lt;/code&gt; 从根本上克服了 &lt;code&gt;CDMA&lt;/code&gt; 自干扰的缺陷，使得频谱效率得到了很大的提高，那这些补救措施也就没必要了。 所以在 4G 时代，高通的技术体系被摧毁了。 采用 &lt;code&gt;OFDM&lt;/code&gt; 技术带来了新的问题，解决这些问题导致了三个创新的出现，这就是我在华为提出的 &lt;code&gt;sOFDM&lt;/code&gt; 和软频率复用（SFR）以及爱立信提出的 &lt;code&gt;SC-FDMA&lt;/code&gt; 技术。 我在华为还提出了随机波束赋形（random beam forming）技术，解决了非常火热的循环延时分集（Cyclic Delay Diversity）的严重缺陷。 在调制和编码领域仍然采用了 3G 的方案。&lt;/p&gt;
&lt;p&gt;可以看出，华为在 4G 的核心技术上已经取代了高通。但是很可惜，由于华为公司的跟随基因，无法发挥手上的专利核武的威力，还要向高通交钱，也只是向苹果收了点小钱。但是华为因此避免了专利核武打击，加上华为在产品上的优势，所以华为日子过得很好，在 4G 时代成为第一大设备制造商。&lt;/p&gt;
&lt;h3 id=&#34;5g-核心技术&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#5g-%e6%a0%b8%e5%bf%83%e6%8a%80%e6%9c%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;5G 核心技术&lt;/h3&gt;&lt;p&gt;5G 标准已经制定完成了，盖棺定论后已经可以看得很清楚了。&lt;/p&gt;
&lt;p&gt;首先调制这块还是没有变，太基础了，想变也变不动。&lt;/p&gt;
&lt;p&gt;因为联想投票门的事情，编码这块的故事很多人都知道。相比于 3G/4G 采用的 &lt;code&gt;Turbo&lt;/code&gt; 码，5G 采用了 &lt;code&gt;LDPC&lt;/code&gt; 和 &lt;code&gt;Polar&lt;/code&gt; 码。 这两个码都是鼎鼎大名，是 &lt;code&gt;Turbo&lt;/code&gt; 码之后通信技术发展的里程碑性的技术。 但是由于 &lt;code&gt;Turbo&lt;/code&gt; 码已经比较接近香农限，虽然这两个码更接近，但是对系统容量的提升已经不大，大概是 1 ～ 2%左右。&lt;/p&gt;
&lt;p&gt;多址这块，对于 5G 三大场景之一的 &lt;code&gt;eMBB&lt;/code&gt; 这块没有变，还是采用了 &lt;code&gt;OFDM&lt;/code&gt;。其中爱立信提出的 &lt;code&gt;SC-FDMA&lt;/code&gt; 从 4G 的必选项变成了可选项，这是因为它相对于 &lt;code&gt;OFDM&lt;/code&gt;A 并没有什么技术优势。&lt;/p&gt;
&lt;p&gt;多址这块 &lt;code&gt;NOMA&lt;/code&gt; 有很大的热度，一度被公认为 5G 的必选技术。5G 标准的早期，几乎所有的厂家都支持这个方向。 但是经过我的论证，&lt;code&gt;NOMA&lt;/code&gt; 比 &lt;code&gt;OFDM&lt;/code&gt; 的增益严格为零，这是用信息论严格证明的。 所以 &lt;code&gt;NOMA&lt;/code&gt; 既复杂又没增益，属于技术退步。&lt;/p&gt;
&lt;p&gt;另外华为还推了 &lt;code&gt;F-OFDM&lt;/code&gt;，与 &lt;code&gt;sOFDM&lt;/code&gt; 正好相反。&lt;code&gt;sOFDM&lt;/code&gt; 的思想是所有的带宽所有的环境都用统一的参数，从而获得规模经济效应。&lt;code&gt;F-OFDM&lt;/code&gt; 强调对不同的环境采用不同参数从而更好的适应环境。 这种做法并没有什么增益，反而丢失了规模效应这个大西瓜，也属于技术退步。&lt;/p&gt;
&lt;p&gt;组网方面没有听到什么消息，工作假设应该还是同频复用。&lt;code&gt;SFR&lt;/code&gt; 和 &lt;code&gt;CoMP&lt;/code&gt; 都是组网方案。&lt;code&gt;SFR&lt;/code&gt; 非常简单，不需要标准化。&lt;code&gt;CoMP&lt;/code&gt; 虽然一度被认为是更先进的技术，但经历了轰轰烈烈的标准工作和产品开发之后，已经是失败了。&lt;/p&gt;
&lt;p&gt;多天线这块最响亮的就是 &lt;code&gt;massive MIMO&lt;/code&gt;，号称可以成百倍地提升系统容量，从媒体上看几乎可以是 5G 的代名词。 &lt;code&gt;MIMO&lt;/code&gt; 这个理论 1995 年提出，已经 23 年了。它所揭示的对容量的巨大提升致使它一直是学界和工业界的热点。但是这个技术一直到 4G 都不是很成功。这个技术有个特点，一演示就成功，一实用就趴窝。记得 20 年前我还是小白的时候，在电信展上就看到厂家演示空分复用，用相同的时频资源实现两个用户的同时通信，还互不干扰。在一个选择的场景下 &lt;code&gt;MIMO&lt;/code&gt; 技术是很容易演示成功的，但是在复杂的实际环境中所涉及的问题的难度，是两个数量级的差别。当然 &lt;code&gt;MIMO&lt;/code&gt; 是一个有潜力的领域，但是其实用化问题仍然没有解决。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;MIMO&lt;/code&gt; 的问题还在于，虽然能够提高容量，但是要增加设备，有成本的。其实 &lt;code&gt;MIMO&lt;/code&gt; 最朴素的应用就是古老的三扇区天线，一个全向小区分割成三个扇区，容量在理论上增加了三倍，这就是 &lt;code&gt;MIMO&lt;/code&gt; 的原理，虽然说是古板了一点。所以粗暴一点，搞个 9 扇区，12 扇区，也就是 &lt;code&gt;mMIMO&lt;/code&gt; 了，这个华为已经有产品了。这和是不是 5G 没关系。&lt;/p&gt;
&lt;p&gt;综合来看，5G 相对于 4G 来说，几乎没有技术进步，在一些地方还退步了。比如说 &lt;code&gt;NOMA&lt;/code&gt;，&lt;code&gt;F-OFDM&lt;/code&gt;，还有为了保证短时延而采用的自包含结构。&lt;/p&gt;
&lt;p&gt;还有，5G 采用了更高的频谱。在中国是 3.5GHz，还好一点。美国用了 28GHz。频率越高覆盖越小，这是无线通信的基本知识。所以同样的网络覆盖，比起 4G 的 2.6GHz，3.5GHz 的投资要高出 50%（我也是看来的，看起来合理），而 28GHz 实现覆盖就是开玩笑了，花 5 倍的银子也是正常的。
所以从技术角度看，5G 比 4G 没有进步，成本会更高。&lt;/p&gt;
&lt;h2 id=&#34;5g-需求&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#5g-%e9%9c%80%e6%b1%82&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;5G 需求&lt;/h2&gt;&lt;p&gt;5G 的需求，大概可以用高速率、低延迟、大连接来概括。&lt;/p&gt;
&lt;p&gt;大家知道，4G 设计当初的速率目标是 100Mbps，随着技术的演进，4G Cat 11 的速率已经达到 600Mbps。5G 进一步把速率目标提高到 1Gbps 以上。为了满足一些低延迟业务的需求，5G 要求空中接口的延迟时间为 1ms，而 4G 的这一指标为 30ms 左右。4G 主要是为移动互联网设计的，强调的是人与网络之间的高速连接，而同时连接到网络的终端的数量并不是一个需要特别考虑的问题。而在蓬勃发展的物联网时代，每一件物体都有可能有联网要求，因此连接数量会有数量级的增加，5G 需要具有支持海量连接的能力。&lt;/p&gt;
&lt;p&gt;5G 最抓眼球的就是它的速率。看新闻经常是比光纤还快，一秒下一个大片，快到把人脸吹成骷髅，等等。
但是有什么样的业务需要这样的速率呢？&lt;/p&gt;
&lt;p&gt;虽然暂时想不出，但是有一个非常流行的观点是，先修好路，自然会有车。3G、4G 都是这样，微博、微信、抖音什么的，以前根本就想不到。等 4G 来了之后，这些应用也就有了。&lt;/p&gt;
&lt;p&gt;很显然，这个观点首先在逻辑上就有很大的问题。修好了路没有车也很正常啊，你就没见过没人走的路吗？ 按照 3G、4G 的情况去推断 5G，这个也不靠谱。就像你已经活了 80 岁，不能按此推断你还能再活 80 岁。2G 和 3G 都处于带宽短缺的时代，所以形成了修好路必有车的错觉。然而到了 4G 之后，带宽已经不再短缺了。&lt;/p&gt;
&lt;p&gt;还有一个流行的观点是，科技发展往往超出人的想象力，所以保守的预测往往是错误的。比如比尔盖茨当年说，计算机 640k 内存应该是够了。而现在已经是 640G 了，6 个数量级的增长。&lt;/p&gt;
&lt;p&gt;必须认识到，通信和计算机有很大的不同。&lt;/p&gt;
&lt;p&gt;计算机所涉及的所有零部件，&lt;code&gt;CPU&lt;/code&gt;，内存，硬盘，都有一个共同的源泉就是半导体工艺。半导体集成度在近十年提高了 1000 倍，大家共同水涨船高。但是通信不一样。通信需要一个受体，以目前最广泛的 &lt;code&gt;eMBB&lt;/code&gt; 为例，这个受体就是人。人是肉长的而不是沙子做的，它能够处理的最大信息速率，也就是带宽，是固定的，超过了人的带宽是没有意义的。&lt;/p&gt;
&lt;p&gt;通俗一点说，我在 &lt;code&gt;PAD&lt;/code&gt; 上看片，我一般看缺省的高清格式，尽管有超清格式，我一般不会主动选择。为啥？ 因为我的老花眼看不出二者的区别。当然眼睛好的人还是应该能分出来的。高清视频也就是 1 ～ 2Mbps 的速率，目前的 &lt;code&gt;WiFi&lt;/code&gt;，4G 都远远地超出了我的需求。&lt;/p&gt;
&lt;p&gt;当然，有人会反对。比如目前 4K/8K 视频很火热，有朋友跟我说，看了 4K 视频之后，其他的都没法看了。我天天看高清格式视频，倒是没这种感觉了。当然对于 60 寸的大电视，提高分辨率还是有必要的。但是电影院的屏幕，目前还只是 2K，我认为 4K/8K 更多的是心理上的。用户挑电视的时候会靠在跟前看屏幕上的一小块区域，一个像素一个像素地检查，4K/8K 当然要好。如果在正常观看距离上，比如 2 米，4K 和 2K 会有明显区别吗？我没试验过啊，有兴趣的朋友可以做一下双盲实验。&lt;/p&gt;
&lt;p&gt;即使是 4K 视频，速率也只有 30Mbps，4G 支持也不费力啊，怎么会有 1Gbps 的需求呢？这就要说到虚拟现实 &lt;code&gt;VR&lt;/code&gt; 了。 &lt;code&gt;VR&lt;/code&gt; 要求有沉浸式的体验。啥叫沉浸式？在真实的场景当中，如果我们慢慢地转头，看到的景物也就连续地变化，这就是沉浸的意思。VR 要实现这种效果，不光要传给你正在看的东西，没看的东西也要传给你，转头的时候要现传新视角上的数据来不及，会出现卡顿，就不是沉浸式体验了。这样一来，数据量再增加 30 倍，差不多就到 1G 了。5G 的 1G 速率的需求就是这么来的。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;VR&lt;/code&gt; 作为一种创新的视频形式，相信能够获得一定的应用。VR 的麻烦在于需要一个专门的头盔，哪怕是手机盒做的简易型的，都是不方便携带的。这么一来 &lt;code&gt;VR&lt;/code&gt; 一般发生在室内，而且一般是专门用途的场景，比如房地产或者旅游景点的体验店什么的。这些业务一般不会走移动通信，更多的是 &lt;code&gt;WiFi&lt;/code&gt; 或者专线。&lt;/p&gt;
&lt;p&gt;总是有很多朋友寄希望于未来可能出现的未知业务。虽然具体的业务会层出不穷，我们确实无法预测，但是只要最终的受体是人，人感受信息的通道就是眼睛和耳朵，鼻子舌头皮肤还都用不上，人类进化出新的感觉器官最少也得是 100 万年以后的事情。人眼的带宽就确定了通信的最大速率，这是一个物理瓶颈，不管什么应用出现都是无法突破的。&lt;/p&gt;
&lt;p&gt;从现实的情况看，&lt;code&gt;WiFi&lt;/code&gt; 的速率总是领先移动网的，即使 &lt;code&gt;WiFi&lt;/code&gt; 已经提供给我们 100M 的带宽了，但是我门最多应用的速率还是 1～2M，超出 10M 以上的应用非常少，也只有下载软件的时候有时会达到。所以其实 4G 的速率已经超出需求了，5G 的高速率完全是没必要的。&lt;/p&gt;
&lt;p&gt;人的感官能力对时延同样是一个决定因素。&lt;/p&gt;
&lt;p&gt;时延当然越短越好，没有人会不喜欢短时延，但是信息论的基本原理决定了短时延会造成高成本。信道编码依靠的是大数定律实现可靠通信，要达到信道容量，理论上需要无穷的时延。因此这个固有原理因素就决定了时延不能非常短。这里就不说其他的处理时延、排队时延和反馈时延了。非要实现低时延也有方法，就是把效率降低，用很高的信噪比去实现很低的速率。这个成本就太高了。任总一直在说，大速率、低时延的通信技术还没有实现。其实根本就不存在这样的技术。&lt;/p&gt;
&lt;p&gt;要知道人的感官时延大概是 100 毫秒左右，所以 4G 几十毫秒的时延是比较合适的，1ms 的时延对人没有意义。所以，只要有人参与的应用，就不需要低时延。比如常用的微博微信，甚至是很多人认为需要低时延的手机游戏，在 &lt;code&gt;WiFi&lt;/code&gt; 上不都玩得挺好吗。&lt;/p&gt;
&lt;p&gt;自动驾驶是被广泛误解为需要低时延的应用。你可以经常看到有文章说，低时延使得刹车距离更短，从而更安全。但是这要基于一个假设，就是刹车指令是通过 5G 网络从远程控制中心传送给汽车的。 显然实际的解决方案不是这样。象刹车这种对时延和可靠性要求都非常高的指令，只能由车在本地产生，采用尽量短的回路。依靠网络传输的，是路线规划和路况信息这样的对可靠性和时延没有特殊要求的信息。Google 汽车已经跑了几百万公里了，并不需要一个低时延的网络。甚至没有网络的时候，汽车也应该能跑，这是起码的要求。&lt;/p&gt;
&lt;p&gt;基于同样的原因，象无人工厂这些工业应用也无法通过 5G 网络实现。5G 是一个公共网络，对经济性的要求决定了它无法达到工业级的可靠性。不是说技术上做不到工业级的可靠性，而是能做到也不做，太贵了公众用不起。所有的工业应用必须用专线。远程手术也是同样的道理。&lt;/p&gt;
&lt;p&gt;对于这个话题，你经常会看到一个很高大上的技术叫&lt;code&gt;网络切片&lt;/code&gt;，意思是在 5G 网络上切出一个高可靠性的通道出来，用来满足工业应用。但是这实际是不可能做到的。一个系统的可靠性取决于最薄弱的一环。如果 5G 网络采用统一的硬件设施，如果不想多花钱，就已经决定了这是一个民用级别的可靠性，是不可能在软件上做点工作使之达到工业级的可靠性。就像特朗普车队，要清道、设岗，要有探路车、开道车、救护车、通信车、陆军一号这些硬东西，要花大把的银子。单靠在大街上挂几个标志是无法保证总统安全的。&lt;/p&gt;
&lt;p&gt;虽然低时延高可靠性（uRLLC）是 5G 定义的三大场景之一，但是这与 5G 作为一个公共网络的基本特征相矛盾，是绝无可能实现的。&lt;/p&gt;
&lt;p&gt;刚才所说的自动驾驶和无人工厂，属于物联网的例子。接下来我们聊聊普遍意义的物联网。&lt;/p&gt;
&lt;p&gt;有句非常有名的话，叫做&lt;code&gt;4G 改变生活，5G 改变社会&lt;/code&gt;，说的就是物联网。5G 使我们的社会从互联网发展到万物互联的社会。&lt;/p&gt;
&lt;p&gt;虽然普遍认为目前处于物联网爆发的前夕，但是有个问题，物联网未必是移动通信的菜。&lt;/p&gt;
&lt;p&gt;移动通信是怎么来的呢？起初就是人要打电话，要到处跑，不光在本地跑，还要出差，还要出国。这个特点要求移动需要统一标准，全球统一。所以要有个叫 &lt;code&gt;3GPP&lt;/code&gt; 的组织，几百个公司的人一起制定这个标准，扯来扯去效率是很低的。还要搞个核心网去支持运营，运营商还要养着一大票的运维人员，这些特点就决定了移动通信会比较贵。&lt;/p&gt;
&lt;p&gt;所以说，除非移动，不然没有必要用移动通信。 这样移动通信的客户群就很明确，一是人，二是车，另外还有野生动物。所以 &lt;code&gt;eMBB&lt;/code&gt;，车联网，野外科学考察等等，是移动通信的正经业务。&lt;/p&gt;
&lt;p&gt;但是大多数东西是不动的。 在 &lt;code&gt;WiFi&lt;/code&gt; 已经普及的情况下，很大的一块业务会被 &lt;code&gt;WiFi&lt;/code&gt; 分流，比如智能家居。并且 &lt;code&gt;eMBB&lt;/code&gt; 是 2C 的，而物联网多数是 2B 的，象油田，电力公司这些大企业更倾向于自建网络，就不用向运营商交月租了。以 &lt;code&gt;NB-IoT&lt;/code&gt; 为例，一个链接每年 20 块的资费对很多应用是很大的一个负担。这就有了象 &lt;code&gt;Lora&lt;/code&gt; 这样的系统的生存空间，成本比 5G 低得多。&lt;/p&gt;
&lt;p&gt;所以，从 5G 的三大需求看，高速率和低时延的需求都是不存在的，物联网只有小部分落入 5G 的范围。&lt;/p&gt;
&lt;h2 id=&#34;移动通信与-wifi&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%a7%bb%e5%8a%a8%e9%80%9a%e4%bf%a1%e4%b8%8e-wifi&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;移动通信与 WiFi&lt;/h2&gt;&lt;p&gt;5G 与 &lt;code&gt;WiFi&lt;/code&gt; 的关系是无法回避的问题，这其实是本文开始就提到了 &lt;code&gt;CT&lt;/code&gt; 与 &lt;code&gt;IT&lt;/code&gt; 两大生态体系的关系问题。&lt;/p&gt;
&lt;p&gt;首先有一个每个人都能感觉到的事实，&lt;code&gt;WiFi&lt;/code&gt; 承载了 80%的流量，我们却不会为它付一分钱，而会为只承载 20% 流量的 4G 付月租。这是为什么？&lt;/p&gt;
&lt;p&gt;在信息社会，手机是我们与社会连接的通道。当我们习惯了这种连接之后，丢失连接后就会感到恐慌。 很多人一有机会就查一下微信，微博，电邮，股票，彩票，生怕遗漏了重大机会，或者没能及时回复。 也就是说，随时随地与社会连接，是我们的刚需。 要满足这种刚需，需要一个广覆盖的网络，这正是移动通信的目标和功能。&lt;/p&gt;
&lt;p&gt;在 &lt;code&gt;WiFi&lt;/code&gt; 火热的时候，有些城市试图建设 &lt;code&gt;WiFi&lt;/code&gt; 城市，用 &lt;code&gt;WiFi&lt;/code&gt; 来实现覆盖，但是最终都失败了。 因为 &lt;code&gt;WiFi&lt;/code&gt; 是由 IT 界设计的，生来就缺乏实现广覆盖的能力。这表现在技术方案上，就不在这里细说了。 后来 IT 界把 &lt;code&gt;WiFi&lt;/code&gt; 升级到 &lt;code&gt;WiMax&lt;/code&gt;，试图与 CT 竞争，但是 IT 界的基因还是导致了 &lt;code&gt;WiMax&lt;/code&gt; 的失败，并且导致北电破产。&lt;/p&gt;
&lt;p&gt;由于 &lt;code&gt;WiFi&lt;/code&gt; 无法实现广覆盖，它被定义为固网的延伸，已经成功渗透到了多数的家庭、酒店和办公室， 目前 &lt;code&gt;WiFi&lt;/code&gt; 的实测速率已经达到 300～400Mbps。 &lt;code&gt;WiFi&lt;/code&gt; 提供的是特定地点的高速率通信。路由器很便宜，二百块钱一个，用户自己买一个回来自己就能搞定，想把这些路由器集中控制起来收月租显然是不可行的。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;IT&lt;/code&gt; 与 &lt;code&gt;CT&lt;/code&gt; 都试图入侵对方领地。早几年的 &lt;code&gt;WiMax&lt;/code&gt; 就是 &lt;code&gt;IT&lt;/code&gt; 入侵 &lt;code&gt;CT&lt;/code&gt; 的一次失败的尝试。 这几年，也经常听到各种消息，一会儿是小扎，一会儿是马斯克，都要建全球免费 &lt;code&gt;WiFi&lt;/code&gt;，周鸿祎说他掌管中国移动，就全免费。当然都没能成功。移动通信所要求的统一标准、广域覆盖，网归网优，客户管理，都决定了运营商是一个分层的官僚体系，与互联网基因格格不入。中国移动每年营收 8000 亿，够买 6 个 360 了，说免就免了，从哪能捞回来这么些钱？用户愿意交这个钱，非不收，那叫啥呢？&lt;/p&gt;
&lt;p&gt;反过来，移动通信能取代 &lt;code&gt;WiFi&lt;/code&gt; 吗。&lt;code&gt;WiFi&lt;/code&gt; 覆盖小，高速率，成本低，使用非许可频段，决定了其免费的必然性。移动通信要取代 &lt;code&gt;WiFi&lt;/code&gt;，也必须达到如此低的成本，并且实现免费。这是否能做到呢？如果 4G 能够利用已有的规模优势，做低成本的 &lt;code&gt;Femto 基站&lt;/code&gt;，理论上有可能。但是市场规模太小，菊花大厂看不上眼，现有的管理体制也不能适应。而小厂很难有这个技术能力。所以说也是比较难的。&lt;/p&gt;
&lt;p&gt;所以说，移动通信和 &lt;code&gt;WiFi&lt;/code&gt; 有各自的应用场景。移动通信能够实现 anytime，anywhere 的连接，能够满足用户的刚需，而 &lt;code&gt;WiFi&lt;/code&gt; 便宜，无月租，满足用户高速率的应用需求，将长期共存。&lt;/p&gt;
&lt;h2 id=&#34;5g-之局&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#5g-%e4%b9%8b%e5%b1%80&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;5G 之局&lt;/h2&gt;&lt;p&gt;移动通信经过四代的发展之后，人们得到一个似乎的规律，就是单数代不太成功，而偶数代很成功。经过我们的分析后发现，1G 和 3G，都是新的需求促成的，但是技术不太好，而 2G 和 4G 在原有的需求基础上，改进了技术，从而很成功。1G 和 3G 虽然不太成功，但也不能说是失败，毕竟他们是满足新需求的唯一技术。 但是到了 5G，需求是虚构的，技术上并没有进步，所以必然是要失败的。&lt;/p&gt;
&lt;p&gt;5G 是目前最火热的话题。特别是孟晚舟事件之后，美帝组团打压华为，国人已经把 5G 看成是中美对决的战场。&lt;/p&gt;
&lt;p&gt;对于 5G 的立场，任总曾经发表过一个讲话，说 5G 的需求并没有出现。我心里赞叹任总真是到了从心所欲不逾矩的境界，也不为利益所左右。后来徐直军也发表了对 5G 相对保守的观点。但是后来口风变了，任总为自己的讲话向产品线道了歉。后来华为发文表示要坚决打胜 5G 这一仗。&lt;/p&gt;
&lt;p&gt;我们已经知道，移动通信的根本的价值在于实现任何时间，任何地点的连接能力，在此基础上提高网络容量。如果没有覆盖这个前提，只是在局部实现高速率是没有商业价值的。比如说大家一直谈论的可见光通信，因为覆盖小只能服务两三个人，速率太高超过了人的带宽，就没有意义了。 这个问题对毫米波、太赫兹都是如此。
虽然过高的速率没够意义，但是随着用户渗透率的提高，资费的下降，数据量每年增长 30%的情况还会持续很多年。因此移动网络还需要扩容。&lt;/p&gt;
&lt;p&gt;移动通信正确对发展方向是，保证连续覆盖的情况下以低成本提高网络容量。当然，并不是我一个人才知道这是正确的方向，实际上这是通信界的常识，2G 和 4G 的成功就是这种模式。&lt;/p&gt;
&lt;p&gt;5G 偏离了这种模式，走向了错误的方向。这背后的原因有三个：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通信原理的创新遇到瓶颈&lt;/li&gt;
&lt;li&gt;半导体工艺获得了爆炸性的发展&lt;/li&gt;
&lt;li&gt;无线产业决策链条太长&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通信技术已经发展百年，因为其战略地位和创造财富的能力，全球最强智力投入其中，但凡简单一点的创新早就发掘完了。用于 &lt;code&gt;Turbo&lt;/code&gt; 码解码的 &lt;code&gt;BCJR 算法&lt;/code&gt;是 1970 年代发明的，在我历经艰辛终于看懂之后，感叹道，这只能与魔鬼做交易才能搞得出来。 到 2009 年的时候，随着 &lt;code&gt;Turbo&lt;/code&gt;，&lt;code&gt;LDPC&lt;/code&gt;，&lt;code&gt;Polar&lt;/code&gt;，&lt;code&gt;OFDM&lt;/code&gt;，&lt;code&gt;MIMO&lt;/code&gt; 等领域的进展并且逼近理论极限，学术界普遍感觉到物理层已经死了，再也无法创新了。象 David Tse 这样的被公认为传承香农衣钵的大咖，也感觉无处可走，转行做生物信息去了。&lt;/p&gt;
&lt;p&gt;在此同时，半导体技术得到了爆炸性的发展。大家手上的 U 盘，从 10 年前 128M 变成了现在的 128G。在通信原理无法获得突破的情况下，自然地走上利用强大的算力实现高速率的方向。 高算力使得采用更宽的频带，更多的天线成为可能，在通信原理不变的情况下，通过算力使得速率暴力提升 1000 倍是很简单的事情。华为早就整出来 115Gbps 的样机了。看报道我国启动了 6G 研究，速度比 5G 高 10 倍，看得我真是很无奈。&lt;/p&gt;
&lt;p&gt;移动通信产业有着与其他产业不同的特点。一般的产业都是研发产品上市，获得反馈并逐步改进，是一个快速迭代的过程。 而移动通信要求在什么还没有之前，大家共同商定一个标准，然后按照这个标准做产品。 何时启动一代通信标准是战略决策，是由政治领导人和商业领导人来做出的。他们当然会咨询技术专家，但是专家们也未必懂，其中还有巨大的利益博弈，显然并不靠谱。行业认同的宏观规律是十年一代。时间一到，各方力量合力推动，就动手干了。大炮一响，黄金万两。即使实际上不能干，也得创造条件干。所以我们看到 5G 出现了很多奇葩的技术，如全双工，毫米波，现在可见光，太赫兹也要上场了。&lt;code&gt;NOMA&lt;/code&gt; 和 &lt;code&gt;F-OFDM&lt;/code&gt; 比较起来都算是好的。&lt;/p&gt;
&lt;p&gt;一代移动通信标准一旦启动，到产品上市之前，所有的玩家都投入了巨大的成本。鉴于通信产业的战略地位，政府意志也为之背书。大家都绑在这个战车上，即使有问题，在碰到南墙之前是不会停下来的。&lt;/p&gt;
&lt;p&gt;所以 5G 的问题，不光是华为的问题，或者是中国的问题，美国、欧洲也都是如此。很多网友看到美帝在 5G 上整华为，就觉得美帝反对的东西肯定很重要。中国长期以来落后，都以美国为灯塔。但是经过改开 40 年，中国国力日渐强盛。而通信产业整体上已经获得了领先地位。在这种竞争格局下，即使美帝也会犯错。什么铱星啊，&lt;code&gt;Wimax&lt;/code&gt; 啊，不都是美帝整的吗？ 所以我们要有独立的判断，而不是被对方的判断左右。 随着商用的日益迫近，5G 的问题会逐渐暴露出来。比如最近 &lt;code&gt;ATT&lt;/code&gt; 的 5G 造假，韩国 5G 被指无用，澳洲未能按计划推出 5G 服务，等等。希望本文能为各方提个醒，尽量减少损失吧。&lt;/p&gt;
&lt;p&gt;因为任总的讲话，我认为华为对 5G 是有清醒的认识的，任总最新的讲话又谈到了 5G 的需求没有出现。5G 成功当然好，又能成为华为的产粮田，况且在舆论上华为 5G 已经领先友商 12 个月。但 5G 失败对华为也是有利的。因为华为有着最齐全的产品线，是行业老大，没有技术创新也就意味着现有格局的固化，华为也就能笑到最后了。当然裁员是避免不了的，这对于通信狗们来说不是个好消息。 对于二线的设备商，却是灾难性的，对 5G 的投入无法回收，现有市场份额也会被华为逐渐蚕食。 对于高通更是灭顶之灾，3G 专利过期，4G 没专利，然后 5G 没有了，怎么收专利费？早些年嫌设备和手机不赚钱甩给别人了，现在有点傻眼。趁手上还有点银子，想收个恩智浦，也被贸易战给搅黄了。这日子怕是过不下去了。&lt;/p&gt;
&lt;h2 id=&#34;未来之路&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9c%aa%e6%9d%a5%e4%b9%8b%e8%b7%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;未来之路&lt;/h2&gt;&lt;p&gt;前面已经讲到，移动通信的发展方向是在保证覆盖的情况下，用低成本的技术提高系统容量。这背后的使能器是核心技术的突破。这也是我近二十年的通信技术研究生涯所始终追求的目标。&lt;/p&gt;
&lt;p&gt;尽管学界对通信原理的发展前景很悲观，但是情况正在起变化。&lt;/p&gt;
&lt;p&gt;我在 2014 年发布了&lt;code&gt;多级软频率复用技术&lt;/code&gt;（multilevel soft frequency reuse，MLSFR），是 &lt;code&gt;SFR&lt;/code&gt; 技术的增强版。理论表明，&lt;code&gt;SFR&lt;/code&gt; 可以提升频谱效率 10%左右，&lt;code&gt;MLSFR&lt;/code&gt; 可以提高 30%。 值得注意的，这是在不增加任何硬件成本的前提下。 这种幅度技术进步，在最近 30 年的通信史上，只有 &lt;code&gt;Turbo&lt;/code&gt; 码可以媲美，远远超过高通在 &lt;code&gt;CDMA&lt;/code&gt; 领域的技术创新。MLSFR` 将成为未来移动通信组网技术的基石。&lt;/p&gt;
&lt;p&gt;影响更加深远的，我已经在信息论上获得了重大突破。大家知道，香农在 1948 年创立了信息论，其中最重要的成果是这个信道容量公式：C=log（1+S/N），是指引着通信技术研究和工业发展的灯塔。&lt;/p&gt;
&lt;p&gt;但是香农只给出了最简单的 AWGN 信道的容量。无线通信的信道都是衰落信道，而衰落信道的容量香农只开了个头，后来的学者发展出了一套衰落信道容量的理论，这些可以在经典的通信原理教科书里面找到。&lt;/p&gt;
&lt;p&gt;但是，目前的衰落信道容量理论是错误的。&lt;/p&gt;
&lt;p&gt;这个问题我思考了 14 年，终于提出了新的衰落信道容量理论并在 2018 年 3 月份完成了论文初稿。大家可以体会一下基础研究的周期。 审稿的过程也非常艰苦。开始投稿了 Nature，但是 Nature 认为满篇都是公式的稿件不符合它们的风格，还是投到应属期刊 IEEE Transactions on Information Theory。经过 5 个月的评审被拒，原因是两个评委认为论文对信息论存在误解。想想当年 &lt;code&gt;Turbo&lt;/code&gt; 码论文，评委认为存在 3dB 的误差。重大突破被误解恐怕是一个规律，创新者需要有这样的心里准备。 但是另外一位评委给予了全面的肯定。当然，所有的评审意见都很容易回答，稿件修改之后再次投稿后，评审又进行了三个月，还没有出结果。在中美贸易战的背景下，美国在整华为，也难保政治不会侵蚀学术道德。不管怎么样，大家很快就能看到了。&lt;/p&gt;
&lt;p&gt;基础理论的突破预示着无线通信产业的又一次技术革命，而中国就是这次革命的源头。&lt;/p&gt;
&lt;p&gt;成功的道路并不拥挤，我们砥砺前行。&lt;/p&gt;
&lt;p&gt;致敬改革开放 40 周年。&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Linux 系统信息查询</title>
      <link>https://www.techkoala.net/system_info/</link>
      <pubDate>Sun, 13 Sep 2020 22:35:06 +0800</pubDate>
      
      <guid>https://www.techkoala.net/system_info/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;记录一些常用的 Linux 系统信息查询命令&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;日常使用 Linux 过程中，偶尔会需要查询一下系统信息，特别是在对于使用云端主机时，了解必要的信息十分重要。本文总结了一些常用的信息以及相应的查询命令。&lt;/p&gt;
&lt;div class=&#34;details admonition tip open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 352 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;技巧&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;善用 grep 类命令作为配合，高效筛选想要的信息内容。&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&#34;系统信息&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%b3%bb%e7%bb%9f%e4%bf%a1%e6%81%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;系统信息&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-1&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ uname -a              &lt;span class=&#34;c1&#34;&gt;# 查看内核/操作系统/CPU 信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ head -n &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; /etc/issue  &lt;span class=&#34;c1&#34;&gt;# 查看操作系统版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ hostname              &lt;span class=&#34;c1&#34;&gt;# 查看计算机名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ lspci -tv             &lt;span class=&#34;c1&#34;&gt;# 列出所有 PCI 设备&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ lsusb -tv             &lt;span class=&#34;c1&#34;&gt;# 列出所有 USB 设备&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ lsmod                 &lt;span class=&#34;c1&#34;&gt;# 列出加载的内核模块&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ env                   &lt;span class=&#34;c1&#34;&gt;# 查看环境变量&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;系统资源&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%b3%bb%e7%bb%9f%e8%b5%84%e6%ba%90&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;系统资源&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-2&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cat /proc/cpuinfo             &lt;span class=&#34;c1&#34;&gt;# 查看 CPU 信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ lscpu                         &lt;span class=&#34;c1&#34;&gt;# 查看 CPU 信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ lshw -short                   &lt;span class=&#34;c1&#34;&gt;# 当前服务器 CPU、内存、磁盘等详细信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ free -m                       &lt;span class=&#34;c1&#34;&gt;# 查看内存使用量和交换区使用量&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ df -h                         &lt;span class=&#34;c1&#34;&gt;# 查看各分区使用情况&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ du -sh                        &lt;span class=&#34;c1&#34;&gt;# 查看指定目录的大小&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ grep MemTotal /proc/meminfo   &lt;span class=&#34;c1&#34;&gt;# 查看内存总量&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ grep MemFree /proc/meminfo    &lt;span class=&#34;c1&#34;&gt;# 查看空闲内存量&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ uptime                        &lt;span class=&#34;c1&#34;&gt;# 查看系统运行时间、用户数、负载&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cat /proc/loadavg             &lt;span class=&#34;c1&#34;&gt;# 查看系统负载&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;磁盘和分区&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%a3%81%e7%9b%98%e5%92%8c%e5%88%86%e5%8c%ba&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;磁盘和分区&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-3&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ mount &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; column -t         &lt;span class=&#34;c1&#34;&gt;# 查看挂接的分区状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ fdisk -l                  &lt;span class=&#34;c1&#34;&gt;# 查看所有分区&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;网络信息&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%bd%91%e7%bb%9c%e4%bf%a1%e6%81%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;网络信息&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-4&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ip                    &lt;span class=&#34;c1&#34;&gt;# 查看网络相关信息，具体用法参见 man 手册&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ iptables -L           &lt;span class=&#34;c1&#34;&gt;# 查看防火墙设置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ route -n              &lt;span class=&#34;c1&#34;&gt;# 查看路由表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ netstat -lntp         &lt;span class=&#34;c1&#34;&gt;# 查看所有监听端口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ netstat -antp         &lt;span class=&#34;c1&#34;&gt;# 查看所有已经建立的连接&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ netstat -s            &lt;span class=&#34;c1&#34;&gt;# 查看网络统计信息&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;进程查询&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%bf%9b%e7%a8%8b%e6%9f%a5%e8%af%a2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;进程查询&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-5&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ps -ef            &lt;span class=&#34;c1&#34;&gt;# 查看所有进程&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ top               &lt;span class=&#34;c1&#34;&gt;# 实时显示进程状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ htop              &lt;span class=&#34;c1&#34;&gt;# 实时显示进程状态，加强版 top&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;用户信息&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%94%a8%e6%88%b7%e4%bf%a1%e6%81%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;用户信息&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-6&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ w                             &lt;span class=&#34;c1&#34;&gt;# 查看活动用户&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ id &amp;lt;用户名&amp;gt;                    &lt;span class=&#34;c1&#34;&gt;# 查看指定用户信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ last                          &lt;span class=&#34;c1&#34;&gt;# 查看用户登录日志&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cut -d: -f1 /etc/passwd       &lt;span class=&#34;c1&#34;&gt;# 查看系统所有用户&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cut -d: -f1 /etc/group        &lt;span class=&#34;c1&#34;&gt;# 查看系统所有组&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;服务&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9c%8d%e5%8a%a1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;服务&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-7&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ crontab -l                    &lt;span class=&#34;c1&#34;&gt;# 查看当前用户的计划任务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ chkconfig –list               &lt;span class=&#34;c1&#34;&gt;# 列出所有系统服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ chkconfig –list &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep on     &lt;span class=&#34;c1&#34;&gt;# 列出所有启动的系统服务&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;软件信息&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%bd%af%e4%bb%b6%e4%bf%a1%e6%81%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;软件信息&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-8&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ apt list --installed          &lt;span class=&#34;c1&#34;&gt;# 显示 apt 安装的软件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ pacman -Qmeq                  &lt;span class=&#34;c1&#34;&gt;# 显示 aur 软件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ pacman -Qneq                  &lt;span class=&#34;c1&#34;&gt;# 显示 pacman 安装的软件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ pactree package_name          &lt;span class=&#34;c1&#34;&gt;# 显示软件的依赖树&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>5G NR 系列：波束赋形</title>
      <link>https://www.techkoala.net/beamforming/</link>
      <pubDate>Wed, 09 Sep 2020 16:14:29 +0800</pubDate>
      
      <guid>https://www.techkoala.net/beamforming/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;什么是波束赋形？波束赋形的基本原理是什么？5G 怎样实现波束赋形？&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;注：本文系全文转载，原文信息如下：&lt;/p&gt;
&lt;p&gt;作者：无线深海&lt;/p&gt;
&lt;p&gt;链接：https://zhuanlan.zhihu.com/p/144971077&lt;/p&gt;
&lt;p&gt;来源：知乎&lt;/p&gt;
&lt;p&gt;著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;什么是波束赋形&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bb%80%e4%b9%88%e6%98%af%e6%b3%a2%e6%9d%9f%e8%b5%8b%e5%bd%a2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;什么是波束赋形？&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;波束赋形&lt;/strong&gt;这个概念可以拆分成&lt;strong&gt;波束&lt;/strong&gt;和&lt;strong&gt;赋形&lt;/strong&gt;这两个词来理解。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;波束&lt;/strong&gt;里的&lt;strong&gt;波&lt;/strong&gt;字可以认为是电磁波，&lt;strong&gt;束&lt;/strong&gt;字的本意是“捆绑”，因此波束的含义是捆绑在一起集中传播的电磁波&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;赋形&lt;/strong&gt;可以简单地理解为“赋予一定的形状”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;合起来，波束赋形的意思就是&lt;strong&gt;赋予一定形状集中传播的电磁波&lt;/strong&gt;。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_12.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_12.webp&#34;  data-sub-html=&#34;&lt;h2&gt;分散与集中的光线&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_12.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;分散与集中的光线&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;其实，我们常见的光也是一种电磁波，灯泡作为一个点光源，发出的光没有方向性，只能不断向四周耗散；而手电筒则可以把光集中到一个方向发射，能量更为聚焦，从而照地更远。&lt;/p&gt;
&lt;p&gt;无线基站也是同理，如下图所示，如果天线的信号全向发射的话，这几个手机只能收到有限的信号，大部分能量都浪费掉了。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_17.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_17.webp&#34;  data-sub-html=&#34;&lt;h2&gt;分散与集中的电磁波&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_17.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;分散与集中的电磁波&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;而如果能通过波束赋形把信号聚焦成几个波束，专门指向各个手机发射的话，承载信号的电磁能量就能传播地更远，而且手机收到的信号也就会更强。&lt;/p&gt;
&lt;p&gt;因此，波束赋形在无线通信中大有可为。&lt;/p&gt;
&lt;h2 id=&#34;波束赋形的基本原理是什么&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%b3%a2%e6%9d%9f%e8%b5%8b%e5%bd%a2%e7%9a%84%e5%9f%ba%e6%9c%ac%e5%8e%9f%e7%90%86%e6%98%af%e4%bb%80%e4%b9%88&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;波束赋形的基本原理是什么？&lt;/h2&gt;&lt;p&gt;波束赋形的物理学原理，其实就是波的干涉现象。&lt;/p&gt;
&lt;p&gt;频率相同的两列波叠加，使某些区域的振动加强，某些区域的振动减弱，而且振动加强的区域和振动减弱的区域相互隔开。&lt;/p&gt;
&lt;p&gt;想象一下，在湖边漫步时，你和女朋友在相距很近的两点激起水波，两朵涟漪不断散开，然后交叠起来，形成了下面的图样。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_10.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_10.webp&#34;  data-sub-html=&#34;&lt;h2&gt;波的干涉现象&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_10.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;波的干涉现象&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;可以看出，有的地方水波增强，有的地方则减弱，并且增强和减弱的地方间隔分布，在最中间的狭窄区域最为明显。&lt;/p&gt;
&lt;p&gt;如果波峰和波峰，或者波谷和波谷相遇，则能量相加，波峰更高，波谷更深。这种情况叫做相长干涉。&lt;/p&gt;
&lt;p&gt;反之，如果波峰和波谷相遇，两者则相互抵消，震动归于静寂。这种情况叫做相消干涉。&lt;/p&gt;
&lt;p&gt;如果把这个现象抽象一下，可以得到下图：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_07.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_07.webp&#34;  data-sub-html=&#34;&lt;h2&gt;波的干涉&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_07.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;波的干涉&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;在两个馈源正中间的地方由于相长干涉，能量最强，可以认为形成了一个定向的波束，也叫做主瓣；两边则由于相消干涉能量抵消，形成了零陷，再往两边又是相长干涉，但弱于最中间，因此称作旁瓣。&lt;/p&gt;
&lt;p&gt;如果我们能继续增强正中央主瓣的能量，使其宽度更窄，并抑制两边的旁瓣，就可以得到干净利落的波束了。&lt;/p&gt;
&lt;p&gt;其实，普通天线一直在做这样的事情。&lt;/p&gt;
&lt;p&gt;天线内部排布着一系列的电磁波源，称作振子，或者天线单元。这些天线单元也利用干涉原理来形成定向的波束。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_04.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_04.webp&#34;  data-sub-html=&#34;&lt;h2&gt;单列天线&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_04.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;单列天线&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;由上图可以看出，纵向排列的天线单元越多，最中间的可集中的能量也就越多，波束也就越窄。&lt;/p&gt;
&lt;p&gt;但这只是一个垂直截面而已，其实完整的波束在空间是三维的，水平和垂直的宽度可能截然不同。&lt;/p&gt;
&lt;p&gt;下图是一个天线的振子排列，以及辐射能量三维分布图。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_06.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_06.webp&#34;  data-sub-html=&#34;&lt;h2&gt;纵向双列天线&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_06.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;纵向双列天线&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;可以看出，上述天线内振源的排布方式为纵向，横向的数量很少，因此其波束在垂直方向的能量集中，而水平方向的角度还是比较宽的，像一个薄薄的大饼。&lt;/p&gt;
&lt;p&gt;这种传统的天线水平方向的辐射角度多为 60 度，进行大面积的地面信号覆盖是一把好手，但要垂直覆盖高楼就有些力不从心了，称作“波束赋形”还是不够格。&lt;/p&gt;
&lt;p&gt;如果我们把这些天线单元的排布改成矩形，电磁波辐射能量将在最中央形成一个很粗的主瓣，周边是一圈的旁瓣，这就有点波束赋形的意思了。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_01.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_01.webp&#34;  data-sub-html=&#34;&lt;h2&gt;矩形天线&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_01.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;矩形天线&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;为了让波束更窄能量更集中，天线单元还需要更多更密，水平和垂直两个维度也都要兼顾，原本的天线就变成了大规模天线阵列。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_05.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_05.webp&#34;  data-sub-html=&#34;&lt;h2&gt;大规模矩形天线&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_05.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;大规模矩形天线&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;这下，生成的波束就犀利多了，用大规模天线阵列来支持波束赋形，稳了！&lt;/p&gt;
&lt;p&gt;但是这样还有问题，那就是这个最大波束位于正中央，且其传播方向和天线阵列垂直，而手机是一直随着用户移动的，所在的位置完全不确定，主波束虽然犀利，但照射不到手机上也是白搭。&lt;/p&gt;
&lt;p&gt;那么，能不能让波束偏移一定的角度，对准手机来发射呢？&lt;/p&gt;
&lt;p&gt;首先我们看看中央的主波束的形成过程：多列波的相位相同，也就是波峰和波谷在同一时间是对齐的，则它们到达手机时，就可以相长干涉，信号通过叠加得以增强。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_02.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_02.webp&#34;  data-sub-html=&#34;&lt;h2&gt;到达同相，相长干涉&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_02.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;到达同相，相长干涉&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;如果手机和天线阵列有一定的夹角，则各列波到达手机时，相位难以对齐，可能是波峰和波谷相遇，也可能是在其他相位进行叠加，难以达到相长干涉，信号叠加的效果。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_15.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_15.webp&#34;  data-sub-html=&#34;&lt;h2&gt;到达异相，无法相长&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_15.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;到达异相，无法相长&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;这可咋办？总不能通过旋转天线来让波束跟随手机吧？&lt;/p&gt;
&lt;p&gt;其实，周期性是波最大的特点，不同的相位总是周期性的出现，错过了这个波峰，还有下一个波峰要来，因此相位是可以调整的。&lt;/p&gt;
&lt;p&gt;通过调整不同天线单元发射信号的振幅和相位（权值），即使它们的传播路径各不相同，只要在到达手机的时候相位相同，就可以达到信号叠加增强的结果，相当于天线阵列把信号对准了手机。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_14.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_14.webp&#34;  data-sub-html=&#34;&lt;h2&gt;相位控制&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_14.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;相位控制&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;下图是一个示例，可以看出天线阵列通过调整发射信号的相位，让波束偏移了 θ 度，从而可以精确对准手机发射信号。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_13.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_13.webp&#34;  data-sub-html=&#34;&lt;h2&gt;相位控制&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_13.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;相位控制&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;5g-怎样实现波束赋形&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#5g-%e6%80%8e%e6%a0%b7%e5%ae%9e%e7%8e%b0%e6%b3%a2%e6%9d%9f%e8%b5%8b%e5%bd%a2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;5G 怎样实现波束赋形？&lt;/h2&gt;&lt;p&gt;由此可见，波束赋形的关键在于天线单元相位的管控，也就是天线权值的处理。&lt;/p&gt;
&lt;p&gt;根据波束赋形处理位置和方式的不同，可分为&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数字波束赋形&lt;/li&gt;
&lt;li&gt;模拟波束赋形&lt;/li&gt;
&lt;li&gt;混合波束赋形&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;模拟波束赋形&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%a8%a1%e6%8b%9f%e6%b3%a2%e6%9d%9f%e8%b5%8b%e5%bd%a2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;模拟波束赋形&lt;/h3&gt;&lt;p&gt;所谓模拟波束赋形，就是通过处理射频信号权值，通过移相器来完成天线相位的调整，处理的位置相对靠后。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_16.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_16.webp&#34;  data-sub-html=&#34;&lt;h2&gt;模拟波束赋形&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_16.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;模拟波束赋形&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;模拟波束赋形的特点是基带处理的通道数量远小于天线单元的数量，因此容量上受到限制，并且天线的赋形完全是靠硬件搭建的，还会受到器件精度的影响，使性能受到一定的制约。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_08.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_08.webp&#34;  data-sub-html=&#34;&lt;h2&gt;模拟波束赋形框图&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_08.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;模拟波束赋形框图&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;数字波束赋形&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%95%b0%e5%ad%97%e6%b3%a2%e6%9d%9f%e8%b5%8b%e5%bd%a2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;数字波束赋形&lt;/h3&gt;&lt;p&gt;数字波束赋形则在基带模块的时候就进行了天线权值的处理，基带处理的通道数和天线单元的数量相等，因此需要为每路数据配置一套射频链路。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_11.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_11.webp&#34;  data-sub-html=&#34;&lt;h2&gt;数字波束赋形&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_11.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;数字波束赋形&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;数字波束赋形的优点是&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;赋形精度高&lt;/li&gt;
&lt;li&gt;实现灵活&lt;/li&gt;
&lt;li&gt;天线权值变换响应及时&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;缺点是&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;基带处理能力要求高&lt;/li&gt;
&lt;li&gt;系统复杂&lt;/li&gt;
&lt;li&gt;设备体积大&lt;/li&gt;
&lt;li&gt;成本较高&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sub6G 频段，作为当前 5G 容量的主力军，载波带宽可达 100MHz，一般采用采用数字波束赋形，通过 64 通道发射来实现小区内时频资源的多用户复用，下行最大可同时发射 24 路独立信号，上行独立接收 12 路数据，扛起了 5G 超高速率的大旗。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_09.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_09.webp&#34;  data-sub-html=&#34;&lt;h2&gt;数字波束赋形框图&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_09.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;数字波束赋形框图&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;在毫米波 mmWave 频段，由于频谱资源非常充沛，一个 5G 载波的带宽可达 400MHz，如果单个 AAU 支持两个载波的话，带宽就达到了惊人的 800MHz！&lt;/p&gt;
&lt;p&gt;如果还要像 Sub6G 频段的设备一样支持数字波束赋形的话，对基带处理能力要求太高，并且射频部分功放的数量也要数倍增加，实现成本过高，功耗更是大得吓人。&lt;/p&gt;
&lt;h3 id=&#34;混合波束赋形&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%b7%b7%e5%90%88%e6%b3%a2%e6%9d%9f%e8%b5%8b%e5%bd%a2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;混合波束赋形&lt;/h3&gt;&lt;p&gt;因此，业界将数字波束赋形和模拟波束赋形结合起来，使在模拟端可调幅调相的波束赋形，结合基带的数字波束赋形，称之为混合波束赋形。&lt;/p&gt;
&lt;p&gt;混合波束赋形数字和模拟融合了两者的优点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;基带处理的通道数目明显小于模拟天线单元的数量&lt;/li&gt;
&lt;li&gt;复杂度大幅下降&lt;/li&gt;
&lt;li&gt;成本降低&lt;/li&gt;
&lt;li&gt;系统性能接近全数字波束赋形&lt;/li&gt;
&lt;li&gt;非常适用于高频系统&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_03.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_03.webp&#34;  data-sub-html=&#34;&lt;h2&gt;混合波束赋形框图&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Beamforming/Beamforming_03.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;混合波束赋形框图&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;这样一来，毫米波频段的设备基带处理的通道数较少，一般为 4T4R，但天线单元众多，可达 512 个，其容量的主要来源是超大带宽和波束赋形。&lt;/p&gt;
&lt;p&gt;在波束赋形和 Massive MIMO 的加成之下，5G 在 Sub6G 频谱下单载波最多可达 7Gbps 的小区峰值速率，在毫米波频谱下单载波也最多达到了约 4.8Gbps 的小区峰值速率。&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>3GPP Releases</title>
      <link>https://www.techkoala.net/3gpp_releases/</link>
      <pubDate>Thu, 03 Sep 2020 15:16:34 +0800</pubDate>
      
      <guid>https://www.techkoala.net/3gpp_releases/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;Meanings of 3GPP releases&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;3gpp-release-schedule-and-summary&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#3gpp-release-schedule-and-summary&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3GPP Release schedule and summary&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;3GPP RELEASE&lt;/th&gt;
          &lt;th&gt;RELEASE DATE&lt;/th&gt;
          &lt;th&gt;DETAILS&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Phase 1&lt;/td&gt;
          &lt;td&gt;1992&lt;/td&gt;
          &lt;td&gt;Basic GSM&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Phase 2&lt;/td&gt;
          &lt;td&gt;1995&lt;/td&gt;
          &lt;td&gt;GSM features including EFR Codec&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Release 96&lt;/td&gt;
          &lt;td&gt;Q1 1997&lt;/td&gt;
          &lt;td&gt;GSM Updates, 14.4 kbps user data&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Release 97&lt;/td&gt;
          &lt;td&gt;Q1 1998&lt;/td&gt;
          &lt;td&gt;GSM additional features, GPRS&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Release 98&lt;/td&gt;
          &lt;td&gt;Q1 1999&lt;/td&gt;
          &lt;td&gt;GSM additional features, GPRS for PCS 1900, AMR, EDGE&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Release 99&lt;/td&gt;
          &lt;td&gt;Q1 2000&lt;/td&gt;
          &lt;td&gt;3G UMTS incorporating WCDMA radio access&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Release 4&lt;/td&gt;
          &lt;td&gt;Q2 2001&lt;/td&gt;
          &lt;td&gt;UMTS all-IP Core Network&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Release 5&lt;/td&gt;
          &lt;td&gt;Q1 2002&lt;/td&gt;
          &lt;td&gt;IMS and HSDPA&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Release 6&lt;/td&gt;
          &lt;td&gt;Q4 2004&lt;/td&gt;
          &lt;td&gt;HSUPA, MBMS, IMS enhancements, Push to Talk over Cellular, operation with WLAN&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Release 7&lt;/td&gt;
          &lt;td&gt;Q4 2007&lt;/td&gt;
          &lt;td&gt;Improvements in QoS &amp;amp; latency, VoIP, HSPA+, NFC integration, EDGE Evolution&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Release 8&lt;/td&gt;
          &lt;td&gt;Q4 2008&lt;/td&gt;
          &lt;td&gt;Introduction of LTE, SAE, OFDMA, MIMO, Dual Cell HSDPA&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Release 9&lt;/td&gt;
          &lt;td&gt;Q4 2009&lt;/td&gt;
          &lt;td&gt;WiMAX / LTE / UMTS interoperability, Dual Cell HSDPA with MIMO, Dual Cell HSUPA, LTE HeNB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Release 10&lt;/td&gt;
          &lt;td&gt;Q1 2011&lt;/td&gt;
          &lt;td&gt;LTE-Advanced, Backwards compatibility with Release 8 (LTE), Multi-Cell HSDPA&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Release 11&lt;/td&gt;
          &lt;td&gt;Q3 2012&lt;/td&gt;
          &lt;td&gt;Heterogeneous networks (HetNet), Coordinated Multipoint (CoMP), In device Coexistence (IDC), Advanced IP interconnection of Services,&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Release 12&lt;/td&gt;
          &lt;td&gt;March 2015&lt;/td&gt;
          &lt;td&gt;Enhanced Small Cells operation, Carrier Aggregation (2 uplink carriers, 3 downlink carriers, FDD/TDD carrier&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Release 13&lt;/td&gt;
          &lt;td&gt;Q1 2016&lt;/td&gt;
          &lt;td&gt;LTE-U / LTE-LAA, LTE-M, Elevation beamforming / Full Dimension MIMO, Indoor positioning, LTE-M Cat 1.4MHz &amp;amp; Cat 200kHz introduced&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Release 14&lt;/td&gt;
          &lt;td&gt;Mid 2017&lt;/td&gt;
          &lt;td&gt;Elements on road to 5G&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Release 15&lt;/td&gt;
          &lt;td&gt;End 2018&lt;/td&gt;
          &lt;td&gt;5G Phase 1 specification&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Release 16&lt;/td&gt;
          &lt;td&gt;2020&lt;/td&gt;
          &lt;td&gt;5G Phase 2 specification&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Release 17&lt;/td&gt;
          &lt;td&gt;~Sept 2021&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] &lt;a href=&#34;https://www.electronics-notes.com/articles/connectivity/3gpp/standards-releases.php&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;3GPP Specification Release Numbers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>将静态网站从 GitHub Pages 迁移到 Vercel</title>
      <link>https://www.techkoala.net/migrated_to_vercel/</link>
      <pubDate>Wed, 26 Aug 2020 16:18:53 +0800</pubDate>
      
      <guid>https://www.techkoala.net/migrated_to_vercel/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;本文介绍如何将静态网站从 GitHub Pages 迁移到 Vercel，以获得更快的访问速度和更好的用户体验。&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;一迁移背景&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%80%e8%bf%81%e7%a7%bb%e8%83%8c%e6%99%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;一、迁移背景&lt;/h2&gt;&lt;h3 id=&#34;11-迁移时间&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#11-%e8%bf%81%e7%a7%bb%e6%97%b6%e9%97%b4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;1.1 迁移时间&lt;/h3&gt;&lt;p&gt;网站于 2020-8-26 完成从 GitHub Pages 到 &lt;a href=&#34;https://vercel.com&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Vercel&lt;/a&gt; 的迁移。&lt;/p&gt;
&lt;h3 id=&#34;12-迁移原因&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#12-%e8%bf%81%e7%a7%bb%e5%8e%9f%e5%9b%a0&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;1.2 迁移原因&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;GitHub Pages 在国内访问速度持续下降&lt;/li&gt;
&lt;li&gt;Cloudflare CDN 在国内表现不稳定&lt;/li&gt;
&lt;li&gt;需要寻找更适合国内访问的替代方案&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;二为什么选择-vercel&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%ba%8c%e4%b8%ba%e4%bb%80%e4%b9%88%e9%80%89%e6%8b%a9-vercel&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;二、为什么选择 Vercel&lt;/h2&gt;&lt;h3 id=&#34;21-vercel-简介&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#21-vercel-%e7%ae%80%e4%bb%8b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;2.1 Vercel 简介&lt;/h3&gt;&lt;div class=&#34;details admonition quote open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;引用&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;Vercel is a cloud platform for &lt;strong&gt;static sites&lt;/strong&gt; and &lt;strong&gt;Serverless Functions&lt;/strong&gt; that fits perfectly with your workflow. It enables developers to host &lt;strong&gt;Jamstack&lt;/strong&gt; websites and web services that &lt;strong&gt;deploy instantly&lt;/strong&gt;, &lt;strong&gt;scale automatically&lt;/strong&gt;, and requires &lt;strong&gt;no supervision&lt;/strong&gt;, all with &lt;strong&gt;no configuration&lt;/strong&gt;.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&#34;22-主要优势&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#22-%e4%b8%bb%e8%a6%81%e4%bc%98%e5%8a%bf&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;2.2 主要优势&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;全球化部署&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;拥有香港和台湾节点&lt;/li&gt;
&lt;li&gt;对中国大陆用户访问友好&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;优质服务&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自动部署&lt;/li&gt;
&lt;li&gt;自动扩展&lt;/li&gt;
&lt;li&gt;零配置部署&lt;/li&gt;
&lt;li&gt;免费套餐满足小型网站需求&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Vercel/vercel.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Vercel/vercel.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Vercel 平台概览&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Vercel/vercel.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Vercel 平台概览&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;三迁移步骤&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%89%e8%bf%81%e7%a7%bb%e6%ad%a5%e9%aa%a4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;三、迁移步骤&lt;/h2&gt;&lt;h3 id=&#34;31-项目导入&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#31-%e9%a1%b9%e7%9b%ae%e5%af%bc%e5%85%a5&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3.1 项目导入&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;使用 GitHub 账号登录 Vercel&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：Vercel 不支持使用 QQ 邮箱作为主邮箱的 GitHub 账号，如有需要请先更改 GitHub 主邮箱。&lt;/p&gt;

&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;导入 GitHub 仓库
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Vercel/import.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Vercel/import.webp&#34;  data-sub-html=&#34;&lt;h2&gt;导入 GitHub 项目&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Vercel/import.webp&#39;  
             &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;导入 GitHub 项目&lt;/figcaption&gt;
       &lt;/figure&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;选择部署目录
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Vercel/import2.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Vercel/import2.webp&#34;  data-sub-html=&#34;&lt;h2&gt;选择部署目录&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Vercel/import2.webp&#39;  
             &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;选择部署目录&lt;/figcaption&gt;
       &lt;/figure&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;32-构建配置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#32-%e6%9e%84%e5%bb%ba%e9%85%8d%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3.2 构建配置&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;选择构建方式
&lt;ul&gt;
&lt;li&gt;本地构建：选择 &lt;code&gt;Other&lt;/code&gt; 并启用 &lt;code&gt;OVERRIDE&lt;/code&gt;，无需填写构建命令&lt;/li&gt;
&lt;li&gt;Vercel 构建：选择对应的构建框架（如 Hugo）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Vercel/build.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Vercel/build.webp&#34;  data-sub-html=&#34;&lt;h2&gt;构建选项配置&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Vercel/build.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;构建选项配置&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;33-域名配置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#33-%e5%9f%9f%e5%90%8d%e9%85%8d%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3.3 域名配置&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;Vercel 设置
&lt;ul&gt;
&lt;li&gt;进入项目设置 &amp;gt; 域名&lt;/li&gt;
&lt;li&gt;添加自定义域名&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Vercel/domain.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Vercel/domain.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Vercel 域名配置&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Vercel/domain.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Vercel 域名配置&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Cloudflare DNS 配置
&lt;ol&gt;
&lt;li&gt;删除原有 GitHub Pages 的 DNS 记录&lt;/li&gt;
&lt;li&gt;添加新的 DNS 记录：
&lt;ul&gt;
&lt;li&gt;类型：&lt;code&gt;CNAME&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;名称：&lt;code&gt;www&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;目标：&lt;code&gt;cname.vercel-dns.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;重要&lt;/strong&gt;：将 &lt;code&gt;Proxy Status&lt;/code&gt; 设置为 &lt;code&gt;DNS only&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Vercel/cloudflare.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Vercel/cloudflare.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Cloudflare DNS 配置&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Vercel/cloudflare.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Cloudflare DNS 配置&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;div class=&#34;details admonition tip open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 352 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;根域名配置&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;&lt;p&gt;如需配置根域名跳转到 www：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;添加 A 记录&lt;/li&gt;
&lt;li&gt;指向 &lt;code&gt;76.76.21.21&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;同样设置 &lt;code&gt;Proxy Status&lt;/code&gt; 为 &lt;code&gt;DNS only&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&#34;四迁移效果&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%9b%9b%e8%bf%81%e7%a7%bb%e6%95%88%e6%9e%9c&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;四、迁移效果&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;访问速度&lt;/strong&gt;：显著提升&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;稳定性&lt;/strong&gt;：更加可靠&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;部署体验&lt;/strong&gt;：自动化程度高&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;参考资料&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考资料&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://vercel.com/docs/introduction&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Vercel 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://vercel.com/guides/deploying-hugo-with-vercel&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Vercel 部署指南&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developers.cloudflare.com/dns/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Cloudflare DNS 设置&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>常用 DNS 服务器</title>
      <link>https://www.techkoala.net/dns_list/</link>
      <pubDate>Fri, 21 Aug 2020 18:44:20 +0800</pubDate>
      
      <guid>https://www.techkoala.net/dns_list/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;列举国内外常见的 DNS，方便替换使用&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;ipv4&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#ipv4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;IPv4&lt;/h2&gt;&lt;h3 id=&#34;国内&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%9b%bd%e5%86%85&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;国内&lt;/h3&gt;&lt;h4 id=&#34;知名-dns-服务&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%9f%a5%e5%90%8d-dns-%e6%9c%8d%e5%8a%a1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;知名 DNS 服务&lt;/h4&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;名称&lt;/th&gt;
          &lt;th&gt;IP 地址（首选）&lt;/th&gt;
          &lt;th&gt;IP 地址（备选）&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;114 常规 DNS&lt;/td&gt;
          &lt;td&gt;114.114.114.114&lt;/td&gt;
          &lt;td&gt;114.114.115.115&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;114 拦截钓鱼病毒木马网站&lt;/td&gt;
          &lt;td&gt;114.114.114.119&lt;/td&gt;
          &lt;td&gt;114.114.115.119&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;114 拦截色情网站&lt;/td&gt;
          &lt;td&gt;114.114.114.110&lt;/td&gt;
          &lt;td&gt;114.114.115.110&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;阿里 AliDNS&lt;/td&gt;
          &lt;td&gt;223.5.5.5&lt;/td&gt;
          &lt;td&gt;223.6.6.6&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;百度 BaiduDNS&lt;/td&gt;
          &lt;td&gt;180.76.76.76&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DNSPod DNS+&lt;/td&gt;
          &lt;td&gt;119.29.29.29&lt;/td&gt;
          &lt;td&gt;182.254.116.116&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CNNIC SDNS&lt;/td&gt;
          &lt;td&gt;1.2.4.8&lt;/td&gt;
          &lt;td&gt;210.2.4.8&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;oneDNS&lt;/td&gt;
          &lt;td&gt;117.50.11.11&lt;/td&gt;
          &lt;td&gt;52.80.66.66&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DNS 派电信/移动/铁通&lt;/td&gt;
          &lt;td&gt;101.226.4.6&lt;/td&gt;
          &lt;td&gt;218.30.118.6&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DNS 派联通&lt;/td&gt;
          &lt;td&gt;123.125.81.6&lt;/td&gt;
          &lt;td&gt;140.207.198.6&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id=&#34;全国各地电信-dns-服务器-ip-地址&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%85%a8%e5%9b%bd%e5%90%84%e5%9c%b0%e7%94%b5%e4%bf%a1-dns-%e6%9c%8d%e5%8a%a1%e5%99%a8-ip-%e5%9c%b0%e5%9d%80&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;全国各地电信 DNS 服务器 IP 地址&lt;/h4&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;名称&lt;/th&gt;
          &lt;th&gt;IP 地址（首选）&lt;/th&gt;
          &lt;th&gt;IP 地址（备选）&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;安徽电信 DNS&lt;/td&gt;
          &lt;td&gt;61.132.163.68&lt;/td&gt;
          &lt;td&gt;202.102.213.68&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;北京电信 DNS&lt;/td&gt;
          &lt;td&gt;219.141.136.10&lt;/td&gt;
          &lt;td&gt;219.141.140.10&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;重庆电信 DNS&lt;/td&gt;
          &lt;td&gt;61.128.192.68&lt;/td&gt;
          &lt;td&gt;61.128.128.68&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;福建电信 DNS&lt;/td&gt;
          &lt;td&gt;218.85.152.99&lt;/td&gt;
          &lt;td&gt;218.85.157.99&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;甘肃电信 DNS&lt;/td&gt;
          &lt;td&gt;202.100.64.68&lt;/td&gt;
          &lt;td&gt;61.178.0.93&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;广东电信 DNS&lt;/td&gt;
          &lt;td&gt;202.96.128.86&lt;/td&gt;
          &lt;td&gt;202.96.128.166&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;202.96.134.33&lt;/td&gt;
          &lt;td&gt;202.96.128.68&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;广西电信 DNS&lt;/td&gt;
          &lt;td&gt;202.103.225.68&lt;/td&gt;
          &lt;td&gt;202.103.224.68&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;贵州电信 DNS&lt;/td&gt;
          &lt;td&gt;202.98.192.67&lt;/td&gt;
          &lt;td&gt;202.98.198.167&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;河南电信 DNS&lt;/td&gt;
          &lt;td&gt;222.88.88.88&lt;/td&gt;
          &lt;td&gt;222.85.85.85&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;黑龙江电信&lt;/td&gt;
          &lt;td&gt;219.147.198.230&lt;/td&gt;
          &lt;td&gt;219.147.198.242&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;湖北电信 DNS&lt;/td&gt;
          &lt;td&gt;202.103.24.68&lt;/td&gt;
          &lt;td&gt;202.103.0.68&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;湖南电信 DNS&lt;/td&gt;
          &lt;td&gt;222.246.129.80&lt;/td&gt;
          &lt;td&gt;59.51.78.211&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;江苏电信 DNS&lt;/td&gt;
          &lt;td&gt;218.2.2.2&lt;/td&gt;
          &lt;td&gt;218.4.4.4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;61.147.37.1&lt;/td&gt;
          &lt;td&gt;218.2.135.1&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;江西电信 DNS&lt;/td&gt;
          &lt;td&gt;202.101.224.69&lt;/td&gt;
          &lt;td&gt;202.101.226.68&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;内蒙古电信&lt;/td&gt;
          &lt;td&gt;219.148.162.31&lt;/td&gt;
          &lt;td&gt;222.74.39.50&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;山东电信 DNS&lt;/td&gt;
          &lt;td&gt;219.146.1.66&lt;/td&gt;
          &lt;td&gt;219.147.1.66&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;陕西电信 DNS&lt;/td&gt;
          &lt;td&gt;218.30.19.40&lt;/td&gt;
          &lt;td&gt;61.134.1.4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;上海电信 DNS&lt;/td&gt;
          &lt;td&gt;202.96.209.133&lt;/td&gt;
          &lt;td&gt;116.228.111.118&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;202.96.209.5&lt;/td&gt;
          &lt;td&gt;180.168.255.118&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;四川电信 DNS&lt;/td&gt;
          &lt;td&gt;61.139.2.69&lt;/td&gt;
          &lt;td&gt;218.6.200.139&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;天津电信 DNS&lt;/td&gt;
          &lt;td&gt;219.150.32.132&lt;/td&gt;
          &lt;td&gt;219.146.0.132&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;云南电信 DNS&lt;/td&gt;
          &lt;td&gt;222.172.200.68&lt;/td&gt;
          &lt;td&gt;61.166.150.123&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;浙江电信 DNS&lt;/td&gt;
          &lt;td&gt;202.101.172.35&lt;/td&gt;
          &lt;td&gt;61.153.177.196&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;61.153.81.75&lt;/td&gt;
          &lt;td&gt;60.191.244.5&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id=&#34;全国各地联通-dns-服务器-ip-地址&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%85%a8%e5%9b%bd%e5%90%84%e5%9c%b0%e8%81%94%e9%80%9a-dns-%e6%9c%8d%e5%8a%a1%e5%99%a8-ip-%e5%9c%b0%e5%9d%80&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;全国各地联通 DNS 服务器 IP 地址&lt;/h4&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;名称&lt;/th&gt;
          &lt;th&gt;IP 地址（首选）&lt;/th&gt;
          &lt;th&gt;IP 地址（备选）&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;北京联通 DNS&lt;/td&gt;
          &lt;td&gt;123.123.123.123&lt;/td&gt;
          &lt;td&gt;123.123.123.124&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;202.106.0.20&lt;/td&gt;
          &lt;td&gt;202.106.195.68&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;重庆联通 DNS&lt;/td&gt;
          &lt;td&gt;221.5.203.98&lt;/td&gt;
          &lt;td&gt;221.7.92.98&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;广东联通 DNS&lt;/td&gt;
          &lt;td&gt;210.21.196.6&lt;/td&gt;
          &lt;td&gt;221.5.88.88&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;河北联通 DNS&lt;/td&gt;
          &lt;td&gt;202.99.160.68&lt;/td&gt;
          &lt;td&gt;202.99.166.4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;河南联通 DNS&lt;/td&gt;
          &lt;td&gt;202.102.224.68&lt;/td&gt;
          &lt;td&gt;202.102.227.68&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;黑龙江联通&lt;/td&gt;
          &lt;td&gt;202.97.224.69&lt;/td&gt;
          &lt;td&gt;202.97.224.68&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;吉林联通 DNS&lt;/td&gt;
          &lt;td&gt;202.98.0.68&lt;/td&gt;
          &lt;td&gt;202.98.5.68&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;江苏联通 DNS&lt;/td&gt;
          &lt;td&gt;221.6.4.66&lt;/td&gt;
          &lt;td&gt;221.6.4.67&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;内蒙古联通&lt;/td&gt;
          &lt;td&gt;202.99.224.68&lt;/td&gt;
          &lt;td&gt;202.99.224.8&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;山东联通 DNS&lt;/td&gt;
          &lt;td&gt;202.102.128.68&lt;/td&gt;
          &lt;td&gt;202.102.152.3&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;202.102.134.68&lt;/td&gt;
          &lt;td&gt;202.102.154.3&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;山西联通 DNS&lt;/td&gt;
          &lt;td&gt;202.99.192.66&lt;/td&gt;
          &lt;td&gt;202.99.192.68&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;陕西联通 DNS&lt;/td&gt;
          &lt;td&gt;221.11.1.67&lt;/td&gt;
          &lt;td&gt;221.11.1.68&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;上海联通 DNS&lt;/td&gt;
          &lt;td&gt;210.22.70.3&lt;/td&gt;
          &lt;td&gt;210.22.84.3&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;四川联通 DNS&lt;/td&gt;
          &lt;td&gt;119.6.6.6&lt;/td&gt;
          &lt;td&gt;124.161.87.155&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;天津联通 DNS&lt;/td&gt;
          &lt;td&gt;202.99.104.68&lt;/td&gt;
          &lt;td&gt;202.99.96.68&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;浙江联通 DNS&lt;/td&gt;
          &lt;td&gt;221.12.1.227&lt;/td&gt;
          &lt;td&gt;221.12.33.227&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;辽宁联通 DNS&lt;/td&gt;
          &lt;td&gt;202.96.69.38&lt;/td&gt;
          &lt;td&gt;202.96.64.68&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id=&#34;全国各地移动-dns-服务器-ip-地址&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%85%a8%e5%9b%bd%e5%90%84%e5%9c%b0%e7%a7%bb%e5%8a%a8-dns-%e6%9c%8d%e5%8a%a1%e5%99%a8-ip-%e5%9c%b0%e5%9d%80&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;全国各地移动 DNS 服务器 IP 地址&lt;/h4&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;名称&lt;/th&gt;
          &lt;th&gt;IP 地址（首选）&lt;/th&gt;
          &lt;th&gt;IP 地址（备选）&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;江苏移动 DNS&lt;/td&gt;
          &lt;td&gt;221.131.143.69&lt;/td&gt;
          &lt;td&gt;112.4.0.55&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;安徽移动 DNS&lt;/td&gt;
          &lt;td&gt;211.138.180.2&lt;/td&gt;
          &lt;td&gt;211.138.180.3&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;山东移动 DNS&lt;/td&gt;
          &lt;td&gt;218.201.96.130&lt;/td&gt;
          &lt;td&gt;211.137.191.26&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;香港地区&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%a6%99%e6%b8%af%e5%9c%b0%e5%8c%ba&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;香港地区&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;名称&lt;/th&gt;
          &lt;th&gt;IP 地址（首选）&lt;/th&gt;
          &lt;th&gt;IP 地址（备选）&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;香港宽频 DNS&lt;/td&gt;
          &lt;td&gt;203.80.96.10&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;和记环球电讯 DNS&lt;/td&gt;
          &lt;td&gt;202.45.84.58&lt;/td&gt;
          &lt;td&gt;202.45.84.59&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pacific SuperNet DNS&lt;/td&gt;
          &lt;td&gt;202.14.67.4&lt;/td&gt;
          &lt;td&gt;202.14.67.14&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;台湾地区&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%b0%e6%b9%be%e5%9c%b0%e5%8c%ba&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;台湾地区&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;名称&lt;/th&gt;
          &lt;th&gt;IP 地址（首选）&lt;/th&gt;
          &lt;th&gt;IP 地址（备选）&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;中华电信 DNS&lt;/td&gt;
          &lt;td&gt;168.95.1.1&lt;/td&gt;
          &lt;td&gt;168.95.192.1&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;数位联合电信 DNS&lt;/td&gt;
          &lt;td&gt;139.175.252.16&lt;/td&gt;
          &lt;td&gt;139.175.55.244&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;台湾网路资讯&lt;/td&gt;
          &lt;td&gt;101.101.101.101&lt;/td&gt;
          &lt;td&gt;101.102.103.104&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;韩国&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%9f%a9%e5%9b%bd&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;韩国&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;名称&lt;/th&gt;
          &lt;th&gt;IP 地址（首选）&lt;/th&gt;
          &lt;th&gt;IP 地址（备选）&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;KT olleh DNS&lt;/td&gt;
          &lt;td&gt;168.126.63.1&lt;/td&gt;
          &lt;td&gt;168.126.63.2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;SK Broadband DNS&lt;/td&gt;
          &lt;td&gt;210.220.163.82&lt;/td&gt;
          &lt;td&gt;219.250.36.130&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;LG U+ DNS&lt;/td&gt;
          &lt;td&gt;164.124.101.2&lt;/td&gt;
          &lt;td&gt;203.248.252.2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;164.124.107.9&lt;/td&gt;
          &lt;td&gt;203.248.242.2&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;美国&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%be%8e%e5%9b%bd&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;美国&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;名称&lt;/th&gt;
          &lt;th&gt;IP 地址（首选）&lt;/th&gt;
          &lt;th&gt;IP 地址（备选）&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Cloudflare DNS&lt;/td&gt;
          &lt;td&gt;1.1.1.1&lt;/td&gt;
          &lt;td&gt;1.0.0.1&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Google DNS&lt;/td&gt;
          &lt;td&gt;8.8.8.8&lt;/td&gt;
          &lt;td&gt;8.8.4.4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;IBM Quad9&lt;/td&gt;
          &lt;td&gt;9.9.9.9&lt;/td&gt;
          &lt;td&gt;149.112.112.112&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DNS.SB&lt;/td&gt;
          &lt;td&gt;185.222.222.222&lt;/td&gt;
          &lt;td&gt;185.184.222.222&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;OpenDNS&lt;/td&gt;
          &lt;td&gt;208.67.222.222&lt;/td&gt;
          &lt;td&gt;208.67.220.220&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;V2EX DNS&lt;/td&gt;
          &lt;td&gt;199.91.73.222&lt;/td&gt;
          &lt;td&gt;178.79.131.110&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;HE Public DNS&lt;/td&gt;
          &lt;td&gt;74.82.42.42&lt;/td&gt;
          &lt;td&gt;66.220.18.42&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;其他地区&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%85%b6%e4%bb%96%e5%9c%b0%e5%8c%ba&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;其他地区&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;名称&lt;/th&gt;
          &lt;th&gt;IP 地址（首选）&lt;/th&gt;
          &lt;th&gt;IP 地址（备选）&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;俄罗斯 Yandex Public DNS&lt;/td&gt;
          &lt;td&gt;77.88.8.8&lt;/td&gt;
          &lt;td&gt;77.88.8.1&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;俄罗斯 SafeDNS&lt;/td&gt;
          &lt;td&gt;195.46.39.39&lt;/td&gt;
          &lt;td&gt;195.46.39.40&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;德国 DNS.WATCH Public DNS&lt;/td&gt;
          &lt;td&gt;84.200.69.80&lt;/td&gt;
          &lt;td&gt;84.200.70.40&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;瑞士 xiala.net Public DNS&lt;/td&gt;
          &lt;td&gt;77.109.148.136&lt;/td&gt;
          &lt;td&gt;77.109.148.137&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;丹麦 UncensoredDNS&lt;/td&gt;
          &lt;td&gt;91.239.100.100&lt;/td&gt;
          &lt;td&gt;89.233.43.71&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;荷兰 Freenom World Public DNS&lt;/td&gt;
          &lt;td&gt;80.80.80.80&lt;/td&gt;
          &lt;td&gt;80.80.81.81&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;ipv6&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#ipv6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;IPv6&lt;/h2&gt;&lt;h3 id=&#34;国内-1&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%9b%bd%e5%86%85-1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;国内&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;名称&lt;/th&gt;
          &lt;th&gt;IP 地址（首选）&lt;/th&gt;
          &lt;th&gt;IP 地址（备选）&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;百度&lt;/td&gt;
          &lt;td&gt;2400:da00::6666&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;阿里&lt;/td&gt;
          &lt;td&gt;2400:3200::1&lt;/td&gt;
          &lt;td&gt;2400:3200:baba::1&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CNNIC&lt;/td&gt;
          &lt;td&gt;2001:dc7:1000::1&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;下一代互联网北京研究中心&lt;/td&gt;
          &lt;td&gt;240C::6666&lt;/td&gt;
          &lt;td&gt;240C::6644&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id=&#34;高校&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%ab%98%e6%a0%a1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;高校&lt;/h4&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;名称&lt;/th&gt;
          &lt;th&gt;IP 地址（首选）&lt;/th&gt;
          &lt;th&gt;IP 地址（备选）&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;北京邮电大学&lt;/td&gt;
          &lt;td&gt;2001:da8:202:10::36&lt;/td&gt;
          &lt;td&gt;2001:da8:202:10::37&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;上海交通大学&lt;/td&gt;
          &lt;td&gt;2001:da8:8000:1:202:120:2:100&lt;/td&gt;
          &lt;td&gt;2001:da8:8000:1:202:120:2:101&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;中科院网络信息中心&lt;/td&gt;
          &lt;td&gt;2001:cc0:2fff:1::6666&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;北京交通大学&lt;/td&gt;
          &lt;td&gt;2001:da8:205:2060::188&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;清华大学&lt;/td&gt;
          &lt;td&gt;2001:da8:ff:305:20c:29ff:fe1f:a92a&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;清华大学 TUNA 协会&lt;/td&gt;
          &lt;td&gt;2001:da8::666&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;北京科技大学&lt;/td&gt;
          &lt;td&gt;2001:da8:208:10::6&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;台湾地区-1&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%b0%e6%b9%be%e5%9c%b0%e5%8c%ba-1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;台湾地区&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;名称&lt;/th&gt;
          &lt;th&gt;IP 地址（首选）&lt;/th&gt;
          &lt;th&gt;IP 地址（备选）&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;中华电信&lt;/td&gt;
          &lt;td&gt;2001:b000:168::1&lt;/td&gt;
          &lt;td&gt;2001:b000:168::2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;台湾网路资讯&lt;/td&gt;
          &lt;td&gt;2001:de4::101&lt;/td&gt;
          &lt;td&gt;2001:de4::102&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;美国-1&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%be%8e%e5%9b%bd-1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;美国&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;名称&lt;/th&gt;
          &lt;th&gt;IP 地址（首选）&lt;/th&gt;
          &lt;th&gt;IP 地址（备选）&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;GOOGLE&lt;/td&gt;
          &lt;td&gt;2001:4860:4860::8888&lt;/td&gt;
          &lt;td&gt;2001:4860:4860::8844&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CloudFlare DNS&lt;/td&gt;
          &lt;td&gt;2606:4700:4700::1111&lt;/td&gt;
          &lt;td&gt;2606:4700:4700::1001&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;IBM&lt;/td&gt;
          &lt;td&gt;2620:fe::fe&lt;/td&gt;
          &lt;td&gt;2620:fe::9&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Cisco OpenDNS&lt;/td&gt;
          &lt;td&gt;2620:0:ccc::2&lt;/td&gt;
          &lt;td&gt;2620:0:ccd::2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;HE Public DNS&lt;/td&gt;
          &lt;td&gt;2001:470:20::2&lt;/td&gt;
          &lt;td&gt;2001:470:0:9d::2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Verisign Public DNS&lt;/td&gt;
          &lt;td&gt;2620:74:1b::1:1&lt;/td&gt;
          &lt;td&gt;2620:74:1c::2:2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Neustar Recursive DNS&lt;/td&gt;
          &lt;td&gt;2610:a1:1018::1&lt;/td&gt;
          &lt;td&gt;2610:a1:1019::1&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;其他地区-1&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%85%b6%e4%bb%96%e5%9c%b0%e5%8c%ba-1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;其他地区&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;名称&lt;/th&gt;
          &lt;th&gt;IP 地址（首选）&lt;/th&gt;
          &lt;th&gt;IP 地址（备选）&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;俄罗斯 Yandex Public DNS&lt;/td&gt;
          &lt;td&gt;2a02:6b8::feed:0ff&lt;/td&gt;
          &lt;td&gt;2a02:6b8:0:1::feed:0ff&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;德国 DNS.WATCH Public DNS&lt;/td&gt;
          &lt;td&gt;2001:1608:10:25::1c04:b12f&lt;/td&gt;
          &lt;td&gt;2001:1608:10:25::9249:d69b&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;瑞士 xiala.net Public DNS&lt;/td&gt;
          &lt;td&gt;2001:1620:2078:136::&lt;/td&gt;
          &lt;td&gt;2001:1620:2078:137::&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;丹麦 UncensoredDNS&lt;/td&gt;
          &lt;td&gt;2001:67c:28a4::&lt;/td&gt;
          &lt;td&gt;2a01:3a0:53:53::&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;https://www.iplaysoft.com/public-dns.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;全球免费公共 dns 解析服务器 ip 地址列表推荐 (解决无法上网/加速/防劫持)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;http://ip.cn/dns.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;公共 dns 服务器 ip 地址&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>网络分析工具：NetCat</title>
      <link>https://www.techkoala.net/netcat/</link>
      <pubDate>Wed, 19 Aug 2020 23:15:35 +0800</pubDate>
      
      <guid>https://www.techkoala.net/netcat/</guid>
      <description>&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/NetCat/netcat.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/NetCat/netcat.webp&#34;  data-sub-html=&#34;&lt;h2&gt;网络瑞士军刀 —— NetCat&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/NetCat/netcat.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;网络瑞士军刀 —— NetCat&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;什么是-netcat&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bb%80%e4%b9%88%e6%98%af-netcat&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;什么是 NetCat&lt;/h2&gt;&lt;p&gt;简单来说，NetCat (nc) 是一个命令行工具，能够让你很方便、很灵活地操纵 &lt;code&gt;传输层协议&lt;/code&gt;（TCP ＆ UDP）&lt;/p&gt;
&lt;p&gt;nc 可以在两台设备上面相互交互，即&lt;code&gt;侦听模式&lt;/code&gt;/&lt;code&gt;传输模式&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;nc 包含以下主要功能：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Telnet 功能&lt;/li&gt;
&lt;li&gt;获取 banner 信息&lt;/li&gt;
&lt;li&gt;传输文本信息&lt;/li&gt;
&lt;li&gt;传输文件 / 目录&lt;/li&gt;
&lt;li&gt;加密传输文件，默认不加密&lt;/li&gt;
&lt;li&gt;远程控制&lt;/li&gt;
&lt;li&gt;加密所有流量&lt;/li&gt;
&lt;li&gt;流媒体服务器&lt;/li&gt;
&lt;li&gt;远程克隆硬盘&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;使用-netcat&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bd%bf%e7%94%a8-netcat&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;使用 NetCat&lt;/h2&gt;&lt;p&gt;一般来说，nc 的命令行包括如下几个部分：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-31&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc 命令选项 主机 端口&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;命令选项&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%91%bd%e4%bb%a4%e9%80%89%e9%a1%b9&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;命令选项&lt;/h3&gt;&lt;blockquote&gt;
  &lt;p&gt;本文内容基于 OpenBSD 社区的变种（也叫 OpenBSD netcat，部分命令与原版有差异。 ）&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;下面列举了一些常用选项，更多选项参见 &lt;a href=&#34;https://man.openbsd.org/nc.1&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;OpenBSD manual page&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-32&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;选项	   是否有 “选项值”	   说明
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-h	   NO	           输出 nc 的帮助
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-v	   NO	           在网络通讯时，显示详细的输出信息
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-n	   NO	           对命令行中的主机，不进行域名解析，如果主机是 IP 地址，需要用该选项
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-p	  YES	           指定端口号
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-l	  NO	           开启监听模式，nc 作为服务端，如不加，nc 默认作为客户端
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-u	  NO	           使用 UDP 协，如不加该选项，默认是 TCP 协议
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-w	  YES	           设置连接的超时间隔（N 秒）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-q	  YES	           让 nc 延时（N 秒）再退出
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-z	  NO	           开启 zero-I/O 模式，该选项仅用于端口扫描
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-k	  NO	           配合 -l 选项使用，可以重复接受客户端连接
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-X	  YES	           指定代理的类型
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-x	  YES	           以 IP:port 的格式指定代理
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-d    NO               后台模式&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;主机&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%bb%e6%9c%ba&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;主机&lt;/h3&gt;&lt;p&gt;这部分可以没有，可以以 &lt;code&gt;IP 地址&lt;/code&gt; 形式表示，也可以以 &lt;code&gt;域名&lt;/code&gt; 形式表示。&lt;/p&gt;
&lt;h3 id=&#34;端口&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ab%af%e5%8f%a3&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;端口&lt;/h3&gt;&lt;p&gt;这部分可以没有，可以是单个端口，可以是端口范围。&lt;/p&gt;
&lt;h2 id=&#34;常用使用场景示例&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%b8%b8%e7%94%a8%e4%bd%bf%e7%94%a8%e5%9c%ba%e6%99%af%e7%a4%ba%e4%be%8b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;常用使用场景示例&lt;/h2&gt;&lt;h3 id=&#34;测试某个远程主机的监听端口是否可达&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%b5%8b%e8%af%95%e6%9f%90%e4%b8%aa%e8%bf%9c%e7%a8%8b%e4%b8%bb%e6%9c%ba%e7%9a%84%e7%9b%91%e5%90%ac%e7%ab%af%e5%8f%a3%e6%98%af%e5%90%a6%e5%8f%af%e8%be%be&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;测试某个远程主机的监听端口是否可达&lt;/h3&gt;&lt;p&gt;经常有这种需求，要判断某个主机的监听端口是否能连上。导致监听端口无法连接，通常有两种原因：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;监听端口没开启&lt;/li&gt;
&lt;li&gt;监听端口虽然开启，但是被防火墙阻拦了&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;对第 1 个原因，（如果你能在该主机上运行命令）可以直接用 &lt;code&gt;netstat&lt;/code&gt; 这个命令查看监听端口是否开启；但对于第 2 个原因，&lt;code&gt;netstat&lt;/code&gt; 就用不上了，这时候就可以用 nc 来帮你搞定。&lt;/p&gt;
&lt;p&gt;用如下命令可以测试某个 IP 地址上的某个监听端口是否开启:&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-33&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc -nv ip port&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;注：&lt;/strong&gt;　默认情况下 nc 会等待很久，然后才告诉你连接失败。如果你所处的网络环境稳定且高速（比如：局域网内），那么，你可以追加 &lt;code&gt;-w&lt;/code&gt; 选项，设置一个比较小的超时值。在下面的例子中，超时值设为 3 秒。&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-34&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc -nv -w &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; ip port&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;判断防火墙是否允许-or-禁止某个端口&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%88%a4%e6%96%ad%e9%98%b2%e7%81%ab%e5%a2%99%e6%98%af%e5%90%a6%e5%85%81%e8%ae%b8-or-%e7%a6%81%e6%ad%a2%e6%9f%90%e4%b8%aa%e7%ab%af%e5%8f%a3&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;判断防火墙是否允许 or 禁止某个端口&lt;/h3&gt;&lt;p&gt;假设你正在配置防火墙规则，禁止 TCP 的 8080 端口对外监听。那么，你如何验证自己的配置生效？&lt;/p&gt;
&lt;p&gt;为了叙述方便，设想如下场景：
有两台主机 ——&lt;code&gt;主机 C&lt;/code&gt; 充当客户端，&lt;code&gt;主机 S&lt;/code&gt; 充当服务端。
然后要判断&lt;code&gt;主机 S&lt;/code&gt; 上的防火墙是否会拦截其它主机对 8080 TCP 端口的连接。&lt;/p&gt;
&lt;p&gt;在&lt;code&gt;主机 S&lt;/code&gt; 上运行 nc，让它在 8080 端口，命令如下：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-35&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc -lv -p &lt;span class=&#34;m&#34;&gt;8080&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;然后在 “主机 C” 上运行 nc，测试 “主机 S” 上的 8080 端口是否可达&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注：&lt;/strong&gt;　在默认情况下，nc 开启 listen 模式充当服务端，在接受&lt;strong&gt;第一次&lt;/strong&gt;客户端连接之后，就会把监听端口关闭。如果你想要让 nc 始终监听模式，使之能&lt;strong&gt;重复&lt;/strong&gt;接受客户端发起的连接，可以追加 &lt;code&gt;-k&lt;/code&gt; 选项。&lt;/p&gt;
&lt;h3 id=&#34;端口扫描&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ab%af%e5%8f%a3%e6%89%ab%e6%8f%8f&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;端口扫描&lt;/h3&gt;&lt;p&gt;下面这个命令，用来扫描的端口范围从 1 到 1024&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-36&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc -znv ip 1-1024&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;选项 -z
是指开启 &lt;code&gt;zero-I/O 模式&lt;/code&gt;。该模式 nc 只判断某个监听端口是否能连上，连上后&lt;strong&gt;不&lt;/strong&gt;与对端进行数据通讯。&lt;/p&gt;
&lt;p&gt;**注：**端口扫描的时候，&lt;code&gt;-v&lt;/code&gt; 选项会把成功/失败的结果统统打印出来。通常关注的都是 “扫描成功” 的那些端口。因此，可以用可以配合使用 &lt;code&gt;grep&lt;/code&gt; 过滤一下，只打印扫出来的端口&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-37&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc -znv ip 1-1024  2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep succeeded&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;此外，由于 &lt;code&gt;-v&lt;/code&gt; 选项产生的输出位于 &lt;code&gt;stderr&lt;/code&gt;，上述命令中的 &lt;code&gt;2&amp;gt;&amp;amp;1&lt;/code&gt; 用来把 &lt;code&gt;stderr&lt;/code&gt; 合并到 &lt;code&gt;stdout&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;另：&lt;/strong&gt; nc 默认超时较大，导致扫描速度较慢。建议根据网络情况合理设置超时值，加快扫描速度。&lt;/p&gt;
&lt;h3 id=&#34;探测服务器类型和软件版本&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%8e%a2%e6%b5%8b%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%b1%bb%e5%9e%8b%e5%92%8c%e8%bd%af%e4%bb%b6%e7%89%88%e6%9c%ac&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;探测服务器类型和软件版本&lt;/h3&gt;&lt;p&gt;如果某个服务器运行了 SSH 服务端，那么用如下命令可以看出：该服务器的操作系统类型，以及 SSH server 的版本。&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-38&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;EXIT&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; nc -vq &lt;span class=&#34;m&#34;&gt;5&lt;/span&gt; -n ip &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;OR
&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;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;EXIT&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; nc -vq &lt;span class=&#34;m&#34;&gt;5&lt;/span&gt; domain &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;端口转发&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ab%af%e5%8f%a3%e8%bd%ac%e5%8f%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;端口转发&lt;/h3&gt;&lt;p&gt;用 nc 进行端口转发，需要运行两个 nc 进程，一个充当&lt;code&gt;服务端&lt;/code&gt;，另一个是&lt;code&gt;客户端&lt;/code&gt;，然后用管道让把两个进程的&lt;code&gt;标准输入输出``交叉配对&lt;/code&gt;。所谓的&lt;code&gt;交叉配对&lt;/code&gt;就是——每一个 nc 进程的&lt;code&gt;标准输出&lt;/code&gt;都对接到另一个 nc 进程的&lt;code&gt;标准输入&lt;/code&gt;。如此一来，就可以完美地建立双向通讯。&lt;/p&gt;
&lt;p&gt;步骤 1：创建命名管道&lt;/p&gt;
&lt;p&gt;用下面这个简单的命令创建一个 “命名管道”，其名称叫做 nc_pipe&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-39&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkfifo nc_pipe&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;步骤 2：同时启动两个 nc&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-40&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc -l -p &lt;span class=&#34;m&#34;&gt;1234&lt;/span&gt; &amp;lt; nc_pipe &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; nc 127.0.0.1 &lt;span class=&#34;m&#34;&gt;5678&lt;/span&gt; &amp;gt; nc_pipe&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;运行上述命令之后，就可以把本机的 1235 端口重定向到本机的 5678 端口。&lt;/p&gt;
&lt;h3 id=&#34;传输文件&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bc%a0%e8%be%93%e6%96%87%e4%bb%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;传输文件&lt;/h3&gt;&lt;p&gt;为了叙述方便，假设你有两台主机 A 与 B，你要把 A 主机上的文件 file1 传输到 B 主机上，保存为 file2&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-41&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;先在接收端 B 主机运行如下命令
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc -l -p port &amp;gt; file2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;然后在发送端 A 主机运行如下命令
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc ip port &amp;lt; file1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;两者端口号要相同&lt;/p&gt;
&lt;h3 id=&#34;远程备份整个磁盘&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%bf%9c%e7%a8%8b%e5%a4%87%e4%bb%bd%e6%95%b4%e4%b8%aa%e7%a3%81%e7%9b%98&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;远程备份整个磁盘&lt;/h3&gt;&lt;p&gt;假设你要把 A 主机 &lt;code&gt;/dev/sda&lt;/code&gt; 磁盘的原始数据整个复制到 B 主机的 &lt;code&gt;/dev/sdb&lt;/code&gt; 磁盘。&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-42&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;先在接收端（B 主机）运行如下命令
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc -lp port &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; dd &lt;span class=&#34;nv&#34;&gt;of&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/dev/sdb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;然后在发送端 A 主机运行如下命令
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dd &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/dev/sda &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; nc ip port&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;远程控制&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%bf%9c%e7%a8%8b%e6%8e%a7%e5%88%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;远程控制&lt;/h3&gt;&lt;p&gt;将 A 主机的 &lt;code&gt;bash&lt;/code&gt; 发给 B 主机&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-43&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc -lp port -c bash
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;B:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc ip port&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;流媒体服务&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%b5%81%e5%aa%92%e4%bd%93%e6%9c%8d%e5%8a%a1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;流媒体服务&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-44&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat test.mp4 &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; nc -lp port
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;B:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc -nv ip port &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; mplayer -vo x11 -cache &lt;span class=&#34;m&#34;&gt;4000&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;A 让 test.MP4 这个文件成为&lt;code&gt;流&lt;/code&gt;的形式发送到 B，B 用 mplayer 播放，接收多少播放多少，指定缓存 4000bytes。&lt;/p&gt;
&lt;h3 id=&#34;信息收集&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bf%a1%e6%81%af%e6%94%b6%e9%9b%86&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;信息收集&lt;/h3&gt;&lt;p&gt;收集目标机上的进程信息&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-45&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nc -l -p port &amp;gt; ps.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;将远程发送过来的内容保存在本地
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ps aux &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;nc -nv ip port -q &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;标准输入完成后 delay 一秒钟，会发送到侦听端&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;https://man.openbsd.org/nc.1&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;netcat manual page&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;https://program-think.blogspot.com/2019/09/Netcat-Tricks.html#head-15&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;扫盲 netcat（网猫）的 N 种用法 —— 从 “网络诊断” 到 “系统入侵”&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[3] &lt;a href=&#34;https://www.jianshu.com/p/cb26a0f6c622&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;NetCat 使用指南&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>HTTPS 工作原理</title>
      <link>https://www.techkoala.net/how_https_works/</link>
      <pubDate>Sun, 16 Aug 2020 21:52:26 +0800</pubDate>
      
      <guid>https://www.techkoala.net/how_https_works/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;理解 HTTP 协议，对称和非对称加密，了解 HTTPS 协议的工作原理&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;注：本文系全文转载，原文信息如下：&lt;/p&gt;
&lt;p&gt;作者：猫尾博客&lt;/p&gt;
&lt;p&gt;链接：https://cattail.me/tech/2015/11/30/how-https-works.html&lt;/p&gt;
&lt;p&gt;著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;读完本文，你能明白&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;什么是 HTTPS，TLS（SSL），TLS 和 HTTPS 是什么关系&lt;/li&gt;
&lt;li&gt;什么是证书和数字签名，它们是如何传递信任的&lt;/li&gt;
&lt;li&gt;HTTPS 有什么样的功能，它是如何实现这样的功能的&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;https-工作原理简介&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#https-%e5%b7%a5%e4%bd%9c%e5%8e%9f%e7%90%86%e7%ae%80%e4%bb%8b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;HTTPS 工作原理简介&lt;/h2&gt;&lt;p&gt;HTTPS，也称作 HTTP over TLS。TLS 的前身是 SSL，TLS 1.0 通常被标示为 SSL 3.1，TLS 1.1 为 SSL 3.2，TLS 1.2 为 SSL 3.3。本文着重描述 TLS 协议的 1.2 版本。&lt;/p&gt;
&lt;p&gt;下图描述了在 TCP/IP 协议栈中 TLS（各子协议）和 HTTP 的关系：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/tcp-ip-model.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/tcp-ip-model.webp&#34;  data-sub-html=&#34;&lt;h2&gt;TCP/IP 协议栈中的 TLS 和 HTTP 关系（来源：SSL Handshake and HTTPS Bindings on IIS）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/tcp-ip-model.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;TCP/IP 协议栈中的 TLS 和 HTTP 关系（来源：&lt;a href=&#34;https://blogs.msdn.com/b/kaushal/archive/2013/08/03/ssl-handshake-and-https-bindings-on-iis.aspx&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;SSL Handshake and HTTPS Bindings on IIS&lt;/a&gt;）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;其中 &lt;code&gt;Handshake Protocol&lt;/code&gt;、&lt;code&gt;Change Ciper Spec Protocol&lt;/code&gt; 和 &lt;code&gt;Alert Protocol&lt;/code&gt; 组成了 &lt;code&gt;SSL Handshaking Protocols&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;HTTPS 和 HTTP 协议相比提供了：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;数据完整性：内容传输经过完整性校验&lt;/li&gt;
&lt;li&gt;数据隐私性：内容经过对称加密，每个连接生成一个唯一的加密密钥&lt;/li&gt;
&lt;li&gt;身份认证：第三方无法伪造服务端（客户端）身份&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;其中，数据完整性和隐私性由 TLS Record Protocol 保证，身份认证由 TLS Handshaking Protocols 实现。&lt;/p&gt;
&lt;h2 id=&#34;总览&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%80%bb%e8%a7%88&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;总览&lt;/h2&gt;&lt;p&gt;使用 RSA 算法的 SSL 握手过程是这样的：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/ssl_handshake_rsa.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/ssl_handshake_rsa.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Source: Keyless SSL: The Nitty Gritty Technical Details&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/ssl_handshake_rsa.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Source: &lt;a href=&#34;https://blog.cloudflare.com/keyless-ssl-the-nitty-gritty-technical-details/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Keyless SSL: The Nitty Gritty Technical Details&lt;/a&gt;&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;ol&gt;
&lt;li&gt;[明文]客户端发送随机数 client_random 和支持的加密方式列表&lt;/li&gt;
&lt;li&gt;[明文]服务器返回随机数 server_random，选择的加密方式和服务器证书链&lt;/li&gt;
&lt;li&gt;[RSA]客户端验证服务器证书，使用证书中的公钥加密 premastersecret 发送给服务端&lt;/li&gt;
&lt;li&gt;服务端使用私钥解密 premastersecret&lt;/li&gt;
&lt;li&gt;两端分别通过 client_random，server_random 和 premastersecret 生成 mastersecret，用于对称加密后续通信内容&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;证书digital-certificate&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%af%81%e4%b9%a6digital-certificate&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;证书（Digital Certificate）&lt;/h3&gt;&lt;p&gt;那么什么是证书呢？&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/certificate.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/certificate.webp&#34;  data-sub-html=&#34;&lt;h2&gt;证书信息&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/certificate.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;证书信息&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;证书中包含了以下信息&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%af%81%e4%b9%a6%e4%b8%ad%e5%8c%85%e5%90%ab%e4%ba%86%e4%bb%a5%e4%b8%8b%e4%bf%a1%e6%81%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;证书中包含了以下信息&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;证书信息：过期时间和序列号&lt;/li&gt;
&lt;li&gt;所有者信息：姓名等&lt;/li&gt;
&lt;li&gt;所有者公钥&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;为什么服务端要发送证书给客户端?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;互联网有太多的服务需要使用证书来验证身份，以至于客户端（操作系统或浏览器等）无法内置所有证书，需要通过服务端将证书发送给客户端。&lt;/p&gt;
&lt;h3 id=&#34;客户端为什么要验证接收到的证书&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%ae%a2%e6%88%b7%e7%ab%af%e4%b8%ba%e4%bb%80%e4%b9%88%e8%a6%81%e9%aa%8c%e8%af%81%e6%8e%a5%e6%94%b6%e5%88%b0%e7%9a%84%e8%af%81%e4%b9%a6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;客户端为什么要验证接收到的证书&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;中间人攻击&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-13&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;客户端 &amp;lt;------------ 攻击者 &amp;lt;------------ 服务端
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        伪造证书            拦截请求&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;客户端如何验证接收到的证书&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%ae%a2%e6%88%b7%e7%ab%af%e5%a6%82%e4%bd%95%e9%aa%8c%e8%af%81%e6%8e%a5%e6%94%b6%e5%88%b0%e7%9a%84%e8%af%81%e4%b9%a6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;客户端如何验证接收到的证书&lt;/h3&gt;&lt;p&gt;为了回答这个问题，需要引入&lt;code&gt;数字签名&lt;/code&gt; (Digital Signature)。&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-14&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+---------------------+
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;| A digital signature |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|(not to be confused  |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|with a digital       |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|certificate)         |              +---------+                +--------+
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;| is a mathematical   |---- 哈希 ---&amp;gt;| 消息摘要  |--- 私钥加密 ---&amp;gt;| 数字签名 |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|technique used       |              +---------+                +--------+
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|to validate the      |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|authenticity and     |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|integrity of a       |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|message, software    |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|or digital document. |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+---------------------+&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;将一段文本通过哈希（hash）和私钥加密处理后生成数字签名。&lt;/p&gt;
&lt;p&gt;假设消息传递在 Bob，Susan 和 Pat 三人之间发生。Susan 将消息连同数字签名一起发送给 Bob，Bob 接收到消息后，可以这样验证接收到的消息就是 Susan 发送的&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-15&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+---------------------+
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;| A digital signature |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|(not to be confused  |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|with a digital       |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|certificate)         |              +---------+
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;| is a mathematical   |---- 哈希 ---&amp;gt;|  消息摘要 |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|technique used       |              +---------+
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|to validate the      |                 |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|authenticity and     |                 |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|integrity of a       |                 |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|message, software    |                 对
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|or digital document. |                 比
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+---------------------+                 |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                        |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                        |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        +---------+               +----------+
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        | 数字签名 |--- 公钥解密 ---&amp;gt;|  消息摘要 |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        +---------+               +----------+&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;当然，这个前提是 Bob 知道 Susan 的公钥。更重要的是，和消息本身一样，公钥不能在不安全的网络中直接发送给 Bob。&lt;/p&gt;
&lt;p&gt;此时就引入了&lt;a href=&#34;https://en.wikipedia.org/wiki/Certificate_authority&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;证书颁发机构&lt;/a&gt;（Certificate Authority，简称 CA），CA 数量并不多，Bob 客户端内置了所有受信任 CA 的证书。CA 对 Susan 的公钥（和其他信息）数字签名后生成证书。&lt;/p&gt;
&lt;p&gt;Susan 将证书发送给 Bob 后，Bob 通过 CA 证书的公钥验证证书签名。&lt;/p&gt;
&lt;p&gt;Bob 信任 CA，CA 信任 Susan 使得 Bob 信任 Susan，信任链（Chain Of Trust）就是这样形成的。&lt;/p&gt;
&lt;p&gt;事实上，Bob 客户端内置的是 CA 的根证书 (Root Certificate)，HTTPS 协议中服务器会发送证书链（Certificate Chain）给客户端。&lt;/p&gt;
&lt;h2 id=&#34;tls-协议&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#tls-%e5%8d%8f%e8%ae%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;TLS 协议&lt;/h2&gt;&lt;p&gt;&lt;code&gt;TLS&lt;/code&gt;协议包括&lt;code&gt;TLS Record Protocol&lt;/code&gt;和&lt;code&gt;TLS Handshake Protocol&lt;/code&gt;。总览中的流程图仅涉及到&lt;code&gt;TLS Handshake Protocol&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;tls-record-protocol&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#tls-record-protocol&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;TLS Record Protocol&lt;/h3&gt;&lt;p&gt;在&lt;code&gt;TLS&lt;/code&gt;协议中，有四种子协议运行于&lt;code&gt;Record Protocol&lt;/code&gt;之上&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Handshake protocol&lt;/li&gt;
&lt;li&gt;Alert protocol&lt;/li&gt;
&lt;li&gt;Change cipher spec protocol&lt;/li&gt;
&lt;li&gt;Application data protocol&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Record protocol 起到了这样的作用&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在发送端：将数据（Record）分段，压缩，增加 MAC（Message Authentication Code）和加密&lt;/li&gt;
&lt;li&gt;在接收端：将数据（Record）解密，验证 MAC，解压并重组&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
  &lt;p&gt;值得一提的是，Record protocol 提供了数据完整性和隐私性保证，但 Record 类型（type）和长度（length）是公开传输的&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;Record Protocol 有三个连接状态（Connection State），连接状态定义了压缩，加密和 MAC 算法。所有的 Record 都是被当前状态（Current State）确定的算法处理的。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;TLS Handshake Protocol&lt;/code&gt;和&lt;code&gt;Change Cipher Spec Protocol&lt;/code&gt;会导致&lt;code&gt;Record Protocol&lt;/code&gt;状态切换。&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-16&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;empty state -------------------&amp;gt; pending state ------------------&amp;gt; current state
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;             Handshake Protocol                Change Cipher Spec&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;初始当前状态（Current State）没有指定加密，压缩和 MAC 算法，因而在完成 TLS Handshaking Protocols 一系列动作之前，客户端和服务端的数据都是&lt;strong&gt;明文传输&lt;/strong&gt;的；当 TLS 完成握手过程后，客户端和服务端确定了加密，压缩和 MAC 算法及其参数，数据（Record）会通过指定算法处理。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;其中，Record 首先被加密，然后添加 MAC（message authentication code）以保证数据完整性。&lt;/p&gt;

&lt;/blockquote&gt;&lt;h3 id=&#34;tls-handshake-protocol&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#tls-handshake-protocol&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;TLS Handshake Protocol&lt;/h3&gt;&lt;p&gt;Handshakeing protocols 包括 Alert Protocol，Change Cipher Spec Protocol 和 Handshake protocol。本文不会详细介绍 Alert Protocol 和 Change Cipher Spec Protocol。&lt;/p&gt;
&lt;p&gt;使用&lt;code&gt;RSA&lt;/code&gt;算法的握手过程是这样的（已在总览中提到）&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/ssl_handshake_rsa.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/ssl_handshake_rsa.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Source: Keyless SSL: The Nitty Gritty Technical Details&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/ssl_handshake_rsa.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Source: &lt;a href=&#34;https://blog.cloudflare.com/keyless-ssl-the-nitty-gritty-technical-details/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Keyless SSL: The Nitty Gritty Technical Details&lt;/a&gt;&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;客户端和服务端在握手 hello 消息中明文交换了&lt;code&gt;client_random&lt;/code&gt;和&lt;code&gt;server_random&lt;/code&gt;，使用&lt;code&gt;RSA&lt;/code&gt;公钥加密传输&lt;code&gt;premastersecret&lt;/code&gt;，最后通过算法，客户端和服务端分别计算&lt;code&gt;mastersecret&lt;/code&gt;。其中，不直接使用&lt;code&gt;premastersecret&lt;/code&gt;的原因是：保证&lt;code&gt;secret&lt;/code&gt;的随机性不受任意一方的影响。&lt;/p&gt;
&lt;p&gt;除了使用&lt;code&gt;RSA&lt;/code&gt;算法在公共信道交换密钥，还可以通过&lt;code&gt;Diffie–Hellman&lt;/code&gt;算法。&lt;code&gt;Diffie–Hellman&lt;/code&gt;算法的原理是这样的&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/Diffie-Hellman_Key_Exchange.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/Diffie-Hellman_Key_Exchange.webp&#34;  data-sub-html=&#34;&lt;h2&gt;By Original schema: A.J. Han Vinck, University of Duisburg-Essen SVG version: Flugaal [Public domain], via Wikimedia Commons&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/Diffie-Hellman_Key_Exchange.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;By Original schema: A.J. Han Vinck, University of Duisburg-Essen SVG version: Flugaal [Public domain], via Wikimedia Commons&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;使用&lt;code&gt;Diffie–Hellman&lt;/code&gt;算法交换&lt;code&gt;premastersecret&lt;/code&gt;的流程&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/ssl_handshake_diffie_hellman.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/ssl_handshake_diffie_hellman.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Source: Keyless SSL: The Nitty Gritty Technical Details&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/ssl_handshake_diffie_hellman.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Source: &lt;a href=&#34;https://blog.cloudflare.com/keyless-ssl-the-nitty-gritty-technical-details/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Keyless SSL: The Nitty Gritty Technical Details&lt;/a&gt;&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;小结&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%b0%8f%e7%bb%93&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;小结&lt;/h2&gt;&lt;p&gt;&lt;code&gt;TLS Handshake Protocol&lt;/code&gt;协商了&lt;code&gt;TLS Record Protocol&lt;/code&gt;使用的算法和所需参数，并验证了服务端身份；&lt;/p&gt;
&lt;p&gt;&lt;code&gt;TLS Record Protocol&lt;/code&gt;在协商后保证应用层数据的完整性和隐私性。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;TLS Handshake Protocol&lt;/code&gt;的核心是在公开信道上传递&lt;code&gt;premastersecret&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;qa&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#qa&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Q&amp;amp;A&lt;/h2&gt;&lt;h3 id=&#34;为什么传输内容不直接使用非对称加密&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%ba%e4%bb%80%e4%b9%88%e4%bc%a0%e8%be%93%e5%86%85%e5%ae%b9%e4%b8%8d%e7%9b%b4%e6%8e%a5%e4%bd%bf%e7%94%a8%e9%9d%9e%e5%af%b9%e7%a7%b0%e5%8a%a0%e5%af%86&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;为什么传输内容不直接使用非对称加密？&lt;/h3&gt;&lt;p&gt;因为性能限制。&lt;/p&gt;
&lt;h3 id=&#34;https-能保证正常连接&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#https-%e8%83%bd%e4%bf%9d%e8%af%81%e6%ad%a3%e5%b8%b8%e8%bf%9e%e6%8e%a5&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;HTTPS 能保证正常连接？&lt;/h3&gt;&lt;p&gt;不能。&lt;/p&gt;
&lt;div class=&#34;details admonition quote open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;引用&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;There are a number of ways in which a man-in-the-middle attacker can attempt to make two entities drop down to the least secure method they support.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;攻击者甚至可以直接丢弃双方的数据包&lt;/p&gt;
&lt;h3 id=&#34;服务端如何验证客户端身份&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9c%8d%e5%8a%a1%e7%ab%af%e5%a6%82%e4%bd%95%e9%aa%8c%e8%af%81%e5%ae%a2%e6%88%b7%e7%ab%af%e8%ba%ab%e4%bb%bd&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;服务端如何验证客户端身份？&lt;/h3&gt;&lt;p&gt;通过&lt;code&gt;Client Certificate&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;details admonition quote open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;引用&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;This message conveys the client’s certificate chain to the server; the server will use it when verifying the CertificateVerify message (when the client authentication is based on signing) or calculating the premaster secret (for non-ephemeral Diffie- Hellman). The certificate MUST be appropriate for the negotiated cipher suite’s key exchange algorithm, and any negotiated extensions.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&#34;alert-protocol-有什么作用&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#alert-protocol-%e6%9c%89%e4%bb%80%e4%b9%88%e4%bd%9c%e7%94%a8&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Alert protocol 有什么作用？&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Closure Alerts&lt;/code&gt;：防止&lt;code&gt;Truncation Attack&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;details admonition quote open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;引用&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;In a truncation attack, an attacker inserts into a message a TCP code indicating the message has finished, thus preventing the recipient picking up the rest of the message. To prevent this, SSL from version v3 onward has a closing handshake, so the recipient knows the message has not ended until this has been performed.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Error Alerts：错误处理&lt;/p&gt;
&lt;h3 id=&#34;master-secret-是如何计算的&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#master-secret-%e6%98%af%e5%a6%82%e4%bd%95%e8%ae%a1%e7%ae%97%e7%9a%84&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;master secret 是如何计算的&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-17&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  master_secret = PRF (pre_master_secret, &amp;#34;master secret&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                      ClientHello.random + ServerHello.random)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                      [0..47];&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;加密压缩和-mac-算法参数是如何计算的&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8a%a0%e5%af%86%e5%8e%8b%e7%bc%a9%e5%92%8c-mac-%e7%ae%97%e6%b3%95%e5%8f%82%e6%95%b0%e6%98%af%e5%a6%82%e4%bd%95%e8%ae%a1%e7%ae%97%e7%9a%84&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;加密，压缩和 MAC 算法参数是如何计算的&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Handshaking Protocols&lt;/code&gt;使得客户端和服务端交换了三个参数：&lt;code&gt;client_random&lt;/code&gt;，&lt;code&gt;server_random&lt;/code&gt;和&lt;code&gt;master_secret&lt;/code&gt;，通过以下算法生成算法所需要的参数&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-18&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;To&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;generate&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;the&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;material&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;compute&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key_block&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;PRF&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SecurityParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;master_secret&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;                  &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;key expansion&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;                  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SecurityParameters&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;server_random&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;                  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SecurityParameters&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;client_random&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;w&#34;&gt;
&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;w&#34;&gt;
&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;until&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enough&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;has&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;been&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;generated&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;Then&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;the&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key_block&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;is&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;partitioned&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;as&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;follows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;client_write_MAC_key&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SecurityParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mac_key_length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;server_write_MAC_key&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SecurityParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mac_key_length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;client_write_key&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SecurityParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enc_key_length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;server_write_key&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SecurityParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;enc_key_length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;client_write_IV&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SecurityParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fixed_iv_length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&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;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;server_write_IV&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SecurityParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fixed_iv_length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;div class=&#34;details admonition quote open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;引用&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;The master secret is expanded into a sequence of secure bytes, which is then split to a client write MAC key, a server write MAC key, a client write encryption key, and a server write encryption key&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;使用&lt;code&gt;Diffie-Hellman&lt;/code&gt;算法的&lt;code&gt;TLS&lt;/code&gt;握手细节&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/dh-detail.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/dh-detail.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Source: https://cipherstuff.wordpress.com/&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/HTTPS/dh-detail.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Source: &lt;a href=&#34;https://cipherstuff.wordpress.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://cipherstuff.wordpress.com/&lt;/a&gt;&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;拓展阅读&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%8b%93%e5%b1%95%e9%98%85%e8%af%bb&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;拓展阅读&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.cloudflare.com/keyless-ssl-the-nitty-gritty-technical-details/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Keyless&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://letsencrypt.org/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Let’s Encrypt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Session resume&lt;/li&gt;
&lt;li&gt;证书 Revoke&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;https://tools.ietf.org/html/rfc5246&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;TLS1.2 规范&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;https://tools.ietf.org/html/rfc5280&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PKI 规范&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[3] &lt;a href=&#34;http://www.youdzone.com/signature.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;证书和数字签名&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[4] &lt;a href=&#34;https://blog.cloudflare.com/keyless-ssl-the-nitty-gritty-technical-details/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;TLS Handshake&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>互联网高效搜索技巧指南</title>
      <link>https://www.techkoala.net/how_to_search/</link>
      <pubDate>Fri, 14 Aug 2020 12:50:34 +0800</pubDate>
      
      <guid>https://www.techkoala.net/how_to_search/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;本文介绍如何在互联网上高效地检索信息，包括搜索语法、实用技巧和具体应用场景。&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;一搜索引擎的困境&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%80%e6%90%9c%e7%b4%a2%e5%bc%95%e6%93%8e%e7%9a%84%e5%9b%b0%e5%a2%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;一、搜索引擎的困境&lt;/h2&gt;&lt;p&gt;尽管搜索引擎极大地方便了信息检索，但在实际使用中我们常常会遇到以下问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;搜索结果中包含大量垃圾内容&lt;/li&gt;
&lt;li&gt;优质内容被SEO优化的内容淹没&lt;/li&gt;
&lt;li&gt;中文搜索结果质量普遍较低&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;为了提高搜索效率，掌握一些专业的搜索技巧是非常必要的。&lt;/p&gt;
&lt;h2 id=&#34;二高级搜索语法&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%ba%8c%e9%ab%98%e7%ba%a7%e6%90%9c%e7%b4%a2%e8%af%ad%e6%b3%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;二、高级搜索语法&lt;/h2&gt;&lt;h3 id=&#34;21-基础运算符&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#21-%e5%9f%ba%e7%a1%80%e8%bf%90%e7%ae%97%e7%ac%a6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;2.1 基础运算符&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;运算符&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
          &lt;th&gt;示例&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&amp;ldquo;短语&amp;rdquo;&lt;/td&gt;
          &lt;td&gt;精确匹配引号中的内容&lt;/td&gt;
          &lt;td&gt;&amp;ldquo;machine learning&amp;rdquo;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;-关键词&lt;/td&gt;
          &lt;td&gt;排除包含特定关键词的结果&lt;/td&gt;
          &lt;td&gt;python -蟒蛇&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;A AND B&lt;/td&gt;
          &lt;td&gt;同时包含A和B&lt;/td&gt;
          &lt;td&gt;python AND javascript&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;A OR B&lt;/td&gt;
          &lt;td&gt;包含A或B（或两者）&lt;/td&gt;
          &lt;td&gt;pdf OR word&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;site:域名&lt;/td&gt;
          &lt;td&gt;限定在特定网站内搜索&lt;/td&gt;
          &lt;td&gt;site:github.com python&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;filetype:类型&lt;/td&gt;
          &lt;td&gt;限定特定文件类型&lt;/td&gt;
          &lt;td&gt;filetype:pdf python&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;22-高级运算符&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#22-%e9%ab%98%e7%ba%a7%e8%bf%90%e7%ae%97%e7%ac%a6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;2.2 高级运算符&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;运算符&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
          &lt;th&gt;示例&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;inurl:&lt;/td&gt;
          &lt;td&gt;网址中包含特定关键词&lt;/td&gt;
          &lt;td&gt;inurl:blog tech&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;intitle:&lt;/td&gt;
          &lt;td&gt;标题中包含特定关键词&lt;/td&gt;
          &lt;td&gt;intitle:教程&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;allintitle:&lt;/td&gt;
          &lt;td&gt;标题中包含所有关键词&lt;/td&gt;
          &lt;td&gt;allintitle:Python 入门&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;related:&lt;/td&gt;
          &lt;td&gt;查找相似网站（仅限Google）&lt;/td&gt;
          &lt;td&gt;related:github.com&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;三实用搜索技巧&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%89%e5%ae%9e%e7%94%a8%e6%90%9c%e7%b4%a2%e6%8a%80%e5%b7%a7&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;三、实用搜索技巧&lt;/h2&gt;&lt;h3 id=&#34;31-网页内容搜索&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#31-%e7%bd%91%e9%a1%b5%e5%86%85%e5%ae%b9%e6%90%9c%e7%b4%a2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3.1 网页内容搜索&lt;/h3&gt;&lt;h4 id=&#34;特定网站内搜索&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%89%b9%e5%ae%9a%e7%bd%91%e7%ab%99%e5%86%85%e6%90%9c%e7%b4%a2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;特定网站内搜索&lt;/h4&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-23&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;site:techkoala.top Python&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;在指定网站中搜索Python相关内容&lt;/p&gt;
&lt;h4 id=&#34;标题搜索&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%a0%87%e9%a2%98%e6%90%9c%e7%b4%a2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;标题搜索&lt;/h4&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-24&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;allintitle:&amp;#34;Git教程&amp;#34; site:github.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;在GitHub上搜索标题中包含&amp;quot;Git教程&amp;quot;的页面&lt;/p&gt;
&lt;h4 id=&#34;相似网站查找&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%9b%b8%e4%bc%bc%e7%bd%91%e7%ab%99%e6%9f%a5%e6%89%be&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;相似网站查找&lt;/h4&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-25&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;related:stackoverflow.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;查找类似Stack Overflow的技术问答网站&lt;/p&gt;
&lt;h3 id=&#34;32-邮箱地址搜索&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#32-%e9%82%ae%e7%ae%b1%e5%9c%b0%e5%9d%80%e6%90%9c%e7%b4%a2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3.2 邮箱地址搜索&lt;/h3&gt;&lt;h4 id=&#34;特定域名邮箱&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%89%b9%e5%ae%9a%e5%9f%9f%e5%90%8d%e9%82%ae%e7%ae%b1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;特定域名邮箱&lt;/h4&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-26&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;@company.com&amp;#34; filetype:pdf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;查找特定公司的邮箱地址&lt;/p&gt;
&lt;h4 id=&#34;网站邮箱提取&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%bd%91%e7%ab%99%e9%82%ae%e7%ae%b1%e6%8f%90%e5%8f%96&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;网站邮箱提取&lt;/h4&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;javascript&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-27&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 在浏览器控制台运行以下代码提取页面中的邮箱地址
&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;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;elems&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getElementsByTagName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&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;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;emailPattern&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;RegExp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$)&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&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;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&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;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;elems&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#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; &lt;span class=&#34;p&#34;&gt;{&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;nx&#34;&gt;emailPattern&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;test&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;elems&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;innerHTML&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;elems&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;innerHTML&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;33-文件搜索&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#33-%e6%96%87%e4%bb%b6%e6%90%9c%e7%b4%a2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3.3 文件搜索&lt;/h3&gt;&lt;h4 id=&#34;文档文件&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%96%87%e6%a1%a3%e6%96%87%e4%bb%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;文档文件&lt;/h4&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-28&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;filetype:pdf OR filetype:doc OR filetype:docx &amp;#34;机器学习&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;搜索机器学习相关的PDF或Word文档&lt;/p&gt;
&lt;h4 id=&#34;数据文件&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%95%b0%e6%8d%ae%e6%96%87%e4%bb%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;数据文件&lt;/h4&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-29&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;filetype:csv OR filetype:xlsx &amp;#34;数据分析&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;搜索数据分析相关的表格文件&lt;/p&gt;
&lt;h4 id=&#34;google文档&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#google%e6%96%87%e6%a1%a3&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Google文档&lt;/h4&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-30&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;site:docs.google.com &amp;#34;开发教程&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;在Google文档中搜索开发教程&lt;/p&gt;
&lt;h3 id=&#34;34-seo相关搜索&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#34-seo%e7%9b%b8%e5%85%b3%e6%90%9c%e7%b4%a2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3.4 SEO相关搜索&lt;/h3&gt;&lt;h4 id=&#34;锚文本搜索&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%94%9a%e6%96%87%e6%9c%ac%e6%90%9c%e7%b4%a2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;锚文本搜索&lt;/h4&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-31&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;inanchor:&amp;#34;web development&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;查找锚文本中包含&amp;quot;web development&amp;quot;的链接&lt;/p&gt;
&lt;h4 id=&#34;反向链接搜索&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%8d%e5%90%91%e9%93%be%e6%8e%a5%e6%90%9c%e7%b4%a2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;反向链接搜索&lt;/h4&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-32&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;intext:github.com/tensorflow&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;查找引用特定资源的网页&lt;/p&gt;
&lt;h4 id=&#34;通配符搜索&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%80%9a%e9%85%8d%e7%ac%a6%e6%90%9c%e7%b4%a2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;通配符搜索&lt;/h4&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-33&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;* 编程语言 2023&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;使用通配符查找2023年流行的编程语言&lt;/p&gt;
&lt;h2 id=&#34;四搜索技巧最佳实践&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%9b%9b%e6%90%9c%e7%b4%a2%e6%8a%80%e5%b7%a7%e6%9c%80%e4%bd%b3%e5%ae%9e%e8%b7%b5&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;四、搜索技巧最佳实践&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;组合使用运算符&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;合理组合多个运算符可以获得更精确的结果&lt;/li&gt;
&lt;li&gt;例如：&lt;code&gt;site:github.com &amp;quot;machine learning&amp;quot; filetype:pdf -tutorial&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;选择合适的关键词&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用专业术语而非口语化表达&lt;/li&gt;
&lt;li&gt;优先使用英文关键词搜索技术内容&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;利用时间筛选&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对于技术内容，建议限定近期结果&lt;/li&gt;
&lt;li&gt;使用搜索引擎的时间筛选功能&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;善用垂直搜索&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码搜索优先使用GitHub&lt;/li&gt;
&lt;li&gt;学术内容使用Google Scholar&lt;/li&gt;
&lt;li&gt;技术问答使用Stack Overflow&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;参考资料&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考资料&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://ahrefs.com/blog/google-advanced-search-operators/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Google 高级搜索运算符完整列表&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.alec.fyi/dorking-how-to-find-anything-on-the-internet.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;高效信息检索技巧&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ahrefs.com/blog/google-advanced-search-operators/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Google Search Operators Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>使用 Netlify 部署在线版 Koodo Reader</title>
      <link>https://www.techkoala.net/reader/</link>
      <pubDate>Wed, 12 Aug 2020 11:22:58 +0800</pubDate>
      
      <guid>https://www.techkoala.net/reader/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;本文介绍如何使用 Netlify 部署一个在线版的 EPUB 电子书阅读器 - Koodo Reader&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;netlify-简介&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#netlify-%e7%ae%80%e4%bb%8b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Netlify 简介&lt;/h2&gt;&lt;p&gt;&lt;a href=&#34;https://www.netlify.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Netlify&lt;/a&gt; 是一个现代化的网站托管和自动化平台：&lt;/p&gt;
&lt;div class=&#34;details admonition quote open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;引用&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;Netlify is a unified platform that automates your code to create high-performant, easily maintainable sites and web apps.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;它提供：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;静态网站托管服务&lt;/li&gt;
&lt;li&gt;持续集成/持续部署（CI/CD）功能&lt;/li&gt;
&lt;li&gt;自动从 GitHub、GitLab 等代码仓库构建网站&lt;/li&gt;
&lt;li&gt;比 GitHub Pages 更丰富的功能特性&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;koodo-reader-介绍&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#koodo-reader-%e4%bb%8b%e7%bb%8d&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Koodo Reader 介绍&lt;/h2&gt;&lt;p&gt;Koodo Reader 是一个跨平台的电子书阅读器，基于 React 和 Electron 开发，支持 EPUB 格式。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/koodo1.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/koodo1.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Koodo Reader 界面预览&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/koodo1.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Koodo Reader 界面预览&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;主要特性&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%bb%e8%a6%81%e7%89%b9%e6%80%a7&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;主要特性&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;📝 强大的笔记和翻译功能，助力高效学习&lt;/li&gt;
&lt;li&gt;🚩 支持书架分类管理&lt;/li&gt;
&lt;li&gt;🌎 全平台支持：Windows、MacOS 和网页版&lt;/li&gt;
&lt;li&gt;🖥 支持云同步：可绑定 OneDrive、Google Drive、Dropbox 等网盘&lt;/li&gt;
&lt;li&gt;💻 支持数据导入导出，确保数据安全&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更多详情请访问 &lt;a href=&#34;https://koodo.960960.xyz/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Koodo Reader 官网&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;部署步骤&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%83%a8%e7%bd%b2%e6%ad%a5%e9%aa%a4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;部署步骤&lt;/h2&gt;&lt;h3 id=&#34;1-注册-netlify&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#1-%e6%b3%a8%e5%86%8c-netlify&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;1. 注册 Netlify&lt;/h3&gt;&lt;p&gt;访问 &lt;a href=&#34;https://www.netlify.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Netlify 官网&lt;/a&gt;，可以选择：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用 GitHub 账号直接登录（推荐）&lt;/li&gt;
&lt;li&gt;使用其他第三方账号&lt;/li&gt;
&lt;li&gt;使用邮箱注册&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/Sign_Up.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/Sign_Up.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Netlify 注册界面&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/Sign_Up.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Netlify 注册界面&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;2-创建新站点&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#2-%e5%88%9b%e5%bb%ba%e6%96%b0%e7%ab%99%e7%82%b9&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;2. 创建新站点&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;登录后点击右上角的 &lt;code&gt;New Site from Git&lt;/code&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/New_site.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/New_site.webp&#34;  data-sub-html=&#34;&lt;h2&gt;创建新站点&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/New_site.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;创建新站点&lt;/figcaption&gt;
    &lt;/figure&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;选择 GitHub 并授权
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/New_site_github.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/New_site_github.webp&#34;  data-sub-html=&#34;&lt;h2&gt;选择 GitHub 部署&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/New_site_github.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;选择 GitHub 部署&lt;/figcaption&gt;
    &lt;/figure&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;选择代码仓库&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要先 Fork &lt;a href=&#34;https://github.com/troyeguo/koodo-reader&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Koodo Reader 的仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;在列表中选择已 Fork 的仓库
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/New_site_Auth.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/New_site_Auth.webp&#34;  data-sub-html=&#34;&lt;h2&gt;选择代码仓库&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/New_site_Auth.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;选择代码仓库&lt;/figcaption&gt;
    &lt;/figure&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;3-配置构建选项&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#3-%e9%85%8d%e7%bd%ae%e6%9e%84%e5%bb%ba%e9%80%89%e9%a1%b9&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3. 配置构建选项&lt;/h3&gt;&lt;p&gt;设置以下参数：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Build command: &lt;code&gt;yarn build&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Publish directory: &lt;code&gt;build/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;其他选项保持默认&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/Site_Setting.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/Site_Setting.webp&#34;  data-sub-html=&#34;&lt;h2&gt;构建配置&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/Site_Setting.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;构建配置&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;4-等待部署完成&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#4-%e7%ad%89%e5%be%85%e9%83%a8%e7%bd%b2%e5%ae%8c%e6%88%90&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;4. 等待部署完成&lt;/h3&gt;&lt;p&gt;Netlify 会自动开始构建和部署过程。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/Deploying.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/Deploying.webp&#34;  data-sub-html=&#34;&lt;h2&gt;部署进行中&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/Deploying.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;部署进行中&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;5-自定义域名可选&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#5-%e8%87%aa%e5%ae%9a%e4%b9%89%e5%9f%9f%e5%90%8d%e5%8f%af%e9%80%89&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;5. 自定义域名（可选）&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;Netlify 默认提供二级域名&lt;/li&gt;
&lt;li&gt;如需使用自定义域名：
&lt;ul&gt;
&lt;li&gt;在 Netlify 设置中添加域名&lt;/li&gt;
&lt;li&gt;在 DNS 提供商处添加 CNAME 记录，指向 Netlify 分配的域名&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/Domain_Setting.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/Domain_Setting.webp&#34;  data-sub-html=&#34;&lt;h2&gt;域名设置&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Web/Reader/Domain_Setting.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;域名设置&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;部署完成后，可以访问 &lt;a href=&#34;https://reader.techkoala.top/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;在线版 Koodo Reader&lt;/a&gt; 体验。&lt;/p&gt;
&lt;h2 id=&#34;维护说明&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%bb%b4%e6%8a%a4%e8%af%b4%e6%98%8e&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;维护说明&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;项目更新：直接在 GitHub 仓库提交更改&lt;/li&gt;
&lt;li&gt;自动部署：Netlify 会自动检测代码更新并重新部署&lt;/li&gt;
&lt;li&gt;无需手动干预：整个过程完全自动化&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考资料&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考资料&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/troyeguo/koodo-reader&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Koodo Reader GitHub 仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.netlify.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Netlify 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>网络测试工具：iPerf</title>
      <link>https://www.techkoala.net/iperf/</link>
      <pubDate>Fri, 07 Aug 2020 17:45:55 +0800</pubDate>
      
      <guid>https://www.techkoala.net/iperf/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;TCP、UDP 和 SCTP 的终极速度测试工具&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;什么是-iperf&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bb%80%e4%b9%88%e6%98%af-iperf&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;什么是 iPerf&lt;/h2&gt;&lt;p&gt;iPerf 是一个用于测量网络最大带宽的小工具。iPerf 可以测试最大 TCP 和 UDP 带宽性能，具有多种参数和 UDP 特性，可以根据需要调整，可以报告带宽、延迟抖动和数据包丢失。对于每个测试，它都会报告带宽，丢包和其他参数。&lt;/p&gt;
&lt;p&gt;现在的版本也称 iPerf3，这是对 NLANR/DAST 开发的原始版本的重新设计。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：iPerf3 与此前版本的 iPerf 不兼容。&lt;/p&gt;
&lt;h2 id=&#34;安装-iperf&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%ae%89%e8%a3%85-iperf&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;安装 iPerf&lt;/h2&gt;&lt;p&gt;iPerf3 官方仅支持 CentOS Linux，FreeBSD 和 macOS，但实际上，&lt;a href=&#34;https://iperf.fr/iperf-download.php&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;官网&lt;/a&gt;提供了主流系统的预编译文件。（包括 Windows、Android、iOS、Ubuntu、Arch Linux 等）&lt;/p&gt;
&lt;p&gt;类 UNIX 系统直接使用包管理进行安装即可，例如：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-1&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo apt install iperf3&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;使用-iperf&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bd%bf%e7%94%a8-iperf&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;使用 iPerf&lt;/h2&gt;&lt;p&gt;首先，介绍服务端和客户端共有的参数：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-2&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-p, --port n      服务器用于侦听和客户端连接的服务器端口，两者应该相同，默认值为 &lt;span class=&#34;m&#34;&gt;5201&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--cport n         指定客户端端口
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-f, --format      用于指定单位显示格式，支持 &lt;span class=&#34;s1&#34;&gt;&amp;#39;k&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; Kbits/sec &lt;span class=&#34;s1&#34;&gt;&amp;#39;K&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; KBytes/sec &lt;span class=&#34;s1&#34;&gt;&amp;#39;m&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; Mbits/sec &lt;span class=&#34;s1&#34;&gt;&amp;#39;M&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; MBytes/sec，默认为自适应格式
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-i, --interval n  设置测试信息报告之间的间隔时间（以秒为单位）。如果为零，则不打印任何定期报告。默认值为零。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-F, --file name   客户端：从文件读取并写入网络，而不是使用随机数据；服务器端：从网络读取并写入文件，而不是丢弃数据。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-A, --affinity    如果可以，设置 CPU 关联（仅限 Linux 和 FreeBSD）。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-B, --bind host   绑定到主机。对于客户端，这将设置出站接口。对于服务器，这将设置传入接口。这只适用于具有多个网络接口的多宿主主机。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-V, --verbose     提供更详细的输出
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-J, --json        以 JSON 格式输出
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--logfile file    输出到日志文件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--d, --debug      发出调试输出
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-v, --version     输出版本信息
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-h, --help        输出帮助信息&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;服务端特有参数：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-3&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-s, --server      在服务器模式下运行 iPerf（一次只允许一个 iPerf 连接）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-D, --daemon      将服务器作为守护进程在后台运行
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-I, --pidfilefile 使用进程ID编写文件，这在作为守护进程运行时非常有用&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;客户端特有参数:&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-4&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-c, --client host	    在客户端模式下运行 iPerf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--sctp	                使用 SCTP 而不是 TCP
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-u, --udp	            使用 UDP 而不是 TCP
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-b, --bandwidth      	将目标带宽设置为 nbits/sec（对于 UDP 默认为 &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; Mbit/sec，对于 TCP 为无限制）。如果有多个流（-P 标志），则带宽限制将分别应用于每个流。您还可以在带宽说明符中添加一个 “/” 和一个数字。这称为 “突发模式”。 它会发送给定数量的数据包而不会暂停，即使该数据包暂时超过了指定的带宽限制
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-t, --time  	        传输的时间（以秒为单位）。iPerf 通常通过在 t 时间内重复发送 len 长度的字节数组来工作。默认值为 &lt;span class=&#34;m&#34;&gt;10&lt;/span&gt; 秒
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-n, --num 	            要传输的缓冲区数量。通常，iPerf 只会发送 &lt;span class=&#34;m&#34;&gt;10&lt;/span&gt; 秒。-n 选项覆盖此设置，并发送 len 长度字节数组 n 次，无论需要多长时间
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-k, --blockcount    	要传输的块（数据包）数
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-l, --length     	    读取或写入的缓冲区的长度，iPerf 通过多次写入 len 个字节的数组来工作。TCP 的默认值为 &lt;span class=&#34;m&#34;&gt;128&lt;/span&gt; KB，UDP 的默认值为 &lt;span class=&#34;m&#34;&gt;8&lt;/span&gt; KB。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-P, --parallel  	    与服务器同时建立的连接数，默认值为 &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-R, --reverse	        以反向模式运行（服务器发送，客户端接收）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-w, --window    	    将套接字缓冲区大小设置为指定值。对于 TCP，这将设置 TCP 窗口大小（这将发送到服务器并在该侧使用）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-M, --set-mss  	        尝试设置 TCP 最大段大小（MSS）。MSS 通常是 MTU-TCP/IP 标头的 &lt;span class=&#34;m&#34;&gt;40&lt;/span&gt; 个字节。对于以太网，MSS 为 &lt;span class=&#34;m&#34;&gt;1460&lt;/span&gt; 字节（1500 字节 MTU）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-N, --no-delay	        设置 “TCP no delay” 选项，禁用 Nagle 的算法。通常，仅对交互式应用程序（如 telnet）禁用此功能
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-4, --version4	        仅使用 IPv4.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-6, --version4	        仅使用 IPv6.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-S, --tos               传出数据包的服务类型。&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;许多路由器会忽略TOS字段。）可以使用十六进制值（0x）作为前缀，使用八进制数（0）作为前缀，或者使用十进制来指定值。 例如，&lt;span class=&#34;s1&#34;&gt;&amp;#39;0x10&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;十六进制&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;020&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;八进制&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;16&amp;#39;&lt;/span&gt;十进制。RFC 1349中指定的TOS编号为：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        IPTOS_LOWDELAY     minimize delay        0x10
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        IPTOS_THROUGHPUT   maximize throughput   0x08
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        IPTOS_RELIABILITY  maximize reliability  0x04
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        IPTOS_LOWCOST      minimize cost         0x02
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-L, --flowlabel  	    设置 IPv6 流标签（当前仅在 Linux 上受支持）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-Z, --zerocopy	        使用 “零拷贝” 方法发送数据，如 sendfile（2），而不是通常的 write（2）。这样可以占用更少的 CPU
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-O, --omit  	        省略测试的前 n 秒，以跳过 TCP TCP 慢启动周期
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-T, --title             为每个输出行添加此字符串前缀
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-C, --linux-congestion  设置拥塞控制算法 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;仅适用于 iPerf 3.1 的 Linux 和 FreeBSD&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;div class=&#34;details admonition warning open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 576 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;注意&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;从客户端专有选项可以看出，iPerf 默认测试的是从客户端发送到服务端，相对于客户端来说，测试就是上行链路的带宽，对于一般参考意义更大的下行链路需要加上 &lt;code&gt;-R&lt;/code&gt; 选项。&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;常用启用参数：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-5&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;服务端
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ iperf3 -s -p &lt;span class=&#34;m&#34;&gt;12345&lt;/span&gt; -i &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-6&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;客户端
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ iperf3 -c 192.168.1.43 -p &lt;span class=&#34;m&#34;&gt;12345&lt;/span&gt; -i &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; -t &lt;span class=&#34;m&#34;&gt;20&lt;/span&gt; -w 100k&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/iperf/iperf.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/iperf/iperf.webp&#34;  data-sub-html=&#34;&lt;h2&gt;iPerf 使用实例&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/iperf/iperf.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;iPerf 使用实例&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;https://iperf.fr/iperf-doc.php&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;iPerf user docs&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;https://github.com/esnet/iperf&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;iPerf Github&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>文件传输系列：SFTP</title>
      <link>https://www.techkoala.net/sftp/</link>
      <pubDate>Thu, 06 Aug 2020 14:07:53 +0800</pubDate>
      
      <guid>https://www.techkoala.net/sftp/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;SCP 的继承者&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;什么是-sftp&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bb%80%e4%b9%88%e6%98%af-sftp&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;什么是 SFTP&lt;/h2&gt;&lt;p&gt;首先需要明确的是，SFTP（SSH File Transfer Protocol）不是运行在 SSH 上的 FTP，而是由 IETF（Internet Engineering Task Force）工作组设计的新协议，将其作为 SSH 2.0 版的扩展，提供安全的文件传输功能。因此，没有单独的 SFTP 端口，而是使用普通的 SSH 端口。协议本身不提供身份验证和安全性，而是期望底层协议提供。&lt;/p&gt;
&lt;p&gt;与仅允许文件传输的 SCP 协议相比，SFTP 协议允许对远程文件进行一系列操作，这使其更像远程文件系统协议。SFTP 客户端还支持包括恢复中断的传输，目录列表和远程文件删除等功能。此外，上传的文件可以与它们的基本属性相关联，例如时间戳。相比普通 FTP 协议，这是一项优势。&lt;/p&gt;
&lt;p&gt;尽管 SFTP 最常在 Unix 平台上实现，但 SFTP 在主流平台都可用。&lt;/p&gt;
&lt;div class=&#34;details admonition quote open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;引用&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;有关 SFTP 详细草案参见 &lt;a href=&#34;https://assets.ctfassets.net/0lvk5dbamxpi/6jBxT5LDgMqutNK4mPTGKd/4fa27cb4a130bca3b48a10c9045b0497/draft-ietf-secsh-filexfer-02&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;draft-ietf-secsh-filexfer-02&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&#34;使用-sftp&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bd%bf%e7%94%a8-sftp&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;使用 SFTP&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-5&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sftp 选项 参数&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;选项&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%80%89%e9%a1%b9&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;选项&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-6&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-B：指定传输文件时缓冲区的大小；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-l：使用 ssh 协议版本 1；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-b：指定批处理文件；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-C：使用压缩；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-o：指定 ssh 选项；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-F：指定 ssh 配置文件；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-R：指定一次可以容忍多少请求数；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-v：升高日志等级。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;参数&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e6%95%b0&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参数&lt;/h3&gt;&lt;p&gt;目标主机：指定 SFTP 服务器 IP 地址或者主机名。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;SSH File Transfer Protocol&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;https://jaywcjlove.gitee.io/linux-command/c/sftp.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;SFTP Command&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>文件传输系列：rsync</title>
      <link>https://www.techkoala.net/rsync/</link>
      <pubDate>Wed, 05 Aug 2020 20:58:00 +0800</pubDate>
      
      <guid>https://www.techkoala.net/rsync/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;SCP 的另一个绝佳替选&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;什么是-rsync&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bb%80%e4%b9%88%e6%98%af-rsync&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;什么是 rsync&lt;/h2&gt;&lt;p&gt;rsync (remote synchronize) 是一款实现远程同步功能的软件，它在同步文件的同时，可以保持原来文件的权限、时间、软硬链接等附加信息。&lt;/p&gt;
&lt;p&gt;rsync 是&lt;code&gt;类 Unix&lt;/code&gt; 系统下的数据镜像备份工具。它能同步更新两处计算机的文件与目录，并适当利用差分编码以减少数据传输量。 rsync 中的一项同类软件不常见的重要特性是每个目标的镜像只需发送一次。rsync 可以拷贝／显示目录内容，以及拷贝文件，并可选压缩以及递归拷贝。&lt;/p&gt;
&lt;p&gt;rsync 默认监听 &lt;code&gt;TCP&lt;/code&gt; 端口 873，以原生 rsync 传输协议或者透过&lt;code&gt;远程 shell&lt;/code&gt; 如 &lt;code&gt;RSH&lt;/code&gt; 或者 &lt;code&gt;SSH&lt;/code&gt; 提供文件。&lt;code&gt;SSH&lt;/code&gt; 模式下，rsync 客户端运行程序必须同时在本地和远程机器上安装。&lt;/p&gt;
&lt;h2 id=&#34;rsync-算法&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#rsync-%e7%ae%97%e6%b3%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;rsync 算法&lt;/h2&gt;&lt;div class=&#34;details admonition info open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;信息&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;此部分内容转载 &lt;a href=&#34;https://coolshell.cn/articles/7425.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RSYNC 的核心算法&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;rsync 的算法如下：（假设源文件名为 &lt;code&gt;fileSrc&lt;/code&gt;，目的文件叫 &lt;code&gt;fileDst&lt;/code&gt;）&lt;/p&gt;
&lt;h3 id=&#34;分块-checksum-算法&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%88%86%e5%9d%97-checksum-%e7%ae%97%e6%b3%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;分块 Checksum 算法&lt;/h3&gt;&lt;p&gt;首先，我们会把 &lt;code&gt;fileDst&lt;/code&gt; 的文件平均切分成若干个小块，比如每块 512 个字节，然后对&lt;strong&gt;每块&lt;/strong&gt;计算&lt;strong&gt;两个&lt;/strong&gt; &lt;code&gt;checksum&lt;/code&gt;，一个叫 &lt;code&gt;rolling checksum&lt;/code&gt;，是&lt;code&gt;弱 checksum&lt;/code&gt;，32 位的 &lt;code&gt;checksum&lt;/code&gt;，其使用的是 Mark Adler 发明的 &lt;code&gt;adler-32&lt;/code&gt; 算法，另一个是&lt;code&gt;强 checksum&lt;/code&gt;，128 位的，以前用 &lt;code&gt;md4&lt;/code&gt;，现在用 &lt;code&gt;md5&lt;/code&gt;。为什么要这样？因为若干年前的硬件上跑 &lt;code&gt;md4&lt;/code&gt; 的算法太慢了，所以，需要一个快算法来鉴别文件块的不同，但是弱的 &lt;code&gt;adler-32&lt;/code&gt; 算法碰撞概率太高了，所以我们还要引入强的 &lt;code&gt;checksum&lt;/code&gt; 算法以保证两文件块是相同的。也就是说，弱的 &lt;code&gt;checksum&lt;/code&gt; 是用来区别不同，而强的是用来确认相同。&lt;/p&gt;
&lt;h3 id=&#34;传输算法&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bc%a0%e8%be%93%e7%ae%97%e6%b3%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;传输算法&lt;/h3&gt;&lt;p&gt;同步目标端会把 &lt;code&gt;fileDst&lt;/code&gt; 的一个 &lt;code&gt;checksum&lt;/code&gt; 列表传给同步源，这个列表里包括了三个东西，&lt;code&gt;rolling checksum&lt;/code&gt; (32bits)，&lt;code&gt;md5 checksume&lt;/code&gt; (128bits)，&lt;code&gt;文件块编号&lt;/code&gt;。同步源机器拿到了这个列表后，会对 &lt;code&gt;fileSrc&lt;/code&gt; 做同样的 &lt;code&gt;checksum&lt;/code&gt;，然后和 &lt;code&gt;fileDst&lt;/code&gt; 的 &lt;code&gt;checksum&lt;/code&gt; 做对比，这样就知道哪些文件块改变了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;但是&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果我 &lt;code&gt;fileSrc&lt;/code&gt; 这边在文件中间加了一个字符，这样后面的文件块都会位移一个字符，这样就完全和 &lt;code&gt;fileDst&lt;/code&gt; 这边的不一样了，但理论上来说，我应该只需要传一个字符就好了。这个怎么解决？
如果这个 &lt;code&gt;checksum&lt;/code&gt; 列表特别长，而两边相同的文件块可能并不是一样的顺序，那就需要查找，线性的查找起来应该特别慢吧。这个怎么解决？&lt;/p&gt;
&lt;h3 id=&#34;checksum-查找算法&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#checksum-%e6%9f%a5%e6%89%be%e7%ae%97%e6%b3%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Checksum 查找算法&lt;/h3&gt;&lt;p&gt;同步源端拿到 &lt;code&gt;fileDst&lt;/code&gt; 的 &lt;code&gt;checksum&lt;/code&gt; 数组后，会把这个数据存到一个 &lt;code&gt;hash table&lt;/code&gt; 中，用 &lt;code&gt;rolling checksum&lt;/code&gt; 做 &lt;code&gt;hash&lt;/code&gt;，以便获得 &lt;code&gt;O(1)&lt;/code&gt; 时间复杂度的查找性能。这个 &lt;code&gt;hash table&lt;/code&gt; 是 16 bits 的，所以，&lt;code&gt;hash table&lt;/code&gt; 的尺寸是 2 的 16 次方，对 &lt;code&gt;rolling checksum&lt;/code&gt; 的 &lt;code&gt;hash&lt;/code&gt; 会被散列到 0 到 $ 2^{16} – 1 $ 中的某个整数值。&lt;/p&gt;
&lt;h3 id=&#34;比对算法&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%af%94%e5%af%b9%e7%ae%97%e6%b3%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;比对算法&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;取 &lt;code&gt;fileSrc&lt;/code&gt; 的第一个文件块（我们假设的是 512 个长度），也就是从 &lt;code&gt;fileSrc&lt;/code&gt; 的第 1 个字节到第 512 个字节，取出来后做 &lt;code&gt;rolling checksum&lt;/code&gt; 计算。计算好的值到 &lt;code&gt;hash&lt;/code&gt; 表中查询。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果查到了，说明发现在 &lt;code&gt;fileDst&lt;/code&gt; 中有潜在相同的文件块，于是就再比较 · 的 &lt;code&gt;checksum&lt;/code&gt;，因为 &lt;code&gt;rolling checksume&lt;/code&gt; 太弱了，可能发生碰撞。于是还要算 &lt;code&gt;md5&lt;/code&gt; 的 128 bits 的 &lt;code&gt;checksum&lt;/code&gt;，这样一来，我们就有 $2^{-(32+128)} = 2^{-160} $ 的概率发生碰撞，这小到可以忽略。如果 &lt;code&gt;rolling checksum&lt;/code&gt; 和 &lt;code&gt;md5 checksum&lt;/code&gt; 都相同，那就可以说明在 &lt;code&gt;fileDst&lt;/code&gt; 中有相同的块，记下这一块在 &lt;code&gt;fileDst&lt;/code&gt; 下的文件编号。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果 &lt;code&gt;fileSrc&lt;/code&gt; 的 &lt;code&gt;rolling checksum&lt;/code&gt; 没有在 &lt;code&gt;hash table&lt;/code&gt; 中找到，那就不用算 &lt;code&gt;md5 checksum&lt;/code&gt; 了。表示这一块中有不同的信息。总之，只要 &lt;code&gt;rolling checksum&lt;/code&gt; 或 &lt;code&gt;md5 checksum&lt;/code&gt; 其中有一个在 &lt;code&gt;fileDst&lt;/code&gt; 的 &lt;code&gt;checksum hash&lt;/code&gt; 表中找不到匹配项，那么就会触发算法对 &lt;code&gt;fileSrc&lt;/code&gt; 的 rolling 动作。于是，算法会住后 step 1 个字节，取 &lt;code&gt;fileSrc&lt;/code&gt; 中字节 2-513 的文件块要做 &lt;code&gt;checksum&lt;/code&gt;，然后继续第一步 – 这就是为什么叫 &lt;code&gt;rolling checksum&lt;/code&gt; 。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这样，我们就可以找出 &lt;code&gt;fileSrc&lt;/code&gt; 相邻两次匹配中的那些文本字符，这些就是我们要往同步目标端传的文件内容了。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;rolling-checksum-算法&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#rolling-checksum-%e7%ae%97%e6%b3%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Rolling Checksum 算法&lt;/h2&gt;&lt;p&gt;rolling checksum 算法也叫 &lt;code&gt;Rabin-Karp&lt;/code&gt; 算法，由 Richard M. Karp 和 Michael O. Rabin 在 1987 年发表，它用来解决多模式串匹配问题。其最大的精髓是，当往后面 step 1 个字符的时候，不用全部重新计算所有的 &lt;code&gt;checksum&lt;/code&gt;，也就是说，从 [0, 512] rolling 到 [1, 513] 时，不需要重新计算从 1 到 513 的 &lt;code&gt;checksum&lt;/code&gt;，而是重用 [0，512] 的 &lt;code&gt;checksum&lt;/code&gt; 直接算出来。&lt;/p&gt;
&lt;p&gt;其公式可以表示为：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-9&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hash ( t[0, m-1] ) = t[0] * b^(m-1) + t[1] * b^[m-2] ..... t[m-1] * b^0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;其中的 b 是一个常数基数，在 Rabin-Karp 算法中，一般取值为 256。&lt;/p&gt;
&lt;p&gt;于是，在计算 hash ( t[1, m] ) 时，只需要下面这样就可以了：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-10&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hash( t[1, m] ) = hash ( t[0, m-1] ) - t[0] * b^(m-1)  + t[m] * b ^0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Software/Rsync/rsync-algorithm.jpg&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Software/Rsync/rsync-algorithm.jpg&#34;  data-sub-html=&#34;&lt;h2&gt;rsync 算法示意&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Software/Rsync/rsync-algorithm.jpg&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;rsync 算法示意&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;最终，得到的数据组可以想象为 BT 协议下载 torrent ：一些文件块已下载（匹配上），其他的文件块还未下载（未匹配上）。然后，同步端将这些未匹配上的文件打上标号发送，目的端根据标号重组文件就完成了同步。&lt;/p&gt;
&lt;h2 id=&#34;使用-rsync&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bd%bf%e7%94%a8-rsync&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;使用 rsync&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-11&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rsync &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;OPTION&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;... SRC DEST
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rsync &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;OPTION&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;... SRC &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;USER@&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; host:DEST
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rsync &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;OPTION&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;... &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;USER@&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; HOST:SRC DEST
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rsync &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;OPTION&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;... &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;USER@&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; HOST::SRC DEST
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rsync &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;OPTION&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;... SRC &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;USER@&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; HOST::DEST
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rsync &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;OPTION&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;... rsync://&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;USER@&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; HOST &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;:PORT&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;/SRC &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;DEST&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;对应于以上六种命令格式，&lt;code&gt;rsync&lt;/code&gt; 有六种不同的工作模式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;拷贝本地文件。当 &lt;code&gt;SRC&lt;/code&gt; 和 &lt;code&gt;DES&lt;/code&gt; 路径信息都&lt;strong&gt;不包含&lt;/strong&gt;有单个冒号 &amp;ldquo;:&amp;rdquo; 分隔符时就启动这种工作模式。如：&lt;code&gt;rsync -a /data/backup&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用一个远程 &lt;code&gt;shell&lt;/code&gt; 程序 (如 rsh、ssh) 来实现将本地机器的内容拷贝到远程机器。当 &lt;code&gt;DST&lt;/code&gt; 路径地址&lt;strong&gt;包含单个&lt;/strong&gt;冒号 &amp;ldquo;:&amp;rdquo; 分隔符时启动该模式。如：&lt;code&gt;rsync -avz *.c foo:src&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用一个远程 &lt;code&gt;shell&lt;/code&gt; 程序 (如 &lt;code&gt;rsh&lt;/code&gt;、&lt;code&gt;ssh&lt;/code&gt;) 来实现将远程机器的内容拷贝到本地机器。当 &lt;code&gt;SRC&lt;/code&gt; 地址路径&lt;strong&gt;包含单个&lt;/strong&gt;冒号 &amp;ldquo;:&amp;rdquo; 分隔符时启动该模式。如：&lt;code&gt;rsync -avz foo:src/bar/data&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;从远程 &lt;code&gt;rsync&lt;/code&gt; 服务器中拷贝文件到本地机。当 &lt;code&gt;SRC&lt;/code&gt; 路径信息包含 &amp;ldquo;::&amp;rdquo; 分隔符时启动该模式。如：&lt;code&gt;rsync -av root@192.168.78.192::www /databack&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;从本地机器拷贝文件到远程 &lt;code&gt;rsync&lt;/code&gt; 服务器中。当 &lt;code&gt;DST&lt;/code&gt; 路径信息包含 &amp;ldquo;::&amp;rdquo; 分隔符时启动该模式。如：&lt;code&gt;rsync -av /databack root@192.168.78.192::www&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;列出远程主机的文件列表。这类似于 &lt;code&gt;rsync&lt;/code&gt; 传输，不过只要在命令中省略掉本地机信息即可。如：&lt;code&gt;rsync -v rsync://192.168.78.192/www&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可用选项如下：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-12&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-v, --verbose 详细模式输出。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-q, --quiet 精简输出模式。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-C, --cvs-exclude 使用和 CVS 一样的方法自动忽略文件，用来排除那些不希望传输的文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-c, --checksum 打开校验开关，强制对文件传输进行校验。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-a, --archive 归档模式，表示以递归方式传输文件，并保持所有文件属性，等于 - rlptgoD。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-r, --recursive 对子目录以递归模式处理。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-R, --relative 使用相对路径信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-b, --backup 创建备份，也就是对于目的已经存在有同样的文件名时，将老的文件重新命名为～filename。可以使用 --suffix 选项来指定不同的备份文件前缀。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-u, --update 仅仅进行更新，也就是跳过所有已经存在于 DST，并且文件时间晚于要备份的文件，不覆盖更新的文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-l, --links 保留软链结。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-L, --copy-links 想对待常规文件一样处理软链结。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-H, --hard-links 保留硬链结。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-I, --ignore-times 不跳过那些有同样的时间和长度的文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-p, --perms 保持文件权限。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-o, --owner 保持文件属主信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-g, --group 保持文件属组信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-D, --devices 保持设备文件信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-t, --times 保持文件时间信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-S, --sparse 对稀疏文件进行特殊处理以节省 DST 的空间。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-T --temp-dir&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;DIR 在 DIR 中创建临时文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-n, --dry-run 现实哪些文件将被传输。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-w, --whole-file 拷贝文件，不进行增量检测。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-x, --one-file-system 不要跨越文件系统边界。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-B, --block-size&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;SIZE 检验算法使用的块尺寸，默认是 &lt;span class=&#34;m&#34;&gt;700&lt;/span&gt; 字节。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-e, --rsh&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; 指定使用 rsh、ssh 方式进行数据同步。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-P 等同于 --partial。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-z, --compress 对备份的文件在传输时进行压缩处理。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-h, --help 显示帮助信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--backup-dir 将备份文件 &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;如～filename&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; 存放在在目录下。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-suffix&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;SUFFIX 定义备份文件前缀。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--copy-unsafe-links 仅仅拷贝指向 SRC 路径目录树以外的链结。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--safe-links 忽略指向 SRC 路径目录树以外的链结。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--rsync-path&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;PATH 指定远程服务器上的 rsync 命令所在路径信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--existing 仅仅更新那些已经存在于 DST 的文件，而不备份那些新创建的文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--delete 删除那些 DST 中 SRC 没有的文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--delete-excluded 同样删除接收端那些被该选项指定排除的文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--delete-after 传输结束以后再删除。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--ignore-errors 及时出现 IO 错误也进行删除。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--max-delete&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;NUM 最多删除 NUM 个文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--partial 保留那些因故没有完全传输的文件，以是加快随后的再次传输。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--force 强制删除目录，即使不为空。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--numeric-ids 不将数字的用户和组 id 匹配为用户名和组名。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--timeout&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;time&lt;/span&gt; ip 超时时间，单位为秒。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--size-only 当决定是否要备份文件时，仅仅察看文件大小而不考虑文件时间。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--modify-window&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;NUM 决定文件是否时间相同时使用的时间戳窗口，默认为 0。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--compare-dest&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;DIR 同样比较 DIR 中的文件来决定是否需要备份。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--progress 显示备份过程。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--exclude&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;PATTERN 指定排除不需要传输的文件模式。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--include&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;PATTERN 指定不排除而需要传输的文件模式。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--exclude-from&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;FILE 排除 FILE 中指定模式的文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--include-from&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;FILE 不排除 FILE 指定模式匹配的文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--version 打印版本信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--address 绑定到特定的地址。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--config&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;FILE 指定其他的配置文件，不使用默认的 rsyncd.conf 文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--port&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;PORT 指定其他的 rsync 服务端口。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--blocking-io 对远程 shell 使用阻塞 IO。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-stats 给出某些文件的传输状态。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--progress 在传输时现实传输过程。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--log-format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;formAT 指定日志文件格式。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--password-file&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;FILE 从 FILE 中得到密码。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--bwlimit&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;KBPS 限制 I/O 带宽，KBytes per second。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;https://rsync.samba.org/tech_report/tech_report.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;The rsync algorithm&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;https://coolshell.cn/articles/7425.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RSYNC 的核心算法&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[3] &lt;a href=&#34;https://zh.wikipedia.org/wiki/Rsync&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;rsync wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[4] &lt;a href=&#34;https://ningyu1.github.io/linux-command/c/rsync.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;rsync command&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Git Log 使用技巧</title>
      <link>https://www.techkoala.net/git_log/</link>
      <pubDate>Sat, 01 Aug 2020 22:30:52 +0800</pubDate>
      
      <guid>https://www.techkoala.net/git_log/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;最常用的 Git Log 技巧的总结&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;概览提交历史&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%a6%82%e8%a7%88%e6%8f%90%e4%ba%a4%e5%8e%86%e5%8f%b2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;概览提交历史&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-1&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log —oneline&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;该命令帮助您以更清晰的方式查看提交。每个提交仅显示为一行，并且只有最少量的信息，比如提交哈希、提交消息。&lt;/p&gt;
&lt;h2 id=&#34;显示详细更改信息&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%98%be%e7%a4%ba%e8%af%a6%e7%bb%86%e6%9b%b4%e6%94%b9%e4%bf%a1%e6%81%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;显示详细更改信息&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-2&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log -p&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;此命令会显示更新的详细更改信息，方便查阅。&lt;/p&gt;
&lt;h2 id=&#34;根据时间筛选&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%a0%b9%e6%8d%ae%e6%97%b6%e9%97%b4%e7%ad%9b%e9%80%89&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;根据时间筛选&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-3&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log --after&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;2020-15-05&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-4&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log --after&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;2020-15-05&amp;#34;&lt;/span&gt; --before&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;2020-25-05&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-5&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log --after&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;yesterday&amp;#34;&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log --after&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;today&amp;#34;&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log --before&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;10 day ago&amp;#34;&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log --after&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1 week ago&amp;#34;&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log --after&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;2 month ago&amp;#34;&lt;/span&gt; // 显示近两个月的提交&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;上述命令将按给定的时间段过滤出提交。 例如，&lt;code&gt;--after&lt;/code&gt; 将仅筛选给定时间段之后的提交，而 &lt;code&gt;--before&lt;/code&gt; 将仅筛选给定时间段之前的提交。&lt;/p&gt;
&lt;h2 id=&#34;根据作者筛选&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%a0%b9%e6%8d%ae%e4%bd%9c%e8%80%85%e7%ad%9b%e9%80%89&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;根据作者筛选&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-6&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log --author&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;techkoala&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;该命令会显示由 techkoala 提交的更改。当然，可以结合上面介绍的命令，进行更加精确的筛选，例如：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-7&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log --after&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1 week ago&amp;#34;&lt;/span&gt; --author&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;techkoala&amp;#34;&lt;/span&gt; -p&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;根据-log-信息筛选&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%a0%b9%e6%8d%ae-log-%e4%bf%a1%e6%81%af%e7%ad%9b%e9%80%89&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;根据 log 信息筛选&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-8&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log --grep&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;ISSUE-43560&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;需要注意的是，上述筛选字段区分大小写，如果需要不区分，请加上 &lt;code&gt;-i&lt;/code&gt; 选项。&lt;/p&gt;
&lt;p&gt;此外，还支持正则表达式：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-9&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log -i --grep&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;issue-43560\|issue-89786&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;根据文件筛选&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%a0%b9%e6%8d%ae%e6%96%87%e4%bb%b6%e7%ad%9b%e9%80%89&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;根据文件筛选&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-10&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log Git_Log.md&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;该命令显示针对特定文件的的提交历史。&lt;/p&gt;
&lt;p&gt;当然，可以传入多个文件：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-11&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log Git_Log.md Github_Issue.md&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;同样的，结合别的命令可以做出更精确的筛选，例如：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-12&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log -i --grep&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;fix &amp;#34;&lt;/span&gt; Git_Log.md Github_Issue.md&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;根据文件内容筛选&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%a0%b9%e6%8d%ae%e6%96%87%e4%bb%b6%e5%86%85%e5%ae%b9%e7%ad%9b%e9%80%89&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;根据文件内容筛选&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-13&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log -S&lt;span class=&#34;s2&#34;&gt;&amp;#34;function login()&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;上述命令帮你在源代码中搜索已添加到提交历史记录中的特定字符串。同样的，加上 &lt;code&gt;-i&lt;/code&gt; 可以不区分大小写。&lt;/p&gt;
&lt;h2 id=&#34;仅显示合并提交&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bb%85%e6%98%be%e7%a4%ba%e5%90%88%e5%b9%b6%e6%8f%90%e4%ba%a4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;仅显示合并提交&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-14&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log --merges&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;该命令显示当前分支上合并的提交。&lt;/p&gt;
&lt;h2 id=&#34;显示不同分支间的区别&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%98%be%e7%a4%ba%e4%b8%8d%e5%90%8c%e5%88%86%e6%94%af%e9%97%b4%e7%9a%84%e5%8c%ba%e5%88%ab&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;显示不同分支间的区别&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-15&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log master..develop&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;该命令将显示所有来自 &lt;code&gt;develop&lt;/code&gt; 但不在 &lt;code&gt;master&lt;/code&gt; 分支的提交。&lt;/p&gt;
&lt;h2 id=&#34;自定义-log-信息格式&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%87%aa%e5%ae%9a%e4%b9%89-log-%e4%bf%a1%e6%81%af%e6%a0%bc%e5%bc%8f&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;自定义 log 信息格式&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-16&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git log --pretty&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;format:&lt;span class=&#34;s2&#34;&gt;&amp;#34;%Cred%an - %ar%n %Cblue %h -%Cgreen %s %n&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;Git 提供了用于自定义日志消息格式的选项，你可以查看自定义漂亮选项（custom pretty options ）以获得更多选项。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;https://hackernoon.com/ten-useful-git-log-tricks-7nt3yxy&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Ten Useful Git Log Tricks&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E6%9F%A5%E7%9C%8B%E6%8F%90%E4%BA%A4%E5%8E%86%E5%8F%B2&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Git 基础 - 查看提交历史&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>逐步详解 SHA-2 算法（以 SHA-256 为例）</title>
      <link>https://www.techkoala.net/learn_sha_2_step_by_step/</link>
      <pubDate>Tue, 28 Jul 2020 16:19:03 +0800</pubDate>
      
      <guid>https://www.techkoala.net/learn_sha_2_step_by_step/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;最常见的 SHA-2 算法是如何实现的？本文逐步为你讲解。&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;&lt;code&gt;SHA-2&lt;/code&gt; (Secure Hash Algorithm 2)，是最流行的哈希算法之一，包括了：&lt;code&gt;SHA-224&lt;/code&gt;、&lt;code&gt;SHA-256&lt;/code&gt;、&lt;code&gt;SHA-384&lt;/code&gt;、&lt;code&gt;SHA-512&lt;/code&gt;、&lt;code&gt;SHA-512/224&lt;/code&gt;、&lt;code&gt;SHA-512/256&lt;/code&gt;。这些变体除了生成摘要的长度、循环运行的次数等一些细微差异之外，基本结构是一致的。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SHA-2&lt;/code&gt; 以安全和速度著称，在未生成密钥的情况下（例如挖掘比特币），像 &lt;code&gt;SHA-2&lt;/code&gt; 这样的快速哈希算法通常占据上风。&lt;/p&gt;
&lt;h2 id=&#34;哈希函数hash-function&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%93%88%e5%b8%8c%e5%87%bd%e6%95%b0hash-function&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;哈希函数（Hash Function）&lt;/h2&gt;&lt;p&gt;如果，你还不清楚哈希是什么，可以参见我的&lt;a href=&#34;https://www.techkoala.net/hash_functions/&#34; rel=&#34;&#34;&gt;另外一篇文章&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;简单来说，哈希函数的拥有如下三个重要特性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;哈希函数对数据进行确定性加扰。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无论输入是什么，哈希函数的输出始终具有相同的长度（大小）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无法从加扰数据中检索原始数据（单向函数）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;sha-2-vs-sha-256&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#sha-2-vs-sha-256&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;SHA-2 vs SHA-256&lt;/h2&gt;&lt;p&gt;有人可能会困惑：欸？我平时看到的都是 &lt;code&gt;SHA-128&lt;/code&gt;、&lt;code&gt;SHA-256&lt;/code&gt; 等等，这个 &lt;code&gt;SHA-2&lt;/code&gt; 又是什么？&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SHA-2&lt;/code&gt; 是一种算法，一种关于如何哈希数据的广义思想。&lt;code&gt;SHA-256&lt;/code&gt; 设置了定义 &lt;code&gt;SHA-2&lt;/code&gt; 算法行为的附加常量。其中一个常量是输出大小，“256” 和 “512” 是指它们各自的输出摘要大小（以位为单位）。&lt;/p&gt;
&lt;h2 id=&#34;逐步详解-sha-256&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%80%90%e6%ad%a5%e8%af%a6%e8%a7%a3-sha-256&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;逐步详解 SHA-256&lt;/h2&gt;&lt;p&gt;接下来举例说明 SHA-256 如何工作:&lt;/p&gt;
&lt;h3 id=&#34;第一步消息预处理&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ac%ac%e4%b8%80%e6%ad%a5%e6%b6%88%e6%81%af%e9%a2%84%e5%a4%84%e7%90%86&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;第一步：消息预处理&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;将 &lt;code&gt;hello world&lt;/code&gt; 转换为二进制&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;01101000 01100101 01101100 01101100 01101111 00100000 01110111 01101111 01110010 01101100 01100100&lt;/p&gt;

&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;尾部追加单独的 &lt;code&gt;1&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;01101000 01100101 01101100 01101100 01101111 00100000 01110111 01101111 01110010 01101100 01100100 &lt;strong&gt;1&lt;/strong&gt;&lt;/p&gt;

&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;填充 0 直到数据为 512 的整数倍，再减去 64 位（在本例中剩下 448 位）：&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;01101000 01100101 01101100 01101100 01101111 00100000 01110111 01101111&lt;/p&gt;
&lt;p&gt;01110010 01101100 01100100 10000000 00000000 00000000 00000000 00000000&lt;/p&gt;
&lt;p&gt;00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000&lt;/p&gt;
&lt;p&gt;00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000&lt;/p&gt;
&lt;p&gt;00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000&lt;/p&gt;
&lt;p&gt;00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000&lt;/p&gt;
&lt;p&gt;00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000&lt;/p&gt;

&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在末尾附加新的 64 位，这 64 位是一个大端整数，用于表示原始二进制输入的长度。在本文的例子中，是 &lt;code&gt;88&lt;/code&gt;，或者二进制，&lt;code&gt;1011000&lt;/code&gt;。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;01101000 01100101 01101100 01101100 01101111 00100000 01110111 01101111&lt;/p&gt;
&lt;p&gt;01110010 01101100 01100100 10000000 00000000 00000000 00000000 00000000&lt;/p&gt;
&lt;p&gt;00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000&lt;/p&gt;
&lt;p&gt;00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000&lt;/p&gt;
&lt;p&gt;00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000&lt;/p&gt;
&lt;p&gt;00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000&lt;/p&gt;
&lt;p&gt;00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000&lt;/p&gt;
&lt;p&gt;00000000 00000000 00000000 00000000 00000000 00000000 00000000 01011000&lt;/p&gt;

&lt;/blockquote&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;现在，得到了初始的输入值（通过对消息进行补位处理，最终的长度应该是 512 位的倍数）。&lt;/p&gt;
&lt;h3 id=&#34;第二步初始化哈希值h&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ac%ac%e4%ba%8c%e6%ad%a5%e5%88%9d%e5%a7%8b%e5%8c%96%e5%93%88%e5%b8%8c%e5%80%bch&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;第二步：初始化哈希值（h）&lt;/h3&gt;&lt;p&gt;现在，初始化 8 个哈希值。这些是硬编码的常数，分别代表前 8 个素数（2、3、5、7、11、13、17、19）的平方根的小数部分的前 32 位：&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;h0 := 0x6a09e667&lt;/p&gt;
&lt;p&gt;h1 := 0xbb67ae85&lt;/p&gt;
&lt;p&gt;h2 := 0x3c6ef372&lt;/p&gt;
&lt;p&gt;h3 := 0xa54ff53a&lt;/p&gt;
&lt;p&gt;h4 := 0x510e527f&lt;/p&gt;
&lt;p&gt;h5 := 0x9b05688c&lt;/p&gt;
&lt;p&gt;h6 := 0x1f83d9ab&lt;/p&gt;
&lt;p&gt;h7 := 0x5be0cd19&lt;/p&gt;

&lt;/blockquote&gt;&lt;h3 id=&#34;第三步初始化圆常数k&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ac%ac%e4%b8%89%e6%ad%a5%e5%88%9d%e5%a7%8b%e5%8c%96%e5%9c%86%e5%b8%b8%e6%95%b0k&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;第三步：初始化圆常数(k)&lt;/h3&gt;&lt;p&gt;与步骤 2 类似，初始化一些常量，一共有 64 个。每个值（0-63）是前 64 个素数（2-311）的立方根分数部分的前 32 位。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;0x428a2f98 0x71374491 0xb5c0fbcf 0xe9b5dba5 0x3956c25b 0x59f111f1&lt;/p&gt;
&lt;p&gt;0x923f82a4 0xab1c5ed5 0xd807aa98 0x12835b01 0x243185be 0x550c7dc3&lt;/p&gt;
&lt;p&gt;0x72be5d74 0x80deb1fe 0x9bdc06a7 0xc19bf174 0xe49b69c1 0xefbe4786&lt;/p&gt;
&lt;p&gt;0x0fc19dc6 0x240ca1cc 0x2de92c6f 0x4a7484aa 0x5cb0a9dc 0x76f988da&lt;/p&gt;
&lt;p&gt;0x983e5152 0xa831c66d 0xb00327c8 0xbf597fc7 0xc6e00bf3 0xd5a79147&lt;/p&gt;
&lt;p&gt;0x06ca6351 0x14292967 0x27b70a85 0x2e1b2138 0x4d2c6dfc 0x53380d13&lt;/p&gt;
&lt;p&gt;0x650a7354 0x766a0abb 0x81c2c92e 0x92722c85 0xa2bfe8a1 0xa81a664b&lt;/p&gt;
&lt;p&gt;0xc24b8b70 0xc76c51a3 0xd192e819 0xd6990624 0xf40e3585 0x106aa070&lt;/p&gt;
&lt;p&gt;0x19a4c116 0x1e376c08 0x2748774c 0x34b0bcb5 0x391c0cb3 0x4ed8aa4a&lt;/p&gt;
&lt;p&gt;0x5b9cca4f 0x682e6ff3 0x748f82ee 0x78a5636f 0x84c87814 0x8cc70208&lt;/p&gt;
&lt;p&gt;0x90befffa 0xa4506ceb 0xbef9a3f7 0xc67178f2&lt;/p&gt;

&lt;/blockquote&gt;&lt;h3 id=&#34;第四步块循环&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ac%ac%e5%9b%9b%e6%ad%a5%e5%9d%97%e5%be%aa%e7%8e%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;第四步：块循环&lt;/h3&gt;&lt;p&gt;对输入的每 512 位分为一块，执行以下步骤：&lt;/p&gt;
&lt;div class=&#34;details admonition warning open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 576 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;注意&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;在本文的例子中，因为 “hello world” 太短了，所以只有一个块。在循环的每一次迭代中，都将对哈希值 h0-h7 进行变更，最终作为结果输出。&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&#34;第五步重组信息数组w&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ac%ac%e4%ba%94%e6%ad%a5%e9%87%8d%e7%bb%84%e4%bf%a1%e6%81%af%e6%95%b0%e7%bb%84w&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;第五步：重组信息数组（w）&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;将步骤 1 中的输入数据重新排列到新数组中，其中每个条目都是一个 32 位字：&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;01101000011001010110110001101100 01101111001000000111011101101111&lt;/p&gt;
&lt;p&gt;01110010011011000110010010000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000001011000&lt;/p&gt;

&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;再加上 48 个初始化为零的字，这样就有了一个数组 &lt;strong&gt;w [0…63]&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;01101000011001010110110001101100 01101111001000000111011101101111&lt;/p&gt;
&lt;p&gt;01110010011011000110010010000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000001011000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;&amp;hellip; &amp;hellip;&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;

&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用以下算法修改数组末尾的零索引：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-9&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;For i from w[16…63]:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    s0 = (w[i-15] rightrotate 7) xor (w[i-15] rightrotate 18) xor (w[i-15] rightshift 3)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    s1 = (w[i- 2] rightrotate 17) xor (w[i- 2] rightrotate 19) xor (w[i- 2] rightshift 10)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    w[i] = w[i-16] + s0 + w[i-7] + s1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;以 w[16] 举例说明：&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;w[1] rightrotate 7:&lt;/p&gt;
&lt;p&gt;01101111001000000111011101101111 -&amp;gt; 11011110110111100100000011101110&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;w[1] rightrotate 18:&lt;/p&gt;
&lt;p&gt;01101111001000000111011101101111 -&amp;gt; 00011101110110111101101111001000&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;w[1] rightshift 3:&lt;/p&gt;
&lt;p&gt;01101111001000000111011101101111 -&amp;gt; 00001101111001000000111011101101&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;s0 = 11011110110111100100000011101110&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;XOR&lt;/strong&gt; 00011101110110111101101111001000&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;XOR&lt;/strong&gt; 00001101111001000000111011101101&lt;/p&gt;
&lt;p&gt;= 11001110111000011001010111001011&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;w[14] rightrotate 17:&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 -&amp;gt; 00000000000000000000000000000000&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;w[14] rightrotate19:&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 -&amp;gt; 00000000000000000000000000000000&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;w[14] rightshift 10:&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 -&amp;gt; 00000000000000000000000000000000&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;s1 = 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;XOR&lt;/strong&gt; 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;XOR&lt;/strong&gt; 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;= 00000000000000000000000000000000&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;w[16] = w[0] + s0 + w[9] + s1&lt;/p&gt;
&lt;p&gt;= 01101000011001010110110001101100&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;11001110111000011001010111001011&lt;/li&gt;
&lt;li&gt;00000000000000000000000000000000&lt;/li&gt;
&lt;li&gt;00000000000000000000000000000000&lt;br&gt;
= 00110111010001110000001000110111&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;// addition is calculated modulo $ 2^{32} $&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;总的结果就是：&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;01101000011001010110110001101100 01101111001000000111011101101111&lt;/p&gt;
&lt;p&gt;01110010011011000110010010000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000000000000&lt;/p&gt;
&lt;p&gt;00000000000000000000000000000000 00000000000000000000000001011000&lt;/p&gt;
&lt;p&gt;00110111010001110000001000110111 10000110110100001100000000110001&lt;/p&gt;
&lt;p&gt;11010011101111010001000100001011 01111000001111110100011110000010&lt;/p&gt;
&lt;p&gt;00101010100100000111110011101101 01001011001011110111110011001001&lt;/p&gt;
&lt;p&gt;00110001111000011001010001011101 10001001001101100100100101100100&lt;/p&gt;
&lt;p&gt;01111111011110100000011011011010 11000001011110011010100100111010&lt;/p&gt;
&lt;p&gt;10111011111010001111011001010101 00001100000110101110001111100110&lt;/p&gt;
&lt;p&gt;10110000111111100000110101111101 01011111011011100101010110010011&lt;/p&gt;
&lt;p&gt;00000000100010011001101101010010 00000111111100011100101010010100&lt;/p&gt;
&lt;p&gt;00111011010111111110010111010110 01101000011001010110001011100110&lt;/p&gt;
&lt;p&gt;11001000010011100000101010011110 00000110101011111001101100100101&lt;/p&gt;
&lt;p&gt;10010010111011110110010011010111 01100011111110010101111001011010&lt;/p&gt;
&lt;p&gt;11100011000101100110011111010111 10000100001110111101111000010110&lt;/p&gt;
&lt;p&gt;11101110111011001010100001011011 10100000010011111111001000100001&lt;/p&gt;
&lt;p&gt;11111001000110001010110110111000 00010100101010001001001000011001&lt;/p&gt;
&lt;p&gt;00010000100001000101001100011101 01100000100100111110000011001101&lt;/p&gt;
&lt;p&gt;10000011000000110101111111101001 11010101101011100111100100111000&lt;/p&gt;
&lt;p&gt;00111001001111110000010110101101 11111011010010110001101111101111&lt;/p&gt;
&lt;p&gt;11101011011101011111111100101001 01101010001101101001010100110100&lt;/p&gt;
&lt;p&gt;00100010111111001001110011011000 10101001011101000000110100101011&lt;/p&gt;
&lt;p&gt;01100000110011110011100010000101 11000100101011001001100000111010&lt;/p&gt;
&lt;p&gt;00010001010000101111110110101101 10110000101100000001110111011001&lt;/p&gt;
&lt;p&gt;10011000111100001100001101101111 01110010000101111011100000011110&lt;/p&gt;
&lt;p&gt;10100010110101000110011110011010 00000001000011111001100101111011&lt;/p&gt;
&lt;p&gt;11111100000101110100111100001010 11000010110000101110101100010110&lt;/p&gt;

&lt;/blockquote&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;第六步压缩&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ac%ac%e5%85%ad%e6%ad%a5%e5%8e%8b%e7%bc%a9&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;第六步：压缩&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;初始化变量 a，b，c，d，e，f，g，h，并将它们分别设置为等于当前的哈希值：h0，h1，h2，h3，h4，h5，h6，h7&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;进行压缩循环。 压缩循环将改变 a…h 的值。压缩循环如下：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-10&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;for i from 0 to 63:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    S1 = (e rightrotate 6) xor (e rightrotate 11) xor (e rightrotate 25)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ch = (e and f) xor ((not e) and g)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    temp1 = h + S1 + ch + k[i] + w[i]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    S0 = (a rightrotate 2) xor (a rightrotate 13) xor (a rightrotate 22)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    maj = (a and b) xor (a and c) xor (b and c)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    temp2 := S0 + maj
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    h = g
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    g = f
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    e = d + temp1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    d = c
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    c = b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    b = a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    a = temp1 + temp2&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;下面演示第一次迭代，所有加法都是以 $ 2^{32} $ 为模的：&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;a = 0x6a09e667 = 01101010000010011110011001100111&lt;/p&gt;
&lt;p&gt;b = 0xbb67ae85 = 10111011011001111010111010000101&lt;/p&gt;
&lt;p&gt;c = 0x3c6ef372 = 00111100011011101111001101110010&lt;/p&gt;
&lt;p&gt;d = 0xa54ff53a = 10100101010011111111010100111010&lt;/p&gt;
&lt;p&gt;e = 0x510e527f = 01010001000011100101001001111111&lt;/p&gt;
&lt;p&gt;f = 0x9b05688c = 10011011000001010110100010001100&lt;/p&gt;
&lt;p&gt;g = 0x1f83d9ab = 00011111100000111101100110101011&lt;/p&gt;
&lt;p&gt;h = 0x5be0cd19 = 01011011111000001100110100011001&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;e rightrotate 6:&lt;/p&gt;
&lt;p&gt;01010001000011100101001001111111 -&amp;gt; 11111101010001000011100101001001&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;e rightrotate 11:&lt;/p&gt;
&lt;p&gt;01010001000011100101001001111111 -&amp;gt; 01001111111010100010000111001010&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;e rightrotate 25:&lt;/p&gt;
&lt;p&gt;01010001000011100101001001111111 -&amp;gt; 10000111001010010011111110101000&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;S1 = 11111101010001000011100101001001&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;XOR&lt;/strong&gt; 01001111111010100010000111001010&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;XOR&lt;/strong&gt; 10000111001010010011111110101000&lt;/p&gt;
&lt;p&gt;= 00110101100001110010011100101011&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;e and f:&lt;/p&gt;
&lt;p&gt;01010001000011100101001001111111
&amp;amp; 10011011000001010110100010001100 =
00010001000001000100000000001100&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;not e:&lt;/p&gt;
&lt;p&gt;01010001000011100101001001111111 -&amp;gt; 10101110111100011010110110000000&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;(not e) and g:&lt;/p&gt;
&lt;p&gt;10101110111100011010110110000000
&amp;amp; 00011111100000111101100110101011
= 00001110100000011000100110000000&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;ch = (e and f) xor ((not e) and g)&lt;/p&gt;
&lt;p&gt;= 00010001000001000100000000001100&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;XOR&lt;/strong&gt; 00001110100000011000100110000000&lt;/p&gt;
&lt;p&gt;= 00011111100001011100100110001100&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;// k[i] 是圆常数&lt;/p&gt;
&lt;p&gt;// w[i] 信息数组&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;temp1 = h + S1 + ch + k[i] + w[i]&lt;/p&gt;
&lt;p&gt;= 01011011111000001100110100011001 + 00110101100001110010011100101011 + 00011111100001011100100110001100 + 1000010100010100010111110011000 + 01101000011001010110110001101100
= 01011011110111010101100111010100&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;a rightrotate 2:&lt;/p&gt;
&lt;p&gt;01101010000010011110011001100111 -&amp;gt; 11011010100000100111100110011001&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;a rightrotate 13:&lt;/p&gt;
&lt;p&gt;01101010000010011110011001100111 -&amp;gt; 00110011001110110101000001001111&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;a rightrotate 22:&lt;/p&gt;
&lt;p&gt;01101010000010011110011001100111 -&amp;gt; 00100111100110011001110110101000&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;S0 = 11011010100000100111100110011001&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;XOR&lt;/strong&gt; 00110011001110110101000001001111&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;XOR&lt;/strong&gt; 00100111100110011001110110101000&lt;/p&gt;
&lt;p&gt;= 11001110001000001011010001111110&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;a and b:&lt;/p&gt;
&lt;p&gt;01101010000010011110011001100111
&amp;amp; 10111011011001111010111010000101 =
00101010000000011010011000000101&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;a and c:&lt;/p&gt;
&lt;p&gt;01101010000010011110011001100111
&amp;amp; 00111100011011101111001101110010 =
00101000000010001110001001100010&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;b and c:&lt;/p&gt;
&lt;p&gt;10111011011001111010111010000101
&amp;amp; 00111100011011101111001101110010 =
00111000011001101010001000000000&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;maj = (a and b) xor (a and c) xor (b and c)&lt;/p&gt;
&lt;p&gt;= 00101010000000011010011000000101&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;XOR&lt;/strong&gt; 00101000000010001110001001100010&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;XOR&lt;/strong&gt; 00111000011001101010001000000000&lt;/p&gt;
&lt;p&gt;= 00111010011011111110011001100111&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;temp2 = S0 + maj
= 11001110001000001011010001111110 + 00111010011011111110011001100111
= 00001000100100001001101011100101&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;h = 00011111100000111101100110101011&lt;/p&gt;
&lt;p&gt;g = 10011011000001010110100010001100&lt;/p&gt;
&lt;p&gt;f = 01010001000011100101001001111111&lt;/p&gt;
&lt;p&gt;e = 10100101010011111111010100111010 + 01011011110111010101100111010100
= 00000001001011010100111100001110&lt;/p&gt;
&lt;p&gt;d = 00111100011011101111001101110010&lt;/p&gt;
&lt;p&gt;c = 10111011011001111010111010000101&lt;/p&gt;
&lt;p&gt;b = 01101010000010011110011001100111&lt;/p&gt;
&lt;p&gt;a = 01011011110111010101100111010100 + 00001000100100001001101011100101
= 01100100011011011111010010111001&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;整个计算会继续循环进行了 63 次，期间不断修改了变量 a-h 的值。最终结果为：&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;a = 4F434152 = 001001111010000110100000101010010&lt;/p&gt;
&lt;p&gt;b = D7E58F83 = 011010111111001011000111110000011&lt;/p&gt;
&lt;p&gt;c = 68BF5F65 = 001101000101111110101111101100101&lt;/p&gt;
&lt;p&gt;d = 352DB6C0 = 000110101001011011011011011000000&lt;/p&gt;
&lt;p&gt;e = 73769D64 = 001110011011101101001110101100100&lt;/p&gt;
&lt;p&gt;f = DF4E1862 = 011011111010011100001100001100010&lt;/p&gt;
&lt;p&gt;g = 71051E01 = 001110001000001010001111000000001&lt;/p&gt;
&lt;p&gt;h = 870F00D0 = 010000111000011110000000011010000&lt;/p&gt;

&lt;/blockquote&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;第七步修改最终值&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ac%ac%e4%b8%83%e6%ad%a5%e4%bf%ae%e6%94%b9%e6%9c%80%e7%bb%88%e5%80%bc&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;第七步：修改最终值&lt;/h3&gt;&lt;p&gt;压缩循环完成后，仍然处于在块循环中，通过向哈希值中添加它们各自的变量 a-h 来修改哈希值。同样的，所有的加法都是模 $ 2^{32} $。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;h0 = h0 + a = 10111001010011010010011110111001&lt;/p&gt;
&lt;p&gt;h1 = h1 + b = 10010011010011010011111000001000&lt;/p&gt;
&lt;p&gt;h2 = h2 + c = 10100101001011100101001011010111&lt;/p&gt;
&lt;p&gt;h3 = h3 + d = 11011010011111011010101111111010&lt;/p&gt;
&lt;p&gt;h4 = h4 + e = 11000100100001001110111111100011&lt;/p&gt;
&lt;p&gt;h5 = h5 + f = 01111010010100111000000011101110&lt;/p&gt;
&lt;p&gt;h6 = h6 + g = 10010000100010001111011110101100&lt;/p&gt;
&lt;p&gt;h7 = h7 + h = 11100010111011111100110111101001&lt;/p&gt;

&lt;/blockquote&gt;&lt;h3 id=&#34;第八步-组成最终的哈希值&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ac%ac%e5%85%ab%e6%ad%a5-%e7%bb%84%e6%88%90%e6%9c%80%e7%bb%88%e7%9a%84%e5%93%88%e5%b8%8c%e5%80%bc&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;第八步: 组成最终的哈希值&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-11&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;digest = h0 append h1 append h2 append h3 append h4 append h5 append h6 append h7
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       = B94D27B9934D3E08A52E52D7DA7DABFAC484EFE37A5380EE9088F7ACE2EFCDE9&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;搞定！至此，本文非常详细地实现了 SHA-256 中的每一步 🙂。&lt;/p&gt;
&lt;h2 id=&#34;附录&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%99%84%e5%bd%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;附录&lt;/h2&gt;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Algorithm/SHA-2/SHA-2.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Algorithm/SHA-2/SHA-2.png&#34;  data-sub-html=&#34;&lt;h2&gt;SHA-2 的第 t 个加密循环&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Algorithm/SHA-2/SHA-2.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;SHA-2 的第 t 个加密循环&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;下面这段&lt;strong&gt;伪代码&lt;/strong&gt;总结了上面执行的所有步骤：&lt;/p&gt;
&lt;div class=&#34;details admonition info open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;几点说明&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;所有变量均为 32 位无符号整数，加法以 $ 2^{32} $ 为模&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对于每一轮，在消息调度数组 w [i]，0≤i≤63 中有一个循环常数 k [i] 和一个条目。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;压缩函数使用 8 个工作变量，a 到 h。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在此伪代码中表示常量时使用大端约定，并且当将消息块数据从字节解析到字时，例如，填充后的输入消息 “abc” 的第一个字是 0x61626380&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-12&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Initialize&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;hash&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;values&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&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;first&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;32&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bits&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fractional&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;square&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;roots&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;first&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primes&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;2.&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&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;h0&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;mh&#34;&gt;0x6a09e667&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;h1&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;mh&#34;&gt;0xbb67ae85&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;h2&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;mh&#34;&gt;0x3c6ef372&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;h3&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;mh&#34;&gt;0xa54ff53a&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;h4&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;mh&#34;&gt;0x510e527f&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;h5&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;mh&#34;&gt;0x9b05688c&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;h6&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;mh&#34;&gt;0x1f83d9ab&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;h7&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;mh&#34;&gt;0x5be0cd19&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&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;Initialize&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;array&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;round&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;constants&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&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;first&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;32&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bits&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fractional&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cube&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;roots&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;first&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;64&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primes&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;2.&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;311&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&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;k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;63&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;o&#34;&gt;=&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;mh&#34;&gt;0x428a2f98&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x71374491&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xb5c0fbcf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xe9b5dba5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x3956c25b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x59f111f1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x923f82a4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xab1c5ed5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&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;mh&#34;&gt;0xd807aa98&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x12835b01&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x243185be&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x550c7dc3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x72be5d74&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x80deb1fe&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x9bdc06a7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xc19bf174&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&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;mh&#34;&gt;0xe49b69c1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xefbe4786&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x0fc19dc6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x240ca1cc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x2de92c6f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x4a7484aa&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x5cb0a9dc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x76f988da&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&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;mh&#34;&gt;0x983e5152&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xa831c66d&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xb00327c8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xbf597fc7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xc6e00bf3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xd5a79147&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x06ca6351&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x14292967&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&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;mh&#34;&gt;0x27b70a85&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x2e1b2138&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x4d2c6dfc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x53380d13&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x650a7354&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x766a0abb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x81c2c92e&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x92722c85&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&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;mh&#34;&gt;0xa2bfe8a1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xa81a664b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xc24b8b70&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xc76c51a3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xd192e819&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xd6990624&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xf40e3585&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x106aa070&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&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;mh&#34;&gt;0x19a4c116&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x1e376c08&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x2748774c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x34b0bcb5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x391c0cb3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x4ed8aa4a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x5b9cca4f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x682e6ff3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&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;mh&#34;&gt;0x748f82ee&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x78a5636f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x84c87814&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x8cc70208&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0x90befffa&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xa4506ceb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xbef9a3f7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;0xc67178f2&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&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;Pre&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;processing&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Padding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&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;begin&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;original&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;L&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bits&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;append&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;single&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bit&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;append&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;K&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;0&amp;#39;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;where&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;K&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;minimum&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;number&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;such&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;that&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;L&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;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;K&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;64&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;multiple&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;512&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;append&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;L&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;64&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bit&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;big&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;endian&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;integer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;making&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;total&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;post&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;processed&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;multiple&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;512&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bits&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&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;Process&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;successive&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;512&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bit&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;chunks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&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;break&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;into&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;512&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bit&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;chunks&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;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;each&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;chunk&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;create&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;64&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;entry&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;schedule&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;array&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;32&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bit&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;words&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;The&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;initial&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;values&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;don&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;t matter, so many implementations zero them here)&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;copy&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;chunk&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;into&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;first&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;16&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;words&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;0.&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;schedule&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;array&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&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;Extend&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;first&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;16&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;words&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;into&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remaining&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;48&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;words&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;16.&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;63&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;schedule&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&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;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;16&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&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;s0&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;n&#34;&gt;w&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;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rightrotate&lt;/span&gt;  &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xor&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;w&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;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rightrotate&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xor&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;w&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;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rightshift&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&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;s1&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;n&#34;&gt;w&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;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rightrotate&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xor&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;w&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;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rightrotate&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xor&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;w&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;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rightshift&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&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;w&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;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;w&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;mi&#34;&gt;16&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;s0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;w&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;mi&#34;&gt;7&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;s1&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&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;Initialize&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;working&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;variables&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;current&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;hash&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&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;a&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;h0&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;b&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;h1&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;c&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;h2&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;d&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;h3&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;e&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;h4&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;f&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;h5&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;g&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;h6&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;h&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;h7&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&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;Compression&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;main&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;loop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&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;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;63&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;S1&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;n&#34;&gt;e&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rightrotate&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;xor&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;e&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rightrotate&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xor&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;e&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rightrotate&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&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;ch&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;n&#34;&gt;e&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xor&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;e&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&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;temp1&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;h&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;S1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ch&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;k&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;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;w&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&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;S0&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;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rightrotate&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;n&#34;&gt;xor&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;n&#34;&gt;rightrotate&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xor&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;n&#34;&gt;rightrotate&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;22&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&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;maj&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;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&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;xor&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;ow&#34;&gt;and&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;xor&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;ow&#34;&gt;and&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&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;temp2&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;S0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;maj&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&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;h&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;g&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;g&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;f&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;f&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;e&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;e&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;d&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;temp1&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;d&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;c&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;c&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;b&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;b&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;a&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;a&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;temp1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;temp2&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&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;Add&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;compressed&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;chunk&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;current&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;hash&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&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;h0&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;h0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&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;h1&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;h1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;
&lt;/span&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;h2&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;h2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c&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;h3&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;h3&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;d&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;h4&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;h4&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;e&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;h5&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;h5&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&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;h6&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;h6&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&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;h7&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;h7&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;h&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&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;Produce&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;final&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;hash&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;big&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;endian&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&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;digest&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;nb&#34;&gt;hash&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;h0&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;append&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;h1&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;append&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;h2&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;append&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;h3&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;append&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;h4&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;append&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;h5&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;append&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;h6&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;append&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;h7&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;https://qvault.io/2020/07/08/how-sha-2-works-step-by-step-sha-256/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;How SHA-2 Works Step-By-Step (SHA-256)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;https://en.wikipedia.org/wiki/SHA-2&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;SHA-2&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>哈希函数简介</title>
      <link>https://www.techkoala.net/hash_functions/</link>
      <pubDate>Sat, 25 Jul 2020 16:30:31 +0800</pubDate>
      
      <guid>https://www.techkoala.net/hash_functions/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;哈希函数入门介绍。&lt;/p&gt;

&lt;/blockquote&gt;&lt;div class=&#34;details admonition info open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;一点说明&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;本文中英文和二进制之间的相互转换并&lt;strong&gt;没有遵循任何模式&lt;/strong&gt;，请读者不要纠结于这一点。当然，实际中，有很多方法用于将我们熟知的字符（例如中文、英语等）转换为二进制（十六进制），如果感兴趣，可以点击下面的参考中的内容&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&#34;哈希函数hash-function用来做什么&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%93%88%e5%b8%8c%e5%87%bd%e6%95%b0hash-function%e7%94%a8%e6%9d%a5%e5%81%9a%e4%bb%80%e4%b9%88&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;哈希函数（Hash Function）用来做什么？&lt;/h2&gt;&lt;p&gt;哈希函数，又称散列函数，广泛应用于互联网的各处，包括但不限于安全地存储密码、查找重复记录、快速存储和检索数据等。例如，&lt;code&gt;Qvault&lt;/code&gt; 应用使用哈希将主密码扩展为私人加密密钥。你还可以 &lt;a href=&#34;https://en.wikipedia.org/wiki/Hash_function#Uses&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;点击这里&lt;/a&gt; 查看哈希函数用于何处。&lt;/p&gt;
&lt;h2 id=&#34;重要特性&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%87%8d%e8%a6%81%e7%89%b9%e6%80%a7&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;重要特性&lt;/h2&gt;&lt;p&gt;哈希函数的拥有如下三个重要特性，这些特性可以说是最重要的特性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;哈希函数对数据进行确定性加扰。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无论输入是什么，哈希函数的输出始终具有相同的长度（大小）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无法从加扰数据中检索原始数据（单向函数）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;确定性加扰&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%a1%ae%e5%ae%9a%e6%80%a7%e5%8a%a0%e6%89%b0&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;确定性加扰&lt;/h3&gt;&lt;p&gt;想象一下，如果随机扭动一个魔方，到最后会得到一些和开始时不一样的东西。但是，如果重新开始，并做完全相同的一系列动作，那么将能够反复得到完全相同的结果。尽管结果可能看起来是随机的，但它其实是严格按照一定的规则进行变幻地，这就是&lt;strong&gt;确定性加扰&lt;/strong&gt;的含义。&lt;/p&gt;
&lt;p&gt;确定性对于安全存储密码很重要。例如，假设我的密码是 &lt;code&gt;iLoveBitcoin&lt;/code&gt;，我可以使用哈希函数对其进行加扰：&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;iLoveBitcoin → &amp;ldquo;2f5sfsdfs5s1fsfsdf98ss4f84sfs6d5fs2d1fdf15&amp;rdquo;&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;现在，任何人看到加扰后的版本，他们都不会知道我的原始密码！这一点很重要，因为这意味着作为一个网站开发人员，我只需要存储我用户密码的哈希(加扰数据)就可以验证它们。当用户注册时，我将用户密码进行哈希运算然后将其存储在我的数据库中。当用户登录时，我只是对他们输入的内容再次进行哈希运算，并比较两个哈希值。因为给定的输入总是生成相同的哈希值，所以能够很方便地进行验证。&lt;/p&gt;
&lt;h3 id=&#34;输出定长&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%be%93%e5%87%ba%e5%ae%9a%e9%95%bf&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;输出定长&lt;/h3&gt;&lt;p&gt;如果对&lt;strong&gt;单个单词&lt;/strong&gt;进行哈希处理，则输出将具有一定的大小（对于 &lt;code&gt;SHA-256&lt;/code&gt;，则为特定的哈希函数，大小为 256 位）。即便我对&lt;strong&gt;一本书&lt;/strong&gt;进行哈希处理，输出同样将是相同的大小。&lt;/p&gt;
&lt;p&gt;这是另一个重要的功能，因为它可以节省我们的计算时间。 一个典型的例子是使用哈希作为数据映射中的键。 数据映射是计算机科学中用来存储数据的一种简单结构。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Algorithm/Hash/key-map.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Algorithm/Hash/key-map.webp&#34;  data-sub-html=&#34;&lt;h2&gt;数据映射&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Algorithm/Hash/key-map.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;数据映射&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;当程序在映射中存储数据时，会为映射指定一个键和值。当程序想要访问该值时，它只要提供适当的键就能接收相应的值。数据映射很好，因为它们可以立即找到数据。计算机通过键可以立即找到对应的值，而不是花费数小时在数百万条记录中搜索。&lt;/p&gt;
&lt;p&gt;因为键类似于地址，所以它们不能太大。如果我想将图书存储在数据映射中，我可以对图书的内容进行哈希，并使用该哈希作为键。&lt;/p&gt;
&lt;h2 id=&#34;哈希处理如何进行&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%93%88%e5%b8%8c%e5%a4%84%e7%90%86%e5%a6%82%e4%bd%95%e8%bf%9b%e8%a1%8c&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;哈希处理如何进行？&lt;/h2&gt;&lt;p&gt;接下来，以 &lt;code&gt;LANEHASH&lt;/code&gt; 算法为例，简要讲解哈希处理是如何完成的。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;首先，选取下面的数据进行哈希处理&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;iLoveBitcoin&lt;/p&gt;

&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;将字母转换成二进制&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;iLoveBitcoin→ 100010100000101111&lt;/p&gt;

&lt;/blockquote&gt;&lt;div class=&#34;details admonition warning open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 576 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;注意&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;在这一步中，我们通过各种预定的步骤来转换我们的原始数据。转换方式可以采用各种方式，但重要的是，每当我们使用 LANEHASH 时，都需要使用相同的步骤，以便我们的算法是确定性的。&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;将比特前四位从左移到右边&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;1000&lt;/strong&gt;10100000101111 → 10100000101111&lt;strong&gt;1000&lt;/strong&gt;&lt;/p&gt;

&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;奇偶分离比特&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;1&lt;/strong&gt;0&lt;strong&gt;1&lt;/strong&gt;0&lt;strong&gt;0&lt;/strong&gt;0&lt;strong&gt;0&lt;/strong&gt;0&lt;strong&gt;1&lt;/strong&gt;0&lt;strong&gt;1&lt;/strong&gt;1&lt;strong&gt;1&lt;/strong&gt;1&lt;strong&gt;1&lt;/strong&gt;0&lt;strong&gt;0&lt;/strong&gt;0 → 110011110 &amp;amp; 000001100&lt;/p&gt;

&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;分别转化为十进制数&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;110011110 → 414&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;000001100→ 12&lt;/p&gt;

&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;两数相乘&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;414 *12 = 4968&lt;/p&gt;

&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;乘积平方&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;4968 ^ 2 = 24681024&lt;/p&gt;

&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;再次转换为二进制&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;24681024 →1011110001001101001000000&lt;/p&gt;

&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;剥离右边的 9 个比特以得到 16 位比特&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;1011110001001101&lt;strong&gt;001000000&lt;/strong&gt; → 1011110001001101&lt;/p&gt;

&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;转换回字母/数字&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;1011110001001101 → &amp;ldquo;8sj209dsns02k2&amp;rdquo;&lt;/p&gt;

&lt;/blockquote&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;正如你所看到的，如果在开始时使用相同的单词，则在结束时将始终得到相同的输出。然而，即使你改了一个字母，结果也会发生很大的变化。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%80%bb%e7%bb%93&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;总结&lt;/h2&gt;&lt;p&gt;哈希函数实际上就是按照特定的规则将数据进行一系列转换，最后得到一串键值用来代替/指代原始数据，但是需要注意的是，哈希函数需要满足确定性、定长性、不可逆性。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;https://qvault.io/2020/01/01/very-basic-intro-to-hash-functions-sha-256-md-5-etc/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;(Very) Basic Intro to Hash Functions (SHA-256, MD5, etc)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;https://en.wikipedia.org/wiki/Hash_function#Uses&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Hash Function&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[3] &lt;a href=&#34;https://en.wikipedia.org/wiki/ASCII&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;ASCII&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[4] &lt;a href=&#34;https://en.wikipedia.org/wiki/Unicode&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Unicode&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>文件传输系列：SCP</title>
      <link>https://www.techkoala.net/scp/</link>
      <pubDate>Sat, 18 Jul 2020 10:28:05 +0800</pubDate>
      
      <guid>https://www.techkoala.net/scp/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;SCP 就是 SSH 协议的文件传输功能吗？&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;什么是-scp&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bb%80%e4%b9%88%e6%98%af-scp&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;什么是 SCP&lt;/h2&gt;&lt;p&gt;SCP（Secure Copy Protocol，安全复制协议）允许我们在两台计算机之间复制文件（和目录）。&lt;/p&gt;
&lt;p&gt;使用起来特别方便：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;Shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-1&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ scp local_file remote_host:/home&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;这将把本地文件 &lt;code&gt;localfile&lt;/code&gt; 复制到远程主机的 &lt;code&gt;/home&lt;/code&gt; 文件之下。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SCP&lt;/code&gt; 使用起来特别便利，因为他能工作在几乎所有的 &lt;code&gt;Unix-like&lt;/code&gt; 的系统中，并且 &lt;code&gt;Windows&lt;/code&gt; 下拥有许多客户端。但是仅仅复制文件并不是关键。&lt;code&gt;SCP&lt;/code&gt; 真正的价值是对 &lt;strong&gt;计算机的身份进行验证&lt;/strong&gt; 以及对 &lt;strong&gt;传输文件进行加密&lt;/strong&gt;（也就是 S 代表的含义）。&lt;/p&gt;
&lt;p&gt;使用前需要首先配置到远程主机的 &lt;code&gt;SSH&lt;/code&gt; 连接权限。&lt;code&gt;SCP&lt;/code&gt; 的验证提示和 SSH 看起很像，因为 &lt;code&gt;SCP&lt;/code&gt; 跑在 &lt;code&gt;SSH&lt;/code&gt; 的上层，仅仅把它作为文件数据的管道。事实上，&lt;code&gt;SSH&lt;/code&gt; 负责处理所有安全相关的任务，&lt;code&gt;SCP&lt;/code&gt; 只是将一些文件扔到 &lt;code&gt;SSH&lt;/code&gt; 连接上。&lt;/p&gt;
&lt;p&gt;维基百科上的条目讲述了 &lt;code&gt;SCP&lt;/code&gt; 的历史，简而言之：在旧的 &lt;code&gt;BSD&lt;/code&gt; 系统上曾经有一个叫 &lt;code&gt;RCP&lt;/code&gt; 的工具，可以在电脑之间移动文件。在当时受信任的网络时代，每个人都是别人的朋友。后来人们意识到，也许并不是每个人在他们的网络上都是这么好的朋友。于是有人把 &lt;code&gt;RCP&lt;/code&gt; 的实现复制到 &lt;code&gt;OpenSSH&lt;/code&gt; 的前身上，然后简单地在 &lt;code&gt;SSH&lt;/code&gt; 会话上运行它，以保护文件不被非好友发现。问题解决了！从此以后，它就留在了 &lt;code&gt;OpenSSH&lt;/code&gt; 中。&lt;/p&gt;
&lt;h2 id=&#34;scp-工作原理&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#scp-%e5%b7%a5%e4%bd%9c%e5%8e%9f%e7%90%86&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;SCP 工作原理&lt;/h2&gt;&lt;p&gt;&lt;code&gt;SCP&lt;/code&gt; 并不是一个标准协议，并没有一个 &lt;code&gt;RFC&lt;/code&gt; 或者任何官方描述如何实现它。&lt;code&gt;OpenSSH&lt;/code&gt; 实现是一个事实上的规范。此实现有两个部分：连接建立和之后的传输协议。&lt;/p&gt;
&lt;h3 id=&#34;建立连接&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%bb%ba%e7%ab%8b%e8%bf%9e%e6%8e%a5&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;建立连接&lt;/h3&gt;&lt;p&gt;实际上，这并不是真正的连接。因为它只是利用 &lt;code&gt;SSH&lt;/code&gt; 执行命令后的 &lt;code&gt;STDIN/STDOUT&lt;/code&gt; ，有点类似 &lt;code&gt;Unix&lt;/code&gt; 管道。&lt;code&gt;OpenSSH&lt;/code&gt; 中包含两个程序来完成:&lt;code&gt;sshd&lt;/code&gt; 和 &lt;code&gt;scp&lt;/code&gt;。&lt;code&gt;sshd&lt;/code&gt; 是始终运行的服务器守护进程，接受新的 &lt;code&gt;SSH&lt;/code&gt; 连接。&lt;code&gt;SCP&lt;/code&gt; 是伪装成 &lt;code&gt;SSH&lt;/code&gt; 的客户端程序，发送和接受文件。&lt;/p&gt;
&lt;p&gt;当 &lt;code&gt;SCP&lt;/code&gt; 运行时，他将开启一个新的 &lt;code&gt;SSH&lt;/code&gt; 连接。在该连接上，它会在服务端执行另一个带有特殊标志的 &lt;code&gt;SCP&lt;/code&gt; 程序。你可以认为是 &lt;code&gt;ssh exec scp [flags]&lt;/code&gt;。主要的标志包含 &lt;code&gt;-t&lt;/code&gt;（&amp;ldquo;to&amp;rdquo;）和 &lt;code&gt;-f&lt;/code&gt;（&amp;ldquo;from&amp;rdquo;）用于代表接受和发送，而 &lt;code&gt;-d&lt;/code&gt; 表示文件夹，&lt;code&gt;-r&lt;/code&gt; 表示递归。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Software/SCP/scp-1.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Software/SCP/scp-1.png&#34;  data-sub-html=&#34;&lt;h2&gt;建立连接&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Software/SCP/scp-1.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;建立连接&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;值得注意的是，&lt;code&gt;SCP&lt;/code&gt; 协议是单向的，一端发送文件，另一端接收文件。在远程端 &lt;code&gt;SCP&lt;/code&gt; 开始运行后，实际的 &lt;code&gt;SCP&lt;/code&gt; 协议命令开始通过 &lt;code&gt;STDIN&lt;/code&gt; 和 &lt;code&gt;STDOUT&lt;/code&gt; 运行。&lt;/p&gt;
&lt;h3 id=&#34;传输协议&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bc%a0%e8%be%93%e5%8d%8f%e8%ae%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;传输协议&lt;/h3&gt;&lt;p&gt;现在，安全的 I/O 通道建立起来，并且已经有效地切换到 &lt;code&gt;RCP&lt;/code&gt; 协议上。该协议是 &lt;strong&gt;顺序&lt;/strong&gt;（一次一个操作）和 &lt;strong&gt;同步&lt;/strong&gt;（每个命令执行完后才执行下一个命令）执行的。&lt;/p&gt;
&lt;p&gt;命令格式大致为（不带括号或空格）：&lt;code&gt;[command type][arguments]\n [optional data]&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[command type] 通常是一个 ASCII 字符：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;lsquo;C&amp;rsquo;- 写入文件&lt;/li&gt;
&lt;li&gt;&amp;lsquo;D&amp;rsquo;- 输入目录&lt;/li&gt;
&lt;li&gt;&amp;lsquo;E&amp;rsquo;- 退出最后一个目录&lt;/li&gt;
&lt;li&gt;&amp;lsquo;T&amp;rsquo;- 设置下一个文件或目录的创建 / 更新时间戳&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[arguments] 是特定于命令的，如文件 / 目录名称、文件大小或时间戳。&amp;ldquo;E&amp;rdquo; 命令没有参数。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[optional data] 在上一个命令为 &amp;ldquo;C&amp;rdquo;（创建文件）时发送。数据的大小指定为 &amp;ldquo;C&amp;rdquo; 的参数。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;此外，还有控制字节，这些字节是在没有新行的情况下自己发送的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&amp;lsquo;0x00&amp;rsquo;-&amp;ldquo;OK&amp;rdquo;，确认完成最后一个命令（如编写本地文件）。接收方也会在启动时发送此消息，让发送方知道它已准备好接收命令。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;lsquo;0x00&amp;rsquo;-&amp;ldquo;警告&amp;rdquo;，后面是要向用户显示的行（由新行终止）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;lsquo;0x00&amp;rsquo;-&amp;ldquo;错误&amp;rdquo; 后跟随可选消息（和警告相同），但连接随后终止。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下面这个带有注释的图片实例，详细讲述了这个过程：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Software/SCP/scp-2.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Software/SCP/scp-2.png&#34;  data-sub-html=&#34;&lt;h2&gt;传输过程&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Software/SCP/scp-2.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;传输过程&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;使用-scp&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bd%bf%e7%94%a8-scp&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;使用 SCP&lt;/h2&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-2&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ scp 选项 参数&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;其中选项如下：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-3&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-1：使用ssh协议版本1；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-2：使用ssh协议版本2；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-4：使用ipv4；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-6：使用ipv6；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-B：以批处理模式运行；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-C：使用压缩；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-F：指定ssh配置文件；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-l：指定宽带限制；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-o：指定使用的ssh选项；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-P：指定远程主机的端口号；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-p：保留文件的最后修改时间，最后访问时间和权限模式；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-q：不显示复制进度；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-r：以递归方式复制。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;参数分别为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;源文件：指定要复制的源文件。&lt;/li&gt;
&lt;li&gt;目标文件：格式为 user@host：filename（文件名为目标文件的名称）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;scp-的问题&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#scp-%e7%9a%84%e9%97%ae%e9%a2%98&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;SCP 的问题&lt;/h2&gt;&lt;p&gt;看起来，&lt;code&gt;SCP&lt;/code&gt; 听起来似乎没什么问题。它是一个简单易用的工具，然而存在一些现实问题。&lt;/p&gt;
&lt;h3 id=&#34;性能&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%80%a7%e8%83%bd&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;性能&lt;/h3&gt;&lt;p&gt;传输协议的顺序性：每个命令的强制确认都会增加大量开销。例如，如果沿途丢弃单个确认数据包，则整个连接将暂停，直到重新传输开始。最重要的是，发送所有数据而不压缩或询问接收方是否已经拥有该文件并不理想。&lt;/p&gt;
&lt;p&gt;有经验的系统管理员可以告诉您，使用 &lt;code&gt;tar&lt;/code&gt; 归档文件并发送比使用 &lt;code&gt;scp&lt;/code&gt; 递归命令传输要快得多。事实上，这样的话你甚至无需使用 SCP：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;Shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-4&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Copy a local folder with 10000 files&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ find /tmp/big_folder/-type f &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; wc -l
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;10000&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&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;# Using scp&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;time&lt;/span&gt; scp -r -q /tmp/big_folder/server:/tmp/big_folder
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;________________________________________________________
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Executed in  882.99 millis	fish       	external
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   usr &lt;span class=&#34;nb&#34;&gt;time&lt;/span&gt;  114.09 millis	0.00 micros  114.09 millis
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   sys &lt;span class=&#34;nb&#34;&gt;time&lt;/span&gt;  278.46 millis  949.00 micros  277.51 millis
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Using tar over ssh&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;time&lt;/span&gt; sh -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;tar cf - /tmp/big_folder | ssh server &amp;#39;tar xC /tmp/-f -&amp;#39;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tar: Removing leading &lt;span class=&#34;s1&#34;&gt;&amp;#39;/&amp;#39;&lt;/span&gt; from member names
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;________________________________________________________
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Executed in  215.68 millis	fish       	external
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   usr &lt;span class=&#34;nb&#34;&gt;time&lt;/span&gt;   93.22 millis	0.00 micros   93.22 millis
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   sys &lt;span class=&#34;nb&#34;&gt;time&lt;/span&gt;   66.51 millis  897.00 micros   65.62 millis&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;在这种比较糟糕的情况下，&lt;code&gt;tar&amp;amp;ssh&lt;/code&gt; 的 215.68ms 对比 &lt;code&gt;SCP&lt;/code&gt; 的 882.99ms，足足有四倍的速度提升。&lt;/p&gt;
&lt;h3 id=&#34;安全&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%ae%89%e5%85%a8&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;安全&lt;/h3&gt;&lt;p&gt;我们已经知道，&lt;code&gt;SCP&lt;/code&gt; 靠 &lt;code&gt;SSH&lt;/code&gt; 负担安全工作，因此它完全安全&amp;hellip; 吗？&lt;/p&gt;
&lt;p&gt;&lt;code&gt;OpenSSH&lt;/code&gt; 的发行说明提到：&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;scp 协议已经过时、不灵活且不容易修复。我们建议使用更现代的协议，如 sftp 和 rsync 来传输文件。&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;如果远程端的 &lt;code&gt;shell&lt;/code&gt; 打印出任何非交互式会话，则本地 &lt;code&gt;SCP&lt;/code&gt; 进程将愉快地将该输出解释为 &lt;code&gt;SCP&lt;/code&gt; 命令。好的话，这仅仅是打破 &lt;code&gt;SCP&lt;/code&gt; 协议中模糊的错误。但在最坏的情况下，远程 &lt;code&gt;shell&lt;/code&gt; 启动脚本是恶意的，并向你发送恶意文件，而不是所需的文件。&lt;/p&gt;
&lt;p&gt;此外，早在 2018 年，Harry Sintonen 就发现了流行的 &lt;code&gt;SCP&lt;/code&gt; 实现（包括 &lt;code&gt;OpenSSH&lt;/code&gt;）中的一堆漏洞。包括从修改目录的权限到覆盖任意文件（由于 &lt;code&gt;～/.ssh/authorized_keys&lt;/code&gt; 或 &lt;code&gt;～/.bashrc&lt;/code&gt;）、有效地执行代码，以及注入终端转义序列来隐藏任何追踪。这些漏洞对于任何构建网络 &lt;code&gt;CLI&lt;/code&gt; 应用程序的人来说都是一个很好的教训。&lt;/p&gt;
&lt;h2 id=&#34;scp-的替代方案&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#scp-%e7%9a%84%e6%9b%bf%e4%bb%a3%e6%96%b9%e6%a1%88&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;SCP 的替代方案&lt;/h2&gt;&lt;p&gt;&lt;code&gt;SFTP&lt;/code&gt; 被广泛认为是 &lt;code&gt;SCP&lt;/code&gt; 的继承者。为了传输层安全性，它仍然在 &lt;code&gt;SSH&lt;/code&gt; 上运行，并且不需要单独设置访问。它可以为您提供一个自定义交互式提示来探索远程文件系统，或者您可以使用预先编写的一系列命令编写脚本。
缺点是，您需要学习 &lt;code&gt;SFTP&lt;/code&gt; 提示命令，协议本身尚未完全标准化（有很多 &lt;code&gt;RFC&lt;/code&gt; 草稿，但作者最终放弃了）。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Rsync&lt;/code&gt; 是另一个很好的选择。使用与 &lt;code&gt;SCP&lt;/code&gt; 命令完全相同 - 它也利用 &lt;code&gt;SSH&lt;/code&gt;。&lt;code&gt;Rsync&lt;/code&gt; 着重优化性能 - 它执行大量的复杂本地计算从而通过网络发送尽可能少的数据。从技术上讲，它致力于数据同步而不是纯传输文件 - 如果远程和本地内容相似，则只会发送增量。&lt;/p&gt;
&lt;p&gt;同样，它也有其自身的缺点：发送方使用大量的 CPU 资源来计算要发送什么，并且接收方使用大量磁盘 IO 将数据按正确的顺序放在一起。与 &lt;code&gt;OpenSSH&lt;/code&gt; 不同，&lt;code&gt;Rsync&lt;/code&gt; 在大多数系统上并不预安装。&lt;/p&gt;
&lt;h2 id=&#34;结论&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%bb%93%e8%ae%ba&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;结论&lt;/h2&gt;&lt;p&gt;&lt;code&gt;SCP&lt;/code&gt; 是一个简单的工具，它在复制文件方面做得很好，但较新的软件在很多方面都优于它。对于您信任的计算机之间的个人简单使用，&lt;code&gt;SCP&lt;/code&gt; 仍然适合。&lt;/p&gt;
&lt;p&gt;但是，如果您遇到性能问题或需要满足更高的安全标准，则上面列出的任何备选方案都比 &lt;code&gt;SCP&lt;/code&gt; 更可取。选择最适合您需求的，然后试着开始使用。&lt;/p&gt;
&lt;h2 id=&#34;另见&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%a6%e8%a7%81&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;另见&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.techkoala.net/rsync/&#34; rel=&#34;&#34;&gt;rsync&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.techkoala.net/sftp/&#34; rel=&#34;&#34;&gt;SFTP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;https://gravitational.com/blog/scp-familiar-simple-insecure-slow/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;SCP - Familiar, Simple, Insecure, and Slow&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;https://en.wikipedia.org/wiki/Secure_copy&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Wikipedia Secure copy&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[3] &lt;a href=&#34;https://lists.mindrot.org/pipermail/openssh-unix-dev/2019-March/037672.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Call for testing: OpenSSH 8.0&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[4] &lt;a href=&#34;https://ningyu1.github.io/linux-command/c/scp.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Scp&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>NAT 系列：问题及解决方法</title>
      <link>https://www.techkoala.net/nat_issues_solutions/</link>
      <pubDate>Wed, 15 Jul 2020 14:19:14 +0800</pubDate>
      
      <guid>https://www.techkoala.net/nat_issues_solutions/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;NAT 引发的问题以及解决方法&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;nat-的常见问题&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#nat-%e7%9a%84%e5%b8%b8%e8%a7%81%e9%97%ae%e9%a2%98&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;NAT 的常见问题&lt;/h2&gt;&lt;p&gt;对称型 NAT（Symmetric NAT）在游戏联机（尤其是 P2P 联机）时经常会造成问题。当你在 Xbox、PS、Switch 或 PC 上看到 NAT 类型显示为&amp;quot;严格&amp;quot;、&amp;ldquo;类型 3&amp;rdquo;、&amp;ldquo;类型 D&amp;quot;或&amp;quot;对称&amp;quot;时，很可能会遇到联机困难。&lt;/p&gt;
&lt;h3 id=&#34;问题原因&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%97%ae%e9%a2%98%e5%8e%9f%e5%9b%a0&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;问题原因&lt;/h3&gt;&lt;p&gt;首先需要理解的是，设备本身无法感知它们是否经过 NAT 转换。在互联网上，所有通信都需要使用公共 IP 地址（如 &lt;code&gt;1.1.1.1&lt;/code&gt;）。在进行连接时，必须知道目标的公共 IP 地址和端口。&lt;/p&gt;
&lt;p&gt;在常规网络通信中（如访问网站），服务器的 IP 地址和端口是固定的，不会改变。但在游戏等应用中，程序可能会使用动态端口。例如：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;你的主机选择一个随机端口用于游戏连接&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;其他玩家需要知道你的 IP 地址和端口才能连接&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你的主机会将这些信息发送到游戏服务器（如 Xbox Live 或 PS Network）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;问题在于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;发送的是内部 IP（如 &lt;code&gt;192.168.0.1&lt;/code&gt;）和端口（如 &lt;code&gt;54324&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;而不是 NAT 转换后的公共 IP（如 &lt;code&gt;1.1.1.1&lt;/code&gt;）和端口&lt;/li&gt;
&lt;li&gt;在对称型 NAT 中，端口会被随机改变（如从 &lt;code&gt;54324&lt;/code&gt; 变为 &lt;code&gt;54254&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;这不仅是游戏的问题，而是 NAT 的普遍问题。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;关键问题是：设备如何知道自己位于 NAT 后面，以及如何告知其他设备使用正确的 NAT 转换后的地址和端口？&lt;/p&gt;
&lt;h2 id=&#34;解决方案&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;解决方案&lt;/h2&gt;&lt;h3 id=&#34;stunsession-traversal-utilities-for-nat&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#stunsession-traversal-utilities-for-nat&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;STUN（Session Traversal Utilities for NAT）&lt;/h3&gt;&lt;p&gt;STUN 是一套帮助设备穿越 NAT 的工具集。它的主要功能是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;让内部设备了解其公共 NAT 的 IP 地址和端口&lt;/li&gt;
&lt;li&gt;使设备能够发送正确的连接信息给其他设备&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;工作原理：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;设备连接到 STUN 服务器（如 Xbox Live 服务器）&lt;/li&gt;
&lt;li&gt;服务器读取收到的数据包中的源 IP 和端口（这是 NAT 转换后的信息）&lt;/li&gt;
&lt;li&gt;服务器将这些信息返回给客户端&lt;/li&gt;
&lt;li&gt;设备现在知道了自己的公网地址和端口&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/NAT/STUN_Algorithm.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/NAT/STUN_Algorithm.png&#34;  data-sub-html=&#34;&lt;h2&gt;STUN 工作流程&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/NAT/STUN_Algorithm.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;STUN 工作流程&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;STUN 的局限性：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;在对称型 NAT 中无法正常工作&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;原因：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对称型 NAT 为每个连接创建不同的映射&lt;/li&gt;
&lt;li&gt;STUN 服务器获得的端口信息只对该连接有效&lt;/li&gt;
&lt;li&gt;其他连接会使用不同的随机端口&lt;/li&gt;
&lt;li&gt;无法预知这些随机端口&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;dmzdemilitarized-zone&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#dmzdemilitarized-zone&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;DMZ（Demilitarized Zone）&lt;/h3&gt;&lt;p&gt;DMZ 是一种网络配置方案，用于减少对互联网访问的限制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;将设备放置在网络防火墙外的区域&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;创建特定的子网用于提供对外服务&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DMZ 中的主机可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;与 DMZ 内的其他主机通信&lt;/li&gt;
&lt;li&gt;与外部网络通信&lt;/li&gt;
&lt;li&gt;与内部网络的通信受到限制&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种配置的优点是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以被内部和外部网络访问&lt;/li&gt;
&lt;li&gt;保护内部网络的安全&lt;/li&gt;
&lt;li&gt;适合需要对外提供服务的设备&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;upnpuniversal-plug-and-play&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#upnpuniversal-plug-and-play&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;UPnP（Universal Plug and Play）&lt;/h3&gt;&lt;p&gt;UPnP 是一种网络协议，允许网络设备自动发现彼此并建立功能性网络服务。在 NAT 穿透方面，UPnP 提供了以下功能：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;自动端口映射&lt;/strong&gt;：应用程序可以自动请求路由器开放所需端口&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;动态配置&lt;/strong&gt;：无需手动设置端口转发规则&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;即插即用&lt;/strong&gt;：设备可以自动发现并配置网络服务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;工作流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;应用程序向路由器发送端口映射请求&lt;/li&gt;
&lt;li&gt;路由器验证请求并创建相应的映射规则&lt;/li&gt;
&lt;li&gt;应用程序获得确认，开始使用映射的端口&lt;/li&gt;
&lt;li&gt;当应用程序关闭时，映射规则自动删除&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;适用场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在线游戏&lt;/li&gt;
&lt;li&gt;P2P 应用&lt;/li&gt;
&lt;li&gt;远程访问服务&lt;/li&gt;
&lt;li&gt;即时通讯软件&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;解决方案对比&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88%e5%af%b9%e6%af%94&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;解决方案对比&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;特性&lt;/th&gt;
          &lt;th&gt;STUN&lt;/th&gt;
          &lt;th&gt;DMZ&lt;/th&gt;
          &lt;th&gt;UPnP&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;配置难度&lt;/td&gt;
          &lt;td&gt;中等&lt;/td&gt;
          &lt;td&gt;简单&lt;/td&gt;
          &lt;td&gt;最简单&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;安全性&lt;/td&gt;
          &lt;td&gt;高&lt;/td&gt;
          &lt;td&gt;低&lt;/td&gt;
          &lt;td&gt;中等&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;适用 NAT 类型&lt;/td&gt;
          &lt;td&gt;除对称型外都支持&lt;/td&gt;
          &lt;td&gt;全部支持&lt;/td&gt;
          &lt;td&gt;全部支持&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;自动化程度&lt;/td&gt;
          &lt;td&gt;中等&lt;/td&gt;
          &lt;td&gt;低&lt;/td&gt;
          &lt;td&gt;高&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;资源消耗&lt;/td&gt;
          &lt;td&gt;低&lt;/td&gt;
          &lt;td&gt;低&lt;/td&gt;
          &lt;td&gt;中等&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;安全注意事项&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%ae%89%e5%85%a8%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a1%b9&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;安全注意事项&lt;/h2&gt;&lt;h3 id=&#34;stun-安全考虑&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#stun-%e5%ae%89%e5%85%a8%e8%80%83%e8%99%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;STUN 安全考虑&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;确保使用可信的 STUN 服务器&lt;/li&gt;
&lt;li&gt;考虑启用 STUN over TLS&lt;/li&gt;
&lt;li&gt;定期更新 STUN 客户端软件&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;dmz-安全考虑&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#dmz-%e5%ae%89%e5%85%a8%e8%80%83%e8%99%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;DMZ 安全考虑&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;DMZ 主机完全暴露于互联网，风险较高&lt;/li&gt;
&lt;li&gt;建议：
&lt;ul&gt;
&lt;li&gt;只放置必要的服务器&lt;/li&gt;
&lt;li&gt;启用主机防火墙&lt;/li&gt;
&lt;li&gt;定期更新系统和应用程序&lt;/li&gt;
&lt;li&gt;监控异常访问&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;upnp-安全考虑&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#upnp-%e5%ae%89%e5%85%a8%e8%80%83%e8%99%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;UPnP 安全考虑&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;存在被恶意程序滥用的风险&lt;/li&gt;
&lt;li&gt;建议：
&lt;ul&gt;
&lt;li&gt;只在可信网络中启用&lt;/li&gt;
&lt;li&gt;定期检查端口映射列表&lt;/li&gt;
&lt;li&gt;使用支持 UPnP 安全模式的路由器&lt;/li&gt;
&lt;li&gt;考虑禁用互联网侧 UPnP&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最佳实践建议&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9c%80%e4%bd%b3%e5%ae%9e%e8%b7%b5%e5%bb%ba%e8%ae%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;最佳实践建议&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;家庭用户&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;优先使用 UPnP（便捷性好）&lt;/li&gt;
&lt;li&gt;确保路由器固件为最新版本&lt;/li&gt;
&lt;li&gt;避免使用 DMZ 除非特别需要&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;小型企业&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;优先考虑 STUN&lt;/li&gt;
&lt;li&gt;根据需要配置端口转发&lt;/li&gt;
&lt;li&gt;谨慎使用 UPnP&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;游戏玩家&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;尝试顺序：UPnP &amp;gt; STUN &amp;gt; 端口转发 &amp;gt; DMZ&lt;/li&gt;
&lt;li&gt;选择支持 UPnP 的路由器&lt;/li&gt;
&lt;li&gt;必要时使用游戏专用路由器&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;www.think-like-a-computer.com/2011/09/19/symmetric-nat/&#34; rel=&#34;&#34;&gt;Symmetric NAT and It’s Problems | Think Like A Computer&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;https://zh.wikipedia.org/wiki/STUN&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Wikipedia STUN&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[3] &lt;a href=&#34;https://zh.wikipedia.org/wiki/DMZ&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Wikipedia DMZ&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[4] &lt;a href=&#34;https://support.xbox.com/help/Hardware-Network/connect-network/xbox-one-nat-error&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;解决 NAT 错误和多人游戏问题&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>NAT 系列：认识 NAT</title>
      <link>https://www.techkoala.net/nat/</link>
      <pubDate>Tue, 14 Jul 2020 23:25:54 +0800</pubDate>
      
      <guid>https://www.techkoala.net/nat/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;一文概览 NAT&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;nat-简介&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#nat-%e7%ae%80%e4%bb%8b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;NAT 简介&lt;/h2&gt;&lt;p&gt;NAT（Network Address Translation，网络地址转换）是一种在 IP 数据包通过路由器或防火墙时重写源 IP 地址或目的 IP 地址的网络技术。这种技术被广泛应用于拥有多台主机但只使用一个公有 IP 地址访问互联网的私有网络中。&lt;/p&gt;
&lt;p&gt;NAT 可以分为两大类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;静态 NAT&lt;/strong&gt;：由管理员手动创建和维护映射，通常用于需要固定公网IP的服务器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;动态 NAT&lt;/strong&gt;：由路由器根据需要自动创建和维护映射，通常用于普通客户端的出站连接&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每个 TCP/IP 数据包都包含四个关键信息：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;源 IP 地址（Source IP）&lt;/li&gt;
&lt;li&gt;源端口（Source Port）&lt;/li&gt;
&lt;li&gt;目的 IP 地址（Destination IP）&lt;/li&gt;
&lt;li&gt;目的端口（Destination Port）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;NAT 设备会基于这些信息创建和维护映射表。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;：假设内部主机（IP: &lt;code&gt;192.168.0.1&lt;/code&gt;）通过端口 &lt;code&gt;56876&lt;/code&gt; 访问外网服务器时：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;原始数据包：
&lt;ul&gt;
&lt;li&gt;源：&lt;code&gt;192.168.0.1:56876&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;目标：&lt;code&gt;2.2.2.2:80&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;NAT 转换后：
&lt;ul&gt;
&lt;li&gt;源：&lt;code&gt;3.3.3.3:56876&lt;/code&gt;（公网IP）&lt;/li&gt;
&lt;li&gt;目标：&lt;code&gt;2.2.2.2:80&lt;/code&gt;（保持不变）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当服务器响应时，NAT 设备会根据映射表将数据包转发给正确的内部主机。&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;nat-的四种类型&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#nat-%e7%9a%84%e5%9b%9b%e7%a7%8d%e7%b1%bb%e5%9e%8b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;NAT 的四种类型&lt;/h2&gt;&lt;h3 id=&#34;全锥型-natfull-cone-nat&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%85%a8%e9%94%a5%e5%9e%8b-natfull-cone-nat&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;全锥型 NAT（Full Cone NAT）&lt;/h3&gt;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/NAT/Full_Cone_NAT.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/NAT/Full_Cone_NAT.png&#34;  data-sub-html=&#34;&lt;h2&gt;全锥型 NAT 示意图&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/NAT/Full_Cone_NAT.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;全锥型 NAT 示意图&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;全锥型 NAT 是最简单且限制最少的 NAT 类型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;特点&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;一旦建立映射，允许任何外部主机访问内部服务&lt;/li&gt;
&lt;li&gt;映射规则固定且持久&lt;/li&gt;
&lt;li&gt;外部主机无需事先与内部主机通信&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;：内部 Web 服务器配置&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;内部服务器：&lt;code&gt;192.168.0.1:80&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;NAT 映射：
&lt;ul&gt;
&lt;li&gt;外部：&lt;code&gt;1.1.1.1:80&lt;/code&gt;（公网IP和端口）&lt;/li&gt;
&lt;li&gt;内部：&lt;code&gt;192.168.0.1:80&lt;/code&gt;（私网IP和端口）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;任何访问 &lt;code&gt;1.1.1.1:80&lt;/code&gt; 的请求都会被转发到内部服务器&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;&lt;h3 id=&#34;受限锥型-natrestricted-cone-nat&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%97%e9%99%90%e9%94%a5%e5%9e%8b-natrestricted-cone-nat&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;受限锥型 NAT（Restricted Cone NAT）&lt;/h3&gt;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/NAT/Restricted_Cone_NAT.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/NAT/Restricted_Cone_NAT.png&#34;  data-sub-html=&#34;&lt;h2&gt;受限锥型 NAT 示意图&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/NAT/Restricted_Cone_NAT.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;受限锥型 NAT 示意图&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;受限锥型 NAT 增加了来源 IP 限制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;特点&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;只接受已知外部主机的数据包&lt;/li&gt;
&lt;li&gt;外部主机可以使用任意端口&lt;/li&gt;
&lt;li&gt;需要内部主机先发起连接建立映射&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;：游戏服务器连接&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;内部客户端：&lt;code&gt;192.168.0.1:56723&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;游戏服务器：&lt;code&gt;56.45.34.78&lt;/code&gt;（任意端口）&lt;/li&gt;
&lt;li&gt;映射规则：
&lt;ul&gt;
&lt;li&gt;只允许来自 &lt;code&gt;56.45.34.78&lt;/code&gt; 的数据包&lt;/li&gt;
&lt;li&gt;服务器可以使用任意端口回复&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;&lt;h3 id=&#34;端口受限锥型-natport-restricted-cone-nat&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%ab%af%e5%8f%a3%e5%8f%97%e9%99%90%e9%94%a5%e5%9e%8b-natport-restricted-cone-nat&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;端口受限锥型 NAT（Port Restricted Cone NAT）&lt;/h3&gt;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/NAT/Port_Restricted_Cone_NAT.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/NAT/Port_Restricted_Cone_NAT.png&#34;  data-sub-html=&#34;&lt;h2&gt;端口受限锥型 NAT 示意图&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/NAT/Port_Restricted_Cone_NAT.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;端口受限锥型 NAT 示意图&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;端口受限锥型 NAT 进一步增加了端口限制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;特点&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;只接受已知外部主机和端口的数据包&lt;/li&gt;
&lt;li&gt;需要完全匹配源IP和源端口&lt;/li&gt;
&lt;li&gt;提供更好的安全性&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;：P2P 应用场景&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;内部客户端：&lt;code&gt;192.168.0.1:56723&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;外部节点：&lt;code&gt;56.45.34.78:33456&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;映射规则：
&lt;ul&gt;
&lt;li&gt;只允许来自 &lt;code&gt;56.45.34.78:33456&lt;/code&gt; 的数据包&lt;/li&gt;
&lt;li&gt;其他端口的数据包将被丢弃&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;&lt;h3 id=&#34;对称型-natsymmetric-nat&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%af%b9%e7%a7%b0%e5%9e%8b-natsymmetric-nat&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;对称型 NAT（Symmetric NAT）&lt;/h3&gt;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/NAT/Symmetric_NAT.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/NAT/Symmetric_NAT.png&#34;  data-sub-html=&#34;&lt;h2&gt;对称型 NAT 示意图&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/NAT/Symmetric_NAT.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;对称型 NAT 示意图&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;对称型 NAT 是最严格的 NAT 类型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;特点&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;为每个连接创建唯一的映射&lt;/li&gt;
&lt;li&gt;随机化源端口&lt;/li&gt;
&lt;li&gt;提供最高级别的安全性&lt;/li&gt;
&lt;li&gt;可能导致 P2P 应用问题&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;：多目标连接&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;内部客户端访问不同服务器时：
&lt;ul&gt;
&lt;li&gt;连接A：&lt;code&gt;192.168.0.1:56723&lt;/code&gt; → &lt;code&gt;1.1.1.1:80&lt;/code&gt; 映射为 &lt;code&gt;3.3.3.3:62000&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;连接B：&lt;code&gt;192.168.0.1:56723&lt;/code&gt; → &lt;code&gt;2.2.2.2:80&lt;/code&gt; 映射为 &lt;code&gt;3.3.3.3:62001&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;nat-的优势&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#nat-%e7%9a%84%e4%bc%98%e5%8a%bf&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;NAT 的优势&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;地址节约&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有效缓解 IPv4 地址短缺&lt;/li&gt;
&lt;li&gt;允许多个设备共享一个公网 IP&lt;/li&gt;
&lt;li&gt;降低 ISP 的地址分配成本&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;安全性提升&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;提供天然的防火墙功能&lt;/li&gt;
&lt;li&gt;阻止未经请求的入站连接&lt;/li&gt;
&lt;li&gt;保护内部网络免受直接攻击&lt;/li&gt;
&lt;li&gt;有助于防御网络蠕虫和恶意扫描&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;nat-的局限性&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#nat-%e7%9a%84%e5%b1%80%e9%99%90%e6%80%a7&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;NAT 的局限性&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;连接限制&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;无法支持真正的端到端通信&lt;/li&gt;
&lt;li&gt;部分网络协议可能无法正常工作&lt;/li&gt;
&lt;li&gt;需要特殊配置才能支持入站连接&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;架构影响&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;违背了 Internet 端到端通信的设计理念&lt;/li&gt;
&lt;li&gt;部分 ISP 仅提供私有 IP，影响服务质量&lt;/li&gt;
&lt;li&gt;可能导致连接建立延迟增加&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;可靠性问题&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NAT 设备故障会影响所有连接&lt;/li&gt;
&lt;li&gt;需要维护状态表，增加了复杂性&lt;/li&gt;
&lt;li&gt;可能影响网络性能和延迟&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;参考资料&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考资料&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] RFC 2663: IP Network Address Translator (NAT) Terminology and Considerations&lt;/li&gt;
&lt;li&gt;[2] RFC 3022: Traditional IP Network Address Translator (Traditional NAT)&lt;/li&gt;
&lt;li&gt;[3] &lt;a href=&#34;https://tools.ietf.org/html/rfc2993&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;IETF: Architectural Implications of NAT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[4] &lt;a href=&#34;https://en.wikipedia.org/wiki/Network_address_translation&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Wikipedia: Network Address Translation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>深入浅出 DNS 解析</title>
      <link>https://www.techkoala.net/dns_update/</link>
      <pubDate>Thu, 02 Jul 2020 15:48:24 +0800</pubDate>
      
      <guid>https://www.techkoala.net/dns_update/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;DNS 如何工作？更新网站的 DNS 记录的时候发生了什么？更新后必须等待 48 小时才能生效吗？为什么有人看到的是新 IP，有人看到的是旧 IP？&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;dns-分类&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#dns-%e5%88%86%e7%b1%bb&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;DNS 分类&lt;/h2&gt;&lt;p&gt;我们知道，DNS 服务器有两种：权威服务器（authoritative）和递归服务器（recursive）&lt;/p&gt;
&lt;p&gt;&lt;code&gt;权威 DNS 服务器（也称为名称服务器，NS，nameserver）&lt;/code&gt;具有其所负责的每个域的 &lt;code&gt;IP&lt;/code&gt; 地址数据库。&lt;/p&gt;
&lt;p&gt;例如，&lt;code&gt;github.com&lt;/code&gt; 的权威 &lt;code&gt;DNS&lt;/code&gt; 服务器是 &lt;code&gt;NS-421.awsdNS-52.com&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;递归 DNS 服务器&lt;/code&gt;，本身并不知道谁拥有什么 &lt;code&gt;IP&lt;/code&gt; 地址。它们通过询问正确的权威 &lt;code&gt;DNS&lt;/code&gt; 服务器，找出域名的 &lt;code&gt;IP&lt;/code&gt; 地址，然后缓存这个 &lt;code&gt;IP&lt;/code&gt; 地址，以备再次询问。&lt;code&gt;8.8.8.8&lt;/code&gt; 是一个递归 &lt;code&gt;DNS&lt;/code&gt; 服务器。&lt;/p&gt;
&lt;p&gt;当人们访问你的网站时，他们可能会向递归 &lt;code&gt;DNS&lt;/code&gt; 服务器进行 &lt;code&gt;DNS&lt;/code&gt; 查询。那么，递归 &lt;code&gt;DNS&lt;/code&gt; 服务器是如何工作的呢？&lt;/p&gt;
&lt;h3 id=&#34;递归-dns-服务器如何工作&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%80%92%e5%bd%92-dns-%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%a6%82%e4%bd%95%e5%b7%a5%e4%bd%9c&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;递归 DNS 服务器如何工作&lt;/h3&gt;&lt;p&gt;以 &lt;code&gt;8.8.8.8&lt;/code&gt; 为例，如果我们向其请求 &lt;code&gt;github.com&lt;/code&gt; 的 &lt;code&gt;IP&lt;/code&gt; 地址（A 记录），如果它存在缓存，那么就直接返回缓存结果。然而，缓存是有期限的，如果所有缓存都过期了呢？那么情况是这样的：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;递归服务器内部硬编码（hardcoded）有根 &lt;code&gt;DNS&lt;/code&gt; 服务器 &lt;code&gt;.&lt;/code&gt; 的 &lt;code&gt;IP&lt;/code&gt; 地址（参见 [2][3]），选择一个根 &lt;code&gt;DNS&lt;/code&gt; 服务器，例如 &lt;code&gt;198.41.0.4&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;询问根 &lt;code&gt;DNS&lt;/code&gt; 服务器有关 &lt;code&gt;com.&lt;/code&gt; 的 &lt;code&gt;NS&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;此步可以使用如下方法模拟：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-1&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ dig @198.41.0.4 github.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;com.			172800	IN	NS	a.gtld-servers.net.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;a.gtld-servers.net.	172800	IN	A	192.5.6.30
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;可以看到，这里我们得到一个 &lt;code&gt;com.&lt;/code&gt; 的权威 NS&lt;code&gt;a.gtld-servers.net.&lt;/code&gt; 及其 IP 地址 &lt;code&gt;192.5.6.30&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;details admonition warning open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 576 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;注意&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;实际上，99.99% 的情况下，此步我们就将得到 &lt;code&gt;github.com&lt;/code&gt; 的 A 记录，但为了展示完整 &lt;code&gt;DNS&lt;/code&gt; 解析进程，假设这里我们没有得到。&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;询问该权威 &lt;code&gt;NS&lt;/code&gt; 有关 &lt;code&gt;github.com&lt;/code&gt; 的 &lt;code&gt;NS&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-2&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ dig @192.5.6.30 github.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;github.com.		172800	IN	NS	NS-421.awsdNS-52.com.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;NS-421.awsdNS-52.com.	172800	IN	A	205.251.193.165
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;这里，我们得到的 &lt;code&gt;github.com.&lt;/code&gt;NS&lt;code&gt;NS-421.awsdNS-52.com.&lt;/code&gt; 及其 &lt;code&gt;IP&lt;/code&gt; 地址 &lt;code&gt;205.251.193.165&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;询问该 &lt;code&gt;NS&lt;/code&gt; 有关 &lt;code&gt;github.com&lt;/code&gt; 的 A 记录&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-3&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ dig @205.251.193.165 github.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;github.com.		60	IN	A	140.82.112.4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;至此，在假设没有缓存的情况下，我们通过完整的流程（实际上绝大多数情况不需要完整进行）获得了 &lt;code&gt;github.com&lt;/code&gt; 的 &lt;code&gt;IP&lt;/code&gt; 地址。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;此外，使用 &lt;code&gt;$ dig @8.8.8.8 +trace github.com&lt;/code&gt; 可以一次性显示上述所有步骤。&lt;/p&gt;
&lt;h2 id=&#34;更新-dns-记录&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9b%b4%e6%96%b0-dns-%e8%ae%b0%e5%bd%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;更新 DNS 记录&lt;/h2&gt;&lt;p&gt;更新 &lt;code&gt;DNS&lt;/code&gt; 记录时，有两种情况：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;保持相同的 NS&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;变更 NS&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;首先谈谈生存时间ttlstime-to-live&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%a6%96%e5%85%88%e8%b0%88%e8%b0%88%e7%94%9f%e5%ad%98%e6%97%b6%e9%97%b4ttlstime-to-live&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;首先谈谈生存时间（TTLs，time to live）&lt;/h3&gt;&lt;p&gt;上面已经说到，&lt;code&gt;DNS&lt;/code&gt; 服务器一般存有缓存，而控制缓存是否过期的参数就是 &lt;code&gt;TTL&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;我们假设得到一个查询结果：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-4&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ dig @205.251.193.165 github.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;github.com.		60	IN	A	140.82.112.4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;这里的 60（秒）即表示 &lt;code&gt;TTL&lt;/code&gt;，这是一个很短的 &lt;code&gt;TTL&lt;/code&gt;。理论上，如果每个用户都遵循 &lt;code&gt;DNS&lt;/code&gt; 标准，那么 &lt;code&gt;github.com&lt;/code&gt; 在更改了 &lt;code&gt;IP&lt;/code&gt; 地址后，每个用户都应该在 60 秒内得到这个新的地址。但实际上呢？&lt;/p&gt;
&lt;h3 id=&#34;更新同一-ns-上的-dns-记录&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9b%b4%e6%96%b0%e5%90%8c%e4%b8%80-ns-%e4%b8%8a%e7%9a%84-dns-%e8%ae%b0%e5%bd%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;更新同一 NS 上的 DNS 记录&lt;/h3&gt;&lt;p&gt;假设我们已经在域名商处更新了新的 &lt;code&gt;DNS&lt;/code&gt; 记录 &lt;code&gt;test.jvNS.ca&lt;/code&gt;&amp;ndash;&amp;gt;&lt;code&gt;1.2.3.4&lt;/code&gt;，试着查询：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-5&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ dig @8.8.8.8 test.jvNS.ca
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;test.jvNS.ca.		299	IN	A	1.2.3.4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;如果此前没有设置过 &lt;code&gt;DNS&lt;/code&gt; 记录，因为没有缓存，所以立刻生效了。这里可以看到 &lt;code&gt;TTL&lt;/code&gt; 是 299。那么，修改 &lt;code&gt;IP&lt;/code&gt; 为 &lt;code&gt;5.6.7.8&lt;/code&gt; 呢。&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-6&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ dig @8.8.8.8 test.jvNS.ca
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;test.jvNS.ca.		144	IN	A	1.2.3.4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;可以看到，&lt;code&gt;IP&lt;/code&gt; 并没有发生改变且 &lt;code&gt;TTL&lt;/code&gt; 表示缓存还将存在 144 秒。而且，多次查询，你可能会发现，有时候可以得到新的 &lt;code&gt;IP&lt;/code&gt;，但有的时候又是旧的 &lt;code&gt;IP&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这里是因为像 &lt;code&gt;8.8.8.8&lt;/code&gt; 这样的 &lt;code&gt;DNS&lt;/code&gt; 服务器采用了负载均衡，每次查询可能被分配到不同的后端服务器，而他们的缓存不尽相同。&lt;/p&gt;
&lt;p&gt;等待 5 分钟后，所有的缓存都更新了，再次查询，将会始终返回新 &lt;code&gt;IP&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;ttl-并非总是可靠&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#ttl-%e5%b9%b6%e9%9d%9e%e6%80%bb%e6%98%af%e5%8f%af%e9%9d%a0&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;TTL 并非总是可靠&lt;/h3&gt;&lt;p&gt;与大多数互联网协议一样，并不是所有的终端都服从 &lt;code&gt;DNS&lt;/code&gt; 规范（包括 &lt;code&gt;8.8.8.8&lt;/code&gt; 这样的大型 &lt;code&gt;DNS&lt;/code&gt; 也不尊重 &lt;code&gt;TTL&lt;/code&gt;）。一些 ISP 的 &lt;code&gt;DNS&lt;/code&gt; 服务器会将缓存记录的时间比 &lt;code&gt;TTL&lt;/code&gt; 规定的时间长，比如可能是 2 天而不是 5 分钟。而且人们总是可以在他们的 &lt;code&gt;/etc/hosts&lt;/code&gt; 中硬编码旧的 &lt;code&gt;IP&lt;/code&gt; 地址。&lt;/p&gt;
&lt;p&gt;此外，应用程序（例如浏览器）都内置了自己的 &lt;code&gt;DNS&lt;/code&gt; 缓存，或者本地网关也存在缓存。&lt;/p&gt;
&lt;p&gt;这也是为什么，即便正确地设置了对应的 &lt;code&gt;TTL&lt;/code&gt;（大部分 &lt;code&gt;DNS&lt;/code&gt; 将会在短时间内更新缓存），有些 &lt;code&gt;DNS&lt;/code&gt; 服务器仍然需要更长时间生效，这也导致我们的查询也并不总是会得到新的 &lt;code&gt;IP&lt;/code&gt; 地址。&lt;/p&gt;
&lt;h3 id=&#34;连同-ns-一起更新&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%bf%9e%e5%90%8c-ns-%e4%b8%80%e8%b5%b7%e6%9b%b4%e6%96%b0&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;连同 NS 一起更新&lt;/h3&gt;&lt;p&gt;假设此前的 NS 为 &lt;code&gt;dNS1.p01.NSone.net&lt;/code&gt;，现在我们把他修改为谷歌的 NS&lt;code&gt;NS-cloud-b1.googledomaiNS.com&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;通常，当你修改完成后，你的域名商会提示你：“修改将在 48 小时内生效”。&lt;/p&gt;
&lt;p&gt;然后设置一个新的 A 记录指向 &lt;code&gt;1.2.3.4&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;dig 看看：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-7&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ dig @8.8.8.8 examplecat.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;examplecat.com.		17	IN	A	104.248.50.87&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;8.8.8.8&lt;/code&gt; 没有变化，询问别的 DNS：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-8&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ dig @1.1.1.1 examplecat.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;examplecat.com.		299	IN	A	1.2.3.4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;1.1.1.1&lt;/code&gt; 更新了。&lt;/p&gt;
&lt;p&gt;造成这样不同结果的原因，可能是此前并没有人询问过 &lt;code&gt;1.1.1.1&lt;/code&gt;，所以他没有缓存，能立刻得到新的 &lt;code&gt;IP&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;而如果我们向新的 &lt;code&gt;NS&lt;/code&gt; 查询，肯定会得到新的 &lt;code&gt;IP&lt;/code&gt; 记录：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-9&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ dig @NS-cloud-b1.googledomaiNS.com examplecat.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;examplecat.com.		300	IN	A	1.2.3.4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;ns-的-ttl-要长很多&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#ns-%e7%9a%84-ttl-%e8%a6%81%e9%95%bf%e5%be%88%e5%a4%9a&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;NS 的 TTL 要长很多&lt;/h3&gt;&lt;p&gt;域名商提示：“修改将在 48 小时内生效” 的原因是 &lt;code&gt;NS&lt;/code&gt; 记录（告诉&lt;code&gt;递归 NS&lt;/code&gt; 应该向哪个 &lt;code&gt;NS&lt;/code&gt; 查询）的 TTL 要长的多。&lt;/p&gt;
&lt;p&gt;回到上一节中，我们的查询结果显示：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-10&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ dig @192.5.6.30 github.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;github.com.		172800	IN	NS	NS-421.awsdNS-52.com.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;NS-421.awsdNS-52.com.	172800	IN	A	205.251.193.165
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;172800 秒是 48 小时！这就是为什么更改 &lt;code&gt;NS&lt;/code&gt; 后需要更长的时间来生效。&lt;/p&gt;
&lt;h3 id=&#34;ns-如何得到更新&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#ns-%e5%a6%82%e4%bd%95%e5%be%97%e5%88%b0%e6%9b%b4%e6%96%b0&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;NS 如何得到更新？&lt;/h3&gt;&lt;p&gt;更新 &lt;code&gt;NS&lt;/code&gt; 后，我们向根服务器查询的话就会到得到这样的结果：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-11&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ dig NS @j.gtld-servers.net examplecat.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;examplecat.com.		172800	IN	NS	NS-cloud-b1.googledomaiNS.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;你可能会疑惑，新的 &lt;code&gt;NS&lt;/code&gt; 记录是如何在根服务器处更新的呢？是因为当你在域名商那里更改你域名的 &lt;code&gt;NS&lt;/code&gt; 后，他们会负责将这个给更改告知根服务器。&lt;/p&gt;
&lt;p&gt;通常这个更新将在几分钟内就生效，但是对于其他一些顶级域名（&lt;code&gt;TLD&lt;/code&gt;）（非&lt;code&gt;.com&lt;/code&gt;）可能速度稍微慢一些。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%80%bb%e7%bb%93&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;总结&lt;/h2&gt;&lt;p&gt;本文展示了 &lt;code&gt;DNS&lt;/code&gt; 的解析过程以及我们更新 &lt;code&gt;DNS&lt;/code&gt; 记录时发送了什么，希望有助于你理解这一过程。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;https://jvNS.ca/blog/how-updating-dNS-works/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;What happens when you update your DNS?&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;https://github.com/NLnetLabs/unbound/blob/6e0756e819779d9cc2a14741b501cadffe446c93/iterator/iter_hints.c#L131&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;unbound’s source code&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[3] &lt;a href=&#34;https://github.com/NLnetLabs/unbound/blob/6e0756e819779d9cc2a14741b501cadffe446c93/iterator/iter_hints.c#L131&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;iana root files&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Nagle 算法</title>
      <link>https://www.techkoala.net/nagle/</link>
      <pubDate>Sun, 28 Jun 2020 10:44:16 +0800</pubDate>
      
      <guid>https://www.techkoala.net/nagle/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;简要介绍 Nagle 算法&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;nagle-算法&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#nagle-%e7%ae%97%e6%b3%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Nagle 算法&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Nagle&lt;/code&gt; 算法通过减少网络发包频率从而提高 &lt;code&gt;TCP/IP&lt;/code&gt; 网络的效率。&lt;/p&gt;
&lt;p&gt;主要解决由于 &lt;code&gt;TCP&lt;/code&gt; 包头大小，导致频繁发送小数据包有效数据内容太少，开销过大段的问题。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Nagle&lt;/code&gt; 算法是将大量等待发送的小数据包合并起来，然后一次性全部发送出去。具体地说，只要有一个发送方没有收到任何确认的数据包，发送方就应该一直缓冲它的输出，直到它有一个完整的数据包的输出，这样就允许一次发送所有的输出。&lt;/p&gt;
&lt;p&gt;其思路可以由下面的步骤所描述：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-3&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;if there is new data to send then
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    if the window size ≥ MSS and available data is ≥ MSS then
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        send complete MSS segment now
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    else
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        if there is unconfirmed data still in the pipe then
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            enqueue data in the buffer until an acknowledge is received
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        else
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            send data immediately
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        end if
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    end if
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;end if&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;Nagle&lt;/code&gt; 算法可能导致期望实时响应和低延迟的应用程序体验不佳。&lt;/p&gt;
&lt;p&gt;诸如网络多人视频游戏或鼠标在远程控制的操作系统中移动等应用程序，期望立即发送操作，而算法故意延迟传输，以牺牲延迟为代价提高带宽效率。因此，具有低带宽时间敏感传输的应用程序通常用于绕过 Nagle 延迟的 ACK 延迟。&lt;/p&gt;
&lt;h2 id=&#34;windows-下关闭-nagle-算法&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#windows-%e4%b8%8b%e5%85%b3%e9%97%ad-nagle-%e7%ae%97%e6%b3%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Windows 下关闭 Nagle 算法&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;打开注册表编辑器&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;打开如下路径 &lt;code&gt;计算机 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/Nagle/Regedit.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/Nagle/Regedit.png&#34;  data-sub-html=&#34;&lt;h2&gt;注册表界面&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Network/Nagle/Regedit.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;注册表界面&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;
&lt;p&gt;依次点击下方注册表项，检查右窗格中是否包含 &lt;code&gt;DhcpIPAddress&lt;/code&gt; 值；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在包含有 &lt;code&gt;DhcpIPAddress&lt;/code&gt; 的子项下，分别建立两个 &lt;code&gt;DWORD (32)&lt;/code&gt; 值，依次命名为 &lt;code&gt;TcpAckFrequency&lt;/code&gt; 和 &lt;code&gt;TCPNoDelay&lt;/code&gt;，键值全部设为 &lt;code&gt;1&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt; 包含 &lt;code&gt;DhcpIPAddress&lt;/code&gt; 的子项可能不只一个，所有的都要添加。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;https://en.wikipedia.org/wiki/Nagle%27s_algorithm&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Nagel 算法维基百科&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;https://www.ietf.org/rfc/rfc896.txt&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RFC896&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>使用 Cloudflare Workers 和 KV 构建在线 Todo 应用</title>
      <link>https://www.techkoala.net/todo_workers/</link>
      <pubDate>Tue, 16 Jun 2020 11:24:33 +0800</pubDate>
      
      <guid>https://www.techkoala.net/todo_workers/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;本文介绍如何使用 Cloudflare Workers 和 KV 存储构建一个无服务器的在线 Todo 应用。这是继 Google Drive 列表应用之后的又一个 Cloudflare Workers 实践项目。&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;一项目概述&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%80%e9%a1%b9%e7%9b%ae%e6%a6%82%e8%bf%b0&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;一、项目概述&lt;/h2&gt;&lt;h3 id=&#34;11-技术栈&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#11-%e6%8a%80%e6%9c%af%e6%a0%88&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;1.1 技术栈&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Cloudflare Workers：提供无服务器运行环境&lt;/li&gt;
&lt;li&gt;Workers KV：键值存储系统&lt;/li&gt;
&lt;li&gt;HTML/CSS/JavaScript：前端界面&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;12-功能特点&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#12-%e5%8a%9f%e8%83%bd%e7%89%b9%e7%82%b9&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;1.2 功能特点&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;无需传统服务器&lt;/li&gt;
&lt;li&gt;全球边缘部署&lt;/li&gt;
&lt;li&gt;低延迟响应&lt;/li&gt;
&lt;li&gt;高可用性&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;二环境准备&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%ba%8c%e7%8e%af%e5%a2%83%e5%87%86%e5%a4%87&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;二、环境准备&lt;/h2&gt;&lt;h3 id=&#34;21-必要条件&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#21-%e5%bf%85%e8%a6%81%e6%9d%a1%e4%bb%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;2.1 必要条件&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Cloudflare 账户&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;免费账户即可&lt;/li&gt;
&lt;li&gt;需要验证邮箱&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wrangler CLI 工具&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-1&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g @cloudflare/wrangler&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;API 密钥&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;登录 Cloudflare 控制台&lt;/li&gt;
&lt;li&gt;生成 API Token&lt;/li&gt;
&lt;li&gt;设置适当的权限&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;22-项目初始化&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#22-%e9%a1%b9%e7%9b%ae%e5%88%9d%e5%a7%8b%e5%8c%96&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;2.2 项目初始化&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-2&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 创建新项目&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wrangler generate todo-app
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 配置 wrangler.toml&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;nv&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;todo-app&amp;#34;&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;type&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;webpack&amp;#34;&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;nv&#34;&gt;account_id&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;your-account-id&amp;#34;&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;nv&#34;&gt;workers_dev&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;三实现核心功能&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%89%e5%ae%9e%e7%8e%b0%e6%a0%b8%e5%bf%83%e5%8a%9f%e8%83%bd&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;三、实现核心功能&lt;/h2&gt;&lt;h3 id=&#34;31-配置-kv-存储&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#31-%e9%85%8d%e7%bd%ae-kv-%e5%ad%98%e5%82%a8&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3.1 配置 KV 存储&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;toml&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-3&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# wrangler.toml&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;nx&#34;&gt;kv_namespaces&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&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;nx&#34;&gt;binding&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;TODO_STORE&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;your-kv-namespace-id&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&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&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;32-数据写入操作&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#32-%e6%95%b0%e6%8d%ae%e5%86%99%e5%85%a5%e6%93%8d%e4%bd%9c&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3.2 数据写入操作&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;javascript&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-4&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;createTodo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;request&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;body&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&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;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;now&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;().&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;toString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&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;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;TODO_STORE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;put&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;JSON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stringify&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&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;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&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;nx&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&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;nx&#34;&gt;completed&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&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&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;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;JSON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stringify&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;success&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;headers&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;s1&#34;&gt;&amp;#39;Content-Type&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;application/json&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;33-数据读取操作&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#33-%e6%95%b0%e6%8d%ae%e8%af%bb%e5%8f%96%e6%93%8d%e4%bd%9c&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3.3 数据读取操作&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;javascript&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-5&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;getTodos&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;TODO_STORE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&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;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;todos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Promise&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;all&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&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;nx&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;keys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;map&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;TODO_STORE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&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;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;JSON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;parse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;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;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;JSON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stringify&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;todos&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;headers&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;s1&#34;&gt;&amp;#39;Content-Type&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;application/json&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;四构建用户界面&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%9b%9b%e6%9e%84%e5%bb%ba%e7%94%a8%e6%88%b7%e7%95%8c%e9%9d%a2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;四、构建用户界面&lt;/h2&gt;&lt;h3 id=&#34;41-html-结构&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#41-html-%e7%bb%93%e6%9e%84&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;4.1 HTML 结构&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;html&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-6&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#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;
&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;
&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;
&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;Todo App&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;
&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;style.css&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&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;head&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&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;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&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;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;container&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&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;h1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Todo List&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;
&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;form&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;todo-form&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&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;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;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;todo-input&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;placeholder&lt;/span&gt;&lt;span class=&#34;o&#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;&amp;gt;&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;button&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;submit&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;添加&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;button&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&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;form&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&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;ul&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;todo-list&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;ul&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&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;div&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&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;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;app.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;
&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;
&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;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;42-样式设计&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#42-%e6%a0%b7%e5%bc%8f%e8%ae%be%e8%ae%a1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;4.2 样式设计&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;css&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-7&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#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;container&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&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;max-width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;600&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;px&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;margin&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;kc&#34;&gt;auto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;padding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;px&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;nc&#34;&gt;todo-item&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&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;display&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;flex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;align-items&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;center&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;padding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;px&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;border-bottom&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;kt&#34;&gt;px&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;solid&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;#eee&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;nc&#34;&gt;todo-item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;completed&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&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;text-decoration&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;line-through&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;color&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;#888&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;43-交互实现&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#43-%e4%ba%a4%e4%ba%92%e5%ae%9e%e7%8e%b0&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;4.3 交互实现&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;javascript&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-8&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getElementById&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;todo-form&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;addEventListener&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;submit&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;e&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;e&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;preventDefault&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&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;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;input&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getElementById&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;todo-input&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&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;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;input&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;trim&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&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&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;nx&#34;&gt;text&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;createTodo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&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;nx&#34;&gt;input&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&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;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;updateTodoList&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;updateTodoList&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;todos&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;getTodos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&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;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getElementById&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;todo-list&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&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;nx&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;innerHTML&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;todos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;map&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;todo&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`
&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;sb&#34;&gt;    &amp;lt;li class=&amp;#34;todo-item &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;todo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;completed&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;?&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;completed&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;&amp;#34;&amp;gt;
&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;sb&#34;&gt;      &amp;lt;input type=&amp;#34;checkbox&amp;#34; &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;todo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;completed&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;?&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;checked&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;&amp;gt;
&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;sb&#34;&gt;      &amp;lt;span&amp;gt;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;todo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;&amp;lt;/span&amp;gt;
&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;sb&#34;&gt;      &amp;lt;button onclick=&amp;#34;deleteTodo(&amp;#39;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;todo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;&amp;#39;)&amp;#34;&amp;gt;删除&amp;lt;/button&amp;gt;
&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;sb&#34;&gt;    &amp;lt;/li&amp;gt;
&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;sb&#34;&gt;  `&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&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&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;五部署和测试&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%ba%94%e9%83%a8%e7%bd%b2%e5%92%8c%e6%b5%8b%e8%af%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;五、部署和测试&lt;/h2&gt;&lt;h3 id=&#34;51-部署步骤&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#51-%e9%83%a8%e7%bd%b2%e6%ad%a5%e9%aa%a4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;5.1 部署步骤&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-9&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 发布到 Cloudflare Workers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wrangler publish
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 查看部署状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wrangler tail&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;52-测试要点&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#52-%e6%b5%8b%e8%af%95%e8%a6%81%e7%82%b9&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;5.2 测试要点&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;添加新任务&lt;/li&gt;
&lt;li&gt;标记完成状态&lt;/li&gt;
&lt;li&gt;删除任务&lt;/li&gt;
&lt;li&gt;数据持久化&lt;/li&gt;
&lt;li&gt;性能测试&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;六优化建议&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%85%ad%e4%bc%98%e5%8c%96%e5%bb%ba%e8%ae%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;六、优化建议&lt;/h2&gt;&lt;h3 id=&#34;61-性能优化&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#61-%e6%80%a7%e8%83%bd%e4%bc%98%e5%8c%96&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;6.1 性能优化&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;实现任务缓存&lt;/li&gt;
&lt;li&gt;批量操作优化&lt;/li&gt;
&lt;li&gt;减少 API 调用&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;62-功能扩展&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#62-%e5%8a%9f%e8%83%bd%e6%89%a9%e5%b1%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;6.2 功能扩展&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;添加任务分类&lt;/li&gt;
&lt;li&gt;实现任务提醒&lt;/li&gt;
&lt;li&gt;支持多用户&lt;/li&gt;
&lt;li&gt;数据导出功能&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考资料&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考资料&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://developers.cloudflare.com/workers/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Cloudflare Workers 文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developers.cloudflare.com/workers/learning/how-kv-works&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Workers KV 指南&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://codeforgeek.com/build-a-todo-app-using-cloudflare-workers-and-kv/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Build A TODO App using Cloudflare Workers and KV&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/signalnerve/cloudflare-workers-todos&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Cloudflare Workers Todos 示例&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Linux 安全分析与加固</title>
      <link>https://www.techkoala.net/linux_security/</link>
      <pubDate>Sun, 07 Jun 2020 23:22:43 +0800</pubDate>
      
      <guid>https://www.techkoala.net/linux_security/</guid>
      <description>&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Linux/linux.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Linux/linux.png&#34;  data-sub-html=&#34;&lt;h2&gt;Linux&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Linux/linux.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Linux&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;blockquote&gt;
  &lt;p&gt;记录一些常见的 Linux 服务器安全问题分析以及防护措施&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;日志分析&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%97%a5%e5%bf%97%e5%88%86%e6%9e%90&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;日志分析&lt;/h2&gt;&lt;h3 id=&#34;常用日志文件&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%b8%b8%e7%94%a8%e6%97%a5%e5%bf%97%e6%96%87%e4%bb%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;常用日志文件&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Debian&lt;/code&gt; 以及 &lt;code&gt;RHEL&lt;/code&gt; 系的系统日志是由一个名为 &lt;code&gt;syslog&lt;/code&gt; 的服务管理的，如以下日志文件都是由 &lt;code&gt;syslog&lt;/code&gt; 日志服务驱动的：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/var/log/boot.log&lt;/code&gt;：记录了系统在引导过程中发生的事件，就是 &lt;code&gt;Linux&lt;/code&gt; 系统开机自检过程显示的信息&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/var/log/lastlog&lt;/code&gt; ：记录最后一次用户成功登陆的时间、登陆 &lt;code&gt;IP&lt;/code&gt; 等信息&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/var/log/messages&lt;/code&gt; ：记录 &lt;code&gt;Linux&lt;/code&gt; 操作系统常见的系统和服务错误信息&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/var/log/secure&lt;/code&gt; ：&lt;code&gt;Linux&lt;/code&gt; 系统安全日志，记录用户和工作组变坏情况、用户登陆认证情况&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/var/log/syslog&lt;/code&gt;：只记录警告信息，常常是系统出问题的信息，使用 &lt;code&gt;lastlog&lt;/code&gt; 查看&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/var/log/wtmp&lt;/code&gt;：该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件，使用 last 命令查看&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/var/run/utmp&lt;/code&gt;：该日志文件记录有关当前登录的每个用户的信息。如 &lt;code&gt;who&lt;/code&gt;、&lt;code&gt;w&lt;/code&gt;、&lt;code&gt;users&lt;/code&gt;、&lt;code&gt;finger&lt;/code&gt; 等就需要访问这个文件&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;/var/log/btmp&lt;/code&gt;：记录 &lt;code&gt;Linux&lt;/code&gt; 登陆失败的用户、时间以及远程 &lt;code&gt;IP&lt;/code&gt; 地址&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;/var/log/auth.log&lt;/code&gt; 或 &lt;code&gt;/var/log/secure&lt;/code&gt; 存储来自可插拔认证模块 (PAM) 的日志，包括成功的登录，失败的登录尝试和认证方式。&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;注：&lt;code&gt;Debian&lt;/code&gt; 系在 /var/log/auth.log 中存储认证信息而 &lt;code&gt;RHEL&lt;/code&gt; 系则在 /var/log/secure 中存储。&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;Archlinux&lt;/strong&gt; 使用 &lt;code&gt;systemd&lt;/code&gt; 提供的日志系统（logging system），称为 &lt;code&gt;journal&lt;/code&gt;。使用 &lt;code&gt;systemd&lt;/code&gt; 日志，无需额外安装日志服务（&lt;code&gt;syslog&lt;/code&gt;）。&lt;/p&gt;
&lt;h3 id=&#34;相关日志查看命令&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%9b%b8%e5%85%b3%e6%97%a5%e5%bf%97%e6%9f%a5%e7%9c%8b%e5%91%bd%e4%bb%a4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;相关日志查看命令&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-51&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cat /var/log/secure &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;/Failed/{print $(NF-3)}&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; uniq -c &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;{print $2&amp;#34;=&amp;#34;$1;}&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;查看尝试暴力登录 &lt;code&gt;root&lt;/code&gt; 的 &lt;code&gt;IP&lt;/code&gt; 及次数&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-52&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ grep &lt;span class=&#34;s2&#34;&gt;&amp;#34;Failed password for root&amp;#34;&lt;/span&gt; /var/log/auth.log &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;{print $11}&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; uniq -c &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort -nr &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; more&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;常见防护措施&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%b8%b8%e8%a7%81%e9%98%b2%e6%8a%a4%e6%8e%aa%e6%96%bd&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;常见防护措施&lt;/h2&gt;&lt;h3 id=&#34;ssh&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#ssh&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;SSH&lt;/h3&gt;&lt;h4 id=&#34;编辑-ssh-配置文件&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%bc%96%e8%be%91-ssh-%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;编辑 SSH 配置文件&lt;/h4&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-53&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ vim /etc/ssh/sshd_config&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;1、修改端口&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;#Port 22 —&amp;gt; Port xxxx&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2、关闭 root 登录&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PermitRootLogin yes -&amp;gt; PermitRootLogin no&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3、使用证书登录&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;若不存在证书首先执行下面步骤&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在客户端生成密钥:&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-54&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ssh-keygen -t rsa&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;把公钥拷贝至服务器:&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-55&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ssh-copy-id -i .ssh/id_rsa.pub server&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;或手动将 id_rsa.pub 拷贝至服务器用户目录的.ssh 中，并修改访问权限：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-56&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ scp .shh/id_rsa.pub server:~/.ssh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;服务器中：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-57&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ chmod &lt;span class=&#34;m&#34;&gt;400&lt;/span&gt; authorized_keys&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;打开证书登录：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;RSAAuthentication yes&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;开启公钥验证：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PubkeyAuthentication yes&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;验证文件路径：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;AuthorizedKeysFile .ssh/authorized_keys&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;禁止密码认证：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PasswordAuthentication no&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;禁止空密码：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PermitEmptyPasswords no&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;最后，重启 SSHD 服务&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-58&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ systemctl restart sshd&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;用户以及用户组管理&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%94%a8%e6%88%b7%e4%bb%a5%e5%8f%8a%e7%94%a8%e6%88%b7%e7%bb%84%e7%ae%a1%e7%90%86&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;用户以及用户组管理&lt;/h3&gt;&lt;h4 id=&#34;无用用户用户组&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%97%a0%e7%94%a8%e7%94%a8%e6%88%b7%e7%94%a8%e6%88%b7%e7%bb%84&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;无用用户、用户组&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;Linux 系统中可以删除的默认用户和组大致有如下这些：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;可删除的用户，如 &lt;code&gt;adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher&lt;/code&gt; 等。&lt;/p&gt;
&lt;p&gt;可删除的组，如 &lt;code&gt;adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers&lt;/code&gt; 等。&lt;/p&gt;
&lt;h4 id=&#34;空口令账户&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%a9%ba%e5%8f%a3%e4%bb%a4%e8%b4%a6%e6%88%b7&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;空口令账户&lt;/h4&gt;&lt;p&gt;使用如下命令检测空口令账户：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-59&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ awk -F: &lt;span class=&#34;s1&#34;&gt;&amp;#39;$2==&amp;#34;!!&amp;#34; {print $1}&amp;#39;&lt;/span&gt; /etc/shadow&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;然后查看 &lt;code&gt;/etc/passwd&lt;/code&gt; 确认空口令用户是否可以登录，选择是否加固密码。&lt;/p&gt;
&lt;h4 id=&#34;登录失败后强制延时&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%99%bb%e5%bd%95%e5%a4%b1%e8%b4%a5%e5%90%8e%e5%bc%ba%e5%88%b6%e5%bb%b6%e6%97%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;登录失败后强制延时&lt;/h4&gt;&lt;p&gt;在 &lt;code&gt;/etc/pam.d/system-login&lt;/code&gt; 中添加 &lt;code&gt;auth optional pam_faildelay.so delay=4000000&lt;/code&gt;，表示延时 4 秒（单位微秒）&lt;/p&gt;
&lt;h4 id=&#34;限制-root-权限&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%99%90%e5%88%b6-root-%e6%9d%83%e9%99%90&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;限制 root 权限&lt;/h4&gt;&lt;p&gt;可以为单个用户启用单个程序的 &lt;code&gt;root&lt;/code&gt; 权限，而不用为了运行一个程序启用该用户对 &lt;code&gt;root&lt;/code&gt; 的完整访问权。例如，要授予用户 &lt;code&gt;alice&lt;/code&gt; 对特定程序的访问权限：&lt;/p&gt;
&lt;p&gt;编辑 &lt;code&gt;/etc/sudoers&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-60&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ visudo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;若要指定 visudo 的默认编辑器，最好是修改 &lt;code&gt;/etc/sudoers&lt;/code&gt; 中的 &lt;code&gt;Defaults editor=xxxx&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;而不是使用&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-61&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ &lt;span class=&#34;nv&#34;&gt;EDITOR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;nano visudo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;因为任何程序都可以通过该命令指定作为编辑器，存在风险。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;添加：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;alice ALL = NOPASSWD: /path/to/program&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;关闭不必要的服务&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%85%b3%e9%97%ad%e4%b8%8d%e5%bf%85%e8%a6%81%e7%9a%84%e6%9c%8d%e5%8a%a1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;关闭不必要的服务&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;例如&lt;/strong&gt; 某台 &lt;code&gt;Linux&lt;/code&gt; 服务器用于 &lt;code&gt;www&lt;/code&gt; 应用，那么除了 &lt;code&gt;httpd&lt;/code&gt; 服务和系统运行是必须的服务外，其他服务都可以关闭。下面这些服务一般情况下是不需要的，可以选择关闭：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;anacron、auditd、autofs、avahi-daemon、avahi-dnsconfd、bluetooth、cpuspeed、firstboot、gpm、haldaemon、hidd、ip6tables、ipsec、isdn、lpd、mcstrans、messagebus、netfs、nfs、nfslock、nscd、pcscd portmap、readahead_early、restorecond、rpcgssd、rpcidmapd、rstatd、sendmail、setroubleshoot、yppasswdd ypserv&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;文件系统安全&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%96%87%e4%bb%b6%e7%b3%bb%e7%bb%9f%e5%ae%89%e5%85%a8&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;文件系统安全&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;文件权限检查和修改&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（1）查找系统中任何用户都有写权限的文件或目录&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-62&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ find / -type f -perm -2 -o -perm -20 &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;xargs ls -al //查找文件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ find / -type d -perm -2 -o -perm -20 &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;xargs ls –ld //查找目录&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;（2）查找系统中所有含 “s” 位的程序&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-63&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ find / -type f -perm -4000 -o -perm -2000 -print &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; xargs ls –al&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;含有 “s” 位权限的程序对系统安全威胁很大，通过查找系统中所有具有 “s” 位权限的程序，可以把某些不必要的 “s” 位程序去掉，这样可以防止用户滥用权限或提升权限的可能性。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（3）检查系统中所有 suid 及 sgid 文件&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-64&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ find / -user root -perm -2000 -print -exec md5sum &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ find / -user root -perm -4000 -print -exec md5sum &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;将检查的结果保存到文件中，可在以后的系统检查中作为参考。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（4）检查系统中没有属主的文件&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-65&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ find / -nouser -o –nogroup&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;没有属主的孤儿文件比较危险，因此找到这些文件后，要么删除掉，要么修改文件的属主，使其处于安全状态。&lt;/p&gt;
&lt;h2 id=&#34;常用防护软件&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%b8%b8%e7%94%a8%e9%98%b2%e6%8a%a4%e8%bd%af%e4%bb%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;常用防护软件&lt;/h2&gt;&lt;h3 id=&#34;fail2ban&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#fail2ban&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;fail2ban&lt;/h3&gt;&lt;p&gt;fail2ban 通过扫描日志文件，筛选登录失败后继续频繁尝试登录的同一来源的非善意行为，根据用户定义的规则对访问来源做响应的封禁处理。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1、安装&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;以 debian 为例：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-66&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo apt install fail2ban&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;
&lt;p&gt;fail2ban 安装在  &lt;code&gt;/etc/fail2ban&lt;/code&gt; 路径下,监控目标在 /etc/fail2ban/jail.conf 文件中，官方建议自定义的监控目标放在 /etc/fail2ban/jail.local 或者在 /etc/fail2ban/jail.d 目录中新建配置文件。因此，这里首先复制一份本地配置文件：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-67&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;3、修改配置文件&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;配置文件中的一些全局关键字段说明：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-68&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ignoreip = 127.0.0.1    # &amp;#34;ignoreip&amp;#34; 是指不会被禁止访问的主机地址，它可以是单 IP 地址、CIDR （汇聚网段）地址，甚至可以是 DNS （主机域名），若有多个条目，各条目间用空格分隔。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bantime  = 3600         # &amp;#34;bantime&amp;#34; 字段设置禁止访问的时间间隔，以秒为单位。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;findtime  = 600         # &amp;#34;findtime&amp;#34; 是指在指定时间间隔内，达到或超过  &amp;#34;Maxretry&amp;#34;  次失败连接尝试，即被命中，禁止访问，以秒为单位。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Maxretry = 3            # &amp;#34;Maxretry&amp;#34; 是指最大尝试次数。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;此外，fail2ban 使用 jail 的概念对每个需要保护的服务进行配置，其中配置文件中已经对常见的服务进行了预设，当然，你也可以自定义不同服务的详细信息。jail 的模板如下：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-69&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[xxx]                                #jail的名字
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;enabled  = true                      #是否启用
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;port     = xxxx                      #需要进行保护的端口
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;filter   = xxxx                      #指定 SSH 监控使用的规则过滤配置文件，大量默认规则保存在 /etc/fail2ban/filter.d，使用默认规则直接输入名称即可。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;action   = xxxx                      #发现恶意IP后采取的操作。action.d 目录中预定义了许多常用操作，例如调用 iptables/firewalld 封禁、sendmail 发送通知邮件；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;logpath  = xxxxxxxx                  #指定 fail2ban 监控日志文件路径，可换行输入多个路径
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bantime = xxxx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;findtime = xxxx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;maxretry = xxxx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h4 id=&#34;以保护-ssh-为例&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bb%a5%e4%bf%9d%e6%8a%a4-ssh-%e4%b8%ba%e4%be%8b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;以保护 SSH 为例&lt;/h4&gt;&lt;p&gt;编辑配置文件&lt;code&gt;jail.local&lt;/code&gt;，开启 ssh 保护，其中可定义多个字段：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-70&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#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;n&#34;&gt;ssh&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&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;enabled&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;true&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;port&lt;/span&gt;     &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ssh&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;filter&lt;/span&gt;   &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sshd&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;action&lt;/span&gt;   &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;iptables&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SSH&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ssh&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;protocol&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tcp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&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;logpath&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;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;log&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;maxretry&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;其余未设置的项尊崇全局设置。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4、启动并查看状态&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;配置好后保存配置文件，设置开启启动并启动 fail2ban：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-71&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ systemctl &lt;span class=&#34;nb&#34;&gt;enable&lt;/span&gt; fail2ban
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ systemctl start fail2ban&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;查看 fail2ban 的运行状态&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-72&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ fail2ban-client status&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;输出&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-73&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Status
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;|- Number of jail:      1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;`- Jail list:   sshd&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;需要查看详情，则只需使用&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-74&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ fail2ban-client status sshd&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;即可输出对应 jail 的详细信息，如：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-75&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Status&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;jail&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sshd&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;o&#34;&gt;|-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Filter&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;o&#34;&gt;|&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;|-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Currently&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;failed&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;n&#34;&gt;Total&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;failed&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;     &lt;span class=&#34;mi&#34;&gt;2479&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;o&#34;&gt;|&lt;/span&gt;  &lt;span class=&#34;err&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;File&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;list&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;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;log&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;`&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Actions&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;o&#34;&gt;|-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Currently&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;banned&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;o&#34;&gt;|-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Total&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;banned&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;     &lt;span class=&#34;mi&#34;&gt;118&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;`&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Banned&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;IP&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;   &lt;span class=&#34;mf&#34;&gt;31.184&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;198.75&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;173.212&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;240.196&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;116.110&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;108.227&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;171.227&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;208.32&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] Linux 服务器为什么被黑？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;https://www.cnblogs.com/doublexi/p/9636506.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;linux 系统安全加固 &amp;ndash; 账号相关&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[3] &lt;a href=&#34;https://wiki.archlinux.org/index.php/Security&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Security - Archlinux Wiki&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Huginn（Docker）数据备份与恢复</title>
      <link>https://www.techkoala.net/huginn_backup/</link>
      <pubDate>Wed, 27 May 2020 23:06:20 +0800</pubDate>
      
      <guid>https://www.techkoala.net/huginn_backup/</guid>
      <description>&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Huginn/Huginn.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Huginn/Huginn.png&#34;  data-sub-html=&#34;&lt;h2&gt;Huginn&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Huginn/Huginn.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Huginn&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;blockquote&gt;
  &lt;p&gt;简单介绍使用 Docker 运行的 Huginn 数据的备份与恢复&lt;/p&gt;

&lt;/blockquote&gt;&lt;h3 id=&#34;备份数据&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%a4%87%e4%bb%bd%e6%95%b0%e6%8d%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;备份数据&lt;/h3&gt;&lt;p&gt;使用命令在容器中生成备份：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-1&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ docker &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; -it huginn mysqldump --single-transaction --opt -u root -ppassword huginn_production &amp;gt; huginn_backupfile.sql&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;或直接拷贝数据到容器外：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-2&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ docker &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; -it  huginn mysqldump -u root -ppassword huginn_production &amp;gt; /root/test_db.sql&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;恢复数据&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%81%a2%e5%a4%8d%e6%95%b0%e6%8d%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;恢复数据&lt;/h3&gt;&lt;p&gt;首先复制文件到 &lt;code&gt;docker&lt;/code&gt; 中：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-3&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ docker cp /home/xxxx/huginn_backupfile.sql huginn:/app/huginn_backupfile.sql&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;然后进入 &lt;code&gt;docker&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-4&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ docker &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; -ti huginn bash&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;接下来恢复数据库:&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-5&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ mysql -u root -ppassword huginn_production &amp;lt; huginn_backupfile.sql&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Hyper-V 桥接网络配置指南</title>
      <link>https://www.techkoala.net/hyper-v_bridging/</link>
      <pubDate>Wed, 20 May 2020 15:30:24 +0800</pubDate>
      
      <guid>https://www.techkoala.net/hyper-v_bridging/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;如何在 Hyper-V 中配置桥接网络，实现虚拟机与宿主机的网络互通&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;背景说明&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%83%8c%e6%99%af%e8%af%b4%e6%98%8e&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;背景说明&lt;/h2&gt;&lt;p&gt;Hyper-V 默认不提供类似 VirtualBox 或 VMware 的桥接模式选项。然而，我们可以通过创建虚拟交换机（Virtual Switch）来实现类似的网络配置，使虚拟机能够与宿主机在同一网段通信。&lt;/p&gt;
&lt;h2 id=&#34;配置步骤&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%85%8d%e7%bd%ae%e6%ad%a5%e9%aa%a4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;配置步骤&lt;/h2&gt;&lt;h3 id=&#34;1-创建虚拟交换机&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#1-%e5%88%9b%e5%bb%ba%e8%99%9a%e6%8b%9f%e4%ba%a4%e6%8d%a2%e6%9c%ba&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;1. 创建虚拟交换机&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;打开 Hyper-V 管理器&lt;/li&gt;
&lt;li&gt;在右侧操作面板中，选择&amp;quot;虚拟交换机管理器&amp;quot;&lt;/li&gt;
&lt;li&gt;点击&amp;quot;新建虚拟网络交换机&amp;quot;&lt;/li&gt;
&lt;li&gt;选择&amp;quot;外部&amp;quot;类型&lt;/li&gt;
&lt;li&gt;点击&amp;quot;创建虚拟交换机&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/VM/Hyper-v_Bridging/hyperv-1.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/VM/Hyper-v_Bridging/hyperv-1.webp&#34;  data-sub-html=&#34;&lt;h2&gt;打开虚拟交换机管理器&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/VM/Hyper-v_Bridging/hyperv-1.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;打开虚拟交换机管理器&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;2-配置虚拟交换机&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#2-%e9%85%8d%e7%bd%ae%e8%99%9a%e6%8b%9f%e4%ba%a4%e6%8d%a2%e6%9c%ba&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;2. 配置虚拟交换机&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;为新建的虚拟交换机指定一个描述性名称（如&amp;quot;External Network Bridge&amp;quot;）&lt;/li&gt;
&lt;li&gt;选择&amp;quot;外部网络&amp;quot;作为连接类型&lt;/li&gt;
&lt;li&gt;选择要桥接的物理网络适配器&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/VM/Hyper-v_Bridging/hyperv-2.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/VM/Hyper-v_Bridging/hyperv-2.webp&#34;  data-sub-html=&#34;&lt;h2&gt;创建新的虚拟交换机&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/VM/Hyper-v_Bridging/hyperv-2.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;创建新的虚拟交换机&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;3-桥接网络配置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#3-%e6%a1%a5%e6%8e%a5%e7%bd%91%e7%bb%9c%e9%85%8d%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3. 桥接网络配置&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;确保选择了正确的物理网络适配器&lt;/li&gt;
&lt;li&gt;允许管理操作系统共享此网络适配器&lt;/li&gt;
&lt;li&gt;点击&amp;quot;应用&amp;quot;保存设置&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/VM/Hyper-v_Bridging/hyperv-3.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/VM/Hyper-v_Bridging/hyperv-3.webp&#34;  data-sub-html=&#34;&lt;h2&gt;配置网络桥接&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/VM/Hyper-v_Bridging/hyperv-3.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;配置网络桥接&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;4-虚拟机网络配置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#4-%e8%99%9a%e6%8b%9f%e6%9c%ba%e7%bd%91%e7%bb%9c%e9%85%8d%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;4. 虚拟机网络配置&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;打开虚拟机设置&lt;/li&gt;
&lt;li&gt;在网络适配器设置中，选择刚才创建的虚拟交换机&lt;/li&gt;
&lt;li&gt;在虚拟机操作系统中配置网络：
&lt;ul&gt;
&lt;li&gt;使用与宿主机同一网段的 IP 地址&lt;/li&gt;
&lt;li&gt;使用相同的子网掩码&lt;/li&gt;
&lt;li&gt;使用相同的默认网关&lt;/li&gt;
&lt;li&gt;使用相同的 DNS 服务器&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;注意事项&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a1%b9&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;注意事项&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;网络适配器选择&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;确保选择正确的物理网络适配器&lt;/li&gt;
&lt;li&gt;如果使用无线网络，部分功能可能受限&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;IP 配置&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;避免使用与网络中其他设备冲突的 IP 地址&lt;/li&gt;
&lt;li&gt;建议使用静态 IP 配置&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;故障排除&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果无法连接，检查防火墙设置&lt;/li&gt;
&lt;li&gt;确认网络配置参数是否正确&lt;/li&gt;
&lt;li&gt;验证物理网络适配器是否工作正常&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;参考资料&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考资料&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/get-started/create-a-virtual-network-for-hyper-v&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Microsoft Docs: Create a virtual network&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/plan/plan-hyper-v-networking-in-windows-server&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Hyper-V 网络配置最佳实践&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Proxmox VE（PVE）安装与配置常见问题</title>
      <link>https://www.techkoala.net/pve_q_a/</link>
      <pubDate>Tue, 19 May 2020 15:31:34 +0800</pubDate>
      
      <guid>https://www.techkoala.net/pve_q_a/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;记录从 Hyper-V 迁移到 Proxmox VE 过程中遇到的问题及解决方案&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;系统环境&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%b3%bb%e7%bb%9f%e7%8e%af%e5%a2%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;系统环境&lt;/h2&gt;&lt;h3 id=&#34;当前配置&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%bd%93%e5%89%8d%e9%85%8d%e7%bd%ae&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;当前配置&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;虚拟化平台：Proxmox VE 6.2&lt;/li&gt;
&lt;li&gt;虚拟机：
&lt;ul&gt;
&lt;li&gt;群晖 NAS（DSM）&lt;/li&gt;
&lt;li&gt;OpenWrt 软路由&lt;/li&gt;
&lt;li&gt;Ubuntu 18.04 LTS&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;网络拓扑&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%bd%91%e7%bb%9c%e6%8b%93%e6%89%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;网络拓扑&lt;/h3&gt;&lt;p&gt;当前网络配置如下：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/VM/PVE/%e6%8b%93%e6%89%91.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/VM/PVE/拓扑.png&#34;  data-sub-html=&#34;&lt;h2&gt;系统网络拓扑图&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/VM/PVE/拓扑.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;系统网络拓扑图&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;常见问题与解决方案&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%b8%b8%e8%a7%81%e9%97%ae%e9%a2%98%e4%b8%8e%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;常见问题与解决方案&lt;/h2&gt;&lt;h3 id=&#34;1-dns-解析失败&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#1-dns-%e8%a7%a3%e6%9e%90%e5%a4%b1%e8%b4%a5&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;1. DNS 解析失败&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题描述&lt;/strong&gt;：
系统报错 &amp;ldquo;Temporary failure in name resolution&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;原因分析&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;初始安装时使用路由器作为 DNS 服务器&lt;/li&gt;
&lt;li&gt;安装软路由后 DNS 服务器地址发生变化&lt;/li&gt;
&lt;li&gt;系统仍使用旧的 DNS 配置（192.168.1.190）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;修改 &lt;code&gt;/etc/resolv.conf&lt;/code&gt; 文件&lt;/li&gt;
&lt;li&gt;将 DNS 服务器地址更新为当前软路由地址（192.168.1.1）&lt;/li&gt;
&lt;li&gt;重启网络服务&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;2-群晖硬盘挂载问题&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#2-%e7%be%a4%e6%99%96%e7%a1%ac%e7%9b%98%e6%8c%82%e8%bd%bd%e9%97%ae%e9%a2%98&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;2. 群晖硬盘挂载问题&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题描述&lt;/strong&gt;：
PVE 可以识别 NTFS 硬盘，但群晖无法自动挂载&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决步骤&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;关闭群晖虚拟机&lt;/li&gt;
&lt;li&gt;在 PVE 管理界面添加硬盘设备&lt;/li&gt;
&lt;li&gt;重启群晖虚拟机&lt;/li&gt;
&lt;li&gt;验证硬盘识别状态&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;注意事项&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;硬件变更需要在虚拟机关机状态下进行&lt;/li&gt;
&lt;li&gt;直接热插拔可能导致设备显示为红色&lt;/li&gt;
&lt;li&gt;移除硬件也需要遵循相同流程&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-pve-节点监控异常&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#3-pve-%e8%8a%82%e7%82%b9%e7%9b%91%e6%8e%a7%e5%bc%82%e5%b8%b8&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3. PVE 节点监控异常&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;问题描述&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;节点监控图表不显示&lt;/li&gt;
&lt;li&gt;时间显示为 1970-01-01&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-1&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 删除监控数据缓存&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm /var/lib/rrdcached/db/pve2-node
&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;# 重启 PVE 服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl restart pveproxy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;4-群晖配置-socks-代理&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#4-%e7%be%a4%e6%99%96%e9%85%8d%e7%bd%ae-socks-%e4%bb%a3%e7%90%86&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;4. 群晖配置 SOCKS 代理&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;配置步骤&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;在 OpenWrt 中安装 Privoxy：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-2&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;opkg update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;opkg install luci-app-privoxy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;配置转发规则：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-3&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 在 Privoxy 配置中添加&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;forward-socks5 / 127.0.0.1:1080 .&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在群晖中配置代理服务器：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;类型：SOCKS5&lt;/li&gt;
&lt;li&gt;服务器：OpenWrt IP&lt;/li&gt;
&lt;li&gt;端口：1080&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;参考资料&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考资料&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.proxmox.com/en/proxmox-ve/documentation&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Proxmox VE 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kb.synology.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;群晖官方知识库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openwrt.org/docs/start&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;OpenWrt 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Hugo &#43; LoveIt 主题使用技巧与常见问题解决</title>
      <link>https://www.techkoala.net/hugo_loveit_q_a/</link>
      <pubDate>Tue, 12 May 2020 21:54:02 +0800</pubDate>
      
      <guid>https://www.techkoala.net/hugo_loveit_q_a/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;本文总结了使用 Hugo 搭配 LoveIt 主题搭建博客时遇到的常见问题及其解决方案。
注：LoveIt 主题停更后，这些解决方案同样适用于其分支主题 DoIt。&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;1-远程访问-hugo-开发服务器&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#1-%e8%bf%9c%e7%a8%8b%e8%ae%bf%e9%97%ae-hugo-%e5%bc%80%e5%8f%91%e6%9c%8d%e5%8a%a1%e5%99%a8&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;1. 远程访问 Hugo 开发服务器&lt;/h2&gt;&lt;h3 id=&#34;问题描述&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%97%ae%e9%a2%98%e6%8f%8f%e8%bf%b0&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;问题描述&lt;/h3&gt;&lt;p&gt;在虚拟机中运行 &lt;code&gt;hugo server&lt;/code&gt; 时，默认只监听 localhost，无法从其他设备访问。&lt;/p&gt;
&lt;h3 id=&#34;解决方案&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;解决方案&lt;/h3&gt;&lt;p&gt;使用 &lt;code&gt;--bind&lt;/code&gt; 参数指定监听地址：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-1&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo server --bind &amp;lt;虚拟机IP地址&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;这样就可以通过同一网络中的其他设备访问开发服务器。&lt;/p&gt;
&lt;h2 id=&#34;2-使用-git-信息生成文章修改时间&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#2-%e4%bd%bf%e7%94%a8-git-%e4%bf%a1%e6%81%af%e7%94%9f%e6%88%90%e6%96%87%e7%ab%a0%e4%bf%ae%e6%94%b9%e6%97%b6%e9%97%b4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;2. 使用 Git 信息生成文章修改时间&lt;/h2&gt;&lt;h3 id=&#34;配置步骤&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%85%8d%e7%bd%ae%e6%ad%a5%e9%aa%a4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;配置步骤&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;在 &lt;code&gt;config.toml&lt;/code&gt; 中启用 Git 信息：
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;toml&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-2&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;enableGitInfo&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&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;nx&#34;&gt;gitRepo&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/path/to/your/project/.git/&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;注意事项&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a1%b9&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;注意事项&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Git 仓库应该初始化在 Hugo 项目的根目录&lt;/li&gt;
&lt;li&gt;如果只部署 &lt;code&gt;public&lt;/code&gt; 目录到 GitHub Pages，commit 详情页的链接可能无法正确跳转&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;3-修复-extra-stringxxxx-显示问题&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#3-%e4%bf%ae%e5%a4%8d-extra-stringxxxx-%e6%98%be%e7%a4%ba%e9%97%ae%e9%a2%98&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;3. 修复 %!(EXTRA string=xxxx) 显示问题&lt;/h2&gt;&lt;h3 id=&#34;问题描述-1&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%97%ae%e9%a2%98%e6%8f%8f%e8%bf%b0-1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;问题描述&lt;/h3&gt;&lt;p&gt;页面上出现 &lt;code&gt;%!(EXTRA string=xxxx)&lt;/code&gt; 这样的错误文本。&lt;/p&gt;
&lt;h3 id=&#34;解决方案-1&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88-1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;解决方案&lt;/h3&gt;&lt;p&gt;在 &lt;code&gt;config.toml&lt;/code&gt; 中修改语言设置：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;toml&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-3&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;defaultContentLanguage&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;zh-cn&amp;#34;&lt;/span&gt;  &lt;span class=&#34;c&#34;&gt;# 原为 &amp;#34;zh&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;4-配置-gitalk-评论系统&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#4-%e9%85%8d%e7%bd%ae-gitalk-%e8%af%84%e8%ae%ba%e7%b3%bb%e7%bb%9f&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;4. 配置 Gitalk 评论系统&lt;/h2&gt;&lt;h3 id=&#34;前置准备&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%89%8d%e7%bd%ae%e5%87%86%e5%a4%87&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;前置准备&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;创建 GitHub 仓库用于存储评论&lt;/li&gt;
&lt;li&gt;注册 OAuth 应用&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;oauth-应用注册步骤&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#oauth-%e5%ba%94%e7%94%a8%e6%b3%a8%e5%86%8c%e6%ad%a5%e9%aa%a4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;OAuth 应用注册步骤&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;访问 GitHub &lt;code&gt;Settings &amp;gt; Developer settings &amp;gt; OAuth Apps&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;点击 &lt;code&gt;New OAuth App&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;填写应用信息：
&lt;ul&gt;
&lt;li&gt;Application name：自定义名称&lt;/li&gt;
&lt;li&gt;Homepage URL：博客地址&lt;/li&gt;
&lt;li&gt;Application description：应用描述&lt;/li&gt;
&lt;li&gt;Authorization callback URL：&lt;strong&gt;必须填写博客地址&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Hugo/OAuth_App.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Hugo/OAuth_App.png&#34;  data-sub-html=&#34;&lt;h2&gt;OAuth 应用注册界面&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Hugo/OAuth_App.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;OAuth 应用注册界面&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;配置-gitalk&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%85%8d%e7%bd%ae-gitalk&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;配置 Gitalk&lt;/h3&gt;&lt;p&gt;在 &lt;code&gt;config.toml&lt;/code&gt; 中添加：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;toml&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-4&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#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;nx&#34;&gt;params&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;comment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;gitalk&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&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;nx&#34;&gt;enable&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&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;nx&#34;&gt;owner&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;你的GitHub用户名&amp;#34;&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;nx&#34;&gt;repo&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;存储评论的仓库名&amp;#34;&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;nx&#34;&gt;clientId&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;OAuth App 的 Client ID&amp;#34;&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;nx&#34;&gt;clientSecret&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;OAuth App 的 Client Secret&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;5-cdn-配置说明&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#5-cdn-%e9%85%8d%e7%bd%ae%e8%af%b4%e6%98%8e&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;5. CDN 配置说明&lt;/h2&gt;&lt;h3 id=&#34;配置步骤-1&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%85%8d%e7%bd%ae%e6%ad%a5%e9%aa%a4-1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;配置步骤&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;复制 CDN 配置文件：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-5&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp themes/LoveIt/assets/data/cdn/jsdelivr.yml assets/data/cdn/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在 &lt;code&gt;config.toml&lt;/code&gt; 中启用 CDN：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;toml&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-6&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#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;nx&#34;&gt;params&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;cdn&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&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;nx&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;jsdelivr.yml&amp;#34;&lt;/span&gt;  &lt;span class=&#34;c&#34;&gt;# CDN 配置文件名&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;自定义-cdn&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%87%aa%e5%ae%9a%e4%b9%89-cdn&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;自定义 CDN&lt;/h3&gt;&lt;p&gt;可以根据需要修改 &lt;code&gt;jsdelivr.yml&lt;/code&gt; 文件，使用其他 CDN 服务商。&lt;/p&gt;
&lt;h2 id=&#34;6-katex-数学公式渲染&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#6-katex-%e6%95%b0%e5%ad%a6%e5%85%ac%e5%bc%8f%e6%b8%b2%e6%9f%93&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;6. KaTeX 数学公式渲染&lt;/h2&gt;&lt;h3 id=&#34;问题描述-2&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%97%ae%e9%a2%98%e6%8f%8f%e8%bf%b0-2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;问题描述&lt;/h3&gt;&lt;p&gt;Hugo 的 Markdown 引擎会先处理反斜杠，导致矩阵渲染错误。&lt;/p&gt;
&lt;h3 id=&#34;错误示例&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%94%99%e8%af%af%e7%a4%ba%e4%be%8b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;错误示例&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;latex&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-7&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;W&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;\frac&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;}{&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;\sqrt&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;\begin&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{bmatrix}&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;\\&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;\end&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{bmatrix}&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;$&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;正确写法&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%ad%a3%e7%a1%ae%e5%86%99%e6%b3%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;正确写法&lt;/h3&gt;&lt;p&gt;在 KaTeX 矩阵中使用三个反斜杠：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;latex&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-8&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;W&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;\frac&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;}{&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;\sqrt&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;\begin&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{bmatrix}&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;\\\ &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;\end&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;{bmatrix}&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;$&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;参考资料&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考资料&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gohugo.io/documentation/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Hugo 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://hugoloveit.com/zh-cn/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;LoveIt 主题文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/gitalk/gitalk&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Gitalk 文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Github 使用问题</title>
      <link>https://www.techkoala.net/github_issue/</link>
      <pubDate>Sun, 10 May 2020 11:25:57 +0800</pubDate>
      
      <guid>https://www.techkoala.net/github_issue/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;总结使用 Github 时遇到的问题以及解决方法&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;无法推送&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%97%a0%e6%b3%95%e6%8e%a8%e9%80%81&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;无法推送&lt;/h2&gt;&lt;p&gt;​ 首先，使用如下命令检查问题详情：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-1&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ssh -vT git@github.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;​ 然后确认您的私钥已生成并加载到 &lt;code&gt;SSH&lt;/code&gt;。 如果使用的是 &lt;code&gt;OpenSSH 6.7&lt;/code&gt; 或更早版本：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-2&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 在后台启动 ssh-agent&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;eval&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;ssh-agent -s&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; Agent pid &lt;span class=&#34;m&#34;&gt;59566&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ssh-add -l
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; &lt;span class=&#34;m&#34;&gt;2048&lt;/span&gt; a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;RSA&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;​ 如果使用的是 &lt;code&gt;OpenSSH 6.8&lt;/code&gt; 或更新版本：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-3&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 在后台启动 ssh-agent&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;eval&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;ssh-agent -s&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; Agent pid &lt;span class=&#34;m&#34;&gt;59566&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ssh-add -l -E md5
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; &lt;span class=&#34;m&#34;&gt;2048&lt;/span&gt; MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;RSA&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;确认公钥已附加到账户&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%a1%ae%e8%ae%a4%e5%85%ac%e9%92%a5%e5%b7%b2%e9%99%84%e5%8a%a0%e5%88%b0%e8%b4%a6%e6%88%b7&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;确认公钥已附加到账户&lt;/h3&gt;&lt;p&gt;​ 在后台启动 &lt;code&gt;SSH&lt;/code&gt; 代理程序。&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-4&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ &lt;span class=&#34;nb&#34;&gt;eval&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;ssh-agent -s&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; Agent pid &lt;span class=&#34;m&#34;&gt;59566&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;​ 找到并记录公钥指纹。 如果使用的是 &lt;code&gt;OpenSSH 6.7&lt;/code&gt; 或更早版本：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-5&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ssh-add -l
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; &lt;span class=&#34;m&#34;&gt;2048&lt;/span&gt; a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;RSA&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;​ 如果使用的是 &lt;code&gt;OpenSSH 6.8&lt;/code&gt; 或更新版本：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-6&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ssh-add -l -E md5
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; &lt;span class=&#34;m&#34;&gt;2048&lt;/span&gt; MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;RSA&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;如果没有添加，则&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-7&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ssh-add /xxx/.ssh/xxx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;div class=&#34;details admonition warning open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 576 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;注意&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;不知为何，使用自定义名字的密钥，每次 &lt;code&gt;git&lt;/code&gt; 操作都要重新添加一次，尚不明确原因。&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&#34;添加到-github&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%b7%bb%e5%8a%a0%e5%88%b0-github&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;添加到 Github&lt;/h3&gt;&lt;p&gt;​ &lt;strong&gt;Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;SSH and GPG keys&lt;/strong&gt; &amp;gt; 添加公钥即可&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>查看 Linux 进程信息</title>
      <link>https://www.techkoala.net/process/</link>
      <pubDate>Mon, 02 Mar 2020 17:03:48 +0800</pubDate>
      
      <guid>https://www.techkoala.net/process/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;Linux 中如何查看进程信息？&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;Linux 中常使用 ps 命令显示当前运行中进程的相关信息的一份快照，包括 PID 等等。而 top 命令可以实时刷新进程信息，包括 CPU 占用，内存占用等等。&lt;/p&gt;
&lt;h2 id=&#34;ps-命令&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#ps-%e5%91%bd%e4%bb%a4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;ps 命令&lt;/h2&gt;&lt;p&gt;Linux 上进程有 5 种状态：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;运行(正在运行或在运行队列中等待)&lt;/li&gt;
&lt;li&gt;中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)&lt;/li&gt;
&lt;li&gt;不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)&lt;/li&gt;
&lt;li&gt;僵死(进程已终止, 但进程描述符存在, 直到父进程调用 wait4()系统调用后释放)&lt;/li&gt;
&lt;li&gt;停止(进程收到 SIGSTOP, SIGSTP, SIGTIN, SIGTOU 信号后停止运行运行)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ps 工具标识进程的 5 种状态码：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;D 不可中断 uninterruptible sleep (usually IO)&lt;/li&gt;
&lt;li&gt;R 运行 runnable (on run queue)&lt;/li&gt;
&lt;li&gt;S 中断 sleeping&lt;/li&gt;
&lt;li&gt;T 停止 traced or stopped&lt;/li&gt;
&lt;li&gt;Z 僵死 a defunct (“zombie”) process&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;语法&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%af%ad%e6%b3%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;语法&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-39&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ps &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;选项&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;选项&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%80%89%e9%a1%b9&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;选项&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-40&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-a：          显示所有终端机下执行的程序，除了会话首进程之外。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;a：           显示现行终端机下的所有程序，包括其他用户的程序。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-A：          显示所有程序。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-c：          显示CLS和PRI栏位。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;c：           列出程序时，显示每个程序真正的指令名称，而不包含路径，选项或常驻服务的标示。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-C&amp;lt;指令名称&amp;gt;： 指定执行指令的名称，并列出该指令的程序的状况。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-d：          显示所有程序，但不包括会话首进程的程序。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-e：          此选项的效果和指定&amp;#34;A&amp;#34;选项相同。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;e：           列出程序时，显示每个程序所使用的环境变量。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-f：          显示UID,PPIP,C与STIME栏位。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;f：           用ASCII字符显示树状结构，表达程序间的相互关系。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;g：           显示现行终端机下的所有程序，包括群组领导者的程序。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-G&amp;lt;群组识别码&amp;gt;：列出属于该群组的程序的状况，也可使用群组名称来指定。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;h：           不显示标题列。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-H：          显示树状结构，表示程序间的相互关系。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-j或j：       采用工作控制的格式显示程序状况。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-l或l：       采用详细的格式来显示程序状况。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;L：           列出栏位的相关信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-m或m：       显示所有的执行绪。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;n：           以数字来表示USER和WCHAN栏位。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-N：          显示所有的程序，除了执行ps指令终端机下的程序之外。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-p&amp;lt;程序识别码&amp;gt;：指定程序识别码，并列出该程序的状况。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;r：           只列出现行终端机正在执行中的程序。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-s&amp;lt;会话进程&amp;gt;：  指定会话进程的程序识别码，并列出隶属该会话进程的程序的状况。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;s：           采用程序信号的格式显示程序状况。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;S：           列出程序时，包括已中断的子程序资料。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-t&amp;lt;终端机编号&amp;gt;：指定终端机编号，并列出属于该终端机的程序的状况。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-T：          显示现行终端机下的所有程序。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;u：           以用户为主的格式来显示程序状况。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-U&amp;lt;用户识别码&amp;gt;：列出属于该用户的程序的状况，也可使用用户名称来指定。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;U&amp;lt;用户名称&amp;gt;：   列出属于该用户的程序的状况。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;v：           采用虚拟内存的格式显示程序状况。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-V或V：       显示版本信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-w或w：       采用宽阔的格式来显示程序状况。　
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;x：           显示所有程序，不以终端机来区分。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-y：          配合选项&amp;#34;-l&amp;#34;使用时，不显示F(flag)栏位，并以RSS栏位取代ADDR栏位。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--headers：   重复显示标题列。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--help：      在线帮助。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--info：      显示排错信息。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;实例&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%ae%9e%e4%be%8b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;实例&lt;/h3&gt;&lt;p&gt;显示所有运行中的进程：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-41&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ps aux &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; less&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;查看系统中的每个进程：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-42&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ps -A
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;或
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ps -e&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;查看非 root 运行的进程：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-43&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ps -U root -u root -N&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;查看用户 xxx 运行的进程&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-44&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ps -u xxx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;获得线程信息：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-45&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ps -eLf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ps axms&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;获得安全信息：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-46&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ps -eo euser,ruser,suser,fuser,f,comm,label
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ps axZ
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ps -eM&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;显示进程的树状图：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-47&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ps -ejH
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ps axjf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;此外 pstree 也可以以树状显示正在运行的进程。树的根节点为 pid 或 init。如果指定了用户名，进程树将以用户所拥有的进程作为根节点。&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-48&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ pstree&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;查找进程：&lt;/p&gt;
&lt;p&gt;ps 可以打搭配 grep 进行指定关键词进程的查找：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-49&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ps aux &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep zsh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;此外使用 pgrep 也能查找当前正在运行的进程并列出符合条件的进程 ID。&lt;/p&gt;
&lt;p&gt;例如显示 firefox 的进程 ID：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-50&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ pgrep firefox&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;显示进程名为 sshd、所有者为 root 的进程：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-51&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ pgrep -u root sshd&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;top-命令&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#top-%e5%91%bd%e4%bb%a4&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;top 命令&lt;/h2&gt;&lt;p&gt;top 命令提供了运行中系统的动态实时视图。&lt;/p&gt;
&lt;h3 id=&#34;语法-1&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%af%ad%e6%b3%95-1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;语法&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-52&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ top &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;参数&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;参数&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e6%95%b0&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参数&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;text&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-53&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-b        批处理
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-c        显示完整的治命令
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-I        忽略失效过程
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-s        保密模式
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-S        累积模式
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-i&amp;lt;时间&amp;gt;   设置间隔时间
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-u&amp;lt;用户名&amp;gt; 指定用户名
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-p&amp;lt;进程号&amp;gt; 指定进程
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-n&amp;lt;次数&amp;gt;   循环显示的次数&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Linux/Process/top.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Linux/Process/top.webp&#34;  data-sub-html=&#34;&lt;h2&gt;top 命令&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Linux/Process/top.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;top 命令&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;按 q 退出，按 h 进入帮助。&lt;/p&gt;
&lt;h3 id=&#34;实例-1&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%ae%9e%e4%be%8b-1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;实例&lt;/h3&gt;&lt;p&gt;将进程快照储存到文件中：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-54&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ top -b -n1 &amp;gt; /tmp/process.log&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;将结果通过邮件发送：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-55&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ top -b -n1 &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; mail -s &lt;span class=&#34;s1&#34;&gt;&amp;#39;Process snapshot&amp;#39;&lt;/span&gt; you@example.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;htop&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#htop&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;htop&lt;/h2&gt;&lt;p&gt;htop 是一个类似 top 的交互式进程查看工具，可以垂直和水平滚动来查看所有进程和他们的命令行。进程的相关操作(killing，renicing)不需要输入 PID。htop 一般需要自行安装。&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-56&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ htop&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Linux/Process/htop.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Linux/Process/htop.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Htop 命令&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Linux/Process/htop.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Htop 命令&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;atop&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#atop&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;atop&lt;/h2&gt;&lt;p&gt;atop 是一个用来查看 Linux 系统负载的交互式监控工具。它能展现系统层级的关键硬件资源(从性能角度)的使用情况，如 CPU、内存、硬盘和网络。&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-57&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ atop&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Linux/Process/atop.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Linux/Process/atop.webp&#34;  data-sub-html=&#34;&lt;h2&gt;atop 命令&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Linux/Process/atop.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;atop 命令&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] &lt;a href=&#34;https://os.51cto.com/art/201101/244090.htm&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;如何在 Linux 中查看所有正在运行的进程&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[2] &lt;a href=&#34;https://www.cnblogs.com/peida/archive/2012/12/19/2824418.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;每天一个linux命令（41）：ps命令&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：物理信号</title>
      <link>https://www.techkoala.net/lte_physical_signals/</link>
      <pubDate>Thu, 20 Feb 2020 21:02:32 +0800</pubDate>
      
      <guid>https://www.techkoala.net/lte_physical_signals/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;LTE 物理信号详解&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;导频信号&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%af%bc%e9%a2%91%e4%bf%a1%e5%8f%b7&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;导频信号&lt;/h2&gt;&lt;h3 id=&#34;下行导频信号&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8b%e8%a1%8c%e5%af%bc%e9%a2%91%e4%bf%a1%e5%8f%b7&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;下行导频信号&lt;/h3&gt;&lt;p&gt;物理层定义了 3 种下行导频信号（Reference Signal，RS），包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;普通子帧的小区导频信号（Cell-specific RS，CRS）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;指的是小区在下行&lt;strong&gt;普通子帧&lt;/strong&gt;中&lt;strong&gt;全频带广播发送&lt;/strong&gt;的导频信号，该信号以&lt;strong&gt;小区为单位&lt;/strong&gt;，可以作为小区内用户进行&lt;strong&gt;下行测量&lt;/strong&gt;、&lt;strong&gt;同步&lt;/strong&gt;以及&lt;strong&gt;数据解调&lt;/strong&gt;的参考符号&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;MBSFN 导频信号&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;指的是小区在下行 &lt;strong&gt;MBSFN 子帧&lt;/strong&gt;中&lt;strong&gt;全频带广播发送&lt;/strong&gt;的导频符号，该信号以 &lt;strong&gt;MBSFN 小区&lt;/strong&gt;或&lt;strong&gt;小区集合为单位&lt;/strong&gt;，可以用作对&lt;strong&gt;广播／多播（Malticast/Broadcast）业务情况下的下行测量&lt;/strong&gt;、&lt;strong&gt;同步&lt;/strong&gt;以及&lt;strong&gt;数据解调&lt;/strong&gt;的参考符号&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;用户专用导频信号（UE-specific RS，又称为 DRS，Dedicated RS）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;指的是小区在下行&lt;strong&gt;普通子帧&lt;/strong&gt;中发送的&lt;strong&gt;用户专用&lt;/strong&gt;的导频信号，该信号以&lt;strong&gt;用户为单位&lt;/strong&gt;，通过高层信令指示是否发送了该信号并且用作&lt;strong&gt;用户下行数据解调&lt;/strong&gt;的参考符号。DRS 仅在承载该用户数据的资源块上传输。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;导频序列&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%af%bc%e9%a2%91%e5%ba%8f%e5%88%97&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;导频序列&lt;/h4&gt;&lt;p&gt;使用 &lt;code&gt;gold 序列&lt;/code&gt; 生成的&lt;code&gt;伪随机（PN）序列&lt;/code&gt;作为物理层下行导频信号（CRS/MBSFN RS/DRS）使用的复数序列，序列的数学表达式是：&lt;/p&gt;
&lt;center&gt;$r_{l,n_s}=\frac{1}{\sqrt{2}}(1-2c(2m))+j\frac{1}{\sqrt{2}}(1-2c(2m+1))$&lt;/center&gt;
&lt;p&gt;其中，$c(n)$是寄存器长度为 31 的 &lt;code&gt;gold 序列&lt;/code&gt;，生成的序列由初始值 &lt;code&gt;cinit&lt;/code&gt; 所确定。&lt;/p&gt;
&lt;p&gt;3 种下行导频信号，根据各自的特性，序列的初始值有相应的设置方法。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对于&lt;strong&gt;普通子帧的小区导频信号&lt;/strong&gt;，即 &lt;code&gt;CRS&lt;/code&gt;。信号的发送以小区为单位，每个小区有各自的导频序列，序列的初始值与 &lt;code&gt;小区 ID&lt;/code&gt;（$N_{ID}^{cell}$ ，0 ～ 503）相关。为了保证导频序列具有充分的随机性，在每个包含 &lt;code&gt;CRS&lt;/code&gt; 的 &lt;code&gt;OFDM&lt;/code&gt; 符号上，根据 &lt;code&gt;OFDM&lt;/code&gt; 符号的位置（时隙在无线帧中的编号 ns ：0 ～ 19、OFDM 符号在时隙内的序号：0 ～ 6/0 ～ 5）、小区使用的 &lt;code&gt;CP&lt;/code&gt; 选项（NCP =1/0：Normal CP/Extended CP）结合前面提到的 &lt;code&gt;小区 ID&lt;/code&gt;（$N_{ID}^{cell}$）共同确定该符号上所使用的 &lt;code&gt;CRS&lt;/code&gt; 导频序列的初始值。具体的数学表达式为：&lt;/li&gt;
&lt;/ul&gt;
&lt;center&gt;$c_{init}=2^{10}(7(n_s+1)+l+1)(2N_{ID}^{cell}+1)+2N_{ID}^{cell}+N_{CP}$&lt;/center&gt;
&lt;ul&gt;
&lt;li&gt;对于 &lt;strong&gt;MBSFN 导频信号&lt;/strong&gt;，信号的发送以 &lt;code&gt;MBSFN&lt;/code&gt; 小区／小区集合为单位。序列的初始值与 &lt;code&gt;MBSFN ID&lt;/code&gt; 相关，在每个包含 &lt;code&gt;MBSFN&lt;/code&gt; 导频的 &lt;code&gt;OFDM 符号&lt;/code&gt; 上，根据 &lt;code&gt;OFDM 符号&lt;/code&gt; 的位置和 &lt;code&gt;MBSFN ID&lt;/code&gt; 共同确定导频序列的初始值。具体的数学表达式为：&lt;/li&gt;
&lt;/ul&gt;
&lt;center&gt;$c_{init}=2^9(7(n_s+1)+l+1)(2N_{ID}^{MBSFN}+1)+N_{ID}^{MBSFN}$&lt;/center&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用户专用导频信号&lt;/strong&gt;，即 &lt;code&gt;DRS&lt;/code&gt;。信号的发送以用户为单位，每个用户有各自的导频。序列以子帧为单位进行初始化，在每个子帧的开始，根据 &lt;code&gt;子帧的位置&lt;/code&gt;、&lt;code&gt;小区 ID&lt;/code&gt;（alt ）以及 &lt;code&gt;用户的 RNTI&lt;/code&gt; 共同确定导频序列的初始值。具体的数学表达式为：&lt;/li&gt;
&lt;/ul&gt;
&lt;center&gt;$c_{init}=(\left\lfloor\frac{n_s}{2}\right\rfloor)(2N_{ID}^{cell}+1)2^{16}+n_{RNTI}$&lt;/center&gt;
&lt;h4 id=&#34;导频图案&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%af%bc%e9%a2%91%e5%9b%be%e6%a1%88&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;导频图案&lt;/h4&gt;&lt;p&gt;导频信号在&lt;strong&gt;时频域&lt;/strong&gt;的图案规定了放置导频符号的&lt;strong&gt;时频域资源位置&lt;/strong&gt;，LTE 物理层导频图案采用了&lt;strong&gt;二维&lt;/strong&gt;的设计方法，规定了下行各个天线端口（Antenna port）导频信号的时频域位置，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;普通子帧的小区公用导频信号&lt;/strong&gt;（CRS）支持 1 ～ 4 个发送天线使用的 Antenna port 0 ～ 3&lt;/li&gt;
&lt;li&gt;用于 &lt;strong&gt;MBSFN&lt;/strong&gt; 发送的 Antenna port 4&lt;/li&gt;
&lt;li&gt;用于&lt;strong&gt;用户专用导频&lt;/strong&gt;（DRS）的 Antenna port 5&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;小区公用导频信号&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%b0%8f%e5%8c%ba%e5%85%ac%e7%94%a8%e5%af%bc%e9%a2%91%e4%bf%a1%e5%8f%b7&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;小区公用导频信号&lt;/h5&gt;&lt;p&gt;小区公用导频信号支持&lt;strong&gt;最多 4 个&lt;/strong&gt;天线端口的发送（port 0 ～ 3）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对于前 2 个天线端口（port 0 ～ 1），每个时隙有 2 个 &lt;code&gt;OFDM&lt;/code&gt; 符号携带导频符号&lt;/li&gt;
&lt;li&gt;对于后 2 个天线端口（port 2 ～ 3），每个时隙有 1 个 &lt;code&gt;OFDM&lt;/code&gt; 符号携带导频符号&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在每个 &lt;code&gt;OFDM&lt;/code&gt; 符号内导频符号的频域间隔为 6 个子载波，采用交错放置的方式。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_14.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_14.webp&#34;  data-sub-html=&#34;&lt;h2&gt;下行正常子帧小区导频信号图案（CRS）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_14.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;下行正常子帧小区导频信号图案（CRS）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;为了避免同基站不同发射天线端口之间导频与数据的干扰，在某一天线端口的导频位置上，同一基站的其他天线端口空出相应的时频资源。小区 CRS 导频子载波在频域的&lt;strong&gt;绝对位置&lt;/strong&gt;与小区 ID &lt;strong&gt;相关&lt;/strong&gt;，因此不同小区之间形成频域的&lt;strong&gt;相对偏移&lt;/strong&gt;，避免&lt;strong&gt;不同小区&lt;/strong&gt;的导频之间的&lt;strong&gt;同频干扰&lt;/strong&gt;。&lt;/p&gt;
&lt;h5 id=&#34;mbsfn-导频&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#mbsfn-%e5%af%bc%e9%a2%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;MBSFN 导频&lt;/h5&gt;&lt;p&gt;&lt;code&gt;MBSFN&lt;/code&gt; 导频采用单天线端口的发送，即 port 4。由于 MBSFN 广播／多播的业务特性，较大的小区半径和多小区信号的合并带来的时延扩展增加了无线信道的频率选择性。为了适应这样的特点，导频采用&lt;strong&gt;较小的频域间隔&lt;/strong&gt;，即每 2 个子载波放置 1 个导频符号（在 MBSFN 专用载波采用 7.5kHz 子载波间隔时，每 4 个子载波放置 1 个导频符号）。另外，根据广播业务的移动性特点，适当地降低了导频信号在时间上的密度。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_15.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_15.webp&#34;  data-sub-html=&#34;&lt;h2&gt;下行 MBSFN 导频图案&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_15.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;下行 MBSFN 导频图案&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;&lt;code&gt;MBSFN&lt;/code&gt; 导频&lt;strong&gt;只&lt;/strong&gt;支持在 &lt;code&gt;Extended CP&lt;/code&gt; 情况下发送。MBSFN 导频子载波在频域的&lt;strong&gt;绝对位置&lt;/strong&gt;与小区 ID &lt;strong&gt;无关&lt;/strong&gt;，&lt;strong&gt;各小区&lt;/strong&gt;导频在&lt;strong&gt;相同的频域位置&lt;/strong&gt;，实现 MBSFN 集合内的&lt;strong&gt;不同小区&lt;/strong&gt;导频信号的&lt;strong&gt;宏分集接收&lt;/strong&gt;。&lt;/p&gt;
&lt;h5 id=&#34;用户专用导频&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%94%a8%e6%88%b7%e4%b8%93%e7%94%a8%e5%af%bc%e9%a2%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;用户专用导频&lt;/h5&gt;&lt;p&gt;LTE Release 8 中用户专用导频信号采用&lt;strong&gt;单天线端口&lt;/strong&gt;的发送，即天线端口 5。通过高层信令的指示，通知终端在数据传输中是否使用了用户专用导频，以及终端是否应该使用用户专用导频进行下行数据的解调。（DRS 主要用于支持下行波束赋形，即 BeamForming 操作）&lt;/p&gt;
&lt;p&gt;在发送 &lt;code&gt;UE specific&lt;/code&gt; 的专用导频时，保持&lt;strong&gt;小区公用导频信号&lt;/strong&gt;（CRS）不变，插入用户专用导频符号，每个 &lt;code&gt;PRB pair&lt;/code&gt; 中发送 12 个用户专用导频符号。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_16.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_16.webp&#34;  data-sub-html=&#34;&lt;h2&gt;下行用户专用导频图案&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_16.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;下行用户专用导频图案&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;用户专用导频子载波在频域的&lt;strong&gt;绝对位置&lt;/strong&gt;与小区 ID &lt;strong&gt;相关&lt;/strong&gt;，因此不同小区之间形成频域的相对偏移，避免导频之间的&lt;strong&gt;同频干扰&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;在专用导频与物理信道／信号（PBCH/PSS/SSS）&lt;strong&gt;发生位置冲突&lt;/strong&gt;的时候，将&lt;strong&gt;丢弃&lt;/strong&gt;冲突位置的专用导频的传输，即对专用导频进行&lt;strong&gt;打孔&lt;/strong&gt;。因为仅在有数据发送时才进行 &lt;code&gt;DRS&lt;/code&gt; 的传输，而小区导频 &lt;code&gt;CRS&lt;/code&gt; 是&lt;strong&gt;始终&lt;/strong&gt;在传输的，因此，即使用户数据的发送使用了 &lt;code&gt;DRS&lt;/code&gt;，用户对于下行信道质量，即 &lt;code&gt;CQI&lt;/code&gt; 的测量将&lt;strong&gt;始终&lt;/strong&gt;基于小区 &lt;code&gt;CRS&lt;/code&gt; 导频。&lt;/p&gt;
&lt;h3 id=&#34;上行导频信号&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8a%e8%a1%8c%e5%af%bc%e9%a2%91%e4%bf%a1%e5%8f%b7&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;上行导频信号&lt;/h3&gt;&lt;p&gt;物理层定义了两种上行导频信号，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;数据解调导频（DeModulation RS，DMRS）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;指的是终端在&lt;strong&gt;上行共享信道&lt;/strong&gt;或者&lt;strong&gt;上行控制信道&lt;/strong&gt;（PUSCH/PUCCH）中发送的导频信号，用于基站接收上行数据／控制信息时进行解调的参考符号&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sounding 导频（Sounding RS，SRS）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;指的是终端在上行发送的用于&lt;strong&gt;信道状态测量&lt;/strong&gt;的导频信号，基站通过接收该信号测量上行信道的状态，相关的信息用于对上行数据传输的自适应调度。在 &lt;code&gt;TDD&lt;/code&gt; 的情况下，由于同频段上下行信道的对称性，通过对上行 &lt;code&gt;SRS&lt;/code&gt; 的测量还可以获得下行信道状态的信息，可用于辅助下行传输&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;导频序列-1&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%af%bc%e9%a2%91%e5%ba%8f%e5%88%97-1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;导频序列&lt;/h4&gt;&lt;p&gt;使用具有&lt;strong&gt;衡包络零自相关&lt;/strong&gt;（ConstantAmplitude ZeroAutoCorrelation，CAZAC）特性的序列作为上行导频序列（DMRS/SRS），长度为 $M_{SC}^{RS}$ 的导频序列的数学表达式为：&lt;/p&gt;
&lt;center&gt;$r_{u,v}^{(α)}=e^{jan}\bar{r}_{u,v}(n) , 0\leqslant n \leqslant M_{SC}^{RS}-1$&lt;/center&gt;
&lt;p&gt;其中 $\bar{r}_{u,v}(n)$ 表示基序列，由&lt;code&gt;基序列组的编号 u&lt;/code&gt;和&lt;code&gt;组内的基序列编号 v&lt;/code&gt;共同确定。$α$ 是对基序列的&lt;strong&gt;循环移位&lt;/strong&gt;（Cyclic Shift），相同基序列的不同移位将形成不同的导频序列。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;对于长度大于或者等于 36 的导频序列，使用长度为质数的 &lt;code&gt;Zadoff-Chu&lt;/code&gt; 序列生成基序列，以保证良好的自相关和互相关特性，序列的数学表达式是：&lt;/p&gt;
&lt;center&gt;$\bar{r}_{u,v}(n)=x_q(n mod N_{ZC}^{RS} , 0\leqslant n \leqslant M_{SC}^{RS}-1$&lt;/center&gt;
&lt;p&gt;其中 $x_q$ 是序号为 q、长度是 $N_{ZC}^{RS}$ 的 &lt;code&gt;Zadoff-Chu&lt;/code&gt; 根序列，即 $x_q(m)=e^-j\frac{\pi qm(m+1)}{N_{ZC}^{RS}}$ 。序号 q 由基序列的编号 $\frac{u}{v}$ 确定，长度 $N_{ZC}^{RS}$ 是小于导频序列长度 $M_{SC}^{RS}$ 的最大质数。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对于长度小于 36，即长度为 12 或者 24 的导频序列，使用计算机搜索的方法以获得自相关／互相关特性最优的序列。序列的数学表达式为：&lt;/p&gt;
&lt;center&gt;$\bar{r}_{u,v}(n)=e^{jϕ（n）\pi/4} , 0\leqslant n \leqslant M_{SC}^{RS}-1$&lt;/center&gt;
&lt;p&gt;其中 $ϕ(n)$采用计算机搜索的方式进行查找，在标准中以列表的形式给出了确定的数值。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;导频图案-1&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%af%bc%e9%a2%91%e5%9b%be%e6%a1%88-1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;导频图案&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;上行解调导频&lt;/strong&gt;（DMRS）在用户发送数据或者控制信息的资源上发送
&lt;ul&gt;
&lt;li&gt;在共享信道 &lt;code&gt;PUSCH&lt;/code&gt; 上，每个时隙内 &lt;code&gt;DMRS&lt;/code&gt; 占用 1 个 &lt;code&gt;OFDM&lt;/code&gt; 符号&lt;/li&gt;
&lt;li&gt;在控制信道 PUCCH 上，根据控制信息格式的不同，每个时隙内 DMRS 占用 2 ～ 3 个 OFDM 符号。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上行 Sounding 导频&lt;/strong&gt;（SRS）与用户发送数据的资源位置&lt;strong&gt;无关&lt;/strong&gt;，由系统调度，终端在预定义的、需要进行测量的频率位置上进行发送，发送时将占用子帧的最后一个 &lt;code&gt;OFDM&lt;/code&gt; 符号，小区内不同用户在相同时刻发送的 &lt;code&gt;SRS&lt;/code&gt; 采用频分和码分（基序列不同的循环移位）的方式进行区分。&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;上行共享信道-pusch-的解调导频&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8a%e8%a1%8c%e5%85%b1%e4%ba%ab%e4%bf%a1%e9%81%93-pusch-%e7%9a%84%e8%a7%a3%e8%b0%83%e5%af%bc%e9%a2%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;上行共享信道 PUSCH 的解调导频&lt;/h5&gt;&lt;p&gt;上行共享信道 &lt;code&gt;PUSCH&lt;/code&gt; 的解调导频在每个时隙内占用 1 个 &lt;code&gt;OFDM&lt;/code&gt; 符号，在用户发送上行数据的资源上发送，用于共享信道（PUSCH）数据的解调。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_17.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_17.webp&#34;  data-sub-html=&#34;&lt;h2&gt;上行 PUSCH 数据解调导频&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_17.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;上行 PUSCH 数据解调导频&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;每个时隙的导频符号采用 12 或者 24 的导频序列。其中 $M_{SC}^{RS}$ 是导频序列的长度，等于频域子载波的个数。导频序列由小区在该时隙的上行导频基序列 $\bar{r}_{u,v}(n)$ 和本次发送采用的循环移位 $α$共同确定。&lt;/p&gt;
&lt;h5 id=&#34;上行控制信道-pucch-的解调导频&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8a%e8%a1%8c%e6%8e%a7%e5%88%b6%e4%bf%a1%e9%81%93-pucch-%e7%9a%84%e8%a7%a3%e8%b0%83%e5%af%bc%e9%a2%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;上行控制信道 PUCCH 的解调导频&lt;/h5&gt;&lt;p&gt;上行控制信道 &lt;code&gt;PUCCH&lt;/code&gt; 的解调导频根据上行控制信道格式的不同在每个时隙内占用 2 或者 3 个 &lt;code&gt;OFDM&lt;/code&gt; 符号，用于控制信道（PUCCH）数据的解调。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;PUCCH &lt;/code&gt;格式 1/1a/1b 的导频发送格式。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_18.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_18.webp&#34;  data-sub-html=&#34;&lt;h2&gt;PUCCH Format1/1a/1b 的解调导频（Normal CP）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_18.webp&#39;  
            &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;PUCCH Format1/1a/1b 的解调导频（Normal CP）&lt;/figcaption&gt;
      &lt;/figure&gt;
&lt;p&gt;其中 $\bar{w}(m)$ 是长度为 3 的正交扩频序列。$r_{u,v}^{\alpha}$ 表示基序列序号为 $u,v$，循环移位为 $α$ 的导频序列，长度是 12，映射在 1 个 PRB 内的子载波上。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PUCCH&lt;/code&gt; Format1/1a/1b 中导频映射的过程包括：时隙内采用正交序列的块扩频，然后与长度为 12 的导频 &lt;code&gt;CACAZ&lt;/code&gt; 序列相乘，最后映射在上行控制信息 &lt;code&gt;PUCCH&lt;/code&gt; 所对应的 &lt;code&gt;PRB&lt;/code&gt; 资源的 12 个子载波上。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PUCCH 格式 2/2a/2b 的导频发送格式。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_19.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_19.webp&#34;  data-sub-html=&#34;&lt;h2&gt;PUCCH Format2/2a/2b 的解调导频（Normal CP）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_19.webp&#39;  
            &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;PUCCH Format2/2a/2b 的解调导频（Normal CP）&lt;/figcaption&gt;
      &lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;上行-sounding-导频信号&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8a%e8%a1%8c-sounding-%e5%af%bc%e9%a2%91%e4%bf%a1%e5%8f%b7&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;上行 Sounding 导频信号&lt;/h5&gt;&lt;p&gt;上行 Sounding 导频信号的发送与上行物理信道&lt;strong&gt;无关&lt;/strong&gt;，是独立的的上行信号，根据&lt;strong&gt;预定义&lt;/strong&gt;的周期、终端在需要进行信道测量的频域位置上进行发送。&lt;/p&gt;
&lt;p&gt;上行 Sounding 导频（SRS）在子帧的最后一个 &lt;code&gt;OFDM&lt;/code&gt; 符号上发送。在每个小区，采用配置小区 &lt;code&gt;SRS&lt;/code&gt; 子帧周期 &lt;code&gt;TSFC&lt;/code&gt; 和偏移量 &lt;code&gt;∆SFC&lt;/code&gt; 的方式，定义了小区内可用于发送上行 Sounding 导频符号的子帧时间位置，标准中列表给出了各种可能的配置选项，在系统广播消息 SIB 中使用 4 个比特进行指示。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;例如，假设配置 $T_{SFC} =5，∆SFC ={0,1}$，那么小区 &lt;code&gt;SRS&lt;/code&gt; 子帧的时间位置如图所示。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_20.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_20.webp&#34;  data-sub-html=&#34;&lt;h2&gt;小区的 SRS 子帧时间位置&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_20.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;小区的 SRS 子帧时间位置&lt;/figcaption&gt;
    &lt;/figure&gt;

&lt;/blockquote&gt;&lt;p&gt;在定义小区 &lt;code&gt;SRS &lt;/code&gt;子帧位置的基础上，采用类似的方法进一步定义了小区内某个用户发送上行 SRS 导频的子帧位置，即通过配置用户发送 &lt;code&gt;SRS&lt;/code&gt; 导频的子帧周期 &lt;code&gt;TSRS&lt;/code&gt; 和偏移量 &lt;code&gt;Toffset&lt;/code&gt; ，可以确定该用户发送上行 &lt;code&gt;SRS&lt;/code&gt; 导频的子帧位置。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;假设，在以上举例的小区 SRS 子帧配置的基础上，配置用户 x 的 $T_{SRS} =10，Toffset =1$，可以得到该用户 SRS 导频的发送时间位置如图所示。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_21.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_21.webp&#34;  data-sub-html=&#34;&lt;h2&gt;用户的 SRS 子帧时间位置&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_21.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;用户的 SRS 子帧时间位置&lt;/figcaption&gt;
    &lt;/figure&gt;

&lt;/blockquote&gt;&lt;p&gt;Sounding 导频（SRS）使用与解调导频相似的基序列生成方法，只是它的循环移位的数值改由高层信令&lt;strong&gt;直接进行配置&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;在导频序列向物理资源的映射上，&lt;code&gt;SRS&lt;/code&gt; 导频采用 2 个子载波的频域间隔，形成&lt;strong&gt;梳状&lt;/strong&gt;的&lt;strong&gt;频域结构&lt;/strong&gt;，根据起始位置的不同（奇数或者偶数，kTC =0/1），可以频分复用 2 个&lt;strong&gt;梳状&lt;/strong&gt;。相同的&lt;strong&gt;梳状&lt;/strong&gt;内可以通过基序列不同的循环移位（8 种），以码分的方式进行更多的复用。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_22.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_22.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Sounding 导频图案&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_22.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Sounding 导频图案&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;其中 &lt;code&gt;SRS&lt;/code&gt; 导频带宽 $m_{SRS,b}$ 以资源块（RB）为单位，并且是 4 的整数倍。同时，可以容易地看出，导频序列的长度是 SRS 导频所占用子载波宽度的一半。&lt;/p&gt;
&lt;h2 id=&#34;同步信号psssss&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%90%8c%e6%ad%a5%e4%bf%a1%e5%8f%b7psssss&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;同步信号（PSS/SSS）&lt;/h2&gt;&lt;p&gt;下行同步信号用于支持物理层的小区搜索，实现用户终端对小区的识别以及对系统下行信号的频率和时间同步。&lt;/p&gt;
&lt;p&gt;同步信号包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;主同步信号（Primary Synchronization Signal，PSS）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;辅同步信号（Secondary Synchronization Signal，SSS）&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;PSS&lt;/code&gt; 和 &lt;code&gt;SSS&lt;/code&gt; 的传输周期都是 &lt;code&gt;5ms&lt;/code&gt;，每个同步信号的时间长度为 1 个 &lt;code&gt;OFDM&lt;/code&gt; 符号，在频域上占用下行频带中心 &lt;code&gt;1.08MHz&lt;/code&gt; 的带宽。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PSS&lt;/code&gt;/&lt;code&gt;SSS&lt;/code&gt; 信号使用的序列与物理层小区 &lt;code&gt;ID&lt;/code&gt; 相关，因此可用于终端对&lt;strong&gt;小区的识别&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;物理层支持 504 个小区 ID：分为 168 个组（0 ～ 167），每个组包含 3 个小区 ID（0 ～ 2）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主同步信号 PSS 序列包含 3 种可能性，指示小区的组内 ID&lt;/li&gt;
&lt;li&gt;辅同步信号 SSS 序列包含 168 种可能性，指示小区的组 ID&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;FDD Type 1&lt;/code&gt; 和 &lt;code&gt;TDD Type 2&lt;/code&gt; 帧结构中，同步信号具有不同的时间位置。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 &lt;code&gt;FDD Type 1&lt;/code&gt; 帧结构中，PSS/SSS 信号位于第 0 和第 5 子帧&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;TDD Type 2&lt;/code&gt; 中，&lt;code&gt;PSS&lt;/code&gt; 信号位于第 1 和第 6 子帧（即特殊子帧），&lt;code&gt;SSS&lt;/code&gt; 信号位于第 0 和第 5 子帧。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此，两种帧结构下 &lt;code&gt;PSS&lt;/code&gt; 与 &lt;code&gt;SSS&lt;/code&gt; 的&lt;strong&gt;相对位置有所不同&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;FDD Type 1&lt;/code&gt; 帧结构中，&lt;code&gt;PSS&lt;/code&gt;/&lt;code&gt;SSS&lt;/code&gt; 位于两个&lt;strong&gt;连续&lt;/strong&gt;的 &lt;code&gt;OFDM&lt;/code&gt; 符号&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TDD Type 2&lt;/code&gt; 帧结构中，&lt;code&gt;PSS&lt;/code&gt;/&lt;code&gt;SSS&lt;/code&gt; 之间有两个 &lt;code&gt;OFDM&lt;/code&gt; 符号的&lt;strong&gt;间隔&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种同步信号相对位置的区别，可用于终端在小区搜索的最初阶段&lt;strong&gt;检测&lt;/strong&gt; LTE 系统的&lt;strong&gt;双工方式&lt;/strong&gt;。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_23.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_23.webp&#34;  data-sub-html=&#34;&lt;h2&gt;LTE 下行同步信号（FDD Type 1 帧结构）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_23.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;LTE 下行同步信号（FDD Type 1 帧结构）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_24.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_24.webp&#34;  data-sub-html=&#34;&lt;h2&gt;LTE 下行同步信号（TDD Type 2 帧结构）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_24.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;LTE 下行同步信号（TDD Type 2 帧结构）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;&lt;code&gt;PSS&lt;/code&gt; 和 &lt;code&gt;SSS&lt;/code&gt; 在&lt;strong&gt;相同&lt;/strong&gt;的某一根&lt;strong&gt;天线&lt;/strong&gt;上发送，对于各种&lt;strong&gt;不同的系统带宽&lt;/strong&gt;（1.4MHz、3MHz、5MHz、10MHz、15MHz、20MHz），同步信号的传输带宽&lt;strong&gt;相同&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;占用频带中心的 &lt;code&gt;1.08MHz&lt;/code&gt; 带宽，其中同步序列占用 62 个子载波，两边各预留 5 个子载波作为保护带。&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_25.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_25.webp&#34;  data-sub-html=&#34;&lt;h2&gt;同步信号 PSS/SSS 频域结构&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_25.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;同步信号 PSS/SSS 频域结构&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] LTE-Advanced 关键技术详解&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：多天线技术（MIMO）</title>
      <link>https://www.techkoala.net/lte_mimo/</link>
      <pubDate>Sat, 01 Feb 2020 20:33:29 +0800</pubDate>
      
      <guid>https://www.techkoala.net/lte_mimo/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;LTE 多天线技术（MIMO）详解&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;多天线技术mimo&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%a4%9a%e5%a4%a9%e7%ba%bf%e6%8a%80%e6%9c%afmimo&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;多天线技术（MIMO）&lt;/h2&gt;&lt;p&gt;在收到信道编码后的数据（codeword）之后，物理层进一步的处理过程包括&lt;code&gt;加扰&lt;/code&gt;、&lt;code&gt;调制&lt;/code&gt;、&lt;code&gt;层映射&lt;/code&gt;、&lt;code&gt;预编码&lt;/code&gt;（precoding）以及针对各个物理天线端口的&lt;code&gt;资源映射&lt;/code&gt;和 &lt;code&gt;OFDM&lt;/code&gt; 信号生成的过程。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_9.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_9.webp&#34;  data-sub-html=&#34;&lt;h2&gt;物理层数据处理过程&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_9.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;物理层数据处理过程&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;加扰操作是指使用扰码对经过信道编码后的数据进行&lt;strong&gt;逐比特的加扰&lt;/strong&gt;，实现数据间&lt;strong&gt;干扰的随机化&lt;/strong&gt;。采用&lt;strong&gt;伪随机码&lt;/strong&gt;作为&lt;strong&gt;扰码&lt;/strong&gt;，在每个子帧的起始位置，根据 &lt;code&gt;RNTI&lt;/code&gt;（Radio Network Temporary Identifier）、&lt;code&gt;Cell ID&lt;/code&gt;、&lt;code&gt;Codeword&lt;/code&gt; 的编号以及无线帧内的时隙编号等信息，对扰码的 &lt;code&gt;PN 序列&lt;/code&gt; 进行初始化。&lt;/li&gt;
&lt;li&gt;调制指的是对比特数据进行复数调制，包括 &lt;code&gt;QPSK&lt;/code&gt;、&lt;code&gt;16QAM&lt;/code&gt; 或者 &lt;code&gt;64QAM&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在完成调制后，物理层的基带处理过程将进行 MIMO 相关的处理，包括 &lt;code&gt;层映射&lt;/code&gt; 和 &lt;code&gt;预编码&lt;/code&gt; 。LTE Release 8 版本支持不同的发射天线数目（1 / 2 / 4），以及多种不同的 MIMO 方案，包括&lt;code&gt;单天线发送&lt;/code&gt;、&lt;code&gt;空间复用&lt;/code&gt;和&lt;code&gt;发送分集&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;层映射&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%b1%82%e6%98%a0%e5%b0%84&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;层映射&lt;/h3&gt;&lt;p&gt;层映射实现信道编码之后的&lt;strong&gt;码字&lt;/strong&gt;（Codeword）向空间多天线形成的多个&lt;strong&gt;层&lt;/strong&gt;（layer）之间的映射。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对于单天线的情况，直观地可以得到：物理层使用 1 个码字，并且这个码字直接映射到单天线的 1 个层上&lt;/li&gt;
&lt;li&gt;对于多天线实现空间复用的情况，当空间复用的层数目大于 1 的时候，可以同时发送 2 个码字&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
  &lt;p&gt;以 4×4 天线配置的情况为例，根据无线信道的情况可以支持 1、2、3 或者 4 个层的空间复用，当空间复用的层数目大于 1 的时候，可以将 2 个码字映射在这些层上采用空间复用的方式同时进行发送。对于发送分集的情况，使用 1 个码字，按照发送天线数目的不同（2 或者 4），对应于 2 或者 4 个层，此时这 1 个码字将以逐比特转换的方式映射到这些层上。&lt;/p&gt;

&lt;/blockquote&gt;&lt;h3 id=&#34;预编码&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%a2%84%e7%bc%96%e7%a0%81&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;预编码&lt;/h3&gt;&lt;p&gt;预编码（precoding）实现&lt;strong&gt;层&lt;/strong&gt;到&lt;strong&gt;物理天线端口&lt;/strong&gt;的&lt;strong&gt;映射&lt;/strong&gt;。物理层使用不同的预编码方案，实现不同的 &lt;code&gt;MIMO&lt;/code&gt; 模式：&lt;code&gt;单天线发送&lt;/code&gt;、&lt;code&gt;空间复用&lt;/code&gt;或者&lt;code&gt;发送分集&lt;/code&gt;。&lt;/p&gt;
&lt;h4 id=&#34;单天线发送&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8d%95%e5%a4%a9%e7%ba%bf%e5%8f%91%e9%80%81&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;单天线发送&lt;/h4&gt;&lt;p&gt;对于单天线发送的情况，直观的可以得出，1 个&lt;strong&gt;层&lt;/strong&gt;将直接映射到 1 个&lt;strong&gt;物理天线端口&lt;/strong&gt;上。&lt;/p&gt;
&lt;h4 id=&#34;空间复用&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%a9%ba%e9%97%b4%e5%a4%8d%e7%94%a8&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;空间复用&lt;/h4&gt;&lt;p&gt;对于多天线实现空间复用的情况，LTE 中采用基于&lt;code&gt;码本&lt;/code&gt;（codebook）进行预编码向量选择的机制，分为&lt;code&gt;开环&lt;/code&gt;和&lt;code&gt;闭环&lt;/code&gt;两种复用传输模式，分别采用&lt;code&gt;无循环延迟的预编码&lt;/code&gt;和&lt;code&gt;大循环延迟的预编码&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;在 2 个发送天线的情况时，基站一般使用&lt;strong&gt;线性阵列&lt;/strong&gt;（Uniform LinearArray，ULA）的天线配置，因此，相对应地采用基于 DFT 正交距阵的码本设计方法。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对应于 1 个&lt;strong&gt;层&lt;/strong&gt;的传输，设计了 4 个可供选择的预编码向量&lt;/li&gt;
&lt;li&gt;对应于 2 个&lt;strong&gt;层&lt;/strong&gt;的传输，设计了 3 个可供选择的预编码向量。&lt;/li&gt;
&lt;li&gt;对于 4 个发送天线的情况，天线的部署要更为复杂，实际情况下可能不使用线性阵列的天线配置，而采用例如双极化天线
所以，基于对各种场景下的性能和复杂度等因素的综合考虑，选择了采用基于 &lt;code&gt;householder 变换&lt;/code&gt; 的码本设计方法。对应于 1/2/3/4 个&lt;strong&gt;层&lt;/strong&gt;的传输，均有 16 个可供选择的预编码向量。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;预编码向量选取常用的两个准则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;信噪比最大化&lt;/strong&gt;，对应于容量最大化。将每个可选择的项代入，得到一个等效信道矩阵，计算等效信噪比，选择对应 SNR 最大的向量元素。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最小码距&lt;/strong&gt;，对应于最小误码率。计算信道信息给出的加权矩阵与码本中元素的距离，选择距离最小的作为预编码向量。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;无循环延迟的预编码&lt;/code&gt;用于&lt;code&gt;闭环&lt;/code&gt;的 MIMO 空间复用。闭环模式下，终端通过对下行信道状态的测量选择适当的空间复用的层数目，并且从码本集合中选择预编码向量，分别表示为 &lt;code&gt;RI&lt;/code&gt;（Rank Indicator）和 &lt;code&gt;PMI&lt;/code&gt;（Precoding Matrix Indicator）的形式&lt;strong&gt;通过上行链路反馈给基站&lt;/strong&gt;。基站根据这些信息进行预测，确定随后的下行发送中将采用的空间复用方案（包括采用的层数目和预编码向量）。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;大循环延迟的预编码&lt;/code&gt;用于&lt;code&gt;开环&lt;/code&gt;的 MIMO 空间复用。开环模式下，终端&lt;strong&gt;不再向基站反馈&lt;/strong&gt;预编码向量 &lt;code&gt;PMI&lt;/code&gt; 的信息，但仍可以根据基站的配置测量并且&lt;strong&gt;反馈&lt;/strong&gt;下行信道的 &lt;code&gt;RI&lt;/code&gt; 信息，即空间复用的层数目。基站根据终端上报的 &lt;code&gt;RI&lt;/code&gt; 信息或者自行确定的层数目，选择在下行发送中所采用的预编码方案，包括采用发送分集，或者空间复用以及相应的层数目。&lt;/p&gt;
&lt;p&gt;在开环空间复用中，采用的预编码向量是&lt;strong&gt;固定&lt;/strong&gt;的。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在使用 2 个发送天线的情况下
&lt;ul&gt;
&lt;li&gt;当选择层数目 RI=1 时，采用发送分集的预编码方案。&lt;/li&gt;
&lt;li&gt;当选择 RI=2 时，采用对应码本的第一个元素，即 $W(i)=\frac{1}{\sqrt{2}}\begin{bmatrix}1&amp;amp;0 \\ 0&amp;amp;1\end{bmatrix}$ 作为预编码向量。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;在使用 4 个发送天线的情况下
&lt;ul&gt;
&lt;li&gt;当选择层数目 RI=1 时，采用发送分集的预编码方案&lt;/li&gt;
&lt;li&gt;当选择 RI=2/3/4 时，采用对应的码本，以发送时刻为单位，固定的循环使用码本中序号为 12/13/14/15 的元素作为预编码向量。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于&lt;code&gt;大循环延迟的预编码&lt;/code&gt;，除了预编码向量 $W (i)$ 之外，有两个用于完成循环延迟（Cyclic Delay Diversity，CDD）功能的矩阵，即 $U$ 和 $D (i)$。&lt;/p&gt;
&lt;p&gt;假设层数目为 v，那么这两个矩阵的大小都是 $v×v$ 的，其中&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$U$ 是 &lt;code&gt;DFT 矩阵&lt;/code&gt;，通过对输入信号进行 &lt;code&gt;DFT&lt;/code&gt; 变换实现&lt;code&gt;层&lt;/code&gt;到&lt;code&gt;虚拟天线&lt;/code&gt;的映射，将每个层的信号能量均匀地分布在虚拟天线上&lt;/li&gt;
&lt;li&gt;$D (i)$是 &lt;code&gt;CDD 矩阵&lt;/code&gt;，实现虚拟天线间增量为 $\frac{1}{v}$ 的时延。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;发送分集&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%91%e9%80%81%e5%88%86%e9%9b%86&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;发送分集&lt;/h4&gt;&lt;p&gt;对于多天线实现发送分集的情况，分别采用 &lt;code&gt;SFBC&lt;/code&gt;（Space Frequency Block Codiing）和 &lt;code&gt;SFBC+FSTD&lt;/code&gt;（Frequency Switched Transmit Diversity）的方案支持 2 和 4 个发送天线的场景。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 2 个发送天线时，使用 SFBC 的发送分集方案，实现“层”到物理天线映射的预编码操作。&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_10.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_10.webp&#34;  data-sub-html=&#34;&lt;h2&gt;SFBC 发送分集&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_10.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;SFBC 发送分集&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;在 4 个发送天线时，使用 SFBC+FSTD 的发送分集方案。相应地，实现层到物理天线映射的预编码操作可以表示为下图所示的形式，即 SFBC 结合 FSTD 在天线间频域的位置转换。&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_11.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_11.webp&#34;  data-sub-html=&#34;&lt;h2&gt;SFBC&amp;#43;FSTD 发送分集&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_11.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;SFBC+FSTD 发送分集&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] LTE-Advanced 关键技术详解&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：编码、复用和交织</title>
      <link>https://www.techkoala.net/lte_encoding_multiplexing_and_interleaving/</link>
      <pubDate>Fri, 10 Jan 2020 20:54:23 +0800</pubDate>
      
      <guid>https://www.techkoala.net/lte_encoding_multiplexing_and_interleaving/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;LTE 数据的编码、复用和交织&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;数据的编码复用和交织&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%95%b0%e6%8d%ae%e7%9a%84%e7%bc%96%e7%a0%81%e5%a4%8d%e7%94%a8%e5%92%8c%e4%ba%a4%e7%bb%87&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;数据的编码、复用和交织&lt;/h2&gt;&lt;p&gt;为了进行传输信道向物理信道的映射，提高数据传输的性能，并且将数据是否正确传输的情况向高层报告，物理层需要对传输信道的数据进行一系列信道编码相关的处理，通常的过程包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;码字 &lt;code&gt;CRC&lt;/code&gt; 计算&lt;/li&gt;
&lt;li&gt;码块分割和码块 &lt;code&gt;CRC&lt;/code&gt; 计算&lt;/li&gt;
&lt;li&gt;码块信道编码&lt;/li&gt;
&lt;li&gt;码块交织和速率匹配&lt;/li&gt;
&lt;li&gt;码块连接的过程&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_4.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_4.webp&#34;  data-sub-html=&#34;&lt;h2&gt;传输块物理层信道编码的过程&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_4.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;传输块物理层信道编码的过程&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;crc-计算&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#crc-%e8%ae%a1%e7%ae%97&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;CRC 计算&lt;/h3&gt;&lt;p&gt;循环冗余校验码（Cyclic Redundancy Check，CRC）是数据通信领域中最常用的一种差错校验码，接收端通过对所接收到的数据信息和相应的 CRC 信息进行校验，可以判断接收到的数据是否正确。&lt;/p&gt;
&lt;p&gt;物理层提供了 4 种 CRC 计算方法，分别用于不同信息的处理过程，其中包括 2 种长度为 24 比特的 &lt;code&gt;CRC&lt;/code&gt; 计算方法，1 种长度为 16 比特的 &lt;code&gt;CRC&lt;/code&gt; 计算方法，和 1 种长度为 8 比特的 &lt;code&gt;CRC&lt;/code&gt; 计算方法。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;长度为 24 比特的 &lt;code&gt;CRC&lt;/code&gt; 用于&lt;code&gt;下行共享信道（DL-SCH）&lt;/code&gt;、&lt;code&gt;寻呼信道（PCH&lt;/code&gt;）、&lt;code&gt;多播信道（MCH）&lt;/code&gt;和&lt;code&gt;上行共享信道（UL-SCH）&lt;/code&gt;等传输信道信息的处理过程&lt;/li&gt;
&lt;li&gt;长度为 16 比特的 &lt;code&gt;CRC&lt;/code&gt; 用于&lt;code&gt;广播信道（BCH）&lt;/code&gt;和&lt;code&gt;下行控制信息（DCI）&lt;/code&gt;的处理过程&lt;/li&gt;
&lt;li&gt;长度为 8 比特的 &lt;code&gt;CRC&lt;/code&gt; 用于&lt;code&gt;上行控制信息（UCI）&lt;/code&gt;在&lt;code&gt;上行物理共享信道（PUSCH）&lt;/code&gt;中传输时可能需要的 &lt;code&gt;CRC&lt;/code&gt; 操作，对应的计算多项式为：&lt;/li&gt;
&lt;/ul&gt;
&lt;center&gt;$gCRC8 (D)=[D8 +D7 +D4 +D3 +D+1]$&lt;/center&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_5.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_5.webp&#34;  data-sub-html=&#34;&lt;h2&gt;CRC 计算（gCRC8）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_5.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;CRC 计算（gCRC8）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;码块分割&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%a0%81%e5%9d%97%e5%88%86%e5%89%b2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;码块分割&lt;/h3&gt;&lt;p&gt;传输信道中的 1 个&lt;code&gt;传输块&lt;/code&gt;（transport block）对应于物理层的 1 个&lt;code&gt;码字&lt;/code&gt;（codeword），码字是物理层进行信道编码等相关操作的单位。&lt;/p&gt;
&lt;p&gt;当收到来自 &lt;code&gt;MAC&lt;/code&gt; 层的 1 个传输块后，物理层将其对应为 1 个码字，首先对&lt;strong&gt;整个码字&lt;/strong&gt;进行 &lt;code&gt;CRC&lt;/code&gt; 的计算，得到&lt;strong&gt;添加&lt;/strong&gt;了 &lt;code&gt;CRC&lt;/code&gt; 比特后的码字数据流。&lt;/p&gt;
&lt;p&gt;考虑到信道纠错编码的性能与处理时延的因素，标准中定义了最大的编码长度为 6144。也就是说，如果添加 CRC 比特后 1 个码字数据流的长度&lt;strong&gt;大于&lt;/strong&gt; 6144 个比特，那么需要对码字进行&lt;strong&gt;分割&lt;/strong&gt;，将 1 个码字分割为&lt;strong&gt;若干个&lt;/strong&gt;&lt;code&gt;码块&lt;/code&gt;（code block），这时候需要对每个码块&lt;strong&gt;再添加&lt;/strong&gt;相应的 CRC 比特，然后以&lt;strong&gt;码块为单位&lt;/strong&gt;进行后续的信道纠错编码，以满足信道纠错编码最大长度的限制。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_6.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_6.webp&#34;  data-sub-html=&#34;&lt;h2&gt;码块分割&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_6.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;码块分割&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;物理层采用的 &lt;code&gt;Turbo 编码&lt;/code&gt;的内交织器对数据的长度有一定的要求，标准中以列表的方式给出了所支持的数值，因此，在分块过程中，可能需要进行&lt;strong&gt;一定的填充&lt;/strong&gt;，保证每一个码块的长度符合内交织器的要求。&lt;/p&gt;
&lt;h3 id=&#34;信道编码&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bf%a1%e9%81%93%e7%bc%96%e7%a0%81&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;信道编码&lt;/h3&gt;&lt;p&gt;物理层支持包括&lt;code&gt;块编码&lt;/code&gt;、&lt;code&gt;截尾的卷积编码&lt;/code&gt;和 &lt;code&gt;Turbo 码&lt;/code&gt; 3 种不同的信道纠错编码方法。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Turbo 码&lt;/code&gt;由于其良好的性能，用于大部分传输信道数据信息的信道编码方法&lt;/li&gt;
&lt;li&gt;&lt;code&gt;卷积码&lt;/code&gt;的译码&lt;strong&gt;复杂度比较低&lt;/strong&gt;，另外在码长&lt;strong&gt;比较短&lt;/strong&gt;的时候，卷积码的性能与 Turbo 码相近，因此采用&lt;code&gt;截尾的卷积码&lt;/code&gt;作为&lt;code&gt;广播信道&lt;/code&gt;和&lt;code&gt;物理层下行控制信息&lt;/code&gt;主要的信道编码方法&lt;/li&gt;
&lt;li&gt;使用&lt;code&gt;块编码&lt;/code&gt;作为一些&lt;strong&gt;长度更短&lt;/strong&gt;的信息的信道编码方法，包括&lt;code&gt;控制格式指示信息（PCFICH）&lt;/code&gt;、&lt;code&gt;下行 HARQ 指示信息（PHICH）&lt;/code&gt;和&lt;code&gt;物理层上行控制信息&lt;/code&gt;（上行 ACK 信息、CQI 信息等）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;速率匹配&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%80%9f%e7%8e%87%e5%8c%b9%e9%85%8d&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;速率匹配&lt;/h3&gt;&lt;p&gt;在速率匹配的过程中，对信道编码后形成的比特流进行选取，以匹配于最终实际使用的物理资源。根据所选取的数据数量的不同，形成不同的编码速率。在这个过程中，以信道编码的每个&lt;strong&gt;码块为单位&lt;/strong&gt;。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_7.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_7.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Turbo 码速率匹配的数据选择&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_7.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Turbo 码速率匹配的数据选择&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;码块连接&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%a0%81%e5%9d%97%e8%bf%9e%e6%8e%a5&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;码块连接&lt;/h3&gt;&lt;p&gt;在完成以码块为单位的信道编码和速率匹配的过程之后，将对 1 个码字内所有的码块进行&lt;strong&gt;串行连接&lt;/strong&gt;，形成&lt;strong&gt;码字&lt;/strong&gt;（即传输块）所对应的传输序列，然后就可以进一步地进行信号调制相关的处理与发送了。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_8.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_8.webp&#34;  data-sub-html=&#34;&lt;h2&gt;码块连接&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_8.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;码块连接&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] LTE-Advanced 关键技术详解&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：共享信道传输与接收</title>
      <link>https://www.techkoala.net/lte_transmission_and_reception/</link>
      <pubDate>Fri, 22 Nov 2019 21:14:52 +0800</pubDate>
      
      <guid>https://www.techkoala.net/lte_transmission_and_reception/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;LTE 物理层概要&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;下行共享信道的传输与接收&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8b%e8%a1%8c%e5%85%b1%e4%ba%ab%e4%bf%a1%e9%81%93%e7%9a%84%e4%bc%a0%e8%be%93%e4%b8%8e%e6%8e%a5%e6%94%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;下行共享信道的传输与接收&lt;/h2&gt;&lt;p&gt;物理层下行数据传输包含了链路自适应的过程，基站根据终端所上报的&lt;strong&gt;链路质量信息&lt;/strong&gt;（CQI/PMI/RI）选择适当的物理资源和相应的编码调制方式进行下行数据的发送，实现对系统下行无线资源的优化利用，达到最佳的性能。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_44.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_44.webp&#34;  data-sub-html=&#34;&lt;h2&gt;信道状态信息反馈和下行链路自适应传输&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_44.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;信道状态信息反馈和下行链路自适应传输&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;物理层下行共享信道的传输包括了&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;调度信息（PDCCH）&lt;/li&gt;
&lt;li&gt;数据信息（PDSCH）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在长度为 &lt;code&gt;1ms&lt;/code&gt; 的子帧结构中，前面的 1 ～ 3 个 &lt;code&gt;OFDM&lt;/code&gt; 符号用于传输下行控制信息，其中包括了传输数据调度信息的 &lt;code&gt;PDCCH&lt;/code&gt;；而子帧中剩余的符号用于传输数据信息（PDSCH）。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_45.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_45.webp&#34;  data-sub-html=&#34;&lt;h2&gt;下行数据传输的子帧结构&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_45.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;下行数据传输的子帧结构&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;在下行数据接收的过程中，终端对当前子帧中所有 &lt;code&gt;PDCCH&lt;/code&gt; 信道进行&lt;strong&gt;盲检测&lt;/strong&gt;，如果发现属于自己的调度信息，那么终端将根据该调度信息的指示（包括资源位置、编码调制方法等）解调接收当前子帧中属于自己的 &lt;code&gt;PDSCH&lt;/code&gt; 数据信息。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_46.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_46.webp&#34;  data-sub-html=&#34;&lt;h2&gt;下行数据的调度与传输&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_46.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;下行数据的调度与传输&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;物理层下行支持 29 种调制编码格式，其中包括了 &lt;code&gt;QPSK&lt;/code&gt;、&lt;code&gt;16QAM&lt;/code&gt; 和 &lt;code&gt;64QAM&lt;/code&gt; 3 种不同的调制方式和不同的信道编码速率（范围是 0.16 ～ 0.92）。根据这样的原则，针对每一种物理资源 &lt;code&gt;PRB&lt;/code&gt; 的占用数目，规范中定义了 29 种&lt;strong&gt;传输块大小&lt;/strong&gt;（Tranport block size）。&lt;/p&gt;
&lt;p&gt;在进行下行数据传输时，下行调度信息中使用 5 个比特对所调度数据使用的&lt;strong&gt;编码调制格式&lt;/strong&gt;（MCS）进行指示。接收端根据该信息可以确定数据所使用的调制方式；&lt;/p&gt;
&lt;p&gt;同时，将这 5 比特 &lt;code&gt;MCS&lt;/code&gt; 信息和调度信息中所分配的 &lt;code&gt;PRB&lt;/code&gt; 数目相结合，可以查表确定传输块大小，即信道编码数据源大小的信息，由此实现下行数据的正确传输与接收。&lt;/p&gt;
&lt;h2 id=&#34;上行共享信道的调度与传输&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8a%e8%a1%8c%e5%85%b1%e4%ba%ab%e4%bf%a1%e9%81%93%e7%9a%84%e8%b0%83%e5%ba%a6%e4%b8%8e%e4%bc%a0%e8%be%93&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;上行共享信道的调度与传输&lt;/h2&gt;&lt;p&gt;物理层上行数据的传输包含了链路自适应的调度过程。&lt;/p&gt;
&lt;p&gt;首先，终端在上行发送 &lt;code&gt;Sounding 导频&lt;/code&gt; 信号，基站利用该信号对用户上行信道的质量进行测量，根据测量的结果选择适当的物理资源和相应的编码调制方式，在上行资源调度信息中进行指示，终端根据基站的指示进行上行数据的发送，实现对系统上行无线资源的优化利用。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_47.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_47.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Sounding 导频和上行链路自适应&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_47.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Sounding 导频和上行链路自适应&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;上行共享信道的传输包括&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上行调度信息（PDCCH）&lt;/li&gt;
&lt;li&gt;数据信息（PUSCH）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;根据 &lt;code&gt;PDCCH&lt;/code&gt; 上行调度信息的指示，终端使用相应的资源进行上行数据的发送。与下行情况不同的是，在下行共享信道的传输过程中，&lt;strong&gt;调度信息&lt;/strong&gt;与对应的&lt;strong&gt;数据信息&lt;/strong&gt;处于&lt;strong&gt;同一个子帧内&lt;/strong&gt;。而在上行的情况中，终端需要根据 &lt;code&gt;PDCCH&lt;/code&gt; 调度信息的指示，进行上行数据的发送，因此二者之间&lt;strong&gt;存在一定的时延&lt;/strong&gt;，考虑无线传播和设备处理时间的因素&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;FDD&lt;/code&gt; 中定义该时延的数值为 &lt;code&gt;4ms&lt;/code&gt;，即对于在子帧 &lt;code&gt;n&lt;/code&gt; 中接收到的 &lt;code&gt;PDCCH&lt;/code&gt; 上行调度信息，终端将在子帧 &lt;code&gt;n+4&lt;/code&gt; 进行对应的上行数据传输。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TDD&lt;/code&gt; 的情况中，在时延最小值等于 &lt;code&gt;4ms&lt;/code&gt; 的前提下，还需要区分是上行或者下行子帧，因为只有在属于上行子帧的时间才能进行上行数据的发送。&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_48.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_48.webp&#34;  data-sub-html=&#34;&lt;h2&gt;上行数据的调度与传输&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_48.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;上行数据的调度与传输&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;与下行类似，物理层上行支持 29 种调制编码格式，其中包括了 &lt;code&gt;QPSK&lt;/code&gt;、&lt;code&gt;16QAM&lt;/code&gt; 和 &lt;code&gt;64QAM&lt;/code&gt; 3 种不同的调制方式和不同的信道编码速率（范围是 0.16 ～ 0.92），使用与下行相同的传输块大小的表格定义，规定了在各种 &lt;code&gt;PRB&lt;/code&gt; 数目的情况下，所对应的 29 种&lt;strong&gt;传输块大小&lt;/strong&gt;（Transport block size）。&lt;/p&gt;
&lt;p&gt;在进行上行数据传输时，上行调度信息中使用 5 个比特指示数据的调制编码格式（MCS），终端根据该信息可以确定所使用的调制方法（QPSK/16QAM/64QAM）；同时，将这 5 比特 &lt;code&gt;MCS&lt;/code&gt; 信息和调度信息中所分配的 &lt;code&gt;PRB&lt;/code&gt; 数目相结合，可以查表确定传输块大小，即信道编码数据源的大小。最后，终端进行信道编码、速率匹配的信号处理过程，实现上行数据的发送。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] LTE-Advanced 关键技术详解&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：多址方式</title>
      <link>https://www.techkoala.net/lte_multiple_access/</link>
      <pubDate>Sun, 20 Oct 2019 20:45:06 +0800</pubDate>
      
      <guid>https://www.techkoala.net/lte_multiple_access/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;LTE 多址方式详解&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;多址方式&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%a4%9a%e5%9d%80%e6%96%b9%e5%bc%8f&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;多址方式&lt;/h2&gt;&lt;p&gt;LTE 的空中接口采用以 &lt;code&gt;OFDM&lt;/code&gt; 技术为基础的多址方式，使用 &lt;code&gt;15kHz&lt;/code&gt; 的子载波宽度，通过不同的子载波数目（72 ～ 1200 ）实现了从 1.4 ～ 20MHz 之间多种可变的系统带宽。另外，考虑到在不同应用场景的情况下，无线信道的多径传输具有不同的时延扩展特性，所以 LTE 支持两种不同循环前缀（Cyclic Prefix，CP）长度的配置：&lt;code&gt;Normal CP&lt;/code&gt; 和 &lt;code&gt;Extend CP&lt;/code&gt;，它们的长度分别约为 &lt;code&gt;4.7μs&lt;/code&gt; 和 &lt;code&gt;16.7μs&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;在 &lt;code&gt;OFDM&lt;/code&gt; 技术的基础上，根据下行和上行两个方向通信的不同特点，LTE 分别选择了&lt;code&gt;多载波 OFDM&lt;/code&gt; 和&lt;code&gt;单载波 SC-FDMA&lt;/code&gt;（即 DFT-SOFDM）作为多址方式的具体实现方法。&lt;/p&gt;
&lt;h3 id=&#34;下行多址方式&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8b%e8%a1%8c%e5%a4%9a%e5%9d%80%e6%96%b9%e5%bc%8f&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;下行多址方式&lt;/h3&gt;&lt;p&gt;LTE 采用 &lt;code&gt;OFDM&lt;/code&gt;（Orthogonal Frequency Division Multiplexing）作为下行无线信号传输的多址方式。&lt;code&gt;OFDM&lt;/code&gt; 是一种&lt;strong&gt;多载波调制&lt;/strong&gt;的传输技术，将数据流经过&lt;strong&gt;串并变换&lt;/strong&gt;，形成多路&lt;strong&gt;子数据流&lt;/strong&gt;（N 路），使用它们分别去调制 N 路子载波后&lt;strong&gt;并行传输&lt;/strong&gt;。通过这样的处理，子数据流的速率是原来的 1/N，即符号周期是原来的 N 倍，使得该符号周期远&lt;strong&gt;大于&lt;/strong&gt;信道的时延扩展，从而实现了将一个宽带频率选择性信道划分成 N 个&lt;strong&gt;窄带平坦衰落信道&lt;/strong&gt;，因此 OFDM 信号具有很强的&lt;strong&gt;抗无线信道多径衰落&lt;/strong&gt;和&lt;strong&gt;抗脉冲干扰&lt;/strong&gt;的能力，并且由于实现方式简单，所以特别适用于高速无线数据传输。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_49.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_49.webp&#34;  data-sub-html=&#34;&lt;h2&gt;OFDM 调制的信号处理流程&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_49.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;OFDM 调制的信号处理流程&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;上行多址方式&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8a%e8%a1%8c%e5%a4%9a%e5%9d%80%e6%96%b9%e5%bc%8f&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;上行多址方式&lt;/h3&gt;&lt;p&gt;上行方向上，LTE 采用&lt;code&gt;单载波 SC-FDMA&lt;/code&gt;（即 DFT-SOFDM） 作为多址方式。其中，同样采用了 &lt;code&gt;15kHz&lt;/code&gt; 的子载波带宽，不同子载波数目实现不同的系统带宽。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_50.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_50.webp&#34;  data-sub-html=&#34;&lt;h2&gt;DFT-SOFDM 调制的信号处理流程&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_50.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;DFT-SOFDM 调制的信号处理流程&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;与 &lt;code&gt;ODFM&lt;/code&gt; 中信号直接映射到频域的子载波上形成多载波信号不同，&lt;code&gt;DFT-SOFDM&lt;/code&gt; 中信号由&lt;strong&gt;时域&lt;/strong&gt;输入，通过 &lt;code&gt;DFT&lt;/code&gt; 的操作转换到频域后再进行子载波的调制，因此 &lt;code&gt;DFT-SOFDM&lt;/code&gt; 属于单载波的调制方式，其发射信号也具有单载波的特性。&lt;/p&gt;
&lt;p&gt;在 &lt;code&gt;OFDM&lt;/code&gt; 多载波调制中，由于多路信号在频域的并行传输，叠加后形成的时域输出信号具有&lt;strong&gt;较大峰均比&lt;/strong&gt;。由于基站功率放大器的能力较强，因此在下行峰均比不会成为影响系统性能的主要问题。在上行方向上，考虑到终端的成本和功率效率，使用具有单载波特性的发送信号，这是&lt;strong&gt;因为较低的信号峰均比具有重要的意义&lt;/strong&gt;。根据调制方式的不同（&lt;code&gt;QPSK&lt;/code&gt;、&lt;code&gt;16QAM&lt;/code&gt;），与 &lt;code&gt;OFDM&lt;/code&gt; 相比较，单载波信号具有 1.5 ～ 2.5dB 的峰均比增益，这也是 LTE 选择&lt;code&gt;单载波 SC-FDMA&lt;/code&gt; 作为上行多址方式的&lt;strong&gt;主要原因&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;另一方面，为了使信号真正具有单载波的特性，&lt;code&gt;DFT-SOFDM&lt;/code&gt; 调制过程中对于子载波的映射需要满足一定的限制。除了集中式的映射之外（此时，&lt;code&gt;DFT-SOFDM&lt;/code&gt; 的信号处理过程相当于对输入信号进行时域的过采样），在分布式的映射中，为了保持单载波特性，&lt;code&gt;DFT-SOFDM&lt;/code&gt; 调制必须采用等间隔的子载波映射，即 &lt;strong&gt;L1 =L2 =…=LN&lt;/strong&gt; （此时，&lt;code&gt;DFT-SOFDM&lt;/code&gt; 的处理过程相当于对输入信号进行时域的块重复），而不能够使用间隔不相等的分布式映射，因为那将破坏输出信号的单载波特性。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_51.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_51.webp&#34;  data-sub-html=&#34;&lt;h2&gt;OFDM/DFT-SOFDM 的子载波映射&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_51.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;OFDM/DFT-SOFDM 的子载波映射&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] LTE-Advanced 关键技术详解&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>使用 df 和 du 查看磁盘存储信息</title>
      <link>https://www.techkoala.net/command_df_du/</link>
      <pubDate>Thu, 10 Oct 2019 13:36:09 +0800</pubDate>
      
      <guid>https://www.techkoala.net/command_df_du/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;Linux 中使用 df 和 du 查看磁盘以及文件存储信息&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;df&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#df&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;df&lt;/h2&gt;&lt;p&gt;df 命令用于显示磁盘分区上的可使用的磁盘空间。主要用于查看一级文件夹大小、使用比例、档案系统及其挂入点，但&lt;strong&gt;无法&lt;/strong&gt;查看单个文件大小。&lt;/p&gt;
&lt;p&gt;默认显示单位为 KB。&lt;/p&gt;
&lt;h3 id=&#34;语法&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%af%ad%e6%b3%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;语法&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-1&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;df &lt;span class=&#34;o&#34;&gt;[&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;o&#34;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;选项&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%80%89%e9%a1%b9&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;选项&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-2&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-a或--all                                    包含全部的文件系统；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--block-size&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;区块大小&amp;gt;                       以指定的区块大小来显示区块数目；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-h或--human-readable                         以可读性较高的方式来显示信息；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-H或--si                                     与-h参数相同，但在计算时是以1000 Bytes为换算单位而非1024 Bytes；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-i或--inodes                                 显示inode的信息；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-k或--kilobytes                              指定区块大小为1024字节；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-l或--local                                  仅显示本地端的文件系统；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-m或--megabytes                              指定区块大小为1048576字节；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--no-sync                                    在取得磁盘使用信息前，不要执行sync指令，此为预设值；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-P或--portability                            使用POSIX的输出格式；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--sync                                       在取得磁盘使用信息前，先执行sync指令；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-t&amp;lt;文件系统类型&amp;gt;或--type&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;文件系统类型&amp;gt;          仅显示指定文件系统类型的磁盘信息；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-T或--print-type                             显示文件系统的类型；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-x&amp;lt;文件系统类型&amp;gt;或--exclude-type&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;文件系统类型&amp;gt;  不要显示指定文件系统类型的磁盘信息；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--help                                       显示帮助；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--version                                    显示版本信息。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h2 id=&#34;du&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#du&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;du&lt;/h2&gt;&lt;p&gt;du 命令是查看文件和目录磁盘使用的空间。&lt;/p&gt;
&lt;h3 id=&#34;语法-1&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%af%ad%e6%b3%95-1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;语法&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-3&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;du &lt;span class=&#34;o&#34;&gt;[&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;o&#34;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;选项-1&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%80%89%e9%a1%b9-1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;选项&lt;/h3&gt;&lt;div class=&#34;code-block highlight is-closed show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-4&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-a或-all                                显示目录中个别文件的大小。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-b或-bytes                              显示目录或文件大小时，以byte为单位。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-c或--total                             除了显示个别目录或文件的大小外，同时也显示所有目录或文件的总和。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-k或--kilobytes                         以KB&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;1024bytes&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;为单位输出。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-m或--megabytes                         以MB为单位输出。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-s或--summarize                         仅显示总计，只列出最后加总的值。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-h或--human-readable                    以K，M，G为单位，提高信息的可读性。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-x或--one-file-xystem                   以一开始处理时的文件系统为准，若遇上其它不同的文件系统目录则略过。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-L&amp;lt;符号链接&amp;gt;或--dereference&amp;lt;符号链接&amp;gt;      显示选项中所指定符号链接的源文件大小。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-S或--separate-dirs                     显示个别目录的大小时，并不含其子目录的大小。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-X&amp;lt;文件&amp;gt;或--exclude-from&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;文件&amp;gt;          在&amp;lt;文件&amp;gt;指定目录或文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--exclude&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;目录或文件&amp;gt;                   略过指定的目录或文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-D或--dereference-args                  显示指定符号链接的源文件大小。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-H或--si                                与-h参数相同，但是K，M，G是以1000为换算单位。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-l或--count-links                       重复计算硬件链接的文件。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;实例&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%ae%9e%e4%be%8b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;实例&lt;/h3&gt;&lt;p&gt;按文件大小排序：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-5&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ du -sh * &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort -h&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;显示目录或者文件所占空间：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-6&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ du&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;显示指定文件所占空间：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-7&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ du xxxxx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;查看指定目录的所占空间：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-8&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ du scf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;显示多个文件所占空间：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-9&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ du xxxx.tar.gz yyyy.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;4&lt;/span&gt; xxxx.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;4&lt;/span&gt; yyyy.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;只显示总和的大小：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-10&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ du -s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;1288&lt;/span&gt; .&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-11&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ du -s scf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;32&lt;/span&gt; scf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;显示总和的大小且易读：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;shell&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-12&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;du -sh &lt;span class=&#34;nv&#34;&gt;$dir&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：小区搜索和下行同步</title>
      <link>https://www.techkoala.net/lte_cell_synchronize/</link>
      <pubDate>Sun, 15 Sep 2019 21:46:08 +0800</pubDate>
      
      <guid>https://www.techkoala.net/lte_cell_synchronize/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;LTE 物理层概要综列&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;终端的小区搜索和下行同步&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%bb%88%e7%ab%af%e7%9a%84%e5%b0%8f%e5%8c%ba%e6%90%9c%e7%b4%a2%e5%92%8c%e4%b8%8b%e8%a1%8c%e5%90%8c%e6%ad%a5&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;终端的小区搜索和下行同步&lt;/h2&gt;&lt;p&gt;通过小区搜索的过程，终端实现对服务小区下行信号时间和频率的同步，并且确定小区的物理层 ID。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master//images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_42.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master//images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_42.webp&#34;  data-sub-html=&#34;&lt;h2&gt;小区搜索过程&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master//images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_42.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;小区搜索过程&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;物理层小区搜索的过程主要涉及两个同步信号：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.techkoala.net/lte_physical_signals/&#34; rel=&#34;&#34;&gt;主同步信号（PSS）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.techkoala.net/lte_physical_signals/&#34; rel=&#34;&#34;&gt;辅同步信号（SSS）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;过程中包括了&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;下行时间和频率的同步&lt;/li&gt;
&lt;li&gt;小区物理 ID 的检测&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OFDM&lt;/code&gt; 信号 &lt;code&gt;CP&lt;/code&gt; 长度的检测（Normal 或者 Extended CP）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;完成这些操作后，终端就可以开始读取服务小区的&lt;strong&gt;广播信道&lt;/strong&gt;（PBCH）中的系统信息了。&lt;/p&gt;
&lt;p&gt;通过同步信号的检测与服务小区获得同步以后，终端还可以利用&lt;strong&gt;下行导频信号&lt;/strong&gt;（CRS），进行更精确的时间与频率的同步，以及同步的维持。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] LTE-Advanced 关键技术详解&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：基本物理资源</title>
      <link>https://www.techkoala.net/lte_basic_physical_resource/</link>
      <pubDate>Sun, 01 Sep 2019 20:49:05 +0800</pubDate>
      
      <guid>https://www.techkoala.net/lte_basic_physical_resource/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;LTE 基本物理资源及分配方法&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;基本物理资源&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%9f%ba%e6%9c%ac%e7%89%a9%e7%90%86%e8%b5%84%e6%ba%90&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;基本物理资源&lt;/h2&gt;&lt;h3 id=&#34;物理资源块prb&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%89%a9%e7%90%86%e8%b5%84%e6%ba%90%e5%9d%97prb&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;物理资源块（PRB）&lt;/h3&gt;&lt;p&gt;物理层定义了物理资源块（Physical Resource Block，PRB）作为空中接口物理资源分配的单位。1 个 &lt;code&gt;PRB&lt;/code&gt; 在&lt;strong&gt;频域&lt;/strong&gt;上包含 &lt;strong&gt;12 个连续的子载波&lt;/strong&gt;，在&lt;strong&gt;时域&lt;/strong&gt;上包含 &lt;strong&gt;7 个连续的 OFDM 符号&lt;/strong&gt;（在 Extended CP 的情况下为 6 个），即 1 个 &lt;code&gt;PRB&lt;/code&gt; 包括了&lt;strong&gt;频域宽度&lt;/strong&gt;等于 &lt;code&gt;180kHz&lt;/code&gt;、&lt;strong&gt;时间长度&lt;/strong&gt;等于 &lt;code&gt;0.5ms&lt;/code&gt;（1 个时隙）的物理资源。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_56.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_56.webp&#34;  data-sub-html=&#34;&lt;h2&gt;物理资源块（PRB）的结构&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_56.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;物理资源块（PRB）的结构&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;通过设置不同的子载波数目可以映射到不同的资源块（PRB）数目。LTE Release 8 版本定义的 6 种不同的系统带宽与子载波数目以及 PRB 数目之间的对应关系如下表所示：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_1.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_1.webp&#34;  data-sub-html=&#34;&lt;h2&gt;系统带宽与资源块数目&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_1.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;系统带宽与资源块数目&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;逻辑资源块vrb&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%80%bb%e8%be%91%e8%b5%84%e6%ba%90%e5%9d%97vrb&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;逻辑资源块（VRB）&lt;/h3&gt;&lt;p&gt;为了方便物理信道向空中接口物理资源的映射，在物理资源块（PRB）的基础上还定义了逻辑资源块（Virtual Resource Block，VRB）。&lt;/p&gt;
&lt;p&gt;逻辑资源块的大小与物理资源块相同，即 &lt;strong&gt;1 个时隙&lt;/strong&gt;（0.5ms）、&lt;strong&gt;12 个子载波&lt;/strong&gt;。逻辑资源块主要定义了资源的分配方式，位于 1 个子帧内 2 个时隙的 2 个 &lt;code&gt;VRB&lt;/code&gt;（即 VRB pair）是物理资源分配信令的指示单位。&lt;/p&gt;
&lt;p&gt;逻辑资源块和物理资源块分别对应有各自的资源块序号 &lt;code&gt;nVRB&lt;/code&gt; 和 &lt;code&gt;nPRB&lt;/code&gt; 。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;物理资源块 &lt;code&gt;PRB&lt;/code&gt; 的序号 &lt;code&gt;nPRB&lt;/code&gt; 按照频域的物理位置进行顺序编号&lt;/li&gt;
&lt;li&gt;逻辑资源块 &lt;code&gt;VRB&lt;/code&gt; 的序号 &lt;code&gt;nVRB&lt;/code&gt; 是系统进行资源分配时所指示的逻辑序号，通过它与 &lt;code&gt;PRB&lt;/code&gt; 序号之间的映射关系来进一步地确定实际物理资源的位置&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;物理层定义了两种类型的逻辑资源块：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;集中式 VRB&lt;/code&gt;（Localized VRB，LVRB）&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LVRB&lt;/code&gt; 直接映射到 &lt;code&gt;PRB&lt;/code&gt; 上，即 &lt;strong&gt;nPRB =nVRB&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;分布式 VRB&lt;/code&gt;（Distributed VRB，DVRB）&lt;/p&gt;
&lt;p&gt;&lt;code&gt;DVRB&lt;/code&gt; 逻辑资源序号与物理资源序号具有一定的&lt;strong&gt;映射关系&lt;/strong&gt;，可以表示为 &lt;strong&gt;nPRB =f(nVRB ，ns )&lt;/strong&gt;，其中 &lt;strong&gt;0≤ns ≤19&lt;/strong&gt; 是 1 个无线帧内的时隙序号。通常情况下，&lt;strong&gt;连续&lt;/strong&gt;的 &lt;code&gt;DVBR&lt;/code&gt; 序号将映射到&lt;strong&gt;不连续&lt;/strong&gt;的 &lt;code&gt;PRB&lt;/code&gt; 序号上，并且 1 个子帧内的 2 个时隙也有着不同的映射关系，即属于 1 个 &lt;code&gt;DVRB pair&lt;/code&gt; 的两个具有相同逻辑序号的 DVRB 将映射到两个时隙不同频率位置的 PRB 上。通过这样的机制实现了&lt;strong&gt;分布式&lt;/strong&gt;的资源分配&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_2.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_2.webp&#34;  data-sub-html=&#34;&lt;h2&gt;基于 VRB 的资源分配&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_2.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;基于 VRB 的资源分配&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;下行方向&lt;/strong&gt;的信号传输，支持 LVRB 和 DVRB 的分配，具体采用的方式在下行资源的调度信令中进行指示&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上行方向&lt;/strong&gt;的信号传输，&lt;strong&gt;仅支持&lt;/strong&gt; LVRB 方式的资源分配&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;资源单元组reg&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%b5%84%e6%ba%90%e5%8d%95%e5%85%83%e7%bb%84reg&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;资源单元组（REG）&lt;/h3&gt;&lt;p&gt;&lt;code&gt;PRB&lt;/code&gt; 和 &lt;code&gt;VRB&lt;/code&gt; 用于数据信道的资源分配和映射，物理层还定义了 &lt;code&gt;REG&lt;/code&gt;（Resource Element Group）的概念，用于物理层下行控制信道的资源映射。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1 个&lt;/strong&gt; &lt;code&gt;REG&lt;/code&gt; 对应除掉导频符号之外在频域上连续的 &lt;strong&gt;4 个&lt;/strong&gt;物理资源。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_3.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_3.webp&#34;  data-sub-html=&#34;&lt;h2&gt;资源单元组（Resource Element Group，REG）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_3.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;资源单元组（Resource Element Group，REG）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] LTE-Advanced 关键技术详解&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>5G NR 系列：如何做到空口 &lt;1ms 的延迟</title>
      <link>https://www.techkoala.net/5g_time_delay/</link>
      <pubDate>Mon, 12 Aug 2019 23:14:44 +0800</pubDate>
      
      <guid>https://www.techkoala.net/5g_time_delay/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;无线网络中的时延是如何一步步进化到 5G 中的 &amp;lt;1ms ？&lt;/p&gt;

&lt;/blockquote&gt;&lt;blockquote&gt;
  &lt;p&gt;注：本文系全文转载，原文信息如下：&lt;/p&gt;
&lt;p&gt;作者：见微&lt;/p&gt;
&lt;p&gt;链接：https://www.zhihu.com/question/307958274/answer/712266324&lt;/p&gt;
&lt;p&gt;来源：知乎&lt;/p&gt;
&lt;p&gt;著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;网络延迟时间的定义&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%bd%91%e7%bb%9c%e5%bb%b6%e8%bf%9f%e6%97%b6%e9%97%b4%e7%9a%84%e5%ae%9a%e4%b9%89&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;网络延迟时间的定义&lt;/h2&gt;&lt;h3 id=&#34;单向延迟&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8d%95%e5%90%91%e5%bb%b6%e8%bf%9f&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;单向延迟&lt;/h3&gt;&lt;p&gt;单向延迟指的是信息从发送方传到接收方的所花费的时间。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/One_way_delay.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/One_way_delay.webp&#34;  data-sub-html=&#34;&lt;h2&gt;单向时间延迟&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/One_way_delay.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;单向时间延迟&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;双向延迟&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%8c%e5%90%91%e5%bb%b6%e8%bf%9f&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;双向延迟&lt;/h3&gt;&lt;p&gt;双向延迟（Round Trip Time, RTT）, 指的是信息从发送方到达接收方，加上接受方发信息给发送方所花费的总时间。双向延迟在工程中更加常见，因为我们可以只在信息发送方或者接收方的其中一方就可以测量到双向延迟（利用 ping 等工具）。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Two_way_delay.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Two_way_delay.webp&#34;  data-sub-html=&#34;&lt;h2&gt;双向时间延迟&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Two_way_delay.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;双向时间延迟&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;用户面时延&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%94%a8%e6%88%b7%e9%9d%a2%e6%97%b6%e5%bb%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;用户面时延&lt;/h3&gt;&lt;p&gt;题主提到的 5G 网络 1 毫秒时间延迟最初是由 ITU IMT-2020 M.2410-0 （4.7.1）关于 IMT-2020 系统的设计最小需求中提到的。其适用的范围是 &lt;strong&gt;URLLC&lt;/strong&gt;（Ultra reliable and low latency communication）超可靠且超低的时延业务，这里的时延是针对用户面时延。用户面时延是指我们平时使用手机发送数据的时间延迟，区别于控制面时延：手机注册网络或者状态转换经过的信令流程所花费的时间（控制面时延不做讨论）。&lt;/p&gt;
&lt;p&gt;另外一点是 1 毫秒指的是无线网络 &lt;strong&gt;空中接口&lt;/strong&gt;（手机和基站之间，不包括核心网，互联网等网络节点）的延迟时间。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/User_interface_delay.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/User_interface_delay.webp&#34;  data-sub-html=&#34;&lt;h2&gt;用户面时间延迟&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/User_interface_delay.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;用户面时间延迟&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;明确了讨论的范围（无线网络空中接口的双向用户面时间延迟），接下来真正进入正题：&lt;strong&gt;网络空中接口的时间延迟是如何一步步降下来的。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;4g-网络延迟&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#4g-%e7%bd%91%e7%bb%9c%e5%bb%b6%e8%bf%9f&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;4G 网络延迟&lt;/h2&gt;&lt;p&gt;4G 网络（注：本文中提到的 4G 特指 LTE 网络）是从 2004 年开始标准化，2009 年开始商用网络部署，到现在已经历经了 10 余年的时间，是最成功的无线网络之一，已经在全球范围内广泛部署。&lt;/p&gt;
&lt;p&gt;最初的 4G 网络主要关注的业务和应用是 MBB（Mobile broad band）移动带宽业务，通俗的讲就是提供更大的网络容量，更快的上网速度。从最初的 3GPP release8 到 release13 一直是沿着这条路走，标准定义的峰值速率从 300Mbps 到 25Gbps（载波聚合，MIMO，高阶调制方式）。当我们在速率更快这条路走得越来越远，才发现无线网络的时延水平也需要改善，时延还会从侧面影响下载的速率，谨慎的评估了 LTE 的无线网络的现状，空中接口的时间延迟是未来标准化组织重点关注的研究对象。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;而在当时，LTE 网络的延迟状况是接近于～ 20ms 的双向时延。（理论延迟时间，实际根据无线环境情况一般会更长）&lt;/strong&gt;&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/LTE_delay_baselin.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/LTE_delay_baselin.webp&#34;  data-sub-html=&#34;&lt;h2&gt;LTE 网络空中接口上下行时延基线&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/LTE_delay_baselin.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;LTE 网络空中接口上下行时延基线&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;上图描述了 LTE 空中接口的上行（从终端到基站）和下行（从基站到终端）时延。&lt;/p&gt;
&lt;h3 id=&#34;上行时间延迟&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8a%e8%a1%8c%e6%97%b6%e9%97%b4%e5%bb%b6%e8%bf%9f&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;上行时间延迟&lt;/h3&gt;&lt;p&gt;上行时间延迟（从手机到基站）：当手机有一个数据包需要发送到网络侧，需要向网络侧发起无线资源请求的申请（Scheduling request, SR），告诉基站我有数据要发啦，基站接收到请求后，需要 3 毫秒时间解码用户发送的调度请求，然后准备给用户调度的资源，准备好了之后，给用户发送信息 (Grant)，告诉用户在某个时间某个频率上去发送他想要发送的数据，用户收到了调度信息之后，需要 3 毫秒时间解码调度的信息，并将数据发送给基站，基站收到用户发送的信息之后需要 3 毫秒的时间解码数据信息，完成数据的传送工作，整个时间计算下来是 &lt;strong&gt;12.5ms&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;下行时间延迟&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8b%e8%a1%8c%e6%97%b6%e9%97%b4%e5%bb%b6%e8%bf%9f&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;下行时间延迟&lt;/h3&gt;&lt;p&gt;下行时间延迟（从基站到手机）：当基站有一个数据包需要发送到终端，需要 3 毫秒时间解码用户发送的调度请求，然后准备给用户调度的资源，准备好了之后，给用户发送信息，告诉用户在某个时间某个频率上去接受他的数据，用户收到了调度信息之后，需要 3 毫秒时间解码调度的信息并接收解码数据信息，完成数据的传送工作，整个时间计算下来是 &lt;strong&gt;7.5ms&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;所以总共的双向时延是 &lt;strong&gt;12.5ms+7.5ms = 20ms&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;详细的时间延迟组成请参考 &lt;a href=&#34;https://www.3gpp.org/DynaReport/36881.htm&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;3GPP 36.881 Study on latency reduction techniques for LTE（5.2.1）&lt;/a&gt;&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/LTE_uplink_time_delay.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/LTE_uplink_time_delay.webp&#34;  data-sub-html=&#34;&lt;h2&gt;LTE 上行时间延迟组成（Source:3GPP 36.881 Study on latency reduction techniques for LTE）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/LTE_uplink_time_delay.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;LTE 上行时间延迟组成（Source:3GPP 36.881 Study on latency reduction techniques for LTE）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/LTE_downlink_time_delay.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/LTE_downlink_time_delay.webp&#34;  data-sub-html=&#34;&lt;h2&gt;LTE 下行时间延迟组成（Source:3GPP 36.881 Study on latency reduction techniques for LTE）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/LTE_downlink_time_delay.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;LTE 下行时间延迟组成（Source:3GPP 36.881 Study on latency reduction techniques for LTE）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;从 20 毫秒开始，到 1 毫秒要走过怎样的路？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当 LTE 标准化组织 3GPP 意识到网络的时间延迟是一个问题，而且具有很大的潜在提升的时候，相关的工作拉开了序幕。&lt;/p&gt;
&lt;p&gt;时间来到了 2015 年，3 月初，中国上海，乍暖还寒，在 3GPP RAN 67 次会议上，终于迎来了关于减少 LTE 网络时间延迟的研究项目（SI）立项（&lt;a href=&#34;http://www.3gpp.org/ftp/tsg_Ran/tsg_Ran/TSGR_67/Docs/RP-150465.zip&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RP-150465 New SI proposal: Study on Latency reduction techniques for LTE&lt;/a&gt;）。本次研究项目的立项旨在减小 LTE 网络的时间延迟，因为在此以前 LTE 网络一直向着速率更快的方向在发展，但是网络的延迟水平一直没有得到改善，而研究发现用户面网络延迟的改善能够提升网络的速率瓶颈（因为 TCP 的慢启动效应，改善 TCP 握手的时延，从而提升网络的速率），而且能够更好地支持更多对于时延要求特别高的应用，比如：VR，实时游戏，VoIP，视频会议等等。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Support_for_5G.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Support_for_5G.webp&#34;  data-sub-html=&#34;&lt;h2&gt;改善 LTE 无线时延水平以支持更多的应用 （Source: Ericsson, Joachim Sachs: 5G Ultra-Reliable and Low Latency Communication, IEEE cscn2017）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Support_for_5G.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;改善 LTE 无线时延水平以支持更多的应用 （Source: Ericsson, Joachim Sachs: 5G Ultra-Reliable and Low Latency Communication, IEEE cscn2017）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;有了提升的意愿，通过什么方式提升？要解决一个问题，需要 &lt;strong&gt;全面的了解问题本身&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;网络延迟的组成&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%bd%91%e7%bb%9c%e5%bb%b6%e8%bf%9f%e7%9a%84%e7%bb%84%e6%88%90&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;网络延迟的组成&lt;/h2&gt;&lt;p&gt;LTE 网络空中接口的用户面网络延迟主要由以下及部分组成：资源调度请求和指派（Grant acquisition），传输时间间隔（Transmission time interval），终端和基站的数据包以及信令处理时间（Processing），混合重传来回时间（HARQ RTT）。&lt;/p&gt;
&lt;p&gt;经过研究，终端和基站的数据包的处理时间根据数据包的大小时间不同，这块时延很难大幅度改善，主要的提升方向放在了前两部分：&lt;strong&gt;资源调度请求和指派（Grant acquisition），传输时间间隔（Transmission time interval）&lt;/strong&gt;，同时这两部分也是未来 5G 网络延迟改善的方向。&lt;/p&gt;
&lt;h3 id=&#34;资源调度请求和指派&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%b5%84%e6%ba%90%e8%b0%83%e5%ba%a6%e8%af%b7%e6%b1%82%e5%92%8c%e6%8c%87%e6%b4%be&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;资源调度请求和指派&lt;/h3&gt;&lt;p&gt;终端在需要传送上行数据的时候需要先给基站发送资源调度请求，然后基站才会分配相关的资源给终端，终端收到相应的指派信令后再在相关的资源上去发送上行的数据，整个过程下来，从手机有发送数据的意愿到真正开始向基站传数据，花了 &lt;strong&gt;8.5ms&lt;/strong&gt;，相对于整个上行的单向时延 &lt;strong&gt;12.5ms&lt;/strong&gt; 来说，是相当大的一部分时间延迟。所以研究的重点转向了怎样使用户不用通过上行资源的请求流程，直接就能想发送数据就发送数据？&lt;/p&gt;
&lt;h3 id=&#34;传输时间间隔&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bc%a0%e8%be%93%e6%97%b6%e9%97%b4%e9%97%b4%e9%9a%94&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;传输时间间隔&lt;/h3&gt;&lt;p&gt;传输时间间隔，是网络处理数据，请求的最小时间单位，在 LTE 中传输时间间隔等于 &lt;strong&gt;1 毫秒&lt;/strong&gt;，也就是一个无线子帧。如何缩小传输的时间间隔也是改善时延的研究重点。&lt;/p&gt;
&lt;h3 id=&#34;如何改善-lte-网络的时延&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%a6%82%e4%bd%95%e6%94%b9%e5%96%84-lte-%e7%bd%91%e7%bb%9c%e7%9a%84%e6%97%b6%e5%bb%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;如何改善 LTE 网络的时延？&lt;/h3&gt;&lt;p&gt;对于资源调度请求和指派这个方向，在 LTE release 14 以前，设备厂家普遍采用预调度（Pre-scheduling）的方式来改善延迟，这种办法的主要思想在于：基站周期性的给终端用户分配好相应的无线资源，终端在有数据要发送的时候直接就能在预先分配好的无线资源上发送，无需再向网络侧请求资源，所以减少了整个资源请求流程的时间。但是这种办法有一些缺点：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不管终端用户是否使用预先调度的无线资源，始终会分配给用户。造成了宝贵无线资源的浪费。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;终端用户在接收到无线资源调度后，如果没有数据发送，始终会使用已经分配的无线资源上传填充数据（padding data），这样会造成网络的干扰水平抬升，影响了网络的整体性能。而且手机的耗电量也增加了。&lt;/strong&gt;&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/LTE_pre_scheduling.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/LTE_pre_scheduling.webp&#34;  data-sub-html=&#34;&lt;h2&gt;LTE 预调度（Pre-scheduling）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/LTE_pre_scheduling.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;LTE 预调度（Pre-scheduling）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;似乎探索有了方向&amp;hellip;&lt;/p&gt;
&lt;p&gt;光阴如梭，整整一年后，2016 年 3 月初，瑞典哥德堡，3GPP RAN 71 次会议，关于真正网络延迟减少工作立项了（&lt;a href=&#34;https://www.3gpp.org/ftp/tsg_ran/TSG_RAN/TSGR_71/Docs/RP-160667.zip&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RP-160667 L2 latency reduction techniques for LTE&lt;/a&gt;），此次工作项目的立项标志着网络延迟减少工作的正式开启。所要着手解决的主要集中在改善上行的网络延迟，而解决问题的思想是和预调度类似的 &lt;strong&gt;半静态调度&lt;/strong&gt;，提前为终端周期性的分配好相关的无线资源，用户在需要传送上行数据的时候直接使用已经预先分配好的资源，无需再进行资源请求流程。而在这个版本中引入了更短的半静态调度周期，低至一毫秒，从而能进一步改善时间延迟。&lt;/p&gt;
&lt;p&gt;同时针对预调度中分配了无线资源终端就得发送数据的问题（造成网络干扰和电量消耗），通过 Release 14 标准的改善，使用户即使分配了无线资源，也可以不发送填充数据。&lt;/p&gt;
&lt;p&gt;至此，上行的网络传输延迟大大减少。根据仿真的结果，&lt;strong&gt;LTE 空中接口双向传输时延降至～ 8ms&lt;/strong&gt;&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Semi_static_scheduling_cycle.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Semi_static_scheduling_cycle.webp&#34;  data-sub-html=&#34;&lt;h2&gt;更短的半静态调度周期&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Semi_static_scheduling_cycle.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;更短的半静态调度周期&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Without_padding.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Without_padding.webp&#34;  data-sub-html=&#34;&lt;h2&gt;上行不用发送 Padding 数据&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Without_padding.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;上行不用发送 Padding 数据&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;手机的能耗也下降了～ 10%&lt;/strong&gt;&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Energy_to_Throughput.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Energy_to_Throughput.webp&#34;  data-sub-html=&#34;&lt;h2&gt;时延减少的同时对手机耗电量的改善 (Source: 3GPP R2-153490 L2 enhancements to reduce latency)&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Energy_to_Throughput.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;时延减少的同时对手机耗电量的改善 (Source: 3GPP R2-153490 L2 enhancements to reduce latency)&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;同时网络时延的改善也从侧面提升了终端的速率～ 30%-40%&lt;/strong&gt;&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Ftp_rate_to_Throughput.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Ftp_rate_to_Throughput.webp&#34;  data-sub-html=&#34;&lt;h2&gt;时延减少的同时对终端速率提升 (Source: 3GPP R2-153490 L2 enhancements to reduce latency, Ericsson)&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Ftp_rate_to_Throughput.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;时延减少的同时对终端速率提升 (Source: 3GPP R2-153490 L2 enhancements to reduce latency, Ericsson)&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;但是，真的这样就足够了吗？No，通信人止于至善。&lt;/p&gt;
&lt;p&gt;以上只是解决问题的其中一个角度，针对另一个角度 &lt;strong&gt;改善传输间隔时间&lt;/strong&gt; 能做点什么？&lt;/p&gt;
&lt;p&gt;3 个月后，又又又开会了，韩国釜山，RAN 72 次会议，立项了关于从改善 LTE 网络传输间隔时间从而减少网络时延的工作（RP-161299 New Work Item on shortened TTI and processing time for LTE），改善的方法得从 LTE 的无线帧结构说起。&lt;/p&gt;
&lt;p&gt;无线网络的传输介质是时间和频率资源，终端在分配的时间和频率上发送相应的数据，在通信的世界里，时间的单位很短很短，一个 LTE 帧是 10 毫秒，可以分为 10 个子帧，每个子帧 1 毫秒，这就是网络最小可以调度的时间单位：1 毫秒。&lt;/p&gt;
&lt;p&gt;1 个子帧还可以分为两个时隙，每个时隙还可以分为 7 个符号，至此，终于分完。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/sTTI.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/sTTI.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Short transmission time interval (sTTI) 减少传输时延&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/sTTI.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Short transmission time interval (sTTI) 减少传输时延&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;以前 LTE 网络每次的传输时间间隔是固定一个子帧 = 1 毫秒，上图红色部分是控制信道，用于传输无线资源指派等信令，绿色部分是下行数据信道，用于传输数据。本次工作要做的是将传输时间间隔从子帧级别（1ms) 降低至符号级别（1/14 ms），最小的调度间隔根据情况可以选择 3/2 个符号（3/14ms, 2/14ms），7 个符号（7/14ms），具体的子时隙 (subslot) 细分方式如下图。从而又进一步降低了整个 LTE 无线网络空口的时延。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/LTE_sTTI.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/LTE_sTTI.webp&#34;  data-sub-html=&#34;&lt;h2&gt;4G LTE sTTI 上下行可选配置方式（Source: URLLC Services in 5GLow Latency Enhancements for LTE, Thomas Fehrenbach, Rohit Datta）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/LTE_sTTI.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;4G LTE sTTI 上下行可选配置方式（Source: URLLC Services in 5GLow Latency Enhancements for LTE, Thomas Fehrenbach, Rohit Datta）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;在 LTE release 15 中，还降低了 &lt;strong&gt;处理（procession）时间 (收到上行资源 grant 到上行传输数据的时间，以及从收到下行指派到反馈 HARQ ACK/NACK 指示的时间)，以前需要 4ms，降至了 3ms。&lt;/strong&gt;&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/R15_process_time.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/R15_process_time.webp&#34;  data-sub-html=&#34;&lt;h2&gt;R15 处理时间的减少从 n&amp;#43;4 到 n&amp;#43;3 ms（Source: 3GPP TR 21.915 Summary of Rel-15 Work Items）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/R15_process_time.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;R15 处理时间的减少从 n+4 到 n+3 ms（Source: 3GPP TR 21.915 Summary of Rel-15 Work Items）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;2018 年，到 LTE release 15 时，&lt;strong&gt;所有的大招都用上，LTE 的网络延迟理论上可以降至双向 2.7 毫秒（下行 0.7 毫秒 + 上行 2.0 毫秒）&lt;/strong&gt;&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/LTE_user_interface_time_delay.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/LTE_user_interface_time_delay.webp&#34;  data-sub-html=&#34;&lt;h2&gt;LTE 用户面时延（Source: URLLC Services in 5GLow Latency Enhancements for LTE, Thomas Fehrenbach, Rohit Datta）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/LTE_user_interface_time_delay.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;LTE 用户面时延（Source: URLLC Services in 5GLow Latency Enhancements for LTE, Thomas Fehrenbach, Rohit Datta）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;至此，LTE 的无线网络延迟改善到头了。&lt;/p&gt;
&lt;p&gt;那么梦寐以求的一毫秒时间延迟怎么实现？剩下的使命需要 5G 来完成。&lt;/p&gt;
&lt;h2 id=&#34;5g-网络延迟&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#5g-%e7%bd%91%e7%bb%9c%e5%bb%b6%e8%bf%9f&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;5G 网络延迟&lt;/h2&gt;&lt;p&gt;和人一样，一项技术也有自己的命运，LTE 从应运而生到如今的如日中天已经走过了 10 多个春秋，正如之前在另一个问题中讨论的从专业角度讲，&lt;a href=&#34;https://www.zhihu.com/question/315446311/answer/673086704&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;为什么需要开展 5G 而不是继续提升 4G？&lt;/a&gt; 因为 4G LTE 从出生伊始已经注定了其时间延迟的下限，而这个下限如今也已经被我们触摸到了。下一步需要我们转向一项延迟下限更低的技术去找寻极限。&lt;/p&gt;
&lt;p&gt;5G 是站在巨人（4G）的肩膀上诞生的，从系统设计之初就将网络时间延迟的特性考虑了进来，成为 5G 需求的一部分: URLLC（Ultra reliable and low latency communication）超低的时延和超高可靠的通信以支持对时延和可靠性要求极高的行业应用，比如智能工厂，远程手术，自动驾驶等等。这部分的需求在 5G 的第一个版本 Release 15 中满足了一部分。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关于超低的时延：1ms 的无线空中接口双向传输时延是怎么一步步实现的呢？&lt;/strong&gt;&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/URLLC.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/URLLC.webp&#34;  data-sub-html=&#34;&lt;h2&gt;5G URLLC 满足极低时延极高可靠业务（Source: Ericsson, Joachim Sachs: 5G Ultra-Reliable and Low Latency Communication, IEEE cscn2017）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/URLLC.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;5G URLLC 满足极低时延极高可靠业务（Source: Ericsson, Joachim Sachs: 5G Ultra-Reliable and Low Latency Communication, IEEE cscn2017）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;2016 年，3GPP 开始了 5G 的需求分析和研究项目，为了满足 ITU 所设置的 &lt;strong&gt;URLLC 极高的可靠性和极低的时延要求&lt;/strong&gt;，在 5G 的需求研究项目 &lt;a href=&#34;http://portal.3gpp.org/webapp/meetingCalendar/MeetingDetails.asp?m_id=18664&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;TR38.913 Study on scenarios and requirements for next generation access technologies&lt;/a&gt; 中的用户面 KPI 中针对 URLLC 业务用户面时延定义了上行 0.5ms 和下行 0.5ms 的要求，加起来正好是 1ms 的双向时延。&lt;/p&gt;
&lt;p&gt;需求的定义明确了，接下来进入了研究如何实现技术需求的阶段，2016 年 3 月，3GPP TSG RAN 71 次会议通过了 &lt;a href=&#34;http://www.3gpp.org/ftp//Specs/archive/38_series/38.912/38912-e10.zip&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;TR38.912 Study on New Radio (NR) access technology&lt;/a&gt; ，这项研究工作致力于提出可行的无线技术来满足 ITU-2020 制定的 5G 需求。而从研究项目伊始，URLLC 就做为一项不可缺少的 5G 需求被考虑进来。&lt;/p&gt;
&lt;p&gt;从 2016 年的研究项目开始到 2018 年中第一版本 5G 标准（release 15 NSA&amp;amp;SA）的出炉，低时延的设计贯穿了整个 5G 无线系统，我们就从用户面的每个层（物理层 PHY，媒体接入控制层 MAC，无线链路控制层 RLC）看看为了实现 1ms 的目标都做了怎样的努力。&lt;/p&gt;
&lt;h3 id=&#34;物理层&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%89%a9%e7%90%86%e5%b1%82&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;物理层&lt;/h3&gt;&lt;p&gt;5G 中物理层的主要作用是：编解码，调制 / 解调，多天线映射等。&lt;/p&gt;
&lt;p&gt;虽然本回答主要讨论的是低时延的系统架构设计，但是低时延是与 URLLC 的另一部分需求：极高的可靠性（99.999%）被共同捆绑在一起的。如果单单考虑低时延会比低时延高可靠简单很多，因为要满足极高的可靠性惯常采用更多的控制信令开销，重传，冗余，这些手段往往会提升时间延迟的水平。所以如何在保证可靠性的同时改善时延水平在物理层的设计中是难上加难。5G 物理层用了哪些手段来改善时延呢？&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/5g_user_interface_protocol_layer.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/5g_user_interface_protocol_layer.webp&#34;  data-sub-html=&#34;&lt;h2&gt;5G 用户面协议层&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/5g_user_interface_protocol_layer.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;5G 用户面协议层&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;包结构packet-structure&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8c%85%e7%bb%93%e6%9e%84packet-structure&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;包结构（Packet structure）&lt;/h3&gt;&lt;p&gt;在 4G LTE 的时延分析中提到过的系统处理时间在时延中所占的分量比较大，而且改善较为不易。这部分时延包括了接收包，获取控制信息，调度信息，解调数据，以及错误检测。在 4G LTE 中是采用下图左侧这种方形的包结构，传输的信息分为三部分，导频信息（Pilot），控制信息（control information），以及数据（data）。这种设计方式被广泛的用来对抗信道衰落。但是在 5G 中 URLLC 包采用的是下图右侧这种设计方式，导频信息，控制信息，以及数据依次在时域上排列，这样做的好处是信道估计，控制信道解码，数据的获取可以串行的进行，通过这样的方式这样减少了处理时间。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Packet_structure.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Packet_structure.webp&#34;  data-sub-html=&#34;&lt;h2&gt;4G LTE 和 5G URLLC 包结构对比 （Source: Ultra Reliable and Low LatencyCommunications in 5G Downlink: PhysicalLayer Aspects）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Packet_structure.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;4G LTE 和 5G URLLC 包结构对比 （Source: Ultra Reliable and Low LatencyCommunications in 5G Downlink: PhysicalLayer Aspects）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;从手机收到资源分配（Grant）指令到数据的传输时间要求如下，中间部分是 5G 不同子载波间隔（Subcarrier Spacing）配置下的不同要求：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Transmission_time_requirements.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Transmission_time_requirements.webp&#34;  data-sub-html=&#34;&lt;h2&gt;从手机收到资源分配（Grant）指令到数据的传输时间要求（Source: NR: the next generation wireless access technology by ErikDahlman, JohanSkold, StefanParkvall, Ericsson）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Transmission_time_requirements.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;从手机收到资源分配（Grant）指令到数据的传输时间要求（Source: NR: the next generation wireless access technology by ErikDahlman, JohanSkold, StefanParkvall, Ericsson）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;信道编码&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bf%a1%e9%81%93%e7%bc%96%e7%a0%81&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;信道编码&lt;/h3&gt;&lt;p&gt;4G LTE 采用 Turbo 和 Simple code 来编解码数据达到无线传输的可靠性。在 5G 中使用的是 LDPC 和 Polar 码来提升数据和控制信道的编解码效率，经过编码界研究的不懈努力，编解码的性能和计算复杂度的提升对于降低时延也有所帮助。&lt;/p&gt;
&lt;h3 id=&#34;更短的传输时间间隔可变的-numerology&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9b%b4%e7%9f%ad%e7%9a%84%e4%bc%a0%e8%be%93%e6%97%b6%e9%97%b4%e9%97%b4%e9%9a%94%e5%8f%af%e5%8f%98%e7%9a%84-numerology&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;更短的传输时间间隔（可变的 Numerology）&lt;/h3&gt;&lt;p&gt;从更短的时间间隔这点说 5G 是天生丽质一点都不为过，LTE 规定的一个子载波 (传送信息的最小频域单位) 是 15KHz，时间域是 1ms （正常情况下）。5G 所需要支持的频率范围非常广，中低频从 450MHz&lt;del&gt;6000MHz（FR1），高频从 24.25GHz&lt;/del&gt;52.6GHz（FR2）。高频意味着更高的相位噪声，所以需要设计更加宽的子载波间隔来抵御相位噪声的干扰。更宽的子载波间隔，意味着时域上更短的时隙，更短的传输时间间隔，我们在 4G LTE 时代千方百计想要降低的传输时间间隔在 5G 时代只需要使用更高的频段，更宽的子载波间隔就轻而易举的降低了。而且根据不同的频段可以选择从 15KHz, 30KHz 到 120KHz 的子载波间隔，可以简单的理解为，&lt;strong&gt;5G 子载波间隔相比于 LTE 15KHz 增加了多少倍，那么在时域上的传输时间间隔就减少相应的倍数&lt;/strong&gt;。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Subcarrier_spacing.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Subcarrier_spacing.webp&#34;  data-sub-html=&#34;&lt;h2&gt;频域子载波间隔成倍增加，时域符号时长相应倍数减少（Source: Ultra Reliable and Low LatencyCommunications in 5G Downlink: PhysicalLayer Aspects）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Subcarrier_spacing.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;频域子载波间隔成倍增加，时域符号时长相应倍数减少（Source: Ultra Reliable and Low LatencyCommunications in 5G Downlink: PhysicalLayer Aspects）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/frame_structure.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/frame_structure.webp&#34;  data-sub-html=&#34;&lt;h2&gt;不同子载波间隔（sub-carrier spacing）对应的无线帧结构&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/frame_structure.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;不同子载波间隔（sub-carrier spacing）对应的无线帧结构&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;微时隙调度mini-slot&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%be%ae%e6%97%b6%e9%9a%99%e8%b0%83%e5%ba%a6mini-slot&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;微时隙调度（Mini-slot）&lt;/h3&gt;&lt;p&gt;微时隙调度继承了 LTE 中减小传输时间间隔 (subslot) 的设计理念，&lt;strong&gt;将最小的传输时间间隔由子帧拓展到了符号上&lt;/strong&gt;。第一优先级最小的调度间隔根据情况可以选择 2 个符号，4 个符号，7 个符号。下图是一个下行数据传输的示例，数据包到达了基站，基站经过 4 个符号的处理以及等待合适的 sPDCCH 时间，随后通过两个符号的微时隙调度将数据传输给用户。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Mini_slot.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Mini_slot.webp&#34;  data-sub-html=&#34;&lt;h2&gt;下行微时隙调度&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Mini_slot.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;下行微时隙调度&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;mac媒体接入控制层&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#mac%e5%aa%92%e4%bd%93%e6%8e%a5%e5%85%a5%e6%8e%a7%e5%88%b6%e5%b1%82&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;MAC（媒体接入控制）层&lt;/h3&gt;&lt;p&gt;MAC 的作用是多路逻辑信道的复用，HARQ（混合重传），以及调度相关的功能。关于时延的改善的技术在 MAC 层有：异步 HARQ（异步混合重传）&lt;/p&gt;
&lt;p&gt;当无线环境出现问题等原因造成传输的数据出错，在 MAC 层会由 HARQ 功能来发起重新传输流程，在 LTE 中，HARQ 的时间间隔（从收到数据到发送反馈给发送方是否正确接收信息指令）是固定的（FDD，TDD 根据子帧结构变化）。&lt;/p&gt;
&lt;p&gt;而在 5G 中，HARQ 的时间间隔是动态指派的，更加的灵活，也符合低时延的设计要求。&lt;/p&gt;
&lt;p&gt;5G 与 4G HARQ 流程时间对比：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/HARQ.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/HARQ.webp&#34;  data-sub-html=&#34;&lt;h2&gt;5G 与 4G LTE HARQ 时延对比（Source: NR: the next generation wireless access technology by ErikDahlman, JohanSkold, StefanParkvall, Ericsson）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/HARQ.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;5G 与 4G LTE HARQ 时延对比（Source: NR: the next generation wireless access technology by ErikDahlman, JohanSkold, StefanParkvall, Ericsson）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;上行免调度传输-grant-free-transmission&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8a%e8%a1%8c%e5%85%8d%e8%b0%83%e5%ba%a6%e4%bc%a0%e8%be%93-grant-free-transmission&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;上行免调度传输 （Grant free transmission）&lt;/h3&gt;&lt;p&gt;和 4G LTE 一样，5G 可以周期性的给用户分配上行资源（&lt;strong&gt;半静态调度&lt;/strong&gt;）来减少上行的传输时延，而且 5G 更加进了一步。在 4G 中半静态调度的资源一般是给每个用户单独分配的，所以当网络中用户较多的时候，造成的浪费是非常大的，因为预留的无线资源终端不一定会使用。&lt;/p&gt;
&lt;p&gt;在 5G 中可以将预留资源分配给一组终端用户，并且设计了当多个用户同时在相同的无线资源上发生冲撞的解决机制。这样在降低时延的同时使宝贵的无线资源的利用率也得到了保证。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Schedule_free_transmission.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Schedule_free_transmission.webp&#34;  data-sub-html=&#34;&lt;h2&gt;5G 上行免调度传输 type1 和 type2 （Source: NR: the next generation wireless access technology by ErikDahlman, JohanSkold, StefanParkvall, Ericsson）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Schedule_free_transmission.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;5G 上行免调度传输 type1 和 type2 （Source: NR: the next generation wireless access technology by ErikDahlman, JohanSkold, StefanParkvall, Ericsson）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;预清空调度downlink-preemption-scheduling&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%a2%84%e6%b8%85%e7%a9%ba%e8%b0%83%e5%ba%a6downlink-preemption-scheduling&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;预清空调度（Downlink preemption Scheduling）&lt;/h3&gt;&lt;p&gt;预清空调度的意思是为某个高优先级的用户清空原来已经分配给其他用户的资源，打个比方，我们去餐馆吃饭，没有位置了，餐馆老板认识我们是高级 VIP，所以把一桌正在吃饭的人赶走了，把桌子留给了咱们。&lt;/p&gt;
&lt;p&gt;通过这样的方式达到了对时间延迟要求高的用户可以立即传输数据，从而降低了时延。下图是一个示例：&lt;/p&gt;
&lt;p&gt;用户 A 已经在一个时隙上被调度了数据，但是这时用户 B 被标记为对时延要求高的数据需要传输。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;如果这时有空闲的时频域资源可用，用户 B 会被优先调度空闲的资源&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;但是如果此时网络负荷较大，没有空闲的资源可用，用户 B 就会抢占其他用户的（例如用户 A）的资源。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种方式有个弊端就是会影响原本被分配资源的 A 的用户的数据传输（在被用户 B 抢占的资源上），当然优秀的 5G 系统也设计了方案来解决这个问题，方式有：HARQ 重传用户 A 受影响的传输数据，或者是直接通过控制信令（DCI2-1）通知用户 A，哪些传输的数据受到了影响。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Preemption_scheduling.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Preemption_scheduling.webp&#34;  data-sub-html=&#34;&lt;h2&gt;下行预清空调度示例（Source: NR: the next generation wireless access technology by ErikDahlman, JohanSkold, StefanParkvall, Ericsson）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Preemption_scheduling.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;下行预清空调度示例（Source: NR: the next generation wireless access technology by ErikDahlman, JohanSkold, StefanParkvall, Ericsson）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;rlc无线链路控制层&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#rlc%e6%97%a0%e7%ba%bf%e9%93%be%e8%b7%af%e6%8e%a7%e5%88%b6%e5%b1%82&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;RLC（无线链路控制）层&lt;/h3&gt;&lt;p&gt;RLC 层主要负责 RLC 数据的切分，重复数据去除，RLC 重传的工作。&lt;/p&gt;
&lt;p&gt;在 RLC 层中关于低时延的技术考量主要体现在：在 4G LTE 中 RLC 层还需要负责保证数据的按顺序传递（&lt;strong&gt;In-sequence delivery&lt;/strong&gt;），即前面的包没有向上层传递之前，排在后面的包需要等待。在 5G 中去掉了这样的功能要求来保障低时延水平。这样做的好处是，如果之前有某些包因为某些原因（例如无线环境突然变差）丢失了需要重传，在 5G 中后面的包不需要等到前面的包重传完毕就可以直接向上层传递。&lt;/p&gt;
&lt;p&gt;那么通过以上关键技术的组合，是怎么一步步使 5G 无线网络时间延迟降低到 1 毫秒的呢？&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Two_way_delay_evolution.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Two_way_delay_evolution.webp&#34;  data-sub-html=&#34;&lt;h2&gt;无线网络空中接口双向时延演进&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Two_way_delay_evolution.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;无线网络空中接口双向时延演进&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;通过使用 30KHz 的子载波间隔，上行免调度，以及两个符号的微时隙的 5G 系统配置方案，可以达到低于双向时延 1ms 以下的要求。如果采用 5G 高频通信，使用 120KHz 的子载波间隔，时延可以更低。&lt;/p&gt;
&lt;p&gt;至此，1ms 梦寐以求的目标终于达成，但是科技工作者们仍没有停下探索的脚步，目前的研究转向了 5G 物理层的增强对 URLLC 业务的支持，而新的研究项目也已经成功立项并完成：&lt;a href=&#34;http://www.3gpp.org/ftp//Specs/archive/38_series/38.824/38824-g00.zip&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Study on physical layer enhancements for NR ultra-reliable and low latency case (URLLC)&lt;/a&gt;, 在下一版本 5G release 16 中，URLLC 将从 PDCCH，UCI，PUSCH（上下行控制信道以及上行数据信道）获得更多的提升。同时还研究支持对时延和可靠性要求极高的工业互联网应用 &lt;a href=&#34;http://www.3gpp.org/ftp//Specs/archive/38_series/38.825/38825-g00.zip&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Study on NR industrial Internet of Things (IoT)&lt;/a&gt;。探索为什么 5G 能降低网络时间延迟到 1ms 完结，但是需要引起注意的是，我们这里讨论的延迟是整个网络中的一部分，特指空中接口。但是网络的传输时延绝不是空中接口单一接口就能够保证的，还涉及到端到端的核心网以及互联网。剩下这部分属于 TSN（Time Sensitive Networking）的范围，什么是 TSN，怎么将无线 URLLC 和 TSN 结合起来为工业 4.0 服务，下次有机会再聊。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Industrial_Internet_Service.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Industrial_Internet_Service.webp&#34;  data-sub-html=&#34;&lt;h2&gt;无线网络的低时延高可靠特性结合 TSN 为工业互联网服务（Source：Boosting smart manufacturing with 5G wireless connectivity, Ericsson）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/5G/Delay/Industrial_Internet_Service.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;无线网络的低时延高可靠特性结合 TSN 为工业互联网服务（Source：Boosting smart manufacturing with 5G wireless connectivity, Ericsson）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;历史的有趣之处就在于：总是在起起伏伏，跌跌撞撞中前行，不断的循环，却又惊人的相似。对比 5G 中时延减少的思路，很多都和 4G 类似。而从 4G 一路看过来，才不会乱花渐欲迷人眼。20 毫秒到 1 毫秒，这么短，却又那么长，背后是无数通信工作者夜以继日，年复一年，默默无闻的贡献自己的力量。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;https://www.itu.int/dms_pub/itu-r/opb/rep/R-REP-M.2410-2017-PDF-E.pdf&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;ITU-R M.2410-0 Minimum requirements related to technical performance for IMT-2020 radio interface (s)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;https://www.3gpp.org/DynaReport/38913.htm&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;3GPP 38.913 Study on scenarios and requirements for next generation access technologies&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[3] &lt;a href=&#34;https://www.3gpp.org/DynaReport/36881.htm&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;3GPP 36.881 Study on latency reduction techniques for LTE&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[4] &lt;a href=&#34;http://www.3gpp.org/ftp/tsg_Ran/tsg_Ran/TSGR_67/Docs/RP-150465.zip&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RP-150465 New SI proposal: Study on Latency reduction techniques for LTE&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[5] &lt;a href=&#34;https://www.3gpp.org/ftp/tsg_ran/TSG_RAN/TSGR_71/Docs/RP-160667.zip&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RP-160667 L2 latency reduction techniques for LTE&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[6] &lt;a href=&#34;http://portal.3gpp.org/ngppapp/CreateTdoc.aspx?mode=view&amp;amp;contributionId=713547&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RP-161299 New Work Item on shortened TTI and processing time for LTE&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[7] &lt;a href=&#34;http://www.3gpp.org/ftp/TSG_RAN/WG2_RL2/TSGR2_91/Docs/R2-153490.zip&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;R2-153490 L2 enhancements to reduce latency&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[8] &lt;a href=&#34;https://arxiv.org/pdf/1808.07034.pdf&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Thomas Fehrenbach, Rohit Datta, URLLC Services in 5G Low Latency Enhancements for LTE&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[9] &lt;a href=&#34;http://portal.3gpp.org/webapp/meetingCalendar/MeetingDetails.asp?m_id=18664&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;38.913 Study on scenarios and requirements for next generation access technologies&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[10] &lt;a href=&#34;http://www.3gpp.org/ftp//Specs/archive/38_series/38.912/38912-e10.zip&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;TR38.912 Study on New Radio (NR) access technology &lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[11] &lt;a href=&#34;http://cscn2017.ieee-cscn.org/files/2017/08/Janne_Peisa_Ericsson_CSCN2017.pdf&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Joachim Sachs: 5G Ultra-Reliable and Low Latency Communication IEEE cscn2017&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[12] &lt;a href=&#34;https://futurenetworks.ieee.org/images/files/pdf/FirstResponder/Rapeepat-Ratasuk-Nokia.pdf&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Ultra Reliable Low Latency Communication for 5G New Radio&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[13] &lt;a href=&#34;https://ieeexplore.ieee.org/document/8403963&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Ultra Reliable and Low Latency Communications in 5G Downlink: Physical Layer Aspects&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[14] ErikDahlman, JohanSkold, StefanParkvall, Ericsson，NR: the next generation wireless access technology&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[15] &lt;a href=&#34;http://www.3gpp.org/ftp//Specs/archive/38_series/38.824/38824-g00.zip&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;3GPP TS38.824 Study on physical layer enhancements for NR ultra-reliable and low latency case (URLLC)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[16] &lt;a href=&#34;http://www.3gpp.org/ftp//Specs/archive/38_series/38.825/38825-g00.zip&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;3GPP TR38.825 Study on NR industrial Internet of Things (IoT)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[17] &lt;a href=&#34;https://www.ericsson.com/assets/local/publications/ericsson-technology-review/docs/2019/etr-magazine-2019-01.pdf&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Boosting smart manufacturing with 5G wireless connectivity&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[18] &lt;a href=&#34;http://www.3gpp.org/ftp//Specs/archive/21_series/21.915/21915-100.zip&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;3GPP TR 21.915 Summary of Rel-15 Work Items&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：上行链路帧结构</title>
      <link>https://www.techkoala.net/lte_uplink_frame_structure/</link>
      <pubDate>Sat, 10 Aug 2019 19:46:00 +0800</pubDate>
      
      <guid>https://www.techkoala.net/lte_uplink_frame_structure/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;LTE 上行链路帧结构详细讲解&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;LTE 使用 SC (单载波)-FDMA 作为上行链路信号。&lt;/p&gt;
&lt;h2 id=&#34;时隙结构&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%97%b6%e9%9a%99%e7%bb%93%e6%9e%84&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;时隙结构&lt;/h2&gt;&lt;p&gt;从下面的时隙结构可以看出，LTE 上下行链路的时隙结构是相似的：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-UL-FS/FDD_UL_FrameStructure_Symbols.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-UL-FS/FDD_UL_FrameStructure_Symbols.png&#34;  data-sub-html=&#34;&lt;h2&gt;上行时隙结构&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-UL-FS/FDD_UL_FrameStructure_Symbols.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;上行时隙结构&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;与下行链路相同，上行链路中的帧时间和时隙时间与下行链路中相同。并且资源块结构和下行链路上也相同。如上所述，在一个时隙中的 7 个符号在上行链路和下行链路上也是相同的。&lt;/p&gt;
&lt;p&gt;你可能会注意到的一点区别是每个物理信道的位置。在下行链路情况下，信道通常占用整个带宽，但是上行链路时隙中的信道更局限。例如，PUCCH 仅位于整个带宽中的的最低端和最高端。&lt;/p&gt;
&lt;h3 id=&#34;pucch-rs&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#pucch-rs&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;PUCCH RS&lt;/h3&gt;&lt;p&gt;携带解调 PUCCH 所需的参考信号。这意味着如果此部分配置不正确或 eNodeB 检测不到此部件，则 eNodeB 无法解码 PUCCH。&lt;/p&gt;
&lt;h3 id=&#34;pucch&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#pucch&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;PUCCH&lt;/h3&gt;&lt;p&gt;此信道可以承载大量信息(UCI)，但根据配置的不同，它只能承载以下信息中的一部分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ACK/NACK for the recieved PDSCH data&lt;/li&gt;
&lt;li&gt;CQI&lt;/li&gt;
&lt;li&gt;RI&lt;/li&gt;
&lt;li&gt;PMI&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;正如你在时隙结构中看到的，PUCCH 以子帧内两个时隙之间交替的方式位于上行链路频域的两端，这意味着如果 PUCCH 是时隙 0 (第一个时隙) 中的频域的最低部分，并且它将位于时隙 1 (第二个时隙) 中的频域的最高部分。分配给 PUCCH 的资源元素的确切数量由网络确定，并且配置通过 SIB2 广播到 UE。&lt;/p&gt;
&lt;p&gt;详细的 PUCHH 结构参考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;http://www.sharetechnote.com/html/Handbook_LTE_PUCCH_Format.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PUCCH Format&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;http://www.sharetechnote.com/html/Handbook_LTE_PUCCH_Format1_Location.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PUCCH Format 1,1a,1b Location&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;http://www.sharetechnote.com/html/Handbook_LTE_PUCCH_Format2_Location.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PUCCH Format 2,2a,2b Location&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;pusch-rs&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#pusch-rs&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;PUSCH RS&lt;/h3&gt;&lt;p&gt;携带解调 PUSCH 所需的参考信号。&lt;/p&gt;
&lt;h3 id=&#34;pusch&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#pusch&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;PUSCH&lt;/h3&gt;&lt;p&gt;承载 UE 尝试发送的上行链路数据。并且除了上行链路数据之外，还可以携带 UE 接收的 PDSCH 的 ACK/NACK。&lt;/p&gt;
&lt;h3 id=&#34;srs&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#srs&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;SRS&lt;/h3&gt;&lt;p&gt;参考 &lt;a href=&#34;http://www.sharetechnote.com/html/Handbook_LTE_SRS.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;SRS in Quick Reference&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;上行资源网格&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8a%e8%a1%8c%e8%b5%84%e6%ba%90%e7%bd%91%e6%a0%bc&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;上行资源网格&lt;/h2&gt;&lt;p&gt;具体来说，上行资源还有一种网格格式，如下所示:&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-UL-FS/36_211_Fig5_2_1-1_UL_ResourceGrid.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-UL-FS/36_211_Fig5_2_1-1_UL_ResourceGrid.png&#34;  data-sub-html=&#34;&lt;h2&gt;上行资源网格&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-UL-FS/36_211_Fig5_2_1-1_UL_ResourceGrid.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;上行资源网格&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;最小的单元是 “资源元素 (RE)”，最小的资源分配单元是 RB (资源块)，它沿时域跨越 7 RE，沿频域跨越 12 RE。 这意味着一个 RB 有 84 个单元 (7x12)。&lt;/p&gt;
&lt;h2 id=&#34;通信中的信道&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%80%9a%e4%bf%a1%e4%b8%ad%e7%9a%84%e4%bf%a1%e9%81%93&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;通信中的信道&lt;/h2&gt;&lt;p&gt;下图显示了上行/下行数据传输的总体顺序。你可以将数据传输序列图与 DL/UL 帧结构中每个通道的特定位置相关联。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-UL-FS/ChannelFlow_Small.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-UL-FS/ChannelFlow_Small.png&#34;  data-sub-html=&#34;&lt;h2&gt;LTE 上下行传输顺序图&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-UL-FS/ChannelFlow_Small.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;LTE 上下行传输顺序图&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;帧结构总览&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%b8%a7%e7%bb%93%e6%9e%84%e6%80%bb%e8%a7%88&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;帧结构总览&lt;/h2&gt;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-UL-FS/UL_SlotStructure_Constellation.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-UL-FS/UL_SlotStructure_Constellation.png&#34;  data-sub-html=&#34;&lt;h2&gt;上行帧结构概览&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-UL-FS/UL_SlotStructure_Constellation.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;上行帧结构概览&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] &lt;a href=&#34;http://www.sharetechnote.com/html/FrameStructure_UL.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;UL FrameStructure&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：物理信道</title>
      <link>https://www.techkoala.net/lte_physical_channels/</link>
      <pubDate>Mon, 05 Aug 2019 21:06:48 +0800</pubDate>
      
      <guid>https://www.techkoala.net/lte_physical_channels/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;LTE 物理信道详解&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;广播信道pbch&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%b9%bf%e6%92%ad%e4%bf%a1%e9%81%93pbch&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;广播信道（PBCH）&lt;/h2&gt;&lt;p&gt;物理广播信道（Physical Broadcast CHannel，PBCH）用于承载系统的 MIB 广播信息。&lt;/p&gt;
&lt;p&gt;LTE 系统广播信息分为&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;MIB（Master Information Block）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;系统基本的配置信息，在 &lt;code&gt;PBCH&lt;/code&gt; 固定的物理资源上进行传输 &lt;code&gt;MIB&lt;/code&gt; 数据块的总长度为 40 比特，包含 24 个信息比特和 16 个 &lt;code&gt;CRC&lt;/code&gt; 比特（以加扰的方式携带关于基站发射天线数目（1/2/4）的信息）。信息比特中包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;下行系统带宽指示（3 比特）&lt;/li&gt;
&lt;li&gt;PHICH 资源指示（3 比特）&lt;/li&gt;
&lt;li&gt;系统帧号 SFN（8 比特）&lt;/li&gt;
&lt;li&gt;预留的 10 个比特&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;MIB&lt;/code&gt; 信息的传输周期 &lt;code&gt;TTI=40ms&lt;/code&gt;，在位于每个 &lt;code&gt;10ms&lt;/code&gt; 无线帧的第一个子帧的 &lt;code&gt;PBCH&lt;/code&gt; 信道上传输。&lt;code&gt;MIB&lt;/code&gt; 数据块经过信道编码、速率匹配和加扰后，得到 1920 比特，映射到 &lt;code&gt;40ms&lt;/code&gt; 内，间隔为 &lt;code&gt;10ms&lt;/code&gt; 的 4 个子帧的 &lt;code&gt;PBCH&lt;/code&gt; 信道的物理资源上。其中，每一个 &lt;code&gt;PBCH&lt;/code&gt; 子帧都是可自解码的，也就是说假设信道质量足够好的话，终端可以通过 4 次中的任意一次的接收即可解调出 &lt;code&gt;MIB&lt;/code&gt; 信息。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_26.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_26.webp&#34;  data-sub-html=&#34;&lt;h2&gt;LTE 物理广播信道&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_26.webp&#39;  
            &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;LTE 物理广播信道&lt;/figcaption&gt;
      &lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SIB（System Information Block）&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;PBCH&lt;/code&gt; 信道位于每个 &lt;code&gt;10ms&lt;/code&gt; 无线帧的第一个子帧，占用 4 个连续的 &lt;code&gt;OFDM&lt;/code&gt; 符号，在频域上占用下行频带中心 &lt;code&gt;1.08MHz&lt;/code&gt; 的带宽。也就是说，对于各种不同的系统带宽（1.4MHz、3MHz、5MHz、10MHz、15MHz、20MHz），物理广播信道 &lt;code&gt;PBCH&lt;/code&gt; 的传输带宽相同，总是占用频带中心的 1.08MHz 带宽（72 个子载波）。物理广播信道 PBCH 频域结构。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_27.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_27.webp&#34;  data-sub-html=&#34;&lt;h2&gt;物理广播信道 PBCH 频域结构&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_27.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;物理广播信道 PBCH 频域结构&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;当发射天线为 2/4 的时候，&lt;code&gt;PBCH&lt;/code&gt; 采用&lt;strong&gt;发送分集&lt;/strong&gt;（SFBC/SFBC+FSTD）的方式。在资源映射的时候，为了方便终端在不知道发射天线数目情况下的&lt;strong&gt;盲检测&lt;/strong&gt;，对 1、2 或者 4 的发射天线数目，使用相同的物理资源映射方式，即总是空出 4 天线的小区公用导频 &lt;code&gt;CRS&lt;/code&gt; 资源。&lt;/p&gt;
&lt;h2 id=&#34;下行共享信道pdsch&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8b%e8%a1%8c%e5%85%b1%e4%ba%ab%e4%bf%a1%e9%81%93pdsch&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;下行共享信道（PDSCH）&lt;/h2&gt;&lt;p&gt;下行物理共享信道（Physical Downlink Shared CHannel，PDSCH）用于下行数据的调度传输，是 LTE 物理层主要的下行&lt;strong&gt;数据承载信道&lt;/strong&gt;，可以承载来自上层的不同的传输内容（即不同的逻辑信道），包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;寻呼信息&lt;/li&gt;
&lt;li&gt;广播信息&lt;/li&gt;
&lt;li&gt;控制信息和业务数据信息&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;作为决定物理层性能的关键因素之一，PDSCH 的传输支持各种物理层机制，包括信道自适应的调度，&lt;code&gt;HARQ&lt;/code&gt; 和各种 &lt;code&gt;MIMO&lt;/code&gt; 机制。&lt;/p&gt;
&lt;h3 id=&#34;控制格式指示信道pcfich&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%8e%a7%e5%88%b6%e6%a0%bc%e5%bc%8f%e6%8c%87%e7%a4%ba%e4%bf%a1%e9%81%93pcfich&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;控制格式指示信道（PCFICH）&lt;/h3&gt;&lt;p&gt;物理控制格式指示信道（Physical Control Format Indicator CHannel，PCFICH）指示物理层控制信道的格式。&lt;/p&gt;
&lt;p&gt;在 LTE 中，物理层控制信道（PDCCH）在每个子帧的前几个 &lt;code&gt;OFDM&lt;/code&gt; 符号上传输，根据系统物理层控制信息负载情况的不同，该数值可能是 1、2 或者 3（在使用最小值 &lt;code&gt;1.4MHz&lt;/code&gt; 的系统带宽的时候，为了提供足够的物理层控制信息的容量，也可以设置为 4）。&lt;code&gt;PCFICH&lt;/code&gt; 信道正是对该数值进行了指示，即在当前子帧中，前几个 &lt;code&gt;OFDM&lt;/code&gt; 符号用于物理层控制信道 &lt;code&gt;PDCCH&lt;/code&gt; 的传输。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PCFICH&lt;/code&gt; 指示当前子帧中 &lt;code&gt;PDCCH&lt;/code&gt; 的符号数目：1、2、3（当系统带宽 1.4MHz 的时候，取值为 2、3、4）。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PCFICH&lt;/code&gt; 的基带处理过程如图所示，其携带的 3 种可能性通过编码映射得到 32 比特的信息，经过 &lt;code&gt;QPSK&lt;/code&gt; 调制后形成 16 个调制符号，这 16 个调制符号将映射到子帧第 1 个 &lt;code&gt;OFDM&lt;/code&gt; 符号上的 4 个资源单元组 &lt;code&gt;REG&lt;/code&gt; 上（每个 &lt;code&gt;REG&lt;/code&gt; 包含 4 个 &lt;code&gt;RE&lt;/code&gt;，可以承载 4 个调制符号）。为了获得充分的分集增益，这 4 个 &lt;code&gt;REG&lt;/code&gt; 均匀地分布在系统下行带宽上。可以注意到，其中频域的起始位置 k 与小区 ID 相关，因此不同小区的 &lt;code&gt;PCFICH&lt;/code&gt; 将形成相对的频域偏移，避免不同小区的 &lt;code&gt;PCFICH&lt;/code&gt; 之间的干扰。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_28.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_28.webp&#34;  data-sub-html=&#34;&lt;h2&gt;物理控制信道格式指示信道（PCFICH）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_28.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;物理控制信道格式指示信道（PCFICH）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;&lt;code&gt;PCFICH&lt;/code&gt; 信道采用的发射天线与 &lt;code&gt;PBCH&lt;/code&gt; 相同，即 1、2 或者 4。当发射天线数目为 2 或者 4 的时候，使用 &lt;code&gt;SFBC&lt;/code&gt;/&lt;code&gt;SFBC+FSTD&lt;/code&gt; 的发送分集方式。&lt;/p&gt;
&lt;h3 id=&#34;harq-指示信道phich&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#harq-%e6%8c%87%e7%a4%ba%e4%bf%a1%e9%81%93phich&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;HARQ 指示信道（PHICH）&lt;/h3&gt;&lt;p&gt;物理 HARQ 指示信道（Physical HARQ Indicator CHannel，PHICH）承载对上行数据传输的 &lt;code&gt;HARQ&lt;/code&gt; &lt;code&gt;ACK&lt;/code&gt;/&lt;code&gt;NACK&lt;/code&gt; 反馈信息。&lt;/p&gt;
&lt;p&gt;物理层 &lt;code&gt;PHICH&lt;/code&gt; 信道的传输以 &lt;code&gt;PHICH&lt;/code&gt; 组的形式来组织，1 个 &lt;code&gt;PHICH&lt;/code&gt; 信道由 &lt;code&gt;PHICH&lt;/code&gt; &lt;strong&gt;组编号&lt;/strong&gt;和&lt;strong&gt;组内编号&lt;/strong&gt;共同确定。&lt;/p&gt;
&lt;p&gt;1 个 &lt;code&gt;PHICH&lt;/code&gt; 组内的多个 &lt;code&gt;PHICH&lt;/code&gt; 信道占用&lt;strong&gt;相同&lt;/strong&gt;的时频域物理资源，采用&lt;strong&gt;正交扩频序列&lt;/strong&gt;的复用方式。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 &lt;code&gt;Normal CP&lt;/code&gt; 的情况下，采用扩频因子为 4 结合 &lt;code&gt;I/Q&lt;/code&gt; 两路 &lt;code&gt;BPSK&lt;/code&gt; 调制的复用方式，1 个 &lt;code&gt;PHICH &lt;/code&gt;组占用 12 个调制符号（3 个 &lt;code&gt;REG&lt;/code&gt;），可以复用 8 个 &lt;code&gt;PHICH&lt;/code&gt; 信道&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;Extended CP&lt;/code&gt; 时，针对频率选择性较强的无线信道，采用扩频因子为 2 结合 &lt;code&gt;I/Q &lt;/code&gt;两路 &lt;code&gt;BPSK&lt;/code&gt; 调制的复用方式，1 个 &lt;code&gt;PHICH&lt;/code&gt; 组占用 6 个调制符号，可以复用 4 个 &lt;code&gt;PHICH&lt;/code&gt; 信道，此时，2 个 &lt;code&gt;PHICH&lt;/code&gt; 组共同占用 3 个 &lt;code&gt;REG&lt;/code&gt; 的物理资源&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;PHICH&lt;/code&gt; 信道的基带处理过程如图所示，1 个比特的 &lt;code&gt;ACK&lt;/code&gt;/&lt;code&gt;NACK&lt;/code&gt;（0/1）信息使用重复编码的方式得到 3 个比特的编码后信息，然后经过 &lt;code&gt;BPSK&lt;/code&gt; 调制以及系数为 4 的扩频操作，得到 12 个符号，映射在 &lt;code&gt;PHICH&lt;/code&gt; 组所对应的 3 个 &lt;code&gt;REG&lt;/code&gt; 的物理资源位置上。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_29.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_29.webp&#34;  data-sub-html=&#34;&lt;h2&gt;物理 HARQ 指示信道（PHICH）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_29.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;物理 HARQ 指示信道（PHICH）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;在频域上，1 个 &lt;code&gt;PHICH&lt;/code&gt; 组对应的 3 个 &lt;code&gt;REG&lt;/code&gt; 采用分布式的映射方式，以获得分集增益&lt;/li&gt;
&lt;li&gt;在时间上，&lt;code&gt;PHICH&lt;/code&gt; 有&lt;strong&gt;正常&lt;/strong&gt;（normal）和&lt;strong&gt;扩展&lt;/strong&gt;（extended）两种资源映射方式
&lt;ul&gt;
&lt;li&gt;在采用正常方式的时候，&lt;code&gt;PHICH&lt;/code&gt; 信道映射在子帧的第一个 &lt;code&gt;OFDM&lt;/code&gt; 符号上；&lt;/li&gt;
&lt;li&gt;当 &lt;code&gt;PDCCH&lt;/code&gt; 的长度为 3 时（在混合载波的 MBSFN 子帧或者 &lt;code&gt;TDD&lt;/code&gt; 特殊子帧中，&lt;code&gt;PDCCH&lt;/code&gt; 长度为 2 时），&lt;code&gt;PHICH&lt;/code&gt; 可以配置为采用扩展的方式，此时每 1 个 &lt;code&gt;PHICH&lt;/code&gt; 信道将分布在 &lt;code&gt;PDCCH&lt;/code&gt; 所占用的多个 &lt;code&gt;OFDM&lt;/code&gt; 符号上。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在 &lt;code&gt;PCFICH&lt;/code&gt; 所指示的前 n 个 &lt;code&gt;OFDM &lt;/code&gt;符号中，除了用于 &lt;code&gt;PCFICH&lt;/code&gt; 和 &lt;code&gt;PHICH&lt;/code&gt; 传输的资源外，其余的将用于 &lt;code&gt;PDCCH&lt;/code&gt; 的传输。&lt;/p&gt;
&lt;p&gt;为了确定用于 &lt;code&gt;PDCCH&lt;/code&gt; 的资源，需要先确定用于 &lt;code&gt;PCFICH&lt;/code&gt; 和 &lt;code&gt;PHICH&lt;/code&gt; 的资源，其中 &lt;code&gt;PCFICH&lt;/code&gt; 的资源是&lt;strong&gt;固定的&lt;/strong&gt;，而用于 &lt;code&gt;PHICH&lt;/code&gt; 传输的资源数目则由系统在 &lt;code&gt;PBCH &lt;/code&gt;广播信息进行半静态的指示。&lt;code&gt;MIB&lt;/code&gt; 信息中有 3 个比特用于 &lt;code&gt;PHICH&lt;/code&gt; 资源的指示，其中包括了正常或者扩展两种时间长度以及 &lt;code&gt;PHICH &lt;/code&gt;组数目 4 种可能性的指示。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PHICH&lt;/code&gt; 信道发射天线的数目与 &lt;code&gt;PBCH&lt;/code&gt; &lt;strong&gt;相同&lt;/strong&gt;，当发射天线数目为 2、4 的时候采用&lt;code&gt; SFBC&lt;/code&gt;/&lt;code&gt;SFBC+FSTD&lt;/code&gt; 的&lt;strong&gt;发送分集&lt;/strong&gt;方式。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PHICH&lt;/code&gt; 信道的&lt;strong&gt;索引号&lt;/strong&gt;与上行数据传输的资源位置&lt;strong&gt;相对应&lt;/strong&gt;，也就是说，&lt;strong&gt;不需要&lt;/strong&gt;采用信令进行指示，根据上行 &lt;code&gt;PUSCH&lt;/code&gt; 数据传输的资源位置就可以确定下行 &lt;code&gt;PHICH&lt;/code&gt; 信号的索引号。&lt;/p&gt;
&lt;p&gt;具体来说，由相应的上行 &lt;code&gt;PUSCH&lt;/code&gt; 数据传输使用的第 1 个物理资源块 &lt;code&gt;PRB&lt;/code&gt; 的序号所确定。另外，为了使得各个 &lt;code&gt;PHICH&lt;/code&gt; 组中实际使用的 &lt;code&gt;PHICH&lt;/code&gt; 信道数量的负载均衡，相邻的上行 &lt;code&gt;PRB&lt;/code&gt; 位置对应于不同 &lt;code&gt;PHICH&lt;/code&gt; 组中的 &lt;code&gt;PHICH&lt;/code&gt; 信道。&lt;/p&gt;
&lt;h2 id=&#34;下行控制信道pdcch&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8b%e8%a1%8c%e6%8e%a7%e5%88%b6%e4%bf%a1%e9%81%93pdcch&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;下行控制信道（PDCCH）&lt;/h2&gt;&lt;p&gt;下行物理控制信道（Physical Downlink Control CHannel，PDCCH）用于承载物理层的下行控制消息，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上／下行数据传输的调度信息&lt;/li&gt;
&lt;li&gt;上行功率控制命令信息&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;PDCCH&lt;/code&gt; 信道的传输以控制信道单元（Control Channel Element，CCE）的形式来组织，1 个 CCE 由 9 个 REG 组成（即 9×4=36 个 RE）。根据所占用的 &lt;code&gt;CCE&lt;/code&gt; 数目的不同，标准中定义了 4 种 &lt;code&gt;PDCCH&lt;/code&gt; 格式，分别占用 1、2、4、8 个 CCE，相应的数值又称为 &lt;code&gt;PDCCH&lt;/code&gt; 的聚合等级（Aggregation Level）。&lt;/p&gt;
&lt;p&gt;一个下行子帧可以承载多个 &lt;code&gt;PDCCH&lt;/code&gt; 信道，各个 &lt;code&gt;PDCCH&lt;/code&gt; 信道进行独立的 &lt;code&gt;CRC&lt;/code&gt; 计算、加扰、信道编码并根据 Aggregation Level 进行速率匹配。然后，一个子帧中所有的 &lt;code&gt;PDCCH &lt;/code&gt;信道将复用为 1 个数据比特流，对该数据流进行填充，使各个 &lt;code&gt;PDCCH&lt;/code&gt; 信道符合定义的 &lt;code&gt;CCE&lt;/code&gt; 起始位置的规则（Aggregation Level 为 n 的 &lt;code&gt;PDCCH&lt;/code&gt; 的起始位置为 n 整数倍的 &lt;code&gt;CCE&lt;/code&gt; 位置）；并且使填充后的数据比特流长度能够充满分配给 &lt;code&gt;PDCCH&lt;/code&gt; 的 &lt;code&gt;OFDM&lt;/code&gt; 符号的所有资源（除去 &lt;code&gt;PCFICH&lt;/code&gt; 和 &lt;code&gt;PHICH&lt;/code&gt;）。然后，对形成的数据流进行加扰、调制和多天线映射。最后映射到分配给 &lt;code&gt;PDCCH&lt;/code&gt; 的物理资源上。&lt;/p&gt;
&lt;p&gt;在 &lt;code&gt;PDCCH&lt;/code&gt; 数据流向物理资源的映射过程中，包含了交织的操作，数据流以 &lt;code&gt;REG&lt;/code&gt;（4 个调制符号）为单位进行交织。通过交织的资源映射，每个 &lt;code&gt;PDCCH&lt;/code&gt; 信道能够获得充分的分集增益。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_30.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_30.webp&#34;  data-sub-html=&#34;&lt;h2&gt;下行物理控制信道（PDCCH）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_30.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;下行物理控制信道（PDCCH）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;&lt;code&gt;PDCCH&lt;/code&gt; 信道的发射天线与 &lt;code&gt;PBCH&lt;/code&gt; 相同，即 1、2 或者 4。当发射天线数目为 2、4 的时候采用 &lt;code&gt;SFBC&lt;/code&gt;/&lt;code&gt;SFBC+FSTD&lt;/code&gt; 的发送分集方式。&lt;/p&gt;
&lt;p&gt;终端对 &lt;code&gt;PDCCH&lt;/code&gt; 信道的接收采用&lt;strong&gt;盲检测&lt;/strong&gt;的方式，即终端根据所使用的下行控制信息（DCI）的格式，解调所有可能属于自己的下行 &lt;code&gt;PDCCH&lt;/code&gt; 信道，搜索属于自己的信息。&lt;/p&gt;
&lt;h2 id=&#34;随机接入信道prach&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%9a%8f%e6%9c%ba%e6%8e%a5%e5%85%a5%e4%bf%a1%e9%81%93prach&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;随机接入信道（PRACH）&lt;/h2&gt;&lt;p&gt;物理随机接入信道（Physical RandomAccess CHannel，PRACH）用于终端上行发送随机接入信号（random access preamble），启动随机接入的过程。&lt;/p&gt;
&lt;p&gt;随机接入信号由&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;循环前缀（Cyclic Prefix，CP）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;接入序列（Sequence）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;**保护时间（Guard Time，GT）
**
3 个部分组成。&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_31.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_31.webp&#34;  data-sub-html=&#34;&lt;h2&gt;物理随机接入信道&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_31.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;物理随机接入信道&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;根据适用的场景的不同（例如：小区半径和链路的功率预算），LTE 物理层支持 5 种随机接入信号格式，具体使用过程中，由高层信令指示小区所使用的随机接入信道的配置。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_32.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_32.webp&#34;  data-sub-html=&#34;&lt;h2&gt;随机接入信号格式&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_32.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;随机接入信号格式&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;其中格式 4 的随机接入信号仅用于 &lt;code&gt;TDD Type 2&lt;/code&gt; 中，当 &lt;code&gt;TDD&lt;/code&gt; 配置特殊时隙 &lt;code&gt;UpPTS&lt;/code&gt; 的长度为 2 个 &lt;code&gt;OFDM&lt;/code&gt; 符号时，可以在 &lt;code&gt;UpPTS&lt;/code&gt; 的位置发送格式 4 的随机接入信号，以较小的开销实现随机接入的功能。&lt;/p&gt;
&lt;p&gt;在频域上，&lt;code&gt;PRACH&lt;/code&gt; 占用 6 个 PRB（1.08MHz）的带宽。以 &lt;code&gt;Format 0&lt;/code&gt; 为例，&lt;code&gt;PRACH&lt;/code&gt; 信号的生成方式如图所示，信号占用的带宽为 &lt;code&gt;1 048.75kHz&lt;/code&gt;，不足 &lt;code&gt;1.08MHz&lt;/code&gt; 的部分作为频域的保护带。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_33.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_33.webp&#34;  data-sub-html=&#34;&lt;h2&gt;PRACH preamble 生成方法（Format 0）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_33.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;PRACH preamble 生成方法（Format 0）&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;LTE 物理层使用 &lt;code&gt;Zadoff-Chu&lt;/code&gt; 序列作为生成随机接入信号的序列。每个小区有 64 个可用的序列，由小区的下行广播进行指示。&lt;/p&gt;
&lt;p&gt;小区中分配给上行随机接入信道的物理资源位置由高层信令进行指示。在关于小区随机接入信道配置的信息中，指示了使用的 &lt;code&gt;PRACH&lt;/code&gt; 格式以及物理资源的位置。&lt;/p&gt;
&lt;p&gt;对于 &lt;code&gt;FDD Type 1&lt;/code&gt;，每个时刻最多传输一个 &lt;code&gt;PRACH&lt;/code&gt; 信道，即没有频分复用。结合配置信息中指示的&lt;strong&gt;PRACH 信道的时间位置&lt;/strong&gt;和&lt;strong&gt;PRACH 信道频率位置&lt;/strong&gt;的信息，可以确定小区中 &lt;code&gt;PRACH&lt;/code&gt; 信道的时频资源位置。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;例如：设置使用 PRACH Format 0，周期等于 10ms，时间偏移量等于 1 个子帧，频率位置等于 1，那么小区中用于 PRACH 信道的物理资源位置&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_34.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_34.webp&#34;  data-sub-html=&#34;&lt;h2&gt;随机接入信道的物理资源位置&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_34.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;随机接入信道的物理资源位置&lt;/figcaption&gt;
    &lt;/figure&gt;

&lt;/blockquote&gt;&lt;p&gt;对于 &lt;code&gt;TDD Type 2&lt;/code&gt;，除了在 &lt;code&gt;UpPTS&lt;/code&gt; 上支持 &lt;code&gt;PRACH Format 4&lt;/code&gt; 的发送之外，同一个时刻还可能传输多个频分的 &lt;code&gt;PRACH&lt;/code&gt; 信道。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_35.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_35.webp&#34;  data-sub-html=&#34;&lt;h2&gt;TDD Type 2 中频分的 PRACH 信道&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_35.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;TDD Type 2 中频分的 PRACH 信道&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;因为 &lt;code&gt;TDD&lt;/code&gt; 支持不同的上下行时间比例的配置，在某些配置情况下上行时间较少，所以可能需要在同一个时刻支持多个 &lt;code&gt;PRACH&lt;/code&gt; 信道，以提供足够的随机接入信道的容量。在普通子帧中，由于上行两边频带存在 &lt;code&gt;PUCCH&lt;/code&gt; 控制信道，而中间是 &lt;code&gt;PUSCH&lt;/code&gt; 数据信道，因此 &lt;code&gt;PRACH&lt;/code&gt; 信道采用频率偏移结合上下交错的分配方式为 &lt;code&gt;PUCCH&lt;/code&gt; 和 &lt;code&gt;PUSCH&lt;/code&gt; 信道留出物理资源空间。而对于 &lt;code&gt;PRACH Format 4&lt;/code&gt;，由于特殊时隙 &lt;code&gt;UpPTS&lt;/code&gt; 上不存在 &lt;code&gt;PUCCH&lt;/code&gt; 或者 &lt;code&gt;PUSCH&lt;/code&gt; 信道，因此采用了不同的机制：从上行频域的边际开始，连续分布，在两次 &lt;code&gt;UpPTS&lt;/code&gt; 之间采用跳频的方式，即交替地从上边带或者下边带开始，这样可以在随机接入信号需要多次传输的时候获得频率分集的增益。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_36.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_36.webp&#34;  data-sub-html=&#34;&lt;h2&gt;TDD Type 2 中 PRACH Format 4 的频分与跳频&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_36.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;TDD Type 2 中 PRACH Format 4 的频分与跳频&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;上行控制信道pucch&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8a%e8%a1%8c%e6%8e%a7%e5%88%b6%e4%bf%a1%e9%81%93pucch&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;上行控制信道（PUCCH）&lt;/h2&gt;&lt;p&gt;上行物理控制信道（Physical Uplink Control CHannel，PUCCH）传输物理层上行控制信息，包括&lt;strong&gt;上行调度请求&lt;/strong&gt;、&lt;strong&gt;对下行数据的 ACK/NACK 信息&lt;/strong&gt;和&lt;strong&gt;信道状态信息 CSI 反馈（包括 CQI/PMI/RI）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;每 1 组 &lt;code&gt;PUCCH&lt;/code&gt; 信道占用 1 个 &lt;code&gt;RB-pair&lt;/code&gt; 的物理资源，采用时隙跳频的方式，在系统上行频带的两边进行传输，而上行频带的中间部分用于传输上行共享信道（PUSCH）的数据。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_37.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_37.webp&#34;  data-sub-html=&#34;&lt;h2&gt;PUCCH 信道的资源分布&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_37.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;PUCCH 信道的资源分布&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;根据所承载的上行控制信息，物理层设计了不同的 &lt;code&gt;PUCCH&lt;/code&gt; 格式，对应于不同的发送方法。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_38.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_38.webp&#34;  data-sub-html=&#34;&lt;h2&gt;PUCCH 信道不同的格式&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_38.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;PUCCH 信道不同的格式&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;根据不同格式的 &lt;code&gt;PUCCH&lt;/code&gt; 信道的特点，它们在频域的分布情况如图所示。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_39.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_39.webp&#34;  data-sub-html=&#34;&lt;h2&gt;不同格式 PUCCH 信道在频域的分布情况&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_39.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;不同格式 PUCCH 信道在频域的分布情况&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;PUCCH 2/2a/2b 承载的是信道状态 &lt;code&gt;CSI&lt;/code&gt; 的反馈信息，在系统配置中，这一部分资源的数量是相对固定的，因此将它们分布在频带的最外侧，资源的具体数量通过高层信令进行半静态的指示。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PUCCH 1/1a/1b&lt;/code&gt; 承载的是调度请求信息和对下行数据的 &lt;code&gt;ACK&lt;/code&gt; 信息，资源数量是动态变化的，与小区中发送的下行数据的数量相关，因此将这一部分资源放置在稍靠近频率中心的位置，方便将系统剩余的频率资源用于上行共享信道 &lt;code&gt;PUSCH&lt;/code&gt; 的传输。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在所占用的 1 个 &lt;code&gt;RB-pair&lt;/code&gt; 的时频域资源中，&lt;code&gt;PUCCH 1/1a/1b&lt;/code&gt; 和 &lt;code&gt;PUCCH 2/2a/2b&lt;/code&gt; 都采用了码分的方式进一步地复用多个 &lt;code&gt;PUCCH&lt;/code&gt; 信道。因此当配置的 &lt;code&gt;PUCCH 2/2a/2b&lt;/code&gt; 信道数量所占用的资源数目不是 &lt;code&gt;RB-pair&lt;/code&gt; 整数倍的时候，在 &lt;code&gt;PUCCH 2/2a/2b&lt;/code&gt; 和 &lt;code&gt;PUCCH 1/1a/1b&lt;/code&gt; 频域的交界处将出现它们在某 1 个 &lt;code&gt;RB-pair&lt;/code&gt; 内以码分的方式混合传输的情况。&lt;/p&gt;
&lt;h3 id=&#34;pucch-格式-11a1b&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#pucch-%e6%a0%bc%e5%bc%8f-11a1b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;PUCCH 格式 1/1a/1b&lt;/h3&gt;&lt;p&gt;&lt;code&gt;PUCCH&lt;/code&gt; 格式 &lt;code&gt;1/1a/1b&lt;/code&gt; 用于终端发送&lt;strong&gt;调度请求信息&lt;/strong&gt;或者&lt;strong&gt;1、2 比特的 ACK/NACK 信息&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;使用一个调制符号 $d(0)$ 来表示 &lt;code&gt;PUCCH 1/1a/1b&lt;/code&gt; 发送的信息。对于 &lt;code&gt;PUCCH 1&lt;/code&gt; 的&lt;strong&gt;调度请求信息&lt;/strong&gt;，基站侧仅需要检测是否存在这样的发送，此时的 $d(0)$ 设置为预定义的固定值（d(0)=1）。对于 &lt;code&gt;PUCCH 1a/1b&lt;/code&gt; 的 &lt;code&gt;ACK&lt;/code&gt; 信息，$d(0)$ 为 &lt;code&gt;BPSK&lt;/code&gt; 或者 &lt;code&gt;QPSK&lt;/code&gt; 调制符号，分别对应于 1 比特或者 2 比特的 &lt;code&gt;ACK&lt;/code&gt; 信息。&lt;/p&gt;
&lt;p&gt;在信息的发送过程中，首先使用正交扩频序列 $w(m)$ 进行扩频，将信息分散在一个时隙内用于 PUCCH 传输的多个上行符号上；然后，在每个上行符号上使用 1 个长度为 12 的 &lt;code&gt;Zadoff-Chu&lt;/code&gt; 序列 $r_{u,v}^{\alpha}$ 进行调制，得到长度为 12 的复数序列对应于 1 个 &lt;code&gt;RB&lt;/code&gt; 内的 12 个子载波。因此，&lt;code&gt;PUCCH 1/1a/1b&lt;/code&gt; 的发送包含了&lt;strong&gt;正交扩频序列&lt;/strong&gt;和&lt;strong&gt;Zadoff-Chu 序列&lt;/strong&gt;两次码扩频的过程，可以复用的信道数目为二者的乘积。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;例如：在使用 Normal CP 的情况下有 3 个正交扩频序列，而所使用的 Zadoff-Chu 序列的长度为 12，假设设置 Zadoff-Chu 序列循环移位（Cyclic Shift）的复用间隔为 2，那么 1 个 RB-pair 上可以复用 3×6=18 个 PUCCH 1/1a/1b 信道。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_40.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_40.webp&#34;  data-sub-html=&#34;&lt;h2&gt;PUCCH 1/1a/1b 物理层信号发送方法（Normal CP）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_40.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;PUCCH 1/1a/1b 物理层信号发送方法（Normal CP）&lt;/figcaption&gt;
    &lt;/figure&gt;

&lt;/blockquote&gt;&lt;p&gt;为了增强信号的随机性，在 &lt;code&gt;PUCCH 1/1a/1b&lt;/code&gt; 的发送过程中包含了&lt;strong&gt;跳频&lt;/strong&gt;的概念。包括两种跳频：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;子帧内的 2 个时隙使用不同的正交扩频序列 $w(m)$，即&lt;strong&gt;正交序列跳频&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;时隙内的不同上行符号之间使用 &lt;code&gt;Zadoff-Chu&lt;/code&gt; 序列不同的循环移位，即&lt;strong&gt;Cyclic Shift 跳频&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;pucch-format-22a2b&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#pucch-format-22a2b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;PUCCH Format 2/2a/2b&lt;/h3&gt;&lt;p&gt;&lt;code&gt;PUCCH&lt;/code&gt; 格式 2 用于终端发送信道状态信息（Channel State Information，CSI），包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;信道质量指示（Channel Quality Indicator，CQI）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;预编码向量指示（Precoding Matrix Indicator，PMI）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;复用秩的指示（Rank Indicator，RI）&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在 &lt;code&gt;Normal CP&lt;/code&gt; 的情况下，&lt;code&gt;PUCCH 格式 2&lt;/code&gt; 还可以扩展成 &lt;code&gt;PUCCH 格式 2a/2b&lt;/code&gt;，在这两种格式中，通过对 &lt;code&gt;PUCCH 格式 2&lt;/code&gt; 中的导频符号进行调制，在 &lt;code&gt;CSI&lt;/code&gt; 信息的基础上，进一步承载 1 或者 2 比特的 &lt;code&gt;ACK&lt;/code&gt;/&lt;code&gt;NACK&lt;/code&gt; 信息。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CSI&lt;/code&gt; 信息经过信道编码和加扰后形成长度为 20 比特的数据流，经过 &lt;code&gt;QPSK&lt;/code&gt; 调制后形成 10 个调制符号（d(0)，…，d(9)），在 &lt;code&gt;PUCCH Format 2/2a/2b&lt;/code&gt; 上发送。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PUCCH Format 2/2a/2b&lt;/code&gt; 信息的发送过程与 &lt;code&gt;PUCCH Format 1/1a/1b&lt;/code&gt; 类似，只是&lt;strong&gt;没有了扩频的操作&lt;/strong&gt;，因为要&lt;strong&gt;发送更多&lt;/strong&gt;的比特信息。&lt;/p&gt;
&lt;p&gt;对于要发送的调制符号信息 d(0)，…，d(9)，在每个符号上使用长度为 12 的 &lt;code&gt;Zadoff-Chu&lt;/code&gt; 序列 $r_{u,v}^{\alpha}$ 进行调制，然后将各个符号调制的结果映射在子帧内相应上行符号 1 个 &lt;code&gt;RB&lt;/code&gt; 内的 12 个子载波上。通过长度为 12 的 &lt;code&gt;Zadoff-Chu&lt;/code&gt; 序列的不同循环移位来进行同一个 RB 内不同 &lt;code&gt;PUCCH 2/2a/2b&lt;/code&gt; 信道的复用。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;假设设置 &lt;code&gt;Zadoff-Chu&lt;/code&gt; 序列循环移位的复用间隔为 2，那么 1 个 &lt;code&gt;RB-pair&lt;/code&gt; 上可以复用 6 个 &lt;code&gt;PUCCH 2/2a/2b&lt;/code&gt; 信道。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_41.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_41.webp&#34;  data-sub-html=&#34;&lt;h2&gt;PUCCH 2/2a/2b 物理层信号发送方法（Normal CP）&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_41.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;PUCCH 2/2a/2b 物理层信号发送方法（Normal CP）&lt;/figcaption&gt;
    &lt;/figure&gt;

&lt;/blockquote&gt;&lt;p&gt;在 &lt;code&gt;PUCCH 2a/2b&lt;/code&gt; 中，除了 20 个比特的 &lt;code&gt;CSI&lt;/code&gt; 信息之外，还承载 1 或者 2 比特的 &lt;code&gt;ACK&lt;/code&gt; 信息。该 &lt;code&gt;ACK&lt;/code&gt; 信息将通过 &lt;code&gt;BPSK&lt;/code&gt; 或者 &lt;code&gt;QPSK&lt;/code&gt; 的调制，形成一个调制符号 d(10)，然后调制在导频符号上进行传输。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PUCCH 2a/2b&lt;/code&gt; &lt;strong&gt;仅适用&lt;/strong&gt;于 &lt;code&gt;Normal CP&lt;/code&gt; 的情况，对于 &lt;code&gt;Extended CP&lt;/code&gt; 的情况，由于 &lt;code&gt;PUCCH 格式 2&lt;/code&gt; 的每个时隙内只有 1 列上行导频，难以将 &lt;code&gt;ACK&lt;/code&gt;/&lt;code&gt;NAK&lt;/code&gt; 信息调制在导频中。所以，在这种情况下，如果 &lt;code&gt;ACK&lt;/code&gt;/&lt;code&gt;NAK&lt;/code&gt; 和 &lt;code&gt;CQI&lt;/code&gt; 需要&lt;strong&gt;同时&lt;/strong&gt;传输，那么将对它们进行&lt;strong&gt;联合编码&lt;/strong&gt;，形成 20 比特的编码后数据，采用 &lt;code&gt;Extended CP&lt;/code&gt; 的 &lt;code&gt;PUCCH 格式 2&lt;/code&gt; 进行发送。&lt;/p&gt;
&lt;h2 id=&#34;上行共享信道pusch&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8a%e8%a1%8c%e5%85%b1%e4%ba%ab%e4%bf%a1%e9%81%93pusch&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;上行共享信道（PUSCH）&lt;/h2&gt;&lt;p&gt;上行物理共享信道（Physical Uplink Shared CHannel，PUSCH）用于上行数据的调度传输，是物理层主要的上行数据承载信道，可以承载来自上层的不同的传输内容（即不同的逻辑信道），包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;控制信息&lt;/li&gt;
&lt;li&gt;用户业务信息&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;与下行物理共享信道 &lt;code&gt;PDSCH&lt;/code&gt; 相似，&lt;code&gt;PUSCH&lt;/code&gt; 信道是决定系统上行数据传输性能的关键，因此，&lt;code&gt;PUSCH&lt;/code&gt; 的传输支持各种物理层机制，包括&lt;strong&gt;信道自适应的调度&lt;/strong&gt;、&lt;strong&gt;HARQ&lt;/strong&gt; 等。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;值得一提的是&lt;/strong&gt;，上行物理层采用单载波（DFT-SOFDM）作为多址方式，这样的多址方式对终端上行功率效率方面带来好处的同时也带来了一些&lt;strong&gt;限制&lt;/strong&gt;。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;例如：为了保持上行单载波的特性，LTE Release 8 物理层不支持单用户的上行共享信道（PUSCH）和上行控制信道（PUCCH）的频分复用，即 1 个用户不能在一个时刻同时发送 &lt;code&gt;PUSCH&lt;/code&gt; 信道和 &lt;code&gt;PUCCH&lt;/code&gt; 信道。当用户有上行数据 &lt;code&gt;PUSCH&lt;/code&gt; 正在发送的时候，如果需要同时发送物理层上行控制信息（CSI、ACK 或者 RI），那么这些信息不能在 &lt;code&gt;PUCCH&lt;/code&gt; 信道上传输，而是将这些控制信息与数据信息一起复用在 &lt;code&gt;PUSCH&lt;/code&gt; 信道上进行传输。&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;另外，单载波（DFT-SOFDM）多址方式的处理过程中包含了 &lt;code&gt;DFT&lt;/code&gt; 的操作，为了降低 &lt;code&gt;DFT&lt;/code&gt; 运算的复杂度，便于使用类似 &lt;code&gt;FFT&lt;/code&gt; 的快速算法，标准中对上行 &lt;code&gt;PUSCH&lt;/code&gt; 信道子载波分配的数目进行了规定，即上行分配的 RB 数目的数值必须能够被 2、3、5 这 3 个质数所分解，即必须满足条件$=2_{α2}、3_{α3}、5_{α5}$，其中 $α2 、α3 和 α5$ 是非负整数。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] LTE-Advanced 关键技术详解&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：帧中的物理信道和信号</title>
      <link>https://www.techkoala.net/lte_physical_channels_and_signals/</link>
      <pubDate>Tue, 30 Jul 2019 22:49:22 +0800</pubDate>
      
      <guid>https://www.techkoala.net/lte_physical_channels_and_signals/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;概述 LTE 信息帧中的各类物理通道和信号&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;在 &lt;a href=&#34;https://www.techkoala.net/lte_downlink_frame_structure/&#34; rel=&#34;&#34;&gt;此前的一篇文章&lt;/a&gt; 中，我们详细了解 &lt;code&gt;LTE&lt;/code&gt; 下行链路的帧结构，其中包含了各种物理信道和信号，本文将会做一个概要性的讲述，用作一个速查表。&lt;/p&gt;
&lt;h2 id=&#34;pbch&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#pbch&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;PBCH&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Physical Broadcast Channel，物理广播通道&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;它只携带 MIB (master information block，主系统信息块)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;它使用的是 QPSK&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;映射到 6 个资源块（72 个子载波），以 0 号子帧中的 DC 子载波为中心&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;映射到不为传输参考信号、PDCCH 或 PCHICH 而保留的资源元素&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;详情参考 &lt;a href=&#34;http://www.sharetechnote.com/html/Handbook_LTE_PBCH.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Physical Layer : PBCH&lt;/a&gt; 和 &lt;a href=&#34;http://www.sharetechnote.com/html/lte_toolbox/Matlab_LteToolbox_PBCH.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Matlab Toolbox : PBCH&lt;/a&gt; 页面（待填坑）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;pcfich&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#pcfich&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;PCFICH&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Physical Control Format Indicator Channel，物理控制格式指示通道&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;它映射到每个下行链路子帧中的第一个 OFDM 符号&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;它包含了携带控制信道（PDCCH 和 PHICH）的 OFDM 符号数量的信息。UE 对该信道进行解码，以找出该帧中为控制信道（PDCCH 和 PHICH）分配了多少个 OFDM 符号&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;它是子帧的第一个 OFDM 符号的 16 个数据子载波&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PCFICH 数据由 4 个 REG 承载，并且这 4 个 REG 均匀分布在整个频带上，与带宽无关&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PCFICH 的确切位置由小区 ID 和带宽确定&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;详细信息参阅 &lt;a href=&#34;http://www.sharetechnote.com/html/Handbook_LTE_PCFICH.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Physical Layer : PCFICH&lt;/a&gt; 和 &lt;a href=&#34;http://www.sharetechnote.com/html/lte_toolbox/Matlab_LteToolbox_PCFICH.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Matlab Toolbox : PCFICH&lt;/a&gt; 页面&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;pdcch&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#pdcch&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;PDCCH&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Physical Downlink Control Channel，物理下行控制信道&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;映射到下行链路每个子帧中前 L 个 OFDM 符号&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PDCCH 的符号数（L）可以是 1,2 或 3&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PDCCH 的符号数由 PCFICH 指定&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PDCCH 承载 DCI，而 DCI 承载传输格式，资源分配，与 DL-SCH，UL-SCH 和 PCH 相关的 H-ARQ 信息以及其他取决于 DCI 格式的信息&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PDCCH 还携带用于 UL 调度分配的 DCI 0（例如，UL 授权）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;可以在单个子帧中分配多个 PDCCH，并且 UE 对所有 PDCCH 进行盲解码&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;调制方案是 QPSK&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PDCCH 类似于 HSDPA 的 HS-SCCH、R99 的 PDCCH 和 HSUPA 的 E-AGCH/E-RGCH&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;即使 PDCCH 具有很多功能，但并非所有功能都同时使用，因此 PDCCH 配置应灵活设置&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果您对该通道中的详细信息映射感兴趣，请参阅 36.211 中的 6.8.1。简要说明如下：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
  &lt;p&gt;物理下行链路控制信道承载调度分配和其他控制信息。物理控制信道是在一个或几个连续的控制信道元素（CCE）的聚合上发送的，其中控制信道元素对应于 9 个资源元素组。未分配给 PCFICH 或 PHICH 的资源元素组的数量为 REG N。系统中可用的 CCE 从 0 和 N_CCE-1 编号，其中 N_CCE = floor（N_REG/9）。&lt;/p&gt;

&lt;/blockquote&gt;&lt;ul&gt;
&lt;li&gt;详细信息参阅物理层 &lt;a href=&#34;http://www.sharetechnote.com/html/Handbook_LTE_PDCCH.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Physical Layer : PDCCH&lt;/a&gt; 和 &lt;a href=&#34;http://www.sharetechnote.com/html/lte_toolbox/Matlab_LteToolbox_PDCCH.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Matlab Toolbox : PDCCH&lt;/a&gt; 页面&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;phich&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#phich&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;PHICH&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Physical Hybrid ARQ Indicator Channel，物理 HARQ 指示信道&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;对收到的 PUSCH 进行 H-ARQ 反馈&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;UE 在 UL 中传输数据后，等待 PHICH 进行 ACK&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;类似于 HSPA 中的 E-HICH&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;某些情况下，几个 PHICH 使用相同的资源元素构成 PHICH 组&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;详细信息参见 &lt;a href=&#34;http://www.sharetechnote.com/html/Handbook_LTE_PHICH_PHICHGroup.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Physical Layer : PHICH&lt;/a&gt; 和 &lt;a href=&#34;http://www.sharetechnote.com/html/lte_toolbox/Matlab_LteToolbox_PHICH.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Matlab Toolbox : PHICH &lt;/a&gt; 页面&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;pdsch&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#pdsch&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;PDSCH&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Physical Downlink Shared Channel，物理下行共享信道&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;携带用户特定的数据（DL 有效负载）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;携带随机访问响应消息&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;它使用带有 QPSK，16 QAM，64 QAM，256 QAM 调制方案的 AMC（此调制方案由 DCI 承载的 MCS 确定）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;详细信息参见 &lt;a href=&#34;http://www.sharetechnote.com/html/Handbook_LTE_PDSCH.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Physical Layer : PDSCH&lt;/a&gt; 和 &lt;a href=&#34;http://www.sharetechnote.com/html/lte_toolbox/Matlab_LteToolbox_PDSCH.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Matlab Toolbox : PDSCH &lt;/a&gt; 页面&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;prach&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#prach&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;PRACH&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Physical Random Access Channel，物理随机接入信道&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;携带随机访问前导码&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;它在频域中占用 72 个子载波（6 RB）的带宽&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在该信道内是随机访问前导，该随机访问前同步码用 &lt;a href=&#34;http://www.sharetechnote.com/html/Handbook_LTE_Zadoff_Chu_Sequence.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Zadoff-Chu 序列&lt;/a&gt; 生成&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;详细信息参见 &lt;a href=&#34;http://www.sharetechnote.com/html/RACH_LTE.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RACH&lt;/a&gt; 和 &lt;a href=&#34;http://www.sharetechnote.com/html/lte_toolbox/Matlab_LteToolbox_PRACH.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Matlab Toolbox : PRACH&lt;/a&gt; 页面&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;p-ss&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#p-ss&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;P-SS&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Primary Synchronization Signal，主同步信号&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;映射到 72 个活动子载波（6 个资源块），以时隙 0（子帧 0）和时隙 10（子帧 5）中的 DC 子载波为中心。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;由 62 个 &lt;a href=&#34;http://www.sharetechnote.com/html/Handbook_LTE_Zadoff_Chu_Sequence.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Zadoff-Chu 序列值&lt;/a&gt; 组成&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;用于下行帧同步&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;决定 &lt;a href=&#34;http://www.sharetechnote.com/html/Handbook_LTE_PCI.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;物理小区 ID&lt;/a&gt; 的关键因素之一&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;详细信息参见 &lt;a href=&#34;http://www.sharetechnote.com/html/Handbook_LTE_PSS.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Physical Layer : PSS&lt;/a&gt; 和 &lt;a href=&#34;http://www.sharetechnote.com/html/lte_toolbox/Matlab_LteToolbox_PSS.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Matlab Toolbox : PSS&lt;/a&gt; 页面&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
  &lt;p&gt;如何从基带捕获的 IQ 数据序列中找到 PSS 的确切位置？是定时同步中最重要的部分之一；也是理解 LTE 协议中非常棘手的部分之一，需要花费很长时间进行研究。&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;s-ss&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#s-ss&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;S-SS&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Secondary Synchronization Signal，副同步信号&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;SSS 是用于无线电帧同步的特定物理层信号，它具有以下列出的特征：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;映射到 72 个活动子载波（6 个资源块），以 FDD 中的时隙 0（子帧 0）和时隙 10（子帧 5）的 DC 子载波为中心&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;子帧 0 中的 SSS 序列与子帧 5 中的 SSS 序列互不相同&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;由 62 个加扰序列（基于 m 序列）组成&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;奇偶索引的资源元素的值由不同方程生成&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;用于下行帧同步&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;决定 &lt;a href=&#34;http://www.sharetechnote.com/html/Handbook_LTE_PCI.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;物理小区 ID&lt;/a&gt; 的关键因素之一&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;详细信息参见 &lt;a href=&#34;http://www.sharetechnote.com/html/Handbook_LTE_SSS.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Physical Layer : SSS&lt;/a&gt; 和 &lt;a href=&#34;http://www.sharetechnote.com/html/lte_toolbox/Matlab_LteToolbox_SSS.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Matlab Toolbox : SSS&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;rs&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#rs&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;RS&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Reference Signal，参考信号&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;大多数信道（例如，PDSCH，PDCCH，PBCH 等）都用于承载特殊信息（比特序列），它们与更高层的信道相连，但是参考信号是仅存在于 PHY 层的特殊信号，不用于传递任何特定信息。参考信号的目的是为下行链路功率提供参考点。&lt;/p&gt;
&lt;p&gt;当 UE 尝试计算 DL 功率（即，来自 eNode-B 的信号的功率）时，它将测量参考信号的功率并将其作为下行链路小区功率。&lt;/p&gt;
&lt;p&gt;这些参考信号由每个时隙中的多个特定资源元素承载，并且资源元素的具体位置由天线配置确定。&lt;/p&gt;
&lt;h3 id=&#34;rs---cell-specific&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#rs---cell-specific&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;RS - Cell Specific&lt;/h3&gt;&lt;p&gt;在下图中，红色/蓝色/绿色/黄色是承载参考信号的部分，灰色标记的资源元素是为参考信号保留的部分，但未承载该特定天线的参考信号。（插图基于 36.211 的图 6.10.1.2-1： 下行链路参考信号的映射（正常循环前缀））&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal.png&#34;  data-sub-html=&#34;&lt;h2&gt;小区特定参考信号&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;小区特定参考信号&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;以下是 4 天线情况下物理信道配置和 RE（资源元素）映射的示例。测量结果来自 LTE 信号分析仪，它测量从 LTE 网络模拟器传出的 LTE 信号。它仅显示 20 Mhz 系统带宽中的一个 RB（RB0）（总共 100 个 RB），并且分别在 LTE 网络发送 MIB/SIB 和 UE 未连接时在天线端口 0、1、2、3 处捕获。你会注意到，每个天线的参考信号位置都不同。 由于此参考信号位置的差异，REG 分组可能由 PCFICH 的不同位置中略有不同。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal_4Antenna_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal_4Antenna_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;各天线小区特定参考信号&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal_4Antenna_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;各天线小区特定参考信号&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;有两种不同类型的参考信号：小区特定参考信号和 UE 特定参考信号&lt;/p&gt;
&lt;p&gt;小区特定参考信号（CRS）：该参考信号在每个子帧处被发送，并且跨越整个工作带宽，通过天线端口 0、1、2、3 发送。&lt;/p&gt;
&lt;p&gt;UE 特定参考信号：此参考信号在仅分配给特定 UE 的资源块中传输，并通过天线端口 5 传输。&lt;/p&gt;
&lt;p&gt;特定于小区的参考信号的资源元素是否固定？&lt;/p&gt;
&lt;p&gt;否，位置会根据物理小区 ID 进行更改，如下所述：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;参考信号的时域索引（l）= 固定（l = [0,4]）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;参考信号的频域索引 k 根据 36.211 6.10.1.2 映射到资源元素中指定的物理小区 ID 而变化。&lt;/p&gt;
&lt;p&gt;主要规则是：$k = 6m + (v + v_{shift})mod 6$，其中 v_shift=物理小区 ID mod6。详细信息参阅 36.211 6.10.1.2&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下行参考信号携带什么样的值？&lt;/p&gt;
&lt;p&gt;该值是 36.211 6.10.1.1 序列生成中定义算法生成的伪随机序列。该序列的确定值之一是物理小区 ID，这意味着物理小区 ID 也影响参考信号的值。&lt;/p&gt;
&lt;p&gt;CRS 是否以任何子帧类型（类型 1、2、3）传输？&lt;/p&gt;
&lt;p&gt;对于帧结构类型 1，在所有下行链路子帧中发送 CRS。
对于帧结构类型 2，在所有下行链路子帧和 DwPTS 中发送 CRS
对于帧结构类型 3，CRS 在非空子帧中传输&lt;/p&gt;
&lt;h3 id=&#34;rs---mbsfn&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#rs---mbsfn&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;RS - MBSFN&lt;/h3&gt;&lt;p&gt;下图基于 36.211 的图 6.10.2.2-1：MBSFN 参考信号的映射（扩展循环前缀，Δf= 15 kHz）&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal_R4.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal_R4.png&#34;  data-sub-html=&#34;&lt;h2&gt;Reference Signal - MBSFN&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal_R4.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Reference Signal - MBSFN&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;rs---ue-specific&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#rs---ue-specific&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;RS - UE Specific&lt;/h3&gt;&lt;p&gt;下图基于 36.211 的图 6.10.3.2-1：特定于 UE 的参考信号，天线端口 5（正常循环前缀）的映射&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal_R5.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal_R5.png&#34;  data-sub-html=&#34;&lt;h2&gt;Reference Signal - UE Specific - Antenna Port 5&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal_R5.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Reference Signal - UE Specific - Antenna Port 5&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal_R7_10_03.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal_R7_10_03.png&#34;  data-sub-html=&#34;&lt;h2&gt;Reference Signal - UE Specific - Antenna Port 5&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal_R7_10_03.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Reference Signal - UE Specific - Antenna Port 5&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;rs---positioning&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#rs---positioning&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;RS - Positioning&lt;/h3&gt;&lt;p&gt;下图基于 36.211 的图 6.10.4.2-1：定位参考信号的映射（正常循环前缀）&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal_R6.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal_R6.png&#34;  data-sub-html=&#34;&lt;h2&gt;Reference Signal - Positioning - Antenna Port 6&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal_R6.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Reference Signal - Positioning - Antenna Port 6&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;rs---csi&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#rs---csi&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;RS - CSI&lt;/h3&gt;&lt;p&gt;下图基于 36.211 的图 6.10.5.2-1：CSI 参考信号的映射（CSI 配置 0，常规循环前缀）&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal_R15_R22_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal_R15_R22_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;Reference Signal - CSI - Antenna Port 15,16,17,18,19,20,21,22&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ReferenceSignal_R15_R22_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Reference Signal - CSI - Antenna Port 15,16,17,18,19,20,21,22&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;全帧快照&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%85%a8%e5%b8%a7%e5%bf%ab%e7%85%a7&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;全帧快照&lt;/h2&gt;&lt;p&gt;下图展示了上述提及的所有物理信道在整个框架上的整体图像：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/DL_Map_FullFrame.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/DL_Map_FullFrame.png&#34;  data-sub-html=&#34;&lt;h2&gt;Full Frame&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/DL_Map_FullFrame.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Full Frame&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;通信过程中的物理信道&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%80%9a%e4%bf%a1%e8%bf%87%e7%a8%8b%e4%b8%ad%e7%9a%84%e7%89%a9%e7%90%86%e4%bf%a1%e9%81%93&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;通信过程中的物理信道&lt;/h2&gt;&lt;p&gt;下图显示了上行/下行数据传输的总体顺序：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ChannelFlow_Small.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ChannelFlow_Small.png&#34;  data-sub-html=&#34;&lt;h2&gt;数据传输序列图&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/ChannelFlow_Small.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;数据传输序列图&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;附加图&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%99%84%e5%8a%a0%e5%9b%be&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;附加图&lt;/h2&gt;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/DL_Spectrogram_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/DL_Spectrogram_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;Spectrogram - LTE FDD DL - Radio Frame&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/DL_Spectrogram_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Spectrogram - LTE FDD DL - Radio Frame&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/DL_Spectrogram_02.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/DL_Spectrogram_02.png&#34;  data-sub-html=&#34;&lt;h2&gt;Spectrogram - LTE FDD DL - PBCH&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/DL_Spectrogram_02.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Spectrogram - LTE FDD DL - PBCH&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/DL_Spectrogram_03.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/DL_Spectrogram_03.png&#34;  data-sub-html=&#34;&lt;h2&gt;Spectrogram - LTE FDD DL - PSS/SSS&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/DL_Spectrogram_03.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Spectrogram - LTE FDD DL - PSS/SSS&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/LTE_DL_Idle_RF_Profile.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/LTE_DL_Idle_RF_Profile.png&#34;  data-sub-html=&#34;&lt;h2&gt;Spectrogram - LTE FDD DL - Each Symbol&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-PCS/LTE_DL_Idle_RF_Profile.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Spectrogram - LTE FDD DL - Each Symbol&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;另见&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%a6%e8%a7%81&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;另见&lt;/h2&gt;&lt;p&gt;&lt;a href=&#34;https://www.techkoala.net/lte_physical_signals/&#34; rel=&#34;&#34;&gt;LTE 系列：物理信号&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.techkoala.net/lte_physical_channels/&#34; rel=&#34;&#34;&gt;LTE 系列：物理信道&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;http://www.sharetechnote.com/html/FrameStructure_DL.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Physical Channels and Signals&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;https://www.cnblogs.com/klb561/p/12227359.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;LTE 的信道&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：下行链路帧结构</title>
      <link>https://www.techkoala.net/lte_downlink_frame_structure/</link>
      <pubDate>Mon, 29 Jul 2019 17:53:52 +0800</pubDate>
      
      <guid>https://www.techkoala.net/lte_downlink_frame_structure/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;LTE 下行链路帧结构详细讲解&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;下行帧结构&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8b%e8%a1%8c%e5%b8%a7%e7%bb%93%e6%9e%84&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;下行帧结构&lt;/h2&gt;&lt;h3 id=&#34;fdd类型-1&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#fdd%e7%b1%bb%e5%9e%8b-1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;FDD——类型 1&lt;/h3&gt;&lt;p&gt;36.211 中 &lt;code&gt;FDD&lt;/code&gt; &lt;code&gt;LTE&lt;/code&gt; 的帧结构概览图如下所示：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/36_211_Fig4_1_1_FDD_DL_FrameStructure.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/36_211_Fig4_1_1_FDD_DL_FrameStructure.png&#34;  data-sub-html=&#34;&lt;h2&gt;FDD 帧结构&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/36_211_Fig4_1_1_FDD_DL_FrameStructure.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;FDD 帧结构&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;上图仅显示了帧在时域上的结构，而没有显示频域上的结构。&lt;/p&gt;
&lt;p&gt;从图中可以看处：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;一帧（一个无线帧，一个系统帧）的持续时间是 10 ms。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一帧（10 毫秒）的样本数是 307200（307.200 K）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一帧中有 10 个子帧。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个子帧中有 2 个时隙。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那么一个时隙是时域上最小的结构吗？不，如果进一步放大此结构，则会得到下图：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/FDD_DL_FrameStructure_Symbols.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/FDD_DL_FrameStructure_Symbols.png&#34;  data-sub-html=&#34;&lt;h2&gt;时隙结构&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/FDD_DL_FrameStructure_Symbols.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;时隙结构&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;可以观察到一个时隙由 7 个&lt;code&gt;符号&lt;/code&gt;组成。（一个符号是信号的某个时间跨度，在 I/Q 星座中的一个点。）&lt;/p&gt;
&lt;p&gt;在符号的开头，还有一个很小的跨度，称为&lt;code&gt;循环前缀&lt;/code&gt;，其余部分是真实的符号数据。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LTE&lt;/code&gt; 中有两种不同类型的循环前缀。一种是&lt;code&gt;普通循环前缀&lt;/code&gt;；另一个是&lt;code&gt;扩展循环前缀&lt;/code&gt;，其长度比普通循环前缀更长。（由于一个时隙的长度是固定的且不能更改，因此，如果使用&lt;code&gt;扩展循环前缀&lt;/code&gt;，则一个时隙内则只能有 6 个符号）。&lt;/p&gt;
&lt;p&gt;继续放大子帧以可以观察到确切的时间和采样，如下图所示：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/FDD_DL_FrameStructure_Subframe_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/FDD_DL_FrameStructure_Subframe_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;符号结构&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/FDD_DL_FrameStructure_Subframe_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;符号结构&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;此图中显示的长度不随采样率而变化，但是每个符号和 &lt;code&gt;CP&lt;/code&gt; 中的采样数随采样率而变化。此图中显示的样本数基于 30.72 Mhz 采样率的情况。&lt;/p&gt;
&lt;p&gt;关于上述子帧结构，需要注意的几件事是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;时隙中的第一个 OFDM 符号比剩下的 OFDM 符号长一些。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;上图中显示的样本数基于以下参数设置：采样率为 30.72M 个样本/秒和 2048 个 bin/IFFT（$N_{ifft}$）。实际采样率和 $N_{ifft}$ 可能会随系统带宽而变化，需要根据特定带宽来缩放。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每种系统带宽的典型 $N_{ifft}$ 如下:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;System BW&lt;/th&gt;
          &lt;th&gt;Number of RBs&lt;/th&gt;
          &lt;th&gt;$N_{ifft}$ (bins/IFFT)&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1.4&lt;/td&gt;
          &lt;td&gt;6&lt;/td&gt;
          &lt;td&gt;128&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;3.0&lt;/td&gt;
          &lt;td&gt;15&lt;/td&gt;
          &lt;td&gt;256&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;5.0&lt;/td&gt;
          &lt;td&gt;25&lt;/td&gt;
          &lt;td&gt;512&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;10.0&lt;/td&gt;
          &lt;td&gt;50&lt;/td&gt;
          &lt;td&gt;1024&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;15.0&lt;/td&gt;
          &lt;td&gt;75&lt;/td&gt;
          &lt;td&gt;2048&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;20.0&lt;/td&gt;
          &lt;td&gt;100&lt;/td&gt;
          &lt;td&gt;2048&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;下图是&lt;code&gt;LTE 资源网格&lt;/code&gt;的总体子帧结构：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/LTE_DL_FrameStructure_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/LTE_DL_FrameStructure_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;LTE 资源网格&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/LTE_DL_FrameStructure_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;LTE 资源网格&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;以下显示所有 4 个天线信号叠加（重叠）的理想情况下的下行链路帧结构和 RE（Resource Element，资源元素）映射的示例。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/LTE_DL_FrameStructure_02.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/LTE_DL_FrameStructure_02.png&#34;  data-sub-html=&#34;&lt;h2&gt;4天线帧结构和 RE 映射示例&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/LTE_DL_FrameStructure_02.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;4天线帧结构和 RE 映射示例&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;实际上，来自每个天线的信号具有略微不同的符号数据和参考信号位置。 RE 映射的顶部和底部显示的星座图是 &lt;code&gt;LTE&lt;/code&gt; 信号分析器测量来自 &lt;code&gt;LTE&lt;/code&gt; 网络模拟器的 &lt;code&gt;LTE&lt;/code&gt; 信号的测量结果。这是在 &lt;code&gt;LTE&lt;/code&gt; 网络正在传输 MIB/SIB 且 &lt;code&gt;UE&lt;/code&gt; 未连接的情况下在天线端口 0 处捕获的。如果您使用不同的信道功率（例如 PCFICH 功率，PDCCH 功率，CRS 功率等）执行类似的操作，则可能会看到一些不同的星座图。&lt;/p&gt;
&lt;p&gt;现在我们进一步放大结构，但这一次是在频域而不是时域扩展。我们将获得以下完整的详细图：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/PHY_CH_DL.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/PHY_CH_DL.png&#34;  data-sub-html=&#34;&lt;h2&gt;下行帧结构物理信道&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/PHY_CH_DL.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;下行帧结构物理信道&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;如上所述，我们可以在二维图中表示 LTE 信号。横轴是时域，纵轴是频域。纵轴上的最小单位是子载波，横轴上的最小单位是符号。时域和频域多个较小单位组合成较大单位。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;首先让我们看一下频域结构：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;LTE（无论 OFDM/OFDMA）频带由多个小间隔信道组成，这些小信道称为&lt;code&gt;子载波&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无论 LTE 频带的系统带宽是多少，&lt;code&gt;子载波&lt;/code&gt;间隔都相同。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果 LTE 信道的系统带宽发生变化，则信道数（子载波）会发生变化，但信道之间的间隔不会发生变化。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;子载波和下一个子载波之间的空间是多少？ 15 Khz&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;20 Mhz LTE 频段的信道（子载波）数量是多少？ 1200 个子载波。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;10 Mhz LTE 频段的信道（子载波）数量是多少？ 600 个子载波。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;5 Mhz LTE 频段的信道（子载波）数量是多少？ 300 个子载波。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;接着我们看一下横轴（即时域）的上的基本组成单位。时域上的最小单位是符号，长度为 66.7 us。无论带宽如何，符号长度都不会改变。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;一个时隙中有多少个符号？ A&amp;gt; 7 个符号。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个子帧中有多少个符号？ A&amp;gt; 14 个符号。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个帧中有几个时隙？ A&amp;gt; 20 个时隙。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;现在，让我们看一下由时域（横轴）和频域（竖轴）组成的单位。我们将此类型的单元称为二维单元。&lt;/p&gt;
&lt;p&gt;最小的二维单位是 RE，它由时域中的&lt;code&gt;一个符号&lt;/code&gt;和频域中的&lt;code&gt;一个子载波&lt;/code&gt;组成。另一个二维单位是 RB（Resource Block，资源块），它由时域中的&lt;code&gt;一个时隙&lt;/code&gt;和频域中的 &lt;code&gt;12 个子载波&lt;/code&gt;组成。RB 是 &lt;code&gt;LTE&lt;/code&gt; 中协议侧和 &lt;code&gt;RF&lt;/code&gt; 测量侧最重要的单元。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;一个资源块中有多少个符号？ 7 个符号。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个资源块中有多少个子载波？ 12 个子载波。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个资源块中有多少资源元素？ 84 个资源元素。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;那么&lt;/p&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;
&lt;p&gt;20 Mhz 频带中有多少资源块？ 100 个资源块。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;10 Mhz 频带中有多少资源块？ 50 个资源块。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;5 Mhz 频带中有多少资源块？ 25 个资源块。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;tdd类型-2&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#tdd%e7%b1%bb%e5%9e%8b-2&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;TDD——类型 2&lt;/h3&gt;&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/36_211_TDD_DL_FrameStructure.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/36_211_TDD_DL_FrameStructure.png&#34;  data-sub-html=&#34;&lt;h2&gt;TDD 帧结构&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/36_211_TDD_DL_FrameStructure.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;TDD 帧结构&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;以下是使用 &lt;a href=&#34;http://dhagle.in/LTE&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Sandesh Dhagle&amp;rsquo;s Resource Grid Tools&lt;/a&gt; 生成的各种配置的 &lt;code&gt;TDD&lt;/code&gt; &lt;code&gt;UL/DL&lt;/code&gt; 资源分配图。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;类别&lt;/th&gt;
          &lt;th&gt;颜色&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;PDCCH&lt;/td&gt;
          &lt;td&gt;橙色&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;PBCH&lt;/td&gt;
          &lt;td&gt;蓝色&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;PSS&lt;/td&gt;
          &lt;td&gt;紫色&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;SSS&lt;/td&gt;
          &lt;td&gt;浅蓝色&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;PDSCH&lt;/td&gt;
          &lt;td&gt;白色&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Reserved&lt;/td&gt;
          &lt;td&gt;黑色&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Ref Signal&lt;/td&gt;
          &lt;td&gt;红色&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;PCFICH&lt;/td&gt;
          &lt;td&gt;浅绿色&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;PHICH&lt;/td&gt;
          &lt;td&gt;黄色&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;TDD Uplink&lt;/td&gt;
          &lt;td&gt;绿色&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Guard Period&lt;/td&gt;
          &lt;td&gt;灰色&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_0_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_0_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;Configuration 0, Special Subframe Config 0&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_0_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Configuration 0, Special Subframe Config 0&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_1_SpecialSubframeConfig_0_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_1_SpecialSubframeConfig_0_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;Configuration 1, Special Subframe Config 0&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_1_SpecialSubframeConfig_0_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Configuration 1, Special Subframe Config 0&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_2_SpecialSubframeConfig_0_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_2_SpecialSubframeConfig_0_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;Configuration 2, Special Subframe Config 0&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_2_SpecialSubframeConfig_0_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Configuration 2, Special Subframe Config 0&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_3_SpecialSubframeConfig_0_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_3_SpecialSubframeConfig_0_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;Configuration 3, Special Subframe Config 0&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_3_SpecialSubframeConfig_0_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Configuration 3, Special Subframe Config 0&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_4_SpecialSubframeConfig_0_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_4_SpecialSubframeConfig_0_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;Configuration 4, Special Subframe Config 0&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_4_SpecialSubframeConfig_0_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Configuration 4, Special Subframe Config 0&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_5_SpecialSubframeConfig_0_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_5_SpecialSubframeConfig_0_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;Configuration 5, Special Subframe Config 0&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_5_SpecialSubframeConfig_0_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Configuration 5, Special Subframe Config 0&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_6_SpecialSubframeConfig_0_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_6_SpecialSubframeConfig_0_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;Configuration 6, Special Subframe Config 0&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_6_SpecialSubframeConfig_0_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Configuration 6, Special Subframe Config 0&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;hr&gt;
&lt;p&gt;下面展示具有不同特殊子帧配置的资源网格的示例。在这些示例中，仅注意子帧 0 和子帧 6 中的符号结构如何变化。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_0_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_0_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;Configuration 0, Special Subframe Config 0&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_0_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Configuration 0, Special Subframe Config 0&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_1_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_1_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;Configuration 0, Special Subframe Config 1&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_1_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Configuration 0, Special Subframe Config 1&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_2_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_2_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;Configuration 0, Special Subframe Config 2&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_2_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Configuration 0, Special Subframe Config 2&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_3_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_3_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;Configuration 0, Special Subframe Config 3&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_3_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Configuration 0, Special Subframe Config 3&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_4_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_4_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;Configuration 0, Special Subframe Config 4&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_4_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Configuration 0, Special Subframe Config 4&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_5_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_5_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;Configuration 0, Special Subframe Config 5&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_5_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Configuration 0, Special Subframe Config 5&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_6_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_6_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;Configuration 0, Special Subframe Config 6&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_6_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Configuration 0, Special Subframe Config 6&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_7_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_7_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;Configuration 0, Special Subframe Config 7&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_7_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Configuration 0, Special Subframe Config 7&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_8_01.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_8_01.png&#34;  data-sub-html=&#34;&lt;h2&gt;Configuration 0, Special Subframe Config 8&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE-DL-FS/TDD_UL_DL_Configuration_0_SpecialSubframeConfig_8_01.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Configuration 0, Special Subframe Config 8&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;laa类型-3&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#laa%e7%b1%bb%e5%9e%8b-3&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;LAA——类型 3&lt;/h3&gt;&lt;p&gt;从 3GPP Rel 13 开始，提出了一种新的帧结构，主要应用于 LAA（License Assisted Access，许可辅助访问），与 &lt;code&gt;LTE-U&lt;/code&gt; 一样，这也是一种在未经许可的频率范围内传输 &lt;code&gt;LTE&lt;/code&gt; 信号的技术。 然而，与 &lt;code&gt;LTE-U&lt;/code&gt; 不同的是，LAA 使用一种特殊的物理层帧结构，称为帧结构类型 3，这是以前不存在的。这种新的帧结构旨在使 &lt;code&gt;LTE&lt;/code&gt; 信号类似于 &lt;code&gt;WLAN&lt;/code&gt; 突发，并使 &lt;code&gt;LTE&lt;/code&gt; 信号更好地与现有的 &lt;code&gt;WLAN&lt;/code&gt; 业务共存。更多详情参见 &lt;a href=&#34;http://www.sharetechnote.com/html/Handbook_LTE_LAA.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;LAA&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;http://www.sharetechnote.com/html/FrameStructure_DL.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Frame Structure - Downlink&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] &lt;a href=&#34;http://dhagle.in/LTE&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Sandesh Dhagle&amp;rsquo;s Resource Grid Tools&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：无线帧结构</title>
      <link>https://www.techkoala.net/lte_frame_structure/</link>
      <pubDate>Mon, 08 Jul 2019 20:37:14 +0800</pubDate>
      
      <guid>https://www.techkoala.net/lte_frame_structure/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;LTE 无线帧结构详解&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;无线帧结构&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%97%a0%e7%ba%bf%e5%b8%a7%e7%bb%93%e6%9e%84&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;无线帧结构&lt;/h2&gt;&lt;p&gt;物理层定义了无线帧的结构，LTE 支持两种帧结构：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Type 1 ，用于 FDD&lt;/li&gt;
&lt;li&gt;Type 2，用于 TDD&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;1 个&lt;strong&gt;无线帧&lt;/strong&gt;的长度为 &lt;code&gt;10ms&lt;/code&gt;，分为 &lt;code&gt;10&lt;/code&gt; 个长度等于 &lt;code&gt;1ms&lt;/code&gt; 的&lt;strong&gt;子帧&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;LTE 空中接口物理资源分配的&lt;strong&gt;最小时间单位&lt;/strong&gt;是 1 个&lt;code&gt;传输时间间隔&lt;/code&gt;（Transmission Time Interval，TTI），1 个 &lt;code&gt;TTI&lt;/code&gt; 的长度是 1 个子&lt;strong&gt;帧&lt;/strong&gt;，即 &lt;code&gt;1ms&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;在 &lt;code&gt;Type 1 FDD&lt;/code&gt; 帧结构中，1 个 1&lt;code&gt;0ms&lt;/code&gt; 的&lt;strong&gt;无线帧&lt;/strong&gt;分为 10 个长度为 &lt;code&gt;1ms&lt;/code&gt; 的&lt;strong&gt;子帧&lt;/strong&gt;（Subframe），每个子帧由&lt;strong&gt;两个&lt;/strong&gt;长度为 &lt;code&gt;0.5ms&lt;/code&gt; 的&lt;strong&gt;时隙&lt;/strong&gt;（Slot）组成。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_52.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_52.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Type 1 FDD 帧结构&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_52.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Type 1 FDD 帧结构&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;在 &lt;code&gt;Type 2 TDD&lt;/code&gt; 帧结构中，1 个 &lt;code&gt;10ms&lt;/code&gt; 的&lt;strong&gt;无线帧&lt;/strong&gt;分为两个长度为 &lt;code&gt;5ms&lt;/code&gt; 的&lt;strong&gt;半帧&lt;/strong&gt;（Half Frame），每个&lt;strong&gt;半帧&lt;/strong&gt;由 5 个长度为 &lt;code&gt;1ms&lt;/code&gt; 的&lt;strong&gt;子帧&lt;/strong&gt;组成，其中包括 4 个&lt;strong&gt;普通子帧&lt;/strong&gt;和 1 个&lt;strong&gt;特殊子帧&lt;/strong&gt;。&lt;strong&gt;普通子帧&lt;/strong&gt;由两个 0.5ms 的&lt;strong&gt;时隙&lt;/strong&gt;组成，而&lt;strong&gt;特殊子帧&lt;/strong&gt;由 3 个&lt;strong&gt;特殊时隙&lt;/strong&gt;（UpPTS、GP 和 DwPTS）组成。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_53.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_53.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Type 2 TDD 帧结构&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_53.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Type 2 TDD 帧结构&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_54.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_54.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Type 2 TDD 的特殊时隙&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_54.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Type 2 TDD 的特殊时隙&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;GP&lt;/code&gt;（Guard Period）是 TDD &lt;strong&gt;上下行转换&lt;/strong&gt;的&lt;strong&gt;保护间隔&lt;/strong&gt;。 TDD 双工方式的系统中，由于&lt;code&gt;信号的传输时延&lt;/code&gt;和&lt;code&gt;设备收发的转换时延&lt;/code&gt;，为了避免上下行信号之间的干扰，需要在上下行转换的时候设置一定的保护时间间隔。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;设备收发的转换时延：指的是终端／基站在发送／接收状态间转换的设备时延，典型值在 10 ～ 20μs 之间&lt;/li&gt;
&lt;li&gt;信号的传输时延：主要与小区的覆盖半径相关，需要根据系统规划进行相应的设置。在 Release 8 版本的系统设计中，支持 GP 长度在 71 ～ 714μs 范围之内的不同设置，相对应的最大小区半径为 7 ～ 100km&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;DwPTS&lt;/code&gt;（Downlink Pilot Time Slot）用于下行信号的发送，根据不同的配置，&lt;code&gt;DwPTS&lt;/code&gt; 的长度可以是 3 ～ 12 个 &lt;code&gt;OFDM&lt;/code&gt; 符号。&lt;code&gt;LTE TDD&lt;/code&gt; 系统的主同步信号位于它的第 3 个符号，&lt;code&gt;DwPTS&lt;/code&gt; 中的其他资源用作正常的下行控制信道和下行共享信道的发送。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;UpPTS&lt;/code&gt;（Uplink Pilot Time Slot）用于上行信号的发送，它的长度可以配置为 1 ～ 2 个 &lt;code&gt;OFDM&lt;/code&gt; 符号，&lt;code&gt;UpPTS&lt;/code&gt; 可以用于承载物理随机接入信道（PRACH Format 4）和 Sounding 导频信号。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Type 2 TDD&lt;/code&gt; 帧结构支持 7 种不同的上下行时间比例分配（即配置 0 ～ 6），可以根据系统业务量的特性进行设置。&lt;/p&gt;
&lt;p&gt;这 7 种配置包括 3 种 &lt;code&gt;5ms&lt;/code&gt; 周期和 4 种 &lt;code&gt;10ms&lt;/code&gt; 周期的情况:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;5ms&lt;/code&gt; 周期的配置中，每个长度为 &lt;code&gt;5ms&lt;/code&gt; 半帧包含 1 个下行到上行的转换时间间隔 &lt;code&gt;GP&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;10ms&lt;/code&gt; 周期的配置中，每个长度为 &lt;code&gt;10ms&lt;/code&gt; 的无线帧包含 1 个或者 2 个下行到上行的转换时间间隔 GP&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在系统广播消息 &lt;code&gt;SIB1&lt;/code&gt; 中使用 3 个比特指示 &lt;code&gt;TDD&lt;/code&gt; 上下行时间比例的配置信息。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_55.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_55.webp&#34;  data-sub-html=&#34;&lt;h2&gt;LTE Type 2 TDD 上下行时间配比的配置&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_55.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;LTE Type 2 TDD 上下行时间配比的配置&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;另见&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%a6%e8%a7%81&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;另见&lt;/h2&gt;&lt;p&gt;&lt;a href=&#34;https://www.techkoala.net/lte_downlink_frame_structure/&#34; rel=&#34;&#34;&gt;LTE 系列：下行链路帧结构&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.techkoala.net/lte_uplink_frame_structure/&#34; rel=&#34;&#34;&gt;LTE 系列：上行链路帧结构&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] LTE-Advanced 关键技术详解&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：物理层概要</title>
      <link>https://www.techkoala.net/lte_physical_layer/</link>
      <pubDate>Fri, 28 Jun 2019 11:19:04 +0800</pubDate>
      
      <guid>https://www.techkoala.net/lte_physical_layer/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;LTE 物理层概要综列&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;物理层的功能&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%89%a9%e7%90%86%e5%b1%82%e7%9a%84%e5%8a%9f%e8%83%bd&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;物理层的功能&lt;/h2&gt;&lt;p&gt;物理层位于无线接入网协议的&lt;strong&gt;最底层&lt;/strong&gt;，以传输信道为接口，通过传输信道向物理信道的映射，物理层向上层提供数据传输的服务。&lt;/p&gt;
&lt;p&gt;物理层的主要功能包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;传输信道向物理信道的映射&lt;/li&gt;
&lt;li&gt;调制与解调&lt;/li&gt;
&lt;li&gt;纠错编码与速率匹配&lt;/li&gt;
&lt;li&gt;向高层报告数据是否正确传输&lt;/li&gt;
&lt;li&gt;多天线的处理&lt;/li&gt;
&lt;li&gt;功率控制&lt;/li&gt;
&lt;li&gt;频率和时间的同步&lt;/li&gt;
&lt;li&gt;射频信号的生成&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;物理层的关键技术&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%89%a9%e7%90%86%e5%b1%82%e7%9a%84%e5%85%b3%e9%94%ae%e6%8a%80%e6%9c%af&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;物理层的关键技术&lt;/h2&gt;&lt;p&gt;物理层的包含以下关键技术：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.techkoala.net/lte_multiple_access/&#34; rel=&#34;&#34;&gt;多址方式&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.techkoala.net/lte_frame_structure/&#34; rel=&#34;&#34;&gt;无线帧结构&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.techkoala.net/lte_basic_physical_resource/&#34; rel=&#34;&#34;&gt;基本物理资源及分配方法&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.techkoala.net/lte_encoding_multiplexing_and_interleaving/&#34; rel=&#34;&#34;&gt;数据的编码、复用和交织&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.techkoala.net/lte_mimo/&#34; rel=&#34;&#34;&gt;多天线技术（MIMO）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;物理层信号和信道的设计&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%89%a9%e7%90%86%e5%b1%82%e4%bf%a1%e5%8f%b7%e5%92%8c%e4%bf%a1%e9%81%93%e7%9a%84%e8%ae%be%e8%ae%a1&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;物理层信号和信道的设计&lt;/h2&gt;&lt;p&gt;出于对 &lt;code&gt;MAC&lt;/code&gt; 层的传输信道以及物理层内部处理过程的需要，物理层定义了一系列的物理信道。&lt;/p&gt;
&lt;p&gt;下行方向的物理信道包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;物理广播信道（PBCH）&lt;/li&gt;
&lt;li&gt;物理下行共享信道（PDSCH）&lt;/li&gt;
&lt;li&gt;物理多播信道（PMCH）&lt;/li&gt;
&lt;li&gt;物理下行控制信道（PDCCH）&lt;/li&gt;
&lt;li&gt;物理控制格式指示信道（PCFICH）&lt;/li&gt;
&lt;li&gt;物理 HARQ 指示信道（PHICH）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上行方向的物理信道包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;物理随机接入信道（PRACH）&lt;/li&gt;
&lt;li&gt;物理上行共享信道（PUSCH）&lt;/li&gt;
&lt;li&gt;物理上行控制信道（PUCCH）&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_12.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_12.webp&#34;  data-sub-html=&#34;&lt;h2&gt;下行信道映射&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_12.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;下行信道映射&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_13.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_13.webp&#34;  data-sub-html=&#34;&lt;h2&gt;上行信道映射&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_Physical_Layer/LTE_physical_layer_13.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;上行信道映射&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;物理信号主要包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;导频信号&lt;/li&gt;
&lt;li&gt;同步信号（PSS/SSS）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;详细内容另见：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.techkoala.net/lte_physical_signals/&#34; rel=&#34;&#34;&gt;LTE 系列：物理信号&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.techkoala.net/lte_physical_channels/&#34; rel=&#34;&#34;&gt;LTE 系列：物理信道&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.techkoala.net/lte_physical_channels_and_signals/&#34; rel=&#34;&#34;&gt;LTE 系列：帧中的物理信道和信号&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;物理层过程&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%89%a9%e7%90%86%e5%b1%82%e8%bf%87%e7%a8%8b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;物理层过程&lt;/h2&gt;&lt;p&gt;讲解典型的物理层过程包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.techkoala.net/lte_cell_synchronize/&#34; rel=&#34;&#34;&gt;终端的小区搜索和下行同步&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.techkoala.net/lte_power_control/&#34; rel=&#34;&#34;&gt;功率控制&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.techkoala.net/lte_transmission_and_reception/&#34; rel=&#34;&#34;&gt;上/下行共享信道的传输与接收&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] LTE-Advanced 关键技术详解&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：RRC 层</title>
      <link>https://www.techkoala.net/lte_rrc/</link>
      <pubDate>Fri, 21 Jun 2019 21:00:39 +0800</pubDate>
      
      <guid>https://www.techkoala.net/lte_rrc/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;LTE RRC 层详解&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;无线资源控制rrc&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%97%a0%e7%ba%bf%e8%b5%84%e6%ba%90%e6%8e%a7%e5%88%b6rrc&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;无线资源控制（RRC）&lt;/h2&gt;&lt;p&gt;无线资源控制（Radio Resource Control，RRC）层是 LTE 无线接入网协议中&lt;strong&gt;控制面&lt;/strong&gt;部分的主要内容。&lt;/p&gt;
&lt;p&gt;用户终端在进行数据通信之前，需要与网络建立承载信令消息的连接，通过信令消息的交互，控制数据通信的过程。因此，&lt;strong&gt;是否与网络建立了 RRC 连接&lt;/strong&gt;是终端状态的判断依据。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RRC 连接状态&lt;/strong&gt;即已经与网络建立了 RRC 连接的终端处于连接状态，此时终端可以进行&lt;strong&gt;数据传输&lt;/strong&gt;、&lt;strong&gt;系统信息接收&lt;/strong&gt;，以及&lt;strong&gt;邻小区的测量上报和小区切换&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RRC 空闲状态&lt;/strong&gt;即没有与网络建立 RRC 连接，那么终端处于空闲状态，此时终端&lt;strong&gt;不进行数据的传输&lt;/strong&gt;，仍然需要执行的功能包括：&lt;strong&gt;系统信息的接收&lt;/strong&gt;、&lt;strong&gt;侦听寻呼&lt;/strong&gt;，以及&lt;strong&gt;邻小区测量和小区重选&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;RRC 协议包括以下的主要功能：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;系统信息的广播，包括接入网的系统广播消息，以及核心网非接入层（NAS）系统信息的广播&lt;/li&gt;
&lt;li&gt;连接控制，包括信令承载（即 RRC 连接）的建立／重配置／重建立／释放、数据无线承载的建立／配置／释放，以及相关的完整性保护的数据加密的安全机制&lt;/li&gt;
&lt;li&gt;移动性管理，包括配置终端的测量和上报，以及终端的小区选择、重选、寻呼和切换过程&lt;/li&gt;
&lt;li&gt;服务质量（QoS）管理&lt;/li&gt;
&lt;li&gt;NAS 信令直接传输的功能&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;系统信息的广播&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%b3%bb%e7%bb%9f%e4%bf%a1%e6%81%af%e7%9a%84%e5%b9%bf%e6%92%ad&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;系统信息的广播&lt;/h3&gt;&lt;p&gt;系统信息描述网络的基本情况，采用广播的方式进行发送，对应于广播控制逻辑信道（BCCH）。终端通过对系统信息的接收，获得在系统中进行通信所需要的基本网络参数。&lt;/p&gt;
&lt;p&gt;LTE 的系统信息分为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;主信息块&lt;/code&gt;（Master Information Block，MIB）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;主信息块&lt;/strong&gt;（MIB）包括小区最基本的物理层信息，例如：系统下行信号的带宽、无线帧序号和发送天线的数目。终端需要获得这些基本的信息才能够进一步接收系统的其他信息。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;MIB&lt;/code&gt; 信息在专门定义的广播传输信道（BCH）上，采用物理层广播信道（PBCH）在固定的时间和频率位置进行传输。&lt;code&gt;MIB&lt;/code&gt; 采用 40ms 的周期重复发送，每个周期之内包括 4 次间隔为 10ms 的传输，在序号 SFN%4=0 无线帧的第 0 个子帧开始每个周期的第一次传输，其余 3 次传输发生在随后 3 个无线帧的第 0 个子帧的位置。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;系统信息块&lt;/code&gt;（System Information Block，SIB）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;系统信息块&lt;/strong&gt;（SIB）映射在下行共享传输信道（DL-SCH）上进行传输，采用 &lt;code&gt;SI-RNTI&lt;/code&gt; 进行指示。根据所传输信息的不同，&lt;code&gt;SIB&lt;/code&gt; 分为多种类型：&lt;code&gt;Type 1&lt;/code&gt; ～ &lt;code&gt;Type 12&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SIB1&lt;/code&gt;（Type 1 信息）：包括了是否允许终端接入小区的相关信息，例如系统的公众网络标识（PLMN）、小区标识、关闭的用户组（CSG）信息以及 TDD 系统上下行时隙比例的配置信息。SIB1 中还承载了其他系统信息块（SIB2 ～ SIB13）的调度信息&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SIB2&lt;/code&gt;：承载用于所有终端公共的无线资源配置信息，例如系统上行信号的频率／带宽、MBSFN 子帧、随机接入信道、寻呼信道、上行 sounding 导频和上行功率控制等的配置情况&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SIB3&lt;/code&gt; ～ &lt;code&gt;SIB8&lt;/code&gt;：承载用于终端进行小区重选的相关参数，分别针对于同频、异频和异系统 3G/GSM/cdma2000 各种不同的情况。SIB9 指示关于家庭基站名字的信息&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SIB10&lt;/code&gt; ～ &lt;code&gt;SIB12&lt;/code&gt;：用于公共灾害的警示服务，即地震和海啸警报系统（Earthquake and Tsunami Warning System，ETWS）和商用移动警报服务（Commercial MobileAlert Service，CMAS）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;SIB1&lt;/code&gt; 信息使用固定的时间位置进行传输，采用 80ms 的周期重复发送，每个周期之内包括 4 次间隔为 20ms 的传输，在序号 SFN%8=0 无线帧的第 5 个子帧开始每个周期的第一次传输，其余 3 次传输发生在随后 3 个序号为偶数的无线帧的第 5 个子帧的位置。&lt;/p&gt;
&lt;p&gt;除了 &lt;code&gt;SIB1&lt;/code&gt; 之外，其余的 &lt;code&gt;SIB&lt;/code&gt; 消息映射在系统信息（System Information，SI）上进行传输，它们的映射关系可以进行灵活的配置，由 &lt;code&gt;SIB1&lt;/code&gt; 中承载的调度信息进行指示。一个 &lt;code&gt;SIB&lt;/code&gt; 消息只能映射在一个 &lt;code&gt;SI&lt;/code&gt; 上进行传输，而一个 &lt;code&gt;SI&lt;/code&gt; 可以包含多个具有相同周期的 &lt;code&gt;SIB&lt;/code&gt; 消息。&lt;/p&gt;
&lt;p&gt;系统广播信息向传输信道的映射如图所示:&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_22.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_22.webp&#34;  data-sub-html=&#34;&lt;h2&gt;系统广播信息向传输信道的映射&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_22.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;系统广播信息向传输信道的映射&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;系统广播信息的更新采用&lt;code&gt;更新提示&lt;/code&gt;和&lt;code&gt;信息更新&lt;/code&gt;两个阶段的方式。&lt;/p&gt;
&lt;p&gt;根据系统配置的更新周期（最小值为 640ms），当需要对系统广播消息进行更新的时候，系统在前一个更新周期使用寻呼消息提示用户，系统广播消息将发生改变，但是在这个更新周期中，仍然发送原来的系统信息。在下一个更新周期，将发送改变之后的系统信息，终端根据该信息进行更新。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_23.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_23.webp&#34;  data-sub-html=&#34;&lt;h2&gt;系统广播信息的更新&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_23.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;系统广播信息的更新&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;对连接的控制&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%af%b9%e8%bf%9e%e6%8e%a5%e7%9a%84%e6%8e%a7%e5%88%b6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;对连接的控制&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;连接控制&lt;/strong&gt;指的是对接入网中的无线承载进行控制的功能，包括&lt;strong&gt;信令承载的建立&lt;/strong&gt;／&lt;strong&gt;重配置&lt;/strong&gt;／&lt;strong&gt;重建立&lt;/strong&gt;／&lt;strong&gt;释放&lt;/strong&gt;、&lt;strong&gt;数据承载的建立&lt;/strong&gt;／&lt;strong&gt;配置&lt;/strong&gt;／&lt;strong&gt;释放&lt;/strong&gt;，以及相关的&lt;strong&gt;完整性保护&lt;/strong&gt;和&lt;strong&gt;数据加密&lt;/strong&gt;的通信安全机制。&lt;/p&gt;
&lt;h4 id=&#34;连接管理&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%bf%9e%e6%8e%a5%e7%ae%a1%e7%90%86&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;连接管理&lt;/h4&gt;&lt;p&gt;LTE 中一共定义了 3 个用于信令的无线承载（Signaling Radio Bearer，SRB）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;SRB0&lt;/code&gt; 用于承载公用控制逻辑信道（CCCH）的 RRC 消息&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;SRB1&lt;/code&gt; 主要用于承载专用控制逻辑信道（DCCH）的 RRC 消息&lt;/p&gt;
&lt;p&gt;通常所说的建立 RRC 连接指的是信令无线承载 SRB1 的建立。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;SRB2&lt;/code&gt; 用于承载专用控制逻辑信道（DCCH）的核心网非接入层（NAS）控制信息。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;终端开机在网络中进行注册之后处于空闲状态，终端首先建立传输 &lt;code&gt;RRC&lt;/code&gt; 消息的信令承载 &lt;code&gt;SRB1&lt;/code&gt;，终端进入 &lt;code&gt;RRC 连接状态&lt;/code&gt;，然后，系统建立传输 &lt;code&gt;NAS&lt;/code&gt; 消息的信令无线承载 &lt;code&gt;SRB2&lt;/code&gt; 和传输数据的无线承载 &lt;code&gt;DRB&lt;/code&gt;，由此可以开始进行数据的通信。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_24.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_24.webp&#34;  data-sub-html=&#34;&lt;h2&gt;RRC 连接建立的过程&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_24.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;RRC 连接建立的过程&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;进入 &lt;code&gt;RRC 连接状态&lt;/code&gt;之后，采用 &lt;code&gt;RRC 连接重配置&lt;/code&gt;的过程来进行 &lt;code&gt;SRB2&lt;/code&gt; 和 &lt;code&gt;DRB&lt;/code&gt; 的建立和管理。&lt;/p&gt;
&lt;p&gt;重配置过程在连接状态下对 RRC 连接进行更改，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;建立／更改／释放无线承载，&lt;/li&gt;
&lt;li&gt;进行小区切换的过程&lt;/li&gt;
&lt;li&gt;建立／更改／释放终端的测量和上报&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对应于这些功能，RRC 连接重配置消息中可能携带的信息包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;无线资源的配置情况（无线承载、MAC 层和物理层），其中含有如下信息：
&lt;ul&gt;
&lt;li&gt;公共的配置信息，描述了移动性控制信息和系统信息中公共的无线资源配置情况，例如随机接入信道的参数、系统上行 sounding 导频配置和上行功率控制参数等静态的物理层配置信息&lt;/li&gt;
&lt;li&gt;专用的配置信息，专用的配置信息用于无线承载的管理，例如&lt;code&gt; MAC 层&lt;/code&gt;配置、&lt;code&gt;SPS 调度&lt;/code&gt;以及专用的物理层配置等&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;移动性控制的相关参数&lt;/li&gt;
&lt;li&gt;无线测量的配置信息&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_25.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_25.webp&#34;  data-sub-html=&#34;&lt;h2&gt;RRC 连接重配置的过程&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_25.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;RRC 连接重配置的过程&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;按照 &lt;code&gt;RRC 连接重配置&lt;/code&gt;消息中携带的配置信息，无线承载建立的过程包括建立一个 &lt;code&gt;PDCP 实体&lt;/code&gt;、建立一个 &lt;code&gt;RLC 实体&lt;/code&gt;，以及按照指定的逻辑信道标识建立一个逻辑信道。&lt;/p&gt;
&lt;p&gt;与建立的过程相对应，当 &lt;code&gt;RRC 连接重配置&lt;/code&gt;消息指示释放某个无线承载的时候，将释放相应的 &lt;code&gt;PDCP 实体&lt;/code&gt;、&lt;code&gt;RLC 实体&lt;/code&gt;和&lt;code&gt;逻辑信道&lt;/code&gt;。通过 &lt;code&gt;RRC 连接&lt;/code&gt;释放的过程，终端由 &lt;code&gt;RRC 连接状态&lt;/code&gt;转变为&lt;code&gt;空闲状态&lt;/code&gt;。这个过程释放 &lt;code&gt;RRC 连接&lt;/code&gt;，包括所有已经建立的信令和数据的无线承载，以及所有的无线资源。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_26.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_26.webp&#34;  data-sub-html=&#34;&lt;h2&gt;RRC连接释放的过程&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_26.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;RRC连接释放的过程&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h4 id=&#34;通信安全的功能&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%80%9a%e4%bf%a1%e5%ae%89%e5%85%a8%e7%9a%84%e5%8a%9f%e8%83%bd&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;通信安全的功能&lt;/h4&gt;&lt;p&gt;为了保证通信的安全，防止窃听、伪装等恶意行为，无线接入网的连接控制中包含安全通信的相关功能，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;信令消息的完整性保护&lt;/li&gt;
&lt;li&gt;信令消息加密&lt;/li&gt;
&lt;li&gt;数据消息的加密&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在 &lt;code&gt;RRC&lt;/code&gt; 连接建立的过程中，无线接入网从核心网取得终端用户的相关信息，然后可以使用安全模式激活的 RRC 消息设置用户密钥和加密算法，开启信令完整性保护和加密的功能，从而保证后续通信过程的安全（包括 &lt;code&gt;SRB2&lt;/code&gt; 和 &lt;code&gt;DRB&lt;/code&gt; 的建立等）。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_27.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_27.webp&#34;  data-sub-html=&#34;&lt;h2&gt;安全模式激活的过程&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_27.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;安全模式激活的过程&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;在通信的过程中还可以通过计数器检查（counter check）的 &lt;code&gt;RRC 消息&lt;/code&gt;防止&lt;code&gt;中间人&lt;/code&gt;（man in the middle）攻击。在计数器检查的过程中，网络发送计数器检查消息要求终端确认在每个数据无线承载 &lt;code&gt;DRB&lt;/code&gt; 上发送和接收数据的数量，通过这样的方法可以排除&lt;code&gt;中间人&lt;/code&gt;可能进行的伪装通信。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_28.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_28.webp&#34;  data-sub-html=&#34;&lt;h2&gt;计数器检查的过程&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_28.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;计数器检查的过程&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;终端移动性的管理&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%bb%88%e7%ab%af%e7%a7%bb%e5%8a%a8%e6%80%a7%e7%9a%84%e7%ae%a1%e7%90%86&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;终端移动性的管理&lt;/h3&gt;&lt;p&gt;终端移动性的管理是 LTE 作为移动通信系统一个重要的控制功能，实现相关功能的协议包括:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;终端与无线接入网之间的 RRC 控制协议&lt;/li&gt;
&lt;li&gt;终端与核心网之间非接入层（NAS）控制协议&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;空闲状态终端的移动性管理&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%a9%ba%e9%97%b2%e7%8a%b6%e6%80%81%e7%bb%88%e7%ab%af%e7%9a%84%e7%a7%bb%e5%8a%a8%e6%80%a7%e7%ae%a1%e7%90%86&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;空闲状态终端的移动性管理&lt;/h4&gt;&lt;p&gt;处于 &lt;code&gt;RRC 空闲状态&lt;/code&gt;的终端与无线接入网没有建立 &lt;code&gt;RRC&lt;/code&gt; 连接，终端的信息在核心网中注册并且分配有 &lt;code&gt;IP&lt;/code&gt; 地址，无线接入网中不存储空闲状态终端的信息。终端进行自身的移动性管理，发起小区选择／重选，当跟踪区位置发生改变的时候向核心网进行登记。核心网记录终端所处的跟踪区位置（TrackingArea，TA，通常由相邻覆盖的若干个小区组成），核心网可以发起对终端的寻呼，终端根据核心网配置的 &lt;code&gt;DRX&lt;/code&gt; 周期监听可能的寻呼消息。空闲状态的终端&lt;strong&gt;不能进行&lt;/strong&gt;单播数据的传输。&lt;/p&gt;
&lt;p&gt;在终端开机的过程中，首先根据 &lt;code&gt;PLMN&lt;/code&gt;（公众网络标识）进行网络的选择，选定例如某个运营商的网络，之后终端进行小区选择，确定所驻留的小区，侦听该小区的控制信道。然后采用跟踪区改变的流程向核心网注册终端所处的跟踪区位置。&lt;/p&gt;
&lt;p&gt;终端在移动的过程中，可能由一个小区无线信号的覆盖范围进入另一个小区的覆盖范围，这时候终端将进行小区重选的操作，改变所驻留侦听控制信道的小区。如果这个小区与前一个小区属于不同的跟踪区，那么在小区重选之后，终端将发起跟踪区改变的流程，使用非接入层（NAS）信令向核心网注册新的跟踪区位置。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_29.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_29.webp&#34;  data-sub-html=&#34;&lt;h2&gt;空闲状态终端的寻呼和跟踪区改变&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_29.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;空闲状态终端的寻呼和跟踪区改变&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;当有呼叫到达或者是系统消息改变需要向空闲状态的终端发送寻呼消息的时候，核心网&lt;code&gt;移动控制实体&lt;/code&gt;（MME）根据终端所注册的跟踪区位置，找到相对应的跟踪区列表，然后在列表中所有的跟踪区上，发送针对该终端的寻呼消息。&lt;/p&gt;
&lt;h4 id=&#34;连接状态终端的移动性管理&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%bf%9e%e6%8e%a5%e7%8a%b6%e6%80%81%e7%bb%88%e7%ab%af%e7%9a%84%e7%a7%bb%e5%8a%a8%e6%80%a7%e7%ae%a1%e7%90%86&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;连接状态终端的移动性管理&lt;/h4&gt;&lt;p&gt;处于 &lt;code&gt;RRC 连接状态&lt;/code&gt;的终端与无线接入网建立了 &lt;code&gt;RRC&lt;/code&gt; 连接，终端的信息在核心网和无线接入网中都进行存储和管理。网络登记终端所处的小区位置，终端的移动性由网络采用切换的流程进行管理。&lt;code&gt;RRC 连接状态&lt;/code&gt;的终端&lt;strong&gt;可以进行&lt;/strong&gt;单播数据的传输。为了节省耗电，终端可以采用由无线接入网配置的 &lt;code&gt;DRX&lt;/code&gt; 功能。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;RRC 连接状态&lt;/code&gt;终端的移动性由网络进行控制，网络根据无线接口的情况决定是否改变终端的服务小区，即切换的过程是由网络触发的。为了获取关于无线接口情况的信息，网络可以配置终端进行相关的测量和上报，然后根据上报的结果，触发切换的流程。另外，没有收到终端的测量与上报，网络也可以自行触发进行切换。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_30.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_30.webp&#34;  data-sub-html=&#34;&lt;h2&gt;连接状态终端的小区间切换&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_30.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;连接状态终端的小区间切换&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h5 id=&#34;切换过程&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%88%87%e6%8d%a2%e8%bf%87%e7%a8%8b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;切换过程&lt;/h5&gt;&lt;p&gt;首先，由源服务小区配置终端进行相关的测量和上报，根据上报的信息，源服务小区判断终端是否需要进行切换并且选择目标小区，触发切换的信令流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;通过 &lt;code&gt;eNodeB&lt;/code&gt; 之间互联的 &lt;code&gt;X2&lt;/code&gt; 接口，源小区向目标小区发送切换请求的消息，该消息中包含了对于目标小区无线资源需求情况的信息。&lt;/li&gt;
&lt;li&gt;如果目标小区确定可以接受终端进行切换，那么目标小区根据要求进行无线资源的准备，并向源小区反馈切换请求确认的消息，该消息包含终端接入目标小区时需要的信息，例如新的 &lt;code&gt;C-RNTI&lt;/code&gt; 标识、目标小区的系统信息，以及分配的专用随机接入序列等。&lt;/li&gt;
&lt;li&gt;源服务小区在收到目标小区对于切换请求的确认消息后，采用带有移动性控制信息的 &lt;code&gt;RRC&lt;/code&gt; 连接重配置消息将这些来自目标小区的接入配置信息转发给终端，并且命令终端向目标小区进行切换。(&lt;strong&gt;注：&lt;/strong&gt; 此时，因为来自核心网数据的传输路由还没有发生改变，源基站还可能负责将数据转发给目标基站。)&lt;/li&gt;
&lt;li&gt;收到 RRC 连接重配置消息的切换命令后，终端根据指示的信息，向目标小区发起接入，采用随机接入的过程获得与目标小区的上行同步以及上行资源的分配。然后，在所分配的上行无线资源上，终端向目标小区发送 RRC 连接重配置完成消息，确认终端已经完成了切换，目标基站已经成为终端的服务基站，可以开始向终端发送数据。&lt;/li&gt;
&lt;li&gt;无线接入网的切换完成后，目标基站将向核心网的&lt;code&gt;移动控制实体&lt;/code&gt;（MME）发送&lt;strong&gt;路径切换请求&lt;/strong&gt;，并由 &lt;code&gt;MME&lt;/code&gt; 协调数据网管（SGW）完成用户数据传输路径的改变，核心网将数据路径转移到目标小区。&lt;/li&gt;
&lt;li&gt;完成数据路径的转换后，目标小区向源小区发送终端上下文释放的消息，以此来确认成功地完成了整个切换的过程，源小区释放对应于该终端用户的相关资源。&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;配置终端的测量和上报&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%85%8d%e7%bd%ae%e7%bb%88%e7%ab%af%e7%9a%84%e6%b5%8b%e9%87%8f%e5%92%8c%e4%b8%8a%e6%8a%a5&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;配置终端的测量和上报&lt;/h4&gt;&lt;p&gt;为了进行移动性管理的操作，终端需要根据网络的配置对无线信道的情况进行测量，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同频测量场景&lt;/li&gt;
&lt;li&gt;异频测量场景&lt;/li&gt;
&lt;li&gt;异系统的测量场景&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;网络可以通过广播或者专用的控制信息配置终端的测量，对于空闲状态的终端，通过网络广播消息中配置的测量参数，终端完成小区选择／重选等移动性功能。对于 &lt;code&gt;RRC 连接状态&lt;/code&gt;的终端，通过 &lt;code&gt;RRC 信令&lt;/code&gt;（即 &lt;code&gt;RRC 连接重配置消息&lt;/code&gt;）可以对终端进行专门的测量配置，终端向网络上报测量结果，协助网络进行小区切换的移动性管理。&lt;/p&gt;
&lt;p&gt;在进行测量时，如果终端的源服务小区与目标小区工作在相同的载波频率，那么称为&lt;code&gt;同频测量&lt;/code&gt;，例如采用频率复用系数等于 1 的同频组网的情况。进行同频测量，&lt;strong&gt;不需要测量间隔&lt;/strong&gt;，也就是说，在对同频目标小区进行测量的时候，终端&lt;strong&gt;不需要中断&lt;/strong&gt;对源服务小区的信号接收。&lt;/p&gt;
&lt;p&gt;源服务小区和目标小区工作在不同载波频率的场景属于&lt;code&gt;异频测量&lt;/code&gt;，为了对异频的目标小区进行测量，通常情况下需要配置测量间隔，终端&lt;strong&gt;中断&lt;/strong&gt;对源小区的信号接收，将接收频率调整到目标小区进行测量。&lt;/p&gt;
&lt;p&gt;对终端的测量进行配置的消息内容主要包括&lt;code&gt;测量的对象&lt;/code&gt;和&lt;code&gt;测量上报的配置&lt;/code&gt;。其中，每一个测量的对象对应于 LTE 系统内同频或者异频的一个载波频率，或者某一个载波频率上异系统 WCDMA 的一个小区列表。而每一个测量上报的配置包括测量上报的格式，例如上报多少个目标小区的测量结果，以及上报的触发条件，包括周期性上报和事件触发两种可能性。&lt;/p&gt;
&lt;p&gt;适用于 LTE 系统内同频或者异频的场景一共定义有 5 种事件，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A1 事件，服务小区的信号质量优于某个设定的门限&lt;/li&gt;
&lt;li&gt;A2 事件，服务小区的信号质量差于某个设定的门限&lt;/li&gt;
&lt;li&gt;A3 事件，相邻小区的信号质量优于服务小区超过某个设定的门限&lt;/li&gt;
&lt;li&gt;A4 事件，相邻小区的信号质量优于某个设定的门限&lt;/li&gt;
&lt;li&gt;A5，服务小区的信号质量差于某个设定的门限的同时，相邻小区的信号质量优于某个设定的门限&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;另外，针对与异系统之间的移动性操作，定义了两种事件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;B1 事件，异系统相邻小区的信号质量优于某个设定的门限&lt;/li&gt;
&lt;li&gt;B2 事件，服务小区的信号质量差于某个设定的门限的同时，异系统相邻小区的信号质量优于某个设定的门限&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_31.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_31.webp&#34;  data-sub-html=&#34;&lt;h2&gt;终端测量上报的过程&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_31.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;终端测量上报的过程&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;服务质量qos管理&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9c%8d%e5%8a%a1%e8%b4%a8%e9%87%8fqos%e7%ae%a1%e7%90%86&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;服务质量（QoS）管理&lt;/h3&gt;&lt;p&gt;LTE 系统中采用 &lt;code&gt;EPS 承载&lt;/code&gt;为单位进行端到端的服务质量（QoS）管理。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;EPS&lt;/code&gt;（Evolved Packet System）承载是终端和分组数据网网关（P-GW）之间的连接，1 个 &lt;code&gt;EPS 承载&lt;/code&gt;包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 个无线承载，即终端和 eNodeB 基站之间的连接&lt;/li&gt;
&lt;li&gt;1 个 S1 承载，即 eNodeB 和服务网关（S-GW）之间的连接&lt;/li&gt;
&lt;li&gt;1 个 S5/S8 承载，即 S-GW 和 P-GW 之间的连接。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于一个终端，网络可以建立&lt;strong&gt;多个&lt;/strong&gt; &lt;code&gt;EPS 承载&lt;/code&gt;，每个 &lt;code&gt;EPS 承载&lt;/code&gt;可以有不同的 &lt;code&gt;QoS&lt;/code&gt; 参数，因此除了在不同用户之间实现不同的 &lt;code&gt;QoS&lt;/code&gt;，属于同一个用户的多个 &lt;code&gt;EPS 承载&lt;/code&gt;也可以实现不同的 &lt;code&gt;QoS&lt;/code&gt;，用于一个用户在同时进行的不同业务。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_32.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_32.webp&#34;  data-sub-html=&#34;&lt;h2&gt;LTE 系统中的承载&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_32.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;LTE 系统中的承载&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;针对每一个 &lt;code&gt;EPS 承载&lt;/code&gt;，由核心网分配 &lt;code&gt;QoS 参数&lt;/code&gt;，包括&lt;code&gt;QoS 类别标识&lt;/code&gt;（QoS Class Identifier，QCI）和&lt;code&gt;分配和滞留优先级&lt;/code&gt;（Allocation and Retention Priority，ARP）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;QCI 参数描述了承载的 QoS 类别，每一种 QoS 类别都对应于一系列影响数据服务质量的具体系统参数，例如调度的加权、准入门限和排队门限，等等。&lt;/li&gt;
&lt;li&gt;ARP 参数描述了承载的优先级，包括在资源受限的情况下是否允许建立承载，或者是否丢弃某个优先级较低的承载&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;另外还有&lt;code&gt;保证数据速率&lt;/code&gt;（Guaranteed Bit Rate，GBR）和&lt;code&gt;最大数据速率&lt;/code&gt;（Maximum Bit Rate，MBR），这两个参数用于具有保证速率属性的承载。而对于不具有保证速率属性的承载，使用参数&lt;code&gt;最大总速率&lt;/code&gt;（Aggregated Maximum Bit Rate，AMBR）来限制一个终端的所有不具有保证速率属性的承载的最大总速率。&lt;/p&gt;
&lt;p&gt;根据核心网确定的 &lt;code&gt;QoS&lt;/code&gt; 参数，无线接入网负责执行无线承载部分的 &lt;code&gt;QoS&lt;/code&gt; 管理，例如无线资源的调度策略和排队管理策略等。&lt;/p&gt;
&lt;p&gt;RRC 协议可以执行一部分 &lt;code&gt;QoS&lt;/code&gt; 管理的功能，主要包括：半持续资源调度的配置，以及通过配置终端上行逻辑信道的优先级，实现对一个终端内多个上行承载的速率控制。&lt;/p&gt;
&lt;h3 id=&#34;核心网信令的直接传输&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%a0%b8%e5%bf%83%e7%bd%91%e4%bf%a1%e4%bb%a4%e7%9a%84%e7%9b%b4%e6%8e%a5%e4%bc%a0%e8%be%93&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;核心网信令的直接传输&lt;/h3&gt;&lt;p&gt;除了 RRC 协议信息之外，RRC 消息还可以用于承载核心网的非接入层（NAS）信息。采用所定义的上行／下行 NAS 信息直接传输的 RRC 过程，可以通过&lt;code&gt;隧道打包&lt;/code&gt;的方式，在终端用户和网络核心网之间传输 NAS 信息。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_32.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_32.webp&#34;  data-sub-html=&#34;&lt;h2&gt;上行（NAS）信息的直接传输&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_32.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;上行（NAS）信息的直接传输&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_33.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_33.webp&#34;  data-sub-html=&#34;&lt;h2&gt;下行（NAS）信息的直接传输&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_33.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;下行（NAS）信息的直接传输&lt;/figcaption&gt;
    &lt;/figure&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：MAC 层</title>
      <link>https://www.techkoala.net/lte_mac/</link>
      <pubDate>Mon, 10 Jun 2019 21:00:31 +0800</pubDate>
      
      <guid>https://www.techkoala.net/lte_mac/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;LTE MAC 层详解&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;媒体接入控制mac&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%aa%92%e4%bd%93%e6%8e%a5%e5%85%a5%e6%8e%a7%e5%88%b6mac&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;媒体接入控制（MAC）&lt;/h2&gt;&lt;p&gt;媒体接入控制（Medium Access Control，MAC）层接收来自上层的 &lt;code&gt;RLC&lt;/code&gt; 层的逻辑信道，经过处理后，以传输信道的方式输出到下层的物理层。&lt;/p&gt;
&lt;p&gt;MAC 层的主要功能包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;逻辑信道向传输信道的映射与复用&lt;/li&gt;
&lt;li&gt;根据不同优先级进行动态的资源调度&lt;/li&gt;
&lt;li&gt;选择传输格式实现动态的速率自适应&lt;/li&gt;
&lt;li&gt;混合自动重传（HybridAutomatic Repeat reQuest，HARQ）的纠错功能&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;逻辑信道&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%80%bb%e8%be%91%e4%bf%a1%e9%81%93&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;逻辑信道&lt;/h3&gt;&lt;p&gt;逻辑信道根据所传输的信息的类型进行定义。LTE 定义的逻辑信道包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用于传输系统广播消息的&lt;strong&gt;广播控制信道&lt;/strong&gt;（Broadcast Control CHannel，BCCH）&lt;/li&gt;
&lt;li&gt;用于传输寻呼消息的&lt;strong&gt;寻呼控制信道&lt;/strong&gt;（Paging Control CHannel，PCCH）&lt;/li&gt;
&lt;li&gt;分别用于空闲状态和连接状态的终端传输控制信息的&lt;strong&gt;公用和专用控制信道&lt;/strong&gt;（Common/ Dedicated Control CHannel，CCCH/DCCH）&lt;/li&gt;
&lt;li&gt;用于传输用户数据信息的&lt;strong&gt;专用业务信道&lt;/strong&gt;（Dedicated Traffic CHannel，DTCH）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;传输信道&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%bc%a0%e8%be%93%e4%bf%a1%e9%81%93&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;传输信道&lt;/h3&gt;&lt;p&gt;传输信道根据信息传输的方式进行定义。传输信道以&lt;strong&gt;传输块&lt;/strong&gt;为单位在发送时间间隔（Transmission Time Interval，TTI）所定义的时间长度内进行每一次的发送，LTE 中设计的 &lt;code&gt;TTI&lt;/code&gt; 长度是 1ms。每个传输块都有定义的传输格式，它由网络的调度功能动态地确定，包括传输块大小、调制方式和多天线方案等。&lt;/p&gt;
&lt;p&gt;LTE 定义的传输信道包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;广播信道&lt;/strong&gt;（Paging CHannel，PCH），采用固定的传输格式，用于传输广播控制信道；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上行共享信道／下行共享信道&lt;/strong&gt;（Downlink/Uplink Shared CHannel，DL-SCH/UL-SCH），支持基于无线信道状态的实时调度、动态的速率自适应、HARQ 软合并和多天线空间复用的传输方式，是 LTE 进行上行和下行数据传输的主要的传输信道。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在 LTE 空中接口 &lt;code&gt;MAC 层&lt;/code&gt;协议功能的处理过程中，逻辑信道向传输信道以及最终的物理信道的映射关系如下所示：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_9.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_9.webp&#34;  data-sub-html=&#34;&lt;h2&gt;下行信道映射&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_9.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;下行信道映射&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_10.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_10.webp&#34;  data-sub-html=&#34;&lt;h2&gt;上行信道映射&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_10.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;上行信道映射&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;mac-协议数据单元格式&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#mac-%e5%8d%8f%e8%ae%ae%e6%95%b0%e6%8d%ae%e5%8d%95%e5%85%83%e6%a0%bc%e5%bc%8f&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;MAC 协议数据单元格式&lt;/h3&gt;&lt;p&gt;&lt;code&gt;MAC 包头&lt;/code&gt;可以包含多个子包头，每个子包头对应于 &lt;code&gt;MAC PDU&lt;/code&gt; 负荷部分的 1 个 &lt;code&gt;MAC 控制单元&lt;/code&gt;、&lt;code&gt;MAC SDU&lt;/code&gt; 或者填充比特字段。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_11.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_11.webp&#34;  data-sub-html=&#34;&lt;h2&gt;MAC 协议数据单元 PDU 的格式&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_11.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;MAC 协议数据单元 PDU 的格式&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;子包头的格式如图所示：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_12.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_12.webp&#34;  data-sub-html=&#34;&lt;h2&gt;MAC 层的子包头&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_12.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;MAC 层的子包头&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;R&lt;/code&gt;（Reserve）字段为保留字段，数值设为 &lt;code&gt;0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;E&lt;/code&gt;（Extension）字段指示本子包头后面是否还有其他的子包头，或者是包头部分已经结束，将要开始 &lt;code&gt;MAC 控制单&lt;/code&gt;元或者 MAC SDU 的传输&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LCID&lt;/code&gt;（Logical Channel ID）字段指示 &lt;code&gt;MAC SDU&lt;/code&gt; 所属逻辑信道的标识、&lt;code&gt;MAC 控制单元&lt;/code&gt;的类型或者是填充比特&lt;/li&gt;
&lt;li&gt;&lt;code&gt;F&lt;/code&gt;（Format）字段指示随后的 &lt;code&gt;L&lt;/code&gt; 字段的长度，7 个比特或者 15 个比特&lt;/li&gt;
&lt;li&gt;&lt;code&gt;L&lt;/code&gt;（Length）字段指示与子包头相对应的 &lt;code&gt;MAC SDU&lt;/code&gt; 或者 &lt;code&gt;MAC 控制单元&lt;/code&gt;的字节长度&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;mac-层功能和-mac-控制单元&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#mac-%e5%b1%82%e5%8a%9f%e8%83%bd%e5%92%8c-mac-%e6%8e%a7%e5%88%b6%e5%8d%95%e5%85%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;MAC 层功能和 MAC 控制单元&lt;/h3&gt;&lt;p&gt;下面介绍 MAC 层的主要功能，以及在完成这些功能过程中所需要的 MAC 控制单元。&lt;/p&gt;
&lt;h4 id=&#34;随机接入过程&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%9a%8f%e6%9c%ba%e6%8e%a5%e5%85%a5%e8%bf%87%e7%a8%8b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;随机接入过程&lt;/h4&gt;&lt;p&gt;随机接入是由 MAC 层控制的一项功能，空闲状态的终端通过随机接入过程与网络建立连接。&lt;/p&gt;
&lt;p&gt;首先建立&lt;strong&gt;执行控制功能的连接&lt;/strong&gt;（即 &lt;code&gt;RRC 连接&lt;/code&gt;），终端由空闲状态转变为连接状态$\Longrightarrow$然后通过 &lt;code&gt;RRC 控制功能&lt;/code&gt;建立数据通信的连接，开始进行数据的通信。(对于连接状态的终端，也可能因为长时间没有发送上行信号而失去上行同步，此时如果有数据需要进行发送，终端需要进行随机接入的过程，与基站重新建立上行同步。随机接入过程可以由终端发起，也可以由网络侧通过物理层下行控制信道（PDCCH）触发终端发起随机接入)&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_13.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_13.webp&#34;  data-sub-html=&#34;&lt;h2&gt;随机接入过程&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_13.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;随机接入过程&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;在随机接入过程中，终端选择 1 个随机接入序列通过物理层随机接入信道（PRACH）进行发送（在网络侧触发的情况下，由触发消息指示终端所使用的随机接入序列）$\Longrightarrow$基站检测到随机接入序列的信号后，在下行方向上发送随机接入响应，该消息指示了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;基站所检测到的随机接入序列的编号&lt;/li&gt;
&lt;li&gt;发起随机接入的终端分配的上行资源位置&lt;/li&gt;
&lt;li&gt;上行信号发送时间的调整量&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;冲突解决&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%86%b2%e7%aa%81%e8%a7%a3%e5%86%b3&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;冲突解决&lt;/h5&gt;&lt;p&gt;如果多个终端选择了&lt;strong&gt;相同的随机接入序列&lt;/strong&gt;并且在&lt;strong&gt;相同的时间&lt;/strong&gt;进行发送，那么多个终端可能针对随机接入响应的接收发生冲突，所以需要冲突解决的过程。&lt;/p&gt;
&lt;p&gt;在收到随机接入响应的消息后，终端根据消息指示的内容进行上行信号的发送（又称为“消息 3”），对应于图中的步骤 3，该信号中可能包含终端的唯一标识。随后基站根据接收到的上行信息，向唯一标识所对应的成功接入的终端返回冲突解决消息，完成冲突解决的过程。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;小区无线网络临时标识。&lt;/p&gt;
&lt;p&gt;收到基站的随机接入响应消息后，终端发送上行消息（即&lt;code&gt;消息 3&lt;/code&gt;）开始冲突解决的过程。对于连接状态的终端发起随机接入过程的情况，该消息中包含终端的唯一标识：小区无线网络临时标识（Cell-Radio Network Temporary Identifier，C-RNTI）。具体来说，“消息 3”中使用 &lt;code&gt;MAC 控制单元&lt;/code&gt;来指示 &lt;code&gt;C-RNTI&lt;/code&gt; 的信息。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;C-RNTI&lt;/code&gt; 的 &lt;code&gt;MAC 控制单元&lt;/code&gt;仅包含一个字段，即 16 比特 &lt;code&gt;C-RNTI&lt;/code&gt;。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_14.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_14.webp&#34;  data-sub-html=&#34;&lt;h2&gt;MAC 控制单元——C-RNTI&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_14.webp&#39;  
            &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;MAC 控制单元——C-RNTI&lt;/figcaption&gt;
      &lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;终端冲突解决标识。&lt;/p&gt;
&lt;p&gt;在上行随机接入过程中，终端发送上行消息（即&lt;code&gt;消息 3&lt;/code&gt;）开始冲突解决的过程，对于连接状态的终端发起随机接入的情况，“消息 3”中指示终端的唯一标识 &lt;code&gt;C-RNTI&lt;/code&gt;，在随后的下行发送中，网络通过物理层&lt;code&gt;下行控制信道&lt;/code&gt;（PDCCH）指示该 &lt;code&gt;C-RNTI&lt;/code&gt; 即可完成冲突解决。在另一种情况下，对于空闲状态的终端发起随机接入过程的情况，网络在随机接入响应消息中向终端分配&lt;code&gt;临时 RNTI&lt;/code&gt;，但是因为还存在可能发生冲突的情况，所以在随后的&lt;code&gt;消息 3&lt;/code&gt;中终端不使用&lt;code&gt;临时 RNTI&lt;/code&gt;，而是传输&lt;code&gt;上行公用控制信道&lt;/code&gt;（CCCH）的 &lt;code&gt;RRC&lt;/code&gt; 连接建立请求消息。与此相对应的，基站在随后的下行发送中通过终端冲突解决标识的 &lt;code&gt;MAC 控制单元&lt;/code&gt;完成冲突解决的过程。成功地完成冲突解决之后，终端将使用网络分配的&lt;code&gt;临时 RNTI&lt;/code&gt;作为 &lt;code&gt;C-RNTI&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;终端冲突解决标识的 &lt;code&gt;MAC 控制单元&lt;/code&gt;仅包含一个字段：&lt;code&gt;终端冲突解决标识&lt;/code&gt;，这个字段包含上行随机接入冲突解决过程中，终端在&lt;code&gt;消息 3&lt;/code&gt;中发送的&lt;code&gt;上行公用控制信道&lt;/code&gt;的服务数据单元（CCCH SDU）。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_15.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_15.webp&#34;  data-sub-html=&#34;&lt;h2&gt;MAC 控制单元——终端冲突解决标识&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_15.webp&#39;  
            &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;MAC 控制单元——终端冲突解决标识&lt;/figcaption&gt;
      &lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;数据的调度和传输&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%95%b0%e6%8d%ae%e7%9a%84%e8%b0%83%e5%ba%a6%e5%92%8c%e4%bc%a0%e8%be%93&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;数据的调度和传输&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;数据的调度和传输&lt;/strong&gt;是 MAC 层控制的另一项主要功能。&lt;/p&gt;
&lt;p&gt;对于数据信息的传输，即传输信道中的上行／下行共享信道（DL/UL-SCH），可以根据无线信道状态将无线资源在用户间进行自适应的调度分配，实现系统资源的优化利用，同时满足各个用户的 &lt;code&gt;QoS&lt;/code&gt; 要求。主要采用&lt;code&gt;动态调度&lt;/code&gt;的方式，也支持&lt;code&gt;半持续调度&lt;/code&gt;（Semi-Persistent Scheduling，SPS）的方式。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;动态调度的情况下，根据无线信道状态和用户优先级等信息，基站按照长度等于 1ms 的 &lt;code&gt;TTI&lt;/code&gt; 作为单位，在每个 1ms 对各个终端所使用的无线资源进行分配，并且选择合适的数据传输格式&lt;/li&gt;
&lt;li&gt;半持续调度的情况下，基站一次性为终端分配较长时间的无线资源，可以节省进行资源调度的控制信息&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;半持续调度&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8d%8a%e6%8c%81%e7%bb%ad%e8%b0%83%e5%ba%a6&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;半持续调度&lt;/h5&gt;&lt;p&gt;LTE 支持&lt;code&gt;半持续&lt;/code&gt;（Semi-Persistent Scheduling，SPS）的调度方式。对于某些业务量不大而且比较规则的业务（例如 VoIP），一次性的对较长时间内的资源使用进行分配，而不需要在每次传输的时候都进行动态分配，通过这样的机制，节省了为终端进行资源调度的 &lt;code&gt;PDCCH&lt;/code&gt; 控制信令的开销。&lt;/p&gt;
&lt;p&gt;对于半持续调度，为了减小调度信令的开销，基站一次为终端分配一段时间内预先定义好的无线资源和相应的传输格式，主要参数是&lt;code&gt;半持续调度的时间间隔&lt;/code&gt;。例如，根据 VoIP 业务的流量特点，设置半持续调度的时间间隔等于 20ms，为用户分配一段时间内间隔为 20ms、相同频域位置和大小的无线资源。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_16.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_16.webp&#34;  data-sub-html=&#34;&lt;h2&gt;半持续调度&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_16.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;半持续调度&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h5 id=&#34;harq&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#harq&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;HARQ&lt;/h5&gt;&lt;p&gt;MAC 层采用混合自动重传（Hybrid Automatic Repeat reQuest，HARQ）的数据纠错机制。设置多个并行的&lt;code&gt;停——等&lt;/code&gt;机制的 HARQ 进程，每个进程独立地进行数据包的重传和合并。多个并行的进程保证数据包传输的工作效率，重传保证了数据包传输的正确性，同时合并的处理还可以提供额外的性能增益。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_17.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_17.webp&#34;  data-sub-html=&#34;&lt;h2&gt;多个并行的 停——等 机制的 HARQ 进程&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_17.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;多个并行的 停——等 机制的 HARQ 进程&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;在下行的数据传输中，每个 &lt;code&gt;HARQ&lt;/code&gt; 进程内部采用&lt;code&gt;异步&lt;/code&gt;、&lt;code&gt;自适应&lt;/code&gt;的机制。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;异步指的是对于 1 个数据包的多次传输（包括第一次的初传和随后可能的多次重传），各次传输之间没有固定的定时关系。也就是说，对于需要重传的数据包，在满足与这个数据包上一次传输之间的时间间隔不小于规定的最小值（8ms）的条件的基础上，调度器可以灵活地选择进行重传的时间&lt;/li&gt;
&lt;li&gt;自适应指的是在各次传输之间，调度器可以灵活地选择不同位置／大小的物理资源，以及不同的传输格式（包括调制方式和信道编码速率等）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;与异步、自适应的 &lt;code&gt;HARQ&lt;/code&gt; 机制相匹配，下行数据包的传输伴随有下行调度信令，调度信令中指示当前所传输的下行数据包的资源位置、传输格式和所对应的 &lt;code&gt;ARQ&lt;/code&gt; 进程号码，用户终端通过检测下行调度信令，可以进行下行数据包的接收、重传数据包的合并以及数据解调的操作&lt;/p&gt;
&lt;p&gt;对于上行数据的传输，每个 &lt;code&gt;HARQ&lt;/code&gt; 进程内部采用同步的机制。与下行方向采用的异步机制不同，上行采用的同步机制指的是对于上行 &lt;code&gt;HARQ&lt;/code&gt; 过程中一个数据包的多次传输（包括第一次的初传和随后可能的多次重传），各次传输之间采用固定的定时关系。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;例如：在时刻 0 进行初传的数据包，如果出现接收错误需要进行重新传输，那么第一次重传将发生在时刻 8，如果仍然接收错误需要继续重传，那么第二次重传将发生在时刻 16，以此类推。根据这样的同步的定时关系，对于上行 HARQ 过程的数据重新传输，基站可以不对重传的数据包进行调度。此时，终端仅收到网络侧基站反馈的关于数据接收出错的消息，终端将根据固定的定时关系，在规定的时间采用与第一次传输相同的频率资源位置和传输格式进行重传，这种方式称为同步、非自适应的 HARQ 机制。&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;上行方向还可以支持同步、自适应的 &lt;code&gt;HARQ&lt;/code&gt; 机制，网络侧基站反馈关于数据接收出错的消息的同时可以发送对于重传数据包的上行调度信息，该调度信息不改变重传数据包的传输时间，即仍然是同步的机制，但是可以调度不同位置和大小的频率资源，以及不同的传输格式，也就是说，实现自适应的 &lt;code&gt;HARQ&lt;/code&gt; 机制。&lt;/p&gt;
&lt;h5 id=&#34;上行缓存状态报告&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8a%e8%a1%8c%e7%bc%93%e5%ad%98%e7%8a%b6%e6%80%81%e6%8a%a5%e5%91%8a&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;上行缓存状态报告&lt;/h5&gt;&lt;p&gt;终端的上行发送是根据基站的调度进行的，因此，终端的缓存中等待进行发送的数据的数量是基站进行调度时需要的参考信息。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;例如，如果终端的缓存中没有等待发送的数据，那么基站就不应该对该终端进行上行发送的调度。&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;终端通过发送缓存状态报告（Buffer Status Report，BSR），向服务基站报告终端的上行缓存中等待发送的数据的数量。根据 &lt;code&gt;RRC 信令&lt;/code&gt;的配置，终端将上行逻辑信道进行分组，采用逻辑信道组（Logical Channel Group，LCG）为单位进行缓存状态的报告。&lt;/p&gt;
&lt;p&gt;终端缓存状态报告的 &lt;code&gt;MAC 控制单元&lt;/code&gt;包括两种格式——&lt;code&gt;短格式／截断格式&lt;/code&gt;，或者&lt;code&gt;长格式&lt;/code&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;短格式进行 1 个逻辑信道组对应的缓存状态报告，相应的 &lt;code&gt;MAC 控制单&lt;/code&gt;元由逻辑信道组标识（LCG ID）和缓存数据量大小组成&lt;/li&gt;
&lt;li&gt;长格式进行 4 个逻辑信道组的缓存状态报告，发送的 4 个关于缓存大小的消息分别对应于编号 0 到编号 3 的 4 个逻辑信道组&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_18.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_18.webp&#34;  data-sub-html=&#34;&lt;h2&gt;MAC 控制单元——缓存状态报告&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_18.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;MAC 控制单元——缓存状态报告&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h5 id=&#34;功率余量报告&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8a%9f%e7%8e%87%e4%bd%99%e9%87%8f%e6%8a%a5%e5%91%8a&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;功率余量报告&lt;/h5&gt;&lt;p&gt;上行信号的发送受到终端最大发射功率的限制，所以基站在调度终端进行上行发送的时候需要参考终端发射功率的情况。&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;例如：如果终端处于小区边缘，已经接近最大发射功率的限制，在这种情况下，基站如果调度这个终端使用大量资源进行大数据量的上行发送，而终端由于最大发射功率的限制可能无法保证发射信号的质量，因而导致信息传输的错误。所以基站需要根据对终端发射功率情况的了解，避免出现这样的情况。&lt;/p&gt;

&lt;/blockquote&gt;&lt;p&gt;通过功率余量报告，终端向基站报告上行数据信道当前的发射功率距离终端上行最大发射功率之间的余量，该信息作为基站进行上行功率控制和上行资源调度的参考。功率余量报告的传输由 &lt;code&gt;RRC 信令&lt;/code&gt;进行配置，包括周期性的方式或者传播损耗的变化超过设定的门限都可以触发功率余量消息的上报。&lt;/p&gt;
&lt;p&gt;功率余量报告的 &lt;code&gt;MAC 控制单元&lt;/code&gt;包括 2 个比特的预留字段和 6 个比特的功率余量（Power Headroom，PH）信息，指示从 −23dB 到 40dB 范围之内的数值。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_19.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_19.webp&#34;  data-sub-html=&#34;&lt;h2&gt;MAC 控制单元——功率余量报告&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_19.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;MAC 控制单元——功率余量报告&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h4 id=&#34;上行时间同步的保持&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8a%e8%a1%8c%e6%97%b6%e9%97%b4%e5%90%8c%e6%ad%a5%e7%9a%84%e4%bf%9d%e6%8c%81&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;上行时间同步的保持&lt;/h4&gt;&lt;p&gt;在下行方向上，终端通过检测基站的同步和导频信号，与基站下行信号的发送时间取得同步，实现下行信号的接收。与此相类似，为了实现上行信号的传输，终端需要与基站取得上行方向的同步。在获得上行同步的过程中，终端根据基站的指示调整上行信号的发送时间，使得无论终端距离基站是远或者是近，它们发送的上行信号到达基站的时间是对齐的，并且符合基站的定时关系，这样方便基站对用户信号的接收，以及对多个用户信号之间干扰的管理和控制。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对于&lt;strong&gt;空闲状态&lt;/strong&gt;或者处于&lt;strong&gt;连接状态但上行已经失去同步&lt;/strong&gt;的终端，需要通过上行随机接入过程，获得上行同步。&lt;/li&gt;
&lt;li&gt;对处于&lt;strong&gt;连接状态&lt;/strong&gt;，上行没有失去同步的终端，基站使用 MAC 控制单元向终端指示定时提前（Time Advanced，TA）命令，对终端的上行发送时间进行调整，实现终端与系统之间上行时间同步的保持。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;定时提前命令的 &lt;code&gt;MAC 控制单元&lt;/code&gt;包括 2 个比特的预留字段和 6 个比特的 TA 命令信息。定时调整的精度是 16Ts ，即 16×1/(15×1 000×2 048)s 约等于 0.52μs。因为 6 个比特 TA 命令表示的是从 −31 到+32 的范围，所以每个定时提前命令能够调整的时间范围是 −16.15 ～+16.67μs。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_20.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_20.webp&#34;  data-sub-html=&#34;&lt;h2&gt;MAC 控制单元——定时提前命令&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_20.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;MAC 控制单元——定时提前命令&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h4 id=&#34;不连续接收功能&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e4%b8%8d%e8%bf%9e%e7%bb%ad%e6%8e%a5%e6%94%b6%e5%8a%9f%e8%83%bd&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;不连续接收功能&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;不连续接收&lt;/strong&gt;（Discontinuous Reception，DRX）是一种用于实现&lt;strong&gt;终端省电&lt;/strong&gt;的功能。&lt;/p&gt;
&lt;p&gt;根据 &lt;code&gt;RRC 信令&lt;/code&gt;进行配置的 &lt;code&gt;DRX&lt;/code&gt; 功能，可以对处于连接状态的终端监测物理层&lt;code&gt;下行控制信道&lt;/code&gt;（PDCCH）的方式进行控制。在不使用 &lt;code&gt;DRX&lt;/code&gt; 功能的时候，终端需要对 &lt;code&gt;PDCCH&lt;/code&gt; 信道进行连续的监测，在每一个 &lt;code&gt;TTI&lt;/code&gt;（1ms），终端都需要对 &lt;code&gt;PDCCH&lt;/code&gt; 信道进行监测，寻找其中可能属于自己的数据调度信息。通过配置 &lt;code&gt;DRX&lt;/code&gt; 功能，设置了&lt;code&gt;激活”时间&lt;/code&gt;和&lt;code&gt;休眠时间&lt;/code&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在激活的时间里，终端需要对 &lt;code&gt;PDCCH&lt;/code&gt; 信道进行监测&lt;/li&gt;
&lt;li&gt;在休眠的时间中，终端不需要对 &lt;code&gt;PDCCH&lt;/code&gt; 信道进行监测，基站也不会向该终端进行数据传输的调度，所以可以节省终端的耗电。&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_21.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_21.webp&#34;  data-sub-html=&#34;&lt;h2&gt;不连续接收（DRX）功能&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_21.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;不连续接收（DRX）功能&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;关于终端使用 &lt;code&gt;DRX&lt;/code&gt; 功能的过程，首先通过高层 RRC 信令对终端设置 &lt;code&gt;DRX&lt;/code&gt; 的相关配置，包括 &lt;code&gt;DRX 周期&lt;/code&gt;、激活和休眠时间等。在工作过程中，采用 &lt;code&gt;MAC 层控制信令&lt;/code&gt;开启或者关闭终端的 &lt;code&gt;DRX&lt;/code&gt; 功能。&lt;code&gt;MAC 层&lt;/code&gt; &lt;code&gt;DRX&lt;/code&gt; 命令采用类型为 &lt;code&gt;DRX&lt;/code&gt; 命令的 &lt;code&gt;MAC 控制单元&lt;/code&gt;进行指示，所对应的 &lt;code&gt;MAC PDU&lt;/code&gt; 子包头指示 MAC 控制单元的类型是 &lt;code&gt;DRX&lt;/code&gt; 命令，因为除了指示存在 &lt;code&gt;DRX&lt;/code&gt; 命令之外，不需要其他的信息，所以相应的 &lt;code&gt;MAC 控制单元&lt;/code&gt;部分的长度是 &lt;code&gt;0&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] LTE-Advanced 关键技术详解&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：RLC 层</title>
      <link>https://www.techkoala.net/lte_rlc/</link>
      <pubDate>Thu, 06 Jun 2019 21:00:26 +0800</pubDate>
      
      <guid>https://www.techkoala.net/lte_rlc/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;LTE RLC 层详解&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;无线链路控制rlc&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%97%a0%e7%ba%bf%e9%93%be%e8%b7%af%e6%8e%a7%e5%88%b6rlc&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;无线链路控制（RLC）&lt;/h2&gt;&lt;p&gt;无线链路控制（Radio Link Control，RLC）层的主要功能是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;根据下层指示的数据包传输大小对来自上层的数据包进行连接、分段和重组&lt;/li&gt;
&lt;li&gt;数据包的顺序传输和重复性检测&lt;/li&gt;
&lt;li&gt;自动重传请求（Automatic Repeat Request，ARQ）的数据纠错&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;针对&lt;strong&gt;每一个&lt;/strong&gt;无线承载配置一个 &lt;code&gt;RLC 实体&lt;/code&gt;，经过 &lt;code&gt;RLC&lt;/code&gt; 层协议功能的处理后，数据以逻辑信道的方式输出到下层的 &lt;code&gt;MAC 层&lt;/code&gt;。根据所传输消息的不同特点，&lt;code&gt;RLC 实体&lt;/code&gt;有 3 种工作模式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;透明模式&lt;/strong&gt;（Transparent Mode，TM）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;确认模式&lt;/strong&gt;（Acknowledged Mode，AM）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;非确认模式&lt;/strong&gt;（Unacknowledged Mode，UM）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;透明模式tm&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%80%8f%e6%98%8e%e6%a8%a1%e5%bc%8ftm&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;透明模式（TM）&lt;/h3&gt;&lt;p&gt;此模式下，&lt;code&gt;RLC&lt;/code&gt; 子层是完全透明的，&lt;strong&gt;不执行任何功能&lt;/strong&gt;，例如不添加 &lt;code&gt;RLC 包头&lt;/code&gt;、不进行数据分段或者连接，即来自上层的数据在 &lt;code&gt;RLC&lt;/code&gt; 层&lt;strong&gt;不进行任何处理&lt;/strong&gt;，“透明”地传输到下层的 &lt;code&gt;MAC 层&lt;/code&gt;。透明模式用于广播、寻呼和公用控制信道等信息需要传输给多个用户的情况，相对应于广播、上下行公用控制和寻呼等逻辑信道。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_4.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_4.webp&#34;  data-sub-html=&#34;&lt;h2&gt;TM 模式数据消息的 RLC PDU 格式&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_4.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;TM 模式数据消息的 RLC PDU 格式&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;确认模式am&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%a1%ae%e8%ae%a4%e6%a8%a1%e5%bc%8fam&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;确认模式（AM）&lt;/h3&gt;&lt;p&gt;此模式用于提供高可靠性的数据传输服务，例如 &lt;code&gt;TCP/IP&lt;/code&gt; 数据业务或者 &lt;code&gt;RRC&lt;/code&gt; 控制信令的传输，包括承载上下行专用数据信息和专用控制信息的逻辑信道。&lt;/p&gt;
&lt;p&gt;在此模式下，&lt;code&gt;RLC 子层&lt;/code&gt;&lt;strong&gt;执行所有功能&lt;/strong&gt;，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数据包的连接、分段和重组&lt;/li&gt;
&lt;li&gt;数据包的顺序传输和重复性检测&lt;/li&gt;
&lt;li&gt;基于滑动窗进行错误数据包重新传输的 ARQ 纠错机制&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;AM 模式&lt;/code&gt;的 &lt;code&gt;RLC PDU&lt;/code&gt; 由 &lt;code&gt;RLC 包头&lt;/code&gt;和 &lt;code&gt;RLC SDU&lt;/code&gt; 组成，&lt;code&gt;RLC 包头&lt;/code&gt;包括 &lt;code&gt;D/C&lt;/code&gt;，&lt;code&gt;RF&lt;/code&gt;，&lt;code&gt;P&lt;/code&gt;，&lt;code&gt;FI&lt;/code&gt;， &lt;code&gt;E&lt;/code&gt; 和 &lt;code&gt;SN&lt;/code&gt; 字段。如果 &lt;code&gt;RLC PDU&lt;/code&gt; 中包含多于 1 个数据字段，那么相对应的 &lt;code&gt;RLC 包头&lt;/code&gt;还将包括 &lt;code&gt;E&lt;/code&gt; 和 &lt;code&gt;LI&lt;/code&gt; 字段，以分别对应于各个数据字段。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_5.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_5.webp&#34;  data-sub-html=&#34;&lt;h2&gt;AM 模式数据消息的 RLC PDU 格式&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_5.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;AM 模式数据消息的 RLC PDU 格式&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;以下是 &lt;code&gt;RLC 包头&lt;/code&gt;各个字段的具体含义:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;D/C&lt;/code&gt;（Data/Control）字段：指示该 &lt;code&gt;RLC PDU&lt;/code&gt; 是&lt;code&gt;RLC 数据 PDU&lt;/code&gt;还是&lt;code&gt;RLC 控制 PDU&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RF&lt;/code&gt;（Re-segmentation Flag）字段：指示该 &lt;code&gt;RLC PDU&lt;/code&gt; 是一个 &lt;code&gt;AM 模式``PDU&lt;/code&gt;，还是一个 &lt;code&gt;AM 模式&lt;/code&gt;的 &lt;code&gt;PDU 分段&lt;/code&gt;。因为，在 &lt;code&gt;AM&lt;/code&gt; 模式的情况，数据包进行 &lt;code&gt;ARQ&lt;/code&gt; 重传的时候，可能需要对初次传输时的 &lt;code&gt;AM PDU&lt;/code&gt; 进行分段，因而形成 &lt;code&gt;AM PDU 分段&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;P&lt;/code&gt;（Polling）字段指示是否要求接收端对等的 &lt;code&gt;RLC 实体&lt;/code&gt;进行 1 次 &lt;code&gt;RLC 状态&lt;/code&gt;的报告&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FI&lt;/code&gt;（Framing Indicator）字段：指示 &lt;code&gt;RLC PDU &lt;/code&gt;的数据字段是否是 &lt;code&gt;RLC SDU&lt;/code&gt; 的开始或者结尾部分。2 个比特的信息指示了&lt;strong&gt;是开始不是结尾&lt;/strong&gt;、&lt;strong&gt;是结尾不是开始&lt;/strong&gt;、&lt;strong&gt;既不是结尾也不是开始&lt;/strong&gt;、&lt;strong&gt;既包含了结尾也包含了开始&lt;/strong&gt;一共 4 种可能的状态&lt;/li&gt;
&lt;li&gt;&lt;code&gt;E&lt;/code&gt;（Extension）字段指示后面是否还有 &lt;code&gt;E&lt;/code&gt; 和 &lt;code&gt;LI&lt;/code&gt; 字段&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SN&lt;/code&gt;（Sequence Number）字段：指示 &lt;code&gt;RLC PDU&lt;/code&gt; 的序号，序号采用递增的方式。对于 &lt;code&gt;AM 模式&lt;/code&gt;下重传的 &lt;code&gt;AM PDU&lt;/code&gt; 或者 &lt;code&gt;AM PDU 分段&lt;/code&gt;，采用初传的 AM PDU 所对应的序号&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LI&lt;/code&gt;（Length Indicator）字段：指示对应的数据字段的字节长度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在 &lt;code&gt;AM 模式&lt;/code&gt;下，&lt;code&gt;RLC&lt;/code&gt; 层使用 &lt;code&gt;ARQ&lt;/code&gt; 纠错机制对传输错误的数据包进行重传，由于下层指示的数据包传输大小可能与初次传输时候的情况有所不同，可能需要对初次传输的 &lt;code&gt;AM PDU&lt;/code&gt; 进行分段，因此形成了&lt;code&gt;AM PDU 分段&lt;/code&gt;的格式。与 &lt;code&gt;AM PDU&lt;/code&gt; 相比较，&lt;code&gt;AM PDU&lt;/code&gt; 分段在包头部分多了两个字段：&lt;code&gt;LSF&lt;/code&gt; 和 &lt;code&gt;SO&lt;/code&gt;。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_6.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_6.webp&#34;  data-sub-html=&#34;&lt;h2&gt;AM 模式数据消息的 RLC PDU 分段的格式&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_6.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;AM 模式数据消息的 RLC PDU 分段的格式&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;LSF&lt;/code&gt;（Last Segment Flag）字段指示这个 &lt;code&gt;AM PDU&lt;/code&gt; 分段是否是所对应的初次传输的 &lt;code&gt;AM PDU&lt;/code&gt; 的最后一个分段。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SO&lt;/code&gt;（Segment Offset）字段指示这个 &lt;code&gt;AM PDU&lt;/code&gt; 分段在所对应的初次传输的 &lt;code&gt;AM PDU&lt;/code&gt; 中的位置，具体&lt;strong&gt;是这个 AM PDU 分段的第 1 个字节&lt;/strong&gt;在所对应的初次传输的 &lt;code&gt;AM PDU&lt;/code&gt; 中的字节位置。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;除了 &lt;code&gt;RLC 数据 PDU&lt;/code&gt; 之外，&lt;code&gt;AM 模式&lt;/code&gt;下还可能传输 &lt;code&gt;RLC 控制 PDU&lt;/code&gt;，进行 &lt;code&gt;RLC 状态&lt;/code&gt;的报告。由数据接收方的 &lt;code&gt;RLC 实体&lt;/code&gt;向数据发送方对等的 &lt;code&gt;RLC 实体&lt;/code&gt;发送 &lt;code&gt;RLC 状态 PDU&lt;/code&gt;，报告 &lt;code&gt;AM PDU&lt;/code&gt; 数据包的接收状态，包括正确接收的数据包的最后序号，以及接收错误的数据包的序号。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_7.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_7.webp&#34;  data-sub-html=&#34;&lt;h2&gt;RLC 状态 PDU&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_7.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;RLC 状态 PDU&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CPT&lt;/code&gt;（Control PDU Type）字段指示该 &lt;code&gt;RLC 控制 PDU&lt;/code&gt; 的类型&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ACK_SN&lt;/code&gt;（Acknowledgement SN）字段指示接收正确的数据包的最后一个序列号，不包含 &lt;code&gt;ACK_SN&lt;/code&gt; 本身所指示的数据包，以及由 &lt;code&gt;NACK_SN&lt;/code&gt; 所指出的接收错误的数据包&lt;/li&gt;
&lt;li&gt;&lt;code&gt;E1&lt;/code&gt;（Extension bit 1）字段指示后面是否跟随有 &lt;code&gt;NACK_SN&lt;/code&gt;，&lt;code&gt;E1&lt;/code&gt; 和 &lt;code&gt;E2&lt;/code&gt; 字段&lt;/li&gt;
&lt;li&gt;&lt;code&gt;NACK_SN&lt;/code&gt;（Negative Acknowledgement SN）字段指示接收错误或者部分出错的 &lt;code&gt;AM PDU&lt;/code&gt; 数据包的序列号&lt;/li&gt;
&lt;li&gt;&lt;code&gt;E2&lt;/code&gt;（Extension bit 2）字段指示这个 &lt;code&gt;NACK_SN&lt;/code&gt; 后面是否跟随有 &lt;code&gt;SOstart&lt;/code&gt; 和 &lt;code&gt;SOend&lt;/code&gt; 字段&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SOstart&lt;/code&gt; 在 &lt;code&gt;AM PDU&lt;/code&gt; 数据包部分出错的情况下，&lt;code&gt;SOstart&lt;/code&gt; 字段指示出错部分的第一个字节在 &lt;code&gt;AM PDU&lt;/code&gt; 数据包中的位置&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SOend&lt;/code&gt; 在 &lt;code&gt;AM PDU&lt;/code&gt; 数据包部分出错的情况下，&lt;code&gt;SOend&lt;/code&gt; 字段指示出错部分的最后一个字节在 &lt;code&gt;AM PDU&lt;/code&gt; 数据包中的位置&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;非确认模式um&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%9d%9e%e7%a1%ae%e8%ae%a4%e6%a8%a1%e5%bc%8fum&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;非确认模式（UM）&lt;/h3&gt;&lt;p&gt;此模式与确认模式的区别是&lt;strong&gt;不进行&lt;/strong&gt;错误数据包重传的 &lt;code&gt;ARQ&lt;/code&gt; 纠错。&lt;code&gt;UM 模式&lt;/code&gt;主要用于对数据传输正确性的要求不是很高的场景，例如广播信道或者 &lt;code&gt;VoIP&lt;/code&gt; 业务，包括上下行专用数据逻辑信道和多媒体广播多播业务（Multimedia Broadcast Multicast Service，MBMS）专用的控制和数据逻辑信道。&lt;code&gt;UM 模式&lt;/code&gt; &lt;code&gt;RLC 子层&lt;/code&gt;仍然执行数据包的连接、分段和重组，数据包的顺序传输和重复性检测的功能。&lt;/p&gt;
&lt;p&gt;与 &lt;code&gt;AM 模式&lt;/code&gt;相比较，&lt;code&gt;UM 模式&lt;/code&gt;的 &lt;code&gt;RLC PUD&lt;/code&gt; 少了 3 个字段：&lt;code&gt;D/C&lt;/code&gt;、&lt;code&gt;RF&lt;/code&gt; 和 &lt;code&gt;P&lt;/code&gt;。因为 &lt;code&gt;RLC 控制 PDU&lt;/code&gt; 只在 &lt;code&gt;AM 模式&lt;/code&gt;进行传输，&lt;code&gt;UM 模式&lt;/code&gt;仅传输 &lt;code&gt;RLC 数据 PDU&lt;/code&gt;，因此不需要指示 &lt;code&gt;RLC 控制&lt;/code&gt;或者 &lt;code&gt;RLC 数据信息&lt;/code&gt;的 &lt;code&gt;D/C&lt;/code&gt; 字段。&lt;code&gt;UM 模式&lt;/code&gt;不进行 &lt;code&gt;ARQ&lt;/code&gt; 纠错的重传，因此不会出现数据包重传需要重新分段的情况，所以不需要指示数据分段的 &lt;code&gt;RF&lt;/code&gt; 字段。P 字段所指示的 &lt;code&gt;RLC 状态报告&lt;/code&gt;也仅适用于 &lt;code&gt;AM 模式&lt;/code&gt;，因此 &lt;code&gt;UM 模式&lt;/code&gt;的情况下不需要这个字段。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_8.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_8.webp&#34;  data-sub-html=&#34;&lt;h2&gt;UM 模式数据消息的 RLC PDU 格式&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_8.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;UM 模式数据消息的 RLC PDU 格式&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] LTE-Advanced 关键技术详解&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：PDCP 层</title>
      <link>https://www.techkoala.net/lte_pdcp/</link>
      <pubDate>Mon, 03 Jun 2019 21:00:19 +0800</pubDate>
      
      <guid>https://www.techkoala.net/lte_pdcp/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;LTE PDCP 层详解&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;分组数据会聚协议pdcp&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%88%86%e7%bb%84%e6%95%b0%e6%8d%ae%e4%bc%9a%e8%81%9a%e5%8d%8f%e8%ae%aepdcp&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;分组数据会聚协议（PDCP）&lt;/h2&gt;&lt;p&gt;分组数据会聚协议（Packet Data Convergence Protocol，PDCP）层的主要功能是进行 &lt;code&gt;IP 数据包头压缩&lt;/code&gt;、&lt;code&gt;数据加密&lt;/code&gt;和&lt;code&gt;控制信令的完整性保护&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;对于来自上层的数据包，将针对&lt;strong&gt;每一个&lt;/strong&gt;无线承载建立一个 &lt;code&gt;PDCP 实体&lt;/code&gt;。首先对数据包进行编号，然后根据配置对数据包进行 &lt;strong&gt;IP 包头压缩&lt;/strong&gt;，&lt;strong&gt;数据加密&lt;/strong&gt;和&lt;strong&gt;控制信令完整性保护&lt;/strong&gt;的操作，形成 &lt;code&gt;PDCP 服务数据单元&lt;/code&gt;（Service Data Unit，SDU），最后添加包含编号的 &lt;code&gt;PDCP 包头&lt;/code&gt;，形成 &lt;code&gt;PDCP 协议数据单元&lt;/code&gt;（Protocol Data Unit，PDU）作为 &lt;code&gt;PDCP&lt;/code&gt; 子层协议功能的处理结果向下层 &lt;code&gt;RLC&lt;/code&gt; 子层输出。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_3.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_3.webp&#34;  data-sub-html=&#34;&lt;h2&gt;PDCP 协议数据单元格式&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_3.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;PDCP 协议数据单元格式&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;R&lt;/code&gt; 表示预留的字段，都填充为 &lt;code&gt;0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;D/C&lt;/code&gt; 字段指示控制面或者数据面的 &lt;code&gt;PDCP 包&lt;/code&gt;，控制面为 &lt;code&gt;0&lt;/code&gt;，数据面为 &lt;code&gt;1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MAC-I&lt;/code&gt; 是控制信令完整性保护的字段，在不使用完整性保护功能的时候，都填充为 &lt;code&gt;0&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] LTE-Advanced 关键技术详解&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：无线接入网上层协议</title>
      <link>https://www.techkoala.net/upper_layer_protocol/</link>
      <pubDate>Sun, 26 May 2019 16:09:24 +0800</pubDate>
      
      <guid>https://www.techkoala.net/upper_layer_protocol/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;LTE PDCP 协议详解&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;无线接入网&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%97%a0%e7%ba%bf%e6%8e%a5%e5%85%a5%e7%bd%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;无线接入网&lt;/h2&gt;&lt;p&gt;由 E-NodeB 组成的无线接入网是系统与终端用户进行通信的接口，它的功能分为&lt;code&gt;数据面&lt;/code&gt;和&lt;code&gt;控制面&lt;/code&gt;两个部分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;数据面&lt;/strong&gt;负责用户数据信息的传输&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;控制面&lt;/strong&gt;负责系统控制功能以及相关信息的传输和处理&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_1.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_1.webp&#34;  data-sub-html=&#34;&lt;h2&gt;LTE 接入网协议架构&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_1.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;LTE 接入网协议架构&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.techkoala.net/lte_pdcp/&#34; rel=&#34;&#34;&gt;分组数据会聚协议（PDCP）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.techkoala.net/lte_rlc/&#34; rel=&#34;&#34;&gt;无线链路控制（RLC）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.techkoala.net/lte_mac/&#34; rel=&#34;&#34;&gt;媒体接入控制（MAC）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.techkoala.net/lte_rrc/&#34; rel=&#34;&#34;&gt;无线资源控制（RRC）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;无线接入网向核心网提供&lt;strong&gt;无线承载&lt;/strong&gt;服务。&lt;/p&gt;
&lt;p&gt;针对每一个用户可以建立 1 个或者多个的无线承载，来自核心网 &lt;code&gt;S1&lt;/code&gt; 接口的 &lt;code&gt;IP&lt;/code&gt; 数据包根据不同的服务质量要求（Quality of Service，QoS）可以映射在不同的无线承载上。然后，数据包将分别经过 &lt;code&gt;PDCP&lt;/code&gt;$\Longrightarrow$&lt;code&gt;RLC&lt;/code&gt;$\Longrightarrow$&lt;code&gt;MAC&lt;/code&gt; 各层协议地处理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PDCP&lt;/code&gt; 层完成的功能包括 &lt;code&gt;IP&lt;/code&gt; 数据包的头压缩、数据加密以及控制信令的完整性保护。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RLC&lt;/code&gt; 层主要进行自动重传请求（Automatic Repeat Request，ARQ）的功能。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MAC&lt;/code&gt; 层的主要功能包括动态资源调度、逻辑信道复用以及混合自动重传（Hybrid Automatic Repeat Request，HARQ）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;经过 &lt;code&gt;MAC&lt;/code&gt; 层协议的处理后，形成 1 个或者多个传输信道。最终通过物理层的处理在无线信号上进行传输。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_2.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_2.webp&#34;  data-sub-html=&#34;&lt;h2&gt;LTE 接入网协议功能和数据处理流程&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_upper_layer_protocol/LTE_upper_layer_protocol_2.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;LTE 接入网协议功能和数据处理流程&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;控制面主要的控制功能包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;无线接入网的无线资源管理（Radio Resource Control，RRC）。无线资源管理（RRC）的主要功能包括&lt;strong&gt;系统信息的广播&lt;/strong&gt;、&lt;strong&gt;终端的移动性管理&lt;/strong&gt;，以及&lt;strong&gt;信令和数据的连接控制&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;来自核心网移动性管理实体（MME）的非接入层（NAS）消息的控制功能，包括 &lt;strong&gt;EPS 系统承载&lt;/strong&gt;（Evolved Packet System，EPS）的管理，&lt;strong&gt;空闲状态终端的移动性处理和寻呼&lt;/strong&gt;，&lt;strong&gt;终端鉴权&lt;/strong&gt;以及&lt;strong&gt;安全性&lt;/strong&gt;方面的控制。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[1] LTE-Advanced 关键技术详解&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>LTE 系列：系统总体架构</title>
      <link>https://www.techkoala.net/the_overall_architecture_of_the_lte_system/</link>
      <pubDate>Tue, 21 May 2019 13:17:02 +0800</pubDate>
      
      <guid>https://www.techkoala.net/the_overall_architecture_of_the_lte_system/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;LTE 系统总体架构分解&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;系统架构演进&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%b3%bb%e7%bb%9f%e6%9e%b6%e6%9e%84%e6%bc%94%e8%bf%9b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;系统架构演进&lt;/h2&gt;&lt;p&gt;系统架构演进（又名 SAE，System Architecture Evolution）是 3GPP 所制定的 LTE 无线通信的核心网络标准。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SAE&lt;/code&gt; 是基于 &lt;code&gt;GPRS&lt;/code&gt; 核心网的演进，其主要差别为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;简化架构&lt;/li&gt;
&lt;li&gt;全 &lt;code&gt;IP&lt;/code&gt; 网络（&lt;code&gt;AIPN&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;支持提供更高吞吐量和更低延迟的接入网&lt;/li&gt;
&lt;li&gt;多个异构接入网络的互通，包括 &lt;code&gt;E-UTRA&lt;/code&gt;（LTE 和 LTE 升级版的接入网），3GPP 已有系统（例如 &lt;code&gt;GPRS&lt;/code&gt; 和 &lt;code&gt;UMTS&lt;/code&gt; 的接入网 &lt;code&gt;GERAN&lt;/code&gt; 和 &lt;code&gt;UTRAN&lt;/code&gt;），也支持与非 3GPP 系统之间的互通（例如 &lt;code&gt;WiMAX&lt;/code&gt;、&lt;code&gt;CDMA2000&lt;/code&gt; 或 &lt;code&gt;WIFI&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;SAE&lt;/code&gt; 是的传输使用全 &lt;code&gt;IP&lt;/code&gt; 网络，从而支持系统的控制平面和用户平面的分离。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SAE&lt;/code&gt; 体系结构的主要组成部分是核心分组网演进（EPC，Evolved Packet Core )，也被称为 &lt;code&gt;SAE&lt;/code&gt; 核心。&lt;code&gt;EPC&lt;/code&gt; 作用与 &lt;code&gt;GPRS&lt;/code&gt; 网络相似，包含移动性管理组件（&lt;code&gt;MME&lt;/code&gt;），服务网关（&lt;code&gt;S-GW&lt;/code&gt;）和 &lt;code&gt;PDN&lt;/code&gt; 网关（PDN Gateway）等网元。&lt;/p&gt;
&lt;h2 id=&#34;系统架构&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e7%b3%bb%e7%bb%9f%e6%9e%b6%e6%9e%84&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;系统架构&lt;/h2&gt;&lt;p&gt;LTE 系统可以分为&lt;code&gt;核心网&lt;/code&gt;和&lt;code&gt;无线接入网&lt;/code&gt;两个部分，如下图所示：&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_System_Structure/Structure.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_System_Structure/Structure.webp&#34;  data-sub-html=&#34;&lt;h2&gt;LTE 系统总体架构图&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/WirelessCommunication/LTE/LTE_System_Structure/Structure.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;LTE 系统总体架构图&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;h3 id=&#34;核心网&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%a0%b8%e5%bf%83%e7%bd%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;核心网&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;核心网&lt;/strong&gt;包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;移动性管理实体&lt;/code&gt;（MME）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;服务网关&lt;/code&gt;（S-GW）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;分组数据网网关&lt;/code&gt;（P-GW）&lt;/p&gt;
&lt;p&gt;&lt;code&gt;MME&lt;/code&gt;实体负责移动性管理相关的控制功能，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对终端位置跟踪区域列表的管理&lt;/li&gt;
&lt;li&gt;对处于空闲状态的终端发起寻呼&lt;/li&gt;
&lt;li&gt;为终端选择接入的 &lt;code&gt;P-GW&lt;/code&gt; 和 &lt;code&gt;S-GW&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;漫游和鉴权功能&lt;/li&gt;
&lt;li&gt;非接入层（Non-Access Stratum，NAS）信令功能&lt;/li&gt;
&lt;li&gt;信令安全和接入层（Access Stratum，AS）的安全控制&lt;/li&gt;
&lt;li&gt;接入网之间的移动性管理（包括接入网内切换时的 MME 选择，向 2G 或者 3G 的不同接入网切换时的 SGSN 选择）&lt;/li&gt;
&lt;li&gt;网络承载管理的功能&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;服务网关（&lt;code&gt;S-GW&lt;/code&gt;）负责数据承载的相关功能，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数据包的路由和转发，&lt;code&gt;E-NodeB&lt;/code&gt; 之间切换或者 &lt;code&gt;E-NodeB&lt;/code&gt; 和 &lt;code&gt;GSM/WCDMA/TD-SCDMA&lt;/code&gt; 系统的不同接入网之间切换时的数据锚点&lt;/li&gt;
&lt;li&gt;上下行传输层数据包的优先级标识&lt;/li&gt;
&lt;li&gt;运营商内部和运营商之间的终端计费&lt;/li&gt;
&lt;li&gt;对用户通信进行合法侦听的功能&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PDN 网关（&lt;code&gt;P-GW&lt;/code&gt;）是核心网与外部因特网的接口，完成的主要功能包括&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;针对每个用户的数据包过滤&lt;/li&gt;
&lt;li&gt;终端的 &lt;code&gt;IP&lt;/code&gt; 地址分配&lt;/li&gt;
&lt;li&gt;基于业务的计费功能&lt;/li&gt;
&lt;li&gt;门控和速率强制功能&lt;/li&gt;
&lt;li&gt;下行传输层数据包的优先级标识&lt;/li&gt;
&lt;li&gt;进行合法侦听的功能&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;无线接入网&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%97%a0%e7%ba%bf%e6%8e%a5%e5%85%a5%e7%bd%91&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;无线接入网&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;无线接入网&lt;/strong&gt;是系统与移动用户终端进行通信的接口，LTE 无线接入网采用扁平的网络结构，仅包含一种网络节点，即 &lt;code&gt;E-NodeB&lt;/code&gt;（LTE 基站）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;E-NodeB&lt;/code&gt; 之间通过 &lt;code&gt;X2&lt;/code&gt; 接口进行互连，&lt;code&gt;E-NodeB&lt;/code&gt; 通过 &lt;code&gt;S1&lt;/code&gt; 接口与核心网进行连接，分为 &lt;code&gt;S1-MME&lt;/code&gt; 和 &lt;code&gt;S1-U&lt;/code&gt; 接口分别与核心网的 &lt;code&gt;MME&lt;/code&gt; 和 &lt;code&gt;S-GW&lt;/code&gt; 设备进行连接。为了实现负荷分担和容灾备份的功能，&lt;code&gt;E-NodeB&lt;/code&gt; 和 &lt;code&gt;MME/S-GW&lt;/code&gt; 之间可以进行多对多的连接，即 1 个 &lt;code&gt;MME/S-GW&lt;/code&gt; 可以和多个 &lt;code&gt;E-NodeB&lt;/code&gt; 连接，1 个 &lt;code&gt;E-NodeB&lt;/code&gt; 也可以和多个 &lt;code&gt;MME/S-GW&lt;/code&gt; 连接。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;E-NodeB&lt;/code&gt; 负责无线接入网部分的功能，主要包括：无线资源管理（包括无线承载控制、无线接入控制、连接的移动性控制、动态的资源调度），&lt;code&gt;IP&lt;/code&gt; 头压缩和用户数据加密，为附着的终端选择进行控制功能的 &lt;code&gt;MME&lt;/code&gt; 实体，将用户数据路由至 &lt;code&gt;S-GW&lt;/code&gt; 服务网关，寻呼、广播和公共报警消息的调度与传输，以及配置用于终端移动性管理和数据调度的物理层信号测量和测量的上报。&lt;code&gt;E-NodeB&lt;/code&gt; 之间通过 &lt;code&gt;X2&lt;/code&gt; 接口进行互连，&lt;code&gt;X2&lt;/code&gt; 接口主要用于支持终端在 &lt;code&gt;E-NodeB&lt;/code&gt; 之间的切换，包括信令的交互以及切换过程中可能进行的数据转发，&lt;code&gt;X2&lt;/code&gt; 接口还可以用于在小区之间交互无线资源管理的消息，实现小区间协调进行干扰抑制的功能。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;[1] &lt;a href=&#34;https://zh.wikipedia.org/wiki/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;SAE&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[2] LTE-Advanced 关键技术详解&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>VirtualBox 共享文件夹权限配置指南</title>
      <link>https://www.techkoala.net/virtualbox_file_share_issue/</link>
      <pubDate>Wed, 10 Oct 2018 13:26:54 +0800</pubDate>
      
      <guid>https://www.techkoala.net/virtualbox_file_share_issue/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;详细解析 VirtualBox 共享文件夹的权限问题及其解决方案&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;共享文件夹概述&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%85%b1%e4%ba%ab%e6%96%87%e4%bb%b6%e5%a4%b9%e6%a6%82%e8%bf%b0&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;共享文件夹概述&lt;/h2&gt;&lt;p&gt;VirtualBox 的共享文件夹功能是在主机（Host）和虚拟机（Guest）之间传输文件最便捷的方式之一。它允许您：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在主机和虚拟机之间实时共享文件和目录&lt;/li&gt;
&lt;li&gt;支持双向文件访问和修改&lt;/li&gt;
&lt;li&gt;可配置为虚拟机启动时自动挂载&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;配置示例&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%85%8d%e7%bd%ae%e7%a4%ba%e4%be%8b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;配置示例&lt;/h2&gt;&lt;p&gt;假设要在主机上共享一个名为 &lt;code&gt;git&lt;/code&gt; 的目录：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;设置共享文件夹&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VirtualBox 管理器 → 设置 → 共享文件夹&lt;/li&gt;
&lt;li&gt;添加共享文件夹路径（如：&lt;code&gt;C:\git&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;设置共享文件夹名称（如：&lt;code&gt;git&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;勾选&amp;quot;自动挂载&amp;quot;选项&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;访问共享文件夹&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在虚拟机中，共享文件夹会被自动挂载到 &lt;code&gt;/media/sf_git&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sf_&lt;/code&gt; 前缀表示这是一个 VirtualBox 共享文件夹&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;权限问题分析&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9d%83%e9%99%90%e9%97%ae%e9%a2%98%e5%88%86%e6%9e%90&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;权限问题分析&lt;/h2&gt;&lt;h3 id=&#34;问题描述&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e9%97%ae%e9%a2%98%e6%8f%8f%e8%bf%b0&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;问题描述&lt;/h3&gt;&lt;p&gt;非 root 用户访问共享文件夹时会遇到&amp;quot;权限不足&amp;quot;错误：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-1&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ls /media/sf_git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls: cannot access &lt;span class=&#34;s1&#34;&gt;&amp;#39;/media/sf_git&amp;#39;&lt;/span&gt;: Permission denied&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;h3 id=&#34;原因说明&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8e%9f%e5%9b%a0%e8%af%b4%e6%98%8e&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;原因说明&lt;/h3&gt;&lt;p&gt;VirtualBox 共享文件夹的默认权限设置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;所有者：&lt;code&gt;root&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;所属组：&lt;code&gt;vboxsf&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;权限：&lt;code&gt;770&lt;/code&gt;（所有者和组成员可读写执行）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着只有以下用户可以访问共享文件夹：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;root 用户&lt;/li&gt;
&lt;li&gt;vboxsf 组的成员&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;解决方案&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;解决方案&lt;/h2&gt;&lt;h3 id=&#34;方法一添加用户到-vboxsf-组&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%96%b9%e6%b3%95%e4%b8%80%e6%b7%bb%e5%8a%a0%e7%94%a8%e6%88%b7%e5%88%b0-vboxsf-%e7%bb%84&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;方法一：添加用户到 vboxsf 组&lt;/h3&gt;&lt;p&gt;最推荐的解决方案是将当前用户添加到 &lt;code&gt;vboxsf&lt;/code&gt; 组：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-2&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 将当前用户添加到 vboxsf 组&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo usermod -aG vboxsf &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;whoami&lt;span class=&#34;k&#34;&gt;)&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&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;# 查看修改结果&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;groups &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;whoami&lt;span class=&#34;k&#34;&gt;)&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;/p&gt;
&lt;h3 id=&#34;方法二修改挂载点权限不推荐&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%96%b9%e6%b3%95%e4%ba%8c%e4%bf%ae%e6%94%b9%e6%8c%82%e8%bd%bd%e7%82%b9%e6%9d%83%e9%99%90%e4%b8%8d%e6%8e%a8%e8%8d%90&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;方法二：修改挂载点权限（不推荐）&lt;/h3&gt;&lt;p&gt;可以修改共享文件夹的权限设置，但不建议使用此方法：&lt;/p&gt;
&lt;div class=&#34;code-block highlight is-open show-line-numbers  tw-group tw-my-2&#34;&gt;
  &lt;div class=&#34;
    
    tw-flex 
    tw-flex-row
    tw-flex-1 
    tw-justify-between 
    tw-w-full tw-bg-bgColor-secondary
    &#34;&gt;
    &lt;button class=&#34;
        code-block-button
        tw-mx-2 
        tw-flex
        tw-flex-row
        tw-flex-1&#34; type=&#34;button&#34;&gt;
      &lt;div
        class=&#34;group-[.is-open]:tw-rotate-90 tw-transition-[transform] tw-duration-500 tw-ease-in-out print:!tw-hidden tw-w-min tw-h-min tw-my-1 tw-mx-1&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 320 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;
      &lt;p class=&#34;tw-select-none !tw-my-1&#34;&gt;bash&lt;/p&gt;
    &lt;/button&gt;

    &lt;div class=&#34;tw-flex&#34;&gt;
      &lt;button class=&#34;
          line-number-button
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.show-line-numbers]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle line numbers&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          wrap-code-button
          tw-select-none 
          tw-mx-2 
          tw-hidden 
          group-[.is-open]:tw-block 
          group-[.is-wrap]:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Toggle code wrap&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;

      &lt;button class=&#34;
          copy-code-button
          tw-select-none
          tw-mx-2 
          tw-hidden
          group-[.is-open]:tw-block
          hover:tw-text-fgColor-link 
          print:!tw-hidden&#34; title=&#34;Copy code&#34;&gt;
        &lt;span class=&#34;copy-icon tw-block&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 448 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
        &lt;span class=&#34;check-icon tw-hidden&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
      &lt;/button&gt;

      &lt;button class=&#34;
          tw-select-none 
          tw-mx-2 
          tw-block 
          group-[.is-open]:tw-hidden 
          print:!tw-hidden&#34; disabled aria-hidden=&#34;true&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z&#34;/&gt;&lt;/svg&gt;&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;pre style=&#34;counter-reset: codeblock;&#34; class=&#34;tw-block tw-m-0 tw-p-0&#34;&gt;&lt;code 
    id=&#34;codeblock-id-3&#34; 
    class=&#34;
      chroma 
      !tw-block 
      tw-p-0
      tw-m-0
      tw-transition-[max-height] 
      tw-duration-500 
      tw-ease-in-out 
      group-[.is-closed]:!tw-max-h-0 
      group-[.is-wrap]:tw-text-wrap
      tw-overflow-y-hidden
      tw-overflow-x-auto
      tw-scrollbar-thin
      &#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 修改权限为所有用户可访问&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo chmod &lt;span class=&#34;m&#34;&gt;777&lt;/span&gt; /media/sf_git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 或者更改所有者&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo chown &lt;span class=&#34;nv&#34;&gt;$USER&lt;/span&gt;:&lt;span class=&#34;nv&#34;&gt;$USER&lt;/span&gt; /media/sf_git&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;这种方法可能带来安全风险，且在重启后需要重新设置。&lt;/p&gt;
&lt;h2 id=&#34;最佳实践&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9c%80%e4%bd%b3%e5%ae%9e%e8%b7%b5&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;最佳实践&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;安全性考虑&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只将必要的目录设置为共享&lt;/li&gt;
&lt;li&gt;使用组权限管理而不是全局权限&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;性能优化&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;避免共享大量小文件&lt;/li&gt;
&lt;li&gt;不要在共享文件夹中运行需要频繁 I/O 的程序&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;故障排除&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;确保已安装 VirtualBox Guest Additions&lt;/li&gt;
&lt;li&gt;检查 vboxsf 服务是否正常运行&lt;/li&gt;
&lt;li&gt;查看系统日志获取详细错误信息&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;参考资料&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;参考资料&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.virtualbox.org/manual/ch04.html#sharedfolders&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;VirtualBox Manual: Shared Folders&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.kernel.org/doc/html/latest/admin-guide/security-bugs.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Linux 用户和组管理&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.linuxfoundation.org/blog/blog/classic-sysadmin-understanding-linux-file-permissions&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;文件系统权限最佳实践&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>改变世界的条形码</title>
      <link>https://www.techkoala.net/brief_history_of_qrcode/</link>
      <pubDate>Fri, 15 Mar 2013 17:59:52 +0800</pubDate>
      
      <guid>https://www.techkoala.net/brief_history_of_qrcode/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;条形码以及二维码的过去与将来&lt;/p&gt;

&lt;/blockquote&gt;&lt;div class=&#34;details admonition info open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;说明&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;本文是最早以 TechKoala 的名字所写的文章，发布于电脑爱好者 2013 年第 06 期。说来当时以邮汇方式发的稿费至今没有收到，2333&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;面对我们随时可以看见的条形码，说出来你也许会不信，如果没有这个家伙，整个世界的经济都无法正常运行。这些黑白条码不但能让机场不弄丢你的行李，能对快件的包裹进行跟踪，而且还能在网上对各种信件进行查询。它们既可以用在食品包装上，也可以用在图书的扉页。这个时候看看手上的《电脑爱好者》杂志，你发现了吗？&lt;/p&gt;
&lt;h3 id=&#34;条形码的由来&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9d%a1%e5%bd%a2%e7%a0%81%e7%9a%84%e7%94%b1%e6%9d%a5&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;条形码的由来&lt;/h3&gt;&lt;p&gt;三十多年前的一天，一位名叫道森的购物者走进马什超市，购买了一包箭牌口香糖，扫描条形码然后付钱。这在今天稀疏平常的事，当时却是标志性事件 — 由此，条形码迎来了它的里程碑，从此走到你我的眼前。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Brief_history_of_QRCode/wood.jpg&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Brief_history_of_QRCode/wood.jpg&#34;  data-sub-html=&#34;&lt;h2&gt;伍德蓝德&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Brief_history_of_QRCode/wood.jpg&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;伍德蓝德&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;说到条形码，就不得不说它的发明者 —— 伍德蓝德。他出生于新泽西州，从小便对技术发明具有浓厚的兴趣，具备非凡的动手能力。他生长在二战前后，战争期间，他不得不中断学业，参与研发原子弹的曼哈顿工程，这个看似八竿子打不着边的事，却使他对发明愈发迷恋。二战之后，美国经济快速发展，规模宏大的超市面临着一个巨大的问题，它们无法精确掌握库存情况，唯一的办法是手工清理，但耗时又费力。于是它们向德雷赛尔大学求助，恰巧伍德蓝德得知，于是，伍德蓝德开始与自己的朋友苏沃一起研究这个解决方案。伍德蓝德本来是出于商业目的，但随着研究的深入，这项工作彻底改变了他的人生。类似历史上的诸多发明，开始时，伍德蓝德遇到了许多次失败，但他没有放弃。他毅然辍学全心投入，坚信成功不远，但总差那么一层窗户纸。后来，他去了迈阿密的住所放松，那里有优美的居住环境、安静的思考空间，他期待能有灵感迸发。&lt;/p&gt;
&lt;p&gt;老天不负有心人。有一天，他在沙滩坐定，苦苦思索：“如何才能给每件物品分类呢？编号？对！莫尔斯电码？可是这样太复杂了，一般人也没办法分辨。” 想到此，他开始无聊地在沙滩上用手画沙子，一条一条，突然，一个神奇的图案出现在伍德蓝德脑海 — 如果用粗细、间距不同的竖线构成图案，那就可以实现对商品编码。就这样，条码的原型在沙滩上诞生了。待到出现文章开头的一幕时，已经过去了三十多年，可喜的是，我们的主人公是一位有耐心的人。&lt;/p&gt;
&lt;h3 id=&#34;条形码的标准与应用&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9d%a1%e5%bd%a2%e7%a0%81%e7%9a%84%e6%a0%87%e5%87%86%e4%b8%8e%e5%ba%94%e7%94%a8&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;条形码的标准与应用&lt;/h3&gt;&lt;p&gt;与现在的条形码不同，伍德蓝德发明的第一条条形码不是由线条构成，而是一组同心圆，通过照片扫描器读取。它形如箭靶，美国人称其为 “公牛眼”。遗憾的是，以美国当时的工艺和经济水平，他们还没有能力印制出这种编码。&lt;/p&gt;
&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Brief_history_of_QRCode/first_code.png&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Brief_history_of_QRCode/first_code.png&#34;  data-sub-html=&#34;&lt;h2&gt;公牛眼&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Brief_history_of_QRCode/first_code.png&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;公牛眼&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;p&gt;后来，伍德蓝德加入了 IBM 公司，并把自己的专利卖给了 IBM。然而，伟大的成果却并非属于 IBM，几经转手，机遇来到了 RCA 公司。直到条形码大展宏图时，IBM 公司里的人才知道：“哦，原来发明条形码的人就在我们公司。”&lt;/p&gt;
&lt;p&gt;我们目前所知的第一个商用条形码出现于 1966 年，但人们很快就意识到应该为其制定出一个行业标准。&lt;/p&gt;
&lt;p&gt;两年后的夏天，应国家食物连锁协会要求，Logicon 公司开发出了食品工业统一码（UGPIC）。随后，美国统一编码协会建立了 UPC 码系统，并且实现了该码制的标准化。UPC 码首先在杂货零售业中试用，俄亥俄州的 Marsh 超级市场安装了由 NCR（IBM 公司的前身）制造的第一台 UPC 扫描器，而第一个被收银员扫描的便是文章开头所说的标价 69 美分的十片装箭牌口香糖。&lt;/p&gt;
&lt;p&gt;直到现在，我们都不可否认的是，正是零售业的成功应用才促进了条形码技术的发展。&lt;/p&gt;
&lt;p&gt;目前，全球每天大约要扫描 80 亿次条形码。而普华永道公司的一项研究报告表明，条形码每年仅在超市和大众零售领域就能为客户、零售商和制造商节约 300 亿美元的成本。令人感到遗憾的是，伍德兰德的朋友，条形码联合发明人苏沃并没有亲眼看到条形码的商业化应用，他在自己 38 岁的时候（1962 年）英年早逝。而伍德蓝德则在 1992 年被当时的美国总统布什授予了国家科技奖章。&lt;/p&gt;
&lt;p&gt;令人遗憾的是，前不久，伍德蓝德也不幸地告别了人世。据《纽约时代》报道，他于美国当地时间 2012 年 12 月 9 日在自己新泽西的家中逝世，享年 91 岁。伍德蓝德的女儿苏珊评价父亲说：“他参与了整个系统的设计，从使用者的站立方式、激光扫描仪高度到如何保护人们的眼睛不受激光刺激，他是一个绝对的完美主义者。”&lt;/p&gt;
&lt;h3 id=&#34;条形码的未来&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9d%a1%e5%bd%a2%e7%a0%81%e7%9a%84%e6%9c%aa%e6%9d%a5&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;条形码的未来&lt;/h3&gt;&lt;p&gt;今天，条形码已经占据我们生活的每个角落，从超市购买的食品到手中握住的杂志，我们依靠条形码管理我们的生活，条形码技术也在不断进步。&lt;/p&gt;
&lt;p&gt;其实，如今风生水起的二维码也属于条形码，作为后起之秀，它比它的前辈更进一步。自从它出现以来，得到了人们的广泛关注，发展十分迅速。&lt;/p&gt;
&lt;p&gt;二维条形码最早发明于日本，它是用某种特定的几何图形按一定规律在平面（二维方向上）分布的黑白相间的图形记录数据符号信息的，在代码编制上巧妙地利用构成计算机内部逻辑基础的 “0”、“1” 比特流的概念，使用若干个与二进制相对应的几何形体来表示文字数值信息，通过图像输入设备或光电扫描设备自动识读以实现信息自动处理。它具有条形码技术的一些共性：每种码制有其特定的字符集；每个字符占有一定的宽度；具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、处理图形旋转变化等特点。&lt;/p&gt;
&lt;p&gt;一维条形码虽然提高了资料收集与资料处理的速度，但由于受到资料容量的限制，一维条形码仅能标识商品，而不能描述商品，因此相当依赖电脑网络和资料库。在没有资料库或不便连网的地方，一维条形码很难派上用场。此外一维条形码有一个明显的缺点，即垂直方向不携带资料，故资料密度偏低。当初这样设计有二个目的：（1）为了保证局部损坏的条形码仍可正确辨识；（2）使扫描容易完成。&lt;/p&gt;
&lt;p&gt;要提高资料密度，又要在一个固定面积上印出所需资料，可用二种方法来解决：（1）在一维条形码的基础上向二维条形码方向扩展；（2）利用图像识别原理，采用新的几何形体和结构设计出二维条形码。前者发展出堆叠式（Stacked）二维条形码，后者则有矩阵式（Matrix）二维条形码之发展，构成现今二维条形码的两大类型：&lt;/p&gt;
&lt;div class=&#34;details admonition quote open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;引用&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;&lt;p&gt;堆叠式二维条形码的编码原理是建立在一维条形码的基础上，将一维条形码的高度变窄，再依需要堆成多行，其在编码设计、检查原理、识读方式等方面都继承了一维条形码的特点，但由于行数增加，对行的辨别、解码算法及软件则与一维条形码有所不同。较具代表性的堆叠式二维条形码有 PDF417、Code16K、Supercode、Code49 等。&lt;/p&gt;
&lt;p&gt;矩阵式二维条形码是以矩阵的形式组成，在矩阵相应元素位置上，用点的出现表示二进制的 “1”，不出现表示二进制的 “0”，点的排列组合确定了矩阵码所代表的意义。其中点可以是方点、圆点或其他形状的点。矩阵码是建立在电脑图像处理技术、组合编码原理等基础上的图形符号自动辨识的码制，已较不适合用 “条形码” 称之。具有代表性的矩阵式二维条形码有 Datamatrix、Maxicode、Vericode、Softstrip、Code1、Philips Dot Code 等。&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;二维条形码的新技术在 1980 年代晚期逐渐被重视，在 “资料储存量大”、“资讯随着产品走”、“可以传真影印”、“错误纠正能力高” 等特性下，二维条形码在 1990 年代初期已逐渐被使用。现在，几乎所有的社交软件都具备扫一扫的功能，对着抽象的图案一扫，迎来一个多彩的世界已经成为许多人的习惯。&lt;/p&gt;
&lt;p&gt;马化腾在去年九月开幕的互联网大会的演讲中便说到：“从微信强化扫二维码的功能之后，我们希望把这个行为定义成更加普及，老百姓一看到码就去扫的概念。我们前几天还在网上看到一个新的名词，就是扫墓，看到墓碑有那个二维码，一扫描就看到这个墓碑的主人过去的生平介绍等等，这些都是非常典型的应用。”&lt;/p&gt;
&lt;p&gt;或许，墓碑的例子有些夸张，但是，你不能否认，条形码越来越贴近我们的生活，不再只是局限于购物。也许未来，我们的一切都涵盖在那小小的方寸之间。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;碰巧，时隔多年把这篇文章重新整理出来的时候，回形针正好发布了一期关于二维码的视频：&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube-nocookie.com/embed/XW8sgT_D0To?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;p&gt;放在这里，作为补充。&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Symbian 的前世今生</title>
      <link>https://www.techkoala.net/brief_history_of_symbian/</link>
      <pubDate>Wed, 16 Jan 2013 22:32:00 +0800</pubDate>
      
      <guid>https://www.techkoala.net/brief_history_of_symbian/</guid>
      <description>&lt;figure&gt;&lt;a class=&#34;lightgallery&#34; href=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Symbian/symbian.webp&#34; title=&#34;&#34; data-thumbnail=&#34;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Symbian/symbian.webp&#34;  data-sub-html=&#34;&lt;h2&gt;Sybian 联盟&lt;/h2&gt;&#34; &gt;&lt;img  loading=&#34;lazy&#34;  src=&#39;https://fastly.jsdelivr.net/gh/techkoala/techkoala.github.io@master/images/Symbian/symbian.webp&#39;  
          &gt;&lt;/a&gt;&lt;figcaption class=&#34;image-caption&#34;&gt;Sybian 联盟&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;blockquote&gt;
  &lt;p&gt;聊聊 Symbian 的过去&lt;/p&gt;

&lt;/blockquote&gt;&lt;div class=&#34;details admonition warning open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 576 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;注意&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;这是一篇写于 2013 年的文章，文章的观点可能已经过时甚至错误，但时过境迁，仅表怀念。&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;   毫不夸张的说，今天我们所拥有的一切，都是建立在它的肩膀上。无论多少人咒骂它的臃肿，嫌弃它的卡顿，都无法改变它作为手机智能操作系统鼻祖的地位。当山寨机还在襁褓中时，当伪智能还在浪费人们的时间时，作为先驱的它便已上路。大多数人接触的第一款真正的智能手机系统，它把软件下载，游戏安装，刷机破解等诸多名词第一次带到了大众视野。它叫 &lt;code&gt;Symbian&lt;/code&gt;，也曾辉煌。三十年河东，三十年河西，科技领域本就没有常青树。虽然如今已经沦落，但不妨碍我们一起回味它曾经的辉煌。&lt;/p&gt;
&lt;h3 id=&#34;混沌之初symbian-伊始&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%b7%b7%e6%b2%8c%e4%b9%8b%e5%88%9dsymbian-%e4%bc%8a%e5%a7%8b&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;混沌之初，Symbian 伊始&lt;/h3&gt;&lt;p&gt;​  Symbian，源自一家充满梦想的公司。&lt;/p&gt;
&lt;p&gt;  1980 年，&lt;code&gt;potter&lt;/code&gt; 在伦敦成立了 &lt;code&gt;Psion&lt;/code&gt; 公司，这家以数字产品开发和研究为目的，为率先使用电子设备的大公司服务的小公司便是 &lt;code&gt;Symbian&lt;/code&gt; 的生母。随着公司的发展，&lt;code&gt;Psion&lt;/code&gt; 开始浸淫移动终端市场，他们生产的各类移动设备不仅皮实耐用还能按需求定制，凭借这种 “开放移动” 的理念，&lt;code&gt;Psion&lt;/code&gt; 在上世纪 90 年代 成为了欧洲较成功的 &lt;code&gt;PDA&lt;/code&gt; 生产商，进而促进了 &lt;code&gt;EPOC&lt;/code&gt; 的诞生。在 &lt;code&gt;potter&lt;/code&gt; 看来，&lt;code&gt;EPOC&lt;/code&gt; 是一种面向普通大众的便携系统。正如他的全称“A new epoch of personal convenience.”（一个人人方便使用电子产品的新时代），他被 &lt;code&gt;Psion&lt;/code&gt; 给予了对于人机交互未来的憧憬。&lt;/p&gt;
&lt;p&gt;   犹如一代闪电，&lt;code&gt;EPOC&lt;/code&gt; 划开了混沌的天空，不过真正的风暴才刚来临。&lt;/p&gt;
&lt;p&gt;  1991 年到 1998 年，&lt;code&gt;Psion&lt;/code&gt; 发布了几款给予 &lt;code&gt;EPOC 16&lt;/code&gt; 的的设备，作为早期产品，免不了简陋无比，它们充其量只能算是 &lt;code&gt;PDA&lt;/code&gt; 模块，只是方便了厂商研发新品。&lt;/p&gt;
&lt;p&gt;   真正让 &lt;code&gt;EPOC&lt;/code&gt; 走向成熟的是一位叫做 Nicholas Myers 的程序设计师。1994 年，他在构思下一代 &lt;code&gt;EPOC&lt;/code&gt; 时，设定了开发适应 21 世纪技术性能的系统的目标。正是这样的思路。让他把握住了市场脉搏。1997 年，他成为 &lt;code&gt;Psion&lt;/code&gt; 旗下 &lt;code&gt;Symbian&lt;/code&gt; 软件公司的 &lt;code&gt;CEO&lt;/code&gt;，其上任后发布的 &lt;code&gt;EPOC 32&lt;/code&gt; 操作系统，比起前辈，已有了翻天覆地的变化。吸引了人们以及投资者的兴趣。今天我们吧 &lt;code&gt;Myers&lt;/code&gt; 成为 “Symbian 之父”。&lt;/p&gt;
&lt;p&gt;  &lt;code&gt;EPOC 32&lt;/code&gt; 与 &lt;code&gt;Windows&lt;/code&gt; 极为相似，它是一套 32 位的系统，支持多任务，拥有图形化美观的界面。鉴于当时几乎没有可以直接用于手机的操作系统，它的问世，一下子汇聚了厂商的目光。不过，任何一项新技术新产品的诞生都需要时间的推敲，智能手机系统作为新兴事物，没有哪家厂商敢冒险直接挺近。一番商榷之后，1998 年，爱立信、诺基亚、摩托罗拉和 &lt;code&gt;Psion&lt;/code&gt; 共同成立了一家公司，目的是推进手机和 &lt;code&gt;PDA&lt;/code&gt; 的智能化，它就是我们今天熟知的 &lt;code&gt;Symbian&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;拉帮结派飞速发展&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%8b%89%e5%b8%ae%e7%bb%93%e6%b4%be%e9%a3%9e%e9%80%9f%e5%8f%91%e5%b1%95&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;拉帮结派，飞速发展&lt;/h3&gt;&lt;p&gt;   联盟的成立不仅吸引了大量手机厂商，一些上有配件商，例如 &lt;code&gt;ARM&lt;/code&gt; 和&lt;code&gt;德州仪器&lt;/code&gt;都加入了合作计划。&lt;/p&gt;
&lt;p&gt;  &lt;code&gt;Symbian&lt;/code&gt; 从一成立便秉持着开放的理念，任何组织和个人都能为其开发软件。但刚成立那几年，公司都未能推出一款真真意义上的产品，巨头们也只是作为附属项目在发展。直到 1999 年，&lt;code&gt;Symbian OS v5&lt;/code&gt; 平台作为第一款成熟的产品被设计出来，为了争夺 “谁是世界上第一台智能手机”，爱立信没有经过完成的 &lt;code&gt;DEBUG&lt;/code&gt;，就匆忙的把他推向市场，生产出 &lt;code&gt;Erisson R380&lt;/code&gt;。同时期，摩托也推迟了自己的天拓 &lt;code&gt;A6188&lt;/code&gt;。可实际上，两者中无论哪个都不能算严格意义上的智能手机，它们连软件都不能自由安装，真正算起来，搭载了 &lt;code&gt;OS V5.1&lt;/code&gt; 的诺基亚 &lt;code&gt;9210&lt;/code&gt; 才符合智能机最基本的定义，由此，诺基亚开始领先于其他厂商并保持到了最后。&lt;/p&gt;
&lt;p&gt;   众所周知，利益面前必有纠纷。诺基亚的崛起必然伴随了很多厂商的陨落，同时，它的存在也让联盟中其他有实力的厂商感到了危机，这为后来阵营的割分埋下了导火索。&lt;/p&gt;
&lt;p&gt;  &lt;code&gt;Symbian&lt;/code&gt; 成立之初提出了著名的三分法：&lt;code&gt;Pearl&lt;/code&gt; (珍珠）、&lt;code&gt;Quartz&lt;/code&gt; (石英）和 &lt;code&gt;Crystal&lt;/code&gt;（水晶）。分别对应手机的三大发展趋势：标砖键盘、触摸屏以及全键盘。诺基亚依靠 &lt;code&gt;Pearl&lt;/code&gt; 迅速赢得了市场，逼迫索尼爱立信和摩托罗拉只能另寻他路 &amp;ndash;&lt;code&gt;Quartz&lt;/code&gt;。于是，联盟分为了两大派系，一是以诺基亚牵头的 &lt;code&gt;S&lt;/code&gt; 系列平台，再者便是索尼爱立信主打 &lt;code&gt;UIQ&lt;/code&gt;。诺基亚凭借标准键盘占据了大半江山，而后者则主攻触摸屏。这种同床异梦的现象愈演愈烈，直接导致了联盟崩溃的迫近。&lt;/p&gt;
&lt;p&gt;   当然，上述现象只是苗头，整个联盟正处于高速发展阶段。2002 年，微软的 &lt;code&gt;WM&lt;/code&gt; 系统进入市场，这个原本被人们誉为 “Symbian 终结者” 的系统，却远没有它的大哥一般占据市场，反而被后者打的满地找牙。与此同时，诺基亚更是凭借 &lt;code&gt;Pearl&lt;/code&gt; 进一步扩展帝国的领土，&lt;code&gt;N70&lt;/code&gt;、&lt;code&gt;N73&lt;/code&gt;、&lt;code&gt;N95&lt;/code&gt; 的横空出世，为诺基亚扎实了自己的实力，待到 &lt;code&gt;Symbian&lt;/code&gt; 王朝最鼎盛时，这个姓塞的家族占据了 72% 的智能手机市场，其中更是有九成乃至如日中天的诺基亚。直到现在，都没有哪一家厂商甚至哪一个操作系统打破这个纪录。&lt;/p&gt;
&lt;h3 id=&#34;兄弟反目联盟瓦解&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e5%85%84%e5%bc%9f%e5%8f%8d%e7%9b%ae%e8%81%94%e7%9b%9f%e7%93%a6%e8%a7%a3&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;兄弟反目，联盟瓦解&lt;/h3&gt;&lt;p&gt;   正如上文所说，一家独大必然引发隐患。而事实证明那一天来了。2008 年，&lt;code&gt;UIQ&lt;/code&gt; 宣布倒闭。究其原因，一方面是由于它自身定位与市场的极大反差，而另一方面便是来自于诺基亚的压力。相比 &lt;code&gt;S60&lt;/code&gt;，开发者在这个平台上的收益远不及前者。应用程序的短缺自然局限了消费者的购买欲，如此一来，倒闭似乎只是时间问题了。诺基亚的持续壮大，扼杀了其他厂商的利润，长此以往，天平的过分了倾斜让别的厂商不得不退出 &lt;code&gt;Symbian&lt;/code&gt; 的纷争。&lt;code&gt;UIQ&lt;/code&gt; 的倒闭，标志着诺基亚对于 &lt;code&gt;Symbian&lt;/code&gt; 掌控的最大化，后者从此只有一个主人了。&lt;/p&gt;
&lt;p&gt;   联盟名存实亡，但诺基亚为了避嫌，标榜着 “开放” 而成立了 &lt;code&gt;Symbian&lt;/code&gt; 基金会，继续推向面向所有开发者开放的原则，明则共享资源，暗则染指一统智能市场。不幸的是，这是 &lt;code&gt;iPhone&lt;/code&gt; 和 &lt;code&gt;Android&lt;/code&gt; 问世了。后来的结果，各位看官一定也都清楚。诺基亚的美梦做早了，自大的它快走到了末路。&lt;/p&gt;
&lt;p&gt;   多年以后，关于那个一统江湖的传说，早已沦为笑谈罢了。&lt;/p&gt;
&lt;h3 id=&#34;成也-symbian败也-symbian&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%88%90%e4%b9%9f-symbian%e8%b4%a5%e4%b9%9f-symbian&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;成也 Symbian，败也 Symbian&lt;/h3&gt;&lt;p&gt;   船大难掉头。巨头对于市场末端的变化总是慢半拍。身处多年王位的诺基亚早已麻痹了大意。&lt;code&gt;UIQ&lt;/code&gt; 的倒闭，让其认为触摸屏不被市场接受，继续推进 &lt;code&gt;S60&lt;/code&gt; 这个老迈的系统被诺基亚看做唯一路线。&lt;code&gt;iPhone&lt;/code&gt; 的面市彻底颠覆了人们对于智能手机的认识，一度让人们认为 &lt;code&gt;iPhone&lt;/code&gt; 重新定义了智能手机。市场的反应也确实印证了这一点，我们的双手确实是最适合操作的工具。但固守己见的诺基亚貌似看不到这一变化，迟迟不肯跳出键盘的定式思维。虽然后来确实推出了几款诸如 &lt;code&gt;5800&lt;/code&gt; 这样销量很不错的触屏手机，当一切来的太晚，苹果做大了，随后的绿皮机器人也成熟了，&lt;code&gt;Symbian&lt;/code&gt; 王朝彻底步入了晚年。&lt;/p&gt;
&lt;p&gt;   失去市场号召力的诺基亚此时的地位一落千丈，对于 &lt;code&gt;Symbian&lt;/code&gt; 的态度也是一日三变。曾一度把源代码挂在网站上任人下载，随后又宣布只面向企业用户开源。这时的诺基亚真的急了。不愿投奔机器人阵营沦落为硬件制作商的他，竟甘心跪倒在昔日手下败将的裙下。2011 年 12 月，&lt;code&gt;Symbian Belle&lt;/code&gt; 正式更名为诺基亚 &lt;code&gt;Belle&lt;/code&gt;。诺基亚连名字都不行再见的 &lt;code&gt;Symbian&lt;/code&gt; 从此已经不复存在。&lt;/p&gt;
&lt;p&gt;   然而，这并不意味着 &lt;code&gt;Symbian&lt;/code&gt; 彻底的灭亡。名字虽然没有了，但产品依旧没有改变，与其说它灭亡不如说它失去了原来那般强大的市场号召力。毕竟，凭借 &lt;code&gt;S40&lt;/code&gt; 在低端市场的畅销，诺基亚还能在手机市场分的一杯羹。&lt;/p&gt;
&lt;h3 id=&#34;未来未来&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9c%aa%e6%9d%a5%e6%9c%aa%e6%9d%a5&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;未来？未来！&lt;/h3&gt;&lt;p&gt;   向微软投怀送抱之后，诺基亚在 &lt;code&gt;Symbian&lt;/code&gt; 的建树彻底才枯思竭。以至于不得不推出 &lt;code&gt;808&lt;/code&gt; 这样依靠单一买点为噱头吸引市场关注的 “帐篷手机”。&lt;code&gt;Symbian&lt;/code&gt; 的今生今世已经无话可说。而未来又在何方？原本打算有所期盼的笔者，本来打算对它的未来有所展望和揣测，不幸的是，本文截稿前的 1 月 24 日，诺基亚公布了 2012 年第四季度最新的财政业绩报告显示，该季度诺基亚实现净利润 2.02 亿欧元，告别 6 连亏，但同时诺基亚官方宣称去年在巴塞罗那发布的 &lt;code&gt;808PureView&lt;/code&gt; 将会是最后一款塞班手机，这也意味着塞班这一已经被使用了 15 年之久的智能手机操作系统终于将告别市场，而诺基亚在智能手机领域也终于百分之百微软化。 诺基亚 &lt;code&gt;CEO&lt;/code&gt; 斯蒂芬・埃洛普表示：“2012 财年上半年相对艰难，但第四财季表现强劲，设备和服务部门的运营利润率得到了改善。我们将继续执行既定的转移战略，包括继续提升产品竞争力，加速运营，管理成本等。”&lt;/p&gt;
&lt;p&gt;   因此，至少在看得见的未来，&lt;code&gt;Symbian&lt;/code&gt; 已经没有了未来！&lt;/p&gt;
&lt;h3 id=&#34;末了&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#%e6%9c%ab%e4%ba%86&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;末了&lt;/h3&gt;&lt;p&gt;   无论多么强大的文明都有覆灭的一天，帝国如是，企业如是。在暗潮汹涌的科技领域，公司不能推出迎合市场口味，顺应市场变化的产品，迎来的就只有倒闭。在创新与颠覆这条路上，&lt;code&gt;Symbian&lt;/code&gt; 不是第一个倒下的，也不会是最后一个。&lt;/p&gt;
&lt;div class=&#34;details admonition info open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 512 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;信息&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;&lt;strong&gt;P.S.&lt;/strong&gt; 谨以此文献给那些成长路上的人和事，&lt;code&gt;Symbian&lt;/code&gt; 没了，坛子没有了，但我们都还在。这些有关我们青春的事逝去也就随他去了。&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>五大移动端系统谁先被淘汰？</title>
      <link>https://www.techkoala.net/mobile_phone_systems/</link>
      <pubDate>Mon, 12 Apr 2010 10:38:45 +0800</pubDate>
      
      <guid>https://www.techkoala.net/mobile_phone_systems/</guid>
      <description>&lt;blockquote&gt;
  &lt;p&gt;Symbian、黑莓、苹果、微软、Android 五大手机系统，谁先会被淘汰？&lt;/p&gt;

&lt;/blockquote&gt;&lt;h2 id=&#34;blackberry&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#blackberry&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;BlackBerry&lt;/h2&gt;&lt;p&gt;   这是一个很难预测的问题，先从黑莓说起吧，黑莓的成功是&amp;ndash;针对高级白领和企业人士，提供企业移动办公的一体化解决方案，它让手机邮件发送变的更简单，所以它得到了众多商务人士及企业的青睐，但它在娱乐互联网上缺乏吸引力，一旦其它竞争对手加强在移动办公上的投入及创新，那么黑莓的优势将不复存在（最新的苹果系统 &lt;code&gt;iOS4&lt;/code&gt; 已经加强了在企业方面的应用）。虽然它现在份额依然是世界第二、美国第一，但它依然会是第一个被淘汰的。&lt;/p&gt;
&lt;h2 id=&#34;symbian&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#symbian&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Symbian&lt;/h2&gt;&lt;p&gt;   &lt;code&gt;Symbian&lt;/code&gt; 是因为诺基亚而存在的系统，它的兼容性是最差的，实用复杂，速度慢（尤其是上网速度）所以不被看好，之所以它一直以来是世界最大的智能手机系统，那是因为诺基亚的金子招牌在支撑着，除了诺基亚之外的 &lt;code&gt;Symbian&lt;/code&gt; 手机（三星、索爱）一直以来销量都不理想。缺乏创新，所以它是第二个被淘汰的系统。&lt;/p&gt;
&lt;h2 id=&#34;android&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#android&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Android&lt;/h2&gt;&lt;p&gt;   &lt;code&gt;Android&lt;/code&gt; 速度最快的系统，被大家都看好，但它不可能成为第二个苹果，因为它的软件开发平台是开源的，导致了不同版本的出现，中国移动就是最好的例子，现在中国移动自主系统的手机想升级到 &lt;code&gt;Android&lt;/code&gt; 最新版本是很困难的，加上品牌、型号不一样，硬件配置及屏幕尺寸不同，导致了同一个游戏在不同品牌及型号之间有着不同的表现，而苹果可以让一个游戏在四代上都是最佳体验（这样可以让软件的开发者利益最大化，而不需要为不同型号手机做出修改），&lt;code&gt;Android&lt;/code&gt; 不会被淘汰，也许它会成为世界最大手机系统，但它将会沦为大众系统，我相信不久它将成为山寨手机进军低端智能市场的利器&amp;hellip;&lt;/p&gt;
&lt;p&gt;   最后才是苹果与微软在中高端市场上的巅峰对决&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;microsoft&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#microsoft&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Microsoft&lt;/h2&gt;&lt;p&gt;   虽然现在微软的 &lt;code&gt;PPC&lt;/code&gt; 已经被淘汰，但它的 &lt;code&gt;WP7&lt;/code&gt; 即将上线，一个替代 &lt;code&gt;PPC&lt;/code&gt; 的时代即将到来，从最近放出的 &lt;code&gt;WP7&lt;/code&gt; 资料来看，它是非常强大的，拥有众多新功能，凭着微软在 &lt;code&gt;PC&lt;/code&gt; 市场上的垄断地位，加上它与 &lt;code&gt;PC&lt;/code&gt; 之间的强兼容性，相信它前景广阔。&lt;/p&gt;
&lt;h2 id=&#34;apple&#34; class=&#34;headerLink&#34;&gt;
    &lt;a href=&#34;#apple&#34; class=&#34;header-mark&#34;&gt;&lt;/a&gt;Apple&lt;/h2&gt;&lt;p&gt;   苹果是一个传奇，能让一款手机买到第三年而依然拥有强大的市场竞争力，不得不说这是一个奇迹，历史上可能只有摩托罗拉的 &lt;code&gt;V998&lt;/code&gt; 可以与之相比了，但苹果还在续写传奇，第四代已经出来了，苹果开创了一个手机的新时代，三年了，没有一个对手可以打败它，超越它，它引领着手机一次次的潮流，一次次的把手机用户体验推向一个新的水准，拥有 22 万多个应用商店、加上音乐商店，图书商店，它再一次的把资源整合到了极致，把苹果所有的娱乐产品连成了一个整体，这是其它对手所没有的优势，所以苹果会一直传奇下去…&lt;/p&gt;
&lt;div class=&#34;details admonition warning open&#34;&gt;
    &lt;div class=&#34;details-summary admonition-title&#34;&gt;
        &lt;span class=&#34;icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 576 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;注意&lt;span class=&#34;details-icon&#34;&gt;&lt;svg class=&#34;icon&#34;
    xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 256 512&#34;&gt;&lt;!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --&gt;&lt;path d=&#34;M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;details-content&#34;&gt;
        &lt;div class=&#34;admonition-content&#34;&gt;本文写于 2010 年，时过境迁，有些事情似乎沿着上文预言发展，有些却不然。正如前文《Symbian 的前世今生》中所言：无论多么强大的文明都有覆灭的一天，帝国如是，企业如是。在暗潮汹涌的科技领域，公司不能推出迎合市场口味，顺应市场变化的产品，迎来的就只有倒闭。在创新与颠覆这条路上，&lt;code&gt;Symbian&lt;/code&gt; 不是第一个倒下的，也不会是最后一个。&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
    </item>
    
  </channel>
</rss>
