<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[原来我在做梦]]></title><description><![CDATA[原来我在做梦]]></description><link>https://blog.ykai.cc/</link><image><url>https://blog.ykai.cc/favicon.png</url><title>原来我在做梦</title><link>https://blog.ykai.cc/</link></image><generator>Ghost 5.14</generator><lastBuildDate>Fri, 12 Sep 2025 03:04:02 GMT</lastBuildDate><atom:link href="https://blog.ykai.cc/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[完善 NAS 方案]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h1 id="%E7%A1%AC%E4%BB%B6">&#x786C;&#x4EF6;</h1>
<p>&#x76EE;&#x524D;&#x4F7F;&#x7528;&#x7684;&#x662F;&#x5929;&#x94A1; WTR R1&#xFF0C;&#x914D;&#x7F6E;&#x5982;&#x4E0B;&#xFF1A;</p>
<ul>
<li>
<p>CPU: Intel N100</p>
</li>
<li>
<p>&#x5185;&#x5B58;&#xFF1A;16G</p>
</li>
<li>
<p>&#x786C;&#x76D8;&#xFF1A;256G &#x56FA;&#x6001;&#x505A;&#x7CFB;&#x7EDF;&#x76D8;&#xFF0C;4T+16T &#x673A;&#x68B0;&#x505A;&#x6570;&#x636E;&#x76D8;</p>
</li>
</ul>
<h1 id="%E7%B3%BB%E7%BB%9F">&#x7CFB;&#x7EDF;</h1>
<h2 id="pve">PVE</h2>
<p>PVE&#x662F;&#x4E00;</p>]]></description><link>https://blog.ykai.cc/wan-shan-nas-fang-an/</link><guid isPermaLink="false">683a92f3bbd3250001ab853b</guid><category><![CDATA[NAS]]></category><dc:creator><![CDATA[Yingkai Dang]]></dc:creator><pubDate>Fri, 20 Sep 2024 05:29:00 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h1 id="%E7%A1%AC%E4%BB%B6">&#x786C;&#x4EF6;</h1>
<p>&#x76EE;&#x524D;&#x4F7F;&#x7528;&#x7684;&#x662F;&#x5929;&#x94A1; WTR R1&#xFF0C;&#x914D;&#x7F6E;&#x5982;&#x4E0B;&#xFF1A;</p>
<ul>
<li>
<p>CPU: Intel N100</p>
</li>
<li>
<p>&#x5185;&#x5B58;&#xFF1A;16G</p>
</li>
<li>
<p>&#x786C;&#x76D8;&#xFF1A;256G &#x56FA;&#x6001;&#x505A;&#x7CFB;&#x7EDF;&#x76D8;&#xFF0C;4T+16T &#x673A;&#x68B0;&#x505A;&#x6570;&#x636E;&#x76D8;</p>
</li>
</ul>
<h1 id="%E7%B3%BB%E7%BB%9F">&#x7CFB;&#x7EDF;</h1>
<h2 id="pve">PVE</h2>
<p>PVE&#x662F;&#x4E00;&#x4E2A;&#x53EF;&#x4EE5;&#x8FD0;&#x884C;&#x5728;&#x88F8;&#x673A;&#x4E0A;&#x7684;&#x5F00;&#x6E90;&#x865A;&#x62DF;&#x673A;&#x7CFB;&#x7EDF;&#xFF0C;&#x57FA;&#x4E8E;debian&#x548C;qemu/kvm&#xFF0C;&#x540C;&#x65F6;&#x63D0;&#x4F9B;&#x4E86;&#x65B9;&#x4FBF;&#x7684;web&#x548C;cli&#x754C;&#x9762;&#x3002;&#x5B98;&#x7F51;&#xFF1A;<a href="https://pve.proxmox.com/" title="https://pve.proxmox.com/">https://pve.proxmox.com/</a>&#x3002;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E5%AE%8C%E5%96%84NAS%E6%96%B9%E6%A1%88/images/image_X875TKHedC.png" alt loading="lazy"></p>
<h3 id="%E8%99%9A%E6%8B%9F%E6%9C%BA%E9%85%8D%E7%BD%AE">&#x865A;&#x62DF;&#x673A;&#x914D;&#x7F6E;</h3>
<p>&#x76EE;&#x524D;&#x6211;&#x7684;&#x4E3B;&#x529B;nas&#x7CFB;&#x7EDF;&#x662F;&#x4E00;&#x4E2A;&#x53EB;&#x505A;OpenMediaVault&#x7684;&#x7CFB;&#x7EDF;&#xFF0C;&#x76F8;&#x6BD4;&#x4E8E;&#x547D;&#x4EE4;&#x884C;&#xFF0C;&#x5B83;&#x63D0;&#x4F9B;&#x4E86;&#x4E00;&#x4E2A;&#x7B80;&#x5355;&#x7684;&#x7BA1;&#x7406;nas&#x7684;&#x56FE;&#x5F62;&#x754C;&#x9762;&#xFF0C;&#x65B9;&#x4FBF;&#x5FEB;&#x901F;&#x914D;&#x7F6E;&#x4E00;&#x4E9B;&#x670D;&#x52A1;&#x3002;</p>
<p>&#x8FD9;&#x91CC;&#x6211;&#x8D34;&#x4E0A;&#x5728;pve&#x91CC;&#x9762;&#x7684;&#x865A;&#x62DF;&#x673A;&#x914D;&#x7F6E;&#xFF0C;&#x5C31;&#x4E0D;&#x4E00;&#x4E00;&#x7EC6;&#x8BB2;&#x4E86;&#xFF1A;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E5%AE%8C%E5%96%84NAS%E6%96%B9%E6%A1%88/images/image_i-qjkqERp-.png" alt loading="lazy"></p>
<p>&#x5176;&#x4E2D;&#x914D;&#x7F6E;&#x6BD4;&#x8F83;&#x9EBB;&#x70E6;&#x7684;&#x662F;&#x6700;&#x4E0B;&#x9762;&#x7684;PCI&#x8BBE;&#x5907;&#xFF0C;&#x8FD9;&#x662F;&#x5C06;&#x663E;&#x5361;&#x76F4;&#x901A;&#x5230;&#x4E86;&#x865A;&#x62DF;&#x673A;&#x91CC;&#xFF0C;&#x9700;&#x8981;&#x542F;&#x7528;IOMMU&#x7B49;&#x529F;&#x80FD;&#xFF0C;&#x6211;&#x4E5F;&#x662F;&#x4E00;&#x77E5;&#x534A;&#x89E3;&#x5730;&#x641E;&#x597D;&#x4E86;&#xFF0C;&#x6709;&#x9700;&#x8981;&#x7684;&#x53EF;&#x4EE5;&#x641C;&#x7D22;&#x5173;&#x952E;&#x5B57;&#x201C;PVE&#x663E;&#x5361;&#x76F4;&#x901A;&#x201D;&#x67E5;&#x8BE6;&#x7EC6;&#x8D44;&#x6599;&#x3002;</p>
<p>&#x5B98;&#x7F51;&#x7684;&#x8D44;&#x6599;&#xFF1A;<a href="https://pve.proxmox.com/wiki/PCI(e)_Passthrough" title="PCI(e)_Passthrough">PCI(e)_Passthrough</a>&#x3001;<a href="https://pve.proxmox.com/wiki/PCI_Passthrough" title="PCI_Passthrough">PCI_Passthrough</a>&#x3002;</p>
<h3 id="%E7%A3%81%E7%9B%98">&#x78C1;&#x76D8;</h3>
<p>&#x7269;&#x7406;&#x78C1;&#x76D8;&#x4E0A;&#xFF0C;&#x76EE;&#x524D;&#x6211;&#x6709;&#x4E24;&#x5757;&#x673A;&#x68B0;&#x786C;&#x76D8;&#xFF08;4T+16T&#xFF09;&#xFF0C;&#x4E00;&#x5757;&#x56FA;&#x6001;&#xFF08;256G&#xFF09;&#xFF0C;&#x6CA1;&#x6709;&#x7EC4;raid&#xFF0C;&#x7EAF;&#x624B;&#x5DE5;&#x7BA1;&#x7406;&#x3002;</p>
<p>&#x56FA;&#x6001;&#x4E0A;&#x4E3B;&#x8981;&#x7528;&#x4E8E;&#x653E;&#x7F6E;&#x865A;&#x62DF;&#x7CFB;&#x7EDF;&#x7684;&#x865A;&#x62DF;&#x76D8;&#xFF0C;&#x56E0;&#x6B64;&#x5176;&#x4E2D;&#x8DD1;&#x7684;&#x5404;&#x79CD;&#x670D;&#x52A1;&#x7684;&#x6570;&#x636E;&#x5E93;&#x4E5F;&#x5728;&#x56FA;&#x6001;&#x4E0A;&#x653E;&#x7740;&#xFF0C;&#x80FD;&#x52A0;&#x5FEB;&#x670D;&#x52A1;&#x7684;&#x8BBF;&#x95EE;&#x3002;</p>
<p>&#x673A;&#x68B0;&#x76D8;&#x91CC;&#x9762;&#x4E3B;&#x8981;&#x5B58;&#x6570;&#x636E;&#xFF0C;&#x6BD4;&#x5982;&#x4E0B;&#x8F7D;&#x7684;&#x7535;&#x5F71;&#x7535;&#x89C6;&#x3001;&#x5907;&#x4EFD;&#x7684;&#x7167;&#x7247;&#x4E0E;&#x6587;&#x4EF6;&#x7B49;&#x7B49;&#x3002;</p>
<p>&#x901A;&#x5E38;&#xFF0C;&#x4F7F;&#x7528;pve&#x65F6;&#x6BCF;&#x4E2A;&#x7CFB;&#x7EDF;&#x4F1A;&#x6302;&#x5728;&#x5404;&#x81EA;&#x7684;&#x786C;&#x76D8;&#xFF0C;&#x4F46;&#x662F;&#x5BF9;&#x6211;&#x6765;&#x8BF4;&#xFF0C;&#x5404;&#x4E2A;&#x7CFB;&#x7EDF;&#x4E4B;&#x95F4;&#x6570;&#x636E;&#x5171;&#x4EAB;&#x662F;&#x5F88;&#x91CD;&#x8981;&#x7684;&#xFF0C;&#x4F8B;&#x5982;&#x6211;&#x5728;&#x7FA4;&#x6656;&#xFF08;&#x5355;&#x72EC;&#x7684;&#x7CFB;&#x7EDF;&#xFF09;&#x4E0A;&#x5907;&#x4EFD;&#x7684;&#x7167;&#x7247;&#xFF0C;&#x9700;&#x8981;&#x7ACB;&#x5373;&#x5728;samba&#x3001;nfs&#x3001;nextcloud&#x7B49;&#x5730;&#x65B9;&#xFF08;nas&#x7CFB;&#x7EDF;&#xFF09;&#x80FD;&#x770B;&#x5230;&#xFF0C;<strong>&#x8FD9;&#x5C31;&#x9700;&#x8981;&#x5B83;&#x4EEC;&#x4E4B;&#x95F4;&#x80FD;&#x591F;&#x5171;&#x4EAB;&#x540C;&#x4E00;&#x4E2A;&#x76EE;&#x5F55;</strong>&#x3002;</p>
<p>&#x6240;&#x4EE5;&#x6700;&#x7EC8;&#x6211;&#x9009;&#x62E9;&#x7684;&#x65B9;&#x6848;&#x662F;&#xFF1A;<strong>&#x5BBF;&#x4E3B;&#x673A;&#x6302;&#x8F7D;&#x7269;&#x7406;&#x786C;&#x76D8;&#xFF0C;&#x7136;&#x540E;&#x901A;&#x8FC7;9pfs/virtiofs&#x7B49;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x5206;&#x4EAB;&#x7ED9;&#x865A;&#x62DF;&#x7CFB;&#x7EDF;&#x3002;</strong> &#x8FD9;&#x4E24;&#x4E2A;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x90FD;&#x53EF;&#x4EE5;&#x5B9E;&#x73B0;&#x865A;&#x62DF;&#x673A;&#x5185;&#x5916;&#x5171;&#x4EAB;&#x76EE;&#x5F55;&#xFF0C;&#x5176;&#x539F;&#x7406;&#x662F;&#x8F6C;&#x53D1;&#x865A;&#x62DF;&#x673A;&#x5185;&#x7684;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x64CD;&#x4F5C;&#x5230;&#x5BBF;&#x4E3B;&#x673A;&#xFF0C;&#x4E0D;&#x8FC7;&#x4E0D;&#x9700;&#x8981;&#x8D70;&#x7F51;&#x7EDC;&#x8BF7;&#x6C42;&#xFF0C;&#x672C;&#x5730;&#x4F20;&#x8F93;&#x7406;&#x8BBA;&#x4E0A;&#x4F1A;&#x5FEB;&#x4E00;&#x4E9B;&#x3002;</p>
<p>&#x4E0D;&#x8FC7;pve&#x81EA;&#x8EAB;&#x5E76;&#x4E0D;&#x652F;&#x6301;&#x8FD9;&#x4E24;&#x4E2A;&#x65B9;&#x6848;&#xFF0C;&#x6240;&#x4EE5;&#x9700;&#x8981;&#x5728;conf&#x6587;&#x4EF6;&#x4E2D;&#x624B;&#x52A8;&#x4FEE;&#x6539;qemu&#x7684;&#x547D;&#x4EE4;&#x884C;&#x53C2;&#x6570;&#xFF0C;&#x4F1A;&#x6709;&#x4E00;&#x70B9;&#x9EBB;&#x70E6;&#x3002;</p>
<p>&#x8FD9;&#x4E24;&#x4E2A;&#x4F7F;&#x7528;&#x548C;&#x914D;&#x7F6E;&#x8D77;&#x6765;&#x6709;&#x4E9B;&#x5DEE;&#x5F02;&#xFF0C;&#x6700;&#x7EC8;&#x6211;&#x9009;&#x62E9;&#x4E86;virtiofs&#x3002;</p>
<h4 id="9pfs%EF%BC%88%E5%BC%83%E7%94%A8%EF%BC%89">9pfs&#xFF08;&#x5F03;&#x7528;&#xFF09;</h4>
<p>&#x4E4B;&#x524D;&#x770B;<a href="https://zhuanlan.zhihu.com/p/49118355" title="&#x97E6;&#x6613;&#x7B11;&#x5927;&#x4F6C;&#x7684;&#x6587;&#x7AE0;">&#x97E6;&#x6613;&#x7B11;&#x5927;&#x4F6C;&#x7684;&#x6587;&#x7AE0;</a>&#x914D;&#x7F6E;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x4E00;&#x5F00;&#x59CB;&#x6211;&#x4F7F;&#x7528;&#x7684;9pfs&#xFF0C;&#x4F46;&#x662F;&#x7528;&#x8FC7;&#x4E00;&#x6BB5;&#x65F6;&#x95F4;&#x4E4B;&#x540E;&#xFF0C;&#x53D1;&#x73B0;&#x6709;&#x4E00;&#x4E9B;&#x6BD4;&#x8F83;&#x5F71;&#x54CD;&#x4F7F;&#x7528;&#x7684;&#x95EE;&#x9898;&#xFF1A;</p>
<ol>
<li>&#x6027;&#x80FD;&#x95EE;&#x9898;</li>
</ol>
<p>&#x7ECF;&#x8FC7;&#x4E00;&#x6BB5;&#x65F6;&#x95F4;&#x7684;&#x4F7F;&#x7528;&#xFF0C;&#x53D1;&#x73B0;&#x901A;&#x8FC7;9pfs&#x6302;&#x8F7D;&#x7684;&#x76EE;&#x5F55;&#x6027;&#x80FD;&#x5F88;&#x6210;&#x95EE;&#x9898;&#xFF0C;7zip&#x89E3;&#x538B;&#x3001;rsync&#x540C;&#x6B65;&#x7B49;&#x90FD;&#x5F88;&#x6162;&#xFF0C;&#x5C31;&#x8FDE;nextcloud&#x7684;&#x901F;&#x5EA6;&#x4E5F;&#x4F1A;&#x53D8;&#x5F97;&#x5F88;&#x6162;&#xFF0C;&#x53EF;&#x80FD;&#x662F;&#x968F;&#x673A;&#x8BFB;&#x5199;&#x6162;&#xFF1F;&#x8FD9;&#x70B9;&#x6709;&#x70B9;&#x65E0;&#x6CD5;&#x63A5;&#x53D7;&#x3002;</p>
<ol start="2">
<li>&#x4E0D;&#x652F;&#x6301;nfs</li>
</ol>
<p>&#x4E4B;&#x524D;&#x9884;&#x8BA1;&#x662F;&#x5728;&#x865A;&#x62DF;&#x673A;&#x7684;nas&#x7CFB;&#x7EDF;&#x4E2D;&#x542F;&#x7528;nfs&#x548C;samba&#xFF0C;&#x4F46;&#x662F;&#x53D1;&#x73B0;9pfs&#x4E0D;&#x652F;&#x6301;nfs&#x3002;</p>
<ol start="3">
<li>sqlite&#x65E0;&#x6CD5;&#x8BFB;&#x53D6;&#xFF0C;&#x5F71;&#x54CD;jellyfin&#x7684;&#x8FD0;&#x884C;&#xFF0C;&#x539F;&#x56E0;&#x662F;&#x5728;&#x9ED8;&#x8BA4;&#x7684;&#x53C2;&#x6570;&#x4E0B;&#xFF0C;mmap&#x65E0;&#x6CD5;&#x5728;9pfs&#x4E2D;&#x8C03;&#x7528;&#xFF1A;</li>
</ol>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E5%AE%8C%E5%96%84NAS%E6%96%B9%E6%A1%88/images/image_kT_0zEkz2F.png" alt loading="lazy"></p>
<p>&#x901A;&#x8FC7;&#x7ED9;&#x6302;&#x8F7D;&#x53C2;&#x6570;&#x4E2D;&#x6DFB;&#x52A0;cache=mmap&#x89E3;&#x51B3;&#x3002;</p>
<ul>
<li>
<p>&#x53C2;&#x8003;</p>
<p><a href="https://patchwork.kernel.org/project/v9fs-devel/patch/1389384004-5685-1-git-send-email-dominique.martinet@cea.fr/" title="https://patchwork.kernel.org/project/v9fs-devel/patch/1389384004-5685-1-git-send-email-dominique.martinet@cea.fr/">https://patchwork.kernel.org/project/v9fs-devel/patch/1389384004-5685-1-git-send-email-dominique.martinet@cea.fr/</a></p>
<p><a href="https://www.kernel.org/doc/Documentation/filesystems/9p.txt" title="https://www.kernel.org/doc/Documentation/filesystems/9p.txt">https://www.kernel.org/doc/Documentation/filesystems/9p.txt</a></p>
</li>
</ul>
<h4 id="virtio-fs%EF%BC%88%E9%80%89%E8%BF%99%E4%B8%AA%EF%BC%89">virtio-fs&#xFF08;&#x9009;&#x8FD9;&#x4E2A;&#xFF09;</h4>
<p>virtiofs&#x914D;&#x7F6E;&#x7A0D;&#x5FAE;&#x9EBB;&#x70E6;&#x4E00;&#x70B9;&#xFF0C;<strong>&#x4F46;&#x6027;&#x80FD;&#x8981;&#x6BD4;9pfs&#x597D;&#x5F88;&#x591A;</strong>&#xFF08;&#x540C;&#x6837;&#x4E00;&#x4E2A;zip&#x6587;&#x4EF6;&#xFF0C;&#x8089;&#x773C;&#x53EF;&#x89C1;&#x5927;&#x6982;&#x6BD4;9pfs&#x5FEB;2-3&#x500D;&#x5DE6;&#x53F3;&#xFF09;&#xFF0C;&#x540C;&#x65F6;&#x9650;&#x5236;&#x4E5F;&#x66F4;&#x5C11;&#xFF08;&#x76F4;&#x63A5;&#x652F;&#x6301;nfs&#x3001;mmap&#xFF09;&#x3002;</p>
<p>virtiofs&#x5E76;&#x4E0D;&#x662F;qemu&#x5185;&#x7F6E;&#x652F;&#x6301;&#x7684;&#xFF0C;&#x800C;&#x662F;&#x9700;&#x8981;&#x8FD0;&#x884C;&#x4E00;&#x4E2A;&#x540E;&#x53F0;&#x8FDB;&#x7A0B;virtiofsd&#x3002;&#x8FD9;&#x4E2A;&#x540E;&#x53F0;&#x8FDB;&#x7A0B;&#x9700;&#x8981;&#x8DDF;&#x7740;&#x865A;&#x62DF;&#x673A;&#x542F;&#x52A8;&#x65F6;&#x5F00;&#x542F;&#xFF0C;&#x865A;&#x62DF;&#x673A;&#x5173;&#x95ED;&#x65F6;&#x5173;&#x95ED;&#xFF0C;&#x6240;&#x4EE5;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;pve&#x7684;hookscript&#x6765;&#x5B9E;&#x73B0;&#xFF1A;</p>
<ol>
<li>&#x5728;<code>/var/lib/vz/snippets</code>&#x76EE;&#x5F55;&#x4E0B;&#x65B0;&#x5EFA;&#x6587;&#x4EF6;<code>nas-hookscript.sh</code>&#xFF0C;&#x6DFB;&#x52A0;&#x4EE5;&#x4E0B;&#x5185;&#x5BB9;&#xFF1A;</li>
</ol>
<pre><code class="language-bash">#!/bin/sh

vmid=$1
phase=$2

case $phase in
    pre-start)
      echo pre-start vmid=$vmid phase=$phase
      systemd-run -G --unit=virtiofsd /usr/libexec/virtiofsd --shared-dir /mnt --socket-path /run/virtiofs-sea.sock --announce-submounts --inode-file-handles=mandatory --syslog
      ;;
esac
</code></pre>
<p>&#x5176;&#x4E2D;&#xFF0C;&#x2014;shared-dir&#x53C2;&#x6570;&#x9700;&#x8981;&#x66FF;&#x6362;&#x6210;&#x9700;&#x8981;&#x7684;&#x76EE;&#x5F55;&#x3002;</p>
<p>&#x7136;&#x540E;&#x901A;&#x8FC7;<code>qm set 102 --hookscript local:snippets/nas-hookscript.sh</code>&#x547D;&#x4EE4;&#xFF0C;&#x5C06;&#x8BE5;&#x811A;&#x672C;&#x8BBE;&#x7F6E;&#x4E3A;&#x865A;&#x62DF;&#x673A;&#x7684;hookscript&#xFF0C;&#x8FD9;&#x91CC;&#x7684;102&#x662F;&#x865A;&#x62DF;&#x673A;id&#x3002;</p>
<p>&#x8FD9;&#x91CC;&#x4F7F;&#x7528;systemd-run&#x662F;&#x56E0;&#x4E3A;hookscript&#x9700;&#x8981;&#x7ACB;&#x5373;&#x9000;&#x51FA;&#xFF0C;&#x6240;&#x4EE5;&#x91CC;&#x9762;&#x8FD0;&#x884C;&#x7684;daemon&#x8FDB;&#x7A0B;&#x5FC5;&#x987B;&#x5F97;&#x662F;double-fork&#x4E4B;&#x540E;&#x7684;&#xFF0C;&#x4E0D;&#x80FD;&#x963B;&#x585E;hookscript&#xFF0C;&#x800C;systemd-run&#x9ED8;&#x8BA4;&#x4F1A;&#x8BA9;&#x8FDB;&#x7A0B;&#x4EE5;&#x670D;&#x52A1;&#x7684;&#x5F62;&#x5F0F;&#x8FD0;&#x884C;&#xFF0C;&#x540C;&#x65F6;&#x4E5F;&#x652F;&#x6301;&#x5C06;&#x65E5;&#x5FD7;&#x91CD;&#x5B9A;&#x5411;&#x5230;journald&#xFF08;&#x8FD9;&#x91CC;&#x901A;&#x8FC7;<code>&#x2014;unit=virtiofsd</code>&#x9009;&#x9879;&#x5C06;&#x8FD9;&#x6761;&#x547D;&#x4EE4;&#x4F5C;&#x4E3A;&#x4E00;&#x4E2A;&#x5177;&#x540D;&#x7684;&#x4E34;&#x65F6;&#x670D;&#x52A1;&#x8FD0;&#x884C;&#x4E86;&#xFF09;&#x3002;</p>
<p>virtiofsd&#x547D;&#x4EE4;&#x4F1A;&#x7B49;&#x5F85;&#x7B2C;&#x4E00;&#x4E2A;&#x5BA2;&#x6237;&#x7AEF;&#x8FDE;&#x63A5;&#xFF08;&#x4E5F;&#x5C31;&#x662F;&#x865A;&#x62DF;&#x673A;&#x542F;&#x52A8;&#x540E;&#xFF09;&#xFF0C;&#x7B2C;&#x4E00;&#x4E2A;&#x5BA2;&#x6237;&#x7AEF;&#x65AD;&#x5F00;&#x8FDE;&#x63A5;&#x540E;virtiofsd&#x4F1A;&#x7ED3;&#x675F;&#x8FDB;&#x7A0B;&#x3002;</p>
<ol start="2">
<li>&#x6253;&#x5F00;pve&#x7684;conf&#x6587;&#x4EF6;&#xFF0C;&#x76EE;&#x5F55;&#x4E00;&#x822C;&#x5728;<code>/etc/pve/qemu-server</code>&#x4E2D;&#xFF0C;&#x6587;&#x4EF6;&#x540D;&#x662F;<code>$&#x865A;&#x62DF;&#x673A;ID.conf</code>&#xFF0C;&#x5728;&#x91CC;&#x9762;&#x6DFB;&#x52A0;&#x5982;&#x4E0B;&#x4E00;&#x884C;&#xFF1A;</li>
</ol>
<pre><code class="language-bash">args: -chardev socket,id=char0,path=/run/virtiofs-sea.sock -device vhost-user-fs-pci,queue-size=1024,chardev=char0,tag=sea -object memory-backend-file,id=mem,size=6G,mem-path=/dev/shm,share=on -numa node,memdev=mem -m 6G
</code></pre>
<p>&#x5176;&#x4E2D;&#xFF0C;&#x4E24;&#x4E2A;<code>6G</code>&#x6309;&#x7167;&#x9700;&#x8981;&#x8BBE;&#x7F6E;&#xFF0C;&#x5B83;&#x4EEC;&#x7684;&#x5927;&#x5C0F;&#x5176;&#x5B9E;&#x5C31;&#x662F;&#x4F60;&#x8981;&#x7ED9;&#x865A;&#x62DF;&#x673A;&#x7684;&#x5185;&#x5B58;&#x5927;&#x5C0F;&#xFF08;-m&#x4F1A;&#x8986;&#x76D6;pve&#x7684;&#x8BBE;&#x7F6E;&#xFF09;&#x3002;</p>
<p>/run/virtiofs-sea.sock&#x662F;&#x4E0A;&#x9762;virtiofs&#x76D1;&#x542C;&#x7684;sock&#x6587;&#x4EF6;&#x3002;</p>
<p>&#x8FD8;&#x6709;&#x4E00;&#x70B9;&#x662F;&#x8FD9;&#x91CC;&#x8981;&#x7528;<code>/dev/shm</code>&#x505A;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#xFF0C;<code>/dev/shm</code>&#x9ED8;&#x8BA4;&#x662F;&#x7269;&#x7406;&#x5185;&#x5B58;&#x7684;&#x4E00;&#x534A;&#xFF0C;&#x53EF;&#x80FD;&#x4F1A;&#x4E0D;&#x591F;&#x7528;&#xFF0C;&#x53EF;&#x4EE5;&#x5728;fstab&#x4E2D;&#x6DFB;&#x52A0;&#x4E00;&#x884C;<code>tmpfs /dev/shm tmpfs defaults,size=8G 0 0</code>&#x9002;&#x5F53;&#x589E;&#x52A0;shm&#x7684;&#x5927;&#x5C0F;&#x3002;</p>
<p>&#x81F3;&#x4E8E;&#x4E3A;&#x4EC0;&#x4E48;&#x8981;&#x914D;&#x7F6E;&#x8FD9;&#x4E00;&#x5927;&#x5806;&#x5185;&#x5B58;&#x76F8;&#x5173;&#x7684;&#x4E1C;&#x897F;&#xFF08;numa&#x3001;shm&#x4E4B;&#x7C7B;&#x7684;&#xFF09;&#x6211;&#x76EE;&#x524D;&#x4E0D;&#x592A;&#x6E05;&#x695A;&#xFF0C;&#x5B98;&#x65B9;&#x6587;&#x6863;&#x6682;&#x65F6;&#x662F;&#x8FD9;&#x6837;&#x63A8;&#x8350;&#x7684;&#xFF0C;&#x540E;&#x9762;&#x5728;&#x6162;&#x6162;&#x4E86;&#x89E3;&#x5427;&#x3002;</p>
<ol start="3">
<li>&#x6DFB;&#x52A0;&#x5B8C;&#x4E4B;&#x540E;&#x91CD;&#x542F;&#x865A;&#x62DF;&#x673A;&#x5373;&#x53EF;&#x3002;&#x4E0D;&#x51FA;&#x610F;&#x5916;&#x7684;&#x8BDD;&#xFF0C;&#x901A;&#x8FC7;<code>systemctl status virtiofsd</code>&#x53EF;&#x4EE5;&#x770B;&#x5230;daemon&#x6B63;&#x5E38;&#x542F;&#x52A8;&#x4E86;&#xFF0C;&#x65E5;&#x5FD7;&#x91CC;&#x9762;&#x4E5F;&#x4F1A;&#x6709;<code>Client connected, servicing requests</code>&#x7684;&#x63D0;&#x793A;&#x3002;&#x8FD9;&#x65F6;&#x5019;&#x5C31;&#x53EF;&#x4EE5;&#x8FDB;&#x5165;&#x865A;&#x62DF;&#x673A;&#x7CFB;&#x7EDF;&#x6302;&#x8F7D;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x4E86;&#xFF0C;&#x5728;fstab&#x4E2D;&#x6DFB;&#x52A0;&#xFF1A;</li>
</ol>
<pre><code class="language-bash">sea /mnt virtiofs rw 0 0 # &#x8FD9;&#x91CC;&#x7684;sea&#x662F;&#x5728;qemu&#x547D;&#x4EE4;&#x4E2D;&#x8BBE;&#x7F6E;&#x7684;tag&#x540D;
</code></pre>
<p>&#x6267;&#x884C;<code>mount -a</code>&#x8FDB;&#x884C;&#x6302;&#x8F7D;&#x5373;&#x53EF;&#x3002;</p>
<p>&#x8FD9;&#x91CC;&#x8981;&#x6CE8;&#x610F;tag&#x4E0D;&#x80FD;&#x662F;mnt&#xFF0C;&#x4F1A;&#x5BFC;&#x81F4;&#x5404;&#x79CD;&#x62A5;&#x9519;&#xFF0C;&#x4E0D;&#x786E;&#x5B9A;&#x4EC0;&#x4E48;&#x539F;&#x56E0;&#x2026;&#x2026;</p>
<ul>
<li>
<p>&#x53C2;&#x8003;</p>
<p><a href="https://virtio-fs.gitlab.io/howto-qemu.html" title="https://virtio-fs.gitlab.io/howto-qemu.html">https://virtio-fs.gitlab.io/howto-qemu.html</a></p>
<p><a href="https://forum.proxmox.com/threads/virtiofsd-in-pve-8-0-x.130531/" title="https://forum.proxmox.com/threads/virtiofsd-in-pve-8-0-x.130531/">https://forum.proxmox.com/threads/virtiofsd-in-pve-8-0-x.130531/</a></p>
</li>
</ul>
<h2 id="openmediavault">OpenMediaVault</h2>
<p>OpenMediaVault&#x662F;&#x4E00;&#x4E2A;&#x5F00;&#x6E90;&#x7684;nas&#x7CFB;&#x7EDF;&#xFF0C;&#x540C;&#x6837;&#x662F;&#x57FA;&#x4E8E;debian&#x3002;&#x4F7F;&#x7528;&#x4E00;&#x6BB5;&#x65F6;&#x95F4;&#x4E0B;&#x6765;&#x53D1;&#x73B0;&#x5B83;&#x63D0;&#x4F9B;&#x7684;&#x4E3B;&#x8981;&#x529F;&#x80FD;&#x5C31;&#x662F;&#x4E00;&#x4E2A;&#x56FE;&#x5F62;&#x5316;&#x7684;web&#x754C;&#x9762;&#xFF0C;&#x5728;&#x91CC;&#x9762;&#x53EF;&#x4EE5;&#x5FEB;&#x901F;&#x914D;&#x7F6E;&#x90AE;&#x7BB1;&#x3001;&#x5B9A;&#x65F6;&#x4EFB;&#x52A1;&#x3001;nfs&#x3001;samba&#x7B49;&#x670D;&#x52A1;&#xFF0C;&#x4E5F;&#x80FD;&#x67E5;&#x770B;&#x76D1;&#x63A7;&#x7B49;&#xFF0C;&#x66F4;&#x591A;&#x5176;&#x4F59;&#x7684;&#x670D;&#x52A1;&#x8FD8;&#x662F;&#x5F97;&#x81EA;&#x5DF1;&#x914D;&#x7F6E;docker&#x3002;</p>
<p>(&#x4E0B;&#x9762;&#x4F1A;&#x628A;OpenMediaVault&#x7B80;&#x5199;&#x4E3A;omv&#x3002;&#xFF09;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E5%AE%8C%E5%96%84NAS%E6%96%B9%E6%A1%88/images/image_UT2qsISVgc.png" alt loading="lazy"></p>
<h3 id="%E9%97%AE%E9%A2%98">&#x95EE;&#x9898;</h3>
<p>&#x8FD9;&#x91CC;&#x8BB0;&#x5F55;&#x4E00;&#x4E0B;&#x4F7F;&#x7528;&#x65F6;&#x9047;&#x5230;&#x7684;&#x51E0;&#x4E2A;&#x95EE;&#x9898;&#x3002;</p>
<ol>
<li><code>/dev/dri</code>&#x6743;&#x9650;&#x95EE;&#x9898;</li>
</ol>
<p>omv&#x4E2D;&#x9ED8;&#x8BA4;&#x7684;dri&#x76EE;&#x5F55;&#x5185;&#x7684;&#x6743;&#x9650;&#x662F;660&#xFF0C;&#x975E;root&#x975E;render&#x7EC4;&#x7684;&#x7528;&#x6237;&#x65E0;&#x6CD5;&#x8BBF;&#x95EE;&#xFF0C;&#x4F46;&#x662F;&#x7531;&#x4E8E;&#x6211;&#x7684;&#x5F88;&#x591A;&#x670D;&#x52A1;&#x90FD;&#x6CA1;&#x6709;&#x76F4;&#x63A5;&#x4F7F;&#x7528;root&#x8D26;&#x6237;&#x8DD1;&#xFF0C;&#x5728;docker&#x91CC;&#x9762;&#x4E5F;&#x4E0D;&#x65B9;&#x4FBF;&#x52A0;&#x7EC4;&#xFF0C;&#x6240;&#x4EE5;&#x5C31;&#x9700;&#x8981;&#x6539;&#x4E0B;udev&#x7684;&#x89C4;&#x5219;&#xFF0C;&#x5C06;<code>/dev/dri/</code>&#x7684;&#x6743;&#x9650;&#x6539;&#x4E3A;666&#x3002;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E5%AE%8C%E5%96%84NAS%E6%96%B9%E6%A1%88/images/image_IYVTUAndKl.png" alt loading="lazy"></p>
<p>&#x4FEE;&#x6539;&#x6587;&#x4EF6;<code>/lib/udev/rules.d/50-udev-default.rules</code>&#xFF0C;&#x5728;&#x5176;&#x4E2D;&#x627E;renderD*&#x5B57;&#x6837;&#xFF0C;&#x5C06;&#x90A3;&#x4E00;&#x884C;&#x7684;MODE&#x6539;&#x4E3A;&quot;0666&quot;&#xFF0C;&#x7136;&#x540E;&#x91CD;&#x542F;&#x5373;&#x53EF;&#xFF1A;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E5%AE%8C%E5%96%84NAS%E6%96%B9%E6%A1%88/images/image_OyX0uk7O1_.png" alt loading="lazy"></p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E5%AE%8C%E5%96%84NAS%E6%96%B9%E6%A1%88/images/image_Vviyn8quBr.png" alt loading="lazy"></p>
<ol start="2">
<li>&#xFF08;&#x4F7F;&#x7528;9pfs&#x65F6;&#x9047;&#x5230;&#xFF0C;virtiofs&#x4E0D;&#x4F1A;&#x9047;&#x5230;&#xFF09;omv&#x91CC;&#x9762;&#x7684;qbittorrent/nextcloud&#x7B49;&#x670D;&#x52A1;&#x63D0;&#x793A;&#x6253;&#x5F00;&#x6587;&#x4EF6;&#x8FC7;&#x591A;&#xFF0C;&#x4E00;&#x5F00;&#x59CB;&#x4EE5;&#x4E3A;&#x662F;omv&#x91CC;&#x9762;&#x7684;ulimit&#x8BBE;&#x7F6E;&#x7684;&#x592A;&#x5C0F;&#xFF0C;&#x53EA;&#x6709;1024&#xFF0C;&#x4F46;&#x662F;&#x540E;&#x9762;&#x6392;&#x67E5;&#x4E0B;&#x6765;&#xFF0C;&#x53D1;&#x73B0;&#x53EA;&#x6709;&#x901A;&#x8FC7;9pfs&#x6302;&#x8F7D;&#x7684;&#x76EE;&#x5F55;&#x4F1A;&#x51FA;&#x73B0;&#x8FD9;&#x4E2A;&#x95EE;&#x9898;&#xFF0C;&#x6240;&#x4EE5;&#x53BB;&#x67E5;&#x4E86;pve&#x7684;ulimit&#xFF0C;&#x4E5F;&#x53EA;&#x6709;1024&#xFF0C;&#x540C;&#x65F6;&#x67E5;&#x770B;&#x5F53;&#x524D;&#x865A;&#x62DF;&#x673A;&#x7684;kvm&#x8FDB;&#x7A0B;&#x7684;&#x6253;&#x5F00;&#x6587;&#x4EF6;&#x6570;&#x91CF;&#xFF0C;&#x521A;&#x597D;&#x5230;&#x4E86;1024&#xFF0C;&#x6240;&#x4EE5;&#x5B9E;&#x9645;&#x7684;&#x539F;&#x56E0;&#x662F;9pfs&#x8981;&#x4F7F;&#x7528;&#x7684;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;&#x4E0D;&#x591F;&#x4E86;&#x3002;</li>
</ol>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E5%AE%8C%E5%96%84NAS%E6%96%B9%E6%A1%88/images/image_HeL3fxLBPZ.png" alt loading="lazy"></p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E5%AE%8C%E5%96%84NAS%E6%96%B9%E6%A1%88/images/image_zOoFUCFBRr.png" alt loading="lazy"></p>
<p>&#x9700;&#x8981;&#x5728;pve&#x5BBF;&#x4E3B;&#x673A;&#x4E0A;&#x9762;&#x589E;&#x52A0;ulimit&#x6570;&#x91CF;&#xFF1A;</p>
<ol>
<li>&#x6253;&#x5F00;<code>/etc/security/limits.conf</code>&#xFF0C;&#x52A0;&#x4E24;&#x884C;&#x5185;&#x5BB9;&#xFF1A;</li>
</ol>
<pre><code>```text
root - nofile 128000
* - nofile 128000
```
</code></pre>
<ol start="2">
<li>&#x6253;&#x5F00;<code>/etc/systemd/system.conf</code>&#xFF0C;&#x6DFB;&#x52A0;&#x4E00;&#x884C;&#x5185;&#x5BB9;&#xFF1A;</li>
</ol>
<pre><code>```&#x7EAF;&#x6587;&#x672C;
DefaultLimitNOFILE=128000:524288
```
</code></pre>
<p>&#x7136;&#x540E;&#x91CD;&#x542F;pve&#x5373;&#x53EF;&#x3002;</p>
<h1 id="%E8%BD%AF%E4%BB%B6">&#x8F6F;&#x4EF6;</h1>
<p>&#x63A5;&#x4E0B;&#x6765;&#x7B80;&#x5355;&#x4ECB;&#x7ECD;&#x4E0B;&#x7CFB;&#x7EDF;&#x4E2D;&#x90E8;&#x7F72;&#x7684;&#x8F6F;&#x4EF6;&#x4E0E;&#x670D;&#x52A1;&#x3002;</p>
<h2 id="%E5%85%B3%E4%BA%8E%E6%95%B0%E6%8D%AE%E5%AD%98%E6%94%BE">&#x5173;&#x4E8E;&#x6570;&#x636E;&#x5B58;&#x653E;</h2>
<p>&#x76EE;&#x524D;&#x5927;&#x90E8;&#x5206;&#x670D;&#x52A1;&#x90FD;&#x662F;&#x5728;docker&#x4E2D;&#x90E8;&#x7F72;&#x7684;&#xFF0C;docker&#x5BB9;&#x5668;&#x9700;&#x8981;&#x4FDD;&#x5B58;&#x7684;&#x6570;&#x636E;&#x4E00;&#x822C;&#x4E0D;&#x4F1A;&#x592A;&#x5927;&#xFF0C;&#x76EE;&#x524D;&#x8DD1;&#x7684;8&#x4E2A;&#x5BB9;&#x5668;&#xFF0C;&#x9700;&#x8981;&#x4FDD;&#x5B58;&#x548C;&#x5907;&#x4EFD;&#x7684;&#x6570;&#x636E;&#x603B;&#x5171;&#x4E5F;&#x5C31;4G&#xFF0C;&#x5176;&#x4E2D;&#x5927;&#x5934;&#x662F;nextcloud&#x548C;jellyfin&#x7684;&#x6570;&#x636E;&#x5E93;&#xFF0C;&#x6240;&#x4EE5;&#x5C06;&#x8FD9;&#x4E9B;&#x6570;&#x636E;&#x90FD;&#x653E;&#x5230;&#x56FA;&#x6001;&#x4E0A;&#xFF0C;&#x4E0D;&#x4F1A;&#x6709;&#x591A;&#x5C11;&#x5B58;&#x50A8;&#x538B;&#x529B;&#xFF0C;&#x8FD8;&#x80FD;&#x663E;&#x8457;&#x63D0;&#x9AD8;&#x8FD9;&#x4E9B;&#x670D;&#x52A1;&#x7684;&#x8BBF;&#x95EE;&#x901F;&#x5EA6;&#x3002;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E5%AE%8C%E5%96%84NAS%E6%96%B9%E6%A1%88/images/image_RXgwutCmpj.png" alt loading="lazy"></p>
<p>&#x81F3;&#x4E8E;&#x5A92;&#x4F53;&#x6587;&#x4EF6;&#x3001;&#x7F51;&#x76D8;&#x5185;&#x5BB9;&#x6587;&#x4EF6;&#x7B49;&#xFF0C;&#x5219;&#x653E;&#x5230;&#x673A;&#x68B0;&#x76D8;&#x4E0A;&#x9762;&#xFF0C;&#x901F;&#x5EA6;&#x901A;&#x5E38;&#x4E0D;&#x4F1A;&#x5F71;&#x54CD;&#x592A;&#x591A;&#x3002;</p>
<h2 id="nginx%E5%92%8C%E5%9F%9F%E5%90%8D">nginx&#x548C;&#x57DF;&#x540D;</h2>
<ul>
<li><strong>&#x8DD1;&#x5728;docker&#x4E2D;&#xFF0C;&#x4EE3;&#x7406;omv&#x7684;&#x4E3B;&#x9875;&#x3002;</strong> omv&#x9ED8;&#x8BA4;&#x6709;&#x81EA;&#x5DF1;&#x7684;nginx&#xFF0C;&#x4E0D;&#x8FC7;&#x662F;&#x5728;omv&#x5BBF;&#x4E3B;&#x673A;&#x4E0A;&#xFF0C;&#x4E0D;&#x65B9;&#x4FBF;&#x7BA1;&#x7406;&#xFF0C;&#x56E0;&#x6B64;&#x6211;&#x628A;omv&#x7684;nginx&#x76D1;&#x542C;&#x5230;&#x4E86;&#x5176;&#x4ED6;&#x7AEF;&#x53E3;&#x4E0A;&#xFF0C;&#x7136;&#x540E;&#x5355;&#x72EC;&#x8DD1;&#x4E86;&#x4E2A;nginx&#x5BB9;&#x5668;&#xFF0C;&#x7528;&#x5BB9;&#x5668;&#x91CC;&#x9762;&#x7684;nginx&#x505A;&#x4E3B;&#x670D;&#x52A1;&#x5668;&#xFF0C;nextcloud&#x3001;jellyfin&#x4EE5;&#x53CA;omv&#x7B49;&#x670D;&#x52A1;&#x8DD1;&#x5728;&#x8FD9;&#x4E2A;&#x670D;&#x52A1;&#x540E;&#x9762;&#x3002;</li>
</ul>
<h2 id="certbotddns">certbot/ddns</h2>
<ul>
<li>&#x81EA;&#x5DF1;&#x7528;python&#x9020;&#x7684;&#x8F6E;&#x5B50;&#xFF0C;&#x652F;&#x6301;&#x963F;&#x91CC;&#x7684;dns&#x670D;&#x52A1;&#xFF0C;&#x5B9A;&#x65F6;&#x68C0;&#x67E5;&#x6765;&#x5B9E;&#x73B0;ddns&#x3002;</li>
<li>&#x8BC1;&#x4E66;&#x66F4;&#x65B0;&#x5219;&#x4F7F;&#x7528;certbot-cli&#x7684;hook&#x5B8C;&#x6210;dns-challenge&#xFF0C;&#x8FD0;&#x884C;&#x4E00;&#x904D;&#x4E4B;&#x540E;&#xFF0C;certbot&#x53EF;&#x4EE5;&#x81EA;&#x5DF1;&#x8BB0;&#x4E0B;&#x547D;&#x4EE4;&#xFF0C;&#x7279;&#x522B;&#x65B9;&#x4FBF;&#x3002;</li>
</ul>
<pre><code class="language-bash">root@nas ~/d/ddns cat certbot-cert.sh | tail -n 10
sudo certbot -d $DOMAIN --manual \
    --preferred-challenges dns \
    --renew-by-default \
    certonly \
    --manual-auth-hook &quot;$PWD/certbot-hook.py -c $ALI_CONFIG&quot; \
    --manual-cleanup-hook &quot;$PWD/certbot-hook.py -c $ALI_CONFIG&quot; \
    --cert-name $DOMAIN \
    --non-interactive \
    --agree-tos --email xxx

root@nas ~/d/ddns cat certbot-hook.py | tail -n 15 | head -n 11
    init_ali_client(config[&apos;access_key&apos;], config[&apos;access_key_secret&apos;])

    is_cleanup = os.environ.get(&apos;CERTBOT_AUTH_OUTPUT&apos;, None) is not None
    domain = &apos;_acme-challenge.&apos; + os.environ[&apos;CERTBOT_DOMAIN&apos;]
    value = os.environ[&apos;CERTBOT_VALIDATION&apos;]
    if not is_cleanup:
        update_dns_record(domain, value, allow_add=True, type_=&apos;TXT&apos;)
        print(f&apos;updated record for domain {domain}&apos;)
    else:
        delete_dns_record(domain=domain, type_=&apos;TXT&apos;)
        print(f&apos;deleted record for domain {domain}&apos;)
</code></pre>
<h2 id="pt%E6%9C%8D%E5%8A%A1%EF%BC%9Aqbittorrent">PT&#x670D;&#x52A1;&#xFF1A;qbittorrent</h2>
<h2 id="%E5%AA%92%E4%BD%93%E5%BA%93%EF%BC%9Ajellyfin-plex">&#x5A92;&#x4F53;&#x5E93;&#xFF1A;<s>Jellyfin</s> Plex</h2>
<h2 id="%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86%E4%B8%8E%E5%85%B1%E4%BA%AB%EF%BC%9Asamba-nfs-nextcloud">&#x6587;&#x4EF6;&#x7BA1;&#x7406;&#x4E0E;&#x5171;&#x4EAB;&#xFF1A;samba + nfs + nextcloud</h2>
<h2 id="%E6%96%87%E4%BB%B6%E5%90%8C%E6%AD%A5">&#x6587;&#x4EF6;&#x540C;&#x6B65;</h2>
<ul>
<li>Syncthing</li>
</ul>
<h2 id="email">Email</h2>
<ul>
<li>&#x963F;&#x91CC;&#x4E91;&#x90AE;&#x7BB1;+&#x81EA;&#x5B9A;&#x4E49;&#x57DF;&#x540D;</li>
</ul>
<h2 id="%E7%9B%91%E6%8E%A7%EF%BC%9Agraphite%E9%87%87%E9%9B%86%E6%95%B0%E6%8D%AE%EF%BC%8Cgrafana%E5%B1%95%E7%A4%BA%E6%95%B0%E6%8D%AE">&#x76D1;&#x63A7;&#xFF1A;graphite&#x91C7;&#x96C6;&#x6570;&#x636E;&#xFF0C;grafana&#x5C55;&#x793A;&#x6570;&#x636E;</h2>
<ul>
<li>&#x90E8;&#x7F72;&#x5230;&#x53E6;&#x5916;&#x4E00;&#x53F0;&#x865A;&#x62DF;&#x673A;&#x4E0A;&#xFF0C;&#x907F;&#x514D;nas&#x7CFB;&#x7EDF;&#x6302;&#x6389;&#x7684;&#x95EE;&#x9898;</li>
</ul>
<h1 id="%E5%A4%87%E4%BB%BD">&#x5907;&#x4EFD;</h1>
<h2 id="%E5%AE%9A%E6%97%B6%E5%A4%87%E4%BB%BD">&#x5B9A;&#x65F6;&#x5907;&#x4EFD;</h2>
<ul>
<li><s>rsync&#x5907;&#x4EFD;&#x547D;&#x4EE4;&#xFF1A;~~~~<code>rsync -r --links /root/docker /mnt/sea/docker-backup/ --exclude &apos;docker/qbittorrent/data/config/qBittorrent/ipc-socket&apos;</code>~~~~&#xFF0C;&#x5C06;&#x547D;&#x4EE4;&#x6DFB;&#x52A0;&#x5230;crontab&#x4E2D;&#x5373;&#x53EF;&#x3002;&#x5907;&#x4EFD;&#x6240;&#x9700;&#x8981;&#x7684;&#x65F6;&#x95F4;&#x6BD4;&#x8F83;&#x957F;&#xFF0C;&#x901A;&#x5E38;&#x5F97;&#x56DB;&#x4E94;&#x5206;&#x949F;&#x7684;&#x6837;&#x5B50;&#x3002;&#x5907;&#x4EFD;&#x671F;&#x95F4;&#xFF0C;CPU&#x5360;&#x7528;&#x5927;&#x6982;&#x5728;10%-20%&#xFF0C;&#x4E3B;&#x8981;&#x5E94;&#x8BE5;&#x662F;rsync&#x5728;&#x6821;&#x9A8C;&#x6570;&#x636E;&#x3002;&#x8003;&#x8651;&#x5230;&#x76EE;&#x524D;&#x8BBE;&#x7F6E;&#x7684;&#x6BCF;&#x5468;&#x6267;&#x884C;&#x4E00;&#x6B21;&#xFF0C;&#x8FD9;&#x4E2A;&#x901F;&#x5EA6;&#x4E0E;CPU&#x4F7F;&#x7528;&#x7387;&#x8FD8;&#x53EF;&#x4EE5;&#x63A5;&#x53D7;&#x3002;</s></li>
<li>zip&#x5907;&#x4EFD;&#x547D;&#x4EE4;&#xFF1A;<code>zip -ryq /mnt/sea/docker-backup.zip /root/docker/ -x &apos;docker/qbittorrent/data/config/qBittorrent/ipc-socket&apos;</code>&#x3002;&#x5207;&#x6362;&#x5230;zip&#x7684;&#x539F;&#x56E0;&#x662F;&#x65B9;&#x4FBF;&#x4E0A;&#x4F20;&#x5230;&#x5BF9;&#x8C61;&#x5B58;&#x50A8;&#x3001;&#x7F51;&#x76D8;&#x7B49;&#x5730;&#x65B9;&#xFF0C;&#x540C;&#x65F6;&#x4E5F;&#x80FD;&#x538B;&#x7F29;&#x4E00;&#x6B21;&#xFF0C;&#x51CF;&#x5C0F;&#x4E00;&#x4E9B;&#x4F53;&#x79EF;&#x3002;&#x800C;&#x4E14;&#x4F7F;&#x7528;&#x65F6;&#x53D1;&#x73B0;zip&#x7684;<code>-f</code>&#x9009;&#x9879;&#x589E;&#x91CF;&#x66F4;&#x65B0;&#x65F6;&#xFF0C;&#x901F;&#x5EA6;&#x8981;&#x6BD4;rsync&#x5FEB;&#x4E0D;&#x5C11;&#xFF0C;&#x5927;&#x6982;30s&#x5DE6;&#x53F3;&#x5C31;&#x53EF;&#x4EE5;&#x7ED3;&#x675F;&#x8FD0;&#x884C;&#xFF0C;&#x4E0D;&#x8FC7;&#x8FD0;&#x884C;&#x65F6;&#x7684;CPU&#x4F7F;&#x7528;&#x7387;&#x5C31;&#x6BD4;&#x8F83;&#x9AD8;&#xFF0C;&#x5927;&#x6982;&#x5728;50%&#x5DE6;&#x53F3;&#x3002;&#x7406;&#x8BBA;&#x4E0A;&#xFF0C;&#x5982;&#x679C;&#x4F7F;&#x7528;<code>-0</code>&#x9009;&#x9879;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x4E0D;&#x538B;&#x7F29;&#x7684;&#x8BDD;&#xFF0C;&#x901F;&#x5EA6;&#x5E94;&#x8BE5;&#x53EF;&#x4EE5;&#x66F4;&#x5FEB;&#x4E00;&#x4E9B;&#x3002;</li>
</ul>
<h2 id="%E9%9C%80%E8%A6%81%E5%A4%87%E4%BB%BD%E7%9A%84%E6%95%B0%E6%8D%AE">&#x9700;&#x8981;&#x5907;&#x4EFD;&#x7684;&#x6570;&#x636E;</h2>
<ul>
<li>docker&#x6570;&#x636E;</li>
</ul>
<h1 id="%E7%BD%91%E7%BB%9C">&#x7F51;&#x7EDC;</h1>
<ul>
<li>openwrt</li>
</ul>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[使用Firefox替换Chrome]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h1 id="%E4%BD%BF%E7%94%A8firefox%E6%9B%BF%E6%8D%A2chrome">&#x4F7F;&#x7528;Firefox&#x66FF;&#x6362;Chrome</h1>
<p>&#x524D;&#x6BB5;&#x65F6;&#x95F4;&#x6709;&#x70B9;&#x5FD9;&#xFF0C;&#x7ECF;&#x5E38;&#x51FA;&#x73B0;&#x597D;&#x51E0;&#x4E2A;Chrome&#x7A97;&#x53E3;&#x7684;&#x6807;&#x7B7E;&#x9875;&#x62E5;&#x6324;&#x5230;&#x53EA;&#x80FD;&#x770B;&#x5230;&#x56FE;&#x6807;&#x548C;&#x51E0;&#x4E2A;&#x5B57;&#x7684;&#x60C5;&#x51B5;&#x3002;&#x4E4B;&#x524D;&#x770B;&#x5230;&#x540C;</p>]]></description><link>https://blog.ykai.cc/shi-yong-firefoxti-huan-chrome/</link><guid isPermaLink="false">64a84156299bf70001cf89ed</guid><category><![CDATA[工具]]></category><category><![CDATA[浏览器]]></category><dc:creator><![CDATA[Yingkai Dang]]></dc:creator><pubDate>Fri, 07 Jul 2023 16:49:25 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h1 id="%E4%BD%BF%E7%94%A8firefox%E6%9B%BF%E6%8D%A2chrome">&#x4F7F;&#x7528;Firefox&#x66FF;&#x6362;Chrome</h1>
<p>&#x524D;&#x6BB5;&#x65F6;&#x95F4;&#x6709;&#x70B9;&#x5FD9;&#xFF0C;&#x7ECF;&#x5E38;&#x51FA;&#x73B0;&#x597D;&#x51E0;&#x4E2A;Chrome&#x7A97;&#x53E3;&#x7684;&#x6807;&#x7B7E;&#x9875;&#x62E5;&#x6324;&#x5230;&#x53EA;&#x80FD;&#x770B;&#x5230;&#x56FE;&#x6807;&#x548C;&#x51E0;&#x4E2A;&#x5B57;&#x7684;&#x60C5;&#x51B5;&#x3002;&#x4E4B;&#x524D;&#x770B;&#x5230;&#x540C;&#x4E8B;&#x4F7F;&#x7528;Edge&#x7684;&#x7EB5;&#x5411;&#x6807;&#x7B7E;&#x9875;&#xFF0C;&#x7EB5;&#x5411;&#x5E03;&#x5C40;&#x80FD;&#x6BD4;&#x8F83;&#x597D;&#x5730;&#x5904;&#x7406;&#x8FD9;&#x79CD;&#x60C5;&#x51B5;&#xFF0C;&#x65E0;&#x8BBA;&#x591A;&#x4E48;&#x62E5;&#x6324;&#xFF0C;&#x81F3;&#x5C11;&#x6807;&#x9898;&#x80FD;&#x770B;&#x5F97;&#x6E05;&#x695A;&#x3002;&#x4F46;&#x662F;&#x5B9E;&#x5728;&#x4E0D;&#x592A;&#x559C;&#x6B22;Edge&#x7684;&#x6EE1;&#x6EE1;&#x8425;&#x9500;&#x5473;&#x9053;&#xFF0C;&#x56E0;&#x6B64;&#x5728;&#x4E00;&#x756A;&#x8C03;&#x7814;&#x4E4B;&#x540E;&#xFF0C;&#x51B3;&#x5B9A;&#x5C1D;&#x8BD5;&#x5207;&#x6362;&#x5230;Firefox&#x3002;</p>
<p>&#x4E4B;&#x524D;&#x5176;&#x5B9E;&#x7528;&#x8FC7;&#x4E00;&#x6BB5;&#x65F6;&#x95F4;&#x7684;Firefox&#xFF0C;&#x5E76;&#x975E;&#x7531;&#x7279;&#x522B;&#x5F3A;&#x70C8;&#x7684;&#x9700;&#x6C42;&#x9A71;&#x52A8;&#xFF0C;&#x4E3B;&#x8981;&#x662F;&#x4E3A;&#x4E86;&#x9003;&#x79BB;Chrome&#x3002;&#x4E0D;&#x8FC7;&#x521A;&#x5165;&#x804C;&#x90A3;&#x4F1A;&#x7531;&#x4E8E;&#x98DE;&#x4E66;&#x4EE5;&#x53CA;&#x5F88;&#x591A;&#x516C;&#x53F8;&#x5185;&#x5E73;&#x53F0;&#x5BF9;Firefox&#x7684;&#x652F;&#x6301;&#x4E0D;&#x592A;&#x597D;&#xFF0C;&#x5BFC;&#x81F4;&#x53C8;&#x6362;&#x56DE;&#x4E86;Chrome&#x3002;&#x800C;&#x8FD9;&#x6B21;&#x5207;&#x6362;&#x5230;Firefox&#x662F;&#x51B2;&#x7740;&#x7528;&#x7740;&#x8212;&#x670D;&#x6765;&#x7684;&#xFF0C;&#x540C;&#x65F6;&#x5728;&#x4F7F;&#x7528;&#x4E86;&#x4E00;&#x6BB5;&#x65F6;&#x95F4;&#x540E;&#xFF0C;&#x53D1;&#x73B0;&#x7ADF;&#x6709;&#x4E00;&#x4E9B;&#x610F;&#x5916;&#x4E4B;&#x559C;&#x3002;&#x4E0D;&#x51FA;&#x95EE;&#x9898;&#x7684;&#x8BDD;&#xFF0C;&#x5728;&#x5F88;&#x957F;&#x65F6;&#x95F4;&#x5185;&#xFF0C;&#x6211;&#x7684;&#x4E3B;&#x529B;&#x6D4F;&#x89C8;&#x5668;&#x90FD;&#x4F1A;&#x662F;Firefox&#x3002;</p>
<p>&#x8FD9;&#x91CC;&#x603B;&#x7ED3;&#x4E0B;&#x76EE;&#x524D;&#x53D1;&#x73B0;&#x7684;Firefox&#x7684;&#x4E00;&#x4E9B;&#x4F18;&#x52BF;&#x3002;</p>
<h2 id="%E4%B8%80%E3%80%81%E6%A0%91%E7%8A%B6%E6%A0%87%E7%AD%BE%E9%A1%B5">&#x4E00;&#x3001;&#x6811;&#x72B6;&#x6807;&#x7B7E;&#x9875;</h2>
<p>&#x9996;&#x5148;&#x5C31;&#x662F;&#x524D;&#x9762;&#x63D0;&#x5230;&#x7684;&#x7EB5;&#x5411;&#x6807;&#x7B7E;&#x9875;&#x4E86;&#x3002;</p>
<p>Firefox&#x7684;&#x7EB5;&#x5411;&#x6807;&#x7B7E;&#x9875;&#x4E3B;&#x8981;&#x662F;&#x901A;&#x8FC7;<code>Tree Style Tab</code>&#x8FD9;&#x4E2A;&#x63D2;&#x4EF6;&#x63D0;&#x4F9B;&#x7684;&#xFF08;<a href="https://addons.mozilla.org/zh-CN/firefox/addon/tree-style-tab/" title="&#x5546;&#x5E97;&#x94FE;&#x63A5;">&#x5546;&#x5E97;&#x94FE;&#x63A5;</a>&#xFF09;&#x3002;&#x5148;&#x4E0A;&#x76EE;&#x524D;&#x7684;&#x6548;&#x679C;&#x56FE;&#xFF1A;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E4%BD%BF%E7%94%A8Firefox%E6%9B%BF%E6%8D%A2Chrome/%E4%BD%BF%E7%94%A8Firefox%E6%9B%BF%E6%8D%A2Chrome/images/image_y2JrSfLZzZ.png" alt="KDE Plasma&#x684C;&#x9762;&#x4E0B;&#x7684;Firefox" title="KDE Plasma&#x684C;&#x9762;&#x4E0B;&#x7684;Firefox" loading="lazy"></p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E4%BD%BF%E7%94%A8Firefox%E6%9B%BF%E6%8D%A2Chrome/%E4%BD%BF%E7%94%A8Firefox%E6%9B%BF%E6%8D%A2Chrome/images/image_JyrDdxbvQT.png" alt="macOS&#x684C;&#x9762;&#x4E0B;&#x7684;Firefox" title="macOS&#x684C;&#x9762;&#x4E0B;&#x7684;Firefox" loading="lazy"></p>
<p>&#x53EF;&#x4EE5;&#x770B;&#x5230;&#xFF0C;&#x8FD9;&#x4E2A;&#x63D2;&#x4EF6;&#x63D0;&#x4F9B;&#x7684;&#x5E76;&#x4E0D;&#x53EA;&#x6709;&#x7EB5;&#x5411;&#x6807;&#x7B7E;&#x9875;&#xFF0C;&#x800C;&#x662F;&#x201C;&#x6811;&#x72B6;&#x201D;&#x6807;&#x7B7E;&#x9875;&#xFF0C;&#x8FD9;&#x4E5F;&#x662F;&#x5B83;&#x540D;&#x5B57;&#x7684;&#x7531;&#x6765;&#x3002;&#x8FD9;&#x4E2A;&#x6807;&#x7B7E;&#x6811;&#x7684;&#x57FA;&#x672C;&#x521B;&#x5EFA;&#x903B;&#x8F91;&#x4E3A;&#xFF1A;<strong>&#x5982;&#x679C;&#x70B9;&#x51FB;&#x9875;&#x9762;A&#x7684;&#x67D0;&#x4E2A;&#x94FE;&#x63A5;&#xFF0C;&#x6253;&#x5F00;&#x4E86;&#x65B0;&#x9875;&#x9762;B&#xFF0C;&#x90A3;&#x4E48;B&#x5C31;&#x662F;A&#x7684;&#x5B50;&#x6807;&#x7B7E;</strong>&#x3002;</p>
<p>&#x8FD9;&#x6837;&#x7684;&#x6811;&#x7ED3;&#x6784;&#x6700;&#x5927;&#x7684;&#x597D;&#x5904;&#x5728;&#x4E8E;&#xFF0C;&#x76F8;&#x5173;&#x7684;&#x6807;&#x7B7E;&#x9875;&#x901A;&#x5E38;&#x90FD;&#x4F1A;&#x81EA;&#x52A8;&#x653E;&#x5230;&#x540C;&#x4E00;&#x4E2A;&#x6811;&#x679D;&#x4E0B;&#x9762;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x76F8;&#x5173;&#x7684;&#x4EFB;&#x52A1;&#x4F1A;&#x88AB;&#x81EA;&#x52A8;&#x5206;&#x5230;&#x4E00;&#x7EC4;&#x3002;&#x8FD9;&#x4E00;&#x70B9;&#x5728;&#x5927;&#x91CF;&#x67E5;&#x8D44;&#x6599;&#x7684;&#x65F6;&#x5019;&#x7279;&#x522B;&#x597D;&#x7528;&#xFF0C;&#x53EF;&#x4EE5;&#x968F;&#x65F6;&#x770B;&#x5230;&#x6574;&#x4F53;&#x67E5;&#x8BE2;&#x7684;&#x8DEF;&#x5F84;&#xFF0C;&#x5728;&#x67D0;&#x6761;&#x67E5;&#x8BE2;&#x8DEF;&#x5F84;&#x4E0D;&#x9700;&#x8981;&#x4E4B;&#x540E;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x4E00;&#x8D77;&#x6298;&#x53E0;&#x6216;&#x8005;&#x5173;&#x6389;&#x3002;</p>
<p>&#x6BD5;&#x7ADF;&#x6211;&#x4EEC;&#x901A;&#x5E38;&#x5728;&#x6D4F;&#x89C8;&#x5668;&#x67E5;&#x8BE2;&#x7684;&#x8FC7;&#x7A0B;&#x90FD;&#x662F;&#x4E00;&#x4E2A;&#x6811;&#x5F62;&#x7684;&#x5DE5;&#x4F5C;&#x8DEF;&#x5F84;&#xFF0C;&#x4F34;&#x968F;&#x7740;&#x94FE;&#x63A5;&#x4E00;&#x5C42;&#x5C42;&#x6253;&#x5F00;&#xFF0C;&#x6807;&#x7B7E;&#x9875;&#x4E5F;&#x5C31;&#x4E0D;&#x65AD;&#x53D8;&#x591A;&#x4E86;&#x3002;&#x7EBF;&#x6027;&#x7684;&#x6807;&#x7B7E;&#x7BA1;&#x7406;&#x4F1A;&#x628A;&#x8FD9;&#x4E9B;&#x5C42;&#x7EA7;&#x62CD;&#x5E73;&#xFF0C;&#x76F8;&#x5F53;&#x4E8E;&#x505A;&#x4E86;&#x4E2A;&#x62D3;&#x6251;&#x6392;&#x5E8F;&#xFF0C;&#x8FD9;&#x70B9;&#x5176;&#x5B9E;&#x4E0E;&#x4EBA;&#x7684;&#x601D;&#x8DEF;&#x662F;&#x6709;&#x6240;&#x51B2;&#x7A81;&#x7684;&#xFF1B;&#x800C;&#x6811;&#x72B6;&#x6807;&#x7B7E;&#x7BA1;&#x7406;&#x53EF;&#x4EE5;&#x505A;&#x5230;&#x4E0D;&#x7834;&#x574F;&#x8FD9;&#x4E9B;&#x5C42;&#x7EA7;&#xFF0C;&#x4E00;&#x5B9A;&#x7A0B;&#x5EA6;&#x4E0A;&#x53EF;&#x4EE5;&#x5BF9;&#x5DE5;&#x4F5C;&#x65F6;&#x7684;&#x601D;&#x7EF4;&#x7ED3;&#x6784;&#x8D77;&#x5230;&#x8F85;&#x52A9;&#x4F5C;&#x7528;&#x3002;</p>
<blockquote>
<p>&#x6807;&#x7B7E;&#x9875;&#x7684;&#x7ED3;&#x6784;&#x4E00;&#x5B9A;&#x7A0B;&#x5EA6;&#x4E0A;&#x4F53;&#x73B0;&#x7684;&#x662F;&#x5DE5;&#x4F5C;&#x5B66;&#x4E60;&#x4E2D;&#x7684;&#x601D;&#x7EF4;&#x7ED3;&#x6784;&#xFF0C;&#x6BD4;&#x5982;&#x201C;&#x6B63;&#x5728;&#x505A;&#x51E0;&#x4EF6;&#x4E8B;&#x201D;&#x3001;&#x201C;&#x4E8B;&#x60C5;A&#x6D89;&#x53CA;&#x5230;&#x54EA;&#x4E9B;&#x5E73;&#x53F0;&#x201D;&#x3001;&#x201C;&#x4E8B;&#x60C5;B&#x5982;&#x4F55;&#x7EC6;&#x5206;&#x201D;&#x3001;&#x201C;&#x4E8B;&#x60C5;B&#x548C;C&#x7684;&#x5173;&#x7CFB;&#x201D;&#x7B49;&#x7B49;&#xFF0C;&#x8FD9;&#x4E9B;&#x901A;&#x5E38;&#x90FD;&#x6709;&#x5BF9;&#x5E94;&#x7684;&#x6D4F;&#x89C8;&#x5668;&#x6807;&#x7B7E;&#x9875;&#x3002;</p>
</blockquote>
<p>&#x603B;&#x4E4B;&#xFF0C;&#x4E00;&#x5F00;&#x59CB;&#x6211;&#x53EA;&#x662F;&#x60F3;&#x627E;&#x4E2A;&#x7EB5;&#x5411;&#x6807;&#x7B7E;&#x9875;&#xFF0C;&#x7ED3;&#x679C;&#x5374;&#x53D1;&#x73B0;&#x4E86;&#x6811;&#x72B6;&#x6807;&#x7B7E;&#x9875;&#xFF0C;&#x7B97;&#x662F;&#x610F;&#x5916;&#x4E4B;&#x559C;&#x4E4B;&#x4E00;&#x3002;</p>
<h2 id="%E4%BA%8C%E3%80%81%E5%AE%9A%E5%88%B6ui">&#x4E8C;&#x3001;&#x5B9A;&#x5236;UI</h2>
<p>&#x5982;&#x679C;&#x53EA;&#x662F;&#x88C5;&#x4E0A;&#x4E0A;&#x9762;&#x63D0;&#x5230;&#x7684;&#x6811;&#x72B6;&#x6807;&#x7B7E;&#x9875;&#x63D2;&#x4EF6;&#xFF0C;&#x4F60;&#x4F1A;&#x53D1;&#x73B0;&#x65E7;&#x7684;Firefox&#x81EA;&#x5E26;&#x7684;&#x6807;&#x7B7E;&#x9875;&#x4ECD;&#x65E7;&#x5B58;&#x5728;&#xFF0C;&#x8FD9;&#x4F1A;&#x5BFC;&#x81F4;&#x754C;&#x9762;&#x4FE1;&#x606F;&#x7684;&#x5197;&#x4F59;&#xFF0C;&#x4EE5;&#x53CA;&#x96BE;&#x4EE5;&#x517B;&#x6210;&#x4F7F;&#x7528;&#x6811;&#x72B6;&#x6807;&#x7B7E;&#x7684;&#x4E60;&#x60EF;&#xFF08;&#x4E60;&#x60EF;&#x6027;&#x5730;&#x4F7F;&#x7528;&#x9876;&#x90E8;&#x6807;&#x7B7E;&#x9875;&#xFF09;&#x3002;</p>
<p>&#x597D;&#x5728;Firefox&#x63D0;&#x4F9B;&#x4E86;&#x7279;&#x522B;&#x5F3A;&#x5927;&#x7684;&#x5B9A;&#x5236;&#x80FD;&#x529B;&#xFF0C;&#x53EF;&#x4EE5;&#x5229;&#x7528;&#x8FD9;&#x4E2A;&#x5B9A;&#x5236;&#x80FD;&#x529B;&#x628A;&#x6807;&#x9898;&#x680F;&#x7ED9;&#x9690;&#x85CF;&#x6389;&#x3002;&#x5176;&#x5B9E;Firefox&#x7684;&#x4E3B;&#x754C;&#x9762;&#x672C;&#x8D28;&#x4E0A;&#x5C31;&#x662F;&#x4E2A;H5&#x9875;&#x9762;&#xFF0C;&#x56E0;&#x6B64;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x5B9A;&#x5236;&#x7684;js/css&#x8C03;&#x6574;&#x51E0;&#x4E4E;&#x4EFB;&#x610F;&#x4E00;&#x5904;&#x7EC6;&#x8282;&#x3002;</p>
<p>&#x8FD9;&#x4E2A;&#x5B9A;&#x5236;&#x80FD;&#x529B;&#x4E00;&#x822C;&#x79F0;&#x4F5C;<code>userChrome.css</code>&#xFF0C;&#x53EF;&#x4EE5;&#x53C2;&#x8003;<a href="https://www.userchrome.org/" title="&#x8FD9;&#x4E2A;&#x7F51;&#x7AD9;">&#x8FD9;&#x4E2A;&#x7F51;&#x7AD9;</a>&#xFF08;&#x81F3;&#x4E8E;&#x4E3A;&#x4EC0;&#x4E48;Firefox&#x7684;&#x529F;&#x80FD;&#x540D;&#x91CC;&#x9762;&#x5305;&#x542B;Chrome&#xFF0C;&#x8FD9;&#x6211;&#x5C31;&#x4E0D;&#x662F;&#x5F88;&#x6E05;&#x695A;&#x4E86;&#x1F603;&#xFF09;</p>
<p>&#x5177;&#x4F53;&#x6765;&#x8BF4;&#xFF0C;&#x8981;&#x5B9E;&#x73B0;&#x8FD9;&#x6837;&#x7684;&#x6548;&#x679C;&#xFF08;&#x9690;&#x85CF;&#x539F;&#x6709;Tab&#x680F;&#x3001;&#x9690;&#x85CF;&#x6807;&#x9898;&#x680F;&#xFF09;&#xFF1A;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E4%BD%BF%E7%94%A8Firefox%E6%9B%BF%E6%8D%A2Chrome/%E4%BD%BF%E7%94%A8Firefox%E6%9B%BF%E6%8D%A2Chrome/images/image_y2JrSfLZzZ.png" alt="KDE Plasma&#x684C;&#x9762;&#x4E0B;&#x7684;Firefox" title="KDE Plasma&#x684C;&#x9762;&#x4E0B;&#x7684;Firefox" loading="lazy"></p>
<p>&#x53EA;&#x9700;&#x8981;&#x5728;<code>userChrome.css</code>&#x4E2D;&#x6DFB;&#x52A0;&#x5982;&#x4E0B;&#x4EE3;&#x7801;&#xFF1A;</p>
<pre><code class="language-css">/* &#x8FD9;&#x6BB5;CSS&#x8BF7;&#x4EC5;&#x5728;Linux&#x4E0A;&#x4F7F;&#x7528;&#xFF08;KDE/Gnome&#x7B49;&#xFF09;&#xFF0C;Windows&#x548C;Mac&#x7684;Firefox&#x8868;&#x73B0;&#x4E0D;&#x592A;&#x4E00;&#x6837;&#x3002; */

#tabbrowser-tabs, #sidebar-header {
  visibility: collapse !important;
}

#TabsToolbar {
  display: none;
}

</code></pre>
<p>&#x8FD9;&#x4E9B;CSS&#x4F1A;&#x540C;&#x65F6;&#x9690;&#x85CF;Tab&#x680F;&#x548C;&#x6807;&#x9898;&#x680F;&#xFF0C;&#x56E0;&#x6B64;&#x6700;&#x5C0F;&#x5316;&#x3001;&#x6700;&#x5927;&#x5316;&#x3001;&#x5173;&#x95ED;&#x6309;&#x94AE;&#x4E5F;&#x6CA1;&#x4E86;&#xFF0C;&#x56E0;&#x4E3A;&#x6211;&#x53D1;&#x73B0;&#x6211;&#x5728;&#x65E5;&#x5E38;&#x4F7F;&#x7528;&#x4E2D;&#xFF0C;&#x8FD9;&#x4E09;&#x4E2A;&#x6309;&#x94AE;&#x5E76;&#x4E0D;&#x662F;&#x5FC5;&#x8981;&#x7684;&#xFF1A;</p>
<ul>
<li>&#x5173;&#x95ED;&#x5168;&#x90E8;&#x7684;&#x6309;&#x94AE;&#x7528;&#x7684;&#x65F6;&#x5019;&#x5E76;&#x4E0D;&#x591A;&#xFF0C;&#x53EF;&#x4EE5;&#x7528;<code>Ctrl-Shift-W</code>&#x6216;&#x8005;&#x53F3;&#x952E;&#x4EFB;&#x52A1;&#x680F;&#x5173;&#x95ED;&#x6765;&#x66FF;&#x4EE3;&#x3002;</li>
<li>&#x6700;&#x5C0F;&#x5316;&#x51E0;&#x4E4E;&#x4E0D;&#x4F1A;&#x7528;&#x5230;&#xFF0C;&#x4E00;&#x822C;&#x4F1A;&#x901A;&#x8FC7;&#x65B0;&#x589E;&#x684C;&#x9762;&#x6765;&#x5B9E;&#x73B0;&#x6E05;&#x7406;&#x684C;&#x9762;&#x7684;&#x6548;&#x679C;&#x3002;</li>
<li>&#x6700;&#x5927;&#x5316;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x62D6;&#x52A8;&#x8D34;&#x8FB9;&#xFF08;&#x6211;&#x914D;&#x7F6E;&#x4E86;&#x6309;&#x4F4F;Alt&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x62D6;&#x52A8;&#xFF09;&#xFF0C;&#x6216;&#x8005;&#x53CC;&#x51FB;&#x7A7A;&#x767D;&#x5904;&#x6765;&#x5B9E;&#x73B0;&#xFF08;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x6211;&#x5728;&#x5730;&#x5740;&#x680F;&#x65C1;&#x8FB9;&#x52A0;&#x4E86;&#x4E00;&#x6BB5;&#x7A7A;&#x767D;&#xFF09;&#x3002;</li>
</ul>
<p>&#x5982;&#x679C;&#x4F60;&#x9700;&#x8981;&#x5BF9;Firefox&#x754C;&#x9762;&#x7684;&#x5143;&#x7D20;&#x8FDB;&#x884C;&#x81EA;&#x5B9A;&#x4E49;&#xFF0C;&#x4F60;&#x53EF;&#x80FD;&#x9700;&#x8981;&#x627E;&#x5230;&#x67D0;&#x4E2A;&#x5143;&#x7D20;&#x5BF9;&#x5E94;&#x7684;CSS&#x7C7B;&#x6216;ID&#xFF0C;&#x90A3;&#x4E48;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;<a href="https://firefox-source-docs.mozilla.org/devtools-user/browser_toolbox/index.html" title="Firefox Browser Toolbox">Firefox Browser Toolbox</a>&#x8FD9;&#x4E2A;&#x5DE5;&#x5177;&#xFF0C;&#x5B83;&#x53EF;&#x4EE5;&#x8BA9;&#x4F60;&#x50CF;&#x8C03;&#x8BD5;&#x7F51;&#x9875;&#x4E00;&#x6837;&#x8C03;&#x8BD5;&#x4E3B;&#x754C;&#x9762;&#x3002;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E4%BD%BF%E7%94%A8Firefox%E6%9B%BF%E6%8D%A2Chrome/%E4%BD%BF%E7%94%A8Firefox%E6%9B%BF%E6%8D%A2Chrome/images/image_yo1auROHKw.png" alt="Firefox Browser Toolbox" title="Firefox Browser Toolbox" loading="lazy"></p>
<p>&#x5B9A;&#x5236;UI&#x7B97;&#x662F;&#x610F;&#x5916;&#x4E4B;&#x559C;&#x4E4B;&#x4E8C;&#x3002;</p>
<h2 id="%E4%B8%89%E3%80%81%E5%90%8C%E6%AD%A5%E6%9C%8D%E5%8A%A1">&#x4E09;&#x3001;&#x540C;&#x6B65;&#x670D;&#x52A1;</h2>
<p>&#x53E6;&#x5916;&#x4E00;&#x4E2A;&#x610F;&#x5916;&#x4E4B;&#x559C;&#x5C31;&#x662F;&#x540C;&#x6B65;&#x670D;&#x52A1;&#x4E86;&#x3002;</p>
<p>&#x5373;&#x4F7F;&#x662F;&#x5728;&#x8DEF;&#x7531;&#x5668;&#x900F;&#x660E;&#x4EE3;&#x7406;&#x7684;&#x60C5;&#x51B5;&#x4E0B;&#xFF0C;Chrome&#x540C;&#x6B65;&#x670D;&#x52A1;&#x7684;&#x7A33;&#x5B9A;&#x6027;&#x4ECD;&#x65E7;&#x5DEE;&#x5F97;&#x8981;&#x547D;&#xFF08;&#x53EF;&#x80FD;&#x662F;&#x6211;&#x7684;&#x68AF;&#x5B50;&#x4E0D;&#x7A33;&#xFF09;&#x3002;&#x4F46;Firefox&#x5B8C;&#x5168;&#x4E0D;&#x7528;&#x62C5;&#x5FC3;&#xFF0C;&#x968F;&#x65F6;&#x968F;&#x5730;&#x90FD;&#x53EF;&#x4EE5;&#x591A;&#x8BBE;&#x5907;&#x540C;&#x6B65;&#x3002;</p>
<p>&#x6211;&#x5728;&#x5BFC;&#x822A;&#x533A;&#x57DF;&#x653E;&#x7F6E;&#x4E86;&#x4E00;&#x4E2A;&#x540C;&#x6B65;&#x83DC;&#x5355;&#x7684;&#x5165;&#x53E3;&#xFF0C;&#x70B9;&#x51FB;&#x5373;&#x53EF;&#x770B;&#x5230;&#x5176;&#x4ED6;&#x8BBE;&#x5907;&#x7684;&#x6807;&#x7B7E;&#x9875;&#xFF1A;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E4%BD%BF%E7%94%A8Firefox%E6%9B%BF%E6%8D%A2Chrome/%E4%BD%BF%E7%94%A8Firefox%E6%9B%BF%E6%8D%A2Chrome/images/image_pwKmGdqnnf.png" alt loading="lazy"></p>
<h2 id="%E9%97%AE%E9%A2%98">&#x95EE;&#x9898;</h2>
<p>&#x5F53;&#x7136;&#xFF0C;&#x4E0E;Chrome&#x76F8;&#x6BD4;&#xFF0C;Firefox&#x8FD8;&#x662F;&#x4F1A;&#x6709;&#x4E00;&#x4E9B;&#x95EE;&#x9898;&#x3002;</p>
<h3 id="%E5%85%BC%E5%AE%B9%E6%80%A7">&#x517C;&#x5BB9;&#x6027;</h3>
<p>&#x9996;&#x5148;&#x5C31;&#x662F;&#x517C;&#x5BB9;&#x6027;&#x3002;</p>
<p>&#x5728;Chrome&#x4F5C;&#x4E3A;&#x6D4F;&#x89C8;&#x5668;&#x9F99;&#x5934;&#x7684;&#x5F53;&#x4E0B;&#xFF0C;&#x5F88;&#x591A;&#x7F51;&#x5740;&#x53EA;&#x4F1A;&#x5728;Chrome&#x4E0B;&#x8FDB;&#x884C;&#x5B8C;&#x6574;&#x7684;&#x6D4B;&#x8BD5;&#xFF0C;&#x5C24;&#x5176;&#x662F;&#x516C;&#x53F8;&#x5185;&#x7684;&#x5E73;&#x53F0;&#xFF0C;&#x56E0;&#x6B64;&#x7ECF;&#x5E38;&#x4F1A;&#x770B;&#x5230;&#x8FD9;&#x6837;&#x7684;&#x63D0;&#x793A;&#xFF1A;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E4%BD%BF%E7%94%A8Firefox%E6%9B%BF%E6%8D%A2Chrome/%E4%BD%BF%E7%94%A8Firefox%E6%9B%BF%E6%8D%A2Chrome/images/image_hH52iYtGMI.png" alt="&#x517C;&#x5BB9;&#x6027;&#x63D0;&#x793A;" title="&#x517C;&#x5BB9;&#x6027;&#x63D0;&#x793A;" loading="lazy"></p>
<p>&#x5B9E;&#x9645;&#x4E0A;&#xFF0C;&#x5728;&#x6211;&#x8FD9;&#x6BB5;&#x65F6;&#x95F4;&#x4F7F;&#x7528;&#x4E4B;&#x540E;&#xFF0C;&#x53D1;&#x73B0;&#x5927;&#x591A;&#x6570;&#x7F51;&#x7AD9;&#x5176;&#x5B9E;&#x4E5D;&#x6210;&#x5DE6;&#x53F3;&#x7684;&#x529F;&#x80FD;&#x90FD;&#x662F;&#x53EF;&#x4EE5;&#x6B63;&#x5E38;&#x5DE5;&#x4F5C;&#x7684;&#xFF0C;&#x56E0;&#x6B64;&#x6211;&#x901A;&#x5E38;&#x4F1A;&#x5C06;&#x8FD9;&#x4E2A;&#x6A2A;&#x5E45;&#x7528;&#x5E7F;&#x544A;&#x5C4F;&#x853D;&#x5668;&#x5C4F;&#x853D;&#x6389;&#x3002;</p>
<p>&#x5F53;&#x7136;&#xFF0C;&#x8FD8;&#x662F;&#x4F1A;&#x6709;&#x95EE;&#x9898;&#xFF0C;&#x6BD4;&#x5982;&#x98DE;&#x4E66;&#x591A;&#x7EF4;&#x8868;&#x683C;&#x4EE5;&#x53CA;&#x98DE;&#x4E66;&#x6587;&#x6863;&#x4E2D;&#x7684;&#x8868;&#x683C;&#x7684;&#x7F16;&#x8F91;&#x4F53;&#x9A8C;&#x5C31;&#x5F88;&#x5DEE;&#x52B2;&#xFF0C;&#x4F1A;&#x51FA;&#x73B0;&#x83AB;&#x540D;&#x8FD4;&#x56DE;&#x9876;&#x90E8;&#x3001;&#x4E0D;&#x663E;&#x793A;&#x5149;&#x6807;&#x7684;&#x95EE;&#x9898;&#x3002;&#x4E0D;&#x8FC7;&#x8FD9;&#x4E9B;&#x573A;&#x666F;&#x76EE;&#x524D;&#x6211;&#x4F7F;&#x7528;&#x7684;&#x4E0D;&#x662F;&#x5F88;&#x591A;&#xFF0C;&#x6682;&#x65F6;&#x53EF;&#x4EE5;&#x63A5;&#x53D7;&#xFF0C;&#x4F46;&#x8FD8;&#x662F;&#x9700;&#x8981;&#x4E00;&#x4E2A;<code>Chromium</code>&#x4F5C;&#x4E3A;&#x5907;&#x7528;&#xFF0C;&#x4EE5;&#x9632;&#x4E0D;&#x65F6;&#x4E4B;&#x9700;&#x3002;</p>
<h3 id="%E7%A8%B3%E5%AE%9A%E6%80%A7%E4%B8%8Ebug">&#x7A33;&#x5B9A;&#x6027;&#x4E0E;Bug</h3>
<p>&#x53E6;&#x5916;&#x4E00;&#x4E2A;&#x662F;&#x95EE;&#x9898;&#x662F;&#x7A33;&#x5B9A;&#x6027;&#x3002;</p>
<ul>
<li>Firefox&#x5076;&#x5C14;&#x4F1A;&#x6709;&#x6807;&#x7B7E;&#x9875;&#x4E0D;&#x52A0;&#x8F7D;&#x7684;&#x95EE;&#x9898;&#xFF0C;&#x4E0D;&#x8FC7;&#x51E0;&#x7387;&#x5F88;&#x4F4E;&#xFF0C;&#x76EE;&#x524D;&#x53EA;&#x9047;&#x5230;&#x4E00;&#x4E24;&#x6B21;&#x3002;</li>
<li>Firefox&#x64AD;&#x653E;B&#x7AD9;&#x89C6;&#x9891;&#x4F1A;&#x5728;&#x6700;&#x540E;&#x4E00;&#x4E24;&#x79D2;&#x5361;&#x4F4F;&#xFF0C;&#x7136;&#x540E;&#x91CD;&#x64AD;&#x4E00;&#x6B21;&#x3002;</li>
<li>Firefox&#x6709;&#x65F6;&#x4F1A;&#x51FA;&#x73B0;&#x6BD4;&#x8F83;&#x4E25;&#x91CD;&#x7684;&#x5185;&#x5B58;&#x6CC4;&#x6F0F;&#xFF0C;&#x80FD;&#x5403;&#x6389;10G+&#x7684;&#x5185;&#x5B58;&#xFF0C;&#x9700;&#x8981;&#x5173;&#x6389;&#x5168;&#x90E8;&#x6807;&#x7B7E;&#x9875;&#x4E4B;&#x540E;&#x624D;&#x80FD;&#x6062;&#x590D;&#x3002;
<blockquote>
<p>2023.7.16&#x66F4;&#x65B0;&#xFF1A;<br>
&#x76EE;&#x524D;&#x4F7F;&#x7528;&#x7684;&#x5F00;&#x53D1;&#x7248; Firefox 116.0b2 &#x7248;&#x672C;&#x4F3C;&#x4E4E;&#x5DF2;&#x7ECF;&#x89E3;&#x51B3;&#x6389;&#x8FD9;&#x4E2A;&#x95EE;&#x9898;&#x4E86;&#xFF0C;&#x6CA1;&#x518D;&#x51FA;&#x73B0;&#x3002;</p>
</blockquote>
</li>
</ul>
<p>&#x603B;&#x4E4B;&#x5C31;&#x662F;&#x6709;&#x4E00;&#x4E9B;&#x5C0F;&#x95EE;&#x9898;&#xFF0C;&#x76EE;&#x524D;&#x5F71;&#x54CD;&#x4E0D;&#x662F;&#x5F88;&#x5927;&#xFF0C;&#x6682;&#x65F6;&#x53EF;&#x4EE5;&#x63A5;&#x53D7;&#xFF0C;&#x7B49;&#x540E;&#x7EED;&#x66F4;&#x65B0;&#x4FEE;&#x590D;&#x3002;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[FFmpeg命令行]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h2 id="%E7%AE%80%E4%BB%8B">&#x7B80;&#x4ECB;</h2>
<p>FFmpeg&#x662F;&#x76EE;&#x524D;&#x4F7F;&#x7528;&#x6700;&#x5E7F;&#x6CDB;&#x7684;&#x5F00;&#x6E90;&#x97F3;&#x89C6;&#x9891;&#x5904;&#x7406;&#x5E93;&#xFF0C;&#x5927;&#x591A;&#x6570;&#x7684;&#x591A;&#x5A92;&#x4F53;&#x5E94;&#x7528;&#x90FD;&#x4F1A;&#x6216;&#x591A;&#x6216;&#x5C11;&#x3001;&#x76F4;&#x63A5;&#x6216;&#x95F4;&#x63A5;&#x4F7F;&#x7528;&#x5230;FFmpeg&#x3002;</p>
<p>FFmpeg&#x662F;&#x4E00;</p>]]></description><link>https://blog.ykai.cc/ffmpegming-ling-xing-jian-jie/</link><guid isPermaLink="false">64a086cc299bf70001cf89ba</guid><category><![CDATA[ffmpeg]]></category><category><![CDATA[media]]></category><category><![CDATA[音视频]]></category><category><![CDATA[工具]]></category><dc:creator><![CDATA[Yingkai Dang]]></dc:creator><pubDate>Wed, 01 Mar 2023 16:15:00 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="%E7%AE%80%E4%BB%8B">&#x7B80;&#x4ECB;</h2>
<p>FFmpeg&#x662F;&#x76EE;&#x524D;&#x4F7F;&#x7528;&#x6700;&#x5E7F;&#x6CDB;&#x7684;&#x5F00;&#x6E90;&#x97F3;&#x89C6;&#x9891;&#x5904;&#x7406;&#x5E93;&#xFF0C;&#x5927;&#x591A;&#x6570;&#x7684;&#x591A;&#x5A92;&#x4F53;&#x5E94;&#x7528;&#x90FD;&#x4F1A;&#x6216;&#x591A;&#x6216;&#x5C11;&#x3001;&#x76F4;&#x63A5;&#x6216;&#x95F4;&#x63A5;&#x4F7F;&#x7528;&#x5230;FFmpeg&#x3002;</p>
<p>FFmpeg&#x662F;&#x4E00;&#x4E2A;C&#x5199;&#x7684;&#x9879;&#x76EE;&#xFF0C;&#x901A;&#x5E38;&#x662F;&#x88AB;&#x6309;&#x9700;&#x7F16;&#x8BD1;&#x6210;.so&#xFF0C;&#x7136;&#x540E;&#x5728;&#x4EE3;&#x7801;&#x4E2D;&#x5F15;&#x7528;&#x3002;</p>
<p>&#x9664;&#x4E86;&#x7F16;&#x7A0B;&#x4F7F;&#x7528;&#xFF0C;FFmpeg&#x9879;&#x76EE;&#x4E5F;&#x63D0;&#x4F9B;&#x4E86;&#x4E09;&#x4E2A;&#x7279;&#x522B;&#x597D;&#x7528;&#x7684;&#x547D;&#x4EE4;&#x884C;&#x5DE5;&#x5177;&#xFF1A;<code>ffmpeg</code>&#x3001;<code>ffprobe</code>&#x548C;<code>ffplay</code>&#x3002;&#x8FD9;&#x6B21;&#x4E3B;&#x8981;&#x662F;&#x4ECB;&#x7ECD;&#x5176;&#x4E2D;&#x7684;<code>ffmpeg</code>&#x547D;&#x4EE4;&#x3002;</p>
<p>&#xFF08;&#x4E0B;&#x6587;&#x5C0F;&#x5199;&#x7684;<code>ffmpeg</code>&#x6307;&#x7684;&#x662F;&#x547D;&#x4EE4;&#x884C;&#x5DE5;&#x5177;&#xFF0C;&#x5F00;&#x5934;&#x5927;&#x5199;&#x7684;<code>FFmpeg</code>&#x6307;&#x7684;&#x662F;FFmpeg&#x9879;&#x76EE;&#xFF09;</p>
<h2 id="%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5">&#x57FA;&#x672C;&#x6982;&#x5FF5;</h2>
<p>&#x5728;&#x4ECB;&#x7ECD;&#x4E4B;&#x524D;&#xFF0C;&#x5148;&#x7B80;&#x5355;&#x4ECB;&#x7ECD;&#x4E0B;&#x4E00;&#x4E9B;&#x97F3;&#x89C6;&#x9891;/FFmpeg&#x7684;&#x57FA;&#x672C;&#x6982;&#x5FF5;&#x3002;</p>
<ul>
<li>
<p>&#x50CF;&#x7D20;&#x3001;&#x56FE;&#x50CF;&#x3001;&#x89C6;&#x9891;&#x3001;&#x97F3;&#x9891;&#x3002;</p>
<p>&#x8FD9;&#x4E9B;&#x90FD;&#x662F;&#x5927;&#x5BB6;&#x6240;&#x719F;&#x77E5;&#x7684;&#x6982;&#x5FF5;&#x3002;</p>
<p>&#x5E7F;&#x4E49;&#x4E0A;&#x6765;&#x8BB2;&#xFF0C;&#x6240;&#x6709;&#x7684;&#x5149;&#x5B66;&#x4FE1;&#x53F7;&#x90FD;&#x53EF;&#x4EE5;&#x79F0;&#x4E3A;&#x56FE;&#x50CF;&#x3002;&#x8BA1;&#x7B97;&#x673A;&#x4E16;&#x754C;&#x7684;&#x56FE;&#x50CF;&#x662F;&#x79BB;&#x6563;&#x7684;&#xFF0C;&#x56E0;&#x800C;&#x4E00;&#x5F20;&#x56FE;&#x50CF;&#x7531;&#x8BB8;&#x591A;&#x50CF;&#x7D20;&#x7EC4;&#x6210;&#xFF0C;&#x6BCF;&#x4E2A;&#x50CF;&#x7D20;&#x6709;&#x81EA;&#x5DF1;&#x7684;&#x989C;&#x8272;&#x3002;</p>
<p>&#x5728;&#x65F6;&#x95F4;&#x7EF4;&#x5EA6;&#x4E0A;&#x5C06;&#x4E00;&#x7CFB;&#x5217;&#x56FE;&#x50CF;&#x4E32;&#x8054;&#x8D77;&#x6765;&#x5C31;&#x5F62;&#x6210;&#x4E86;&#x89C6;&#x9891;&#xFF0C;&#x6240;&#x4EE5;&#x539F;&#x59CB;&#x7684;&#x89C6;&#x9891;&#x6570;&#x636E;&#x5F80;&#x5F80;&#x5B58;&#x50A8;&#x4E3A;&#x8FDE;&#x7EED;&#x7684;&#x3001;&#x4E00;&#x5757;&#x4E00;&#x5757;&#x7684;&#x50CF;&#x7D20;&#x6570;&#x636E;&#x3002;</p>
<p>&#x97F3;&#x9891;&#x5219;&#x662F;&#x5728;&#x65F6;&#x95F4;&#x7EF4;&#x5EA6;&#x4E0A;&#x5C06;&#x4E00;&#x7CFB;&#x5217;&#x9707;&#x52A8;&#x4E32;&#x8054;&#x8D77;&#x6765;&#xFF0C;&#x6240;&#x4EE5;&#x539F;&#x59CB;&#x7684;&#x97F3;&#x9891;&#x6570;&#x636E;&#x5F80;&#x5F80;&#x5B58;&#x50A8;&#x4E3A;<a href="https://zh.wikipedia.org/zh-cn/%E8%84%88%E8%A1%9D%E7%B7%A8%E7%A2%BC%E8%AA%BF%E8%AE%8A" title="PCM">PCM</a>&#x6570;&#x636E;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x6BCF;&#x4E00;&#x65F6;&#x523B;&#x7684;&#x9707;&#x52A8;&#x5E45;&#x5EA6;&#x3002;</p>
</li>
<li>
<p>&#x7F16;&#x7801;&#xFF08;encode&#xFF09;&#x548C;&#x89E3;&#x7801;&#xFF08;decode&#xFF09;&#x3002;</p>
<p>&#x8FD9;&#x4E9B;&#x539F;&#x59CB;&#x7684;&#x89C6;&#x9891;&#x548C;&#x97F3;&#x9891;&#x6570;&#x636E;&#x91CF;&#x662F;&#x5F88;&#x5927;&#x7684;&#xFF0C;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x4E00;&#x4E9B;&#x7B97;&#x6CD5;&#x6765;&#x5229;&#x7528;&#x5176;&#x4E2D;&#x7684;&#x4E00;&#x4E9B;&#x91CD;&#x590D;&#x4FE1;&#x606F;&#xFF0C;&#x4ECE;&#x800C;&#x51CF;&#x5C0F;&#x6570;&#x636E;&#x91CF;&#xFF0C;&#x8FD9;&#x4E2A;&#x538B;&#x7F29;&#x8FC7;&#x7A0B;&#x5C31;&#x662F;&#x7F16;&#x7801;&#xFF1B;&#x53CD;&#x8FC7;&#x6765;&#x8FD8;&#x539F;&#x8FD9;&#x4E9B;&#x91CD;&#x590D;&#x4FE1;&#x606F;&#xFF0C;&#x5F97;&#x5230;&#x539F;&#x59CB;&#x7684;&#x89C6;&#x9891;&#x548C;&#x97F3;&#x9891;&#xFF0C;&#x7528;&#x4E8E;&#x64AD;&#x653E;&#x548C;&#x5904;&#x7406;&#xFF0C;&#x8FD9;&#x4E2A;&#x8FC7;&#x7A0B;&#x529F;&#x80FD;&#x5C31;&#x662F;&#x89E3;&#x7801;&#x3002;</p>
<p>&#x4E00;&#x4E9B;&#x7F16;&#x89E3;&#x7801;&#x7B97;&#x6CD5;&#x8BA1;&#x7B97;&#x91CF;&#x5F88;&#x5927;&#xFF0C;&#x5F88;&#x662F;&#x8017;&#x8D39;CPU&#xFF0C;&#x56E0;&#x800C;SOC&#x6216;&#x8005;&#x663E;&#x5361;&#x4F1A;&#x4F7F;&#x7528;&#x4E13;&#x7528;&#x7684;&#x786C;&#x4EF6;&#x5355;&#x5143;&#x5B9E;&#x73B0;&#x4E00;&#x4E9B;&#x5E38;&#x89C1;&#x7B97;&#x6CD5;&#xFF0C;&#x4F7F;&#x7528;&#x8FD9;&#x4E9B;&#x786C;&#x4EF6;&#x80FD;&#x6781;&#x5927;&#x52A0;&#x901F;&#x7F16;&#x89E3;&#x7801;&#x8FC7;&#x7A0B;&#xFF0C;&#x9002;&#x5408;&#x97F3;&#x89C6;&#x9891;&#x64AD;&#x653E;&#x7B49;&#x573A;&#x666F;&#x3002;</p>
<p>&#x4F46;&#x786C;&#x4EF6;&#x5B9E;&#x73B0;&#x7684;&#x53EF;&#x914D;&#x7F6E;&#x6027;&#x8F83;&#x4F4E;&#xFF0C;CPU&#x7F16;&#x89E3;&#x7801;&#x7684;&#x597D;&#x5904;&#x5728;&#x4E8E;&#x53EF;&#x4EE5;&#x5BF9;&#x7F16;&#x89E3;&#x7801;&#x7684;&#x8FC7;&#x7A0B;&#x8FDB;&#x884C;&#x66F4;&#x4E3A;&#x7CBE;&#x7EC6;&#x7684;&#x63A7;&#x5236;&#x3002;</p>
</li>
<li>
<p>&#x5C01;&#x88C5;&#xFF08;mux&#xFF09;&#x548C;&#x89E3;&#x5C01;&#x88C5;&#xFF08;demux&#xFF09;&#x3002;</p>
<p>&#x6709;&#x4E86;&#x591A;&#x4E2A;&#x5A92;&#x4F53;&#x8D44;&#x6E90;&#xFF0C;&#x5C06;&#x4ED6;&#x4EEC;&#x7EC4;&#x5408;&#x8D77;&#x6765;&#x7684;&#x8FC7;&#x7A0B;&#x901A;&#x5E38;&#x53EB;&#x505A;&#x201C;&#x5C01;&#x88C5;&#x201D;&#xFF08;mux&#xFF09;&#xFF1B;&#x53CD;&#x8FC7;&#x6765;&#x7684;&#x8FC7;&#x7A0B;&#x53EB;&#x505A;&#x201C;&#x89E3;&#x5C01;&#x88C5;&#x201D;&#xFF08;demux&#xFF09;&#x3002;&#x6211;&#x4EEC;&#x5E73;&#x65F6;&#x63A5;&#x89E6;&#x5230;&#x7684;&#x5404;&#x79CD;&#x97F3;&#x89C6;&#x9891;&#x6587;&#x4EF6;&#xFF0C;&#x5F80;&#x5F80;&#x90FD;&#x662F;&#x591A;&#x4E2A;&#x8D44;&#x6E90;&#x201C;&#x6DF7;&#x5408;&#x201D;&#x4E4B;&#x540E;&#x7684;&#x4EA7;&#x7269;&#xFF0C;&#x6BD4;&#x5982;&#x4E00;&#x4E2A;&#x7535;&#x5F71;&#x6587;&#x4EF6;&#x53EF;&#x80FD;&#x5305;&#x542B;&#xFF1A;&#x89C6;&#x9891;&#x3001;&#x591A;&#x58F0;&#x9053;&#x548C;&#x591A;&#x8BED;&#x8A00;&#x7684;&#x97F3;&#x9891;&#x3001;&#x5B57;&#x5E55;&#xFF0C;&#x4EE5;&#x53CA;&#x4E00;&#x4E9B;&#x989D;&#x5916;&#x6570;&#x636E;&#xFF0C;&#x5982;&#x5C01;&#x9762;&#x56FE;&#x3001;&#x6807;&#x9898;&#x3001;&#x5E74;&#x4EFD;&#x7B49;&#x7B49;&#x3002;</p>
<p>&#x201C;&#x5C01;&#x88C5;&#x201D;&#x7684;&#x65B9;&#x6CD5;&#x5F80;&#x5F80;&#x548C;&#x6587;&#x4EF6;&#x683C;&#x5F0F;&#x5BF9;&#x5E94;&#xFF0C;&#x5E38;&#x89C1;&#x7684;&#x6BD4;&#x5982;mov&#x6587;&#x4EF6;&#x3001;mp4&#x6587;&#x4EF6;&#x3001;mp3&#x6587;&#x4EF6;&#x3001;ogg&#x6587;&#x4EF6;&#x7B49;&#xFF0C;&#x5B83;&#x4EEC;&#x90FD;&#x53EF;&#x4EE5;&#x7406;&#x89E3;&#x4E3A;&#x7528;&#x6765;&#x5B58;&#x50A8;&#x5A92;&#x4F53;&#x6570;&#x636E;&#x7684;&#x5BB9;&#x5668;&#x3002;</p>
<p>&#x6CE8;&#x610F;&#x548C;&#x7F16;&#x89E3;&#x7801;&#x533A;&#x5206;&#x5F00;&#xFF0C;&#x7F16;&#x89E3;&#x7801;&#x6307;&#x7684;&#x662F;&#x5BF9;&#x4E00;&#x6BB5;&#x5A92;&#x4F53;&#x6570;&#x636E;&#x7684;&#x538B;&#x7F29;&#x3001;&#x89E3;&#x538B;&#x8FC7;&#x7A0B;&#xFF0C;&#x201C;&#x5C01;&#x88C5;&#x201D;&#x6307;&#x7684;&#x662F;&#x5BF9;&#x591A;&#x4E2A;&#x5A92;&#x4F53;&#x6570;&#x636E;&#x6253;&#x5305;&#x7684;&#x8FC7;&#x7A0B;&#xFF0C;&#x5F80;&#x5F80;&#x662F;&#x4E0D;&#x5E26;&#x538B;&#x7F29;&#x80FD;&#x529B;&#x7684;&#x3002;&#x5C31;&#x6BD4;&#x5982;&#x4E00;&#x4E2A;mp4&#x6587;&#x4EF6;&#xFF0C;&#x5B83;&#x7684;&#x89C6;&#x9891;&#x6570;&#x636E;&#x6709;&#x53EF;&#x80FD;&#x662F;h264&#x7F16;&#x7801;&#x7684;&#xFF0C;&#x4E5F;&#x6709;&#x53EF;&#x80FD;&#x662F;h265/hevc&#x7F16;&#x7801;&#x7684;&#xFF1B;&#x867D;&#x7136;&#x7F16;&#x7801;&#x548C;&#x5C01;&#x88C5;&#x6709;&#x4E00;&#x4E9B;&#x5E38;&#x89C1;&#x7684;&#x5BF9;&#x5E94;&#x5173;&#x7CFB;&#xFF0C;&#x4F46;&#x5B83;&#x4EEC;&#x5E76;&#x975E;&#x4E00;&#x56DE;&#x4E8B;&#x3002;</p>
</li>
<li>
<p>&#x8FC7;&#x6EE4;&#x5668;&#xFF08;filter&#xFF09;&#x3002;</p>
<p>&#x8FD9;&#x662F;FFmpeg&#x7684;&#x4E00;&#x4E2A;&#x6982;&#x5FF5;&#x3002;</p>
<p>&#x5BF9;&#x97F3;&#x89C6;&#x9891;&#x7684;&#x5904;&#x7406;&#x5F80;&#x5F80;&#x662F;&#x4ECE;&#x6587;&#x4EF6;&#x4E2D;&#x8BFB;&#x53D6;&#x4F5C;&#x4E3A;&#x8F93;&#x5165;&#xFF0C;&#x5904;&#x7406;&#x4E4B;&#x540E;&#x7136;&#x540E;&#x8F93;&#x51FA;&#x3002;&#x8FD9;&#x4E2A;&#x6570;&#x636E;&#x5904;&#x7406;&#x8FC7;&#x7A0B;&#x7ECF;&#x5E38;&#x6709;&#x4E00;&#x4E9B;&#x60EF;&#x7528;&#x6CD5;&#xFF0C;&#x6BD4;&#x5982;&#x7F29;&#x653E;&#x3001;&#x4F4D;&#x79FB;&#x3001;&#x62FC;&#x63A5;&#x3001;&#x526A;&#x5207;&#xFF0C;&#x6216;&#x662F;&#x8C03;&#x6574;&#x97F3;&#x9891;&#x97F3;&#x91CF;&#x7B49;&#x7B49;&#xFF0C;FFmpeg&#x628A;&#x8FD9;&#x4E9B;&#x60EF;&#x7528;&#x7684;&#x64CD;&#x4F5C;&#x505A;&#x6210;&#x4E00;&#x4E2A;&#x4E2A;&#x7684;filter&#xFF0C;&#x6BCF;&#x4E2A;filter&#x53EF;&#x4EE5;&#x5B9E;&#x73B0;&#x4E00;&#x4E2A;&#x5355;&#x4E00;&#x7684;&#x529F;&#x80FD;&#xFF0C;&#x901A;&#x8FC7;&#x62FC;&#x63A5;&#x8FD9;&#x4E9B;filter&#x5C31;&#x53EF;&#x4EE5;&#x5B9E;&#x73B0;&#x6BD4;&#x8F83;&#x590D;&#x6742;&#x7684;&#x529F;&#x80FD;&#x3002;</p>
</li>
</ul>
<h2 id="%E5%AE%89%E8%A3%85">&#x5B89;&#x88C5;</h2>
<p>FFmpeg&#x63D0;&#x4F9B;&#x4E86;&#x4E09;&#x4E2A;&#x5DE5;&#x5177;&#xFF0C;&#x5206;&#x522B;&#x662F;&#xFF1A;</p>
<ul>
<li><code>ffmpeg</code> &#x6700;&#x4E3B;&#x8981;&#x7684;&#x5DE5;&#x5177;&#xFF0C;&#x7528;&#x4E8E;&#x97F3;&#x89C6;&#x9891;&#x7684;&#x5904;&#x7406;&#xFF1B;</li>
<li><code>ffplay</code> &#x7528;&#x4E8E;&#x64AD;&#x653E;&#x97F3;&#x89C6;&#x9891;&#x6587;&#x4EF6;&#xFF1B;</li>
<li><code>ffprobe</code> &#x7528;&#x4E8E;&#x63A2;&#x6D4B;&#x97F3;&#x89C6;&#x9891;&#x7684;&#x683C;&#x5F0F;&#x548C;&#x7F16;&#x7801;&#x7B49;&#x4FE1;&#x606F;&#x3002;</li>
</ul>
<p>&#x5728;Mac&#x4E0A;&#xFF0C;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;brew&#x5B89;&#x88C5;&#xFF1A;<code>brew install ffmpeg</code>&#x3002;&#x5B8C;&#x6210;&#x540E;&#x5373;&#x53EF;&#x4F7F;&#x7528;&#x4E0A;&#x8FF0;&#x4E09;&#x4E2A;&#x547D;&#x4EE4;&#x3002;</p>
<p>&#x5176;&#x4E2D;<code>ffplay</code>&#x548C;<code>ffprobe</code>&#x6BD4;&#x8F83;&#x7B80;&#x5355;&#xFF0C;&#x540E;&#x9762;&#x76F4;&#x63A5;&#x52A0;&#x6587;&#x4EF6;&#x540D;&#x5C31;&#x884C;&#x3002;&#x4F8B;&#x5982;&#x547D;&#x4EE4;&#x884C;&#x4E0B;&#x8F93;&#x5165;<code>ffplay 1.mp4</code>&#x5C31;&#x53EF;&#x4EE5;&#x64AD;&#x653E;&#x4E00;&#x4E2A;&#x89C6;&#x9891;&#xFF0C;<code>ffprobe 1.mp4</code>&#x5C31;&#x53EF;&#x4EE5;&#x67E5;&#x770B;&#x6587;&#x4EF6;&#x7684;&#x4FE1;&#x606F;&#x3002;</p>
<p>&#x8FD9;&#x91CC;&#x4E3B;&#x8981;&#x8BB2;&#x4E00;&#x4E0B;<code>ffmpeg</code>&#x547D;&#x4EE4;&#x7684;&#x4F7F;&#x7528;&#x65B9;&#x5F0F;&#x3002;</p>
<h2 id="%E5%8F%82%E6%95%B0%E7%BB%93%E6%9E%84">&#x53C2;&#x6570;&#x7ED3;&#x6784;</h2>
<p>ffmpeg&#x7684;&#x5DE5;&#x4F5C;&#x65B9;&#x5F0F;&#x5927;&#x81F4;&#x4E0A;&#x662F;&#x5C06;&#x8F93;&#x5165;&#x7684;&#x5A92;&#x4F53;&#x6587;&#x4EF6;&#x6309;&#x7167;&#x6307;&#x5B9A;&#x7684;&#x65B9;&#x5F0F;&#x5904;&#x7406;&#xFF0C;&#x7136;&#x540E;&#x8F93;&#x51FA;&#x65B0;&#x7684;&#x5A92;&#x4F53;&#x6587;&#x4EF6;&#xFF08;&#x8FD9;&#x91CC;&#x7684;&#x6587;&#x4EF6;&#x4E5F;&#x5305;&#x542B;&#x7F51;&#x7EDC;&#x6D41;&#x7B49;&#xFF09;&#x3002;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/images/image_aj0xiXkv0-.png" alt loading="lazy"></p>
<p>&#x76F8;&#x5E94;&#x5730;&#xFF0C;&#x5B83;&#x7684;&#x53C2;&#x6570;&#x4E5F;&#x4E3B;&#x8981;&#x7531;&#x4E09;&#x90E8;&#x5206;&#x6784;&#x6210;&#xFF1A;&#x8F93;&#x5165;&#x53C2;&#x6570;&#x3001;&#x8F93;&#x51FA;&#x53C2;&#x6570;&#x548C;&#x5168;&#x5C40;&#x53C2;&#x6570;&#x3002;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/images/image__wYLl-UG56.png" alt loading="lazy"></p>
<h3 id="%E5%85%A8%E5%B1%80%E5%8F%82%E6%95%B0">&#x5168;&#x5C40;&#x53C2;&#x6570;</h3>
<p>&#x5176;&#x4E2D;&#xFF0C;&#x5168;&#x5C40;&#x53C2;&#x6570;&#x63A7;&#x5236;<code>ffmpeg</code>&#x7684;&#x4E00;&#x4E9B;&#x5168;&#x5C40;&#x884C;&#x4E3A;&#xFF0C;&#x6BD4;&#x5982;&#x65E5;&#x5FD7;&#x7EA7;&#x522B;&#x3001;&#x7248;&#x672C;&#x4FE1;&#x606F;&#x3001;&#x5185;&#x5B58;&#x9650;&#x5236;&#x7B49;&#x7B49;&#x3002;</p>
<h3 id="%E8%BE%93%E5%85%A5%E5%8F%82%E6%95%B0">&#x8F93;&#x5165;&#x53C2;&#x6570;</h3>
<p>&#x8F93;&#x5165;&#x53C2;&#x6570;&#x7528;&#x6765;&#x6307;&#x5B9A;&#x8F93;&#x5165;&#x6587;&#x4EF6;&#xFF0C;&#x4EE5;&#x53CA;&#x544A;&#x77E5;ffmpeg&#x8F93;&#x5165;&#x6587;&#x4EF6;&#x7684;&#x4E00;&#x4E9B;&#x4FE1;&#x606F;&#x3002;FFmpeg&#x652F;&#x6301;&#x51E0;&#x4E4E;&#x6240;&#x6709;&#x5A92;&#x4F53;&#x683C;&#x5F0F;&#xFF0C;&#x4E00;&#x822C;&#x60C5;&#x51B5;&#x4E0B;&#xFF0C;ffmpeg&#x4F1A;&#x901A;&#x8FC7;&#x6587;&#x4EF6;&#x7684;&#x6269;&#x5C55;&#x540D;&#xFF08;.mp4&#x3001;.mp3&#x7B49;&#xFF09;&#x6765;&#x786E;&#x5B9A;&#x6587;&#x4EF6;&#x7684;&#x5C01;&#x88C5;&#x683C;&#x5F0F;&#xFF0C;&#x8FDB;&#x800C;&#x8BFB;&#x53D6;&#x5185;&#x5BB9;&#x4EE5;&#x83B7;&#x53D6;<strong>&#x7F16;&#x7801;&#x65B9;&#x5F0F;&#x3001;&#x5206;&#x8FA8;&#x7387;&#x3001;&#x901A;&#x9053;&#x6570;&#x3001;&#x50CF;&#x7D20;&#x683C;&#x5F0F;&#x3001;&#x91C7;&#x6837;&#x7387;</strong>&#x7B49;&#x4FE1;&#x606F;&#xFF0C;&#x518D;&#x57FA;&#x4E8E;&#x8FD9;&#x4E9B;&#x4FE1;&#x606F;&#x8FDB;&#x884C;&#x89E3;&#x7801;&#x3002;</p>
<p>&#x6BD4;&#x5982;&#x4E0A;&#x56FE;&#x7684;&#x547D;&#x4EE4;&#xFF0C;&#x6307;&#x5B9A;<code>-i input.mp4</code>&#x4E4B;&#x540E;&#xFF0C;ffmpeg&#x4F1A;&#x628A;input.mp4&#x4F5C;&#x4E3A;&#x8F93;&#x5165;&#xFF0C;&#x540C;&#x65F6;&#x6839;&#x636E;&#x5B83;&#x7684;&#x540E;&#x7F00;.mp4&#x5F97;&#x77E5;&#x4ED6;&#x662F;&#x4E00;&#x4E2A;mp4&#x5C01;&#x88C5;&#x7684;&#x6587;&#x4EF6;&#x3002;</p>
<p>ffmpeg&#x4E5F;&#x652F;&#x6301;&#x591A;&#x4E2A;&#x8F93;&#x5165;&#xFF0C;&#x4F8B;&#x5982;&#x6211;&#x4EEC;&#x73B0;&#x5728;&#x6709;&#x4E00;&#x4E2A;&#x89C6;&#x9891;<code>input.mp4</code>&#x548C;&#x4E00;&#x4E2A;&#x97F3;&#x9891;<code>input.mp3</code>&#xFF0C;&#x8981;&#x5C06;&#x5B83;&#x4FE9;&#x5408;&#x5230;&#x4E00;&#x8D77;&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x540C;&#x65F6;&#x6307;&#x5B9A;&#x4E24;&#x4E2A;&#x6587;&#x4EF6;&#x4F5C;&#x4E3A;&#x8F93;&#x5165;<code>ffmpeg -i input.mp4 -i input.mp3</code>&#xFF0C;&#x8FD9;&#x6837;&#x5728;&#x540E;&#x7EED;&#x7684;&#x8F93;&#x51FA;&#x53C2;&#x6570;&#x4E2D;&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x64CD;&#x4F5C;&#x548C;&#x5408;&#x6210;&#x8FD9;&#x4E24;&#x4E2A;&#x8F93;&#x5165;&#x3002;</p>
<p>&#x5BF9;&#x6BCF;&#x4E00;&#x4E2A;&#x8F93;&#x5165;&#x6587;&#x4EF6;&#xFF0C;&#x90FD;&#x6709;&#x4E00;&#x4E9B;&#x53C2;&#x6570;&#x53EF;&#x4EE5;&#x63A7;&#x5236;&#x8F93;&#x5165;&#x884C;&#x4E3A;&#x3002;</p>
<p>&#x4F8B;&#x5982;&#xFF0C;<code>ffmpeg -t 3s -i input.mp4 -t 2s -i input.mp3</code>&#xFF0C;&#x5176;&#x4E2D;<code>-i input.mp4</code>&#x524D;&#x9762;&#x7684;&#x53C2;&#x6570;&#x7528;&#x6765;&#x63A7;&#x5236;<code>input.mp4</code>&#x8FD9;&#x4E2A;&#x8F93;&#x5165;&#x6587;&#x4EF6;&#xFF0C;&#x5373;<code>-t 3s</code>&#x7684;&#x4F5C;&#x7528;&#x662F;&#x8BA9;ffmpeg&#x53EA;&#x8BFB;&#x53D6;&#x8BE5;&#x6587;&#x4EF6;&#x7684;&#x524D;3&#x79D2;&#xFF1B;&#x540C;&#x7406;&#xFF0C;<code>-i input.mp3</code>&#x524D;&#x9762;&#x7684;<code>-t 2s</code>&#x4F1A;&#x4F7F;&#x5F97;ffmpeg&#x53EA;&#x8BFB;&#x53D6;&#x8BE5;&#x97F3;&#x9891;&#x6587;&#x4EF6;&#x7684;&#x524D;&#x4E24;&#x79D2;&#x3002;</p>
<h4 id="%E8%BE%93%E5%85%A5%E5%BA%8F%E5%88%97%E5%B8%A7">&#x8F93;&#x5165;&#x5E8F;&#x5217;&#x5E27;</h4>
<p>&#x5982;&#x679C;&#x8F93;&#x5165;&#x5E76;&#x975E;&#x666E;&#x901A;&#x6587;&#x4EF6;&#xFF0C;&#x6269;&#x5C55;&#x540D;&#x4E0D;&#x6B63;&#x786E;&#x6216;&#x4E0D;&#x80FD;&#x76F4;&#x63A5;&#x4F7F;&#x7528;&#xFF0C;&#x6216;&#x8005;&#x662F;&#x6587;&#x4EF6;&#x4E2D;&#x4E0D;&#x5305;&#x542B;&#x8FD9;&#x4E9B;&#x4FE1;&#x606F;&#xFF08;&#x5982;raw&#x683C;&#x5F0F;&#x3001;&#x5E8F;&#x5217;&#x5E27;&#x7B49;&#xFF09;&#xFF0C;&#x5C31;&#x9700;&#x8981;&#x6211;&#x4EEC;&#x4F7F;&#x7528;&#x4E00;&#x4E9B;&#x989D;&#x5916;&#x7684;&#x8F93;&#x5165;&#x53C2;&#x6570;&#xFF0C;&#x81EA;&#x884C;&#x6307;&#x5B9A;&#x7F16;&#x7801;&#x3001;&#x5BBD;&#x9AD8;&#x3001;&#x50CF;&#x7D20;&#x683C;&#x5F0F;&#x3001;&#x5E27;&#x7387;&#x7B49;&#x4FE1;&#x606F;&#x3002;</p>
<p>&#x6BD4;&#x5982;&#x5BF9;&#x4E8E;&#x4E00;&#x4E32;&#x5E8F;&#x5217;&#x5E27;&#xFF0C;&#x540D;&#x79F0;&#x5206;&#x522B;&#x4E3A;0001.png&#x3001;0002.png&#x3001;...0100.png&#xFF0C;&#x5982;&#x679C;&#x8981;&#x5C06;&#x8FD9;&#x4E2A;&#x5E8F;&#x5217;&#x5E27;&#x4F5C;&#x4E3A;&#x8F93;&#x5165;&#xFF0C;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x901A;&#x914D;&#x7684;&#x65B9;&#x6CD5;&#xFF1A;<code>ffmpeg -r 20 -i %04d.png</code>&#xFF0C;&#x8FD9;&#x6837;&#x7684;&#x8BDD;&#x8FD9;&#x4E2A;&#x5E8F;&#x5217;&#x5E27;&#x5C31;&#x4F1A;&#x88AB;&#x5F53;&#x4F5C;&#x4E00;&#x4E2A;&#x89C6;&#x9891;&#x8F93;&#x5165;&#xFF1B;&#x5E8F;&#x5217;&#x5E27;&#x81EA;&#x8EAB;&#x4E0D;&#x5305;&#x542B;&#x5E27;&#x7387;&#x4FE1;&#x606F;&#xFF0C;&#x8FD9;&#x884C;&#x547D;&#x4EE4;&#x4E2D;&#x7684;<code>-r 20</code>&#x53C2;&#x6570;&#x5C31;&#x624B;&#x52A8;&#x6307;&#x5B9A;&#x4E86;&#x8BE5;&#x5E8F;&#x5217;&#x5E27;&#x7684;&#x5E27;&#x7387;&#x3002;</p>
<h3 id="%E8%BE%93%E5%87%BA%E5%8F%82%E6%95%B0">&#x8F93;&#x51FA;&#x53C2;&#x6570;</h3>
<p>&#x8F93;&#x5165;&#x53C2;&#x6570;&#x544A;&#x8BC9;&#x4E86;ffmpeg&#x5982;&#x4F55;&#x8BFB;&#x53D6;&#x548C;&#x89E3;&#x7801;&#x5A92;&#x4F53;&#x6587;&#x4EF6;&#xFF0C;&#x89E3;&#x7801;&#x4E4B;&#x540E;&#x5C31;&#x5F97;&#x5230;&#x4E86;&#x539F;&#x59CB;&#x7684;&#x97F3;&#x89C6;&#x9891;&#x6D41;&#xFF1B;&#x63A5;&#x4E0B;&#x6765;&#x9700;&#x8981;&#x6211;&#x4EEC;&#x544A;&#x8BC9;ffmpeg&#x5982;&#x4F55;&#x5904;&#x7406;&#x8FD9;&#x4E9B;&#x97F3;&#x89C6;&#x9891;&#x6D41;&#xFF0C;&#x4EE5;&#x53CA;&#x5982;&#x4F55;&#x8F93;&#x51FA;&#x7ED3;&#x679C;&#xFF0C;&#x8FD9;&#x4E9B;&#x7531;&#x8F93;&#x51FA;&#x53C2;&#x6570;&#x6307;&#x5B9A;&#x3002;</p>
<p>&#x8F93;&#x5165;&#x6587;&#x4EF6;&#x9700;&#x8981;&#x6307;&#x5B9A;<code>-i</code>&#x5F00;&#x5173;&#xFF0C;&#x8F93;&#x51FA;&#x6587;&#x4EF6;&#x5219;&#x4E0D;&#x7528;&#xFF0C;&#x76F4;&#x63A5;&#x5728;&#x547D;&#x4EE4;&#x6700;&#x540E;&#x52A0;&#x4E0A;&#x9700;&#x8981;&#x8F93;&#x51FA;&#x7684;&#x6587;&#x4EF6;&#x5C31;&#x884C;&#xFF0C;&#x4F8B;&#x5982;&#xFF1A;<code>ffmpeg -i input.mp4 output.mov</code>&#x5C31;&#x53EF;&#x4EE5;&#x5C06;mp4&#x6587;&#x4EF6;&#x8F6C;&#x4E3A;mov&#x6587;&#x4EF6;&#x3002;</p>
<p>ffmpeg&#x89E3;&#x6790;&#x8F93;&#x51FA;&#x53C2;&#x6570;&#x7684;&#x903B;&#x8F91;&#x662F;&#xFF1A;&#x5728;&#x6240;&#x6709;<code>-i xxx</code>&#x7ED3;&#x675F;&#x4E4B;&#x540E;&#xFF0C;&#x6BCF;&#x4E2A;&#x4E0D;&#x5E26;&#x5F00;&#x5173;&#x7684;&#x53C2;&#x6570;&#xFF08;&#x901A;&#x5E38;&#x88AB;&#x79F0;&#x505A;Positional&#x53C2;&#x6570;&#xFF09;&#x90FD;&#x662F;&#x8F93;&#x51FA;&#x6587;&#x4EF6;&#xFF1B;&#x6BCF;&#x4E2A;&#x8F93;&#x5165;&#x6587;&#x4EF6;&#x4E4B;&#x524D;&#x7684;&#x6240;&#x6709;&#x5F00;&#x5173;&#x548C;&#x53C2;&#x6570;&#x90FD;&#x662F;&#x5C5E;&#x4E8E;&#x8FD9;&#x4E2A;&#x8F93;&#x5165;&#x6587;&#x4EF6;&#x7684;&#x3002;</p>
<p>&#x4F8B;&#x5982;&#xFF0C;<code>ffmpeg -i input.mp4 -i input2.mp4</code> <code>-r 20 output.mov</code> <code>-f mp4 output.mp4</code>&#xFF0C;&#x5176;&#x4E2D;<code>-r 20</code>&#x5C31;&#x662F;output.mov&#x7684;&#x53C2;&#x6570;&#xFF0C;&#x7528;&#x4E8E;&#x6307;&#x5B9A;&#x8BE5;&#x8F93;&#x51FA;&#x6587;&#x4EF6;&#x5E27;&#x7387;&#x4E3A;20&#xFF1B;&#x800C;<code>-f mp4</code>&#x5C31;&#x5C5E;&#x4E8E;<code>output.mp4</code>&#xFF0C;&#x7528;&#x4E8E;&#x6307;&#x5B9A;&#x8BE5;&#x8F93;&#x51FA;&#x6587;&#x4EF6;&#x7684;&#x5C01;&#x88C5;&#x683C;&#x5F0F;&#x4E3A;mp4&#x3002;</p>
<h3 id="%E4%B8%80%E4%BA%9B%E5%B8%B8%E8%A7%81%E7%9A%84%E5%8F%82%E6%95%B0">&#x4E00;&#x4E9B;&#x5E38;&#x89C1;&#x7684;&#x53C2;&#x6570;</h3>
<p>&#x4E86;&#x89E3;&#x4E86;ffmpeg&#x7684;&#x53C2;&#x6570;&#x7ED3;&#x6784;&#xFF0C;&#x63A5;&#x4E0B;&#x6765;&#x4ECB;&#x7ECD;&#x4E00;&#x4E9B;&#x5E38;&#x7528;&#x7684;&#x53C2;&#x6570;&#xFF1B;&#x8FD9;&#x4E9B;&#x53C2;&#x6570;&#x5F88;&#x5927;&#x4E00;&#x90E8;&#x5206;&#x65E2;&#x53EF;&#x4EE5;&#x4F5C;&#x4E3A;&#x8F93;&#x5165;&#x53C2;&#x6570;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x4F5C;&#x4E3A;&#x8F93;&#x51FA;&#x53C2;&#x6570;&#x3002;</p>
<table>
<thead>
<tr>
<th>&#x540D;&#x79F0;</th>
<th>&#x4F5C;&#x7528;</th>
<th>&#x8F93;&#x5165;/&#x8F93;&#x51FA;</th>
<th>&#x793A;&#x4F8B;</th>
</tr>
</thead>
<tbody>
<tr>
<td>-r</td>
<td>&#x6307;&#x5B9A;<strong>&#x5E27;&#x7387;</strong><br>&#x4F5C;&#x4E3A;&#x8F93;&#x5165;&#x53C2;&#x6570;&#xFF0C;&#x91CD;&#x65B0;&#x89E3;&#x91CA;&#x8F93;&#x5165;&#x6587;&#x4EF6;&#x7684;&#x5E27;&#x7387;&#xFF0C;&#x4F1A;&#x5F71;&#x54CD;&#x64AD;&#x653E;&#x65F6;&#x957F;&#xFF1B;<br>&#x4F5C;&#x4E3A;&#x8F93;&#x51FA;&#x53C2;&#x6570;&#xFF0C;&#x901A;&#x8FC7;&#x4E22;&#x5E27;&#x548C;&#x590D;&#x5236;&#x5E27;&#x63A7;&#x5236;&#x8F93;&#x51FA;&#x5E27;&#x7387;&#xFF0C;&#x4F46;&#x4E0D;&#x4F1A;&#x5F71;&#x54CD;&#x64AD;&#x653E;&#x65F6;&#x957F;&#x3002;</td>
<td>&#x5747;&#x53EF;</td>
<td><code>-r 20&lt;br&gt;</code><br>&#x901A;&#x5E38;&#x4F1A;&#x7528;&#x5728;&#x5E8F;&#x5217;&#x5E27;&#x4F5C;&#x4E3A;&#x8F93;&#x5165;&#x65F6;</td>
</tr>
<tr>
<td>-f</td>
<td><strong>&#x6307;&#x5B9A;&#x5C01;&#x88C5;&#x683C;&#x5F0F;</strong></td>
<td>&#x5747;&#x53EF;</td>
<td><code>-f mp4</code> <code>-f mov</code></td>
</tr>
<tr>
<td>-c</td>
<td><strong>&#x6307;&#x5B9A;&#x7F16;&#x89E3;&#x7801;&#x5668;</strong><br>-c:v &#x6307;&#x5B9A;&#x89C6;&#x9891;&#x7F16;&#x89E3;&#x7801;&#x5668;<br>-c:a &#x6307;&#x5B9A;&#x97F3;&#x9891;&#x7F16;&#x89E3;&#x7801;&#x5668;</td>
<td>&#x5747;&#x53EF;</td>
<td><code>-c h264&lt;br&gt;</code><br><code>-c:v h264&lt;br&gt;</code><br><code>-c:a aac</code></td>
</tr>
<tr>
<td>-b</td>
<td>&#x6307;&#x5B9A;<strong>&#x6BD4;&#x7279;&#x7387;</strong><br>-b:v &#x6307;&#x5B9A;&#x89C6;&#x9891;&#x6BD4;&#x7279;&#x7387;<br>-b:a &#x6307;&#x5B9A;&#x97F3;&#x9891;&#x6BD4;&#x7279;&#x7387;<br>-b &#x6307;&#x5B9A;&#x603B;&#x6BD4;&#x7279;&#x7387;</td>
<td>&#x4EC5;&#x8F93;&#x51FA;</td>
<td><code>-b 2500K&lt;br&gt;</code><br><code>-b:v 2500K&lt;br&gt;</code><br><code>-b:a 100K&lt;br&gt;</code><br>&#x6709;&#x7684;&#x7F16;&#x7801;&#x5668;&#x4E0D;&#x652F;&#x6301;&#xFF0C;&#x4F1A;&#x88AB;&#x5FFD;&#x7565;&#x3002;</td>
</tr>
<tr>
<td>-t</td>
<td><strong>&#x6307;&#x5B9A;&#x65F6;&#x957F;</strong></td>
<td>&#x5747;&#x53EF;</td>
<td><code>-t 20s</code></td>
</tr>
</tbody>
</table>
<p>&#x53C2;&#x6570;&#x8FD8;&#x6709;&#x5F88;&#x591A;&#xFF0C;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;<code>man ffmpeg</code>&#x6216;&#x8005;<a href="https://www.ffmpeg.org/ffmpeg.html" title="&#x5B98;&#x65B9;&#x6587;&#x6863;">&#x5B98;&#x65B9;&#x6587;&#x6863;</a>&#x6309;&#x9700;&#x67E5;&#x770B;&#x3002;</p>
<h3 id="filter">Filter</h3>
<p>&#x9664;&#x4E86;&#x683C;&#x5F0F;&#x3001;&#x5E27;&#x7387;&#x8FD9;&#x4E9B;&#x8F93;&#x51FA;&#x53C2;&#x6570;&#xFF0C;&#x6700;&#x7279;&#x6B8A;&#x7684;&#x53C2;&#x6570;&#x5C31;&#x662F;<code>-filter</code>&#x548C;<code>-filter_complex</code>&#xFF0C;&#x8FD9;&#x4E24;&#x4E2A;&#x53C2;&#x6570;&#x53EF;&#x4EE5;&#x7528;&#x6765;&#x6307;&#x5B9A;&#x8BE5;&#x8F93;&#x51FA;&#x6587;&#x4EF6;&#x8981;&#x4F7F;&#x7528;&#x7684;filter&#x3002;</p>
<p>&#x521A;&#x624D;&#x7B80;&#x5355;&#x4ECB;&#x7ECD;&#x8FC7;&#xFF0C;filter&#x53EF;&#x4EE5;&#x5BF9;&#x97F3;&#x89C6;&#x9891;&#x539F;&#x59CB;&#x6570;&#x636E;&#x505A;&#x4E00;&#x4E9B;&#x5E38;&#x89C1;&#x7684;&#x5904;&#x7406;&#x3002;</p>
<p>ffmpeg&#x81EA;&#x5E26;&#x4E86;&#x5927;&#x91CF;&#x7684;filter&#xFF0C;&#x6BD4;&#x5982;&#x6211;&#x7535;&#x8111;&#x4E0A;&#x7684;5.0&#x7248;&#x672C;&#xFF0C;&#x5C31;&#x6709;470+&#x4E2A;filter&#xFF08;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;<code>ffmpeg -filters</code>&#x6765;&#x5217;&#x51FA;&#x6240;&#x6709;&#x7684;filter&#xFF09;&#x3002;&#x8FD9;&#x4E9B;filter&#x63D0;&#x4F9B;&#x4E86;&#x5404;&#x79CD;&#x5404;&#x6837;&#x7684;&#x529F;&#x80FD;&#xFF0C;&#x5C0F;&#x5230;&#x7F29;&#x653E;&#x3001;&#x526A;&#x5207;&#xFF0C;&#x5927;&#x5230;&#x7269;&#x4F53;&#x8BC6;&#x522B;&#xFF0C;&#x751A;&#x81F3;&#x4E8E;&#x53EF;&#x4EE5;&#x5728;&#x5176;&#x4E2D;&#x63D2;&#x5165;GPU&#x4EE3;&#x7801;&#xFF0C;&#x603B;&#x4E4B;&#x4E94;&#x82B1;&#x516B;&#x95E8;&#x3002;</p>
<p>&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;<code>-filter</code>&#x53C2;&#x6570;&#x6307;&#x5B9A;&#x4E00;&#x4E2A;filter&#xFF0C;&#x6765;&#x5B9E;&#x73B0;&#x9700;&#x8981;&#x7684;&#x529F;&#x80FD;&#x3002;</p>
<p>&#x4F8B;&#x5982;&#xFF0C;<code>ffmpeg -i i.mp4 -filter scale=100x100 o.mp4</code>&#x5C31;&#x53EF;&#x4EE5;&#x5C06;i.mp4&#x7F29;&#x653E;&#x5230;100x100&#x7684;&#x5927;&#x5C0F;&#x3002;</p>
<p>filter&#x7684;&#x8BED;&#x6CD5;&#x662F;&#x8FD9;&#x6837;&#x7684;&#xFF1A;<code>filter&#x540D;=&#x53C2;&#x6570;</code>&#xFF0C;&#x5176;&#x4E2D;filter&#x540D;&#x662F;scale&#x8FD9;&#x4E9B;&#xFF0C;&#x6BCF;&#x4E2A;filter&#x53EF;&#x4EE5;&#x63A5;&#x53D7;&#x4E0D;&#x540C;&#x7684;&#x53C2;&#x6570;&#xFF0C;&#x53C2;&#x6570;&#x4E4B;&#x95F4;&#x7531;<code>:</code>&#x5206;&#x5F00;&#xFF1B;&#x4E0A;&#x9762;&#x7684;<code>scale=100x100</code>&#x4E5F;&#x53EF;&#x4EE5;&#x5199;&#x6210;<code>scale=w=100:h=100</code>&#x3002;</p>
<p>filter&#x4E2D;&#x4E5F;&#x53EF;&#x4EE5;&#x8BBF;&#x95EE;&#x4E00;&#x4E9B;&#x53D8;&#x91CF;&#xFF0C;&#x4F8B;&#x5982;<code>scale=iw/2:ih/2</code>&#x5C31;&#x53EF;&#x4EE5;&#x5C06;&#x539F;&#x89C6;&#x9891;&#x5BBD;&#x9AD8;&#x90FD;&#x7F29;&#x5C0F;&#x4E3A;&#x539F;&#x6765;&#x7684;1/2&#xFF0C;&#x5176;&#x4E2D;&#x7684;<code>iw/ih</code>&#x662F;filter&#x53EF;&#x4EE5;&#x8BBF;&#x95EE;&#x7684;&#x53D8;&#x91CF;&#xFF0C;<code>iw</code>&#x6307;&#x7684;&#x662F;&#x8F93;&#x5165;&#x6587;&#x4EF6;&#x7684;&#x5BBD;&#x5EA6;&#xFF0C;<code>ih</code>&#x6307;&#x7684;&#x662F;&#x9AD8;&#x5EA6;&#x3002;</p>
<p>&#x53EF;&#x4EE5;&#x901A;&#x8FC7;<code>ffmpeg -filters</code>&#x547D;&#x4EE4;&#x6765;&#x67E5;&#x770B;&#x6240;&#x6709;&#x7684;filter&#xFF1B;<code>ffmpeg -h filter=scale</code>&#x547D;&#x4EE4;&#x53EF;&#x4EE5;&#x67E5;&#x770B;&#x67D0;&#x4E2A;filter&#x7684;&#x8BE6;&#x7EC6;&#x8BF4;&#x660E;&#xFF0C;&#x5305;&#x62EC;&#x4ECB;&#x7ECD;&#x3001;&#x53C2;&#x6570;&#x7B49;&#x3002;&#x6216;&#x8005;&#x53EF;&#x4EE5;&#x53BB;&#x5B98;&#x7F51;&#x4E0A;&#x67E5;&#x770B;&#x7F51;&#x9875;&#x7248;&#x672C;&#x7684;<a href="https://www.ffmpeg.org/ffmpeg-filters.html" title="filter&#x6587;&#x6863;">filter&#x6587;&#x6863;</a>&#x3002;</p>
<p><code>-filter</code>&#x53C2;&#x6570;&#x53EA;&#x80FD;&#x6307;&#x5B9A;&#x4E00;&#x6761;&#x201C;&#x94FE;&#x72B6;&#x201D;&#x7684;filter&#xFF0C;&#x800C;<code>-filter_complex</code>&#x53C2;&#x6570;&#x5219;&#x53EF;&#x4EE5;&#x7EC4;&#x5408;&#x591A;&#x4E2A;filter&#xFF0C;&#x5F62;&#x6210;&#x6811;&#x72B6;&#xFF0C;&#x7EC4;&#x5408;&#x8D77;&#x6765;&#x7684;filter&#x4E00;&#x822C;&#x79F0;&#x4F5C;<code>filter graph</code>&#x3002;</p>
<p>&#x4F8B;&#x5982;&#xFF1A;</p>
<pre><code class="language-bash">ffmpeg -i i.mp4 -filter_complex \
  &apos;split[v1][v2];[v1]scale=iw/2:ih/2[v1];[v2][v1]overlay&apos; o.mp4
</code></pre>
<p>&#x6BCF;&#x4E2A;filter&#x7528;<code>;</code>&#x5206;&#x5F00;&#xFF1B;&#x6BCF;&#x4E2A;filter&#x90FD;&#x6709;&#x8F93;&#x5165;&#x548C;&#x8F93;&#x51FA;&#xFF0C;&#x5728;filter&#x540E;&#x52A0;&#x4E0A;<code>[abc]</code>&#x53EF;&#x4EE5;&#x5C06;&#x8F93;&#x51FA;&#x547D;&#x540D;&#x4E3A;<code>abc</code>&#xFF1B;&#x5728;filter&#x7684;&#x524D;&#x9762;&#x52A0;&#x4E0A;<code>[abc]</code>&#x5219;&#x53EF;&#x4EE5;&#x5C06;<code>abc</code>&#x4F5C;&#x4E3A;&#x8F93;&#x5165;&#xFF1B;&#x901A;&#x8FC7;&#x8FD9;&#x79CD;&#x547D;&#x540D;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x53EF;&#x4EE5;&#x5B9E;&#x73B0;&#x5F88;&#x590D;&#x6742;&#x7684;&#x529F;&#x80FD;&#x3002;</p>
<p>&#x4E0A;&#x9762;&#x8FD9;&#x4E2A;&#x547D;&#x4EE4;&#x5206;&#x5F00;&#x6765;&#x770B;&#x7684;&#x8BDD;&#x6709;&#x4E09;&#x4E2A;filter&#xFF1A;</p>
<ul>
<li><code>split``[v1][v2]</code> &#x5C06;&#x8F93;&#x5165;&#x6587;&#x4EF6;&#x590D;&#x5236;&#x6210;&#x4E24;&#x4EFD;&#xFF0C;&#x5206;&#x522B;&#x547D;&#x540D;&#x4E3A;v1&#x548C;v2&#xFF08;&#x672A;&#x6307;&#x5B9A;&#x8F93;&#x5165;&#x7684;&#x8BDD;&#x9ED8;&#x8BA4;&#x9009;&#x7528;&#x4E0A;&#x4E00;&#x4E2A;&#x8F93;&#x5165;&#xFF0C;&#x5728;&#x8FD9;&#x91CC;&#x5C31;&#x662F;<code>-i</code>&#x9009;&#x9879;&#x6307;&#x5B9A;&#x7684;&#x6587;&#x4EF6;&#xFF09;&#xFF1B;</li>
<li><code>[v1]``scale``=``iw/2``:``ih/2``[v1]</code> &#x5C06;v1&#x7F29;&#x653E;&#x4E3A;&#x539F;&#x6765;&#x7684;&#x4E00;&#x534A;&#xFF0C;&#x540C;&#x65F6;&#x5C06;&#x7ED3;&#x679C;&#x518D;&#x6B21;&#x547D;&#x540D;&#x4E3A;v1&#xFF1B;</li>
<li><code>[v2][v1]``overlay</code> overlay&#x7528;&#x4E8E;&#x5C06;v1&#x548C;v2&#x5806;&#x53E0;&#x8D77;&#x6765;&#xFF0C;v1&#x4F4D;&#x4E8E;v2&#x4E0A;&#x65B9;&#x3002;</li>
</ul>
<p>&#x7ECF;&#x8FC7;&#x8FD9;&#x4E2A;&#x547D;&#x4EE4;&#x4E4B;&#x540E;&#xFF0C;&#x5BF9;&#x4E8E;&#x8FD9;&#x6837;&#x7684;&#x8F93;&#x5165;&#xFF1A;</p>
<p><video src="videos/i1_w8oXNZN-dC.mp4" controls></video></p>
<p>&#x4F1A;&#x5F97;&#x5230;&#x8FD9;&#x6837;&#x7684;&#x8F93;&#x51FA;&#xFF1A;</p>
<p><video src="videos/o_2wEeF9xNzo.mp4" controls></video></p>
<h2 id="%E7%A4%BA%E4%BE%8B">&#x793A;&#x4F8B;</h2>
<h3 id="%E5%9B%BE%E7%89%87%E5%A4%84%E7%90%86">&#x56FE;&#x7247;&#x5904;&#x7406;</h3>
<p>&#x9664;&#x4E86;&#x97F3;&#x89C6;&#x9891;&#xFF0C;ffmpeg&#x5904;&#x7406;&#x56FE;&#x7247;&#x5F53;&#x7136;&#x4E5F;&#x4E0D;&#x5728;&#x8BDD;&#x4E0B;&#xFF0C;&#x4F8B;&#x5982;<code>ffmpeg -i input.png output.webp</code>&#x5C31;&#x53EF;&#x4EE5;&#x5C06;png&#x8F6C;&#x4E3A;webp&#x3002;</p>
<h4 id="webp%E5%8A%A8%E5%9B%BE">Webp&#x52A8;&#x56FE;</h4>
<p>&#x5904;&#x7406;webp&#x7684;&#x65F6;&#x5019;&#x8981;&#x6CE8;&#x610F;&#xFF0C;&#x5982;&#x679C;&#x8981;&#x4ECE;&#x89C6;&#x9891;&#x6216;&#x8005;&#x5E8F;&#x5217;&#x5E27;&#x751F;&#x6210;<strong>webp&#x52A8;&#x56FE;</strong>&#xFF0C;&#x9700;&#x8981;&#x6307;&#x5B9A;&#x7F16;&#x7801;&#x4E3A;<code>libwebp_anim</code>&#xFF0C;&#x4F8B;&#x5982;<code>ffmpeg -i i.mp4 -c libwebp_anim o.webp</code>&#xFF0C;&#x76F4;&#x63A5;&#x4F7F;&#x7528;webp&#x7F16;&#x7801;&#x4F1A;&#x51FA;&#x73B0;&#x64AD;&#x653E;&#x82B1;&#x5C4F;&#x7684;&#x60C5;&#x51B5;&#x3002;</p>
<h4 id="png%E5%8E%8B%E7%BC%A9">PNG&#x538B;&#x7F29;</h4>
<p>&#x7531;&#x4E8E;PNG&#x662F;&#x4E2A;&#x65E0;&#x635F;&#x538B;&#x7F29;&#x7684;&#x683C;&#x5F0F;&#xFF0C;&#x4F53;&#x79EF;&#x5F80;&#x5F80;&#x6BD4;&#x8F83;&#x5927;&#xFF0C;&#x5927;&#x5BB6;&#x5E73;&#x65F6;&#x53EF;&#x80FD;&#x7528;&#x5230;<a href="https://tinypng.com/" title="TinyPNG">TinyPNG</a>&#x8FD9;&#x4E2A;&#x7F51;&#x7AD9;&#x6765;&#x538B;&#x7F29;&#x4E00;&#x4E9B;&#x56FE;&#x7247;&#xFF0C;&#x5B83;&#x7684;&#x539F;&#x7406;&#x662F;&#x5C06;&#x901A;&#x5E38;&#x6BCF;&#x50CF;&#x7D20;24&#x4F4D;&#x3001;64&#x4F4D;&#x7684;PNG&#x56FE;&#x50CF;&#x4FEE;&#x6539;&#x4E3A;&#x6BCF;&#x50CF;&#x7D20;8&#x4F4D;&#x7684;&#x3002;</p>
<p>&#x4E4B;&#x6240;&#x4EE5;&#x80FD;&#x538B;&#x7F29;&#x6210;8&#x4F4D;&#x8FD9;&#x4E48;&#x5C0F;&#xFF0C;&#x662F;&#x56E0;&#x4E3A;&#x5B83;&#x7528;&#x4E86;pal8&#x8FD9;&#x79CD;&#x50CF;&#x7D20;&#x683C;&#x5F0F;&#xFF0C;&#x8FD9;&#x662F;&#x4E00;&#x79CD;&#x57FA;&#x4E8E;&#x8272;&#x677F;&#x7684;&#x50CF;&#x7D20;&#x683C;&#x5F0F;&#xFF0C;&#x5728;&#x7528;&#x5B83;&#x5BF9;&#x4E00;&#x5F20;&#x56FE;&#x7247;&#x8FDB;&#x884C;&#x201C;&#x7F16;&#x7801;&#x201D;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x9700;&#x8981;&#x5148;&#x6307;&#x5B9A;&#x4E00;&#x5F20;&#x201C;&#x8272;&#x677F;&#x201D;&#xFF1A;&#x8FD9;&#x5F20;&#x8272;&#x677F;&#x4E0A;&#x53EA;&#x6709;256&#x79CD;&#x989C;&#x8272;&#xFF0C;&#x6BCF;&#x79CD;&#x989C;&#x8272;&#x6709;&#x4E2A;&#x7F16;&#x53F7;&#x3002;&#x901A;&#x8FC7;&#x8FD9;&#x4E2A;&#x8272;&#x677F;&#x5BF9;&#x4E00;&#x5F20;&#x56FE;&#x7247;&#x8FDB;&#x884C;&#x201C;&#x7F16;&#x7801;&#x201D;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x9700;&#x8981;&#x7ED9;&#x8FD9;&#x5F20;&#x56FE;&#x7247;&#x4E0A;&#x7684;&#x6BCF;&#x4E2A;&#x50CF;&#x7D20;&#x5728;&#x8272;&#x677F;&#x4E0A;&#x627E;&#x4E00;&#x4E2A;&#x6700;&#x76F8;&#x8FD1;&#x7684;&#x989C;&#x8272;&#xFF0C;&#x7136;&#x540E;&#x5728;&#x8BE5;&#x50CF;&#x7D20;&#x5904;&#x53EA;&#x9700;&#x8981;&#x5B58;&#x50A8;&#x8FD9;&#x4E2A;&#x989C;&#x8272;&#x5BF9;&#x5E94;&#x7684;&#x8272;&#x677F;&#x5E8F;&#x53F7;&#x5C31;&#x884C;&#x3002;&#x6700;&#x7EC8;&#x5728;&#x5C01;&#x88C5;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x628A;&#x8272;&#x677F;&#x4E5F;&#x5C01;&#x88C5;&#x5230;&#x91CC;&#x9762;&#xFF0C;&#x89E3;&#x7801;&#x7684;&#x65F6;&#x5019;&#x5C31;&#x53EF;&#x4EE5;&#x5927;&#x81F4;&#x8FD8;&#x539F;&#x539F;&#x56FE;&#x3002;&#x8FD9;&#x79CD;&#x65B9;&#x5F0F;&#x9002;&#x5408;&#x4E00;&#x4E9B;&#x8272;&#x5F69;&#x4E0D;&#x662F;&#x7279;&#x522B;&#x4E30;&#x5BCC;&#x7684;&#x56FE;&#x50CF;&#x3002;</p>
<p>&#x6BD4;&#x5982;&#xFF0C;&#x4E00;&#x5F20;&#x56FE;&#x7247;&#x7684;&#x67D0;&#x4E00;&#x4E2A;&#x50CF;&#x7D20;&#x662F;&#x84DD;&#x8272;#0000FF&#xFF0C;&#x901A;&#x5E38;&#x5B58;&#x50A8;&#x5B83;&#x9700;&#x8981;3*8=24&#x4F4D;&#xFF0C;&#x800C;&#x5982;&#x679C;&#x8272;&#x677F;&#x4E0A;&#x6709;&#x8FD9;&#x4E2A;&#x989C;&#x8272;&#x7684;&#x8BDD;&#xFF0C;&#x5B58;&#x50A8;&#x5B83;&#x53EA;&#x9700;&#x8981;&#x4E00;&#x4E2A;&#x5B57;&#x8282;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x8BE5;&#x989C;&#x8272;&#x5BF9;&#x5E94;&#x7684;&#x8272;&#x677F;&#x5E8F;&#x53F7;&#x3002;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/images/image_1s2n-EHPtV.png" alt loading="lazy"></p>
<p>&#x77E5;&#x9053;&#x4E86;&#x539F;&#x7406;&#xFF0C;&#x8FD9;&#x4E2A;&#x64CD;&#x4F5C;&#x901A;&#x8FC7;ffmpeg&#x4E5F;&#x5F88;&#x5BB9;&#x6613;&#x5B8C;&#x6210;&#xFF1A;</p>
<pre><code class="language-bash">ffmpeg -i 0001.png \
  -filter_complex &apos;[0]palettegen=transparency_color=#00000000[p];[0][p]paletteuse&apos; \
  o.png

</code></pre>
<p>&#x5176;&#x4E2D;&#x7684;&#x5173;&#x952E;&#x90E8;&#x5206;&#x5728;&#x4E8E;&#x4E2D;&#x95F4;&#x8FD9;&#x4E24;&#x4E2A;filter&#xFF1A;<code>palettegen</code>&#x548C;<code>paletteuse</code>&#xFF0C;&#x4E00;&#x4E2A;&#x7528;&#x6765;&#x751F;&#x6210;&#x8272;&#x677F;&#xFF0C;&#x4E00;&#x4E2A;&#x7528;&#x6765;&#x4F7F;&#x7528;&#x8272;&#x677F;&#x3002;&#xFF08;&#x8272;&#x677F;&#x5176;&#x5B9E;&#x4E5F;&#x5C31;&#x662F;&#x4E00;&#x5F20;16x16&#x7684;&#x56FE;&#x7247;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x8FD9;&#x91CC;&#x7684;[p]&#xFF09;</p>
<p>&#x901A;&#x8FC7;&#x8FD9;&#x884C;&#x547D;&#x4EE4;&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x5F97;&#x5230;&#x4E00;&#x5F20;&#x548C;TinyPNG&#x201C;&#x538B;&#x7F29;&#x201D;&#x6548;&#x679C;&#x5DEE;&#x4E0D;&#x591A;&#x7684;&#x56FE;&#x7247;&#xFF08;&#x6709;&#x65F6;&#x5019;&#x4F1A;&#x5DEE;&#x5F88;&#x591A;&#xFF09;&#x3002;</p>
<p>FFmpeg&#x7684;&#x8272;&#x677F;&#x751F;&#x6210;&#x7B97;&#x6CD5;&#x6BD4;&#x8F83;&#x7B80;&#x5355;&#xFF0C;&#x8FD9;&#x65B9;&#x9762;&#x6709;&#x4E9B;&#x4EBA;&#x505A;&#x4E86;&#x66F4;&#x4E3A;&#x6DF1;&#x5165;&#x7684;&#x63A2;&#x7D22;&#xFF0C;&#x6709;&#x5174;&#x8DA3;&#x7684;&#x540C;&#x5B66;&#x53EF;&#x4EE5;&#x770B;&#x4E0B;<a href="https://pngquant.org/" title="PngQuant">PngQuant</a>&#x8FD9;&#x4E2A;&#x9879;&#x76EE;&#x3002;</p>
<h3 id="%E4%B8%BA%E9%9F%B3%E4%B9%90%E6%B7%BB%E5%8A%A0%E5%B0%81%E9%9D%A2">&#x4E3A;&#x97F3;&#x4E50;&#x6DFB;&#x52A0;&#x5C01;&#x9762;</h3>
<p>&#x901A;&#x5E38;&#xFF0C;&#x4ECE;&#x97F3;&#x4E50;&#x7F51;&#x7AD9;&#x6216;&#x97F3;&#x4E50;app&#x4E0A;&#x9762;&#x4E0B;&#x8F7D;&#x7684;&#x97F3;&#x4E50;&#x6587;&#x4EF6;&#x90FD;&#x4F1A;&#x5E26;&#x6709;&#x5C01;&#x9762;&#xFF0C;&#x5728;&#x672C;&#x5730;&#x64AD;&#x653E;&#x5668;&#x64AD;&#x653E;&#x3001;&#x6216;&#x8005;&#x6587;&#x4EF6;&#x7BA1;&#x7406;&#x5668;&#x9884;&#x89C8;&#x65F6;&#xFF0C;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x8BE5;&#x5C01;&#x9762;&#xFF0C;&#x4F8B;&#x5982;&#x4F7F;&#x7528;ffplay&#xFF1A;</p>
<pre><code class="language-bash">ffplay with_pic.mp3
</code></pre>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/images/image_xvTharDjWk.png" alt="ffplay" title="ffplay" loading="lazy"></p>
<p>&#x8FD9;&#x4E2A;&#x5C01;&#x9762;&#x7684;&#x539F;&#x7406;&#x662F;&#x5728;&#x6587;&#x4EF6;&#x4E2D;&#x4FDD;&#x5B58;&#x4E00;&#x4E2A;&#x56FE;&#x7247;&#x901A;&#x9053;&#xFF0C;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;ffprobe&#x770B;&#x5230;&#xFF1A;</p>
<pre><code class="language-bash">ffprobe with_pic.mp3
</code></pre>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/images/image_OlezVH5kne.png" alt loading="lazy"></p>
<p>&#x5047;&#x8BBE;&#x73B0;&#x5728;&#x6709;&#x4E2A;&#x4E0D;&#x5E26;&#x6709;&#x5C01;&#x9762;&#x7684;mp3&#x97F3;&#x4E50;&#x6587;&#x4EF6;<code>no_pic.mp3</code>&#xFF0C;&#x548C;&#x4E00;&#x4E2A;&#x5C01;&#x9762;&#x56FE;&#x7247;<code>pic.png</code>&#xFF0C;&#x90A3;&#x4E48;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;ffmpeg&#x5411;&#x5176;&#x4E2D;&#x6DFB;&#x52A0;&#x4E00;&#x4E2A;&#x89C6;&#x9891;&#x9759;&#x6001;&#x7684;&#x901A;&#x9053;&#xFF1A;</p>
<pre><code class="language-bash">ffmpeg \
  -i pic.png `# &#x8F93;&#x5165;&#x56FE;&#x7247;` \
  -i nopic.mp3 `# &#x8F93;&#x5165;mp3` \
  -codec copy `# &#x4F7F;&#x7528;copy&#x7F16;&#x7801;&#x5668;&#xFF0C;&#x4E0D;&#x5BF9;&#x6570;&#x636E;&#x505A;&#x5904;&#x7406;` \
  -map 0:v:0 `# &#x5C06;&#x7B2C;0&#x4E2A;&#x8F93;&#x5165;&#x6587;&#x4EF6;&#x7684;&#x89C6;&#x9891;&#x901A;&#x9053;&#xFF0C;&#x8F93;&#x51FA;&#x5230;&#x7B2C;0&#x4E2A;&#x8F93;&#x51FA;&#x6587;&#x4EF6;&#x4E2D;` \
  -map 1:a:0 `# &#x5C06;&#x7B2C;1&#x4E2A;&#x8F93;&#x5165;&#x6587;&#x4EF6;&#x7684;&#x97F3;&#x9891;&#x901A;&#x9053;&#xFF0C;&#x8F93;&#x51FA;&#x5230;&#x7B2C;0&#x4E2A;&#x8F93;&#x51FA;&#x6587;&#x4EF6;&#x4E2D;` \
  output.mp3
</code></pre>
<p>&#x8FD9;&#x91CC;&#x7684;&#x5173;&#x952E;&#x662F;<code>-map</code>&#x9009;&#x9879;&#xFF0C;&#x53EF;&#x4EE5;&#x7528;&#x5B83;&#x6765;&#x64CD;&#x4F5C;&#x6587;&#x4EF6;&#x6216;filter&#x4E2D;&#x7684;&#x901A;&#x9053;&#x3002;</p>
<p>&#x4F7F;&#x7528;ffprobe&#x68C0;&#x67E5;output.mp3&#xFF0C;&#x6216;&#x8005;&#x4F7F;&#x7528;ffplay&#x64AD;&#x653E;&#x8BE5;&#x6587;&#x4EF6;&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x586B;&#x5145;&#x8FDB;&#x53BB;&#x7684;&#x5C01;&#x9762;&#x4E86;&#x3002;</p>
<h3 id="%E8%8E%B7%E5%8F%96%E8%A7%86%E9%A2%91%E7%BC%A9%E7%95%A5%E5%9B%BE">&#x83B7;&#x53D6;&#x89C6;&#x9891;&#x7F29;&#x7565;&#x56FE;</h3>
<p>&#x901A;&#x8FC7;&#x4EE5;&#x4E0B;&#x547D;&#x4EE4;&#xFF0C;&#x53EF;&#x4EE5;&#x4ECE;&#x89C6;&#x9891;&#x4E2D;&#x83B7;&#x53D6;&#x4E00;&#x5E27;&#x5E76;&#x4FDD;&#x5B58;&#x6210;&#x56FE;&#x7247;&#xFF1A;</p>
<pre><code class="language-bash">ffmpeg -y -ss 00:10:00 -i Sherlock.S01E01.2010.mkv -frames 1 thumbnail.png
</code></pre>
<p>&#x5176;&#x4E2D;&#x7684;&#x5173;&#x952E;&#x662F;<code>-ss 00:10:00</code>&#x548C;<code>-frames 1</code>&#x4E24;&#x4E2A;&#x53C2;&#x6570;&#xFF1A;</p>
<ul>
<li><code>-ss</code>&#x53C2;&#x6570;&#x7528;&#x4E8E;&#x6307;&#x5B9A;&#x8F93;&#x5165;&#x6587;&#x4EF6;&#x7684;&#x504F;&#x79FB;&#x65F6;&#x95F4;&#xFF0C;&#x8FD9;&#x91CC;&#x6307;&#x5B9A;&#x7684;&#x662F;&#x5341;&#x5206;&#x949F;&#x7684;&#x4F4D;&#x7F6E;&#x3002;</li>
<li><code>-frames 1</code>&#x53C2;&#x6570;&#x7528;&#x4E8E;&#x6307;&#x5B9A;&#x8F93;&#x51FA;&#x6587;&#x4EF6;&#x7684;&#x5E27;&#x6570;&#xFF0C;&#x53EA;&#x9700;&#x8981;&#x4E00;&#x5E27;&#x3002;</li>
</ul>
<p>&#x5B98;&#x65B9;&#x6587;&#x6863;&#x5BF9;&#x6B64;&#x4E5F;&#x6709;&#x4E2A;&#x7B80;&#x5355;&#x7684;&#x4ECB;&#x7ECD;&#xFF0C;&#x53EF;&#x4EE5;&#x53C2;&#x8003;<a href="https://trac.ffmpeg.org/wiki/Seeking" title="Seeking - FFmpeg">Seeking - FFmpeg</a>&#x3002;</p>
<p>&#x57FA;&#x4E8E;&#x6B64;&#x53EF;&#x4EE5;&#x4E3A;&#x89C6;&#x9891;&#x751F;&#x6210;&#x4E00;&#x4E2A;&#x7B80;&#x5355;&#x7684;&#x62BD;&#x5E27;&#x9884;&#x89C8;&#x7684;&#x5C0F;&#x89C6;&#x9891;&#xFF1A;</p>
<p><video src="videos/preview_uEurnRf49b.mp4" controls></video></p>
<p>&#x7528;&#x5230;&#x7684;python&#x811A;&#x672C;&#x5982;&#x4E0B;&#xFF1A;</p>
<pre><code class="language-python">#!/usr/bin/env python3
from os import system
from pathlib import Path

Path(&apos;thumbnails/&apos;).mkdir(exist_ok=True)

for i in range(10):
    min = str(i * 5).zfill(2) # &#x6BCF;&#x4E94;&#x5206;&#x949F;&#x4E00;&#x5F20;&#x56FE;&#x7247;
    name = str(i).zfill(2)
    system(f&quot;ffmpeg -y -ss 00:{min}:40 -i &apos;Sherlock.S01E01.2010.mkv&apos; -frames 1 &apos;thumbnails/{name}.png&apos;&quot;)

# &#x8F93;&#x5165;&#x4E00;&#x79D2;&#x4E00;&#x5E27;&#xFF0C;&#x8F93;&#x51FA;&#x65F6;&#x8865;&#x5145;&#x4E3A;25&#x5E27;
system(f&quot;ffmpeg -y -r 1 -i &apos;thumbnails/%02d.png&apos; -r 25 thumbnails/preview.mp4&quot;)

</code></pre>
<h3 id="alpha%E8%A7%86%E9%A2%91">Alpha&#x89C6;&#x9891;</h3>
<p>&#x6700;&#x540E;&#x7B80;&#x5355;&#x8BF4;&#x4E00;&#x4E0B;&#x4E00;&#x4E2A;&#x6BD4;&#x8F83;&#x590D;&#x6742;&#x7684;&#x4F8B;&#x5B50;&#xFF0C;&#x4E32;&#x8054;&#x4E00;&#x4E0B;&#x4E0A;&#x8FF0;&#x77E5;&#x8BC6;&#x3002;</p>
<p>&#x5047;&#x8BBE;&#x6211;&#x4EEC;&#x6709;&#x4E00;&#x4E32;&#x5E8F;&#x5217;&#x5E27;&#xFF0C;0001.png&#x3001;0002.png&#x3001;...0100.png&#xFF0C;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/images/image_vQQLuAkXNL.png" alt loading="lazy"></p>
<p>&#x73B0;&#x5728;&#x60F3;&#x8981;&#x628A;&#x5B83;&#x8F6C;&#x6362;&#x6210;Alpha&#x89C6;&#x9891;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x8FD9;&#x6837;&#x7684;&#xFF1A;</p>
<p><video src="videos/o_Cp1oY-HAlR.mp4" controls></video></p>
<p>RGB&#x901A;&#x9053;&#x5728;&#x53F3;&#x4FA7;&#xFF0C;Alpha&#x901A;&#x9053;&#x6309;&#x7167;&#x7070;&#x5EA6;&#x56FE;&#x7684;&#x5F62;&#x5F0F;&#x5728;&#x5DE6;&#x4FA7;&#x3002;</p>
<h4 id="%E8%BD%AC%E6%8D%A2%E5%89%8D%E5%90%8E">&#x8F6C;&#x6362;&#x524D;&#x540E;</h4>
<p>&#x9996;&#x5148;&#x6765;&#x770B;&#x4E0B;&#x8F6C;&#x6362;&#x524D;&#x540E;&#x7684;&#x5F02;&#x540C;&#x3002;</p>
<p>&#x8F6C;&#x6362;&#x524D;&#x7684;&#x5E8F;&#x5217;&#x5E27;&#x662F;PNG&#x683C;&#x5F0F;&#x7684;&#xFF0C;&#x62E5;&#x6709;RGBA&#x56DB;&#x4E2A;&#x901A;&#x9053;&#xFF0C;&#x4E0A;&#x56FE;&#x9B54;&#x65B9;&#x7684;&#x5176;&#x4F59;&#x90E8;&#x5206;&#x90FD;&#x662F;&#x7A7A;&#x767D;&#x7684;&#x3002;</p>
<p>&#x8F6C;&#x6362;&#x540E;&#x7684;&#x683C;&#x5F0F;&#x4E3A;mp4&#xFF0C;mp4&#x4E0D;&#x652F;&#x6301;Alpha&#x901A;&#x9053;&#x3002;</p>
<p>&#x8F6C;&#x6362;&#x540E;&#x7684;&#x89C6;&#x9891;&#x53F3;&#x4FA7;&#x90E8;&#x5206;&#xFF0C;&#x5176;&#x5B9E;&#x5C31;&#x662F;&#x539F;&#x5E8F;&#x5217;&#x5E27;&#x7684;RGB&#x901A;&#x9053;&#xFF0C;&#x540C;&#x65F6;&#x539F;&#x5E8F;&#x5217;&#x5E27;&#x7684;Alpha&#x901A;&#x9053;&#x503C;&#x4E3A;0&#x7684;&#x50CF;&#x7D20;&#x8981;&#x663E;&#x793A;&#x4E3A;&#x9ED1;&#x8272;&#x3002;</p>
<p>&#x5DE6;&#x4FA7;&#x90E8;&#x5206;&#x5176;&#x5B9E;&#x662F;&#x5C06;Alpha&#x901A;&#x9053;&#x5355;&#x72EC;&#x63D0;&#x53D6;&#x51FA;&#x6765;&#xFF0C;&#x7136;&#x540E;&#x5C06;&#x5176;&#x8F6C;&#x6210;&#x7070;&#x5EA6;&#x56FE;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x5C06;Alpha&#x901A;&#x9053;&#x7684;&#x503C;&#x5206;&#x522B;&#x8D4B;&#x7ED9;RGB&#x4E09;&#x4E2A;&#x901A;&#x9053;&#xFF08;&#x4F8B;&#x5982;#FF123456&#x5C31;&#x53D8;&#x6210;&#x4E86;#FFFFFFFF&#xFF0C;&#x5B8C;&#x5168;&#x900F;&#x660E;&#x7684;&#x90E8;&#x5206;&#x5C31;&#x53D8;&#x6210;&#x4E86;&#x9ED1;&#x8272;&#xFF0C;&#x5B8C;&#x5168;&#x4E0D;&#x900F;&#x660E;&#x7684;&#x90E8;&#x5206;&#x5C31;&#x53D8;&#x6210;&#x4E86;&#x767D;&#x8272;&#xFF09;&#x3002;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/images/output_nyTp9R80Ac.png" alt="&#x8F6C;&#x6362;&#x524D;&#xFF08;&#x9B54;&#x65B9;&#x5468;&#x56F4;&#x662F;&#x900F;&#x660E;&#x7684;&#xFF09;" title="&#x8F6C;&#x6362;&#x524D;&#xFF08;&#x9B54;&#x65B9;&#x5468;&#x56F4;&#x662F;&#x900F;&#x660E;&#x7684;&#xFF09;" loading="lazy"></p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/images/image_zOjkMoYnKQ.png" alt="&#x8F6C;&#x6362;&#x540E;" title="&#x8F6C;&#x6362;&#x540E;" loading="lazy"></p>
<h4 id="%E5%AE%9E%E7%8E%B0">&#x5B9E;&#x73B0;</h4>
<p>&#x90A3;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x8FD9;&#x884C;&#x547D;&#x4EE4;&#xFF1A;</p>
<pre><code class="language-bash">ffmpeg -r 25 -i &apos;%04d.png&apos; \
  -filter_complex &apos;split[rgb][mask];[mask]colorchannelmixer=0:0:0:1:0:0:0:1:0:0:0:1:0:0:0:1[mask];[rgb]split[fg][bg];[bg]drawbox=t=fill:color=black[bg];[bg][fg]overlay[rgb];[mask]pad=iw*2:ih[mask];[mask][rgb]overlay=w:0&apos; \
  o.mp4
</code></pre>
<p>&#x5C06;&#x5176;&#x4E2D;&#x7684;filter&#x62C6;&#x5F00;&#x53EF;&#x4EE5;&#x5F97;&#x5230;&#x8BB8;&#x591A;&#x4E2A;&#x6B65;&#x9AA4;&#xFF0C;&#x5206;&#x522B;&#x4ECB;&#x7ECD;&#x4E00;&#x4E0B;&#xFF1A;</p>
<ul>
<li>
<p><code>split[mask][rgb];</code></p>
<p>&#x5C06;&#x8F93;&#x5165;&#x590D;&#x5236;&#x6210;&#x4E24;&#x4EFD;&#xFF0C;&#x540D;&#x5B57;&#x4E3A;mask&#x548C;rgb&#xFF0C;&#x6700;&#x7EC8;&#x5206;&#x522B;&#x4F1A;&#x7528;&#x4F5C;&#x5DE6;&#x8FB9;&#x7684;&#x906E;&#x7F69;&#x90E8;&#x5206;&#x548C;&#x53F3;&#x8FB9;&#x7684;&#x5F69;&#x8272;&#x90E8;&#x5206;&#xFF1B;</p>
</li>
<li>
<p><code>[mask]colorchannelmixer=0:0:0:1:0:0:0:1:0:0:0:1:0:0:0:1[mask];</code></p>
<p><code>colorchannelmixer</code>&#x8FD9;&#x4E2A;filter&#x7528;&#x4E8E;&#x91CD;&#x7EC4;rgba&#x901A;&#x9053;&#xFF0C;&#x8FD9;&#x91CC;&#x901A;&#x8FC7;&#x5C06;rgba&#x901A;&#x9053;&#x7684;&#x503C;&#x90FD;&#x8BBE;&#x7F6E;&#x4E3A;alpha&#x901A;&#x9053;&#x7684;&#x503C;&#xFF0C;&#x6765;&#x5F97;&#x5230;&#x5DE6;&#x8FB9;&#x7684;&#x906E;&#x7F69;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x5C06;alpha&#x901A;&#x9053;&#x8F6C;&#x5316;&#x4E3A;&#x7070;&#x5EA6;&#x56FE;&#x3002;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/images/image_hgfng5SOP-.png" alt loading="lazy"></p>
</li>
<li>
<p><code>[rgb]split[fg][bg];</code></p>
<p>&#x628A;&#x53E6;&#x5916;&#x4E00;&#x4EFD;&#x518D;&#x6B21;&#x590D;&#x5236;&#x4E3A;&#x4E24;&#x4EFD;&#xFF0C;bg&#x548C;fg&#xFF1B;</p>
</li>
<li>
<p><code>[bg]drawbox=t=fill:color=black[bg];</code></p>
<p>bg&#x4F5C;&#x4E3A;&#x53F3;&#x4FA7;&#x7684;&#x80CC;&#x666F;&#xFF0C;&#x6240;&#x4EE5;&#x4F7F;&#x7528;drawbox&#x5728;&#x5176;&#x4E0A;&#x7ED8;&#x5236;&#x4E00;&#x4E2A;&#x9ED1;&#x8272;&#x7684;&#x533A;&#x57DF;&#x5C06;&#x5176;&#x76D6;&#x4F4F;&#xFF1B;</p>
</li>
<li>
<p><code>[bg][fg]overlay[rgb];</code></p>
<p>&#x7136;&#x540E;&#x901A;&#x8FC7;overlay&#x5C06;fg&#x76D6;&#x5728;bg&#x4E0A;&#x65B9;&#xFF1B;</p>
</li>
<li>
<p><code>[mask]pad=iw*2:ih[mask];</code></p>
<p>&#x5C06;&#x906E;&#x7F69;&#x5BBD;&#x5EA6;*2&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x7ED9;&#x5B83;&#x53F3;&#x4FA7;&#x589E;&#x52A0;&#x4E00;&#x5757;&#x7A7A;&#x767D;&#xFF1B;</p>
</li>
<li>
<p><code>[mask][rgb]overlay=w:0</code></p>
<p>&#x6700;&#x540E;&#x5C06;rgb&#x653E;&#x5230;mask&#x7684;&#x53F3;&#x4FA7;&#x3002;</p>
<p>&#x8FD9;&#x91CC;&#x4E4B;&#x6240;&#x4EE5;&#x5148;&#x7ED8;&#x5236;&#x4E00;&#x4E2A;&#x9ED1;&#x8272;&#x5E95;&#x8272;&#xFF0C;&#x662F;&#x56E0;&#x4E3A;&#x6709;&#x7684;&#x8F6F;&#x4EF6;&#x5BFC;&#x51FA;&#x7684;PNG&#x56FE;&#x7247;&#xFF0C;&#x5728;Alpha&#x901A;&#x9053;&#x4E3A;0&#x50CF;&#x7D20;&#x4E0A;&#xFF0C;RGB&#x4E09;&#x4E2A;&#x901A;&#x9053;&#x7684;&#x503C;&#x53EF;&#x80FD;&#x662F;&#x968F;&#x673A;&#x6570;&#xFF1B;&#x5982;&#x679C;&#x4E0D;&#x505A;&#x5E95;&#x8272;&#x7684;&#x8BDD;&#xFF0C;ffmpeg&#x4F1A;&#x76F4;&#x63A5;&#x5C06;&#x8FD9;&#x4E9B;&#x968F;&#x673A;&#x6570;&#x663E;&#x793A;&#x51FA;&#x6765;&#xFF0C;&#x5C31;&#x4F1A;&#x5BFC;&#x81F4;&#x7C7B;&#x4F3C;&#x4E8E;&#x8FD9;&#x6837;&#x7684;&#x56FE;&#x50CF;&#xFF1A;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/images/image_dVJnfdFXh2.png" alt loading="lazy"></p>
</li>
</ul>
<p>&#x7ECF;&#x8FC7;&#x4E0A;&#x9762;&#x51E0;&#x6B65;&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x5B8C;&#x6210;&#x8FD9;&#x4E2A;&#x8F6C;&#x6362;&#x3002;</p>
<p>&#x53E6;&#x5916;&#xFF0C;&#x5176;&#x4E2D;&#x7684;<code>-r 25</code>&#x9009;&#x9879;&#x7528;&#x6765;&#x63A7;&#x5236;&#x5E8F;&#x5217;&#x5E27;&#x7684;&#x5E27;&#x7387;&#x4E3A;25fps&#x3002;</p>
<p>&#x901A;&#x8FC7;filter&#x53CD;&#x5411;&#x8FD8;&#x539F;&#x5E8F;&#x5217;&#x5E27;&#x4E5F;&#x662F;&#x53EF;&#x884C;&#x7684;&#xFF0C;&#x601D;&#x8DEF;&#x5DEE;&#x4E0D;&#x591A;&#x3002;</p>
<h3 id="%E8%8E%B7%E5%8F%96%E5%B8%AE%E5%8A%A9">&#x83B7;&#x53D6;&#x5E2E;&#x52A9;</h3>
<p>&#x5982;&#x679C;&#x8981;&#x5BF9;ffmpeg&#x3001;ffplay&#x3001;ffprobe&#x8FD9;&#x4E9B;&#x547D;&#x4EE4;&#x6709;&#x66F4;&#x8BE6;&#x7EC6;&#x7684;&#x8BA4;&#x8BC6;&#xFF0C;&#x6709;&#x4E24;&#x79CD;&#x65B9;&#x5F0F;&#xFF1A;</p>
<ol>
<li>&#x5728;Mac&#x6216;&#x8005;Linux&#x4E0A;&#x4F7F;&#x7528;&#x5305;&#x7BA1;&#x7406;&#x5668;&#x5B89;&#x88C5;FFmpeg&#x4E4B;&#x540E;&#xFF0C;&#x9ED8;&#x8BA4;&#x4F1A;&#x5E26;&#x4E0A;FFmpeg&#x7684;&#x6240;&#x6709;&#x6587;&#x6863;&#xFF0C;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x547D;&#x4EE4;&#x884C;&#x4E0B;&#x6267;&#x884C;<code>man ffmpeg</code>&#x3001;<code>man ffmpeg-all</code>&#x3001;<code>man ffplay</code>&#x3001;<code>man ffprobe</code>&#x6765;&#x67E5;&#x770B;&#xFF0C;&#x91CC;&#x9762;&#x6709;&#x5B8C;&#x6574;&#x7684;&#x53C2;&#x6570;&#x4FE1;&#x606F;&#x3002;</li>
<li>&#x6216;&#x8005;&#x67E5;&#x770B;&#x5B98;&#x7F51;&#x4E0A;&#x9762;&#x7684;&#x5728;&#x7EBF;&#x6587;&#x6863;&#xFF0C;&#x4F1A;&#x66F4;&#x65B9;&#x4FBF;&#x4E00;&#x4E9B;&#xFF1A;<a href="https://www.ffmpeg.org/ffmpeg.html" title="ffmpeg Documentation">ffmpeg Documentation</a>&#x3002;</li>
</ol>
<p>&#x5982;&#x679C;&#x5728;&#x4F7F;&#x7528;&#x8FC7;&#x7A0B;&#x4E2D;&#xFF0C;&#x9700;&#x8981;&#x67D0;&#x4E2A;&#x7F16;&#x89E3;&#x7801;&#x5668;&#x6216;&#x8005;filter&#x7684;&#x6587;&#x6863;&#xFF0C;&#x4E5F;&#x968F;&#x65F6;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x547D;&#x4EE4;&#x884C;&#x67E5;&#x770B;&#xFF1A;</p>
<pre><code class="language-bash"># &#x67E5;&#x770B;&#x6240;&#x6709;&#x89E3;&#x7801;&#x5668;
ffmpeg -decoders
# &#x67E5;&#x770B;&#x6240;&#x6709;&#x7F16;&#x7801;&#x5668;
ffmpeg -encoders
# &#x67E5;&#x770B;&#x6240;&#x6709;muxer
ffmpeg -muxers
# &#x67E5;&#x770B;&#x6240;&#x6709;demuxer
ffmpeg -demuxers
# &#x67E5;&#x770B;&#x6240;&#x6709;filter
ffmpeg -filters

# &#x83B7;&#x53D6;&#x67D0;&#x4E2A;&#x89E3;&#x7801;&#x5668;&#x7684;&#x6587;&#x6863;
ffmpeg -h decoder=hevc
# &#x83B7;&#x53D6;&#x67D0;&#x4E2A;&#x7F16;&#x7801;&#x5668;&#x7684;&#x6587;&#x6863;
ffmpeg -h encoder=hevc
# &#x67E5;&#x770B;&#x67D0;&#x4E2A;muxer&#x7684;&#x6587;&#x6863;
ffmpeg -h muxer=mp4
# &#x67E5;&#x770B;&#x67D0;&#x4E2A;demuxer&#x7684;&#x6587;&#x6863;
ffmpeg -h demuxer=mp4
# &#x83B7;&#x53D6;&#x67D0;&#x4E2A;filter&#x7684;&#x6587;&#x6863;
ffmpeg -h filter=pad
</code></pre>
<p>&#x8FD9;&#x4E9B;&#x5E2E;&#x52A9;&#x4FE1;&#x606F;&#x4E2D;&#xFF0C;&#x5927;&#x591A;&#x6570;&#x65F6;&#x5019;&#x5305;&#x542B;&#x4E86;encoder/decoder/muxer/demuxer&#x7684;&#x53EF;&#x914D;&#x7F6E;&#x53C2;&#x6570;&#x7684;&#x89E3;&#x91CA;&#xFF0C;&#x6216;&#x662F;filter&#x7684;&#x529F;&#x80FD;&#x3001;&#x8F93;&#x5165;&#x8F93;&#x51FA;&#x3001;&#x53C2;&#x6570;&#x7C7B;&#x578B;&#x548C;&#x8BF4;&#x660E;&#x7B49;&#x3002;</p>
<p>&#x540C;&#x6837;&#x7684;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x53BB;&#x5B98;&#x7F51;&#x4E0A;&#x9762;&#x67E5;&#xFF1A;<a href="https://www.ffmpeg.org/documentation.html" title="Documentation">Documentation</a>&#x3002;</p>
<p>&#x4F8B;&#x5982;&#xFF0C;&#x5982;&#x679C;&#x60F3;&#x8981;&#x8C03;&#x8282;&#x8F93;&#x51FA;webp&#x52A8;&#x56FE;&#x7684;&#x8D28;&#x91CF;&#xFF0C;&#x4F46;&#x662F;&#x4E0D;&#x77E5;&#x9053;&#x600E;&#x4E48;&#x8C03;&#x8282;&#xFF0C;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;<code>ffmpeg -h encoder=libwebp_anim</code>&#x547D;&#x4EE4;&#x6765;&#x67E5;&#x770B;&#x8FD9;&#x4E2A;&#x7F16;&#x7801;&#x5668;&#x652F;&#x6301;&#x7684;&#x53C2;&#x6570;&#xFF0C;&#x4F1A;&#x53D1;&#x73B0;&#x5176;&#x4E2D;&#x6709;&#x4E00;&#x4E2A;&#x53C2;&#x6570;&#xFF0C;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/FFmpeg%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%AE%80%E4%BB%8B/images/image_VqkWf1wY4S.png" alt loading="lazy"></p>
<p>&#x56E0;&#x6B64;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x8FD9;&#x4E2A;&#x53C2;&#x6570;&#x6765;&#x6307;&#x5B9A;webp&#x8D28;&#x91CF;&#xFF0C;&#x4F8B;&#x5982;&#xFF1A;</p>
<p><code>ffmpeg -i i.mp4</code> <code>-c libwebp_anim -quality 30</code> <code>o.webp</code></p>
<h2 id="%E6%BA%90%E7%A0%81">&#x6E90;&#x7801;</h2>
<p>FFmpeg&#x662F;&#x4E00;&#x4E2A;&#x7528;C&#x5199;&#x7684;&#x9879;&#x76EE;&#xFF0C;&#x5B83;&#x7684;&#x4EE3;&#x7801;&#x7ED3;&#x6784;&#x5F88;&#x6E05;&#x6670;&#xFF0C;&#x6574;&#x4F53;&#x88AB;&#x5206;&#x6210;&#x4E86;&#x51E0;&#x4E2A;&#x5927;&#x7684;&#x6A21;&#x5757;&#xFF1A;</p>
<ul>
<li>libavcodec &#x7F16;&#x89E3;&#x7801;&#x5668;</li>
<li>libavformat &#x5C01;&#x88C5;&#x3001;&#x89E3;&#x5C01;&#x88C5;&#x5E93;</li>
<li>libavfilter Filter&#x5E93;&#xFF0C;&#x7528;&#x4E8E;&#x5BF9;&#x5A92;&#x4F53;&#x6570;&#x636E;&#x505A;&#x4E2D;&#x95F4;&#x5904;&#x7406;</li>
<li>libavdevice &#x7528;&#x4E8E;&#x652F;&#x6301;&#x5728;&#x5404;&#x4E2A;&#x5E73;&#x53F0;&#x4E0A;&#x8BBF;&#x95EE;&#x5A92;&#x4F53;&#x786C;&#x4EF6;&#xFF08;&#x5982;&#x6444;&#x50CF;&#x5934;&#x3001;&#x9EA6;&#x514B;&#x98CE;&#x3001;&#x5C4F;&#x5E55;&#x7B49;&#xFF09;</li>
<li>libswscale &#x9AD8;&#x6027;&#x80FD;&#x7684;&#x56FE;&#x50CF;&#x7F29;&#x653E;&#x548C;&#x8272;&#x5F69;&#x7A7A;&#x95F4;&#x8F6C;&#x6362;&#x5E93;</li>
<li>libswresample &#x9AD8;&#x6027;&#x80FD;&#x7684;&#x97F3;&#x9891;&#x91CD;&#x91C7;&#x6837;&#x5E93;</li>
<li>libavutil &#x4E00;&#x4E9B;&#x901A;&#x7528;&#x7684;&#x5DE5;&#x5177;&#x51FD;&#x6570;</li>
</ul>
<p>&#x8FD9;&#x4E9B;&#x6A21;&#x5757;&#x90FD;&#x53EF;&#x4EE5;&#x7F16;&#x8BD1;&#x6210;.so&#xFF0C;&#x5982;&#x679C;&#x662F;&#x8981;&#x5728;&#x4EE3;&#x7801;&#x4E2D;&#x4F7F;&#x7528;&#xFF0C;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x5F15;&#x7528;&#x8FD9;&#x4E9B;.so&#x3002;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[网件4300v2无限重启救砖 - USB2TTL & UBoot]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h2 id>&#x95EE;&#x9898;&#x548C;&#x65B9;&#x6848;</h2>
<p>&#x534A;&#x5E74;&#x524D;&#x4E70;&#x4E86;&#x4E2A;&#x7F51;&#x4EF6;4300&#x8DEF;&#x7531;&#x5668;&#xFF0C;&#x633A;&#x597D;&#x7528;&#x7684;&#x3002;&#x540E;&#x6765;&#x56E0;&#x4E3A;PicoVR&#x7684;PC&#x4E32;&#x6D41;&#x9700;&#x8981;Wifi6&#xFF0C;&#x6362;&#x6210;&#x4E86;&#x5C0F;&#x7C73;ax3000&#xFF0C;ax3000&#x5230;&#x624B;&#x540E;&#x624D;&#x53D1;&#x73B0;</p>]]></description><link>https://blog.ykai.cc/wang-jian-4300v2wu-xian-zhong-qi-jiu-zhuan-usb2ttl-uboot/</link><guid isPermaLink="false">6331df653945280001365bf6</guid><category><![CDATA[openwrt]]></category><dc:creator><![CDATA[Yingkai Dang]]></dc:creator><pubDate>Sun, 25 Sep 2022 13:05:36 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id>&#x95EE;&#x9898;&#x548C;&#x65B9;&#x6848;</h2>
<p>&#x534A;&#x5E74;&#x524D;&#x4E70;&#x4E86;&#x4E2A;&#x7F51;&#x4EF6;4300&#x8DEF;&#x7531;&#x5668;&#xFF0C;&#x633A;&#x597D;&#x7528;&#x7684;&#x3002;&#x540E;&#x6765;&#x56E0;&#x4E3A;PicoVR&#x7684;PC&#x4E32;&#x6D41;&#x9700;&#x8981;Wifi6&#xFF0C;&#x6362;&#x6210;&#x4E86;&#x5C0F;&#x7C73;ax3000&#xFF0C;ax3000&#x5230;&#x624B;&#x540E;&#x624D;&#x53D1;&#x73B0;&#x4E0D;&#x80FD;&#x5237;openwrt&#xFF0C;&#x6240;&#x4EE5;&#x73B0;&#x5728;&#x5185;&#x7F51;&#x91CC;&#x9762;&#x7684;DNS&#x8FD8;&#x662F;&#x7528;&#x7684;&#x7F51;&#x4EF6;4300&#x3002;</p>
<p>&#x524D;&#x6BB5;&#x65F6;&#x95F4;&#x4E0D;&#x77E5;&#x9053;&#x5E72;&#x4E86;&#x5565;&#xFF0C;&#x7ECF;&#x8FC7;&#x4E00;&#x6B21;&#x505C;&#x7535;&#x4E4B;&#x540E;&#xFF0C;4300&#x5C31;&#x518D;&#x4E5F;&#x542F;&#x52A8;&#x4E0D;&#x8D77;&#x6765;&#x4E86;&#xFF0C;&#x4E00;&#x76F4;&#x65E0;&#x9650;&#x91CD;&#x542F;&#xFF0C;tftp&#x5237;&#x673A;&#x6A21;&#x5F0F;&#x4E5F;&#x8FDB;&#x4E0D;&#x53BB;&#x3002;&#x5728;&#x7F51;&#x4E0A;&#x770B;&#x5230;4300&#x6709;&#x4E2A;<a href="https://zh.m.wikipedia.org/zh-hans/UART">UART&#x63A5;&#x53E3;</a>&#xFF0C;&#x8FD9;&#x4E2A;&#x63A5;&#x53E3;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;USB&#x8F6C;&#x63A5;&#x5934;&#x6765;&#x4E32;&#x53E3;&#x8FDE;&#x63A5;&#x5230;&#x7535;&#x8111;&#x4E0A;&#xFF0C;&#x8FDE;&#x4E0A;&#x4E4B;&#x540E;&#x53EF;&#x4EE5;&#x8FDB;&#x5165;&#x5230;<a href="https://zh.wikipedia.org/zh-cn/Das_U-Boot">uboot</a>&#x6765;&#x6062;&#x590D;&#x7CFB;&#x7EDF;&#x3002;</p>
<h2 id>&#x7269;&#x7406;&#x8FDE;&#x63A5;</h2>
<p>USB&#x8F6C;&#x63A5;&#x5934;&#x5728;&#x6DD8;&#x5B9D;&#x4E0A;&#x4E70;&#x7684;&#xFF0C;&#x5341;&#x51E0;&#x5757;&#x94B1;&#x4E00;&#x4E2A;&#xFF0C;&#x5927;&#x6982;&#x957F;&#x8FD9;&#x6837;&#xFF08;&#x6DD8;&#x5B9D;&#x641C;&#x7D22;&#x201C;USB TTL&#x201D;&#x5927;&#x6982;&#x5C31;&#x80FD;&#x641C;&#x5230;&#xFF09;&#xFF1A;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E7%BD%91%E4%BB%B64300v2%E6%97%A0%E9%99%90%E9%87%8D%E5%90%AF%E6%95%91%E7%A0%96%20-%20USB2TTL%20%26%20UBoot/%E7%BD%91%E4%BB%B64300v2%E6%97%A0%E9%99%90%E9%87%8D%E5%90%AF%E6%95%91%E7%A0%96%20-%20USB2TTL%20%26%20UBoot/images/USB-TTL.jpg" alt="USB TTL" loading="lazy"></p>
<p>&#x7136;&#x540E;&#x628A;&#x8DEF;&#x7531;&#x5668;&#x62C6;&#x5F00;&#xFF0C;&#x5728;&#x4E00;&#x4E2A;&#x89D2;&#x843D;&#x4F1A;&#x6709;&#x56DB;&#x4E2A;&#x9732;&#x51FA;&#x6765;&#x7684;&#x5F15;&#x811A;&#xFF1A;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E7%BD%91%E4%BB%B64300v2%E6%97%A0%E9%99%90%E9%87%8D%E5%90%AF%E6%95%91%E7%A0%96%20-%20USB2TTL%20%26%20UBoot/%E7%BD%91%E4%BB%B64300v2%E6%97%A0%E9%99%90%E9%87%8D%E5%90%AF%E6%95%91%E7%A0%96%20-%20USB2TTL%20%26%20UBoot/images/4300-UART.jpg" alt="uart" loading="lazy"></p>
<p>&#x628A;&#x8FD9;&#x4E9B;&#x5F15;&#x811A;&#x653E;&#x5230;&#x5DE6;&#x4E0B;&#x89D2;&#xFF0C;&#x5F15;&#x811A;&#x671D;&#x4E0A;&#xFF0C;&#x90A3;&#x8FD9;&#x56DB;&#x4E2A;&#x5F15;&#x811A;&#x4ECE;&#x4E0A;&#x5230;&#x4E0B;&#x7684;&#x987A;&#x5E8F;&#x5206;&#x522B;&#x662F;&#xFF1A;<code>OPEN</code>&#x3001;<code>TX</code>&#x3001;<code>RX</code>&#x3001;<code>GND</code>&#xFF08;&#x8FD9;&#x91CC;&#x7684;<code>OPEN</code>&#x811A;&#x8FD9;&#x6B21;&#x7528;&#x4E0D;&#x5230;&#xFF09;&#x3002;</p>
<p>&#x7136;&#x540E;&#x53EF;&#x4EE5;&#x7528;&#x675C;&#x90A6;&#x7EBF;&#x628A;&#x8F6C;&#x63A5;&#x5934;&#x548C;UART&#x5F15;&#x811A;&#x8FDE;&#x63A5;&#x8D77;&#x6765;&#xFF0C;&#x8FDE;&#x63A5;&#x65B9;&#x5F0F;&#x4E3A;<code>GND-GND</code>&#x3001;<code>RX-TX</code>&#x3001;<code>TX-RX</code>&#xFF0C;<code>OPEN</code>&#x811A;&#x4E0D;&#x8FDE;&#x3002;&#x8FD9;&#x91CC;&#x8FDE;&#x7684;&#x65F6;&#x5019;&#x4E00;&#x5B9A;&#x8981;&#x6CE8;&#x610F;&#xFF0C;&#x4E24;&#x8FB9;&#x7684;RX&#x548C;TX&#x662F;&#x53CD;&#x7740;&#x7684;&#x3002;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E7%BD%91%E4%BB%B64300v2%E6%97%A0%E9%99%90%E9%87%8D%E5%90%AF%E6%95%91%E7%A0%96%20-%20USB2TTL%20%26%20UBoot/%E7%BD%91%E4%BB%B64300v2%E6%97%A0%E9%99%90%E9%87%8D%E5%90%AF%E6%95%91%E7%A0%96%20-%20USB2TTL%20%26%20UBoot/images/conn.jpg" alt="conn" loading="lazy"></p>
<p>&#x8FDE;&#x597D;&#x4E4B;&#x540E;&#x628A;USB&#x63D2;&#x5230;&#x7535;&#x8111;&#x4E0A;&#x5C31;&#x53EF;&#x4EE5;&#x4E0B;&#x4E00;&#x6B65;&#x4E86;&#x3002;</p>
<h2 id>&#x8FDE;&#x63A5;&#x4E32;&#x53E3;</h2>
<p>&#x8FD9;&#x4E00;&#x6B65;&#x4E3B;&#x8981;&#x662F;&#x5728;&#x7535;&#x8111;&#x4E0A;&#x914D;&#x7F6E;&#xFF0C;&#x7F51;&#x4E0A;&#x76EE;&#x524D;Windows&#x5E73;&#x53F0;&#x7684;&#x6559;&#x7A0B;&#x5C45;&#x591A;&#xFF0C;&#x8FD9;&#x6B21;&#x6211;&#x6478;&#x7D22;&#x7740;&#x5728;Linux&#x5F04;&#x597D;&#x4E86;&#x3002;</p>
<p>&#xFF08;&#x8FD9;&#x79CD;&#x65B9;&#x6CD5;&#x6BD4;&#x8F83;&#x9EBB;&#x70E6;&#xFF0C;&#x5982;&#x679C;&#x60F3;&#x7701;&#x4E8B;&#x53EF;&#x4EE5;&#x770B;&#x4E0B;&#x9762;&#x7684; <a href="#picocom">&#x8FDE;&#x63A5;&#x4E32;&#x53E3; - picocom</a> &#x4E00;&#x8282;&#xFF09;</p>
<p>&#x9996;&#x5148;&#x662F;&#x9700;&#x8981;&#x51E0;&#x4E2A;&#x7A0B;&#x5E8F;&#xFF1A;</p>
<ul>
<li><code>screen</code>&#xFF1A;&#x4E5F;&#x5C31;&#x662F;GNU Screen&#xFF0C;&#x7528;&#x6765;&#x8FDE;&#x63A5;tty&#x8BBE;&#x5907;</li>
<li><a href="https://github.com/edgesider/baud"><code>baud</code></a>&#xFF1A;&#x8FD9;&#x4E2A;&#x662F;&#x4E3A;&#x4E86;&#x4FEE;&#x6539;&#x6CE2;&#x7279;&#x7387;&#x7684;</li>
</ul>
<h3 id="tty">&#x8FDE;&#x63A5;tty</h3>
<p>USB&#x63A5;&#x53E3;&#x8FDE;&#x5230;&#x7535;&#x8111;&#x4E0A;&#x4E4B;&#x540E;&#xFF0C;&#x4F1A;&#x51FA;&#x73B0;&#x4E00;&#x4E2A;&#x65B0;&#x7684;tty&#x8BBE;&#x5907;<code>/dev/ttyUSB0</code>&#xFF0C;&#x901A;&#x8FC7;&#x5BF9;&#x8FD9;&#x4E2A;&#x8BBE;&#x5907;&#x8FDB;&#x884C;&#x8BFB;&#x5199;&#xFF0C;&#x6211;&#x4EEC;&#x5C31;&#x53EF;&#x4EE5;&#x548C;&#x8DEF;&#x7531;&#x5668;&#x8FDB;&#x884C;&#x4EA4;&#x6D41;&#x3002;&#x8FD9;&#x9700;&#x8981;&#x501F;&#x52A9;&#x4E00;&#x4E9B;&#x7EC8;&#x7AEF;&#x8F6F;&#x4EF6;&#xFF0C;&#x8FD9;&#x6B21;&#x6211;&#x4F7F;&#x7528;&#x7684;&#x662F;<code>screen</code>&#x3002;</p>
<p>&#x7528;&#x6CD5;&#x4E5F;&#x5F88;&#x7B80;&#x5355;&#xFF0C;<code>sudo screen /dev/ttyUSB0</code>&#x5373;&#x53EF;&#x3002;</p>
<p>&#x5982;&#x679C;&#x9700;&#x8981;&#x65AD;&#x5F00;&#xFF0C;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;<code>ctrl-a K</code>&#x7136;&#x540E;&#x6309;<code>y</code>&#x7684;&#x7EC4;&#x5408;&#x952E;&#x6765;&#x5173;&#x95ED;screen&#x3002;</p>
<h3 id>&#x4FEE;&#x6539;&#x6CE2;&#x7279;&#x7387;</h3>
<p>&#x6253;&#x5F00;screen&#x4E4B;&#x540E;&#x542F;&#x52A8;&#x8DEF;&#x7531;&#x5668;&#xFF0C;&#x8FD9;&#x65F6;&#x5019;&#x4F1A;&#x53D1;&#x73B0;&#x7EC8;&#x7AEF;&#x91CC;&#x9762;&#x53EF;&#x80FD;&#x662F;&#x4E71;&#x7801;&#x7684;&#xFF0C;&#x8FD9;&#x662F;&#x56E0;&#x4E3A;&#x6CE2;&#x7279;&#x7387;&#x6CA1;&#x6709;&#x8BBE;&#x7F6E;&#x597D;&#x3002;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E7%BD%91%E4%BB%B64300v2%E6%97%A0%E9%99%90%E9%87%8D%E5%90%AF%E6%95%91%E7%A0%96%20-%20USB2TTL%20%26%20UBoot/%E7%BD%91%E4%BB%B64300v2%E6%97%A0%E9%99%90%E9%87%8D%E5%90%AF%E6%95%91%E7%A0%96%20-%20USB2TTL%20%26%20UBoot/images/mojibake.png" alt="mojibake" loading="lazy"></p>
<p>&#x53C2;&#x8003;<a href="https://zhuanlan.zhihu.com/p/76589656">&#x8FD9;&#x7BC7;&#x6587;&#x7AE0;</a>&#xFF0C;4300&#x8FD9;&#x4E2A;&#x82AF;&#x7247;&#x5728;&#x5F15;&#x5BFC;&#x7684;&#x65F6;&#x5019;&#xFF08;uboot&#x9636;&#x6BB5;&#xFF09;&#xFF0C;&#x6CE2;&#x7279;&#x7387;&#x9700;&#x8981;&#x662F;116600~126300&#x4E4B;&#x95F4;&#x7684;&#x503C;&#xFF0C;&#x8FD9;&#x91CC;&#x6211;&#x4EEC;&#x7528;117200&#x3002;</p>
<blockquote>
<p>&#x5982;&#x679C;&#x6709;&#x4E71;&#x7801;&#xFF0C;&#x786E;&#x5B9A;&#x675C;&#x90A6;&#x7EBF;&#x672C;&#x8EAB;&#x6CA1;&#x574F;&#xFF0C;&#x9488;&#x811A;&#x6CA1;&#x63A5;&#x9519;&#xFF0C;&#x90A3;&#x4E00;&#x822C;&#x60C5;&#x51B5;&#x662F;&#x6CE2;&#x7279;&#x7387;&#x7684;&#x95EE;&#x9898;&#xFF0C;&#x6D4B;&#x6CE2;&#x7279;&#x7387;&#x8981;&#x7528;&#x793A;&#x6CE2;&#x5668;&#x3002;&#x6211;&#x64CD;&#x4F5C;&#x5230;&#x8FD9;&#x4E00;&#x6B65;&#x65F6;&#x5C31;&#x662F;&#x4E71;&#x7801;&#xFF0C;&#x4F46;&#x662F;&#x6211;&#x6CA1;&#x6709;&#x793A;&#x6CE2;&#x5668;&#xFF0C;&#x67D0;&#x7535;&#x5546;&#x7F51;&#x7AD9;&#x4E0A;&#x7684;&#x62A5;&#x4EF7;&#x662F;&#x4E00;&#x4E24;&#x5343;&#x5757;&#x94B1;&#x4E00;&#x53F0;&#xFF0C;&#x6211;&#x8FD9;&#x4E00;&#x53F0;&#x4E8C;&#x624B;&#x8DEF;&#x7531;&#x5668;&#x624D;&#x767E;&#x5143;&#x5DE6;&#x53F3;&#xFF0C;&#x4E3A;&#x5B83;&#x4E70;&#x4E2A;&#x793A;&#x6CE2;&#x5668;&#x4E0D;&#x503C;&#x554A;&#x3002;&#x4E8E;&#x662F;&#x4E4E;&#xFF0C;&#x501F;&#x52A9;&#x4E07;&#x80FD;&#x7684;&#x641C;&#x7D22;&#x5F15;&#x64CE;&#x548C;&#x81EA;&#x5DF1;&#x7684;&#x5C1D;&#x8BD5;&#xFF0C;&#x6211;&#x53D1;&#x73B0;&#x6CE2;&#x7279;&#x7387;&#x8BBE;&#x7F6E;&#x4E3A;116600~126300&#x4E4B;&#x95F4;&#x7684;&#x503C;&#x65F6;&#xFF0C;&#x662F;&#x4E0D;&#x4F1A;&#x4E71;&#x7801;&#x7684;&#xFF0C;&#x53D6;&#x4E2A;117200&#xFF0C;OK&#x3002;</p>
</blockquote>
<p>&#x5728;Linux&#x4E0B;&#x8BBE;&#x7F6E;&#x6CE2;&#x7279;&#x7387;&#x4E00;&#x822C;&#x4F7F;&#x7528;stty&#x547D;&#x4EE4;&#xFF0C;&#x4F46;&#x662F;117200&#x4E0D;&#x662F;&#x4E00;&#x4E2A;&#x6807;&#x51C6;&#x6CE2;&#x7279;&#x7387;&#xFF0C;&#x6CA1;&#x6CD5;&#x7528;stty&#x8BBE;&#x7F6E;&#x3002;&#x6211;&#x5728;github&#x4E0A;&#x9762;&#x627E;&#x5230;&#x4E86;&#x4E00;&#x4E2A;<a href="https://github.com/jbkim/Linux-custom-baud-rate">&#x5C0F;&#x7A0B;&#x5E8F;</a>&#x53EF;&#x4EE5;&#x81EA;&#x5B9A;&#x4E49;&#x6CE2;&#x7279;&#x7387;&#xFF0C;&#x770B;&#x4E86;&#x4E0B;&#x539F;&#x7406;&#x7136;&#x540E;&#x81EA;&#x5DF1;&#x518D;&#x5199;&#x4E86;&#x4E00;&#x4EFD;&#xFF0C;&#x52A0;&#x4E86;&#x67E5;&#x770B;&#x6CE2;&#x7279;&#x7387;&#x4EE5;&#x53CA;&#x9519;&#x8BEF;&#x68C0;&#x67E5;&#x4E4B;&#x7C7B;&#x7684;&#xFF0C;&#x4E5F;&#x653E;&#x5230;&#x4E86;<a href="https://github.com/edgesider/baud">github&#x4E0A;&#x9762;</a>&#xFF0C;&#x5982;&#x679C;&#x6709;&#x9700;&#x8981;&#x7684;&#x8BDD;&#x53EF;&#x4EE5;&#x4E0B;&#x8F7D;&#x4E0B;&#x6765;&#x81EA;&#x884C;&#x7F16;&#x8BD1;&#x3002;</p>
<p>&#x8FD9;&#x91CC;&#x8BBE;&#x7F6E;&#x975E;&#x6807;&#x51C6;&#x6CE2;&#x7279;&#x7387;&#x7684;&#x5177;&#x4F53;&#x65B9;&#x6CD5;&#x4E5F;&#x5F88;&#x7B80;&#x5355;&#xFF0C;&#x5C31;&#x662F;&#x4F7F;&#x7528;&#x4E86;<code>struct termios2</code>&#x8FD9;&#x4E2A;&#x7ED3;&#x6784;&#xFF0C;&#x8FD9;&#x4E2A;&#x7ED3;&#x6784;&#x53EF;&#x4EE5;&#x81EA;&#x5B9A;&#x4E49;&#x6CE2;&#x7279;&#x7387;&#xFF1B;&#x800C;stty&#x7528;&#x7684;&#x662F;&#x65E7;&#x7684;<code>struct termios</code>&#xFF0C;&#x53EA;&#x652F;&#x6301;&#x4E00;&#x4E9B;&#x9884;&#x5B9A;&#x4E49;&#x7684;&#x6CE2;&#x7279;&#x7387;&#x3002;Python&#x7684;<code>termios</code>&#x6807;&#x51C6;&#x5E93;&#x4E5F;&#x662F;&#x4E00;&#x6837;&#xFF0C;&#x6CA1;&#x529E;&#x6CD5;&#x81EA;&#x5B9A;&#x4E49;&#x3002;</p>
<p><code>struct termios2</code>&#x7684;&#x8BF4;&#x660E;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;<code>man ioctl_tty</code>&#x67E5;&#x770B;&#xFF0C;&#x641C;&#x7D22;termios2&#x5373;&#x53EF;&#x3002;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E7%BD%91%E4%BB%B64300v2%E6%97%A0%E9%99%90%E9%87%8D%E5%90%AF%E6%95%91%E7%A0%96%20-%20USB2TTL%20%26%20UBoot/%E7%BD%91%E4%BB%B64300v2%E6%97%A0%E9%99%90%E9%87%8D%E5%90%AF%E6%95%91%E7%A0%96%20-%20USB2TTL%20%26%20UBoot/images/termios2.png" alt="termios2" loading="lazy"></p>
<h2 id>&#x89E3;&#x51B3;&#x95EE;&#x9898;</h2>
<p>&#x4E0D;&#x51FA;&#x610F;&#x5916;&#x7684;&#x8BDD;&#xFF0C;&#x8C03;&#x6574;&#x6CE2;&#x7279;&#x7387;&#x4E4B;&#x540E;&#x91CD;&#x542F;&#x8DEF;&#x7531;&#x5668;&#x5C31;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x4E0D;&#x4E71;&#x7801;&#x7684;&#x8F93;&#x51FA;&#x4E86;&#x3002;</p>
<p>&#x4ECE;&#x8FD9;&#x91CC;&#x7684;&#x8F93;&#x51FA;&#x5C31;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x65E0;&#x9650;&#x91CD;&#x542F;&#x7684;&#x539F;&#x56E0;&#x662F;&#x4E00;&#x4E2A;<code>mtd</code>&#x5206;&#x533A;&#x6302;&#x8F7D;&#x5931;&#x8D25;&#xFF0C;&#x5BFC;&#x81F4;&#x5185;&#x6838;&#x5D29;&#x6E83;&#x4E86;&#x3002;&#x622A;&#x56FE;&#x6211;&#x5FD8;&#x8BB0;&#x7559;&#x4E86;&#xFF0C;&#x4F46;&#x662F;&#x548C;openwrt&#x793E;&#x533A;&#x7684;&#x8FD9;&#x4E2A;&#x5E16;&#x5B50;&#x51E0;&#x4E4E;&#x4E00;&#x6A21;&#x4E00;&#x6837;&#xFF1A;<a href="https://forum.openwrt.org/t/wndr4500v3-kernel-panic-not-syncing-vfs/68815">Kernel Panic - not syncing: VFS</a>&#xFF0C;&#x53EF;&#x4EE5;&#x4F5C;&#x4E3A;&#x53C2;&#x8003;&#x3002;</p>
<p>&#x89E3;&#x51B3;&#x65B9;&#x5F0F;&#x5C31;&#x662F;&#x5E16;&#x5B50;&#x4E8C;&#x3001;&#x4E09;&#x697C;&#x7684;&#x8001;&#x54E5;&#x8BF4;&#x7684;&#xFF0C;&#x9700;&#x8981;&#x4ECE;openwrt&#x7684;initramfs&#x91CD;&#x65B0;&#x683C;&#x5F0F;&#x5316;&#x4E00;&#x4E0B;&#x5206;&#x533A;&#x3002;</p>
<h3 id="uboot">&#x8FDB;&#x5165;uboot&#x547D;&#x4EE4;&#x884C;</h3>
<p>&#x5728;&#x7CFB;&#x7EDF;&#x542F;&#x52A8;&#x8FC7;&#x7A0B;&#x4E2D;&#xFF0C;&#x4F1A;&#x51FA;&#x73B0;&#x8FD9;&#x6837;&#x4E00;&#x4E32;&#x5B57;&#x7B26;&#xFF1A;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E7%BD%91%E4%BB%B64300v2%E6%97%A0%E9%99%90%E9%87%8D%E5%90%AF%E6%95%91%E7%A0%96%20-%20USB2TTL%20%26%20UBoot/%E7%BD%91%E4%BB%B64300v2%E6%97%A0%E9%99%90%E9%87%8D%E5%90%AF%E6%95%91%E7%A0%96%20-%20USB2TTL%20%26%20UBoot/images/autoboot.png" alt="autoboot" loading="lazy"></p>
<p>&#x8FD9;&#x91CC;&#x4F1A;&#x5012;&#x8BA1;&#x65F6;&#x4E09;&#x79D2;&#xFF0C;&#x5728;&#x4E09;&#x79D2;&#x671F;&#x95F4;&#x6309;&#x56DE;&#x8F66;&#x5C31;&#x53EF;&#x4EE5;&#x800C;&#x8FDB;&#x5165;uboot&#x7684;&#x547D;&#x4EE4;&#x884C;&#xFF0C;&#x8FD9;&#x91CC;&#x7684;<code>ath&gt; </code>&#x5C31;&#x662F;&#x63D0;&#x793A;&#x7B26;&#x3002;</p>
<h3 id="tftpboot">tftpboot</h3>
<p>&#x63A5;&#x4E0B;&#x6765;&#x6211;&#x4EEC;&#x9700;&#x8981;&#x901A;&#x8FC7;uboot&#x7684;tftp&#x542F;&#x52A8;&#x5230;openwrt&#x7684;initramfs&#x91CC;&#x5934;&#xFF0C;&#x9996;&#x5148;&#x9700;&#x8981;&#x4ECE;<a href="https://downloads.openwrt.org/snapshots/targets/ath79/nand/">&#x8FD9;&#x91CC;</a>&#x4E0B;&#x8F7D;&#x955C;&#x50CF;&#xFF0C;&#x627E;<code>netgear_wndr4300-v2-initramfs-kernel.bin</code>&#x8FD9;&#x4E2A;&#x6587;&#x4EF6;&#x5373;&#x53EF;&#x3002;</p>
<p>&#x7136;&#x540E;&#x5728;uboot&#x4E2D;&#x8F93;&#x5165;<code>tftpboot</code>&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x5B83;&#x5DF2;&#x7ECF;&#x5728;&#x7B49;&#x5F85;tftp&#x670D;&#x52A1;&#x5668;&#x4E86;&#xFF1A;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/%E7%BD%91%E4%BB%B64300v2%E6%97%A0%E9%99%90%E9%87%8D%E5%90%AF%E6%95%91%E7%A0%96%20-%20USB2TTL%20%26%20UBoot/%E7%BD%91%E4%BB%B64300v2%E6%97%A0%E9%99%90%E9%87%8D%E5%90%AF%E6%95%91%E7%A0%96%20-%20USB2TTL%20%26%20UBoot/images/tftpboot.png" alt="tftpboot" loading="lazy"></p>
<p>&#x6839;&#x636E;&#x8FD9;&#x91CC;&#x7684;&#x63D0;&#x793A;&#xFF0C;&#x6211;&#x4EEC;&#x9700;&#x8981;&#x5728;ip&#x4E3A;192.168.1.101&#x7684;&#x8BBE;&#x5907;&#x4E0A;&#x901A;&#x8FC7;tftp&#x670D;&#x52A1;&#x63D0;&#x4F9B;&#x4E00;&#x4E2A;&#x53EB;&#x505A;<code>0101A8C0.img</code>&#x7684;&#x6587;&#x4EF6;&#x3002;</p>
<p>&#x9996;&#x5148;&#x8BBE;&#x7F6E;&#x7F51;&#x7EDC;&#xFF0C;&#x901A;&#x8FC7;&#x7F51;&#x7EBF;&#x5C06;&#x8DEF;&#x7531;&#x5668;&#x7684;lan&#x53E3;&#xFF08;&#x56DB;&#x4E2A;&#x9ED1;&#x8272;&#x4E2D;&#x7684;&#x4E00;&#x4E2A;&#xFF09;&#x548C;&#x7535;&#x8111;&#x8FDE;&#x4E0A;&#xFF0C;&#x7136;&#x540E;&#x5728;&#x7535;&#x8111;&#x4E0A;&#x914D;&#x7F6E;&#x9759;&#x6001;&#x8DEF;&#x7531;&#xFF0C;ip&#x4E3A;192.168.1.101&#xFF0C;&#x7F51;&#x5173;&#x4E3A;192.168.1.1&#xFF0C;&#x8BBE;&#x7F6E;&#x597D;&#x4E4B;&#x540E;&#x786E;&#x4FDD;&#x53EF;&#x4EE5;ping&#x901A;192.168.1.1&#x3002;</p>
<p>&#x7136;&#x540E;&#x5F00;&#x542F;tftp&#x670D;&#x52A1;&#xFF0C;&#x8FD9;&#x91CC;&#x6211;&#x7528;&#x7684;&#x662F;<a href="https://wiki.archlinux.org/title/TFTP#uftpd">uftpd</a>&#x3002;<code>uftpd -n -o ftp=0,tftp=69 .</code>&#x5373;&#x53EF;&#xFF0C;&#x9700;&#x8981;&#x6CE8;&#x610F;&#x6700;&#x540E;&#x4E00;&#x4E2A;&#x53C2;&#x6570;&#x6307;&#x5B9A;&#x7684;&#x8DEF;&#x5F84;&#x91CC;&#x9762;&#x8981;&#x6709;&#x4E00;&#x4E2A;&#x540D;&#x5B57;&#x4E3A;<code>0101A8C0.img</code>&#x7684;&#x6587;&#x4EF6;&#xFF0C;&#x8FD9;&#x4E2A;&#x6587;&#x4EF6;&#x5C31;&#x662F;&#x4E4B;&#x524D;&#x4E0B;&#x8F7D;&#x7684;<code>initramfs-kernel.bin</code>&#x91CD;&#x547D;&#x540D;&#x4E4B;&#x540E;&#x5F97;&#x6765;&#x7684;&#x3002;</p>
<p>&#x4E00;&#x5207;&#x987A;&#x5229;&#x7684;&#x8BDD;&#xFF0C;&#x8FD9;&#x65F6;&#x5019;&#x67E5;&#x770B;uboot&#x90A3;&#x8FB9;&#xFF0C;&#x8DEF;&#x7531;&#x5668;&#x5E94;&#x8BE5;&#x5DF2;&#x7ECF;&#x5728;&#x4E0B;&#x8F7D;&#x955C;&#x50CF;&#x4E86;&#x3002;&#x4E0B;&#x8F7D;&#x5B8C;&#x6210;&#x4E4B;&#x540E;&#xFF0C;&#x8F93;&#x5165;<code>bootm</code>&#x5C31;&#x53EF;&#x4EE5;&#x542F;&#x52A8;&#x5230;openwrt&#x91CC;&#xFF0C;&#x8FD9;&#x4E2A;&#x73AF;&#x5883;&#x53EF;&#x4EE5;&#x7406;&#x89E3;&#x4E3A;&#x4E00;&#x4E2A;&#x7C7B;&#x4F3C;PE/LiveCD&#x7684;&#x7EF4;&#x62A4;&#x73AF;&#x5883;&#x3002;</p>
<p><em>&#xFF08;&#x63D0;&#x793A;&#xFF1A;&#x9664;&#x4E86;tftpboot&#xFF0C;&#x5E94;&#x8BE5;&#x4E5F;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;bootm&#x547D;&#x4EE4;&#x6765;&#x7B49;&#x5F85;tftp&#x5BA2;&#x6237;&#x7AEF;&#x4F20;&#x9012;&#x955C;&#x50CF;&#xFF0C;&#x8FD9;&#x6837;&#x5B50;&#x7535;&#x8111;&#x4E0A;&#x53EA;&#x9700;&#x8981;tftp&#x5BA2;&#x6237;&#x7AEF;&#x5C31;&#x53EF;&#x4EE5;&#x4E86;&#xFF0C;&#x4F1A;&#x66F4;&#x597D;&#x64CD;&#x4F5C;&#x4E00;&#x4E9B;&#x3002;&#xFF09;</em></p>
<p><strong>&#x8FD9;&#x65F6;&#x5019;&#x6211;&#x53D1;&#x73B0;&#x73B0;&#x6709;&#x7684;117200&#x6CE2;&#x7279;&#x7387;&#x4F1A;&#x5BFC;&#x81F4;&#x65E0;&#x6CD5;&#x6B63;&#x786E;&#x8F93;&#x5165;&#xFF0C;&#x6240;&#x4EE5;&#x53C8;&#x9700;&#x8981;&#x901A;&#x8FC7;&#x4E0A;&#x9762;&#x90A3;&#x4E2A;&#x7A0B;&#x5E8F;&#x628A;&#x6CE2;&#x7279;&#x7387;&#x6539;&#x6210;&#x6807;&#x51C6;&#x7684;115200&#x3002;&#x8FD9;&#x91CC;&#x6211;&#x63A8;&#x6D4B;&#x662F;&#x5185;&#x6838;&#x542F;&#x52A8;&#x8D77;&#x6765;&#x4E4B;&#x540E;&#xFF0C;&#x6CE2;&#x7279;&#x7387;&#x5C31;&#x9700;&#x8981;&#x53D8;&#x6210;115200&#xFF0C;&#x800C;uboot&#x4E2D;&#x90FD;&#x9700;&#x8981;&#x4F7F;&#x7528;117200&#x3002;&#x8FD9;&#x4E00;&#x70B9;&#x5F88;&#x5751;&#xFF0C;&#x5F04;&#x4E86;&#x5F88;&#x957F;&#x65F6;&#x95F4;&#x3002;</strong></p>
<h3 id="sysupgrade">sysupgrade</h3>
<p>&#x5728;&#x8FD9;&#x4E2A;&#x7EF4;&#x62A4;&#x73AF;&#x5883;&#x4E2D;&#xFF0C;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;<code>sysupgrade</code>&#x547D;&#x4EE4;&#x5B89;&#x88C5;&#x771F;&#x5B9E;&#x7684;openwrt&#x955C;&#x50CF;&#x3002;</p>
<p>&#x9996;&#x5148;&#x5728;openwrt&#x7684;<a href="https://openwrt.org/toh/netgear/wndr4300_v2">&#x7F51;&#x4EF6;4300v2</a>&#x7684;&#x9875;&#x9762;&#x4E0A;&#x4E0B;&#x8F7D;&#x6700;&#x65B0;&#x7248;&#x672C;&#x7684;&#x955C;&#x50CF;&#x5305;&#xFF0C;&#x5F97;&#x5230;<code>squashfs-sysupgrade.bin</code>&#x6587;&#x4EF6;&#x3002;</p>
<p>&#x7136;&#x540E;&#x53EF;&#x4EE5;&#x5728;&#x8DEF;&#x7531;&#x5668;&#x7684;openwrt&#x4E2D;&#x901A;&#x8FC7;scp&#x628A;&#x7535;&#x8111;&#x4E0A;&#x7684;&#x6587;&#x4EF6;&#x590D;&#x5236;&#x8FC7;&#x6765;&#xFF0C;&#x5F53;&#x7136;&#x524D;&#x63D0;&#x8FD8;&#x662F;&#x8DEF;&#x7531;&#x5F97;&#x5148;&#x914D;&#x7F6E;&#x597D;&#xFF0C;&#x68C0;&#x67E5;&#x4E0B;&#x7535;&#x8111;&#x548C;&#x8DEF;&#x7531;&#x5668;&#x662F;&#x5426;&#x80FD;ping&#x901A;&#x3002;</p>
<p>&#x6587;&#x4EF6;&#x590D;&#x5236;&#x5230;&#x4E4B;&#x540E;&#xFF0C;<code>sysupgrade xxx-squashfs-sysupgrade.bin</code>&#x5C31;&#x53EF;&#x4EE5;&#x5F00;&#x59CB;&#x5199;&#x5165;&#x955C;&#x50CF;&#x4E86;&#xFF0C;&#x8FD9;&#x4E2A;&#x8FC7;&#x7A0B;&#x4F1A;&#x628A;&#x6240;&#x6709;&#x5206;&#x533A;&#x90FD;&#x91CD;&#x65B0;&#x683C;&#x5F0F;&#x5316;&#xFF0C;&#x56E0;&#x6B64;&#x53EF;&#x4EE5;&#x89E3;&#x51B3;&#x4E0A;&#x9762;<code>mtd</code>&#x6302;&#x8F7D;&#x5931;&#x8D25;&#x7684;&#x95EE;&#x9898;&#x3002;&#x7B49;&#x5F85;&#x5B8C;&#x6210;&#x540E;&#x81EA;&#x52A8;&#x91CD;&#x542F;&#xFF0C;&#x4E00;&#x5207;&#x5C31;&#x5927;&#x529F;&#x544A;&#x6210;&#x4E86;&#xFF0C;&#x5C31;&#x7B97;&#x8DEF;&#x7531;&#x5668;&#x91CD;&#x542F;&#x4E5F;&#x4E0D;&#x4F1A;&#x518D;&#x51FA;&#x73B0;&#x5D29;&#x6E83;&#x4E86;&#x3002;</p>
<h2 id="picocom">&#x8FDE;&#x63A5;&#x4E32;&#x53E3; - picocom</h2>
<p>&#xFF08;&#x8FD9;&#x4E00;&#x8282;&#x4F5C;&#x4E3A;&#x4E0A;&#x9762;&#x8FDE;&#x63A5;&#x4E32;&#x53E3;&#x7684;&#x8865;&#x5145;&#x3002;&#xFF09;</p>
<p>&#x4E0A;&#x9762;&#x63D0;&#x4F9B;&#x7684;<code>screen</code>+<code>baud</code>&#x7684;&#x65B9;&#x5F0F;&#x603B;&#x7684;&#x6765;&#x8BF4;&#x6BD4;&#x4EF7;&#x9EBB;&#x70E6;&#xFF0C;&#x540E;&#x6765;&#x6211;&#x53D1;&#x73B0;&#x4E86;picocom&#x8FD9;&#x4E2A;&#x5DE5;&#x5177;&#xFF0C;&#x652F;&#x6301;&#x81EA;&#x5B9A;&#x4E49;&#x6CE2;&#x7279;&#x7387;&#x3002;&#x5B89;&#x88C5;&#x4E4B;&#x540E;&#x53EA;&#x9700;&#x8981;<code>picocom -b 117200 /dev/ttyUSB0</code>&#x4E00;&#x884C;&#x547D;&#x4EE4;&#x5373;&#x53EF;&#xFF0C;&#x5176;&#x4E2D;&#x7684;<code>-b</code>&#x53C2;&#x6570;&#x5C31;&#x662F;&#x6307;&#x5B9A;&#x6CE2;&#x7279;&#x7387;&#x7684;&#xFF0C;&#x4E4B;&#x540E;&#x4EFB;&#x610F;&#x6CE2;&#x7279;&#x7387;&#x3002;</p>
<h2 id>&#x53C2;&#x8003;</h2>
<ul>
<li><a href="https://forum.openwrt.org/t/wndr4500v3-kernel-panic-not-syncing-vfs/68815">https://forum.openwrt.org/t/wndr4500v3-kernel-panic-not-syncing-vfs/68815</a></li>
<li><a href="https://zhuanlan.zhihu.com/p/76589656">https://zhuanlan.zhihu.com/p/76589656</a></li>
<li><a href="https://blog.csdn.net/x272202307/article/details/120244050">https://blog.csdn.net/x272202307/article/details/120244050</a></li>
<li><a href="https://openwrt.org/toh/netgear/wndr4300_v2">https://openwrt.org/toh/netgear/wndr4300_v2</a></li>
<li><a href="https://wiki.archlinux.org/title/TFTP#uftpd">https://wiki.archlinux.org/title/TFTP#uftpd</a></li>
<li><a href="https://github.com/jbkim/Linux-custom-baud-rate">https://github.com/jbkim/Linux-custom-baud-rate</a></li>
</ul>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[异步与协程]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p><strong>UPDATING...</strong></p>
<h1 id>&#x5F02;&#x6B65;&#x4E0E;&#x534F;&#x7A0B;</h1>
<p>&#x5F02;&#x6B65;&#x8BA1;&#x7B97;&#x7684;&#x4E24;&#x4E2A;&#x57FA;&#x672C;&#x539F;&#x8BED;&#x53EF;&#x4EE5;&#x5F52;&#x7ED3;&#x4E3A;<strong>&#x6682;&#x505C;&#x548C;&#x7EE7;&#x7EED;</strong>&#xFF0C;&#x6240;&#x4EE5;&#x6240;&#x6709;&#x7684;&#x5F02;&#x6B65;&#x8BA1;&#x7B97;&#x6A21;&#x5F0F;&#x90FD;&#x662F;&#x56F4;&#x7ED5;&#x7740;<strong>&#x5982;&#x4F55;&#x6682;&#x505C;&#x4E00;&#x4E2A;</strong></p>]]></description><link>https://blog.ykai.cc/yi-bu-yu-xie-cheng/</link><guid isPermaLink="false">6331df653945280001365bad</guid><dc:creator><![CDATA[Yingkai Dang]]></dc:creator><pubDate>Sun, 26 Sep 2021 08:32:16 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p><strong>UPDATING...</strong></p>
<h1 id>&#x5F02;&#x6B65;&#x4E0E;&#x534F;&#x7A0B;</h1>
<p>&#x5F02;&#x6B65;&#x8BA1;&#x7B97;&#x7684;&#x4E24;&#x4E2A;&#x57FA;&#x672C;&#x539F;&#x8BED;&#x53EF;&#x4EE5;&#x5F52;&#x7ED3;&#x4E3A;<strong>&#x6682;&#x505C;&#x548C;&#x7EE7;&#x7EED;</strong>&#xFF0C;&#x6240;&#x4EE5;&#x6240;&#x6709;&#x7684;&#x5F02;&#x6B65;&#x8BA1;&#x7B97;&#x6A21;&#x5F0F;&#x90FD;&#x662F;&#x56F4;&#x7ED5;&#x7740;<strong>&#x5982;&#x4F55;&#x6682;&#x505C;&#x4E00;&#x4E2A;&#x4EFB;&#x52A1;</strong>&#x548C;<strong>&#x5982;&#x4F55;&#x7EE7;&#x7EED;&#x5DF2;&#x6682;&#x505C;&#x7684;&#x4EFB;&#x52A1;</strong>&#x4E24;&#x4E2A;&#x95EE;&#x9898;&#x6765;&#x7684;&#x3002;</p>
<h2 id>&#x8FC7;&#x7A0B;&#x548C;&#x6302;&#x8D77;&#x70B9;</h2>
<p>&#x5F02;&#x6B65;&#x8BA1;&#x7B97;&#x7684;&#x4E24;&#x4E2A;&#x57FA;&#x672C;&#x5143;&#x7D20;&#x662F;<strong>&#x8FC7;&#x7A0B;</strong>&#x548C;<strong>&#x6302;&#x8D77;&#x70B9;</strong>&#x3002;&#x8FC7;&#x7A0B;&#x6307;&#x7684;&#x662F;&#x4E00;&#x4E2A;&#x4EFB;&#x52A1;&#x7684;&#x6267;&#x884C;&#x6D41;&#x7A0B;&#xFF0C;&#x4F53;&#x73B0;&#x5728;&#x7F16;&#x7A0B;&#x4E2D;&#x5C31;&#x662F;&#x5B8C;&#x6210;&#x67D0;&#x4E2A;&#x4EFB;&#x52A1;&#x7684;&#x4EE3;&#x7801;&#x7684;&#x96C6;&#x5408;&#x3002;&#x8FC7;&#x7A0B;&#x4E2D;&#x53EF;&#x4EE5;&#x6709;<strong>&#x6302;&#x8D77;&#x70B9;</strong>&#xFF0C;&#x6307;&#x7684;&#x662F;&#x8FC7;&#x7A0B;&#x5728;&#x6267;&#x884C;&#x65F6;<strong>&#x53EF;&#x4EE5;</strong>&#x4F7F;&#x5176;&#x81EA;&#x8EAB;&#x6682;&#x505C;&#x8FD0;&#x884C;&#x7684;&#x70B9;&#x3002;<strong>&#x4E0D;&#x53EF;&#x4E2D;&#x65AD;&#x8FC7;&#x7A0B;</strong>&#x662F;&#x6307;&#x4E0D;&#x5305;&#x542B;&#x6302;&#x8D77;&#x70B9;&#x7684;&#x8FC7;&#x7A0B;&#x3002;&#x4E00;&#x4E2A;&#x8FC7;&#x7A0B;&#x5F80;&#x5F80;&#x662F;&#x7531;&#x4E00;&#x7CFB;&#x5217;&#x7684;&#x6302;&#x8D77;&#x70B9;&#x548C;&#x4E0D;&#x53EF;&#x4E2D;&#x65AD;&#x8FC7;&#x7A0B;&#x6309;&#x987A;&#x5E8F;&#x7EC4;&#x5408;&#x8D77;&#x6765;&#x7684;&#xFF0C;&#x4E0D;&#x53EF;&#x4E2D;&#x65AD;&#x8FC7;&#x7A0B;&#x7684;&#x524D;&#x540E;&#x4E00;&#x5B9A;&#x662F;&#x6302;&#x8D77;&#x70B9;&#x3002;</p>
<p>&#x8FC7;&#x7A0B;&#x5E76;&#x4E0D;&#x4E0E;&#x51FD;&#x6570;&#x5BF9;&#x5E94;&#xFF0C;&#x5B83;&#x6240;&#x8868;&#x8FBE;&#x7684;&#x662F;&#x4E00;&#x4E2A;&#x4EFB;&#x52A1;&#xFF0C;&#x7406;&#x89E3;&#x8FD9;&#x4E00;&#x70B9;&#x662F;&#x81F3;&#x5173;&#x91CD;&#x8981;&#x7684;&#x3002;&#x5F53;&#x6211;&#x4EEC;&#x5728;&#x63CF;&#x8FF0;&#x4E00;&#x4E2A;&#x4EFB;&#x52A1;&#x662F;&#x5F02;&#x6B65;&#x7684;&#x65F6;&#xFF0C;&#x53EA;&#x662F;&#x5F3A;&#x8C03;&#x8FD9;&#x4E2A;&#x4EFB;&#x52A1;&#x662F;&#x53EF;&#x4EE5;&#x88AB;&#x5206;&#x4E3A;&#x591A;&#x4E2A;&#x6B65;&#x9AA4;&#x6765;&#x6267;&#x884C;&#x7684;&#xFF0C;&#x5E76;&#x672A;&#x89C4;&#x5B9A;&#x8FD9;&#x4E2A;&#x4EFB;&#x52A1;&#x770B;&#x8D77;&#x6765;&#x7684;&#x8868;&#x8C61;&#x662F;&#x5982;&#x4F55;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x4E0A;&#x8FF0;&#x6211;&#x5BF9;&#x201C;&#x8FC7;&#x7A0B;&#x201D;&#x7684;&#x5B9A;&#x4E49;&#x53EA;&#x662F;&#x201C;&#x4E00;&#x4E9B;&#x4EE3;&#x7801;&#x7684;&#x96C6;&#x5408;&#x201D;&#xFF0C;&#x81F3;&#x4E8E;&#x8FD9;&#x4E9B;&#x4EE3;&#x7801;&#x5982;&#x4F55;&#x7EC4;&#x7EC7;&#xFF0C;&#x653E;&#x5230;&#x591A;&#x4E2A;&#x51FD;&#x6570;&#x8FD8;&#x662F;&#x4E00;&#x4E2A;&#x51FD;&#x6570;&#x4E2D;&#x4E4B;&#x7C7B;&#x7684;&#x95EE;&#x9898;&#xFF0C;&#x5C31;&#x662F;&#x5404;&#x79CD;&#x5F02;&#x6B65;&#x6A21;&#x5F0F;&#x6240;&#x8003;&#x8651;&#x7684;&#x4E8B;&#x60C5;&#x4E86;&#x3002;</p>
<p>&#x6302;&#x8D77;&#x70B9;&#x62E5;&#x6709;&#x6302;&#x8D77;&#x8FC7;&#x7A0B;&#x7684;&#x80FD;&#x529B;&#xFF0C;&#x4F46;&#x5E76;&#x4E0D;&#x662F;&#x8BF4;&#x8FC7;&#x7A0B;&#x8FD0;&#x884C;&#x5230;&#x6302;&#x8D77;&#x70B9;&#x5C31;&#x4E00;&#x5B9A;&#x4F1A;&#x88AB;&#x6302;&#x8D77;&#xFF0C;&#x53EA;&#x6709;&#x8BE5;&#x6302;&#x8D77;&#x70B9;&#x88AB;<strong>&#x63A5;&#x53D7;</strong>&#x4E86;&#xFF0C;&#x8FC7;&#x7A0B;&#x624D;&#x4F1A;&#x6302;&#x8D77;&#x3002;&#x4E0D;&#x540C;&#x7684;&#x5F02;&#x6B65;&#x6A21;&#x5F0F;&#x4F1A;&#x6709;&#x4E0D;&#x540C;&#x7684;<strong>&#x6302;&#x8D77;&#x65B9;&#x6CD5;</strong>&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x521B;&#x5EFA;&#x6302;&#x8D77;&#x70B9;&#x7684;&#x624B;&#x6BB5;&#xFF1A;</p>
<table>
<thead>
<tr>
<th>&#x5F02;&#x6B65;&#x6A21;&#x5F0F;</th>
<th>&#x6302;&#x8D77;&#x539F;&#x8BED;</th>
<th>&#x5B9E;&#x73B0;&#x4F8B;&#x5B50;</th>
</tr>
</thead>
<tbody>
<tr>
<td>async/await</td>
<td>await</td>
<td>python asyncio(v3.5+), C#, js</td>
</tr>
<tr>
<td>&#x751F;&#x6210;&#x5668;</td>
<td>yield</td>
<td>python asyncio(v3.4)</td>
</tr>
<tr>
<td>&#x4E8B;&#x4EF6;&#x5FAA;&#x73AF;+&#x56DE;&#x8C03;</td>
<td>&#x8C03;&#x7528;&#x62E5;&#x6709;&#x56DE;&#x8C03;&#x7684;&#x51FD;&#x6570;</td>
<td>js</td>
</tr>
<tr>
<td>future</td>
<td>&#x8BBE;&#x7F6E;future&#x7684;&#x56DE;&#x8C03;</td>
<td>java concurrent</td>
</tr>
</tbody>
</table>
<p>&#x5176;&#x4E2D;&#xFF0C;&#x524D;&#x4E24;&#x8005;&#x662F;&#x57FA;&#x4E8E;&#x7B49;&#x5F85;&#x7684;&#x6302;&#x8D77;&#xFF0C;&#x540E;&#x4E24;&#x8005;&#x662F;&#x57FA;&#x4E8E;&#x56DE;&#x8C03;&#x7684;&#x6302;&#x8D77;&#xFF0C;&#x8FD9;&#x662F;&#x4E24;&#x79CD;&#x622A;&#x7136;&#x4E0D;&#x540C;&#x7684;&#x8FC7;&#x7A0B;&#x7EC4;&#x7EC7;&#x65B9;&#x5F0F;&#x3002;</p>
<h2 id>&#x6302;&#x8D77;&#x7684;&#x65F6;&#x673A;</h2>
<p>&#x5728;&#x8BED;&#x8A00;&#x7EA7;&#x522B;&#x7684;&#x5F02;&#x6B65;&#x8BA1;&#x7B97;&#x7684;&#x4E2D;&#xFF0C;&#x4E00;&#x4E2A;&#x8FC7;&#x7A0B;&#x7684;&#x6302;&#x8D77;&#x70B9;&#x5F80;&#x5F80;&#x662F;&#x6709;&#x9650;&#x7684;&#xFF0C;&#x4E00;&#x822C;&#x53EA;&#x5728;&#x4E0E;IO&#x7B49;&#x5F85;&#x3001;&#x5B9A;&#x65F6;&#x5668;&#x7B49;&#x5F85;&#x3001;&#x7528;&#x6237;&#x8F93;&#x5165;&#x7B49;&#x5F85;&#x7B49;&#x76F8;&#x5173;&#x7684;&#x5730;&#x65B9;&#x53EF;&#x6302;&#x8D77;&#x3002;&#x800C;&#x5728;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x7684;&#x7EBF;&#x7A0B;&#x8C03;&#x5EA6;&#x4E2D;&#xFF0C;&#x7EBF;&#x7A0B;&#x7684;&#x6BCF;&#x6761;&#x6C47;&#x7F16;&#x90FD;&#x662F;&#x4E00;&#x4E2A;&#x4E0D;&#x53EF;&#x4E2D;&#x65AD;&#x8FC7;&#x7A0B;&#xFF0C;&#x6BCF;&#x6761;&#x6C47;&#x7F16;&#x4E4B;&#x95F4;&#x90FD;&#x662F;&#x6302;&#x8D77;&#x70B9;&#xFF0C;&#x4F46;&#x662F;&#x7EBF;&#x7A0B;&#x7684;&#x6302;&#x8D77;&#x70B9;&#x53EA;&#x6709;&#x5C11;&#x6570;&#x4F1A;&#x88AB;&#x63A5;&#x53D7;&#x3002;</p>
<h2 id>&#x8FC7;&#x7A0B;&#x4E4B;&#x95F4;&#x7684;&#x7B49;&#x5F85;</h2>
<h2 id></h2>
<p>&#x53E6;&#x5916;&#xFF0C;&#x8981;&#x5B9E;&#x73B0;&#x4E00;&#x4E2A;&#x53EF;&#x7528;&#x7684;&#x5F02;&#x6B65;&#x8BA1;&#x7B97;&#x6846;&#x67B6;&#xFF0C;&#x5F02;&#x6B65;&#x8FC7;&#x7A0B;&#x4E4B;&#x95F4;&#x7684;&#x5D4C;&#x5957;&#x8C03;&#x7528;&#x673A;&#x5236;&#x5FC5;&#x4E0D;&#x53EF;&#x5C11;&#x3002;&#x8FC7;&#x7A0B;&#x7684;&#x5D4C;&#x5957;&#x8C03;&#x7528;&#x672C;&#x8D28;&#x4E0A;&#x662F;&#x5BF9;&#x591A;&#x4E2A;&#x6302;&#x8D77;&#x70B9;&#x7684;&#x5F52;&#x4E00;&#x5316;&#x3002;</p>
<p>&#x4E4B;&#x6240;&#x4EE5;&#x72B6;&#x6001;&#x673A;&#x7ECF;&#x5E38;&#x4F1A;&#x6210;&#x4E3A;&#x5B9E;&#x73B0;&#x534F;&#x7A0B;&#x7684;&#x65B9;&#x6848;&#xFF0C;&#x4E00;&#x662F;&#x56E0;&#x4E3A;&#x72B6;&#x6001;&#x673A;&#x80FD;&#x591F;&#x5F88;&#x597D;&#x5730;&#x8868;&#x8FBE;&#x6302;&#x8D77;&#x548C;&#x7EE7;&#x7EED;&#xFF0C;&#x4E8C;&#x662F;&#x72B6;&#x6001;&#x673A;&#x62E5;&#x6709;&#x8868;&#x8FBE;&#x534F;&#x7A0B;&#x6240;&#x9700;&#x8981;&#x7684;<strong>&#x591A;&#x6B21;&#x5E73;&#x7EA7;&#x6302;&#x8D77;&#x7684;&#x80FD;&#x529B;</strong>&#x3002;</p>
<p>&#x72B6;&#x6001;&#x673A;&#x7684;&#x4E92;&#x76F8;&#x7B49;&#x5F85;&#x3002;</p>
<h2 id>&#x8FC7;&#x7A0B;&#x5E8F;&#x5217;&#x7684;&#x7EBF;&#x6027;&#x8868;&#x8FBE;</h2>
<p>&#x534F;&#x7A0B;&#x662F;&#x5BF9;&#x53EF;&#x5206;&#x8FC7;&#x7A0B;&#x5E8F;&#x5217;&#x7684;&#x7EBF;&#x6027;&#x8868;&#x8FBE;&#xFF0C;&#x56E0;&#x800C;&#x53EA;&#x8981;&#x53EF;&#x4EE5;&#x5B9E;&#x73B0;&#x8FC7;&#x7A0B;&#x3001;&#x7EBF;&#x6027;&#x5E8F;&#x5217;&#x4E24;&#x4E2A;&#x529F;&#x80FD;&#x7684;&#x90FD;&#x53EF;&#x4EE5;&#x5B9E;&#x73B0;&#x534F;&#x7A0B;&#x3002;&#x51FD;&#x6570;&#x6A21;&#x578B;&#x672C;&#x5C31;&#x662F;&#x4E00;&#x79CD;&#x53EF;&#x5206;&#x8FC7;&#x7A0B;&#x7684;&#x7EBF;&#x6027;&#x6A21;&#x578B;&#xFF0C;&#x5176;&#x5E95;&#x5C42;&#x7684;&#x6307;&#x4EE4;&#x96C6;&#x4E5F;&#x662F;&#x4E00;&#x6837;&#xFF0C;&#x53C8;&#x6BD4;&#x5982;Promise[]&#x3001;Asyncify&#x3002;</p>
<h2 id>&#x5F02;&#x6B65;&#x7684;&#x4F18;&#x52BF;</h2>
<p>&#x5355;&#x72EC;&#x4E00;&#x4E2A;&#x4EFB;&#x52A1;&#x6CA1;&#x5FC5;&#x8981;&#x8BB2;&#x5F02;&#x6B65;&#x4E0D;&#x5F02;&#x6B65;&#xFF0C;&#x53EA;&#x6709;&#x5F53;&#x591A;&#x4E2A;&#x4EFB;&#x52A1;&#x5E76;&#x53D1;&#x6267;&#x884C;&#x65F6;&#xFF0C;&#x5F02;&#x6B65;&#x4EFB;&#x52A1;&#x624D;&#x80FD;&#x4F53;&#x73B0;&#x51FA;&#x4F18;&#x52BF;&#xFF1A;&#x8BA1;&#x7B97;&#x8D44;&#x6E90;&#x4E0D;&#x5FC5;&#x963B;&#x585E;&#x4E8E;&#x7B49;&#x5F85;&#x67D0;&#x4E2A;&#x4EFB;&#x52A1;&#x7684;&#x67D0;&#x4E2A;&#x8D44;&#x6E90;&#x7684;&#x5C31;&#x7EEA;&#xFF0C;&#x800C;&#x662F;&#x53EF;&#x4EE5;&#x8F6C;&#x800C;&#x6267;&#x884C;&#x53E6;&#x5916;&#x7684;&#x4EFB;&#x52A1;&#xFF0C;&#x51CF;&#x5C11;&#x4E86;&#x8BA1;&#x7B97;&#x8D44;&#x6E90;&#x7684;&#x963B;&#x585E;&#x3002;<br>
&#x8FD9;&#x4E2A;&#x4F18;&#x52BF;&#x53EF;&#x4EE5;&#x4ECE;&#x4E0D;&#x540C;&#x89D2;&#x5EA6;&#x6765;&#x7406;&#x89E3;&#xFF1A;</p>
<ul>
<li>&#x4ECE;&#x4EFB;&#x52A1;&#x7684;&#x89D2;&#x5EA6;&#xFF1A;&#x4EFB;&#x52A1;&#x4E0D;&#x9700;&#x8981;&#x4E00;&#x76F4;&#x5360;&#x636E;&#x8BA1;&#x7B97;&#x8D44;&#x6E90;&#xFF0C;&#x53EA;&#x662F;&#x5728;&#x5FC5;&#x8981;&#x7684;&#x65F6;&#x5019;&#x88AB;&#x6267;&#x884C;&#xFF0C;&#x56E0;&#x800C;&#x53EF;&#x4EE5;&#x540C;&#x65F6;&#x6267;&#x884C;&#x591A;&#x4E2A;&#x4EFB;&#x52A1;&#xFF1B;</li>
<li>&#x4ECE;&#x8D44;&#x6E90;&#x7684;&#x89D2;&#x5EA6;&#xFF1A;&#x56E0;&#x4E3A;&#x53EF;&#x80FD;&#x6709;&#x591A;&#x4E2A;&#x4EFB;&#x52A1;&#x88AB;&#x540C;&#x65F6;&#x6302;&#x8D77;&#xFF0C;&#x8BA1;&#x7B97;&#x8D44;&#x6E90;&#x5F97;&#x4EE5;&#x540C;&#x65F6;&#x7B49;&#x5F85;&#x591A;&#x4E2A;&#x8017;&#x65F6;&#x8D44;&#x6E90;&#x3002;</li>
</ul>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[proxychains和graftcp的比较]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#x4ECA;&#x5929;&#x770B;&#x5230;github&#x53D1;&#x5E03;&#x4E86;github-cli&#xFF0C;&#x60F3;&#x53BB;&#x8BD5;&#x4E00;&#x4E0B;&#xFF0C;&#x7ED3;&#x679C;&#x5728;&#x7528;cli&#x767B;&#x5F55;&#x7684;&#x65F6;&#x5019;&#x88AB;GFW&#x6321;&#x4F4F;&#x4E86;&#x3002;&#x5C1D;&#x8BD5;&#x4F7F;&#x7528;proxychains&#x53D1;&#x73B0;&#x8FD9;&#x4E2A;cli&#x662F;&#x7528;go&#x5199;&#x7684;&#xFF0C;&#x7528;&#x4E0D;</p>]]></description><link>https://blog.ykai.cc/proxychainshe-graftcpde-bi-jiao/</link><guid isPermaLink="false">6331df653945280001365bb2</guid><category><![CDATA[工具]]></category><category><![CDATA[代理]]></category><category><![CDATA[网络]]></category><dc:creator><![CDATA[Yingkai Dang]]></dc:creator><pubDate>Fri, 18 Sep 2020 12:56:46 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x4ECA;&#x5929;&#x770B;&#x5230;github&#x53D1;&#x5E03;&#x4E86;github-cli&#xFF0C;&#x60F3;&#x53BB;&#x8BD5;&#x4E00;&#x4E0B;&#xFF0C;&#x7ED3;&#x679C;&#x5728;&#x7528;cli&#x767B;&#x5F55;&#x7684;&#x65F6;&#x5019;&#x88AB;GFW&#x6321;&#x4F4F;&#x4E86;&#x3002;&#x5C1D;&#x8BD5;&#x4F7F;&#x7528;proxychains&#x53D1;&#x73B0;&#x8FD9;&#x4E2A;cli&#x662F;&#x7528;go&#x5199;&#x7684;&#xFF0C;&#x7528;&#x4E0D;&#x4E86;&#x3002;&#x6240;&#x4EE5;&#x51B3;&#x5B9A;&#x53BB;&#x7F51;&#x4E0A;&#x627E;&#x627E;&#x5176;&#x4ED6;&#x80FD;&#x505A;&#x900F;&#x660E;&#x4EE3;&#x7406;&#x7684;&#x5DE5;&#x5177;&#xFF0C;&#x4E8E;&#x662F;&#x5C31;&#x627E;&#x5230;&#x4E86;&#x4E00;&#x4E2A;&#x56FD;&#x4EBA;&#x5199;&#x7684;<a href="https://github.com/hmgle/graftcp">graftcp</a>&#x3002;&#x56E0;&#x4E3A;&#x5E73;&#x65F6;&#x7528;&#x7C7B;&#x4F3C;&#x7684;&#x5DE5;&#x5177;&#x8F83;&#x591A;&#xFF0C;&#x6240;&#x4EE5;&#x7B80;&#x5355;&#x518D;&#x6B21;&#x5BF9;&#x6BD4;&#x4E00;&#x4E0B;&#x3002;</p>
<h2 id>&#x539F;&#x7406;&#x53CA;&#x5DEE;&#x5F02;</h2>
<p>&#x4E8C;&#x8005;&#x7684;&#x57FA;&#x672C;&#x601D;&#x8DEF;&#x5927;&#x540C;&#x5C0F;&#x5F02;&#xFF0C;&#x90FD;&#x662F;&#x901A;&#x8FC7;&#x622A;&#x83B7;&#x5B50;&#x8FDB;&#x7A0B;&#x7684;socket&#x76F8;&#x5173;&#x7684;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#xFF0C;&#x5077;&#x5077;&#x5730;&#x4E0E;&#x4EE3;&#x7406;&#x5EFA;&#x7ACB;&#x8FDE;&#x63A5;&#xFF0C;&#x6700;&#x540E;&#x5728;<code>connect</code>&#x8C03;&#x7528;&#x4E2D;&#x8FD4;&#x56DE;&#x4EE3;&#x7406;&#x7684;socket&#x3002;</p>
<p>&#x4F46;&#x662F;&#x5728;&#x5177;&#x4F53;&#x5B9E;&#x73B0;&#x4E0A;&#xFF0C;&#x4E8C;&#x8005;&#x7528;&#x4E86;&#x4E0D;&#x540C;&#x7684;&#x65B9;&#x6848;&#x3002;</p>
<h3 id="proxychains">proxychains</h3>
<p>proxychains&#x4F7F;&#x7528;&#x4E86;<a href="https://stackoverflow.com/questions/426230/what-is-the-ld-preload-trick">LD_PRELOAD</a>&#x73AF;&#x5883;&#x53D8;&#x91CF;&#x3002;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x90FD;&#x4F1A;&#x7ECF;&#x8FC7;glibc&#x7684;&#x5305;&#x88C5;&#xFF0C;&#x6240;&#x4EE5;&#x5728;c&#x4E2D;&#x5199;&#x4E2A;<code>connect</code>&#x5B9E;&#x9645;&#x4E0A;&#x8C03;&#x7528;&#x7684;&#x662F;glibc&#x7684;&#x5E93;&#x51FD;&#x6570;&#x3002;&#x800C;<code>LD_PRELOAD</code>&#x73AF;&#x5883;&#x53D8;&#x91CF;&#x5411;&#x7528;&#x6237;&#x63D0;&#x4F9B;&#x4E86;&#x8986;&#x76D6;&#x5E93;&#x51FD;&#x6570;&#x7684;&#x80FD;&#x529B;&#xFF0C;proxychains&#x6B63;&#x662F;&#x5229;&#x7528;&#x4E86;&#x8FD9;&#x4E00;&#x70B9;&#x3002;</p>
<p>&#x5728;&#x5176;<a href="https://github.com/haad/proxychains/blob/99af45703eb66dc394f8f90cf19c78c5d557f7b9/src/libproxychains.c#L47-L52">&#x6E90;&#x7801;</a>&#x4E2D;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#xFF0C;&#x5B83;&#x4E00;&#x5171;&#x622A;&#x83B7;&#x4E86;6&#x4E2A;&#x51FD;&#x6570;&#xFF1A;</p>
<pre><code class="language-c">connect_t true_connect;
gethostbyname_t true_gethostbyname;
getaddrinfo_t true_getaddrinfo;
freeaddrinfo_t true_freeaddrinfo;
getnameinfo_t true_getnameinfo;
gethostbyaddr_t true_gethostbyaddr;
</code></pre>
<p>&#x5176;&#x4E2D;&#xFF0C;&#x622A;&#x83B7;<code>connect</code>&#x51FD;&#x6570;&#x662F;&#x4E3A;&#x4E86;&#x4E0E;&#x4EE3;&#x7406;&#x670D;&#x52A1;&#x5668;&#x8FDB;&#x884C;&#x8FDE;&#x63A5;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x6267;&#x884C;&#x4E3B;&#x8981;&#x7684;&#x529F;&#x80FD;&#xFF1B;&#x800C;&#x5176;&#x4ED6;&#x7684;&#x51E0;&#x4E2A;&#x51FD;&#x6570;&#x662F;&#x4E3A;&#x4E86;&#x4F7F;&#x7528;socks5&#x7684;&#x8FDC;&#x7A0B;DNS&#x529F;&#x80FD;&#xFF0C;&#x80FD;&#x591F;&#x89E3;&#x51B3;DNS&#x6C61;&#x67D3;&#x7684;&#x95EE;&#x9898;&#xFF08;&#x8FD9;&#x4E2A;&#x601D;&#x8DEF;&#x542F;&#x53D1;&#x4E86;&#x6211;&#xFF0C;&#x89E3;&#x51B3;&#x4E86;&#x6211;&#x7684;&#x4E00;&#x4E2A;&#x4E1A;&#x4F59;&#x9879;&#x76EE;&#x91CC;&#x9762;&#x5173;&#x4E8E;DNS&#x6C61;&#x67D3;&#x7684;&#x95EE;&#x9898;&#xFF0C;&#x4E4B;&#x540E;&#x6709;&#x65F6;&#x95F4;&#x4E86;&#x6211;&#x4F1A;&#x5199;&#x4E00;&#x4E0B;&#x3002;&#x611F;&#x8C22;&#xFF09;&#x3002;</p>
<p>&#x7B80;&#x5355;&#x8BF4;&#x4E0B;&#x4E4B;&#x540E;&#x7684;&#x8FC7;&#x7A0B;&#xFF08;&#x4E0D;&#x8003;&#x8651;&#x8FDC;&#x7A0B;DNS&#xFF09;&#x3002;&#x5728;&#x622A;&#x83B7;<code>connect</code>&#x4E4B;&#x540E;&#xFF0C;proxychains&#x4F1A;&#x62FF;&#x5230;&#x5176;&#x53C2;&#x6570;&#x4E2D;&#x7684;&#x76EE;&#x6807;ip&#xFF1B;&#x7136;&#x540E;&#x4E0E;&#x4EE3;&#x7406;&#x670D;&#x52A1;&#x5668;&#x5EFA;&#x7ACB;&#x8FDE;&#x63A5;&#xFF0C;&#x5E76;&#x8BF7;&#x6C42;&#x5176;&#x4EE3;&#x7406;&#x8BE5;ip&#x5730;&#x5740;&#xFF1B;&#x6210;&#x529F;&#x4E4B;&#x540E;&#xFF0C;&#x4FBF;&#x5C06;&#x53D7;&#x5230;&#x4EE3;&#x7406;&#x7684;socket&#x63CF;&#x8FF0;&#x7B26;&#x8FD4;&#x56DE;&#x7ED9;&#x5E94;&#x7528;&#x3002;&#x81F3;&#x6B64;&#xFF0C;&#x900F;&#x660E;&#x4EE3;&#x7406;&#x5EFA;&#x7ACB;&#x5B8C;&#x6210;&#x3002;</p>
<h3 id="graftcp">graftcp</h3>
<p>graftcp&#x7684;&#x601D;&#x8DEF;&#x5219;&#x662F;&#x901A;&#x8FC7;ptrace&#x8C03;&#x7528;&#x6765;&#x622A;&#x83B7;&#x5B50;&#x8FDB;&#x7A0B;&#x7684;<code>connect</code>&#x8FDE;&#x63A5;&#xFF0C;&#x8FD9;&#x662F;&#x4E8C;&#x8005;&#x6700;&#x5927;&#x7684;&#x4E0D;&#x540C;&#xFF0C;&#x4E5F;&#x76F4;&#x63A5;&#x5F71;&#x54CD;&#x5230;&#x4E8C;&#x8005;&#x7684;&#x9002;&#x7528;&#x60C5;&#x51B5;&#x3002;&#x53E6;&#x5916;&#x6709;&#x4E00;&#x70B9;&#x4E0D;&#x540C;&#x7684;&#x662F;&#xFF0C;graftcp&#x5E76;&#x975E;&#x81EA;&#x5DF1;&#x5904;&#x7406;&#x4E0E;&#x4EE3;&#x7406;&#x670D;&#x52A1;&#x5668;&#x7684;&#x8FDE;&#x63A5;&#xFF0C;&#x800C;&#x662F;&#x5C06;&#x6B64;&#x4EFB;&#x52A1;&#x4EA4;&#x7ED9;&#x4E86;&#x4E00;&#x4E2A;&#x53EB;&#x505A;graftcp-local&#x7684;&#x8FDB;&#x7A0B;&#x53BB;&#x505A;&#xFF0C;&#x76EE;&#x524D;&#x6211;&#x5C1A;&#x4E0D;&#x6E05;&#x695A;&#x4E3A;&#x4F55;&#x8981;&#x5206;&#x5F00;&#x3002;</p>
<p>graftcp&#x7684;README&#x91CC;&#x9762;&#x6709;&#x4E2A;&#x7B80;&#x5355;&#x7684;&#x67B6;&#x6784;&#x56FE;&#xFF1A;</p>
<pre><code class="language-plain">+---------------+             +---------+         +--------+         +------+
|   graftcp     |  dest host  |         |         |        |         |      |
|   (tracer)    +---PIPE-----&gt;|         |         |        |         |      |
|      ^        |  info       |         |         |        |         |      |
|      | ptrace |             |         |         |        |         |      |
|      v        |             |         |         |        |         |      |
|  +---------+  |             |         |         |        |         |      |
|  |         |  |  connect    |         | connect |        | connect |      |
|  |         +---------------&gt;| graftcp +--------&gt;| SOCKS5 +--------&gt;| dest |
|  |         |  |             | -local  |         |  or    |         | host |
|  |  app    |  |  req        |         |  req    | HTTP   |  req    |      |
|  |(tracee) +---------------&gt;|         +--------&gt;| proxy  +--------&gt;|      |
|  |         |  |             |         |         |        |         |      |
|  |         |  |  resp       |         |  resp   |        |  resp   |      |
|  |         |&lt;---------------+         |&lt;--------+        |&lt;--------+      |
|  +---------+  |             |         |         |        |         |      |
+---------------+             +---------+         +--------+         +------+
</code></pre>
<h2 id>&#x4F18;&#x7F3A;&#x70B9;</h2>
<p>&#x76F8;&#x6BD4;&#x4E4B;&#x4E0B;&#xFF0C;proxychains&#x6700;&#x5927;&#x7684;&#x4F18;&#x70B9;&#x5C31;&#x662F;&#x652F;&#x6301;&#x8FDC;&#x7A0B;DNS&#x4E86;&#xFF0C;&#x4F46;&#x7531;&#x4E8E;LD_PRELOAD&#x7684;&#x4E00;&#x4E9B;&#x9650;&#x5236;&#xFF0C;&#x5BFC;&#x81F4;&#x4E86;&#x5B83;&#xFF1A;</p>
<ul>
<li>&#x4E0D;&#x80FD;&#x4EE5;root&#x6743;&#x9650;&#x7528;&#x6237;&#x4F7F;&#x7528;</li>
<li>&#x4E0D;&#x80FD;&#x7ED9;&#x9759;&#x6001;&#x7F16;&#x8BD1;&#x7684;&#x7A0B;&#x5E8F;&#x4F7F;&#x7528;&#xFF08;&#x6BD4;&#x5982;&#x6240;&#x6709;&#x7684;go&#x7A0B;&#x5E8F;&#xFF09;</li>
<li>&#x4E0D;&#x80FD;&#x5728;&#x4E0D;&#x4F7F;&#x7528;&#x5E93;&#x51FD;&#x6570;&#x8FDB;&#x884C;DNS&#x67E5;&#x8BE2;&#x7684;&#x7A0B;&#x5E8F;&#x4E2D;&#x4F7F;&#x7528;&#x8FDC;&#x7A0B;DNS&#xFF08;&#x6BD4;&#x5982;java&#xFF09;</li>
</ul>
<p>&#x76F8;&#x53CD;&#x7684;&#xFF0C;graft&#x5E76;&#x4E0D;&#x9650;&#x5236;&#x7528;&#x6237;&#x548C;&#x7A0B;&#x5E8F;&#xFF0C;&#x9002;&#x7528;&#x6027;&#x66F4;&#x5E7F;&#x6CDB;&#x4E00;&#x70B9;&#xFF0C;&#x867D;&#x7136;&#x65E0;&#x6CD5;&#x89E3;&#x51B3;DNS&#x6C61;&#x67D3;&#x7684;&#x95EE;&#x9898;&#xFF0C;&#x4F46;&#x662F;&#x8FD9;&#x4E2A;&#x95EE;&#x9898;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x66F4;&#x6362;DNS&#x89E3;&#x51B3;&#x3002;</p>
<hr>
<h2 id="2021330">2021.3.30 &#x66F4;&#x65B0;</h2>
<p>&#x6700;&#x8FD1;&#x641E;&#x660E;&#x767D;&#x4E86;graftcp&#x4E3A;&#x4EC0;&#x4E48;&#x8981;&#x591A;&#x51FA;&#x6765;&#x4E00;&#x4E2A;graftcp-local&#x8FDB;&#x7A0B;&#x4E86;&#x3002;</p>
<p>&#x4E0E;proxychains&#x5F88;&#x5927;&#x7684;&#x4E00;&#x70B9;&#x4E0D;&#x540C;&#x5728;&#x4E8E;&#xFF0C;<em>graftcp&#x4E0E;&#x88AB;&#x4EE3;&#x7406;&#x7684;&#x7A0B;&#x5E8F;&#x5E76;&#x975E;&#x5728;&#x540C;&#x4E00;&#x4E2A;&#x8FDB;&#x7A0B;&#x4E2D;&#x8FD0;&#x884C;&#xFF0C;&#x800C;&#x662F;&#x7236;&#x5B50;&#x8FDB;&#x7A0B;&#x7684;&#x5173;&#x7CFB;&#xFF0C;&#x7236;&#x5B50;&#x8FDB;&#x7A0B;&#x5E76;&#x4E0D;&#x5171;&#x4EAB;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;&#x8868;</em>&#xFF0C;&#x8FD9;&#x5C31;&#x5BFC;&#x81F4;graft&#x4E0D;&#x80FD;&#x5411;proxychains&#x4E00;&#x6837;&#x201C;&#x81EA;&#x5DF1;&#x201D;&#x53BB;&#x8FDE;&#x63A5;&#x4EE3;&#x7406;&#x670D;&#x52A1;&#x5668;&#x5E76;&#x5C06;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;&#x76F4;&#x63A5;&#x7531;connect&#x8FD4;&#x56DE;&#x4E86;&#xFF0C;&#x56E0;&#x4E3A;graft&#x521B;&#x5EFA;&#x7684;&#x53EA;&#x80FD;&#x662F;&#x81EA;&#x5DF1;&#x8FDB;&#x7A0B;&#x5185;&#x7684;&#x63CF;&#x8FF0;&#x7B26;&#xFF0C;&#x4E0D;&#x80FD;&#x76F4;&#x63A5;&#x4EA4;&#x7ED9;&#x5B50;&#x8FDB;&#x7A0B;&#x4F7F;&#x7528;&#x3002;&#xFF08;&#x8FD9;&#x53EF;&#x4EE5;&#x7406;&#x89E3;&#x4E3A;&#xFF1A;ptrace&#x539F;&#x8BED;&#x76F8;&#x6BD4;&#x4E8E;LD_LIBRARY&#x539F;&#x8BED;&#x5931;&#x53BB;&#x4E86;&#x201C;&#x6709;&#x6548;&#x4FEE;&#x6539;connect&#x8FD4;&#x56DE;&#x7684;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;&#x201D;&#x7684;&#x80FD;&#x529B;&#xFF0C;&#x56E0;&#x6B64;&#x65E0;&#x6CD5;&#x76F4;&#x63A5;&#x4F7F;&#x7528;&#x4E4B;&#x524D;&#x7684;&#x65B9;&#x6CD5;&#x3002;&#xFF09;</p>
<p>&#x9488;&#x5BF9;&#x8FD9;&#x4E2A;&#x95EE;&#x9898;&#xFF0C;graft&#x7684;&#x505A;&#x6CD5;&#x662F;&#x5EFA;&#x7ACB;&#x4E00;&#x4E2A;&#x5355;&#x72EC;&#x7684;&#x670D;&#x52A1;&#x5668;graftcp-local&#xFF0C;&#x76F8;&#x5F53;&#x4E8E;&#x201C;&#x4EE3;&#x7406;&#x670D;&#x52A1;&#x5668;&#x7684;&#x4EE3;&#x7406;&#x201D;&#xFF0C;&#x5E76;&#x5C06;&#x5B50;&#x8FDB;&#x7A0B;&#x53D1;&#x8D77;&#x7684;connect&#x7684;&#x76EE;&#x7684;&#x5730;&#x5740;&#x6539;&#x4E3A;&#x8BE5;&#x670D;&#x52A1;&#x5668;&#x7684;&#x5730;&#x5740;&#xFF0C;&#x8BA9;&#x5B50;&#x8FDB;&#x7A0B;&#x53D1;&#x8D77;&#x5411;graftcp-local&#x7684;&#x8FDE;&#x63A5;&#x3002;</p>
<p>&#x4F46;&#x662F;&#x8FD9;&#x53C8;&#x5F15;&#x51FA;&#x4E86;&#x53E6;&#x4E00;&#x4E2A;&#x95EE;&#x9898;&#xFF1A;&#x4ECE;graftcp-local&#x7684;&#x89D2;&#x5EA6;&#x6765;&#x770B;&#xFF0C;&#x5B83;&#x63A5;&#x5230;&#x4E00;&#x4E2A;&#x65B0;&#x7684;&#x8FDE;&#x63A5;&#x4E4B;&#x540E;&#xFF0C;&#x5E76;&#x4E0D;&#x77E5;&#x9053;&#x8FD9;&#x4E2A;&#x8FDE;&#x63A5;&#x5B9E;&#x9645;&#x4E0A;&#x662F;&#x8981;&#x8FDE;&#x63A5;&#x54EA;&#x91CC;&#x7684;&#xFF0C;&#x56E0;&#x4E3A;connect&#x8BF7;&#x6C42;&#x5E76;&#x6CA1;&#x6709;&#x643A;&#x5E26;&#x539F;&#x76EE;&#x7684;&#x5730;&#x5740;&#x4FE1;&#x606F;&#x3002;</p>
<p>&#x8FD9;&#x65F6;&#x5019;&#x53C8;&#x9700;&#x8981;graftcp&#x8FDB;&#x7A0B;&#x4E86;&#xFF0C;&#x5728;graftcp&#x4F7F;&#x7528;ptrace&#x8FFD;&#x8E2A;&#x5230;&#x539F;connect&#x8BF7;&#x6C42;&#x4E4B;&#x540E;&#xFF0C;&#x4ED6;&#x4F1A;&#x5C06;&#x539F;&#x76EE;&#x7684;&#x5730;&#x5740;&#x4EE5;&#x53CA;&#x5B50;&#x8FDB;&#x7A0B;pid&#x53D1;&#x9001;&#x7ED9;graftcp-local&#xFF0C;&#x8FD9;&#x6837;graftcp-local&#x5C31;&#x6709;&#x4E86;&#x4E00;&#x4E2A;<em>&#x4ECE;pid&#x5230;&#x76EE;&#x7684;&#x5730;&#x5740;</em>&#x7684;&#x6620;&#x5C04;&#x8868;&#xFF0C;&#x5728;&#x5B83;&#x5F97;&#x5230;&#x65B0;&#x8FDE;&#x63A5;&#x4E4B;&#x540E;&#xFF0C;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x67E5;&#x8BE2;<code>/proc/net/tcp</code>&#x6587;&#x4EF6;&#x53D6;&#x5F97;&#x65B0;&#x8FDE;&#x63A5;&#x6240;&#x5728;&#x7684;&#x8FDB;&#x7A0B;pid&#xFF0C;&#x4ECE;&#x800C;&#x5F97;&#x77E5;&#x5B83;&#x7684;&#x771F;&#x5B9E;&#x76EE;&#x7684;&#x5730;&#x5740;&#x3002;&#x81F3;&#x6B64;&#xFF0C;graftcp-local&#x5C31;&#x53EF;&#x4EE5;&#x5EFA;&#x7ACB;&#x5B8C;&#x6574;&#x7684;&#x4EE3;&#x7406;&#x8FDE;&#x63A5;&#x4E86;&#x3002;</p>
<p>&#x53E6;&#x5916;&#xFF0C;&#x6211;&#x4E5F;&#x60F3;&#x5230;&#x4E86;&#x4E00;&#x79CD;&#x4F7F;&#x7528;ptrace&#x3001;&#x4F46;&#x4E0D;&#x9700;&#x8981;graftcp-local&#x8FD9;&#x6837;&#x7684;&#x53CC;&#x91CD;&#x4EE3;&#x7406;&#x7684;&#x65B9;&#x6CD5;&#x3002;&#x5176;&#x539F;&#x7406;&#x5728;&#x4E8E;socket&#x7684;&#x63A7;&#x5236;&#x6D88;&#x606F;&#x63A5;&#x53E3;&#xFF1A;<code>sendmsg</code>&#x548C;<code>recvmsg</code>&#xFF0C;&#x8FD9;&#x4E2A;&#x63A5;&#x53E3;&#x53EF;&#x4EE5;&#x5C06;&#x8FDB;&#x7A0B;&#x7684;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;&#x901A;&#x8FC7;socket&#x53D1;&#x9001;&#x7ED9;&#x53E6;&#x4E00;&#x4E2A;&#x8FDB;&#x7A0B;&#x3002;ptrace&#x914D;&#x5408;&#x4E0A;&#x8FD9;&#x4E2A;&#x63A5;&#x53E3;&#xFF0C;&#x5C31;&#x62E5;&#x6709;&#x4E86;&#x201C;&#x6709;&#x6548;&#x4FEE;&#x6539;connect&#x8FD4;&#x56DE;&#x7684;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;&#x201D;&#x7684;&#x80FD;&#x529B;&#xFF0C;&#x56E0;&#x6B64;&#x5E94;&#x8BE5;&#x53EF;&#x4EE5;&#x50CF;proxychains&#x90A3;&#x6837;&#x5B9E;&#x73B0;&#x900F;&#x660E;&#x4EE3;&#x7406;&#x4E86;&#x3002;</p>
<p>&#x57FA;&#x672C;&#x7684;&#x601D;&#x8DEF;&#x5927;&#x6982;&#x4E3A;&#xFF1A;ptrace&#x622A;&#x83B7;socket()&#x8C03;&#x7528;&#xFF0C;&#x5728;enter-stop&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x7531;&#x7236;&#x8FDB;&#x7A0B;&#x8C03;&#x7528;socket()&#x521B;&#x5EFA;&#x5957;&#x63A5;&#x5B57;&#x63CF;&#x8FF0;&#x7B26;&#xFF0C;&#x7136;&#x540E;&#x901A;&#x8FC7;sendmsg()&#x53D1;&#x9001;&#x7ED9;&#x5B50;&#x8FDB;&#x7A0B;&#xFF0C;&#x518D;&#x5C06;&#x5F53;&#x524D;&#x7684;socket()&#x8C03;&#x7528;&#x4FEE;&#x6539;&#x4E3A;recvmsg()&#x8C03;&#x7528;&#xFF08;&#x8FD9;&#x4E00;&#x6B65;&#x662F;&#x56E0;&#x4E3A;&#x6D88;&#x606F;&#x961F;&#x5217;&#x957F;&#x5EA6;&#x6709;&#x9650;&#xFF0C;&#x907F;&#x514D;&#x5B50;&#x8FDB;&#x7A0B;&#x4E0D;&#x8FDB;&#x884C;recvmsg()&#x9020;&#x6210;&#x6D88;&#x606F;&#x963B;&#x585E;&#xFF09;&#xFF0C;&#x7EE7;&#x7EED;&#x5B50;&#x7A0B;&#x5E8F;&#xFF1B;&#x7B49;&#x5230;exit-stop&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x65B0;&#x7684;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;&#x5DF2;&#x7ECF;&#x5728;&#x5B50;&#x8FDB;&#x7A0B;&#x4E2D;&#x53EF;&#x7528;&#x4E86;&#xFF0C;&#x901A;&#x8FC7;&#x67E5;&#x770B;&#x5B50;&#x8FDB;&#x7A0B;recvmsg()&#x6536;&#x5230;&#x7684;&#x5185;&#x5BB9;&#xFF0C;&#x5F97;&#x5230;&#x63CF;&#x8FF0;&#x7B26;&#x7684;&#x503C;&#xFF0C;&#x5E76;&#x5C06;&#x5176;&#x8BBE;&#x7F6E;&#x4E3A;&#x8BE5;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x7684;&#x8FD4;&#x56DE;&#x503C;&#x3002;&#x81F3;&#x6B64;&#xFF0C;&#x5C31;&#x521B;&#x5EFA;&#x4E86;&#x4E00;&#x4E2A;&#x7236;&#x5B50;&#x8FDB;&#x7A0B;&#x5171;&#x7528;&#x7684;&#x5957;&#x63A5;&#x5B57;&#x63CF;&#x8FF0;&#x7B26;&#xFF0C;&#x7B49;&#x5230;&#x5B50;&#x8FDB;&#x7A0B;&#x8C03;&#x7528;&#x4E86;connect&#x65F6;&#xFF0C;&#x7236;&#x8FDB;&#x7A0B;&#x5C31;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x8FD9;&#x4E2A;&#x5957;&#x63A5;&#x5B57;&#x6765;&#x521D;&#x59CB;&#x5316;&#x4EE3;&#x7406;&#x8FDE;&#x63A5;&#x3002;&#xFF08;&#x7406;&#x8BBA;&#x4E0A;&#xFF0C;&#x6240;&#x6709;&#x7684;&#x521B;&#x5EFA;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;&#x7684;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x90FD;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x8FD9;&#x79CD;&#x65B9;&#x6CD5;&#x6765;&#x5B9E;&#x73B0;&#x7236;&#x5B50;&#x8FDB;&#x7A0B;&#x5171;&#x4EAB;&#xFF0C;&#x800C;&#x4E0D;&#x9700;&#x8981;&#x5728;exec()&#x4E4B;&#x524D;&#x7528;dup()&#x51C6;&#x5907;&#x597D;&#x3002;&#xFF09;</p>
<p>&#x601D;&#x8DEF;&#x6709;&#x4E86;&#xFF0C;&#x5177;&#x4F53;&#x7684;&#x5B9E;&#x73B0;&#x6B63;&#x5728;&#x5199;&#x3002;&#x6700;&#x8FD1;&#x597D;&#x591A;&#x4E8B;&#x60C5;&#xFF0C;&#x6BD5;&#x8BBE;&#x3001;&#x9A7E;&#x7167;&#x3001;&#x91CD;&#x4FEE;&#x3001;&#x8003;&#x8BD5;&#xFF0C;&#x4E94;&#x6708;&#x4EFD;&#x8FD8;&#x8981;&#x53BB;&#x5B9E;&#x4E60;&#xFF0C;&#x53EF;&#x662F;&#x4E00;&#x4EF6;&#x90FD;&#x4E0D;&#x60F3;&#x505A;&#x3002;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[关于函数分派在面向对象和面向过程中的作用的思考]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#x9762;&#x5411;&#x5BF9;&#x8C61;&#x662F;&#x5BF9;&#x9762;&#x5411;&#x8FC7;&#x7A0B;&#x7684;&#x603B;&#x7ED3;&#x4E0E;&#x7EA6;&#x675F;&#x3002;</p>
<p>&#x9762;&#x5411;&#x5BF9;&#x8C61;&#x7684;&#x51FA;&#x73B0;&#x662F;&#x5FC5;&#x7136;&#x7684;&#xFF0C;&#x8FD9;&#x4E00;&#x70B9;&#x4ECE;&#x4EBA;&#x7C7B;&#x7406;&#x6027;&#x7684;&#x5DE5;&#x4F5C;&#x65B9;&#x5F0F;&#x5C31;&#x53EF;&#x4EE5;&#x5F97;&#x5230;&#x89E3;&#x91CA;&#x3002;</p>]]></description><link>https://blog.ykai.cc/guan-yu-mian-xiang-dui-xiang-de-si-kao/</link><guid isPermaLink="false">6331df653945280001365ba7</guid><dc:creator><![CDATA[Yingkai Dang]]></dc:creator><pubDate>Thu, 13 Feb 2020 17:01:48 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x9762;&#x5411;&#x5BF9;&#x8C61;&#x662F;&#x5BF9;&#x9762;&#x5411;&#x8FC7;&#x7A0B;&#x7684;&#x603B;&#x7ED3;&#x4E0E;&#x7EA6;&#x675F;&#x3002;</p>
<p>&#x9762;&#x5411;&#x5BF9;&#x8C61;&#x7684;&#x51FA;&#x73B0;&#x662F;&#x5FC5;&#x7136;&#x7684;&#xFF0C;&#x8FD9;&#x4E00;&#x70B9;&#x4ECE;&#x4EBA;&#x7C7B;&#x7406;&#x6027;&#x7684;&#x5DE5;&#x4F5C;&#x65B9;&#x5F0F;&#x5C31;&#x53EF;&#x4EE5;&#x5F97;&#x5230;&#x89E3;&#x91CA;&#x3002;<br>
&#x5728;&#x9762;&#x5411;&#x8FC7;&#x7A0B;&#x7684;&#x8303;&#x5F0F;&#x4E2D;&#xFF0C;&#x51FD;&#x6570;&#x662F;&#x6700;&#x57FA;&#x672C;&#x7684;&#x201C;&#x52A8;&#x6001;&#x201D;&#x62BD;&#x8C61;&#x5143;&#x7D20;&#xFF0C;&#x8FD9;&#x662F;&#x901A;&#x8FC7;&#x5BF9;&#x6C47;&#x7F16;&#x7684;&#x603B;&#x7ED3;&#x548C;&#x7EA6;&#x675F;&#x5F97;&#x6765;&#x7684;&#x3002;<br>
&#x5B9E;&#x9645;&#x4E0A;&#xFF0C;&#x9762;&#x5411;&#x5BF9;&#x8C61;&#x4E5F;&#x4E00;&#x6837;&#xFF0C;&#x51FD;&#x6570;&#xFF0C;&#x6216;&#x8005;&#x8BF4;&#x65B9;&#x6CD5;&#x4E5F;&#x540C;&#x6837;&#x662F;&#x6700;&#x57FA;&#x672C;&#x7684;&#x5143;&#x7D20;&#xFF0C;&#x56E0;&#x4E3A;&#x6211;&#x4EEC;&#x5B8C;&#x5168;&#x53EF;&#x4EE5;&#x5C06;&#x5B57;&#x6BB5;&#x5F53;&#x4F5C;&#x9690;&#x5F0F;&#x8C03;&#x7528;&#x7684;&#x65B9;&#x6CD5;&#x3002;<br>
&#x6240;&#x4EE5;&#x8BF4;&#xFF0C;<strong>&#x9762;&#x5411;&#x8FC7;&#x7A0B;&#x4E0E;&#x9762;&#x5411;&#x5BF9;&#x8C61;&#x90FD;&#x662F;&#x4EE5;&#x65B9;&#x6CD5;&#x4E3A;&#x6838;&#x5FC3;&#x7684;&#x8303;&#x5F0F;</strong>&#xFF0C;&#x5B83;&#x4EEC;&#x4E4B;&#x95F4;&#x7684;&#x4E0D;&#x540C;&#x4E4B;&#x5904;&#x5728;&#x4E8E;&#x65B9;&#x6CD5;&#x7684;&#x7EC4;&#x5408;&#x65B9;&#x5F0F;&#x4E0A;&#xFF0C;&#x9762;&#x5411;&#x8FC7;&#x7A0B;&#x7684;&#x6240;&#x6709;&#x65B9;&#x6CD5;&#x5E73;&#x94FA;&#x5728;&#x4E00;&#x5C42;&#x4E0A;&#x9762;&#xFF0C;&#x800C;&#x9762;&#x5411;&#x5BF9;&#x8C61;&#x901A;&#x8FC7;&#x5404;&#x79CD;&#x624B;&#x6BB5;&#xFF08;&#x7C7B;&#x7684;&#x533A;&#x5206;&#x3001;&#x91CD;&#x8F7D;&#x3001;&#x91CD;&#x5199;&#x7B49;&#xFF09;&#x4F7F;&#x5F97;&#x65B9;&#x6CD5;&#x7684;&#x7EC4;&#x5408;&#x6709;&#x4E86;&#x5C42;&#x6B21;&#xFF0C;&#x8FD9;&#x79CD;&#x7EC4;&#x5408;&#x65B9;&#x5F0F;&#x7684;&#x4E0D;&#x540C;&#x4E5F;&#x6B63;&#x4F53;&#x73B0;&#x4E86;&#x9762;&#x5411;&#x5BF9;&#x8C61;&#x7684;&#x62BD;&#x8C61;&#x5C42;&#x6B21;&#x66F4;&#x9AD8;&#x3002;&#x66F4;&#x76F4;&#x89C2;&#x7684;&#x770B;&#xFF0C;&#x5B83;&#x4EEC;&#x4E8C;&#x8005;&#x7684;&#x4E0D;&#x540C;&#x4E4B;&#x5904;&#x5728;&#x4E8E;&#x65B9;&#x6CD5;&#x7684;&#x67E5;&#x627E;&#x65B9;&#x5F0F;&#x4E0A;&#xFF0C;&#x6B63;&#x662F;&#x901A;&#x8FC7;&#x67E5;&#x627E;&#x65B9;&#x5F0F;&#x7684;&#x4E0D;&#x540C;&#x624D;&#x5B9E;&#x73B0;&#x4E86;&#x7EC4;&#x5408;&#x65B9;&#x5F0F;&#x7684;&#x4E0D;&#x540C;&#x3002;<br>
&#x5728;&#x9762;&#x5411;&#x8FC7;&#x7A0B;&#x4E2D;&#xFF0C;&#x51FD;&#x6570;&#x88AB;&#x201C;&#x51FD;&#x6570;&#x540D;&#x201D;&#x552F;&#x4E00;&#x786E;&#x5B9A;&#xFF0C;&#x6216;&#x8005;&#x8BF4;&#xFF0C;&#x53EA;&#x9700;&#x8981;&#x51FD;&#x6570;&#x540D;&#x8FD9;&#x4E00;&#x4E2A;&#x5B97;&#x91CF;&#x5C31;&#x53EF;&#x4EE5;&#x786E;&#x5B9A;&#x4E00;&#x4E2A;&#x51FD;&#x6570;&#x3002;&#x800C;&#x9762;&#x5411;&#x5BF9;&#x8C61;&#x5219;&#x4F7F;&#x7528;&#x66F4;&#x591A;&#x7684;&#x5B97;&#x91CF;&#x624D;&#x80FD;&#x786E;&#x5B9A;&#x4E00;&#x4E2A;&#x51FD;&#x6570;&#xFF08;&#x65B9;&#x6CD5;&#xFF09;&#x3002;&#x4F46;&#x53EA;&#x4ECE;&#x8FD9;&#x4E00;&#x70B9;&#x6765;&#x770B;&#xFF0C;&#x5B83;&#x4ECD;&#x672A;&#x83B7;&#x5F97;&#x9762;&#x5411;&#x8FC7;&#x7A0B;&#x6240;&#x4E0D;&#x62E5;&#x6709;&#x7684;&#x7279;&#x5F81;&#xFF0C;&#x5B83;&#x4EEC;&#x672C;&#x8D28;&#x4E0A;&#x662F;&#x4E00;&#x6837;&#x7684;&#x3002;&#x7ECF;&#x5386;&#x4E86;&#x4EE5;&#x4E0B;&#x8FC7;&#x7A0B;&#xFF0C;&#x9762;&#x5411;&#x5BF9;&#x8C61;&#x7684;&#x4E16;&#x754C;&#x624D;&#x7B97;&#x5EFA;&#x7ACB;&#x8D77;&#x6765;&#x3002;<strong>&#x8FD9;&#x79CD;&#x901A;&#x8FC7;&#x5B97;&#x91CF;&#x67E5;&#x627E;&#x51FD;&#x6570;&#x7684;&#x8FC7;&#x7A0B;&#x79F0;&#x4E3A;&#x51FD;&#x6570;&#x5206;&#x6D3E;&#x3002;</strong></p>
<p>&#x53EA;&#x6709;&#x5F53;&#x4E3A;&#x5B97;&#x91CF;&#x8D4B;&#x4E88;&#x66F4;&#x591A;&#x7279;&#x6B8A;&#x610F;&#x4E49;&#x65F6;&#xFF0C;&#x9762;&#x5411;&#x5BF9;&#x8C61;&#x4E2D;&#x7684;&#x5404;&#x79CD;&#x6982;&#x5FF5;&#x624D;&#x771F;&#x6B63;&#x51FA;&#x73B0;&#x3002;&#x8FD9;&#x4E2A;&#x8D4B;&#x4E88;&#x610F;&#x4E49;&#x7684;&#x8FC7;&#x7A0B;&#x4E5F;&#x6B63;&#x662F;&#x6211;&#x4EEC;&#x5C06;&#x81EA;&#x5DF1;&#x5BF9;&#x4E16;&#x754C;&#x7684;&#x7406;&#x89E3;&#x878D;&#x5165;&#x5176;&#x4E2D;&#x7684;&#x8FC7;&#x7A0B;&#x3002;<br>
&#x6211;&#x4EEC;&#x4E3A;&#x7B2C;&#x4E00;&#x4E2A;&#x5B97;&#x91CF;&#x8D4B;&#x4E88;&#x201C;&#x5BF9;&#x8C61;&#x540D;&#x201D;&#x7684;&#x610F;&#x4E49;&#xFF0C;&#x5BF9;&#x8C61;&#x7684;&#x6982;&#x5FF5;&#x4FBF;&#x51FA;&#x73B0;&#x4E86;&#xFF0C;&#x56E0;&#x4E3A;&#x6211;&#x4EEC;&#x901A;&#x8FC7;&#x7B2C;&#x4E00;&#x4E2A;&#x5B97;&#x91CF;&#x5C06;&#x65B9;&#x6CD5;&#x201C;&#x634F;&#x6210;&#x201D;&#x4E00;&#x7C07;&#x4E00;&#x7C07;&#x3002;<br>
&#x6211;&#x4EEC;&#x4ECE;&#x9762;&#x5411;&#x8FC7;&#x7A0B;&#x90A3;&#x91CC;&#x4FDD;&#x7559;&#x4E86;&#x201C;&#x51FD;&#x6570;&#x540D;&#x201D;&#x8FD9;&#x4E2A;&#x5B97;&#x91CF;&#xFF0C;&#x4E5F;&#x5C31;&#x51FA;&#x73B0;&#x4E86;&#x5BF9;&#x8C61;&#x4E2D;&#x7684;&#x65B9;&#x6CD5;&#x3002;<br>
&#x6211;&#x4EEC;&#x5C06;&#x51FD;&#x6570;&#x53C2;&#x6570;&#x4E5F;&#x4F5C;&#x4E3A;&#x5B97;&#x91CF;&#xFF0C;&#x8FD9;&#x624D;&#x51FA;&#x73B0;&#x4E86;&#x5BF9;&#x8C61;&#x5185;&#x7684;&#x51FD;&#x6570;&#x91CD;&#x8F7D;&#x3002;<br>
&#x7EE7;&#x627F;&#x7684;&#x51FA;&#x73B0;&#x4F7F;&#x5F97;&#x65B9;&#x6CD5;&#x7684;&#x7EC4;&#x5408;&#x66F4;&#x4E3A;&#x7075;&#x6D3B;&#xFF0C;&#x5BF9;&#x8C61;&#x4E4B;&#x95F4;&#x6709;&#x4E86;&#x5782;&#x76F4;&#x65B9;&#x5411;&#x4E0A;&#x7684;&#x8054;&#x7CFB;&#x3002;&#x7EE7;&#x627F;&#x672C;&#x8D28;&#x4E0A;&#x662F;&#x7279;&#x5F81;&#x7684;&#x6CBF;&#x7528;&#x3001;&#x62D3;&#x5C55;&#x4E0E;&#x4FEE;&#x6539;&#xFF0C;&#x7279;&#x5F81;&#x5219;&#x4F53;&#x73B0;&#x4E3A;&#x65B9;&#x6CD5;&#x3002;<br>
&#x591A;&#x6001;&#x7684;&#x51FA;&#x73B0;&#x5219;&#x5F15;&#x51FA;&#x4E86;&#x201C;&#x5B9E;&#x9645;&#x7C7B;&#x578B;&#x201D;&#x548C;&#x201C;&#x5916;&#x89C2;&#x7C7B;&#x578B;&#x201D;&#x4E24;&#x4E2A;&#x6982;&#x5FF5;&#x3002;&#x8FD9;&#x662F;&#x56E0;&#x4E3A;&#x5728;&#x591A;&#x6001;&#x4E2D;&#xFF0C;&#x6709;&#x4E9B;&#x5730;&#x65B9;&#x9700;&#x8981;&#x5B50;&#x7C7B;&#x5B9E;&#x4F8B;&#x4EE5;&#x7236;&#x7C7B;&#x5B9E;&#x4F8B;&#x7684;&#x8EAB;&#x4EFD;&#x51FA;&#x73B0;&#xFF0C;&#x90A3;&#x4E48;&#x8FD9;&#x4E2A;&#x5BF9;&#x8C61;&#x5C31;&#x540C;&#x65F6;&#x62E5;&#x6709;&#x4E86;&#x4E24;&#x91CD;&#x8EAB;&#x4EFD;&#xFF0C;&#x6211;&#x4EEC;&#x9700;&#x8981;&#x8868;&#x8FBE;&#x8FD9;&#x4E24;&#x8005;&#xFF0C;&#x8FD9;&#x4E24;&#x4E2A;&#x6982;&#x5FF5;&#x4E5F;&#x5C31;&#x5E94;&#x8FD0;&#x800C;&#x751F;&#x3002;&#x201C;&#x5B9E;&#x9645;&#x7C7B;&#x578B;&#x201D;&#x662F;&#x5BF9;&#x8C61;&#x751F;&#x6765;&#x5C31;&#x6709;&#x7684;&#xFF0C;&#x5B83;&#x8868;&#x8FBE;&#x4E86;&#x4E00;&#x4E2A;&#x5BF9;&#x8C61;&#x6240;&#x62E5;&#x6709;&#x7684;&#x6240;&#x6709;&#x7279;&#x6027;&#xFF0C;&#x800C;&#x201C;&#x5916;&#x89C2;&#x7C7B;&#x578B;&#x201D;&#x662F;&#x591A;&#x53D8;&#x7684;&#xFF0C;&#x5B83;&#x8868;&#x8FBE;&#x4E86;&#x5BF9;&#x4E00;&#x4E2A;&#x5BF9;&#x8C61;&#x6240;&#x62E5;&#x6709;&#x7279;&#x6027;&#x7684;&#x622A;&#x53D6;&#x3002;<br>
&#x867D;&#x7136;&#x201C;&#x5916;&#x89C2;&#x7C7B;&#x578B;&#x201D;&#x4F7F;&#x5F97;&#x5BF9;&#x8C61;&#x770B;&#x8D77;&#x6765;&#x50CF;&#x662F;&#x4E2A;&#x7236;&#x7C7B;&#x7684;&#x5B9E;&#x4F8B;&#xFF0C;&#x4F46;&#x5B9E;&#x9645;&#x4E0A;&#x5B83;&#x4ECD;&#x8868;&#x73B0;&#x51FA;&#x5B50;&#x7C7B;&#x7684;&#x7279;&#x6027;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x8BF4;&#xFF0C;&#x5206;&#x6D3E;&#x8FC7;&#x7A0B;&#x4E2D;&#x4E0D;&#x80FD;&#x770B;&#x5230;&#x4E00;&#x4E2A;A&#x7684;&#x5B9E;&#x4F8B;&#x5C31;&#x53BB;&#x67E5;&#x8BE2;A&#x7C7B;&#x7684;&#x51FD;&#x6570;&#xFF0C;&#x8FD9;&#x76F8;&#x5F53;&#x4E8E;&#x589E;&#x52A0;&#x4E86;&#x4E00;&#x4E2A;&#x4E0D;&#x786E;&#x5B9A;&#x7684;&#x5B97;&#x91CF;&#x3002;&#x4E5F;&#x6B63;&#x662F;&#x8FD9;&#x4E00;&#x70B9;&#xFF0C;&#x5BFC;&#x81F4;&#x4E86;&#x9762;&#x5411;&#x5BF9;&#x8C61;&#x4E2D;&#x51FD;&#x6570;&#x5206;&#x6D3E;&#x65B9;&#x5F0F;&#x5206;&#x4E3A;&#x4E24;&#x79CD;&#xFF1A;<strong>&#x4EE5;&#x201C;&#x5916;&#x89C2;&#x7C7B;&#x578B;&#x201D;&#x5206;&#x6D3E;&#x548C;&#x4EE5;&#x201C;&#x5B9E;&#x9645;&#x7C7B;&#x578B;&#x201D;&#x5206;&#x6D3E;</strong>&#x3002;&#x4EE5;&#x5B9E;&#x9645;&#x7C7B;&#x578B;&#x8FDB;&#x884C;&#x5206;&#x6D3E;&#x7684;&#x51FD;&#x6570;&#x6211;&#x4EEC;&#x79F0;&#x4E3A;&#x201C;&#x865A;&#x51FD;&#x6570;&#x201D;&#xFF0C;&#x4EE5;&#x5916;&#x89C2;&#x7C7B;&#x578B;&#x5206;&#x6D3E;&#x7684;&#x5219;&#x662F;&#x201C;&#x975E;&#x865A;&#x51FD;&#x6570;&#x201D;&#x3002;</p>
<p>&#x9762;&#x5411;&#x5BF9;&#x8C61;&#x7684;&#x4E09;&#x5927;&#x7279;&#x5F81;&#xFF1A;&#x62BD;&#x8C61;&#x3001;&#x7EE7;&#x627F;&#x3001;&#x591A;&#x6001;&#x3002;&#x5176;&#x4E2D;&#xFF0C;&#x62BD;&#x8C61;&#x4F7F;&#x5F97;&#x65B9;&#x6CD5;&#x7EC4;&#x5408;&#x6210;&#x4E3A;&#x4E00;&#x4E2A;&#x4E2A;&#x6982;&#x5FF5;&#xFF0C;&#x7EE7;&#x627F;&#x4F7F;&#x5F97;&#x5B83;&#x4EEC;&#x5F97;&#x4EE5;&#x590D;&#x7528;&#xFF0C;&#x8FD9;&#x4E24;&#x8005;&#x5B9E;&#x9645;&#x4E0A;&#x662F;&#x521B;&#x5EFA;&#x6982;&#x5FF5;&#x7684;&#x8FC7;&#x7A0B;&#xFF0C;&#x800C;&#x771F;&#x6B63;&#x4F7F;&#x5F97;&#x62E5;&#x6709;&#x7EE7;&#x627F;&#x5173;&#x7CFB;&#x7684;&#x6982;&#x5FF5;&#x6709;&#x6240;&#x8054;&#x7CFB;&#x3001;&#x5171;&#x540C;&#x5DE5;&#x4F5C;&#x7684;&#xFF0C;&#x5B9E;&#x9645;&#x4E0A;&#x53EA;&#x6709;&#x591A;&#x6001;&#x3002;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[MiniOS的缺页中断处理]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#x5BD2;&#x5047;&#x90FD;&#x8FC7;&#x4E86;&#x597D;&#x4E45;&#x4E86;&#x3002;&#x4E0A;&#x5B66;&#x671F;&#x6709;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x8BFE;&#x7A0B;&#xFF0C;&#x6211;&#x53C2;&#x52A0;&#x4E86;&#x8BD5;&#x70B9;&#x73ED;&#xFF0C;&#x8BD5;&#x70B9;&#x73ED;&#x6709;&#x597D;&#x591A;&#x5B9E;&#x9A8C;&#x8981;&#x505A;&#xFF0C;&#x6700;&#x540E;&#x4E00;&#x4E2A;&#x5B9E;&#x9A8C;&#x6211;&#x5206;&#x5230;&#x7684;&#x5B9E;</p>]]></description><link>https://blog.ykai.cc/miniosde-que-ye-zhong-duan-chu-li/</link><guid isPermaLink="false">6331df653945280001365ba5</guid><category><![CDATA[OS]]></category><dc:creator><![CDATA[Yingkai Dang]]></dc:creator><pubDate>Fri, 10 Jan 2020 11:44:35 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x5BD2;&#x5047;&#x90FD;&#x8FC7;&#x4E86;&#x597D;&#x4E45;&#x4E86;&#x3002;&#x4E0A;&#x5B66;&#x671F;&#x6709;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x8BFE;&#x7A0B;&#xFF0C;&#x6211;&#x53C2;&#x52A0;&#x4E86;&#x8BD5;&#x70B9;&#x73ED;&#xFF0C;&#x8BD5;&#x70B9;&#x73ED;&#x6709;&#x597D;&#x591A;&#x5B9E;&#x9A8C;&#x8981;&#x505A;&#xFF0C;&#x6700;&#x540E;&#x4E00;&#x4E2A;&#x5B9E;&#x9A8C;&#x6211;&#x5206;&#x5230;&#x7684;&#x5B9E;&#x9A8C;&#x662F;MiniOS&#x7684;&#x7F3A;&#x9875;&#x4E2D;&#x65AD;&#x5904;&#x7406;&#x7A0B;&#x5E8F;&#x3002;<br>
MiniOS&#x662F;&#x8FD9;&#x4E2A;&#x8BD5;&#x70B9;&#x73ED;&#x5386;&#x4EE3;&#x540C;&#x5B66;&#x5171;&#x540C;&#x5199;&#x7684;&#x4E00;&#x4E2A;&#x7B80;&#x5355;&#x7684;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#xFF0C;&#x57FA;&#x4E8E;x86&#x67B6;&#x6784;&#x3002;&#x6BCF;&#x4E00;&#x5C4A;&#x540C;&#x5B66;&#x4F1A;&#x5728;&#x4E4B;&#x524D;&#x7684;&#x57FA;&#x7840;&#x4E0A;&#x8FDB;&#x884C;&#x5F00;&#x53D1;&#xFF0C;&#x589E;&#x52A0;&#x6216;&#x8005;&#x589E;&#x5F3A;&#x529F;&#x80FD;&#x3002;<br>
&#x4ECA;&#x5E74;&#x6211;&#x548C;&#x53E6;&#x4E00;&#x4E2A;&#x540C;&#x5B66;&#x4E00;&#x8D77;&#xFF0C;&#x8D1F;&#x8D23;&#x8BBE;&#x8BA1;&#x548C;&#x7F16;&#x5199;MiniOS&#x7684;&#x7F3A;&#x9875;&#x4E2D;&#x65AD;&#x5904;&#x7406;&#x51FD;&#x6570;&#x3002;&#x4E0B;&#x9762;&#x662F;&#x6211;&#x7684;&#x5B9E;&#x9A8C;&#x62A5;&#x544A;&#xFF0C;&#x4E5F;&#x662F;&#x6211;&#x6574;&#x4F53;&#x7684;&#x601D;&#x8DEF;&#x548C;&#x4E00;&#x4E9B;&#x60F3;&#x6CD5;&#x3002;<br>
&#x8BBE;&#x8BA1;&#x4E0D;&#x7B97;&#x5DE7;&#x5999;&#xFF0C;&#x4E5F;&#x7F3A;&#x5C11;&#x6DF1;&#x601D;&#x719F;&#x8651;&#xFF0C;&#x4EC5;&#x4F9B;&#x5B66;&#x4E60;&#x53C2;&#x8003;&#x3002;</p>
<hr>
<p>&#x4EC0;&#x4E48;&#x662F;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#xFF1F;&#x5BF9;&#x8BA1;&#x7B97;&#x673A;&#x7684;&#x4E00;&#x822C;&#x7528;&#x6237;&#x6765;&#x8BF4;&#xFF0C;&#x5185;&#x5B58;&#x7684;&#x662F;&#x4E00;&#x6761;&#x6761;&#x4EF7;&#x503C;&#x4E0D;&#x83F2;&#x7684;&#x5185;&#x5B58;&#x6761;&#xFF0C;&#x4ED6;&#x4EEC;&#x7684;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x662F;&#x5BF9;&#x5185;&#x5B58;&#x6761;&#x7684;&#x7BA1;&#x7406;&#xFF0C;&#x8FD9;&#x5173;&#x7CFB;&#x5230;&#x4ED6;&#x4EEC;&#x7684;&#x94B1;&#x5305;&#xFF1B;&#x5BF9;&#x4E8E;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x5F00;&#x53D1;&#x8005;&#x6765;&#x8BF4;&#xFF0C;&#x5F97;&#x76CA;&#x4E8E;&#x8FDB;&#x7A0B;&#x6982;&#x5FF5;&#x7684;&#x5E7F;&#x6CDB;&#x666E;&#x53CA;&#xFF0C;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x662F;&#x5BF9;&#x81EA;&#x5DF1;&#x6240;&#x5199;&#x7A0B;&#x5E8F;&#x7684;&#x8FDB;&#x7A0B;&#x7A7A;&#x95F4;&#x7684;&#x7BA1;&#x7406;&#xFF0C;&#x4ED6;&#x4EEC;&#x4E0D;&#x5FC5;&#x5173;&#x5FC3;&#x5176;&#x4ED6;&#x8FDB;&#x7A0B;&#x7684;&#x5B58;&#x5728;&#xFF1B;&#x800C;&#x8FD9;&#x79CD;&#x62BD;&#x8C61;&#x4E00;&#x5B9A;&#x79BB;&#x4E0D;&#x5F00;&#x7684;&#x5219;&#x662F;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#xFF0C;&#x5BF9;&#x4E8E;&#x4E00;&#x4E2A;&#x73B0;&#x4EE3;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x6765;&#x8BF4;&#xFF0C;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x56DB;&#x4E2A;&#x5B57;&#x5219;&#x610F;&#x5473;&#x7740;&#xFF0C;&#x5145;&#x5206;&#x5229;&#x7528;&#x6709;&#x9650;&#x7684;&#x5185;&#x5B58;&#x8D44;&#x6E90;&#xFF0C;&#x7EDF;&#x7B79;&#x89C4;&#x5212;&#xFF0C;&#x505A;&#x597D;&#x7CBE;&#x51C6;&#x7684;&#x7BA1;&#x7406;&#x4E0E;&#x5408;&#x7406;&#x7684;&#x62BD;&#x8C61;&#xFF0C;&#x4E3A;&#x8FDB;&#x7A0B;&#x63D0;&#x4F9B;&#x4E00;&#x4E2A;&#x826F;&#x597D;&#x7684;&#x201C;&#x751F;&#x5B58;&#x73AF;&#x5883;&#x201D;&#x3002;</p>
<p>&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x7684;&#x4EFB;&#x4F55;&#x64CD;&#x4F5C;&#x90FD;&#x79BB;&#x4E0D;&#x5F00;&#x786C;&#x4EF6;&#x7684;&#x652F;&#x6301;&#xFF0C;i386&#x4E3A;&#x6211;&#x4EEC;&#x63D0;&#x4F9B;&#x4E86;&#x5F88;&#x591A;&#x786C;&#x4EF6;&#x5C42;&#x9762;&#x7684;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x7684;&#x673A;&#x5236;&#xFF0C;&#x5F97;&#x76CA;&#x4E8E;&#x8FD9;&#x4E9B;&#x673A;&#x5236;&#xFF0C;&#x8FDB;&#x884C;&#x67D0;&#x4E9B;&#x62BD;&#x8C61;&#x624D;&#x6210;&#x4E3A;&#x53EF;&#x80FD;&#x3002;&#x8FD9;&#x4E9B;&#x673A;&#x5236;&#x6BD4;&#x5982;&#xFF1A;&#x5206;&#x6BB5;&#x3001;&#x5206;&#x9875;&#x3001;&#x4E2D;&#x65AD;&#xFF0C;&#x8FD9;&#x4E09;&#x8005;&#x3001;&#x5C24;&#x5176;&#x662F;&#x540E;&#x9762;&#x4E24;&#x4E2A;&#xFF0C;&#x8BA9;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x62E5;&#x6709;&#x8FDB;&#x7A0B;&#x7684;&#x6982;&#x5FF5;&#x6210;&#x4E3A;&#x53EF;&#x80FD;&#x3002;</p>
<p>&#x5206;&#x9875;&#x673A;&#x5236;&#x5C06;&#x5185;&#x5B58;&#x5206;&#x4E3A;&#x4E00;&#x4E2A;&#x4E00;&#x4E2A;4K&#x5927;&#x5C0F;&#x7684;&#x9875;&#xFF0C;&#x540C;&#x65F6;&#x5728;&#x7269;&#x7406;&#x5730;&#x5740;&#x7684;&#x57FA;&#x7840;&#x4E0A;&#x5EFA;&#x7ACB;&#x4E86;&#x7EBF;&#x6027;&#x5730;&#x5740;&#x7684;&#x6982;&#x5FF5;&#x3002;&#x7EBF;&#x6027;&#x5730;&#x5740;&#x662F;&#x4E00;&#x79CD;&#x865A;&#x62DF;&#x7684;&#x5730;&#x5740;&#xFF0C;&#x5B83;&#x548C;&#x7269;&#x7406;&#x5730;&#x5740;&#x4E0D;&#x540C;&#xFF0C;&#x4E0D;&#x4F1A;&#x76F4;&#x63A5;&#x4ECE;CPU&#x901A;&#x8FC7;&#x5730;&#x5740;&#x603B;&#x7EBF;&#x9001;&#x81F3;&#x5185;&#x5B58;&#xFF0C;&#x4F46;&#x5B83;&#x4E0E;&#x7269;&#x7406;&#x5730;&#x5740;&#x4E00;&#x6837;&#x90FD;&#x662F;32&#x4F4D;&#x7684;&#xFF0C;&#x5206;&#x9875;&#x673A;&#x5236;&#x5C31;&#x662F;&#x7528;&#x6765;&#x5B8C;&#x6210;&#x8FD9;&#x79CD;&#x865A;&#x62DF;&#x7684;&#x7EBF;&#x6027;&#x5730;&#x5740;&#x5230;&#x5B9E;&#x9645;&#x7269;&#x7406;&#x5730;&#x5740;&#x7684;&#x6620;&#x5C04;&#x3002;&#x867D;&#x8BF4;&#x7EBF;&#x6027;&#x5730;&#x5740;&#x662F;&#x865A;&#x62DF;&#x7684;&#xFF0C;&#x4F46;&#x5173;&#x952E;&#x5728;&#x4E8E;CPU&#x53EF;&#x4EE5;&#x8BC6;&#x522B;&#x7EBF;&#x6027;&#x5730;&#x5740;&#xFF0C;&#x8FD9;&#x4E2A;&#x5730;&#x5740;&#x4F1A;&#x5728;&#x786C;&#x4EF6;&#x4E2D;&#x81EA;&#x52A8;&#x8F6C;&#x5316;&#x4E3A;&#x7269;&#x7406;&#x5730;&#x5740;&#x8FD9;&#x4E2A;&#x8FC7;&#x7A0B;&#x5BF9;&#x8FDB;&#x7A0B;&#x5B8C;&#x5168;&#x662F;&#x900F;&#x660E;&#x7684;&#xFF0C;&#x6B63;&#x662F;&#x6709;&#x4E86;&#x8FD9;&#x79CD;&#x6620;&#x5C04;&#xFF0C;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x53EF;&#x4EE5;&#x4E3A;&#x8FDB;&#x7A0B;&#x63D0;&#x4F9B;&#x7EDF;&#x4E00;&#x7684;&#x5185;&#x5B58;&#x6A21;&#x578B;&#x3002;</p>
<p>&#x5206;&#x9875;&#x673A;&#x5236;&#x8FD8;&#x62E5;&#x6709;&#x5F88;&#x591A;&#x5176;&#x4ED6;&#x529F;&#x80FD;&#xFF0C;&#x6BD4;&#x5982;&#x6743;&#x9650;&#x63A7;&#x5236;&#x3001;&#x8BFB;&#x5199;&#x63A7;&#x5236;&#x7B49;&#xFF0C;&#x5176;&#x4E2D;&#x5C31;&#x5305;&#x62EC;&#x4E86;&#x6211;&#x4EEC;&#x6700;&#x8FD1;&#x5728;&#x505A;&#x7684;&#x7F3A;&#x9875;&#x4E2D;&#x65AD;&#x3002;</p>
<p>&#x5206;&#x9875;&#x673A;&#x5236;&#x5176;&#x5B9E;&#x5C31;&#x662F;&#x5EFA;&#x7ACB;&#x4E00;&#x5F20;&#x5F20;&#x8868;&#xFF0C;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x53EA;&#x9700;&#x8981;&#x5411;&#x8868;&#x4E2D;&#x586B;&#x5199;&#x5408;&#x9002;&#x7684;&#x503C;&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x5B8C;&#x6210;&#x60F3;&#x8981;&#x7684;32&#x4F4D;&#x5730;&#x5740;&#x5230;32&#x4F4D;&#x5730;&#x5740;&#x7684;&#x8F6C;&#x6362;&#x3002;&#x8FD9;&#x5957;&#x673A;&#x5236;&#x6700;&#x5927;&#x7684;&#x4E00;&#x4E2A;&#x597D;&#x5904;&#x662F;&#xFF0C;&#x6211;&#x4EEC;&#x4E0D;&#x9700;&#x8981;&#x5C06;&#x6240;&#x6709;&#x7684;&#x9875;&#x8868;&#x548C;&#x9875;&#x9762;&#x5728;&#x4E00;&#x5F00;&#x59CB;&#x5C31;&#x5206;&#x914D;&#x597D;&#xFF0C;&#x53EF;&#x4EE5;&#x5C06;&#x9875;&#x8868;&#x6216;&#x8005;&#x9875;&#x76EE;&#x5F55;&#x7684;&#x67D0;&#x4E00;&#x9879;&#x6682;&#x65F6;&#x7F6E;&#x4E3A;&#x7A7A;&#xFF0C;&#x4E5F;&#x5C31;&#x4E0D;&#x7528;&#x5206;&#x914D;&#x5B9E;&#x9645;&#x7684;&#x7269;&#x7406;&#x5730;&#x5740;&#xFF0C;&#x7B49;&#x5230;&#x4E86;&#x771F;&#x6B63;&#x9700;&#x8981;&#x8BBF;&#x95EE;&#x67D0;&#x4E2A;&#x5730;&#x5740;&#x65F6;&#xFF0C;&#x5206;&#x9875;&#x673A;&#x5236;&#x901A;&#x8FC7;&#x4E2D;&#x65AD;&#x6765;&#x544A;&#x77E5;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#xFF0C;&#x8FD9;&#x4E2A;&#x4E2D;&#x65AD;&#x5C31;&#x662F;&#x6211;&#x4EEC;&#x6240;&#x8BF4;&#x7684;&#x7F3A;&#x9875;&#x4E2D;&#x65AD;&#x3002;&#x9875;&#x8868;&#x9879;&#x548C;&#x9875;&#x76EE;&#x5F55;&#x9879;&#x7684;&#x6700;&#x540E;&#x4E00;&#x4F4D;&#x5C31;&#x8868;&#x793A;&#x4E86;&#x8FD9;&#x4E00;&#x9875;&#x662F;&#x5426;&#x5B58;&#x5728;&#xFF0C;&#x5982;&#x679C;&#x8FD9;&#x4E00;&#x4F4D;&#x4E3A;0&#xFF0C;&#x800C;CPU&#x8BD5;&#x56FE;&#x8BBF;&#x95EE;&#x8FD9;&#x4E00;&#x9875;&#x7684;&#x67D0;&#x4E2A;&#x5730;&#x5740;&#xFF0C;&#x90A3;&#x4E48;&#x786C;&#x4EF6;&#x5C31;&#x4F1A;&#x89E6;&#x53D1;&#x7F3A;&#x9875;&#x4E2D;&#x65AD;&#x3002;</p>
<p>&#x5728;&#x73B0;&#x4EE3;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x7684;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x4E2D;&#xFF0C;&#x6709;&#x4E00;&#x4E2A;&#x8D2F;&#x5F7B;&#x59CB;&#x7EC8;&#x7684;&#x7406;&#x5FF5;&#xFF0C;&#x5C31;&#x662F;&#x6240;&#x6709;&#x7684;&#x5206;&#x914D;&#x90FD;&#x662F;&#x62D6;&#x5230;&#x4E0D;&#x80FD;&#x518D;&#x62D6;&#x624D;&#x8FDB;&#x884C;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x6240;&#x8C13;&#x7684;&#x201C;&#x61D2;&#x52A0;&#x8F7D;&#x201D;&#x3001;&#x201C;&#x5EF6;&#x8FDF;&#x5206;&#x914D;&#x201D;&#x3002;&#x56E0;&#x4E3A;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x4E0D;&#x662F;&#x4E3A;&#x4E00;&#x4E2A;&#x4E24;&#x4E2A;&#x8FDB;&#x7A0B;&#x670D;&#x52A1;&#x7684;&#xFF0C;&#x5B83;&#x8981;&#x5C3D;&#x53EF;&#x80FD;&#x4FDD;&#x8BC1;&#x81EA;&#x5DF1;&#x80FD;&#x5E94;&#x4ED8;&#x66F4;&#x591A;&#x7684;&#x4EFB;&#x52A1;&#xFF0C;&#x8FD9;&#x65F6;&#x5019;&#x201C;&#x61D2;&#x60F0;&#x201D;&#x5C31;&#x6362;&#x6765;&#x4E86;&#x6574;&#x4E2A;&#x7CFB;&#x7EDF;&#x7684;&#x201C;&#x52E4;&#x5FEB;&#x201D;&#x3002;&#x5728;i386&#x673A;&#x5668;&#x4E0A;&#xFF0C;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x5B9E;&#x73B0;&#x201C;&#x61D2;&#x52A0;&#x8F7D;&#x201D;&#x6240;&#x5229;&#x7528;&#x7684;&#x57FA;&#x672C;&#x786C;&#x4EF6;&#x673A;&#x5236;&#x5C31;&#x662F;&#x5206;&#x9875;&#x63D0;&#x4F9B;&#x7684;&#x7F3A;&#x9875;&#x4E2D;&#x65AD;&#x3002;</p>
<p>&#x57FA;&#x4E8E;&#x201C;&#x5EF6;&#x8FDF;&#x5206;&#x914D;&#x201D;&#x7684;&#x57FA;&#x672C;&#x7406;&#x5FF5;&#xFF0C;&#x6211;&#x4EEC;&#x4E3A;MiniOS&#x63D0;&#x51FA;&#x4E86;&#x4E00;&#x5957;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x7684;&#x62BD;&#x8C61;&#xFF0C;&#x6574;&#x4F53;&#x601D;&#x8DEF;&#x662F;&#x7AD9;&#x5728;&#x8FDB;&#x7A0B;&#x7684;&#x89D2;&#x5EA6;&#x4E0A;&#xFF0C;&#x56F4;&#x7ED5;&#x7740;&#x7F3A;&#x9875;&#x4E2D;&#x65AD;&#xFF0C;&#x5B8C;&#x5584;&#x5176;&#x5468;&#x56F4;&#x5404;&#x7EC4;&#x4EF6;&#x7684;&#x7BA1;&#x7406;&#x4E0E;&#x534F;&#x8C03;&#x3002;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/MiniOS%E7%9A%84%E7%BC%BA%E9%A1%B5%E4%B8%AD%E6%96%AD%E5%A4%84%E7%90%86/images/%E6%9E%B6%E6%9E%84%E5%9B%BE.png" alt="&#x67B6;&#x6784;&#x56FE;" loading="lazy"></p>
<p>&#x8FD9;&#x662F;&#x6211;&#x4EEC;&#x7684;&#x67B6;&#x6784;&#x56FE;&#x3002;</p>
<p>&#x6211;&#x4EEC;&#x9996;&#x5148;&#x786E;&#x5B9A;&#x7684;&#x4E00;&#x4E2A;&#x6982;&#x5FF5;&#x662F;&#x201C;&#x9875;&#x201D;&#x3002;&#x8FD9;&#x91CC;&#x501F;&#x9274;&#x4E86;Linux&#x7684;&#x8BBE;&#x8BA1;&#x3002;&#x5BF9;&#x4E00;&#x4E2A;&#x8FDB;&#x7A0B;&#x6765;&#x8BF4;&#xFF0C;&#x5B83;&#x6240;&#x62E5;&#x6709;&#x7684;&#x9875;&#x662F;&#x4E0E;&#x7269;&#x7406;&#x5185;&#x5B58;&#x65E0;&#x5173;&#x7684;&#xFF0C;&#x9875;&#x6307;&#x7684;&#x662F;&#x6570;&#x636E;&#xFF0C;&#x662F;&#x8FDB;&#x7A0B;&#x7EBF;&#x6027;&#x7ED3;&#x6784;&#x4E2D;&#x7684;&#x4E00;&#x90E8;&#x5206;&#x3002;&#x8FDB;&#x7A0B;&#x7684;&#x7EBF;&#x6027;&#x533A;&#x6307;&#x7684;&#x5C31;&#x662F;&#x6211;&#x4EEC;&#x4E3A;&#x8FDB;&#x7A0B;&#x63D0;&#x4F9B;&#x7684;&#x4E00;&#x79CD;&#x62BD;&#x8C61;&#xFF0C;&#x8BA9;&#x8FDB;&#x7A0B;&#x770B;&#x8D77;&#x6765;&#x81EA;&#x5DF1;&#x62E5;&#x6709;&#x5168;&#x90E8;&#x7684;4G&#x5185;&#x5B58;&#x3002;</p>
<p>&#x4E0E;&#x6B64;&#x540C;&#x65F6;&#xFF0C;&#x6211;&#x4EEC;&#x5C06;&#x5B9E;&#x9645;&#x5185;&#x5B58;&#x4E2D;&#x7684;&#x7269;&#x7406;&#x7A7A;&#x95F4;&#x79F0;&#x4E3A;&#x201C;&#x9875;&#x6846;&#x201D;&#x3002;&#x5C06;&#x9875;&#x4E0E;&#x9875;&#x6846;&#x5206;&#x5F00;&#x6765;&#x770B;&#x662F;&#x5F88;&#x91CD;&#x8981;&#x7684;&#xFF0C;&#x9875;&#x6846;&#x6307;&#x7684;&#x662F;&#x4E00;&#x4E2A;&#x5730;&#x65B9;&#xFF0C;&#x5B83;&#x80FD;&#x5BB9;&#x7EB3;&#x4E00;&#x4E2A;&#x9875;&#x3002;</p>
<p>&#x5728;&#x8FD9;&#x5957;&#x67B6;&#x6784;&#x4E2D;&#xFF0C;&#x9875;&#x6846;&#x5C5E;&#x4E8E;&#x201C;&#x9875;&#x5BB9;&#x5668;&#x201D;&#x7684;&#x4E00;&#x79CD;&#x3002;&#x9875;&#x5BB9;&#x5668;&#x6307;&#x7684;&#x662F;&#x80FD;&#x591F;&#x5B58;&#x653E;&#x9875;&#x6570;&#x636E;&#x7684;&#x5BB9;&#x5668;&#xFF0C;&#x6BD4;&#x5982;&#x4E0A;&#x8FF0;&#x7684;&#x9875;&#x6846;&#xFF0C;&#x53C8;&#x6BD4;&#x5982;&#x8FD9;&#x91CC;&#x7684;swap&#x6587;&#x4EF6;&#x3001;&#x6620;&#x5C04;&#x6587;&#x4EF6;&#x3002;Swap&#x6587;&#x4EF6;&#x662F;&#x786C;&#x76D8;&#x4E0A;&#x7684;&#x4E00;&#x5757;&#x4FDD;&#x7559;&#x7684;&#x533A;&#x57DF;&#xFF0C;&#x53EF;&#x4EE5;&#x5728;&#x7CFB;&#x7EDF;&#x5185;&#x5B58;&#x4E0D;&#x8DB3;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5C06;&#x9875;&#x6846;&#x4E2D;&#x7684;&#x9875;&#x9762;&#x653E;&#x5165;&#x5176;&#x4E2D;&#x4EE5;&#x8282;&#x7701;&#x5185;&#x5B58;&#x3002;&#x800C;&#x6620;&#x5C04;&#x6587;&#x4EF6;&#x6307;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x4E2D;&#x7684;&#x666E;&#x901A;&#x6587;&#x4EF6;&#xFF0C;&#x53EA;&#x4E0D;&#x8FC7;&#x8FD9;&#x4E9B;&#x6587;&#x4EF6;&#x7684;&#x4E00;&#x90E8;&#x5206;&#x4E0E;&#x8FDB;&#x7A0B;&#x7EBF;&#x6027;&#x5730;&#x5740;&#x4E2D;&#x7684;&#x4E00;&#x90E8;&#x5206;&#x5173;&#x8054;&#x8D77;&#x6765;&#x4E86;&#x3002;</p>
<p>&#x9875;&#x5BB9;&#x5668;&#x4E2D;&#x7684;&#x5355;&#x4F4D;&#x7A7A;&#x95F4;&#x6211;&#x4EEC;&#x79F0;&#x4E3A;&#x201C;&#x9875;&#x7A7A;&#x95F4;&#x201D;&#x3002;&#x6BCF;&#x79CD;&#x9875;&#x5BB9;&#x5668;&#x90FD;&#x6709;&#x80FD;&#x591F;&#x6807;&#x8BC6;&#x5176;&#x4E2D;&#x4E00;&#x5757;&#x9875;&#x7A7A;&#x95F4;&#x7684;id&#x3002;&#x5BF9;&#x4E8E;&#x7269;&#x7406;&#x5185;&#x5B58;&#x6765;&#x8BF4;&#xFF0C;&#x8FD9;&#x4E2A;id&#x662F;4K&#x5BF9;&#x9F50;&#x7684;&#x7269;&#x7406;&#x5730;&#x5740;&#xFF1B;&#x5BF9;&#x4E8E;swap&#x6587;&#x4EF6;&#x6765;&#x8BF4;&#xFF0C;id&#x662F;&#x6309;4K&#x5212;&#x5206;&#x7684;&#x5757;&#x7684;&#x5E8F;&#x53F7;&#xFF1B;&#x6620;&#x5C04;&#x6587;&#x4EF6;&#x7684;id&#x5219;&#x662F;&#x4E00;&#x4E2A;&#x4E09;&#x5143;&#x7EC4;&#xFF1A;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;&#x3001;&#x6587;&#x4EF6;&#x504F;&#x79FB;&#x4EE5;&#x53CA;&#x5927;&#x5C0F;&#x3002;</p>
<p>&#x9875;&#x5BB9;&#x5668;&#x7684;&#x6982;&#x5FF5;&#x53EF;&#x4EE5;&#x5C06;&#x8FD9;&#x4E09;&#x8005;&#x7EDF;&#x4E00;&#x8D77;&#x6765;&#x3002;&#x6839;&#x636E;&#x6BCF;&#x79CD;&#x9875;&#x5BB9;&#x5668;&#x7279;&#x6027;&#x4E0E;&#x7528;&#x9014;&#xFF0C;&#x5B83;&#x4EEC;&#x53C8;&#x6709;&#x4E00;&#x4E9B;&#x4E0D;&#x540C;&#x7684;&#x5C5E;&#x6027;&#xFF0C;&#x6BD4;&#x5982;&#x80FD;&#x5426;&#x5199;&#x56DE;&#x3001;&#x9875;&#x4E0E;&#x9875;&#x7A7A;&#x95F4;&#x7684;&#x5927;&#x5C0F;&#x5173;&#x7CFB;&#x7B49;&#x7B49;&#x3002;</p>
<p>&#x9875;&#x6846;&#x5176;&#x5B9E;&#x662F;&#x4E00;&#x79CD;&#x7279;&#x6B8A;&#x7684;&#x9875;&#x5BB9;&#x5668;&#x3002;&#x56E0;&#x4E3A;CPU&#x67B6;&#x6784;&#x7684;&#x539F;&#x56E0;&#xFF0C;&#x6240;&#x6709;&#x9700;&#x8981;&#x8BBF;&#x95EE;&#x7684;&#x6570;&#x636E;&#x6700;&#x7EC8;&#x90FD;&#x5FC5;&#x987B;&#x653E;&#x5230;&#x5185;&#x5B58;&#x4E2D;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x9875;&#x6846;&#x4E2D;&#xFF0C;&#x9875;&#x6846;&#x4E5F;&#x5C31;&#x6210;&#x4E3A;&#x4E86;&#x6574;&#x4E2A;&#x67B6;&#x6784;&#x7684;&#x4E00;&#x4E2A;&#x91CD;&#x5FC3;&#x3002;</p>
<p>&#x6709;&#x4E86;&#x8FD9;&#x4E2A;&#x67B6;&#x6784;&#xFF0C;&#x6211;&#x4EEC;&#x6765;&#x8BD5;&#x7740;&#x7528;&#x8FD9;&#x4E2A;&#x67B6;&#x6784;&#x5B8C;&#x6210;&#x4E00;&#x4E0B;&#x6211;&#x4EEC;&#x7684;&#x61D2;&#x52A0;&#x8F7D;&#x673A;&#x5236;&#x3002;</p>
<p>&#x61D2;&#x52A0;&#x8F7D;&#x5B9E;&#x9645;&#x4E0A;&#x53EF;&#x4EE5;&#x6839;&#x636E;&#x8FDB;&#x7A0B;&#x7EBF;&#x6027;&#x533A;&#x57DF;&#x4E0D;&#x540C;&#x6027;&#x8D28;&#x4EE5;&#x53CA;&#x5176;&#x4ED6;&#x56E0;&#x7D20;&#x88AB;&#x5206;&#x6210;&#x51E0;&#x4E2A;&#x76F8;&#x5BF9;&#x72EC;&#x7ACB;&#x7684;&#x529F;&#x80FD;&#xFF1A;&#x4EE3;&#x7801;&#x6BB5;&#xFF08;&#x6587;&#x672C;&#x6BB5;&#xFF09;&#x548C;&#x6570;&#x636E;&#x6BB5;&#x7684;&#x61D2;&#x52A0;&#x8F7D;&#x3001;&#x6808;&#x6BB5;&#x7684;&#x61D2;&#x52A0;&#x8F7D;&#x4EE5;&#x53CA;&#x9875;&#x9762;&#x7684;&#x4EA4;&#x6362;&#x3002;</p>
<p>&#x7B2C;&#x4E00;&#x4E2A;&#x529F;&#x80FD;&#xFF0C;&#x4EE3;&#x7801;&#x6BB5;&#x548C;&#x6570;&#x636E;&#x6BB5;&#x7684;&#x61D2;&#x52A0;&#x8F7D;&#x3002;&#x6211;&#x4EEC;&#x8981;&#x8FD0;&#x884C;&#x4E00;&#x4E2A;&#x7A0B;&#x5E8F;&#xFF0C;&#x9996;&#x5148;&#x9700;&#x8981;&#x628A;&#x4EE3;&#x7801;&#x6BB5;&#x548C;&#x6570;&#x636E;&#x6BB5;&#x52A0;&#x8F7D;&#x8FDB;&#x5185;&#x5B58;&#x4E2D;&#xFF0C;&#x800C;&#x8FD9;&#x4E24;&#x4E2A;&#x6BB5;&#x7684;&#x5185;&#x5BB9;&#x662F;&#x4F4D;&#x4E8E;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x5F53;&#x4E2D;&#x7684;&#xFF0C;&#x8FD9;&#x521A;&#x521A;&#x597D;&#x4E0E;&#x4E0A;&#x56FE;&#x7684;&#x6620;&#x5C04;&#x6587;&#x4EF6;&#x9875;&#x5BB9;&#x5668;&#x5BF9;&#x5E94;&#x3002;</p>
<p>&#x7B2C;&#x4E8C;&#x4E2A;&#x529F;&#x80FD;&#xFF0C;&#x6808;&#x6BB5;&#x7684;&#x61D2;&#x52A0;&#x8F7D;&#x3002;&#x6808;&#x6BB5;&#x662F;&#x4E0D;&#x5B58;&#x5728;&#x7A0B;&#x5E8F;&#x76F8;&#x5173;&#x7684;&#x521D;&#x59CB;&#x5316;&#x6570;&#x636E;&#x7684;&#xFF0C;&#x56E0;&#x6B64;&#x6211;&#x4EEC;&#x53EA;&#x9700;&#x8981;&#x4E3A;&#x9875;&#x9762;&#x5728;&#x7269;&#x7406;&#x5185;&#x5B58;&#x4E2D;&#x5BFB;&#x627E;&#x4E00;&#x5757;&#x7A7A;&#x95F4;&#x5373;&#x53EF;&#xFF0C;&#x8FD9;&#x4E0E;&#x4E0A;&#x56FE;&#x9875;&#x6846;&#x9875;&#x5BB9;&#x5668;&#x5BF9;&#x5E94;&#x3002;</p>
<p>&#x7B2C;&#x4E09;&#x4E2A;&#x529F;&#x80FD;&#xFF0C;&#x9875;&#x9762;&#x7684;&#x4EA4;&#x6362;&#x3002;&#x5F53;&#x7CFB;&#x7EDF;&#x7269;&#x7406;&#x5185;&#x5B58;&#x4E0D;&#x8DB3;&#x65F6;&#xFF0C;&#x5C06;&#x9875;&#x9762;&#x4ECE;&#x9875;&#x6846;&#x4E2D;&#x62FF;&#x51FA;&#x6765;&#x653E;&#x5230;swap&#x9875;&#x5BB9;&#x5668;&#x4E2D;&#xFF0C;&#x7B49;&#x5230;&#x9700;&#x8981;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x518D;&#x53D6;&#x56DE;&#x6765;&#x5373;&#x53EF;&#x3002;</p>
<p>&#x5230;&#x8FD9;&#x91CC;&#xFF0C;&#x6211;&#x4EEC;&#x7684;&#x61D2;&#x52A0;&#x8F7D;&#x673A;&#x5236;&#x5C31;&#x5B8C;&#x6210;&#x4E86;&#xFF0C;&#x8FD8;&#x987A;&#x4FBF;&#x5F15;&#x5165;&#x4E86;&#x9875;&#x9762;&#x7684;&#x6362;&#x5165;&#x6362;&#x51FA;&#x3002;</p>
<p>&#x8FD9;&#x4E00;&#x6574;&#x5957;&#x67B6;&#x6784;&#x7684;&#x5B9E;&#x73B0;&#x4F9D;&#x9760;&#x7684;&#x5C31;&#x662F;&#x7F3A;&#x9875;&#x4E2D;&#x65AD;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x4E4B;&#x524D;&#x8BF4;&#x6211;&#x4EEC;&#x662F;&#x56F4;&#x7ED5;&#x7740;&#x7F3A;&#x9875;&#x4E2D;&#x65AD;&#x505A;&#x7684;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#xFF0C;&#x6240;&#x6709;&#x7684;&#x5206;&#x914D;&#x4E0E;&#x52A0;&#x8F7D;&#x90FD;&#x662F;&#x5728;&#x7F3A;&#x9875;&#x4E2D;&#x65AD;&#x4E2D;&#x771F;&#x6B63;&#x5B8C;&#x6210;&#x7684;&#x3002;</p>
<p>&#x7F3A;&#x9875;&#x4E2D;&#x65AD;&#x5177;&#x4F53;&#x6D41;&#x7A0B;&#x662F;&#x8FD9;&#x6837;&#x7684;&#x3002;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/MiniOS%E7%9A%84%E7%BC%BA%E9%A1%B5%E4%B8%AD%E6%96%AD%E5%A4%84%E7%90%86/images/%E6%B5%81%E7%A8%8B%E5%9B%BE.png" alt="&#x6D41;&#x7A0B;&#x56FE;" loading="lazy"></p>
<p>&#x6211;&#x4EEC;&#x5148;&#x6765;&#x770B;&#x770B;&#x6570;&#x636E;&#x7ED3;&#x6784;&#x7684;&#x90E8;&#x5206;&#x3002;</p>
<p><img src="https://blog-photo.oss-accelerate.aliyuncs.com/MiniOS%E7%9A%84%E7%BC%BA%E9%A1%B5%E4%B8%AD%E6%96%AD%E5%A4%84%E7%90%86/images/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.png" alt="&#x6570;&#x636E;&#x7ED3;&#x6784;" loading="lazy"></p>
<p>&#x8FD9;&#x91CC;&#x4E3B;&#x8981;&#x7684;&#x601D;&#x8DEF;&#x662F;&#x5728;&#x8FDB;&#x7A0B;&#x7684;PCB&#x4E2D;&#x7EF4;&#x62A4;&#x5F53;&#x524D;&#x8FDB;&#x7A0B;&#x7684;&#x6240;&#x6709;&#x5B58;&#x5728;&#x4E8E;&#x7EBF;&#x6027;&#x533A;&#x4E2D;&#x7684;&#x9875;&#x7684;&#x4FE1;&#x606F;&#xFF0C;&#x6BD4;&#x5982;&#x9875;&#x7684;&#x7EBF;&#x6027;&#x5730;&#x5740;&#x3001;&#x9875;&#x7684;&#x7C7B;&#x578B;&#x3001;&#x5728;&#x4EA4;&#x6362;&#x5206;&#x533A;&#x4E2D;&#x7684;&#x7D22;&#x5F15;&#x3001;&#x5728;&#x6587;&#x4EF6;&#x4E2D;&#x7684;&#x4F4D;&#x7F6E;&#x3002;&#x8FD9;&#x662F;&#x6211;&#x4EEC;&#x7684;&#x9875;&#x63CF;&#x8FF0;&#x7B26;&#x7ED3;&#x6784;&#x4F53;&#xFF0C;&#x8FD9;&#x91CC;&#x7684;flag&#x5B57;&#x6BB5;&#x8868;&#x660E;&#x4E86;&#x8FD9;&#x4E2A;&#x9875;&#x5F53;&#x524D;&#x7684;&#x7C7B;&#x578B;&#xFF0C;&#x6BCF;&#x79CD;&#x7C7B;&#x578B;&#x8868;&#x660E;&#x4E0B;&#x9762;&#x67D0;&#x4E2A;&#x5B57;&#x6BB5;&#x6709;&#x6548;&#x3002;&#x5728;&#x53D1;&#x751F;&#x7F3A;&#x9875;&#x4E2D;&#x65AD;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x67E5;&#x8BE2;&#x8FD9;&#x5F20;&#x8868;&#x3002;&#x540C;&#x65F6;&#xFF0C;&#x4E3A;&#x4E86;&#x6743;&#x9650;&#x63A7;&#x5236;&#x4EE5;&#x53CA;&#x5FEB;&#x901F;&#x5B9A;&#x4F4D;&#x67D0;&#x4E00;&#x9875;&#xFF0C;&#x6211;&#x4EEC;&#x628A;&#x8FD9;&#x4E2A;&#x94FE;&#x8868;&#x6839;&#x636E;&#x7EBF;&#x6027;&#x533A;&#x62C6;&#x6210;&#x591A;&#x4E2A;&#x94FE;&#x8868;&#xFF0C;&#x4E32;&#x8054;&#x8D77;&#x6BCF;&#x4E2A;&#x7EBF;&#x6027;&#x533A;&#x4E2D;&#x7684;&#x9875;&#x63CF;&#x8FF0;&#x7B26;&#x3002;</p>
<p>&#x53E6;&#x5916;&#xFF0C;swap&#x7684;&#x7BA1;&#x7406;&#x4F7F;&#x7528;&#x4E86;struct swapfile &#x8FD9;&#x4E2A;&#x7ED3;&#x6784;&#x4F53;&#xFF0C;&#x5176;&#x4E2D;&#x7EF4;&#x62A4;&#x4E86;&#x4E00;&#x4E2A;&#x4F4D;&#x56FE;&#xFF0C;&#x8868;&#x660E;swap&#x5206;&#x533A;&#x6216;&#x6587;&#x4EF6;&#x4E2D;&#x7684;&#x67D0;&#x4E00;&#x4E2A;&#x9875;&#x7A7A;&#x95F4;&#x662F;&#x53EF;&#x7528;&#x7684;&#x3002;</p>
<p>&#x6709;&#x4E86;&#x8FD9;&#x4E9B;&#x6570;&#x636E;&#x7ED3;&#x6784;&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x5B8C;&#x6210;&#x8FD9;&#x4E2A;&#x7F3A;&#x9875;&#x4E2D;&#x65AD;&#x5904;&#x7406;&#x51FD;&#x6570;&#x4E86;&#x3002;</p>
<p>&#x53EF;&#x4EE5;&#x770B;&#x51FA;&#xFF0C;&#x6BCF;&#x4E2A;&#x9875;&#x5BB9;&#x5668;&#x90FD;&#x6709;&#x7740;&#x81EA;&#x5DF1;&#x7684;&#x64CD;&#x4F5C;&#x51FD;&#x6570;&#xFF0C;&#x4F7F;&#x7528;&#x8005;&#x53EA;&#x9700;&#x8981;&#x4F7F;&#x7528;&#x5B83;&#x4EEC;&#x7684;id&#x4E0E;&#x4ED6;&#x4EEC;&#x8FDB;&#x884C;&#x4EA4;&#x6D41;&#x5373;&#x53EF;&#x3002;</p>
<p>&#x4E3A;&#x4E86;&#x914D;&#x5408;&#x7F3A;&#x9875;&#x4E2D;&#x65AD;&#x5904;&#x7406;&#x51FD;&#x6570;&#xFF0C;&#x6211;&#x4EEC;&#x5BF9;&#x7CFB;&#x7EDF;&#x7684;exec&#x8FDB;&#x884C;&#x4E86;&#x6539;&#x9020;&#xFF0C;&#x601D;&#x8DEF;&#x4E5F;&#x5F88;&#x7B80;&#x5355;&#xFF0C;&#x5C31;&#x662F;&#x5728;&#x8BFB;&#x53D6;elf&#x5934;&#x4E4B;&#x540E;&#xFF0C;&#x628A;&#x5404;&#x6BB5;&#x7684;&#x9875;&#x9762;&#x8BBE;&#x7F6E;&#x4E3A;&#x4E0D;&#x5B58;&#x5728;&#xFF0C;&#x5E76;&#x5728;&#x9875;&#x63CF;&#x8FF0;&#x7B26;&#x8868;&#x4E2D;&#x6DFB;&#x52A0;&#x76F8;&#x5E94;&#x7684;&#x9879;&#xFF0C;&#x7B49;&#x5230;&#x8FD9;&#x4E2A;&#x8FDB;&#x7A0B;&#x88AB;&#x8C03;&#x5EA6;&#x5230;&#xFF0C;&#x5C31;&#x4F1A;&#x89E6;&#x53D1;&#x7F3A;&#x9875;&#x4E2D;&#x65AD;&#xFF0C;&#x4E0A;&#x9762;&#x7684;&#x5904;&#x7406;&#x51FD;&#x6570;&#x80FD;&#x591F;&#x83B7;&#x53D6;&#x5230;&#x8DB3;&#x591F;&#x7684;&#x4FE1;&#x606F;&#x4EE5;&#x89E3;&#x51B3;&#x8FD9;&#x4E2A;&#x7F3A;&#x9875;&#x95EE;&#x9898;&#x3002;</p>
<p>Swap&#x7684;&#x5B9E;&#x73B0;&#x4E5F;&#x5F88;&#x76F8;&#x4F3C;&#x3002;&#x56E0;&#x4E3A;&#x6211;&#x4EEC;&#x6CA1;&#x6709;&#x65F6;&#x95F4;&#x53BB;&#x505A;&#x4E00;&#x4E2A;&#x6362;&#x5165;&#x6362;&#x51FA;&#x7B97;&#x6CD5;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x4EEC;&#x53EA;&#x4FDD;&#x7559;&#x4E86;&#x63A5;&#x53E3;&#x51FD;&#x6570;swapout&#x548C;swapin&#xFF0C;&#x901A;&#x8FC7;&#x8FD9;&#x4E24;&#x4E2A;&#x51FD;&#x6570;&#x5C31;&#x53EF;&#x4EE5;&#x5BF9;&#x8FDB;&#x7A0B;&#x7684;&#x9875;&#x9762;&#x8FDB;&#x884C;&#x6362;&#x5165;&#x6362;&#x51FA;&#xFF0C;&#x81F3;&#x4E8E;&#x5176;&#x4E2D;&#x7684;&#x5B9E;&#x73B0;&#x662F;&#x5BF9;&#x4E0A;&#x5C42;&#x9690;&#x85CF;&#x7684;&#xFF0C;&#x4E4B;&#x540E;&#x5982;&#x679C;&#x8981;&#x5199;&#x6362;&#x5165;&#x6362;&#x51FA;&#x7B97;&#x6CD5;&#x7684;&#x8BDD;&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x5229;&#x7528;&#x8FD9;&#x4E24;&#x4E2A;&#x51FD;&#x6570;&#x3002;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[docker内外sshd共享22端口]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#x6700;&#x8FD1;&#x60F3;&#x5728;&#x670D;&#x52A1;&#x5668;&#x4E0A;&#x642D;&#x5EFA;&#x4E00;&#x4E2A;git&#x670D;&#x52A1;&#xFF0C;&#x539F;&#x56E0;&#x662F;&#x5E73;&#x65F6;&#x5199;&#x7684;&#x4E00;&#x4E9B;&#x5C0F;&#x9879;&#x76EE;&#x5F80;github&#x4E0A;&#x63A8;&#x9001;&#x4E0D;&#x592A;&#x5408;&#x9002;&#xFF0C;&#x4F46;&#x662F;&#x53C8;&#x60F3;&#x5728;&#x5404;&#x8BBE;&#x5907;&#x4E4B;&#x95F4;&#x540C;&#x6B65;</p>]]></description><link>https://blog.ykai.cc/docker-share-ssh-port/</link><guid isPermaLink="false">6331df653945280001365b9f</guid><category><![CDATA[ssh]]></category><category><![CDATA[docker]]></category><dc:creator><![CDATA[Yingkai Dang]]></dc:creator><pubDate>Fri, 29 Nov 2019 05:23:34 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x6700;&#x8FD1;&#x60F3;&#x5728;&#x670D;&#x52A1;&#x5668;&#x4E0A;&#x642D;&#x5EFA;&#x4E00;&#x4E2A;git&#x670D;&#x52A1;&#xFF0C;&#x539F;&#x56E0;&#x662F;&#x5E73;&#x65F6;&#x5199;&#x7684;&#x4E00;&#x4E9B;&#x5C0F;&#x9879;&#x76EE;&#x5F80;github&#x4E0A;&#x63A8;&#x9001;&#x4E0D;&#x592A;&#x5408;&#x9002;&#xFF0C;&#x4F46;&#x662F;&#x53C8;&#x60F3;&#x5728;&#x5404;&#x8BBE;&#x5907;&#x4E4B;&#x95F4;&#x540C;&#x6B65;&#xFF0C;&#x7F51;&#x76D8;&#x4EC0;&#x4E48;&#x7684;&#x8FD8;&#x662F;&#x592A;&#x9EBB;&#x70E6;&#x4E86;&#xFF0C;&#x642D;&#x4E2A;git&#x5C31;&#x5F88;&#x65B9;&#x4FBF;&#x4E86;&#x3002;</p>
<p>&#x5176;&#x5B9E;&#x5F88;&#x65E9;&#x4E4B;&#x524D;&#x90FD;&#x6709;&#x8FD9;&#x4E2A;&#x60F3;&#x6CD5;&#x4E86;&#xFF0C;&#x4F46;&#x662F;&#x4E00;&#x76F4;&#x6CA1;&#x6709;&#x52A8;&#x624B;&#xFF0C;&#x56E0;&#x4E3A;&#x5F53;&#x65F6;&#x77E5;&#x9053;&#x7684;&#x5F00;&#x6E90;&#x7684;git&#x670D;&#x52A1;&#x9879;&#x76EE;&#x53EA;&#x6709;gitlab&#xFF0C;&#x800C;gitlab&#x5BF9;&#x6211;&#x6765;&#x8BF4;&#x592A;&#x5927;&#x4E86;&#xFF0C;&#x670D;&#x52A1;&#x5668;&#x73B0;&#x5728;&#x4E5F;&#x63A5;&#x8FD1;&#x9971;&#x548C;&#x4E86;&#xFF0C;&#x8DD1;&#x4E2A;gitlab&#x6211;&#x7684;&#x6742;&#x4E03;&#x6742;&#x516B;&#x7684;&#x670D;&#x52A1;&#x5C31;&#x5F97;&#x5173;&#x6389;&#x4E86;&#x3002;&#x76F4;&#x5230;&#x524D;&#x51E0;&#x5929;&#xFF0C;&#x6709;&#x4E2A;&#x5B66;&#x5F1F;&#x95EE;&#x6211;&#x5173;&#x4E8E;&#x628A;gitea&#x5F80;&#x5916;&#x7F51;&#x8F6C;&#x53D1;&#x7684;&#x95EE;&#x9898;&#xFF0C;&#x6211;&#x624D;&#x53D1;&#x73B0;gitea&#x8FD9;&#x4E2A;&#x4E1C;&#x897F;&#x3002;&#x8BD5;&#x4E86;&#x4E00;&#x4E0B;&#x8FD8;&#x633A;&#x597D;&#x7528;&#xFF0C;&#x4ECA;&#x5929;&#x665A;&#x4E0A;&#x5C31;&#x641E;&#x4E86;&#x4E00;&#x4E0B;&#x3002;</p>
<h2 id>&#x95EE;&#x9898;</h2>
<p>&#x642D;&#x5EFA;&#x6CA1;&#x5565;&#x597D;&#x8BF4;&#x7684;&#xFF0C;docker-compose&#x5C31;&#x884C;&#x4E86;&#xFF0C;&#x8FD9;&#x4E5F;&#x662F;&#x5B98;&#x65B9;&#x63A8;&#x8350;&#x7684;&#x642D;&#x5EFA;&#x65B9;&#x6CD5;&#x3002;&#xFF08;&#x8BF4;&#x5B9E;&#x8BDD;&#xFF0C;&#x5BB9;&#x5668;&#x6280;&#x672F;&#x80FD;&#x8BA9;&#x4EBA;&#x611F;&#x5230;&#x8FD0;&#x7EF4;&#x4E5F;&#x4E0D;&#x662F;&#x90A3;&#x4E48;&#x67AF;&#x71E5;&#x7684;&#x4E8B;&#x60C5;&#xFF0C;&#x7528;&#x8D77;&#x6765;&#x6709;&#x4E00;&#x79CD;&#x8BF4;&#x4E0D;&#x51FA;&#x7684;&#x8212;&#x670D;&#xFF09;&#x3002;<br>
docker&#x8DD1;&#x8D77;&#x6765;&#x4E4B;&#x540E;&#xFF0C;&#x6709;&#x4E2A;&#x4EE4;&#x6211;&#x5F88;&#x96BE;&#x53D7;&#x7684;&#x5730;&#x65B9;&#xFF1A;git&#x81EA;&#x8EAB;&#x6709;&#x5229;&#x7528;ssh&#x514B;&#x9686;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x6240;&#x4EE5;&#x50CF;gitea&#x3001;gitlab&#x3001;github&#x4E4B;&#x7C7B;&#x7684;&#x89E3;&#x51B3;&#x65B9;&#x6848;&#x4E5F;&#x90FD;&#x63D0;&#x4F9B;&#x4E86;ssh&#x514B;&#x9686;&#x7684;&#x529F;&#x80FD;&#xFF0C;gitea&#x5BB9;&#x5668;&#x91CC;&#x4E5F;&#x81EA;&#x5DF1;&#x8DD1;&#x4E86;&#x4E00;&#x4E2A;sshd&#xFF0C;&#x95EE;&#x9898;&#x5728;&#x4E8E;&#xFF0C;<strong>&#x5BBF;&#x4E3B;&#x673A;&#x6709;&#x81EA;&#x5DF1;&#x7684;sshd&#xFF0C;&#x6240;&#x4EE5;&#x8FD9;&#x4E2A;sshd&#x4E0D;&#x80FD;&#x76D1;&#x542C;&#x5728;&#x5BBF;&#x4E3B;&#x673A;&#x7684;22&#x7AEF;&#x53E3;&#x4E0A;&#xFF0C;&#x5728;&#x5916;&#x9762;&#x514B;&#x9686;&#x7684;&#x65F6;&#x5019;&#x5C31;&#x5F97;&#x7528;&#x7C7B;&#x4F3C;<code>ssh://git@git.ykai.top:5001/xxx/yyy.git</code>&#x8FD9;&#x6837;&#x7684;url</strong>&#xFF0C;&#x867D;&#x7136;&#x65E0;&#x4F24;&#x5927;&#x96C5;&#xFF0C;&#x800C;&#x4E14;gitea&#x4E5F;&#x4F1A;&#x5E2E;&#x4F60;&#x81EA;&#x52A8;&#x751F;&#x6210;&#xFF0C;&#x4F46;&#x8FD8;&#x662F;&#x611F;&#x5230;&#x4E0D;&#x8212;&#x670D;&#x3002;</p>
<p>&#x6240;&#x4EE5;&#x6211;&#x5C31;&#x60F3;&#x7740;&#xFF0C;&#x80FD;&#x4E0D;&#x80FD;&#x6709;&#x4E2A;&#x529E;&#x6CD5;&#xFF0C;&#x8BA9;&#x5BB9;&#x5668;&#x5185;&#x5916;&#x7684;sshd&#x5171;&#x4EAB;22&#x7AEF;&#x53E3;&#x3002;&#x60F3;&#x4E86;&#x60F3;&#xFF0C;&#x611F;&#x89C9;&#x6700;&#x5BB9;&#x6613;&#x5B9E;&#x73B0;&#x7684;&#x65B9;&#x5F0F;&#x5C31;&#x662F;&#x628A;&#x8BA9;&#x5BBF;&#x4E3B;&#x673A;&#x7684;sshd&#x5C06;&#x4E00;&#x4E9B;&#x7279;&#x5B9A;&#x7684;ssh&#x767B;&#x5F55;&#x8BF7;&#x6C42;&#x8F6C;&#x53D1;&#x7ED9;&#x5BB9;&#x5668;&#x91CC;&#x9762;&#xFF0C;&#x8FD9;&#x6837;&#x5BBF;&#x4E3B;&#x673A;&#x5C31;&#x900F;&#x660E;&#x4E86;&#x3002;</p>
<p>&#x9996;&#x5148;&#x6211;&#x6CE8;&#x610F;&#x5230;&#xFF0C;&#x5728;gitea&#x7684;&#x6587;&#x6863;&#x4E2D;&#xFF0C;&#x6709;&#x4E00;&#x90E8;&#x5206;&#x5C31;&#x662F;&#x4ECB;&#x7ECD;&#x8F6C;&#x53D1;ssh&#x8BF7;&#x6C42;&#x7684;&#xFF0C;<a href="https://docs.gitea.io/en-us/install-with-docker/#ssh-container-passthrough">SSH Container Passthrough</a>&#xFF0C;&#x4F46;&#x662F;&#x6211;&#x4E00;&#x65F6;&#x641E;&#x4E0D;&#x61C2;&#x4ED6;&#x662F;&#x4EC0;&#x4E48;&#x539F;&#x7406;&#xFF0C;&#x4E5F;&#x5C31;&#x6CA1;&#x6709;&#x52A8;&#x624B;&#x3002;</p>
<p>&#x7136;&#x540E;&#x6211;&#x5C31;&#x53BB;&#x7F51;&#x4E0A;&#x641C;&#x7D22;<code>ssh forwarding</code>&#x3001;<code>ssh forwarding to another host</code>&#x4E4B;&#x7C7B;&#x7684;&#xFF0C;&#x4E0D;&#x5E78;&#x7684;&#x662F;&#xFF0C;&#x641C;&#x51FA;&#x6765;&#x90FD;&#x662F;&#x7528;ssh&#x505A;&#x7AEF;&#x53E3;&#x8F6C;&#x53D1;&#x7684;&#x3002;&#x5C31;&#x5728;&#x6211;&#x5FEB;&#x8981;&#x4E0D;&#x77E5;&#x9053;&#x600E;&#x4E48;&#x7EE7;&#x7EED;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x6211;&#x641C;&#x4E86;&#x4E2A;<code>docker share port 22 with host</code>&#xFF0C;&#x51FA;&#x6765;&#x4E86;&#x4E00;&#x7BC7;<a href="http://www.ateijelo.com/blog/2016/07/09/share-port-22-between-docker-gogs-ssh-and-local-system">&#x56FD;&#x5916;&#x8001;&#x5144;&#x5199;&#x7684;&#x6587;&#x7AE0;</a>&#x3002;&#x8FD9;&#x7BC7;&#x6587;&#x7AE0;&#x4ECB;&#x7ECD;&#x5730;&#x7A0D;&#x5FAE;&#x8BE6;&#x7EC6;&#x4E00;&#x4E9B;&#xFF0C;&#x6211;&#x7406;&#x89E3;&#x5927;&#x6982;&#x610F;&#x601D;&#x4E4B;&#x540E;&#xFF0C;&#x4E00;&#x9635;&#x6363;&#x9F13;&#xFF0C;&#x4E5F;&#x7B97;&#x662F;&#x5F04;&#x51FA;&#x6765;&#x4E86;&#x3002;</p>
<h2 id>&#x524D;&#x7F6E;&#x77E5;&#x8BC6;</h2>
<h3 id="sshauthorized_keys">ssh&#x7684;authorized_keys&#x6587;&#x4EF6;</h3>
<p>ssh&#x9A8C;&#x8BC1;&#x8FC7;&#x7A0B;&#x4E2D;&#xFF0C;&#x6709;&#x4E2A;<code>~/.ssh/authorized_keys</code>&#x6587;&#x4EF6;&#x662F;&#x7528;&#x6765;&#x4FDD;&#x5B58;&#x5DF2;&#x4FE1;&#x4EFB;&#x4E3B;&#x673A;&#x7684;&#x516C;&#x94A5;&#x7684;&#xFF0C;&#x8981;&#x8FDE;&#x63A5;&#x7684;&#x4E3B;&#x673A;&#x901A;&#x8FC7;&#x4E86;&#x9A8C;&#x8BC1;&#x5C31;&#x80FD;&#x767B;&#x5F55;&#x4E0A;&#x3002;&#x8FD9;&#x4E2A;&#x6587;&#x4EF6;&#x7684;&#x4E00;&#x822C;&#x683C;&#x5F0F;&#x662F;&#x8FD9;&#x6837;&#x7684;&#xFF1A;</p>
<pre><code>ssh-rsa &#x5BA2;&#x6237;&#x673A;&#x7684;&#x516C;&#x94A5; xxx@xxx
</code></pre>
<p>&#x5B9E;&#x9645;&#x4E0A;&#xFF0C;&#x8FD9;&#x4E2A;&#x6587;&#x4EF6;&#x8FD8;&#x53EF;&#x4EE5;&#x5728;&#x524D;&#x9762;&#x52A0;&#x4E0A;&#x9009;&#x9879;&#xFF0C;&#x4EE5;&#x4F7F;&#x5F97;&#x5728;&#x767B;&#x5F55;&#x8FC7;&#x7A0B;&#x4E2D;&#x6267;&#x884C;&#x67D0;&#x4E2A;&#x547D;&#x4EE4;&#xFF0C;&#x6BD4;&#x5982;&#xFF1A;</p>
<pre><code>command=&quot;ls&quot; ssh-rsa &#x5BA2;&#x6237;&#x673A;&#x7684;&#x516C;&#x94A5; xxx@xxx
</code></pre>
<p>&#x8FD9;&#x6837;&#x5B50;&#x7684;&#x8BDD;&#xFF0C;&#x5728;&#x8FD9;&#x4E2A;&#x5BA2;&#x6237;&#x673A;&#x767B;&#x5F55;&#x7684;&#x65F6;&#x5019;&#x5C31;&#x4F1A;&#x6267;&#x884C;ls&#x547D;&#x4EE4;&#x4E86;&#x3002;&#x540C;&#x65F6;&#xFF0C;ssh&#x4F1A;&#x628A;&#x5BA2;&#x6237;&#x7AEF;&#x539F;&#x672C;&#x60F3;&#x8981;&#x6267;&#x884C;&#x7684;&#x547D;&#x4EE4;&#x653E;&#x5728;<code>SSH_ORIGINAL_COMMAND</code>&#x73AF;&#x5883;&#x53D8;&#x91CF;&#x91CC;&#x9762;&#xFF0C;&#x5C06;&#x4E0A;&#x9762;&#x7684;ls&#x6539;&#x4E3A;env&#x547D;&#x4EE4;&#x5C31;&#x80FD;&#x770B;&#x5230;&#x4E86;&#x3002;</p>
<p>&#x60F3;&#x60F3;&#x8FD9;&#x610F;&#x5473;&#x8FD9;&#x4EC0;&#x4E48;&#x3002;&#x8FD9;&#x4E2A;&#x529F;&#x80FD;&#x7ED9;&#x6211;&#x4EEC;&#x63D0;&#x4F9B;&#x4E86;&#x4E00;&#x79CD;&#x80FD;&#x529B;&#xFF0C;&#x8BA9;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x5728;sshd&#x6267;&#x884C;&#x5BA2;&#x6237;&#x7AEF;&#x547D;&#x4EE4;&#x4E4B;&#x524D;&#x622A;&#x83B7;&#x8FD9;&#x6761;&#x547D;&#x4EE4;&#xFF0C;&#x76F8;&#x5F53;&#x4E8E;&#x4E00;&#x4E2A;<code>beforeExecute</code>&#x7684;&#x94A9;&#x5B50;&#x3002;</p>
<p>&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x7528;&#x8FD9;&#x4E2A;&#x529F;&#x80FD;&#x6765;&#x5B9E;&#x73B0;&#x4E00;&#x4E2A;&#x7B80;&#x5355;&#x7684;ssh&#x767B;&#x5F55;&#x8F6C;&#x53D1;&#x529F;&#x80FD;&#x3002;</p>
<p>&#x5148;&#x5728;&#x670D;&#x52A1;&#x5668;&#x4E0A;&#x7528;docker&#x8DD1;&#x4E00;&#x4E2A;sshd&#xFF0C;&#x76D1;&#x542C;&#x5728;5000&#x7AEF;&#x53E3;&#x4E0A;&#xFF0C;&#x53EF;&#x4EE5;&#x5148;&#x4E0D;&#x8BBE;&#x7F6E;&#x5BC6;&#x94A5;&#x767B;&#x5F55;&#xFF0C;&#x7B80;&#x5355;&#x7684;&#x5BC6;&#x7801;&#x767B;&#x5F55;&#x5C31;&#x53EF;&#x4EE5;&#x4E86;&#xFF0C;&#x7528;&#x6237;&#x540D;&#x4E3A;<code>inner</code>&#x3002;&#x7136;&#x540E;&#x5728;&#x5BBF;&#x4E3B;&#x673A;&#x4E0A;&#x9762;&#x65B0;&#x5EFA;&#x4E00;&#x4E2A;&#x7528;&#x6237;&#xFF0C;&#x6BD4;&#x5982;&#x53EB;<code>outer</code>&#xFF0C;&#x5728;<code>outer</code>&#x7684;&#x5BB6;&#x76EE;&#x5F55;&#x4E0B;&#x5EFA;&#x7ACB;<code>.ssh/authorized_keys</code>&#x6587;&#x4EF6;&#xFF0C;&#x5411;&#x6587;&#x4EF6;&#x4E2D;&#x5199;&#x4E0A;&#x4F60;&#x81EA;&#x5DF1;&#x7535;&#x8111;&#x7684;&#x516C;&#x94A5;&#xFF0C;&#x7136;&#x540E;&#x5728;&#x516C;&#x94A5;&#x524D;&#x9762;&#x52A0;&#x4E0A;&#x767B;&#x9646;&#x5230;docker&#x5185;&#x7684;&#x547D;&#x4EE4;&#x3002;&#x6700;&#x7EC8;&#x7684;&#x6587;&#x4EF6;&#x5185;&#x5BB9;&#x5927;&#x6982;&#x662F;&#x8FD9;&#x6837;&#xFF1A;</p>
<pre><code>command=&quot;ssh -p 5000 inner@localhost&quot; ssh-rsa &#x4F60;&#x7684;&#x516C;&#x94A5; &#x4F60;&#x7684;&#x4E3B;&#x673A;&#x540D;
</code></pre>
<p>&#x8FD9;&#x65F6;&#x5019;&#x53EF;&#x4EE5;&#x5C1D;&#x8BD5;&#x5728;&#x4F60;&#x7684;&#x7535;&#x8111;&#x4E0A;&#x9762;&#x6267;&#x884C;<code>ssh outer@&#x670D;&#x52A1;&#x5668;ip</code>&#xFF0C;&#x4F1A;&#x53D1;&#x73B0;&#x63D0;&#x793A;&#x8F93;&#x5165;&#x5BC6;&#x7801;&#xFF0C;&#x8FD9;&#x4E2A;&#x5BC6;&#x7801;&#x5C31;&#x662F;&#x767B;&#x5F55;&#x8FDB;&#x5BB9;&#x5668;&#x5185;sshd&#x7684;&#x5BC6;&#x7801;&#x3002;&#x8F93;&#x5165;&#x6B63;&#x786E;&#x7684;&#x5BC6;&#x7801;&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x767B;&#x5F55;&#x5230;&#x5BB9;&#x5668;&#x5185;&#x90E8;&#x7684;sshd&#x4E86;&#x3002;</p>
<p>&#x81F3;&#x6B64;&#xFF0C;&#x5DF2;&#x7ECF;&#x5B9E;&#x73B0;&#x4E86;&#x4E00;&#x4E2A;&#x7B80;&#x6613;&#x7684;ssh&#x767B;&#x5F55;&#x8F6C;&#x53D1;&#x7684;&#x529F;&#x80FD;&#x4E86;&#x3002;&#x770B;&#x4E0A;&#x53BB;&#xFF0C;&#x5BBF;&#x4E3B;&#x673A;&#x548C;&#x5BB9;&#x5668;&#x5185;&#x5171;&#x4EAB;&#x4E86;&#x540C;&#x4E00;&#x4E2A;22&#x7AEF;&#x53E3;&#x3002;</p>
<p>&#x4F46;&#x8FD8;&#x6CA1;&#x5B8C;&#xFF0C;&#x60F3;&#x4E00;&#x60F3;&#xFF0C;&#x6211;&#x4EEC;&#x73B0;&#x5728;&#x7684;&#x601D;&#x8DEF;&#x662F;&#xFF0C;&#x672C;&#x5730;&#x673A;&#x5668;&#x8FDE;&#x63A5;&#x5BBF;&#x4E3B;&#x673A;&#xFF0C;&#x7136;&#x540E;&#x5BBF;&#x4E3B;&#x673A;&#x8FDE;&#x63A5;&#x5411;docker&#x5185;&#xFF0C;&#x8FD9;&#x4E2A;&#x8FC7;&#x7A0B;&#x4E2D;&#x662F;&#x6709;&#x4E24;&#x4E2A;&#x9A8C;&#x8BC1;&#x8FC7;&#x7A0B;&#x7684;&#xFF0C;&#x4F46;&#x6211;&#x4EEC;&#x6700;&#x7EC8;&#x60F3;&#x8981;&#x8FBE;&#x5230;&#x7684;&#x662F;&#x5BBF;&#x4E3B;&#x673A;&#x900F;&#x660E;&#x3002;&#x600E;&#x4E48;&#x505A;&#x5462;&#x3002;&#x5176;&#x5B9E;&#x4E5F;&#x5F88;&#x7B80;&#x5355;&#xFF0C;&#x6240;&#x8C13;&#x7684;&#x900F;&#x660E;&#x5C31;&#x662F;&#x53EA;&#x9700;&#x8981;&#x8FDB;&#x884C;&#x4E00;&#x6B21;&#x9A8C;&#x8BC1;&#xFF0C;&#x76F8;&#x5F53;&#x4E8E;&#x6211;&#x4EEC;&#x8981;&#x628A;&#x4E24;&#x6247;&#x95E8;&#x6539;&#x4E3A;&#x4E00;&#x6247;&#x95E8;&#xFF0C;&#x601D;&#x8DEF;&#x662F;&#x8FD9;&#x6837;&#x7684;&#xFF1A;&#x8BA9;&#x5BBF;&#x4E3B;&#x673A;&#x7684;<code>outer</code>&#x7528;&#x6237;&#x4F7F;&#x7528;&#x5BB9;&#x5668;&#x5185;<code>inner</code>&#x7684;<code>authorized_keys</code>&#x6587;&#x4EF6;&#xFF08;&#x4F7F;&#x5F97;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x7B2C;&#x4E8C;&#x6247;&#x95E8;&#x7684;&#x4E5F;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x7B2C;&#x4E00;&#x6247;&#x95E8;&#xFF09;&#xFF0C;&#x7136;&#x540E;&#x8BA9;<code>outer</code>&#x53EF;&#x4EE5;&#x5BC6;&#x94A5;&#x767B;&#x5F55;&#x8FDB;<code>inner</code>&#xFF08;&#x8BA9;&#x7B2C;&#x4E8C;&#x6247;&#x95E8;&#x655E;&#x5F00;&#xFF09;&#x3002;</p>
<p>&#x6240;&#x4EE5;&#x6211;&#x4EEC;&#x9996;&#x5148;&#x4F7F;&#x7528;<code>mount --bind /path/to/inner/.ssh /home/outer/.ssh</code>&#x8FBE;&#x6210;&#x7B2C;&#x4E00;&#x70B9;&#xFF0C;&#x7136;&#x540E;&#x4E3A;<code>outer</code>&#x4F7F;&#x7528;<code>ssh-keygen</code>&#xFF0C;&#x5E76;&#x5C06;&#x516C;&#x94A5;&#x52A0;&#x5165;&#x5230;<code>authorized_keys</code>&#x4E2D;&#xFF0C;&#x8FBE;&#x6210;&#x7B2C;&#x4E8C;&#x70B9;&#x3002;</p>
<p>&#x73B0;&#x5728;&#xFF0C;&#x5982;&#x679C;&#x5BB9;&#x5668;&#x5185;&#x6709;&#x4E2A;&#x8FDB;&#x7A0B;&#x5411;<code>inner</code>&#x7684;<code>authorized_keys</code>&#x6587;&#x4EF6;&#x4E2D;&#x52A0;&#x5165;&#x4E86;&#x4E00;&#x9879;&#xFF08;&#x9700;&#x8981;&#x5E26;&#x6709;command&#xFF09;&#xFF0C;&#x4ECE;&#x5BB9;&#x5668;&#x5916;&#x8BBF;&#x95EE;<code>outer</code>&#x5C31;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x767B;&#x5F55;&#x8FDB;<code>inner</code>&#x4E86;&#x3002;</p>
<p>&#x9700;&#x8981;&#x6CE8;&#x610F;&#x7684;&#x51E0;&#x70B9;&#xFF1A;</p>
<ol>
<li>docker&#x5BB9;&#x5668;&#x5185;&#x5916;&#x5171;&#x4EAB;uid&#x548C;gid&#xFF0C;sshd&#x4F1A;&#x68C0;&#x67E5;&#x6587;&#x4EF6;&#x7684;uid&#xFF0C;&#x6240;&#x4EE5;&#x9700;&#x8981;&#x4FDD;&#x8BC1;<code>outer</code>&#x548C;<code>inner</code>&#x7684;uid&#x662F;&#x4E00;&#x6837;&#x7684;&#xFF0C;<a href="https://hub.docker.com/r/panubo/sshd">&#x6211;&#x4F7F;&#x7528;&#x7684;&#x955C;&#x50CF;</a>&#x662F;&#x6709;uid&#x8BBE;&#x7F6E;&#x7684;&#x529F;&#x80FD;&#x7684;&#xFF1B;</li>
<li><code>.ssh</code>&#x76EE;&#x5F55;&#x548C;<code>.ssh/authorized_keys</code>&#x7684;&#x6743;&#x9650;&#x8981;&#x6CE8;&#x610F;&#xFF0C;&#x90FD;&#x4E0D;&#x5141;&#x8BB8;&#x5176;&#x4ED6;&#x7528;&#x6237;&#xFF08;&#x5305;&#x62EC;&#x7EC4;&#x5185;&#x7528;&#x6237;&#xFF09;&#x6709;&#x53EF;&#x5199;&#x6743;&#x9650;&#xFF0C;&#x6240;&#x4EE5;&#x4E00;&#x822C;&#x6743;&#x9650;&#x7ED9;744&#x548C;644&#x5C31;&#x884C;&#xFF08;&#x6211;&#x7ED9;&#x7684;700&#x548C;600&#xFF09;&#xFF1B;</li>
<li>&#x90A3;&#x4F4D;&#x8001;&#x5144;&#x7684;&#x6587;&#x7AE0;&#x4E2D;&#x4F7F;&#x7528;&#x7684;&#x8F6F;&#x94FE;&#x63A5;&#x5B9E;&#x73B0;&#x5171;&#x4EAB;<code>.ssh</code>&#x76EE;&#x5F55;&#xFF0C;&#x4F46;&#x6211;&#x8BD5;&#x4E86;&#x4E0B;&#xFF0C;&#x6CA1;&#x6210;&#x529F;&#xFF0C;&#x4E3B;&#x8981;&#x8FD8;&#x662F;&#x6743;&#x9650;&#x95EE;&#x9898;&#xFF0C;sshd&#x68C0;&#x6D4B;&#x6743;&#x9650;&#x7684;&#x673A;&#x5236;&#x8FD8;&#x4E0D;&#x662F;&#x5F88;&#x6E05;&#x695A;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x5C31;&#x4F7F;&#x7528;&#x4E86;&#x7B80;&#x5355;&#x6613;&#x884C;&#x7684;<code>mount --bind</code>&#x3002;</li>
</ol>
<h3 id="gitssh">git&#x901A;&#x8FC7;ssh&#x6765;&#x62C9;&#x53D6;&#x4ED3;&#x5E93;&#x7684;&#x539F;&#x7406;</h3>
<p>git&#x6709;&#x4E2A;<code>git-upload-pack</code>&#x547D;&#x4EE4;&#xFF0C;&#x8FD9;&#x4E2A;&#x547D;&#x4EE4;&#x53EF;&#x4EE5;&#x5C06;&#x4E00;&#x4E2A;&#x4ED3;&#x5E93;&#x7684;&#x6570;&#x636E;&#x53D1;&#x9001;&#x5230;stdout&#x4E2D;&#x3002;&#x5728;&#x4F7F;&#x7528;<code>git clone git@git.ykai.top:xxx/yyy.git</code>&#x7684;&#x65F6;&#x5019;&#xFF0C;git&#x5C31;&#x4F1A;&#x901A;&#x8FC7;ssh&#x5230;<code>git@git.ykai.top</code>&#x6765;&#x6267;&#x884C;<code>git-upload-pack xxx/yyy.git</code>&#xFF0C;&#x8FD9;&#x6837;&#x4ED3;&#x5E93;&#x7684;&#x6570;&#x636E;&#x5C31;&#x4F1A;&#x901A;&#x8FC7;ssh&#x53D1;&#x9001;&#x5230;&#x5BA2;&#x6237;&#x7AEF;&#x4E86;&#x3002;&#x5728;&#x8FD9;&#x4E2A;&#x8FC7;&#x7A0B;&#x4E2D;&#xFF0C;ssh&#x5145;&#x5F53;&#x4E86;&#x4E00;&#x4E2A;&#x5EFA;&#x7ACB;&#x8FDE;&#x63A5;&#x7684;&#x89D2;&#x8272;&#x3002;<code>git push</code>&#x5DEE;&#x4E0D;&#x591A;&#x4E5F;&#x662F;&#x540C;&#x6837;&#x7684;&#x539F;&#x7406;&#x3002;&#xFF08;&#x601D;&#x8DEF;&#x662F;&#x8FD9;&#x6837;&#xFF0C;&#x81F3;&#x4E8E;&#x5177;&#x4F53;&#x7684;&#x901A;&#x8BAF;&#x534F;&#x8BAE;&#x6682;&#x65F6;&#x4E0D;&#x7528;&#x4E86;&#x89E3;&#x3002;&#xFF09;</p>
<p>&#x5176;&#x5B9E;&#xFF0C;&#x6709;&#x4E86;&#x8FD9;&#x4E2A;&#x529F;&#x80FD;&#xFF0C;&#x6211;&#x4EEC;&#x5DF2;&#x7ECF;&#x53EF;&#x4EE5;&#x5B9E;&#x73B0;&#x4E00;&#x4E2A;&#x7B80;&#x6613;&#x7684;git&#x670D;&#x52A1;&#x4E86;&#x3002;</p>
<p>&#x5047;&#x8BBE;&#x6211;&#x7684;&#x670D;&#x52A1;&#x5668;&#x662F;<code>ykai.top</code>&#xFF0C;&#x7528;&#x6237;&#x540D;&#x662F;<code>kkk</code>&#xFF0C;&#x540C;&#x65F6;&#x7528;&#x6237;<code>kkk</code>&#x7684;&#x5BB6;&#x76EE;&#x5F55;&#x4E0B;&#x6709;&#x4E2A;&#x76EE;&#x5F55;&#x4E3A;<code>xxx/yyy.git</code>&#x7684;git&#x4ED3;&#x5E93;&#xFF0C;&#x90A3;&#x4E48;&#x6211;&#x5C31;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x4F7F;&#x7528;<code>git clone kkk@ykai.top:xxx/yyy.git</code>&#x6765;&#x514B;&#x9686;&#x8FD9;&#x4E2A;&#x4ED3;&#x5E93;&#x4E86;&#x3002;</p>
<p>&#x4F46;&#x8FD9;&#x4E48;&#x539F;&#x59CB;&#x7684;&#x4E00;&#x4E2A;&#x670D;&#x52A1;&#x80AF;&#x5B9A;&#x4E0D;&#x6EE1;&#x8DB3;&#x6211;&#x4EEC;&#x7684;&#x8981;&#x6C42;&#xFF0C;&#x6211;&#x4EEC;&#x8FD8;&#x9700;&#x8981;&#x4E00;&#x6574;&#x5957;&#x7684;&#x89E3;&#x51B3;&#x65B9;&#x6848;&#xFF0C;&#x597D;&#x5728;gitlab&#x3001;gitea&#x4E4B;&#x7C7B;&#x7684;&#x9879;&#x76EE;&#x5DF2;&#x7ECF;&#x505A;&#x597D;&#x4E86;&#xFF0C;&#x8FD8;&#x63D0;&#x4F9B;&#x7ED9;&#x4E86;&#x6211;&#x4EEC;&#x4E00;&#x4E2A;&#x6613;&#x7528;&#x7684;web&#x7AEF;&#x548C;&#x4E30;&#x5BCC;&#x7684;&#x529F;&#x80FD;&#x3002;</p>
<h2 id="gitea">gitea&#x7684;&#x5DE5;&#x4F5C;&#x65B9;&#x5F0F;</h2>
<p>&#x5176;&#x5B9E;git&#x4ECE;gitea&#x3001;gitlab&#x4E0A;&#x901A;&#x8FC7;ssh&#x514B;&#x9686;&#x4E00;&#x4E2A;&#x9879;&#x76EE;&#x65F6;&#x5019;&#xFF0C;&#x5927;&#x6982;&#x5C31;&#x662F;&#x5C06;&#x4E0A;&#x9762;&#x4E24;&#x4E2A;&#x529F;&#x80FD;&#x7ED3;&#x5408;&#x8D77;&#x6765;&#x3002;</p>
<p>&#x6211;&#x4EEC;&#x5148;&#x6765;&#x770B;&#x770B;gitea&#x5BB9;&#x5668;&#x5185;<code>/data/gitea/git/.ssh/authorized_keys</code>&#x91CC;&#x9762;&#x7684;&#x5185;&#x5BB9;&#xFF08;&#x8FD9;&#x4E2A;&#x6587;&#x4EF6;&#x662F;&#x5BB9;&#x5668;&#x5185;&#x7684;ssh&#x9A8C;&#x8BC1;&#x6587;&#x4EF6;&#xFF09;&#xFF1A;</p>
<pre><code># gitea public key
command=&quot;/app/gitea/gitea --config=&apos;/data/gitea/conf/app.ini&apos; serv key-1&quot;,no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa &#x7528;&#x6237;&#x7684;&#x516C;&#x94A5; tag
</code></pre>
<p>&#x7528;&#x6237;&#x6BCF;&#x5728;gitea&#x7684;web&#x7AEF;&#x589E;&#x52A0;&#x4E00;&#x4E2A;&#x516C;&#x94A5;&#xFF0C;&#x8FD9;&#x4E2A;&#x6587;&#x4EF6;&#x5C31;&#x4F1A;&#x589E;&#x52A0;&#x7C7B;&#x4F3C;&#x8FD9;&#x6837;&#x7684;&#x4E00;&#x9879;&#x3002;&#x8FD9;&#x6837;&#xFF0C;&#x67D0;&#x4E2A;&#x7528;&#x6237;&#x4F7F;&#x7528;ssh&#x767B;&#x9646;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5C31;&#x4F1A;&#x6267;&#x884C;<code>/app/gitea/gitea --config=&apos;/data/gitea/conf/app.ini&apos; serv key-1</code>&#xFF0C;&#x8FD9;&#x4E2A;&#x662F;gitea&#x7684;&#x4E00;&#x4E2A;&#x547D;&#x4EE4;&#xFF0C;&#x8FD9;&#x4E2A;&#x547D;&#x4EE4;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;<code>key-n</code>&#x6765;&#x5F97;&#x77E5;&#x662F;&#x54EA;&#x4E2A;&#x7528;&#x6237;&#x53D1;&#x8D77;&#x7684;&#x8BF7;&#x6C42;&#xFF0C;&#x540C;&#x65F6;&#xFF0C;&#x8FD8;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;<code>SSH_ORIGINAL_COMMAND</code>&#x73AF;&#x5883;&#x53D8;&#x91CF;&#x6765;&#x5F97;&#x77E5;&#x7528;&#x6237;&#x9700;&#x8981;&#x8FDB;&#x884C;&#x54EA;&#x4E9B;&#x64CD;&#x4F5C;&#xFF0C;&#x6BD4;&#x5982;<code>git-upload-pack</code>&#xFF0C;&#x7136;&#x540E;gitea&#x5C31;&#x53EF;&#x4EE5;&#x8FDB;&#x884C;&#x81EA;&#x5DF1;&#x7684;&#x903B;&#x8F91;&#x4E86;&#xFF0C;&#x6BD4;&#x5982;&#x5224;&#x65AD;&#x7528;&#x6237;&#x662F;&#x5426;&#x6709;&#x6743;&#x9650;&#x5BF9;&#x8BE5;&#x4ED3;&#x5E93;&#x8FDB;&#x884C;&#x64CD;&#x4F5C;&#x3001;&#x8BB0;&#x5F55;&#x7528;&#x6237;&#x62C9;&#x53D6;&#x8BB0;&#x5F55;&#x7B49;&#x7B49;&#x3002;</p>
<h2 id="gitea22">&#x8BA9;gitea&#x548C;&#x5BBF;&#x4E3B;&#x673A;&#x5171;&#x4EAB;22&#x7AEF;&#x53E3;</h2>
<p>&#x542C;&#x8D77;&#x6765;&#x8DDF;&#x4E0A;&#x9762;&#x8BF4;&#x7684;ssh&#x767B;&#x9646;&#x8F6C;&#x53D1;&#x5DEE;&#x4E0D;&#x591A;&#x3002;&#x542F;&#x52A8;gitea&#x7684;&#x5BB9;&#x5668;&#xFF0C;ssh&#x5F00;&#x5728;&#x5BBF;&#x4E3B;&#x673A;&#x7684;5001&#x7AEF;&#x53E3;&#xFF0C;&#x7136;&#x540E;&#x5728;&#x5BBF;&#x4E3B;&#x673A;&#x4E0A;&#x5EFA;&#x7ACB;&#x4E00;&#x4E2A;git&#x7528;&#x6237;&#xFF0C;&#x5982;&#x53D1;&#x70AE;&#x5236;&#xFF0C;&#x628A;&#x8BF7;&#x6C42;&#x8F6C;&#x53D1;&#x8FDB;&#x5BB9;&#x5668;&#x3002;</p>
<p>&#x64CD;&#x4F5C;&#x8FC7;&#x7A0B;&#x4E2D;&#x5C31;&#x4F1A;&#x53D1;&#x73B0;&#x6709;&#x95EE;&#x9898;&#x4E86;&#xFF0C;&#x73B0;&#x5728;<code>authorized_keys</code>&#x4E2D;&#x7684;command&#x4E0D;&#x662F;&#x6211;&#x4EEC;&#x80FD;&#x63A7;&#x5236;&#x7684;&#xFF0C;&#x662F;gitea&#x5199;&#x6B7B;&#x5230;&#x91CC;&#x9762;&#x7684;&#x3002;</p>
<p>&#x8FD9;&#x4E2A;&#x60C5;&#x51B5;&#x7684;&#x5904;&#x7406;&#x529E;&#x6CD5;&#x4E5F;&#x7B97;&#x662F;&#x4E2A;&#x5947;&#x6280;&#x6DEB;&#x5DE7;&#x3002;&#x56E0;&#x4E3A;&#x73B0;&#x5728;&#x5BB9;&#x5668;&#x5185;&#x5916;&#x5171;&#x4EAB;&#x9A8C;&#x8BC1;&#x6587;&#x4EF6;&#xFF0C;&#x6240;&#x4EE5;&#x4ECE;&#x5916;&#x9762;&#x767B;&#x5F55;&#x8FDB;&#x5BBF;&#x4E3B;&#x673A;&#x7684;&#x65F6;&#x5019;&#x6267;&#x884C;&#x7684;&#x4E5F;&#x662F;<code>/app/gitea/gitea --config=&apos;/data/gitea/conf/app.ini&apos; serv key-1</code>&#xFF0C;&#x90A3;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x5728;&#x5BBF;&#x4E3B;&#x673A;&#x4E0A;&#x4E5F;&#x5EFA;&#x7ACB;&#x4E00;&#x4E2A;<code>/app/gitea/gitea</code>&#x7684;&#x811A;&#x672C;&#xFF0C;&#x5728;&#x8FD9;&#x4E2A;&#x811A;&#x672C;&#x91CC;&#x9762;&#x5B8C;&#x6210;&#x6211;&#x4EEC;&#x9700;&#x8981;&#x7684;&#x64CD;&#x4F5C;&#x5C31;&#x597D;&#x4E86;&#x3002;</p>
<p>&#x5728;&#x5BBF;&#x4E3B;&#x673A;&#x4E0A;&#x65B0;&#x5EFA;&#x811A;&#x672C;<code>/app/gitea/gitea</code>&#xFF0C;&#x5185;&#x5BB9;&#x4E3A;&#xFF1A;</p>
<pre><code class="language-bash">#! /bin/sh

ssh -p 5001 git@127.0.0.1 \
    &quot;SSH_ORIGINAL_COMMAND=$(printf &quot;%q&quot; &quot;$SSH_ORIGINAL_COMMAND&quot;)&quot; &quot;$0&quot; &quot;$@&quot;
</code></pre>
<p>&#x52A0;&#x4E0A;&#x6267;&#x884C;&#x6743;&#x9650;&#xFF0C;&#x8FD9;&#x6837;&#x5C31;&#x53C8;&#x80FD;&#x591F;&#x628A;&#x767B;&#x5F55;&#x8F6C;&#x53D1;&#x5230;&#x5BB9;&#x5668;&#x5185;&#x90E8;&#x4E86;&#x3002;</p>
<p>&#x8FD9;&#x4E2A;&#x811A;&#x672C;&#x4E5F;&#x5F88;&#x7B80;&#x5355;&#xFF0C;&#x6CA1;&#x5565;&#x8BF4;&#x7684;&#xFF0C;&#x8981;&#x6CE8;&#x610F;&#x7684;&#x662F;&#x4E2D;&#x95F4;&#x7684;&#x90A3;&#x4E2A;printf&#xFF0C;&#x5176;&#x4E2D;&#x7684;%q&#x662F;&#x4E3A;&#x4E86;&#x8F6C;&#x4E49;&#x53D8;&#x91CF;&#x4E2D;&#x7684;&#x7279;&#x6B8A;&#x5B57;&#x7B26;&#xFF0C;&#x8FD9;&#x4E2A;&#x4E1C;&#x897F;&#x641E;&#x4E86;&#x6211;&#x597D;&#x957F;&#x65F6;&#x95F4;&#x3002;&#x8FD8;&#x6709;&#x540E;&#x9762;&#x7684;$0&#x548C;$@&#xFF0C;&#x662F;&#x4E3A;&#x4E86;&#x628A;&#x547D;&#x4EE4;&#x91CD;&#x65B0;&#x4F20;&#x9012;&#x7ED9;&#x5BB9;&#x5668;&#x5185;&#x7684;gitea&#x3002;</p>
<p>&#x597D;&#x4E86;&#xFF0C;&#x5927;&#x529F;&#x544A;&#x6210;&#xFF0C;&#x518D;&#x4E5F;&#x4E0D;&#x7528;&#x5FCD;&#x53D7;&#x5947;&#x602A;&#x7684;url&#x4E86;&#x3002;</p>
<hr>
<h2 id>&#x53C2;&#x8003;</h2>
<ul>
<li><a href="http://www.ateijelo.com/blog/2016/07/09/share-port-22-between-docker-gogs-ssh-and-local-system">Share port 22 between Gogs inside Docker &amp; the local system</a></li>
<li><a href="https://docs.gitea.io/en-us/install-with-docker/#ssh-container-passthrough">SSH Container Passthrough</a></li>
</ul>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[[翻译] 什么是Python的全局解释器锁？]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#x7B80;&#x800C;&#x8A00;&#x4E4B;&#xFF0C;Python&#x5168;&#x5C40;&#x89E3;&#x91CA;&#x5668;&#x9501;&#xFF0C;&#x6216;&#x8005;&#x8BF4;GIL&#xFF0C;&#x5176;&#x5B9E;&#x662F;&#x4E92;&#x65A5;&#x9501;&#xFF0C;&#x5B83;&#x4FDD;&#x8BC1;&#x53EA;&#x6709;&#x4E00;&#x4E2A;&#x7EBF;&#x7A0B;&#x62E5;&#x6709;Python&#x89E3;&#x91CA;&#x5668;&#x7684;&#x63A7;&#x5236;&#x6743;&#x3002;</p>
<p>&#x8FD9;&#x610F;&#x5473;&#x7740;&#xFF0C;</p>]]></description><link>https://blog.ykai.cc/fan-yi-shi-yao-shi/</link><guid isPermaLink="false">6331df653945280001365b9b</guid><category><![CDATA[翻译]]></category><category><![CDATA[Python]]></category><category><![CDATA[RealPython]]></category><dc:creator><![CDATA[Yingkai Dang]]></dc:creator><pubDate>Sun, 03 Nov 2019 17:27:39 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x7B80;&#x800C;&#x8A00;&#x4E4B;&#xFF0C;Python&#x5168;&#x5C40;&#x89E3;&#x91CA;&#x5668;&#x9501;&#xFF0C;&#x6216;&#x8005;&#x8BF4;GIL&#xFF0C;&#x5176;&#x5B9E;&#x662F;&#x4E92;&#x65A5;&#x9501;&#xFF0C;&#x5B83;&#x4FDD;&#x8BC1;&#x53EA;&#x6709;&#x4E00;&#x4E2A;&#x7EBF;&#x7A0B;&#x62E5;&#x6709;Python&#x89E3;&#x91CA;&#x5668;&#x7684;&#x63A7;&#x5236;&#x6743;&#x3002;</p>
<p>&#x8FD9;&#x610F;&#x5473;&#x7740;&#xFF0C;&#x5728;&#x4EFB;&#x4F55;&#x65F6;&#x95F4;&#x70B9;&#x4E0A;&#xFF0C;&#x53EA;&#x6709;&#x4E00;&#x4E2A;&#x7EBF;&#x7A0B;&#x53EF;&#x4EE5;&#x5904;&#x4E8E;&#x6267;&#x884C;&#x72B6;&#x6001;&#x3002;GIL&#x7684;&#x5F71;&#x54CD;&#x5BF9;&#x4E8E;&#x5355;&#x7EBF;&#x7A0B;&#x7A0B;&#x5E8F;&#x7684;&#x5F00;&#x53D1;&#x8005;&#x6765;&#x8BF4;&#x662F;&#x4E0D;&#x53EF;&#x89C1;&#x7684;&#xFF0C;&#x4F46;&#x662F;&#x5B83;&#x53EF;&#x80FD;&#x6210;&#x4E3A;CPU&#x5BC6;&#x96C6;&#x578B;&#x548C;&#x591A;&#x7EBF;&#x7A0B;&#x4EE3;&#x7801;&#x7684;&#x6027;&#x80FD;&#x74F6;&#x9888;&#x3002;</p>
<p>&#x7531;&#x4E8E;&#x5373;&#x4F7F;&#x662F;&#x5728;&#x62E5;&#x6709;&#x8D85;&#x8FC7;&#x591A;&#x4E2A;CPU&#x7684;&#x591A;&#x7EBF;&#x7A0B;&#x67B6;&#x6784;&#x4E0B;&#xFF0C;GIL&#x8FD8;&#x662F;&#x53EA;&#x5141;&#x8BB8;&#x4E00;&#x4E2A;&#x7EBF;&#x7A0B;&#x540C;&#x65F6;&#x8FD0;&#x884C;&#xFF0C;&#x56E0;&#x6B64;GIL&#x4E5F;&#x4F5C;&#x4E3A;Python&#x4E2D;&#x7684;&#x4E00;&#x4E2A;&#x201C;&#x81ED;&#x540D;&#x662D;&#x8457;&#x201D;&#x7684;&#x7279;&#x6027;&#x800C;&#x95FB;&#x540D;&#x3002;</p>
<p><strong>&#x5728;&#x8FD9;&#x7BC7;&#x6587;&#x7AE0;&#x4E2D;&#xFF0C;&#x4F60;&#x5C06;&#x4E86;&#x89E3;&#x5230;GIL&#x662F;&#x5982;&#x4F55;&#x5F71;&#x54CD;&#x5230;&#x4F60;&#x7684;Python&#x7A0B;&#x5E8F;&#x7684;&#x6027;&#x80FD;&#x7684;&#xFF0C;&#x4EE5;&#x53CA;&#x5982;&#x4F55;&#x51CF;&#x5C0F;&#x5B83;&#x5BF9;&#x4F60;&#x7684;&#x4EE3;&#x7801;&#x9020;&#x6210;&#x7684;&#x5F71;&#x54CD;&#x3002;</strong></p>
<h2 id="gilpython">GIL&#x4E3A;Python&#x89E3;&#x51B3;&#x4E86;&#x4EC0;&#x4E48;&#x95EE;&#x9898;&#xFF1F;</h2>
<p>Python&#x5728;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x4E2D;&#x4F7F;&#x7528;&#x4E86;&#x5F15;&#x7528;&#x8BA1;&#x6570;&#xFF0C;&#x8FD9;&#x5C31;&#x610F;&#x5473;&#x7740;&#x5728;Python&#x4E2D;&#x521B;&#x5EFA;&#x7684;&#x5BF9;&#x8C61;&#x62E5;&#x6709;&#x4E00;&#x4E2A;&#x5F15;&#x7528;&#x8BA1;&#x6570;&#x53D8;&#x91CF;&#xFF0C;&#x8FD9;&#x4E2A;&#x53D8;&#x91CF;&#x8FFD;&#x8E2A;&#x7740;&#x6307;&#x5411;&#x8FD9;&#x4E2A;&#x5BF9;&#x8C61;&#x5F97;&#x5230;&#x5F15;&#x7528;&#x6570;&#x91CF;&#x3002;&#x5F53;&#x8FD9;&#x4E2A;&#x5F15;&#x7528;&#x8BA1;&#x6570;&#x4E0B;&#x964D;&#x5230;0&#x65F6;&#xFF0C;&#x8FD9;&#x4E2A;&#x5BF9;&#x8C61;&#x6240;&#x5360;&#x6709;&#x7684;&#x5185;&#x5B58;&#x5C31;&#x4F1A;&#x88AB;&#x91CA;&#x653E;&#x3002;</p>
<p>&#x4E0B;&#x9762;&#x8FD9;&#x6BB5;&#x7B80;&#x5355;&#x7684;&#x4EE3;&#x7801;&#x6F14;&#x793A;&#x4E86;&#x5F15;&#x7528;&#x8BA1;&#x6570;&#x662F;&#x5982;&#x4F55;&#x5DE5;&#x4F5C;&#x7684;&#xFF1A;</p>
<pre><code class="language-python">&gt;&gt;&gt; import sys
&gt;&gt;&gt; a = []
&gt;&gt;&gt; b = a
&gt;&gt;&gt; sys.getrefcount(a)
3
</code></pre>
<p>&#x5728;&#x4E0A;&#x9762;&#x8FD9;&#x4E2A;&#x4F8B;&#x5B50;&#x4E2D;&#xFF0C;&#x7A7A;&#x5217;&#x8868;&#x5BF9;&#x8C61;&#x7684;&#x5F15;&#x7528;&#x8BA1;&#x6570;&#x662F;3&#xFF0C;&#x5B83;&#x5206;&#x522B;&#x88AB;<code>a</code>&#x3001;<code>b</code>&#x548C;&#x4F20;&#x9012;&#x7ED9;<code>sys.getrefcount()</code>&#x7684;&#x53C2;&#x6570;&#x6240;&#x5F15;&#x7528;&#x3002;</p>
<p>&#x56DE;&#x5230;GIL&#x3002;&#x73B0;&#x5728;&#x7684;&#x95EE;&#x9898;&#x5728;&#x4E8E;&#xFF0C;&#x8FD9;&#x4E2A;&#x5F15;&#x7528;&#x8BA1;&#x6570;&#x53D8;&#x91CF;&#x9700;&#x8981;&#x4FDD;&#x62A4;&#xFF0C;&#x4EE5;&#x9632;&#x6B62;&#x4E24;&#x4E2A;&#x7EBF;&#x7A0B;&#x540C;&#x65F6;&#x589E;&#x52A0;&#x6216;&#x51CF;&#x5C0F;&#x5176;&#x503C;&#x7684;&#x7ADE;&#x6001;&#x6761;&#x4EF6;&#x3002;&#x5982;&#x679C;&#x8FD9;&#x4E2A;&#x95EE;&#x9898;&#x51FA;&#x73B0;&#x4E86;&#xFF0C;&#x90A3;&#x5C31;&#x53EF;&#x80FD;&#x5BFC;&#x81F4;&#x5185;&#x5B58;&#x6CC4;&#x6F0F;&#x800C;&#x6C38;&#x4E0D;&#x91CA;&#x653E;&#xFF08;&#x5185;&#x5B58;&#xFF09;&#xFF0C;&#x66F4;&#x7CDF;&#x7CD5;&#x7684;&#x60C5;&#x51B5;&#x4E0B;&#xFF0C;&#x5B83;&#x4F1A;&#x5BFC;&#x81F4;&#x5728;&#x4ECD;&#x7136;&#x5B58;&#x5728;&#x5BF9;&#x5BF9;&#x8C61;&#x7684;&#x5F15;&#x7528;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x8FDB;&#x884C;&#x9519;&#x8BEF;&#x7684;&#x5185;&#x5B58;&#x91CA;&#x653E;&#xFF0C;&#x8FD9;&#x53EF;&#x80FD;&#x5BFC;&#x81F4;&#x4F60;&#x7684;Python&#x7A0B;&#x5E8F;&#x5D29;&#x6E83;&#x6216;&#x8005;&#x5176;&#x4ED6;&#x201C;&#x5947;&#x602A;&#x7684;&#x201D;bug&#x3002;</p>
<p>&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x4E3A;&#x7EBF;&#x7A0B;&#x95F4;&#x5171;&#x4EAB;&#x7684;&#x6570;&#x636E;&#x7ED3;&#x6784;&#x52A0;&#x9501;&#xFF0C;&#x4EE5;&#x4F7F;&#x5F97;&#x4ED6;&#x4EEC;&#x4E0D;&#x4F1A;&#x88AB;&#x540C;&#x65F6;&#x66F4;&#x6539;&#xFF0C;&#x4EE5;&#x6B64;&#x4FDD;&#x8BC1;&#x8FD9;&#x4E2A;&#x5F15;&#x7528;&#x8BA1;&#x6570;&#x53D8;&#x91CF;&#x7684;&#x5B89;&#x5168;&#x3002;</p>
<p>&#x4F46;&#x662F;&#x4E3A;&#x6BCF;&#x4E2A;&#x5BF9;&#x8C61;&#x6216;&#x662F;&#x4E00;&#x7EC4;&#x5BF9;&#x8C61;&#x52A0;&#x9501;&#x5C31;&#x610F;&#x5473;&#x7740;&#x4F1A;&#x540C;&#x65F6;&#x5B58;&#x5728;&#x591A;&#x4E2A;&#x9501;&#xFF0C;&#x8FD9;&#x5C31;&#x53EF;&#x80FD;&#x5BFC;&#x81F4;&#x53E6;&#x4E00;&#x4E2A;&#x95EE;&#x9898;&#xFF1A;&#x6B7B;&#x9501;&#xFF08;&#x6B7B;&#x9501;&#x53EA;&#x53EF;&#x80FD;&#x5728;&#x5B58;&#x5728;&#x591A;&#x4E2A;&#x9501;&#x7684;&#x60C5;&#x51B5;&#x4E0B;&#x51FA;&#x73B0;&#xFF09;&#x3002;&#x53E6;&#x4E00;&#x4E2A;&#x526F;&#x4F5C;&#x7528;&#x662F;&#x91CD;&#x590D;&#x7684;&#x8BF7;&#x6C42;&#x548C;&#x91CA;&#x653E;&#x9501;&#x4F1A;&#x5BFC;&#x81F4;&#x6027;&#x80FD;&#x7684;&#x964D;&#x4F4E;&#x3002;</p>
<p>GIL&#x662F;&#x89E3;&#x91CA;&#x5668;&#x81EA;&#x8EAB;&#x7684;&#x5355;&#x4E00;&#x9501;&#xFF0C;&#x5B83;&#x6DFB;&#x52A0;&#x4E86;&#x4E00;&#x4E2A;&#x89C4;&#x5219;&#xFF0C;&#x5373;&#x4EFB;&#x4F55;Python&#x5B57;&#x8282;&#x7801;&#x7684;&#x6267;&#x884C;&#x90FD;&#x9700;&#x8981;&#x83B7;&#x53D6;&#x8FD9;&#x4E2A;&#x89E3;&#x91CA;&#x5668;&#x9501;&#x3002;&#x8FD9;&#x6837;&#x5B50;&#x5C31;&#x907F;&#x514D;&#x4E86;&#x6B7B;&#x9501;&#xFF08;&#x56E0;&#x4E3A;&#x53EA;&#x6709;&#x4E00;&#x4E2A;&#x9501;&#xFF09;&#xFF0C;&#x5E76;&#x4E14;&#x4E0D;&#x4F1A;&#x5BFC;&#x81F4;&#x592A;&#x591A;&#x7684;&#x6027;&#x80FD;&#x5F00;&#x9500;&#xFF0C;&#x4F46;&#x662F;&#x5B9E;&#x9645;&#x4E0A;&#x4E5F;&#x9020;&#x6210;&#x4E86;&#x4EFB;&#x4F55;CPU&#x5BC6;&#x96C6;&#x578B;&#x7684;Python&#x7A0B;&#x5E8F;&#x90FD;&#x53D8;&#x6210;&#x4E86;&#x5355;&#x7EBF;&#x7A0B;&#x7684;&#x3002;</p>
<p>&#x867D;&#x7136;&#x5176;&#x4ED6;&#x8BED;&#x8A00;&#x7684;&#x89E3;&#x91CA;&#x5668;&#x4E5F;&#x7528;&#x5230;&#x4E86;GIL&#xFF08;&#x6BD4;&#x5982;Ruby&#xFF09;&#xFF0C;&#x4F46;&#x8FD9;&#x5E76;&#x975E;&#x8FD9;&#x4E2A;&#x95EE;&#x9898;&#x7684;&#x552F;&#x4E00;&#x89E3;&#x51B3;&#x65B9;&#x6848;&#x3002;&#x4E00;&#x4E9B;&#x8BED;&#x8A00;&#x4F7F;&#x7528;&#x4E0D;&#x540C;&#x4E0E;&#x5F15;&#x7528;&#x8BA1;&#x6570;&#x7684;&#x65B9;&#x6CD5;&#xFF08;&#x6BD4;&#x5982;&#x5783;&#x573E;&#x56DE;&#x6536;&#xFF09;&#xFF0C;&#x907F;&#x514D;&#x4E86;&#x5728;&#x7EBF;&#x7A0B;&#x5B89;&#x5168;&#x7684;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x4E0A;&#x4F7F;&#x7528;GIL&#x3002;</p>
<p>&#x53E6;&#x4E00;&#x65B9;&#x9762;&#xFF0C;&#x8FD9;&#x5C31;&#x610F;&#x5473;&#x7740;&#x8FD9;&#x4E9B;&#x8BED;&#x8A00;&#x5F80;&#x5F80;&#x9700;&#x8981;&#x6DFB;&#x52A0;&#x5176;&#x4ED6;&#x7684;&#x6027;&#x80FD;&#x63D0;&#x5347;&#x529F;&#x80FD;&#xFF08;&#x6BD4;&#x5982;JIT&#x7F16;&#x8BD1;&#x5668;&#xFF09;&#x6765;&#x5F25;&#x8865;GIL&#x7684;&#x5355;&#x7EBF;&#x7A0B;&#x6027;&#x80FD;&#x4F18;&#x52BF;&#x7684;&#x635F;&#x5931;&#x3002;</p>
<h2 id="gil">&#x4E3A;&#x4EC0;&#x4E48;&#x9009;&#x62E9;GIL&#x4F5C;&#x4E3A;&#x89E3;&#x51B3;&#x65B9;&#x6848;&#xFF1F;</h2>
<p>&#x90A3;&#x4E3A;&#x4EC0;&#x4E48;Python&#x4F7F;&#x7528;&#x4E86;&#x8FD9;&#x79CD;&#x770B;&#x8D77;&#x6765;&#x5982;&#x6B64;&#x56F0;&#x96BE;&#x7684;&#x65B9;&#x6CD5;&#xFF1F;&#x8FD9;&#x662F;Python&#x5F00;&#x53D1;&#x4EBA;&#x5458;&#x7684;&#x9519;&#x8BEF;&#x51B3;&#x5B9A;&#x5417;&#xFF1F;</p>
<p>&#x7528;<a href="https://youtu.be/KVKufdTphKs?t=12m11s">Larry Hastings&#x7684;&#x8BDD;</a>&#x6765;&#x8BF4;&#xFF0C;GIL&#x7684;&#x8BBE;&#x8BA1;&#x51B3;&#x5B9A;&#x662F;&#x4F7F;&#x5F97;Python&#x4ECA;&#x5929;&#x5982;&#x6B64;&#x6D41;&#x884C;&#x7684;&#x539F;&#x56E0;&#x4E4B;&#x4E00;&#x3002;</p>
<p>&#x5728;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x8FD8;&#x6CA1;&#x6709;&#x7EBF;&#x7A0B;&#x7684;&#x6982;&#x5FF5;&#x7684;&#x65F6;&#x5019;&#xFF0C;Python&#x5C31;&#x5DF2;&#x7ECF;&#x5B58;&#x5728;&#x4E86;&#x3002;Python&#x88AB;&#x8BBE;&#x8BA1;&#x6210;&#x6613;&#x4E8E;&#x4F7F;&#x7528;&#x7684;&#xFF0C;&#x4EE5;&#x52A0;&#x5FEB;&#x5F00;&#x53D1;&#x901F;&#x5EA6;&#xFF0C;&#x56E0;&#x6B64;&#x8D8A;&#x6765;&#x8D8A;&#x591A;&#x7684;&#x5F00;&#x53D1;&#x4EBA;&#x5458;&#x5F00;&#x59CB;&#x4F7F;&#x7528;&#x5B83;&#x3002;</p>
<p>Python&#x9700;&#x8981;&#x5F88;&#x591A;&#x73B0;&#x6709;&#x7684;C&#x5E93;&#x63D0;&#x4F9B;&#x7684;&#x529F;&#x80FD;&#xFF0C;&#xFF08;&#x6240;&#x4EE5;&#x5F00;&#x53D1;&#x4EBA;&#x5458;&#xFF09;&#x4E3A;&#x8FD9;&#x4E9B;C&#x5E93;&#x5199;&#x4E86;&#x5F88;&#x591A;&#x7684;&#x6269;&#x5C55;&#x3002;&#x4E3A;&#x4E86;&#x907F;&#x514D;&#x4E0D;&#x4E00;&#x81F4;&#x7684;&#x66F4;&#x6539;&#xFF0C;&#x8FD9;&#x4E9B;C&#x6269;&#x5C55;&#x9700;&#x8981;GIL&#x63D0;&#x4F9B;&#x7684;&#x7EBF;&#x7A0B;&#x5B89;&#x5168;&#x7684;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x3002;</p>
<p>GIL&#x5B9E;&#x73B0;&#x8D77;&#x6765;&#x5F88;&#x7B80;&#x5355;&#xFF0C;&#x4E5F;&#x5F88;&#x5BB9;&#x6613;&#x88AB;&#x52A0;&#x5165;&#x5230;Python&#x4E4B;&#x4E2D;&#x3002;&#x56E0;&#x4E3A;&#x53EA;&#x9700;&#x8981;&#x7BA1;&#x7406;&#x4E00;&#x4E2A;&#x9501;&#xFF0C;&#x6240;&#x4EE5;&#x5B83;&#x4F1A;&#x4F7F;&#x5F97;&#x5355;&#x7EBF;&#x7A0B;&#x7A0B;&#x5E8F;&#x7684;&#x6027;&#x80FD;&#x6709;&#x6240;&#x63D0;&#x5347;&#x3002;</p>
<p>&#x7EBF;&#x7A0B;&#x4E0D;&#x5B89;&#x5168;&#x7684;C&#x5E93;&#x53D8;&#x5F97;&#x5F88;&#x5BB9;&#x6613;&#x8FC1;&#x79FB;&#xFF0C;&#x4E5F;&#x6B63;&#x662F;&#x56E0;&#x4E3A;&#x8FD9;&#x4E9B;C&#x6269;&#x5C55;&#xFF0C;Python&#x624D;&#x4F1A;&#x88AB;&#x4E0D;&#x540C;&#x7684;&#x793E;&#x533A;&#x6B23;&#x7136;&#x63A5;&#x53D7;&#x3002;</p>
<p>&#x5982;&#x4F60;&#x6240;&#x89C1;&#xFF0C;GIL&#x662F;CPython&#x5F00;&#x53D1;&#x4EBA;&#x5458;&#x5728;&#x65E9;&#x671F;Python&#x4E2D;&#x9762;&#x4E34;&#x7684;&#x4E00;&#x4E2A;&#x96BE;&#x9898;&#x7684;&#x52A1;&#x5B9E;&#x7684;&#x89E3;&#x51B3;&#x65B9;&#x6848;&#x3002;</p>
<h2 id="python">&#x5BF9;&#x591A;&#x7EBF;&#x7A0B;Python&#x7A0B;&#x5E8F;&#x5F71;&#x54CD;</h2>
<p>&#x5F53;&#x4F60;&#x67E5;&#x770B;&#x4E00;&#x4E2A;&#x5178;&#x578B;&#x7684;Python&#x7A0B;&#x5E8F;&#x6216;&#x662F;&#x4E0E;&#x6B64;&#x76F8;&#x5173;&#x4EFB;&#x4F55;&#x5176;&#x4ED6;&#x7A0B;&#x5E8F;&#x65F6;&#xFF0C;&#x5C31;&#x4F1A;&#x53D1;&#x73B0;CPU&#x5BC6;&#x96C6;&#x578B;&#x7A0B;&#x5E8F;&#x4E0E;IO&#x5BC6;&#x96C6;&#x578B;&#x7684;&#x6027;&#x80FD;&#x5DEE;&#x5F02;&#x3002;</p>
<p>&#x6240;&#x8C13;CPU&#x5BC6;&#x96C6;&#x578B;&#x7684;&#x7A0B;&#x5E8F;&#x662F;&#x6307;&#x6700;&#x5927;&#x5316;&#x5229;&#x7528;CPU&#x7684;&#x7A0B;&#x5E8F;&#xFF0C;&#x5305;&#x62EC;&#x505A;&#x6570;&#x5B66;&#x8FD0;&#x7B97;&#xFF08;&#x6BD4;&#x5982;&#x77E9;&#x9635;&#x4E58;&#x6CD5;&#xFF09;&#x3001;&#x641C;&#x7D22;&#x3001;&#x56FE;&#x7247;&#x5904;&#x7406;&#x7B49;&#x7B49;&#x3002;</p>
<p>&#x800C;IO&#x5BC6;&#x96C6;&#x578B;&#x7684;&#x7A0B;&#x5E8F;&#x662F;&#x6307;&#x90A3;&#x4E9B;&#x82B1;&#x8D39;&#x65F6;&#x95F4;&#x53BB;&#x7B49;&#x5F85;&#x6765;&#x81EA;&#x7528;&#x6237;&#x3001;&#x6587;&#x4EF6;&#x3001;&#x6570;&#x636E;&#x5E93;&#x6216;&#x8005;&#x7F51;&#x7EDC;&#x7B49;&#x7684;&#x8F93;&#x5165;&#x6216;&#x8F93;&#x51FA;&#x7684;&#x7A0B;&#x5E8F;&#x3002;&#x7531;&#x4E8E;&#x5728;&#x8F93;&#x5165;&#x8F93;&#x51FA;&#x51C6;&#x5907;&#x597D;&#x4E4B;&#x524D;&#xFF0C;&#x8D44;&#x6E90;&#x53EF;&#x80FD;&#x9700;&#x8981;&#x505A;&#x4E00;&#x4E9B;&#x5904;&#x7406;&#xFF0C;&#x6240;&#x4EE5;IO&#x5BC6;&#x96C6;&#x578B;&#x7A0B;&#x5E8F;&#x6709;&#x65F6;&#x5019;&#x5FC5;&#x987B;&#x7B49;&#x5F85;&#x5F88;&#x957F;&#x7684;&#x65F6;&#x95F4;&#xFF0C;&#x76F4;&#x5230;&#x5B83;&#x4EEC;&#x83B7;&#x53D6;&#x5230;&#x4E86;&#x4ED6;&#x4EEC;&#x60F3;&#x8981;&#x7684;&#x8D44;&#x6E90;&#x3002;&#x4F8B;&#x5982;&#xFF0C;&#x7528;&#x6237;&#x601D;&#x8003;&#x5411;&#x8F93;&#x5165;&#x63D0;&#x793A;&#x7B26;&#x4E2D;&#x8F93;&#x5165;&#x4EC0;&#x4E48;&#xFF0C;&#x6216;&#x8005;&#x6570;&#x636E;&#x5E93;&#x5728;&#x81EA;&#x5DF1;&#x7684;&#x8FDB;&#x7A0B;&#x4E2D;&#x8FD0;&#x884C;&#x7684;&#x67E5;&#x8BE2;&#x8FC7;&#x7A0B;&#x3002;</p>
<p>&#x6211;&#x4EEC;&#x6765;&#x770B;&#x770B;&#x4E00;&#x4E2A;&#x6267;&#x884C;&#x9012;&#x51CF;&#x7684;&#x7B80;&#x5355;&#x7684;CPU&#x5BC6;&#x96C6;&#x578B;&#x7A0B;&#x5E8F;&#xFF1A;</p>
<pre><code class="language-python"># single_threaded.py
import time
from threading import Thread

COUNT = 50000000

def countdown(n):
    while n&gt;0:
        n -= 1

start = time.time()
countdown(COUNT)
end = time.time()

print(&apos;Time taken in seconds -&apos;, end - start)
</code></pre>
<p>&#x5728;&#x6211;&#x7684;&#x56DB;&#x6838;&#x673A;&#x5668;&#x4E0A;&#x8FD0;&#x884C;&#x5F97;&#x5230;&#x8F93;&#x51FA;&#xFF1A;</p>
<pre><code class="language-shell">$ python single_threaded.py
Time taken in seconds - 6.20024037361145
</code></pre>
<p>&#x73B0;&#x5728;&#x6211;&#x6539;&#x52A8;&#x4E00;&#x70B9;&#x4EE3;&#x7801;&#xFF0C;&#x8BA9;&#x4E24;&#x4E2A;&#x7EBF;&#x7A0B;&#x5E76;&#x884C;&#x5730;&#x505A;&#x76F8;&#x540C;&#x7684;&#x9012;&#x51CF;&#xFF1A;</p>
<pre><code class="language-python"># multi_threaded.py
import time
from threading import Thread

COUNT = 50000000

def countdown(n):
    while n&gt;0:
        n -= 1

t1 = Thread(target=countdown, args=(COUNT//2,))
t2 = Thread(target=countdown, args=(COUNT//2,))

start = time.time()
t1.start()
t2.start()
t1.join()
t2.join()
end = time.time()

print(&apos;Time taken in seconds -&apos;, end - start)
</code></pre>
<p>&#x5F53;&#x6211;&#x518D;&#x6B21;&#x8FD0;&#x884C;&#x65F6;&#xFF1A;</p>
<pre><code class="language-shell">$ python multi_threaded.py
Time taken in seconds - 6.924342632293701
</code></pre>
<p>&#x5982;&#x4F60;&#x6240;&#x89C1;&#xFF0C;&#x4E24;&#x4E2A;&#x7248;&#x672C;&#x82B1;&#x8D39;&#x4E86;&#x8FD1;&#x4E4E;&#x4E00;&#x6837;&#x7684;&#x65F6;&#x95F4;&#x6765;&#x5B8C;&#x6210;&#x3002;&#x5728;&#x591A;&#x7EBF;&#x7A0B;&#x7684;&#x7248;&#x672C;&#x91CC;&#xFF0C;GIL&#x963B;&#x6B62;&#x4E86;CPU&#x5BC6;&#x96C6;&#x578B;&#x7EBF;&#x7A0B;&#x5E76;&#x884C;&#x6267;&#x884C;&#x3002;</p>
<p>&#x5728;IO&#x5BC6;&#x96C6;&#x578B;&#x7684;&#x7A0B;&#x5E8F;&#x4E2D;&#xFF0C;GIL&#x4E0D;&#x4F1A;&#x9020;&#x6210;&#x592A;&#x5927;&#x7684;&#x5F71;&#x54CD;&#xFF0C;&#x56E0;&#x4E3A;&#x5728;&#x7EBF;&#x7A0B;&#x7B49;&#x5F85;IO&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5B83;&#x4EEC;&#x5171;&#x4EAB;GIL&#x3002;</p>
<p>&#x4F46;&#x662F;&#x6240;&#x6709;&#x7EBF;&#x7A0B;&#x90FD;&#x662F;&#x5B8C;&#x5168;&#x7684;CPU&#x5BC6;&#x96C6;&#x578B;&#x7684;&#x7A0B;&#x5E8F;&#xFF08;&#x6BD4;&#x5982;&#x7528;&#x591A;&#x7EBF;&#x7A0B;&#x5904;&#x7406;&#x4E00;&#x5F20;&#x56FE;&#x7247;&#x7684;&#x591A;&#x4E2A;&#x90E8;&#x5206;&#xFF09;&#x4E0D;&#x4EC5;&#x4F1A;&#x56E0;&#x4E3A;GIL&#x800C;&#x53D8;&#x6210;&#x5355;&#x7EBF;&#x7A0B;&#x7684;&#xFF0C;&#x5E76;&#x4E14;&#x6267;&#x884C;&#x65F6;&#x95F4;&#x4E5F;&#x4F1A;&#x53D8;&#x957F;&#xFF0C;&#x6BD4;&#x5982;&#x4E0A;&#x9762;&#x7684;&#x4F8B;&#x5B50;&#x4E2D;&#xFF0C;&#xFF08;&#x591A;&#x7EBF;&#x7A0B;&#x7248;&#x672C;&#xFF09;&#x4E0E;&#x5B8C;&#x5168;&#x5355;&#x7EBF;&#x7A0B;&#x7248;&#x672C;&#x7684;&#x6BD4;&#x8F83;&#x3002;</p>
<p>&#x6267;&#x884C;&#x65F6;&#x95F4;&#x53D8;&#x957F;&#x7684;&#x539F;&#x56E0;&#x662F;GIL&#x5BFC;&#x81F4;&#x7684;&#x9501;&#x7684;&#x83B7;&#x53D6;&#x4E0E;&#x91CA;&#x653E;&#x3002;</p>
<h2 id="gil">&#x4E3A;&#x4EC0;&#x4E48;GIL&#x8FD8;&#x6CA1;&#x6709;&#x88AB;&#x79FB;&#x9664;&#xFF1F;</h2>
<p>Python&#x7684;&#x5F00;&#x53D1;&#x8005;&#x7ECF;&#x5E38;&#x6536;&#x5230;&#x5BF9;&#x6B64;&#x7684;&#x62B1;&#x6028;&#xFF0C;&#x4F46;&#x662F;&#x50CF;Python&#x8FD9;&#x6837;&#x6D41;&#x884C;&#x7684;&#x8BED;&#x8A00;&#xFF0C;&#x4E0D;&#x53EF;&#x80FD;&#x5728;&#x5F15;&#x5165;&#x5220;&#x9664;GIL&#x8FD9;&#x4E48;&#x91CD;&#x5927;&#x7684;&#x6539;&#x52A8;&#x65F6;&#x8FD8;&#x4E0D;&#x4EA7;&#x751F;&#x5411;&#x540E;&#x517C;&#x5BB9;&#x6027;&#x95EE;&#x9898;&#x3002;</p>
<p>GIL&#x770B;&#x4F3C;&#x53EF;&#x4EE5;&#x88AB;&#x79FB;&#x9664;&#xFF0C;&#x4F46;&#x662F;&#x8FD9;&#x6837;&#x7684;&#x5C1D;&#x8BD5;&#x5F00;&#x53D1;&#x8005;&#x548C;&#x7814;&#x7A76;&#x4EBA;&#x5458;&#x4EEC;&#x8FC7;&#x53BB;&#x5DF2;&#x7ECF;&#x8FDB;&#x884C;&#x4E86;&#x591A;&#x6B21;&#xFF0C;&#x800C;&#x6240;&#x6709;&#x7684;&#x5C1D;&#x8BD5;&#x90FD;&#x7834;&#x574F;&#x4E86;&#x5DF2;&#x5B58;&#x5728;&#x7684;C&#x6269;&#x5C55;&#xFF0C;&#x56E0;&#x4E3A;&#x8FD9;&#x4E9B;C&#x6269;&#x5C55;&#x90FD;&#x4E25;&#x91CD;&#x4F9D;&#x8D56;GIL&#x6240;&#x63D0;&#x4F9B;&#x7684;&#x89E3;&#x51B3;&#x65B9;&#x6848;&#x3002;</p>
<p>&#x5F53;&#x7136;&#xFF0C;&#x4E5F;&#x6709;&#x5176;&#x4ED6;&#x7684;&#x4E00;&#x4E9B;&#x65B9;&#x6CD5;&#x53EF;&#x4EE5;&#x89E3;&#x51B3;GIL&#x6240;&#x89E3;&#x51B3;&#x7684;&#x95EE;&#x9898;&#xFF0C;&#x4F46;&#x662F;&#x5176;&#x4E2D;&#x4E00;&#x4E9B;&#x65B9;&#x6848;&#x964D;&#x4F4E;&#x4E86;&#x5355;&#x7EBF;&#x7A0B;&#x548C;&#x591A;&#x7EBF;&#x7A0B;&#x4E0B;&#x7684;IO&#x5BC6;&#x96C6;&#x578B;&#x7A0B;&#x5E8F;&#x7684;&#x6027;&#x80FD;&#xFF0C;&#x800C;&#x53E6;&#x4E00;&#x4E9B;&#x5219;&#x592A;&#x8FC7;&#x56F0;&#x96BE;&#x3002;&#x6BD5;&#x7ADF;&#x4F60;&#x4E0D;&#x60F3;&#x8BA9;&#x4F60;&#x7684;Python&#x4EE3;&#x7801;&#x5728;&#x65B0;&#x7248;&#x672C;&#x4E0A;&#x8DD1;&#x7684;&#x53CD;&#x800C;&#x66F4;&#x6162;&#x4E86;&#xFF0C;&#x4E0D;&#x662F;&#x5417;&#xFF1F;</p>
<p>Python&#x4E4B;&#x7236;&#x3001;&#x201C;&#x4EC1;&#x6148;&#x7684;&#x7EC8;&#x8EAB;&#x72EC;&#x88C1;&#x8005;&#x201D;&#xFF0C;Guido van Rossum&#xFF0C;&#x5728;&#x5B83;&#x7684;2007&#x5E74;&#x4E5D;&#x6708;&#x4EFD;&#x7684;&#x6587;&#x7AE0;&#x201C;[It isn&apos;t Easy to remove the GIL]&#x201D;&#x4E0A;&#x7ED9;&#x4E86;&#x793E;&#x533A;&#x7B54;&#x6848;&#xFF1A;</p>
<blockquote>
<p>&#x53EA;&#x6709;&#x5728;&#x5355;&#x7EBF;&#x7A0B;&#xFF08;&#x4EE5;&#x53CA;&#x591A;&#x7EBF;&#x7A0B;IO&#x5BC6;&#x96C6;&#x578B;&#xFF09;&#x7A0B;&#x5E8F;&#x7684;&#x6027;&#x80FD;&#x4E0D;&#x4E0B;&#x964D;&#x7684;&#x60C5;&#x51B5;&#x4E0B;&#xFF0C;&#x6211;&#x624D;&#x80FD;&#x6B22;&#x8FCE;&#x5411;Py3k&#x6253;&#x4E0A;&#x4E00;&#x7CFB;&#x5217;&#x8865;&#x4E01;&#x3002;</p>
</blockquote>
<p>&#x800C;&#x6B64;&#x540E;&#x7684;&#x6240;&#x6709;&#x5C1D;&#x8BD5;&#x90FD;&#x6CA1;&#x6709;&#x6EE1;&#x8DB3;&#x8FD9;&#x4E2A;&#x6761;&#x4EF6;&#x3002;</p>
<h2 id="python3">&#x4E3A;&#x4EC0;&#x4E48;&#x4E0D;&#x5728;Python3&#x4E2D;&#x79FB;&#x9664;&#x5B83;&#xFF1F;</h2>
<p>Python3&#x7684;&#x786E;&#x6709;&#x673A;&#x4F1A;&#x4ECE;&#x5934;&#x5F00;&#x59CB;&#x5F88;&#x591A;&#x65B0;&#x529F;&#x80FD;&#xFF0C;&#x5728;&#x6B64;&#x8FC7;&#x7A0B;&#x4E2D;&#xFF0C;&#x7834;&#x574F;&#x4E00;&#x4E9B;&#x5B58;&#x5728;&#x7684;C&#x6269;&#x5C55;&#xFF0C;&#x8BA9;&#x5B83;&#x4EEC;&#x66F4;&#x65B0;&#x4EE5;&#x9002;&#x914D;Python3&#xFF0C;&#x8FD9;&#x5C31;&#x662F;&#x4E3A;&#x4EC0;&#x4E48;Python3&#x7684;&#x65E9;&#x671F;&#x7248;&#x672C;&#x88AB;&#x793E;&#x533A;&#x9002;&#x914D;&#x7F13;&#x6162;&#x7684;&#x539F;&#x56E0;&#x3002;</p>
<p>&#x4F46;&#x662F;&#x4E3A;&#x4EC0;&#x4E48;GIL&#x6CA1;&#x6709;&#x88AB;&#x540C;&#x65F6;&#x5220;&#x9664;&#x5462;&#xFF1F;</p>
<p>&#x79FB;&#x9664;GIL&#x5C06;&#x4F1A;&#x4F7F;&#x5F97;Python3&#x5728;&#x5355;&#x7EBF;&#x7A0B;&#x6027;&#x80FD;&#x4E0A;&#x6BD4;Python2&#x8FD8;&#x8981;&#x6162;&#xFF0C;&#x4F60;&#x53EF;&#x4EE5;&#x60F3;&#x8C61;&#x4E00;&#x4E0B;&#x8FD9;&#x4F1A;&#x5BFC;&#x81F4;&#x4EC0;&#x4E48;&#xFF0C;GIL&#x7684;&#x5355;&#x7EBF;&#x7A0B;&#x6027;&#x80FD;&#x4F18;&#x52BF;&#x662F;&#x65E0;&#x53EF;&#x8FA9;&#x9A73;&#x7684;&#xFF0C;&#x8FD9;&#x5C31;&#x5BFC;&#x81F4;&#x4E86;Python3&#x4E2D;&#x4E5F;&#x6709;GIL&#x3002;</p>
<p>&#x4F46;&#x662F;Python3&#x4E5F;&#x7684;&#x786E;&#x4E3A;&#x5DF2;&#x5B58;&#x5728;&#x7684;GIL&#x5E26;&#x6765;&#x4E86;&#x5F88;&#x5927;&#x7684;&#x63D0;&#x5347;&#xFF1A;</p>
<p>&#x6211;&#x4EEC;&#x8BA8;&#x8BBA;&#x8FC7;GIL&#x5BF9;&#x4E8E;&#x201C;&#x7EAF;CPU&#x5BC6;&#x96C6;&#x578B;&#x201D;&#x548C;&#x201C;&#x7EAF;IO&#x5BC6;&#x96C6;&#x578B;&#x201D;&#x591A;&#x7EBF;&#x7A0B;&#x7A0B;&#x5E8F;&#x7684;&#x5F71;&#x54CD;&#xFF0C;&#x4F46;&#x662F;&#x5BF9;&#x4E8E;&#x4E00;&#x90E8;&#x5206;&#x7EBF;&#x7A0B;&#x662F;IO&#x5BC6;&#x96C6;&#x578B;&#x800C;&#x53E6;&#x4E00;&#x90E8;&#x5206;&#x7EBF;&#x7A0B;&#x662F;CPU&#x5BC6;&#x96C6;&#x578B;&#x7684;&#x7A0B;&#x5E8F;&#x6765;&#x8BF4;&#x5462;&#xFF1F;</p>
<p>&#x4F17;&#x6240;&#x5468;&#x77E5;&#xFF0C;&#x5728;&#x8FD9;&#x6837;&#x7684;&#x7A0B;&#x5E8F;&#x91CC;&#xFF0C;Python&#x7684;GIL&#x4F1A;&#x7531;&#x4E8E;&#x4E0D;&#x7ED9;IO&#x5BC6;&#x96C6;&#x578B;&#x7EBF;&#x7A0B;&#x4ECE;CPU&#x5BC6;&#x96C6;&#x578B;&#x7EBF;&#x7A0B;&#x4E2D;&#x83B7;&#x53D6;&#x9501;&#x7684;&#x673A;&#x4F1A;&#x800C;&#x997F;&#x6B7B;IO&#x5BC6;&#x96C6;&#x578B;&#x7EBF;&#x7A0B;&#x3002;</p>
<p>&#x8FD9;&#x662F;&#x56E0;&#x4E3A;Python&#x5185;&#x90E8;&#x7684;&#x4E00;&#x79CD;&#x673A;&#x5236;&#xFF0C;&#x5B83;&#x4F1A;&#x5F3A;&#x5236;&#x7EBF;&#x7A0B;&#x5728;&#x8FDE;&#x7EED;&#x4F7F;&#x7528;&#x56FA;&#x5B9A;&#x7684;&#x95F4;&#x9694;&#x4E4B;&#x540E;&#x91CA;&#x653E;&#x6389;GIL&#xFF0C;&#x5982;&#x679C;&#x6CA1;&#x6709;&#x4EBA;&#x8BF7;&#x6C42;GIL&#x5219;&#x4F1A;&#x7EE7;&#x7EED;&#x6267;&#x884C;&#x5F53;&#x524D;&#x7EBF;&#x7A0B;&#x3002;</p>
<pre><code class="language-python">&gt;&gt;&gt; import sys
&gt;&gt;&gt; # The interval is set to 100 instructions:
&gt;&gt;&gt; sys.getcheckinterval()
100
</code></pre>
<p>&#x8FD9;&#x4E2A;&#x673A;&#x5236;&#x7684;&#x95EE;&#x9898;&#x662F;&#xFF0C;&#x5927;&#x591A;&#x662F;&#x65F6;&#x95F4;&#x91CC;&#xFF0C;CPU&#x5BC6;&#x96C6;&#x578B;&#x7684;&#x7EBF;&#x7A0B;&#x5C06;&#x4F1A;&#x5728;&#x5176;&#x4ED6;&#x7EBF;&#x7A0B;&#x83B7;&#x53D6;&#x4E4B;&#x524D;&#x91CD;&#x65B0;&#x83B7;&#x53D6;&#x5230;GIL&#x3002;David Beazley&#x7684;&#x7814;&#x7A76;&#x548C;&#x53EF;&#x89C6;&#x5316;&#x53EF;&#x4EE5;&#x5728;<a href="http://www.dabeaz.com/blog/2010/01/python-gil-visualized.html">&#x8FD9;&#x91CC;</a>&#x627E;&#x5230;&#x3002;</p>
<p>&#x8FD9;&#x4E2A;&#x95EE;&#x9898;&#x5728;2009&#x5E74;&#x7684;Python3.2&#x4E2D;&#x88AB;Antoine Pitrou&#x4FEE;&#x590D;&#xFF0C;&#x4ED6;&#x52A0;&#x5165;&#x4E86;&#x4E00;&#x4E2A;&#x673A;&#x5236;&#xFF0C;&#x68C0;&#x67E5;&#x5176;&#x4ED6;&#x7EBF;&#x7A0B;&#x7684;GIL&#x83B7;&#x53D6;&#x8BF7;&#x6C42;&#xFF0C;&#x4E0D;&#x5141;&#x8BB8;&#x5F53;&#x524D;&#x7684;&#x7EBF;&#x7A0B;&#x5728;&#x5176;&#x4ED6;&#x7EBF;&#x7A0B;&#x6709;&#x673A;&#x4F1A;&#x8FD0;&#x884C;&#x4E4B;&#x524D;&#x91CD;&#x65B0;&#x83B7;&#x53D6;&#x5230;GIL&#x3002;</p>
<h2 id="pythongil">&#x5982;&#x4F55;&#x5904;&#x7406;Python&#x7684;GIL&#xFF1F;</h2>
<p>&#x5982;&#x679C;GIL&#x4E3A;&#x4F60;&#x5E26;&#x6765;&#x4E86;&#x95EE;&#x9898;&#xFF0C;&#x8FD9;&#x6709;&#x4E00;&#x4E9B;&#x4F60;&#x53EF;&#x4EE5;&#x5C1D;&#x8BD5;&#x7684;&#x529E;&#x6CD5;&#xFF1A;</p>
<h3 id="1vs">1. <strong>&#x591A;&#x8FDB;&#x7A0B;vs&#x591A;&#x7EBF;&#x7A0B;</strong></h3>
<p>&#x6700;&#x5E38;&#x89C1;&#x7684;&#x65B9;&#x6CD5;&#x5C31;&#x662F;&#x4F7F;&#x7528;&#x591A;&#x8FDB;&#x7A0B;&#x800C;&#x4E0D;&#x662F;&#x591A;&#x7EBF;&#x7A0B;&#x3002;&#x6BCF;&#x4E2A;Python&#x8FDB;&#x7A0B;&#x6709;&#x5B83;&#x81EA;&#x5DF1;&#x7684;Python&#x89E3;&#x91CA;&#x5668;&#x548C;&#x5185;&#x5B58;&#x7A7A;&#x95F4;&#xFF0C;&#x6240;&#x4EE5;GIL&#x5C31;&#x4E0D;&#x662F;&#x95EE;&#x9898;&#x4E86;&#x3002;Python&#x6709;<a href="https://docs.python.org/3.8/library/multiprocessing.html"><code>multiprocessing</code></a>&#x6A21;&#x5757;&#x53EF;&#x4EE5;&#x8BA9;&#x6211;&#x4EEC;&#x50CF;&#x8FD9;&#x6837;&#x5F88;&#x5BB9;&#x6613;&#x5730;&#x521B;&#x5EFA;&#x8FDB;&#x7A0B;&#xFF1A;</p>
<pre><code class="language-python">from multiprocessing import Pool
import time

COUNT = 50000000
def countdown(n):
    while n&gt;0:
        n -= 1

if __name__ == &apos;__main__&apos;:
    pool = Pool(processes=2)
    start = time.time()
    r1 = pool.apply_async(countdown, [COUNT//2])
    r2 = pool.apply_async(countdown, [COUNT//2])
    pool.close()
    pool.join()
    end = time.time()
    print(&apos;Time taken in seconds -&apos;, end - start)
</code></pre>
<p>&#x5728;&#x6211;&#x7684;&#x7CFB;&#x7EDF;&#x4E0A;&#x8FD0;&#x884C;&#x8F93;&#x51FA;&#x5982;&#x4E0B;&#xFF1A;</p>
<pre><code class="language-shell">$ python multiprocess.py
Time taken in seconds - 4.060242414474487
</code></pre>
<p>&#x76F8;&#x5BF9;&#x4E8E;&#x591A;&#x7EBF;&#x7A0B;&#x5730;&#x7248;&#x672C;&#x6709;&#x4E86;&#x50CF;&#x6837;&#x5730;&#x6027;&#x80FD;&#x63D0;&#x5347;&#x662F;&#x5427;&#xFF1F;</p>
<p>&#x8FD0;&#x884C;&#x65F6;&#x95F4;&#x5E76;&#x975E;&#x6211;&#x4EEC;&#x60F3;&#x8C61;&#x4E2D;&#x7684;&#x4E0B;&#x964D;&#x4E00;&#x534A;&#xFF0C;&#x56E0;&#x4E3A;&#x8FDB;&#x7A0B;&#x7BA1;&#x7406;&#x9700;&#x8981;&#x5B83;&#x81EA;&#x5DF1;&#x7684;&#x5F00;&#x9500;&#x3002;&#x591A;&#x8FDB;&#x7A0B;&#x6BD4;&#x591A;&#x7EBF;&#x7A0B;&#x8981;&#x66F4;&#x91CD;&#x4E00;&#x70B9;&#xFF0C;&#x6240;&#x4EE5;&#xFF0C;&#x8BB0;&#x4F4F;&#x8FD9;&#x6709;&#x53EF;&#x80FD;&#x662F;&#x4E00;&#x4E2A;&#x4E0D;&#x65AD;&#x6269;&#x5927;&#x7684;&#x74F6;&#x9888;&#x3002;</p>
<h3 id="2python">2. <strong>&#x5176;&#x4ED6;&#x7684;Python&#x89E3;&#x91CA;&#x5668;</strong></h3>
<p>Python&#x6709;&#x5F88;&#x591A;&#x7684;&#x89E3;&#x91CA;&#x5668;&#x5B9E;&#x73B0;&#xFF0C;&#x5E38;&#x89C1;&#x7684;&#x6709;CPython&#x3001;Jython&#x3001;IronPython&#x4EE5;&#x53CA;PyPy&#xFF0C;&#x5206;&#x522B;&#x7528;C&#x8BED;&#x8A00;&#x3001;Java&#x3001;C#&#x548C;Python&#x5199;&#x7684;&#x3002;GIL&#x53EA;&#x5728;&#x539F;&#x751F;&#x7684;Python&#x5B9E;&#x73B0;CPython&#x4E2D;&#x5B58;&#x5728;&#x3002;&#x5982;&#x679C;&#x4F60;&#x7684;&#x7A0B;&#x5E8F;&#x548C;&#x5B83;&#x6240;&#x4F7F;&#x7528;&#x7684;&#x5E93;&#x5728;&#x5176;&#x4ED6;&#x7684;&#x5B9E;&#x73B0;&#x4E0A;&#x53EF;&#x4EE5;&#x8FD0;&#x884C;&#xFF0C;&#x90A3;&#x4F60;&#x4E5F;&#x53EF;&#x4EE5;&#x5C1D;&#x8BD5;&#x4E00;&#x4E0B;&#x3002;</p>
<h3 id="3">3. <strong>&#x518D;&#x7B49;&#x4E00;&#x7B49;</strong></h3>
<p>&#x5C3D;&#x7BA1;&#x5F88;&#x591A;&#x7528;&#x6237;&#x6B63;&#x5728;&#x4EAB;&#x53D7;&#x7740;GIL&#x7684;&#x5355;&#x7EBF;&#x7A0B;&#x6027;&#x80FD;&#x4F18;&#x52BF;&#xFF0C;&#x591A;&#x7EBF;&#x7A0B;&#x7684;&#x5F00;&#x53D1;&#x8005;&#x4E5F;&#x4E0D;&#x9700;&#x8981;&#x6CAE;&#x4E27;&#xFF0C;&#x56E0;&#x4E3A;Python&#x7684;&#x793E;&#x533A;&#x4E2D;&#x6709;&#x5F88;&#x591A;&#x806A;&#x660E;&#x7684;&#x5934;&#x8111;&#x6B63;&#x5728;&#x4E3A;&#x79FB;&#x9664;CPython&#x4E2D;&#x7684;GIL&#x800C;&#x52AA;&#x529B;&#xFF0C;&#x6BD4;&#x5982;<a href="https://github.com/larryhastings/gilectomy">Gilectomy</a>&#x3002;</p>
<h2 id>&#x603B;&#x7ED3;</h2>
<p>Python&#x7684;GIL&#x5E38;&#x5E38;&#x88AB;&#x8BA4;&#x4E3A;&#x662F;&#x4E00;&#x4E2A;&#x7591;&#x60D1;&#x548C;&#x56F0;&#x96BE;&#x7684;&#x8BDD;&#x9898;&#xFF0C;&#x4F46;&#x662F;&#x8BF7;&#x8BB0;&#x4F4F;&#xFF0C;&#x4F5C;&#x4E3A;&#x4E00;&#x4E2A;Pythonista&#xFF08;&#x8BD1;&#x8005;&#xFF1A;&#x6307;&#x4F7F;&#x7528;Python&#x7684;&#x4EBA;&#xFF09;&#xFF0C;&#x53EA;&#x6709;&#x5F53;&#x4F60;&#x5199;C&#x6269;&#x5C55;&#x6216;&#x8005;&#x662F;&#x5728;&#x7A0B;&#x5E8F;&#x4E2D;&#x4F7F;&#x7528;&#x4E86;CPU&#x5BC6;&#x96C6;&#x578B;&#x7684;&#x591A;&#x7EBF;&#x7A0B;&#x65F6;&#xFF0C;&#x4F60;&#x624D;&#x4F1A;&#x53D7;&#x4ED6;&#x5F71;&#x54CD;&#x3002;</p>
<p>&#x5728;&#x8FD9;&#x79CD;&#x60C5;&#x51B5;&#x4E0B;&#xFF0C;&#x8FD9;&#x7BC7;&#x6587;&#x7AE0;&#x5E94;&#x8BE5;&#x4E3A;&#x4F60;&#x63D0;&#x4F9B;&#x4E86;&#x89E3;GIL&#x662F;&#x4EC0;&#x4E48;&#x4EE5;&#x53CA;&#x5982;&#x4F55;&#x5728;&#x4F60;&#x7684;&#x9879;&#x76EE;&#x4E2D;&#x5904;&#x7406;&#x5B83;&#x6240;&#x9700;&#x7684;&#x4E00;&#x5207;&#x3002;&#x5982;&#x679C;&#x4F60;&#x60F3;&#x8981;&#x7406;&#x89E3;GIL&#x5E95;&#x5C42;&#x7684;&#x5185;&#x90E8;&#x8FC7;&#x7A0B;&#xFF0C;&#x6211;&#x63A8;&#x8350;&#x4F60;&#x53BB;&#x89C2;&#x770B;David Beazley&#x8BB2;&#x7684;<a href="https://youtu.be/Obt-vMVdM8s">Understanding the Python GIL</a>&#x3002;</p>
<hr>
<p>&#x539F;&#x6587;&#x94FE;&#x63A5;&#xFF1A;<a href="https://realpython.com/python-gil/">What is the Python Global Interpreter Lock (GIL)?</a></p>
<hr>
<h2 id>&#x8BD1;&#x8005;&#x8BB0;</h2>
<p>&#x8FD9;&#x7BC7;&#x6587;&#x7AE0;&#x4ECE;&#x52A1;&#x5B9E;&#x7684;&#x89D2;&#x5EA6;&#x51FA;&#x53D1;&#xFF0C;&#x8BB2;&#x8FF0;&#x4E86;Python&#x7684;GIL&#x7684;&#x4EA7;&#x751F;&#x548C;&#x53D1;&#x5C55;&#xFF0C;&#x4EE5;&#x53CA;&#x5B83;&#x7684;&#x610F;&#x4E49;&#x3002;</p>
<p>&#x5176;&#x5B9E;&#x5728;&#x6211;&#x7684;&#x7406;&#x89E3;&#x4E2D;&#xFF0C;&#x7EBF;&#x7A0B;&#x6982;&#x5FF5;&#x7684;&#x51FA;&#x73B0;&#x672C;&#x5C31;&#x662F;&#x4E3A;&#x4E86;&#x65B9;&#x4FBF;&#x5C06;&#x4EFB;&#x52A1;&#x62BD;&#x8C61;&#x6210;&#x591A;&#x4E2A;&#x5B50;&#x4EFB;&#x52A1;&#xFF0C;&#x800C;&#x62BD;&#x8C61;&#x5FC5;&#x4E0D;&#x53EF;&#x5C11;&#x7684;&#x5C31;&#x8981;&#x4ED8;&#x51FA;&#x4EE3;&#x4EF7;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x4EEC;&#x9700;&#x8981;&#x5404;&#x79CD;&#x5404;&#x6837;&#x7684;&#x9501;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x7EBF;&#x7A0B;&#x7BA1;&#x7406;&#x4E00;&#x5B9A;&#x9700;&#x8981;&#x5F00;&#x9500;&#x3002;&#x56E0;&#x6B64;&#xFF0C;&#x5927;&#x6982;&#x662F;&#x4E0D;&#x5B58;&#x5728;&#x4E00;&#x79CD;&#x4E24;&#x5168;&#x5176;&#x7F8E;&#x7684;&#x529E;&#x6CD5;&#xFF0C;&#x65E2;&#x80FD;&#x65B9;&#x4FBF;&#x7F16;&#x5199;&#x7A0B;&#x5E8F;&#xFF0C;&#x53C8;&#x80FD;&#x8BA9;&#x6027;&#x80FD;&#x6BEB;&#x65E0;&#x635F;&#x5931;&#x3002;&#x4ECE;&#x65F6;&#x95F4;&#x590D;&#x6742;&#x5EA6;&#x4E0A;&#x6765;&#x8BF4;&#xFF0C;&#x6211;&#x4EEC;&#x53EA;&#x80FD;&#x591F;&#x4E0D;&#x65AD;&#x5730;&#x903C;&#x8FD1;1+1=2&#xFF0C;&#x800C;&#x5B9E;&#x9645;&#x4E0A;&#x53EA;&#x4F1A;&#x662F;1+1&gt;2&#x3002;</p>
<p>&#x54C8;&#xFF0C;&#x53C8;&#x626F;&#x8FDC;&#x4E86;&#x3002;&#x6709;&#x65F6;&#x5019;&#x6211;&#x4E5F;&#x5728;&#x60F3;&#xFF0C;&#x5B58;&#x4E0D;&#x5B58;&#x5728;&#x4E00;&#x79CD;&#x62BD;&#x8C61;&#xFF0C;&#x5B83;&#x80FD;&#x591F;&#x5B8C;&#x7F8E;&#x5730;&#x6982;&#x62EC;&#x6240;&#x6709;&#x7684;&#x5F62;&#x5F0F;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x6BEB;&#x65E0;&#x635F;&#x5931;&#x7684;&#x62BD;&#x8C61;&#x3002;&#x5927;&#x6982;&#x5F88;&#x96BE;&#x5427;&#xFF0C;&#x6216;&#x8005;&#x8BF4;&#x4E0D;&#x53EF;&#x80FD;&#xFF0C;&#x4EBA;&#x7684;&#x601D;&#x7EF4;&#x7684;&#x5DE5;&#x4F5C;&#x65B9;&#x5F0F;&#x5C31;&#x51B3;&#x5B9A;&#x4E86;&#x5B83;&#x7684;&#x4E0D;&#x53EF;&#x80FD;&#x3002;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[[翻译] Python的内存管理]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#x6709;&#x6CA1;&#x6709;&#x60F3;&#x8FC7;Python&#x662F;&#x5982;&#x4F55;&#x5728;&#x80CC;&#x540E;&#x5904;&#x7406;&#x4F60;&#x7684;&#x6570;&#x636E;&#x7684;&#xFF1F;&#x4F60;&#x7684;&#x53D8;&#x91CF;&#x662F;&#x5982;&#x4F55;&#x5B58;&#x653E;&#x5728;&#x5185;&#x5B58;&#x4E2D;&#x7684;&#xFF1F;&#x4ED6;&#x4EEC;&#x4EC0;&#x4E48;&#x65F6;&#x5019;&#x88AB;&#x5220;&#x9664;&#xFF1F;</p>
<p>&#x5728;&#x8FD9;&#x7BC7;&#x6587;&#x7AE0;</p>]]></description><link>https://blog.ykai.cc/fan-yi/</link><guid isPermaLink="false">6331df653945280001365b9a</guid><category><![CDATA[翻译]]></category><category><![CDATA[Python]]></category><category><![CDATA[RealPython]]></category><dc:creator><![CDATA[Yingkai Dang]]></dc:creator><pubDate>Thu, 31 Oct 2019 03:34:21 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x6709;&#x6CA1;&#x6709;&#x60F3;&#x8FC7;Python&#x662F;&#x5982;&#x4F55;&#x5728;&#x80CC;&#x540E;&#x5904;&#x7406;&#x4F60;&#x7684;&#x6570;&#x636E;&#x7684;&#xFF1F;&#x4F60;&#x7684;&#x53D8;&#x91CF;&#x662F;&#x5982;&#x4F55;&#x5B58;&#x653E;&#x5728;&#x5185;&#x5B58;&#x4E2D;&#x7684;&#xFF1F;&#x4ED6;&#x4EEC;&#x4EC0;&#x4E48;&#x65F6;&#x5019;&#x88AB;&#x5220;&#x9664;&#xFF1F;</p>
<p>&#x5728;&#x8FD9;&#x7BC7;&#x6587;&#x7AE0;&#x4E2D;&#xFF0C;&#x6211;&#x4EEC;&#x5C06;&#x6DF1;&#x5165;&#x7814;&#x7A76;Python&#x7684;&#x5185;&#x90E8;&#x539F;&#x7406;&#xFF0C;&#x6765;&#x4E86;&#x89E3;&#x4ED6;&#x662F;&#x5982;&#x4F55;&#x8FDB;&#x884C;<strong>&#x5185;&#x5B58;&#x7BA1;&#x7406;</strong>&#x7684;&#x3002;</p>
<h2 id>&#x901A;&#x8FC7;&#x8FD9;&#x7BC7;&#x6587;&#x7AE0;&#xFF0C;&#x4F60;&#x5C06;&#x4F1A;&#xFF1A;</h2>
<ul>
<li>&#x5B66;&#x4E60;&#x66F4;&#x591A;&#x5173;&#x4E8E;&#x5E95;&#x5C42;&#x8BA1;&#x7B97;&#x7684;&#x77E5;&#x8BC6;&#xFF0C;&#x5C24;&#x5176;&#x662F;&#x5185;&#x5B58;&#x76F8;&#x5173;&#xFF1B;</li>
<li>&#x7406;&#x89E3;Python&#x662F;&#x5982;&#x4F55;&#x62BD;&#x8C61;&#x5E95;&#x5C42;&#x64CD;&#x4F5C;&#x7684;&#xFF1B;</li>
<li>&#x5B66;&#x4E60;Python&#x7684;&#x5185;&#x90E8;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x7B97;&#x6CD5;&#x3002;</li>
</ul>
<p>&#x7406;&#x89E3;Python&#x7684;&#x5185;&#x90E8;&#x539F;&#x7406;&#x8FD8;&#x53EF;&#x4EE5;&#x8BA9;&#x4F60;&#x66F4;&#x597D;&#x5730;&#x7406;&#x89E3;Python&#x7684;&#x4E00;&#x4E9B;&#x884C;&#x4E3A;&#xFF0C;&#x4E5F;&#x5E0C;&#x671B;&#x4F60;&#x5BF9;Python&#x80FD;&#x6709;&#x66F4;&#x597D;&#x5730;&#x8BA4;&#x8BC6;&#x3002;&#x5728;Python&#x7684;&#x80CC;&#x540E;&#x53D1;&#x751F;&#x4E86;&#x5F88;&#x591A;&#x7684;&#x4E8B;&#x60C5;&#xFF0C;&#x4EE5;&#x786E;&#x4FDD;&#x4F60;&#x7684;&#x7A0B;&#x5E8F;&#x80FD;&#x8FD0;&#x884C;&#x5730;&#x4E0E;&#x4F60;&#x9884;&#x60F3;&#x7684;&#x4E00;&#x81F4;&#x3002;</p>
<h2 id>&#x5185;&#x5B58;&#x662F;&#x4E00;&#x672C;&#x7A7A;&#x767D;&#x7684;&#x4E66;</h2>
<p>&#x9996;&#x5148;&#xFF0C;&#x4F60;&#x53EF;&#x4EE5;&#x5C06;&#x8BA1;&#x7B97;&#x673A;&#x7684;&#x5185;&#x5B58;&#x5F53;&#x4F5C;&#x4E00;&#x672C;&#x7528;&#x6765;&#x5199;&#x77ED;&#x7BC7;&#x5C0F;&#x8BF4;&#x7684;&#x7A7A;&#x767D;&#x4E66;&#x672C;&#xFF0C;&#x4F46;&#x662F;&#x5F00;&#x59CB;&#x65F6;&#x4E0A;&#x9762;&#x8FD8;&#x6CA1;&#x6709;&#x4EFB;&#x4F55;&#x5185;&#x5BB9;&#xFF0C;&#x800C;&#x6700;&#x7EC8;&#x4F1A;&#x6709;&#x4E0D;&#x540C;&#x7684;&#x4F5C;&#x8005;&#x4E0D;&#x65AD;&#x51FA;&#x73B0;&#xFF0C;&#x6BCF;&#x4E2A;&#x4F5C;&#x8005;&#x90FD;&#x60F3;&#x8981;&#x4E00;&#x4E9B;&#x7A7A;&#x95F4;&#x6765;&#x5199;&#x4E0A;&#x4ED6;&#x4EEC;&#x7684;&#x6545;&#x4E8B;&#x3002;</p>
<p>&#x56E0;&#x4E3A;&#x4E0D;&#x5141;&#x8BB8;&#x8986;&#x5199;&#xFF0C;&#x6240;&#x4EE5;&#x6BCF;&#x4E2A;&#x4EBA;&#x90FD;&#x9700;&#x8981;&#x6CE8;&#x610F;&#x81EA;&#x5DF1;&#x5199;&#x5165;&#x7684;&#x9875;&#x3002;&#x5728;&#x5F00;&#x59CB;&#x5199;&#x5165;&#x81EA;&#x5DF1;&#x7684;&#x6545;&#x4E8B;&#x4E4B;&#x524D;&#xFF0C;&#x4ED6;&#x4EEC;&#x4F1A;&#x54A8;&#x8BE2;&#x8FD9;&#x672C;&#x4E66;&#x7684;&#x7BA1;&#x7406;&#x5458;&#xFF0C;&#x7BA1;&#x7406;&#x5458;&#x4F1A;&#x51B3;&#x5B9A;&#x4ED6;&#x4EEC;&#x53EF;&#x4EE5;&#x5F80;&#x54EA;&#x91CC;&#x5199;&#x5165;&#x3002;</p>
<p>&#x7531;&#x4E8E;&#x8FD9;&#x672C;&#x4E66;&#x5B58;&#x5728;&#x4E86;&#x5F88;&#x957F;&#x65F6;&#x95F4;&#xFF0C;&#x56E0;&#x6B64;&#x5176;&#x4E2D;&#x7684;&#x8BB8;&#x591A;&#x6545;&#x4E8B;&#x90FD;&#x5DF2;&#x7ECF;&#x4E0D;&#x518D;&#x9002;&#x7528;&#x3002;&#x5F53;&#x4E0D;&#x518D;&#x6709;&#x4EBA;&#x53BB;&#x8BFB;&#x6216;&#x8005;&#x53C2;&#x8003;&#x8FD9;&#x4E9B;&#x6545;&#x4E8B;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5B83;&#x4EEC;&#x5C06;&#x4F1A;&#x88AB;&#x79FB;&#x9664;&#xFF0C;&#x6765;&#x4E3A;&#x65B0;&#x7684;&#x6545;&#x4E8B;&#x817E;&#x51FA;&#x7A7A;&#x95F4;&#x3002;</p>
<p>&#x672C;&#x8D28;&#x4E0A;&#xFF08;In essence&#xFF09;&#xFF0C;&#x8BA1;&#x7B97;&#x673A;&#x5185;&#x5B58;&#x5C31;&#x50CF;&#x8FD9;&#x6837;&#x4E00;&#x672C;&#x4E66;&#x3002;&#x5B9E;&#x9645;&#x4E0A;&#xFF0C;&#x8BA1;&#x7B97;&#x673A;&#x901A;&#x5E38;&#x4F1A;&#x8C03;&#x7528;&#x56FA;&#x5B9A;&#x957F;&#x5EA6;&#x7684;&#x8FDE;&#x7EED;&#x5185;&#x5B58;&#x9875;&#xFF0C;&#xFF08;&#x5C31;&#x50CF;&#x4E66;&#x9875;&#x4E00;&#x6837;&#xFF09;&#xFF0C;&#x6240;&#x4EE5;&#x8FD9;&#x6837;&#x7684;&#x6BD4;&#x55BB;&#x5F88;&#x662F;&#x6070;&#x5F53;&#x3002;</p>
<p>&#x90A3;&#x4E9B;&#x4F5C;&#x8005;&#x4EEC;&#x5C31;&#x50CF;&#x662F;&#x4E0D;&#x540C;&#x7684;<strong>&#x5E94;&#x7528;&#x548C;&#x8FDB;&#x7A0B;</strong>&#xFF0C;&#x5B83;&#x4EEC;&#x9700;&#x8981;&#x7A7A;&#x95F4;&#x53BB;&#x5B58;&#x50A8;&#x6570;&#x636E;&#x3002;&#x90A3;&#x4E2A;&#x51B3;&#x5B9A;&#x54EA;&#x91CC;&#x53EF;&#x4EE5;&#x5199;&#x5165;&#x7684;&#x7BA1;&#x7406;&#x5458;&#xFF0C;&#x5C31;&#x626E;&#x6F14;&#x4E86;&#x5404;&#x79CD;<strong>&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x5668;</strong>&#x7684;&#x89D2;&#x8272;&#x3002;&#x800C;&#x90A3;&#x4E2A;&#x5220;&#x9664;&#x65E7;&#x7684;&#x6545;&#x4E8B;&#xFF0C;&#x4E3A;&#x65B0;&#x7684;&#x6545;&#x4E8B;&#x817E;&#x51FA;&#x7A7A;&#x95F4;&#x7684;&#x4EBA;&#xFF0C;&#x5C31;&#x662F;<strong>&#x5783;&#x573E;&#x56DE;&#x6536;&#x5668;</strong>&#x3002;</p>
<h2 id>&#x5185;&#x5B58;&#x7BA1;&#x7406;&#xFF1A;&#x4ECE;&#x786C;&#x4EF6;&#x5230;&#x8F6F;&#x4EF6;</h2>
<p>&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x5B9E;&#x9645;&#x4E0A;&#x662F;&#x5404;&#x79CD;&#x5E94;&#x7528;&#x8BFB;&#x5199;&#x6570;&#x636E;&#x7684;&#x8FC7;&#x7A0B;&#xFF0C;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x5668;&#x4F1A;&#x51B3;&#x5B9A;&#x5F80;&#x54EA;&#x91CC;&#x653E;&#x7F6E;&#x5E94;&#x7528;&#x7684;&#x6570;&#x636E;&#x3002;&#x5C31;&#x50CF;&#x6BD4;&#x55BB;&#x4E2D;&#x7684;&#x6709;&#x9650;&#x7684;&#x4E66;&#x9875;&#xFF0C;&#x5185;&#x5B58;&#x5757;&#x9875;&#x662F;&#x6709;&#x9650;&#x7684;&#xFF0C;&#x56E0;&#x6B64;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x5668;&#x5FC5;&#x987B;&#x627E;&#x5230;&#x7A7A;&#x95F2;&#x7684;&#x7A7A;&#x95F4;&#x6765;&#x63D0;&#x4F9B;&#x7ED9;&#x5E94;&#x7528;&#x3002;&#x8FD9;&#x4E2A;&#x8FC7;&#x7A0B;&#x4E00;&#x822C;&#x79F0;&#x4F5C;&#x5185;&#x5B58;&#x5206;&#x914D;&#x3002;</p>
<p>&#x5728;&#x53E6;&#x4E00;&#x8FB9;&#xFF0C;&#x5F53;&#x4E00;&#x6BB5;&#x6570;&#x636E;&#x4E0D;&#x518D;&#x9700;&#x8981;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5B83;&#x4EEC;&#x5C31;&#x53EF;&#x4EE5;&#x88AB;&#x5220;&#x9664;&#xFF0C;&#x6216;&#x8005;&#x8BF4;&#x88AB;&#x91CA;&#x653E;&#x3002;&#x4F46;&#x662F;&#x91CA;&#x653E;&#x5230;&#x54EA;&#x91CC;&#x5462;&#xFF1F;&#x8FD9;&#x4E9B;&#x201C;&#x5185;&#x5B58;&#x201D;&#x662F;&#x54EA;&#x91CC;&#x6765;&#x7684;&#x5462;&#xFF1F;</p>
<p>&#x5728;&#x4F60;&#x8FD0;&#x884C;&#x4F60;&#x7684;Python&#x7A0B;&#x5E8F;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5728;&#x4F60;&#x7684;&#x7535;&#x8111;&#x7684;&#x67D0;&#x4E2A;&#x5730;&#x65B9;&#xFF0C;&#x6709;&#x4E00;&#x4E2A;&#x7269;&#x7406;&#x8BBE;&#x5907;&#x5B58;&#x50A8;&#x7740;&#x4F60;&#x7684;&#x6570;&#x636E;&#x3002;&#x4F46;&#x662F;&#x5728;&#x5BF9;&#x8C61;&#x5B9E;&#x9645;&#x5230;&#x8FBE;&#x786C;&#x4EF6;&#x4E4B;&#x524D;&#xFF0C;Python&#x4EE3;&#x7801;&#x8981;&#x7ECF;&#x8FC7;&#x5F88;&#x591A;&#x5C42;&#x7684;&#x62BD;&#x8C61;&#x3002;</p>
<p>&#x8FD9;&#x4E9B;&#x786C;&#x4EF6;&#xFF08;&#x6BD4;&#x5982;&#x5185;&#x5B58;&#x6216;&#x8005;&#x786C;&#x76D8;&#xFF09;&#x4E0A;&#x7684;&#x62BD;&#x8C61;&#x5C42;&#x4E2D;&#x6700;&#x4E3B;&#x8981;&#x7684;&#x4E00;&#x5C42;&#x5C31;&#x662F;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#xFF0C;&#x7531;&#x5B83;&#x6765;&#x6267;&#x884C;&#xFF08;&#x6216;&#x8005;&#x62D2;&#x7EDD;&#xFF09;&#x5BF9;&#x5185;&#x5B58;&#x7684;&#x8BFB;&#x5199;&#x8BF7;&#x6C42;&#x3002;</p>
<p>&#x5728;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x4E4B;&#x4E0A;&#x5C31;&#x662F;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#xFF0C;&#x6BD4;&#x5982;&#x9ED8;&#x8BA4;&#x7684;Python&#x5B9E;&#x73B0;&#x3002;&#x4F60;&#x7684;Python&#x4EE3;&#x7801;&#x7684;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x662F;&#x7531;&#x8FD9;&#x4E2A;Python&#x7A0B;&#x5E8F;&#x6765;&#x5904;&#x7406;&#x7684;&#xFF0C;&#x5176;&#x4E2D;&#x7528;&#x5230;&#x7684;&#x7B97;&#x6CD5;&#x548C;&#x6570;&#x636E;&#x7ED3;&#x6784;&#x5C31;&#x662F;&#x8FD9;&#x7BC7;&#x6587;&#x7AE0;&#x7684;&#x91CD;&#x70B9;&#x3002;</p>
<h2 id="python">&#x9ED8;&#x8BA4;&#x7684;Python&#x5B9E;&#x73B0;</h2>
<p>CPython&#x662F;&#x9ED8;&#x8BA4;&#x7684;Python&#x5B9E;&#x73B0;&#xFF0C;&#x5B83;&#x5B9E;&#x9645;&#x4E0A;&#x662F;&#x7531;C&#x8BED;&#x8A00;&#x5199;&#x7684;&#x3002;</p>
<p>&#x5F53;&#x6211;&#x7B2C;&#x4E00;&#x6B21;&#x542C;&#x5230;&#x8FD9;&#x4E00;&#x70B9;&#x7684;&#x65F6;&#x5019;&#x5F88;&#x60CA;&#x8BB6;&#xFF0C;&#x4E00;&#x4E2A;&#x8BED;&#x8A00;&#x7ADF;&#x7136;&#x662F;&#x7528;&#x53E6;&#x4E00;&#x4E2A;&#x8BED;&#x8A00;&#x5199;&#x7684;&#xFF1F;&#x597D;&#x5427;&#xFF0C;&#x4E0D;&#x5168;&#x662F;&#xFF0C;&#x4F46;&#x662F;&#x6709;&#x4E00;&#x70B9;&#x3002;</p>
<p>Python&#x8BED;&#x8A00;&#x5B9A;&#x4E49;&#x5728;&#x7528;&#x82F1;&#x6587;&#x5199;&#x7684;<a href="https://docs.python.org/3/reference/index.html">&#x53C2;&#x8003;&#x624B;&#x518C;</a>&#x4E2D;&#xFF08;&#x8BD1;&#x8005;&#xFF1A;&#x73B0;&#x5728;&#x5927;&#x90E8;&#x5206;&#x7684;Python&#x6587;&#x6863;&#x90FD;&#x5DF2;&#x7ECF;&#x6709;&#x4E86;&#x4E2D;&#x6587;&#x7FFB;&#x8BD1;&#xFF0C;&#x5728;&#x5B98;&#x7F51;&#x6587;&#x6863;&#x7684;&#x5DE6;&#x4E0A;&#x89D2;&#x9009;&#x62E9;&#x7B80;&#x4F53;&#x4E2D;&#x6587;&#x5373;&#x53EF;&#x770B;&#x5230;&#xFF09;&#x3002;&#x7136;&#x800C;&#x8FD9;&#x4E2A;&#x624B;&#x518C;&#x81EA;&#x8EAB;&#x5E76;&#x975E;&#x4E07;&#x80FD;&#xFF0C;&#x4F60;&#x9700;&#x8981;&#x4E00;&#x4E9B;&#x4E1C;&#x897F;&#xFF0C;&#x6765;&#x6309;&#x7167;&#x624B;&#x518C;&#x4E2D;&#x7684;&#x89C4;&#x5219;&#x89E3;&#x91CA;&#x4F60;&#x6240;&#x5199;&#x7684;&#x4EE3;&#x7801;&#xFF0C;&#x53E6;&#x5916;&#x8FD8;&#x9700;&#x8981;&#x4E00;&#x4E9B;&#x4E1C;&#x897F;&#x6765;&#x5728;&#x8BA1;&#x7B97;&#x673A;&#x4E0A;&#x6267;&#x884C;&#x89E3;&#x91CA;&#x540E;&#x7684;&#x4EE3;&#x7801;&#x3002;&#x9ED8;&#x8BA4;&#x7684;Python&#x5B9E;&#x73B0;&#x6EE1;&#x8DB3;&#x4E86;&#x8FD9;&#x4E24;&#x70B9;&#x9700;&#x6C42;&#xFF1A;&#x5B83;&#x5C06;&#x4F60;&#x7684;Python&#x4EE3;&#x7801;&#x8F6C;&#x6362;&#x6210;&#x6307;&#x4EE4;&#xFF0C;&#x7136;&#x540E;&#x518D;&#x4E00;&#x4E2A;&#x865A;&#x62DF;&#x673A;&#x4E0A;&#x8FD0;&#x884C;&#x8FD9;&#x4E9B;&#x6307;&#x4EE4;&#x3002;</p>
<blockquote>
<p>&#x63D0;&#x793A;&#xFF1A;&#x865A;&#x62DF;&#x673A;&#x7C7B;&#x4F3C;&#x7269;&#x7406;&#x673A;&#x5668;&#xFF0C;&#x4F46;&#x662F;&#x4F7F;&#x7528;&#x8F6F;&#x4EF6;&#x5B9E;&#x73B0;&#x7684;&#x3002;&#x5B83;&#x4EEC;&#x4E00;&#x822C;&#x5904;&#x7406;&#x7C7B;&#x4F3C;&#x6C47;&#x7F16;&#x6307;&#x4EE4;&#x7684;&#x57FA;&#x7840;&#x6307;&#x4EE4;&#x3002;</p>
</blockquote>
<p>Python&#x662F;&#x4E00;&#x4E2A;&#x89E3;&#x91CA;&#x578B;&#x7684;&#x8BED;&#x8A00;&#xFF0C;&#x4F60;&#x7684;&#x4EE3;&#x7801;&#x5B9E;&#x9645;&#x4E0A;&#x88AB;&#x7F16;&#x8BD1;&#x6210;<a href="https://docs.python.org/3/glossary.html#term-bytecode">&#x5B57;&#x8282;&#x7801;</a>&#xFF0C;&#x5B83;&#x4EEC;&#x662F;&#x66F4;&#x5BB9;&#x6613;&#x88AB;&#x8BA1;&#x7B97;&#x673A;&#x8BC6;&#x522B;&#x7684;&#x6307;&#x4EE4;&#xFF0C;&#x8FD9;&#x4E9B;&#x6307;&#x4EE4;&#x4F1A;&#x5728;&#x8FD0;&#x884C;&#x65F6;&#x88AB;&#x4E00;&#x4E2A;&#x865A;&#x62DF;&#x673A;&#x89E3;&#x91CA;&#x3002;</p>
<p>&#x4F60;&#x662F;&#x5426;&#x770B;&#x5230;&#x8FC7;<code>.pyc</code>&#x6587;&#x4EF6;&#x6216;&#x8005;<code>__pycache__</code>&#x76EE;&#x5F55;&#xFF1F;&#x90A3;&#x5C31;&#x662F;&#x88AB;&#x865A;&#x62DF;&#x673A;&#x89E3;&#x91CA;&#x7684;&#x5B57;&#x8282;&#x7801;&#x3002;</p>
<p>&#x9700;&#x8981;&#x6CE8;&#x610F;&#x7684;&#x4E00;&#x70B9;&#x662F;&#xFF0C;&#x9664;&#x4E86;CPython&#xFF0C;&#x8FD8;&#x6709;&#x5F88;&#x591A;&#x4E0D;&#x540C;&#x7684;&#x5B9E;&#x73B0;&#x3002;IronPython&#xFF08;&#x5C06;Python&#x4EE3;&#x7801;&#xFF09;&#x7F16;&#x8BD1;&#x6210;&#x5FAE;&#x8F6F;&#x7684;&#x901A;&#x7528;&#x8BED;&#x8A00;&#x8FD0;&#x884C;&#x65F6;&#xFF1B;Jython&#x7F16;&#x8BD1;&#x6210;Java&#x7684;&#x5B57;&#x8282;&#x7801;&#x4EE5;&#x5728;JVM&#x4E0A;&#x8FD0;&#x884C;&#xFF1B;&#x8FD8;&#x6709;PyPy&#xFF0C;&#x4F46;&#x8FD9;&#x503C;&#x5F97;&#x4E00;&#x6574;&#x7BC7;&#x6587;&#x7AE0;&#x6765;&#x5199;&#x4E86;&#xFF0C;&#x6240;&#x4EE5;&#x5728;&#x8FD9;&#x91CC;&#x6211;&#x53EA;&#x662F;&#x987A;&#x5E26;&#x4E00;&#x63D0;&#x3002;</p>
<p>&#x51FA;&#x4E8E;&#x672C;&#x6587;&#x7684;&#x76EE;&#x7684;&#xFF0C;&#x6211;&#x5C06;&#x91CD;&#x70B9;&#x4ECB;&#x7ECD;Python&#x7684;&#x9ED8;&#x8BA4;&#x5B9E;&#x73B0;&#xFF1A;CPython&#x7684;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x3002;</p>
<blockquote>
<p>&#x514D;&#x8D23;&#x58F0;&#x660E;&#xFF1A;&#x5C3D;&#x7BA1;&#x672C;&#x6587;&#x7684;&#x5927;&#x591A;&#x6570;&#x5185;&#x5BB9;&#x4F1A;&#x4FDD;&#x7559;&#x5230;&#x65B0;&#x7248;&#x672C;&#x7684;Python&#x4E2D;&#xFF0C;&#x4F46;&#x672A;&#x6765;&#x60C5;&#x51B5;&#x4ECD;&#x6709;&#x53EF;&#x80FD;&#x53D8;&#x5316;&#x3002;&#x8FD9;&#x7BC7;&#x6587;&#x7AE0;&#x7684;&#x53C2;&#x8003;&#x7248;&#x672C;&#x662F;&#x5F53;&#x524D;&#x7684;&#x6700;&#x65B0;&#x7248;Python 3.7&#x3002;</p>
</blockquote>
<p>&#x597D;&#x7684;&#xFF0C;&#x73B0;&#x5728;&#x6211;&#x4EEC;&#x660E;&#x767D;&#x4E86;CPython&#x662F;&#x7528;C&#x8BED;&#x8A00;&#x5199;&#x7684;&#xFF0C;&#x5E76;&#x4E14;&#x5B83;&#x89E3;&#x91CA;Python&#x7684;&#x5B57;&#x8282;&#x7801;&#x3002;&#x90A3;&#x8FD9;&#x4E0E;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x6709;&#x4EC0;&#x4E48;&#x5173;&#x7CFB;&#x5462;&#xFF1F;&#x597D;&#x5427;&#xFF0C;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x7684;&#x7B97;&#x6CD5;&#x548C;&#x6570;&#x636E;&#x7ED3;&#x6784;&#x5B58;&#x5728;&#x4E8E;CPython&#x7684;&#x5B9E;&#x73B0;&#x4EE3;&#x7801;&#x4E2D;&#xFF0C;&#x90A3;&#x662F;&#x7528;C&#x8BED;&#x8A00;&#x5199;&#x7684;&#x3002;&#x4E3A;&#x4E86;&#x7406;&#x89E3;Python&#x7684;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#xFF0C;&#x4F60;&#x5FC5;&#x987B;&#x9996;&#x5148;&#x5BF9;CPython&#x81EA;&#x8EAB;&#x6709;&#x8D77;&#x7801;&#x7684;&#x4E86;&#x89E3;&#x3002;</p>
<p>CPython&#x662F;&#x7528;C&#x5199;&#x7684;&#xFF0C;&#x800C;C&#x8BED;&#x8A00;&#x5E76;&#x975E;&#x539F;&#x751F;&#x5730;&#x652F;&#x6301;&#x9762;&#x5411;&#x5BF9;&#x8C61;&#x7F16;&#x7A0B;&#x3002;&#x56E0;&#x6B64;&#xFF0C;&#x5728;CPython&#x7684;&#x5B9E;&#x73B0;&#x4E2D;&#x6709;&#x4E00;&#x4E9B;&#x6709;&#x610F;&#x601D;&#x7684;&#x8BBE;&#x8BA1;&#x3002;</p>
<p>&#x4F60;&#x53EF;&#x80FD;&#x542C;&#x8BF4;&#x8FC7;&#x5728;Python&#x4E2D;&#x4E00;&#x5207;&#x90FD;&#x662F;&#x5BF9;&#x8C61;&#xFF0C;&#x5305;&#x62EC;<code>int</code>&#x548C;<code>str</code>&#x4E4B;&#x7C7B;&#x7684;&#x7C7B;&#x578B;&#xFF0C;&#x5728;CPython&#x7684;&#x5B9E;&#x73B0;&#x7EA7;&#x522B;&#x4E0A;&#x6765;&#x8BF4;&#x7684;&#x786E;&#x5982;&#x6B64;&#xFF0C;&#x6709;&#x4E00;&#x4E2A;&#x79F0;&#x4E3A;<code>PyObject</code>&#x7684;&#x7ED3;&#x6784;&#x4F53;&#xFF0C;CPython&#x4E2D;&#x6240;&#x6709;&#x5176;&#x4ED6;&#x5BF9;&#x8C61;&#x90FD;&#x4F1A;&#x4F7F;&#x7528;&#x8FD9;&#x4E2A;&#x7ED3;&#x6784;&#x3002;</p>
<p>&#x8FD9;&#x4E2A;<code>PyObject</code>&#x662F;Python&#x4E2D;&#x6240;&#x6709;&#x5BF9;&#x8C61;&#x7684;&#x7956;&#x7236;&#xFF0C;&#x5176;&#x4E2D;&#x5305;&#x542B;&#x4E86;&#x4E24;&#x4E2A;&#x4E1C;&#x897F;&#xFF1A;</p>
<ul>
<li><code>ob_refcnt</code>&#xFF1A;&#x5F15;&#x7528;&#x8BA1;&#x6570;</li>
<li><code>ob_type</code>&#xFF1A;&#x53E6;&#x4E00;&#x4E2A;&#x7C7B;&#x578B;&#x7684;&#x6307;&#x9488;</li>
</ul>
<p>&#x5F15;&#x7528;&#x8BA1;&#x6570;&#x5728;&#x5783;&#x573E;&#x56DE;&#x6536;&#x65F6;&#x88AB;&#x4F7F;&#x7528;&#xFF0C;&#x53E6;&#x5916;&#x8FD8;&#x6709;&#x4E00;&#x4E2A;&#x6307;&#x9488;&#xFF0C;&#x5B83;&#x6307;&#x5411;&#x5B9E;&#x9645;&#x7684;&#x5BF9;&#x8C61;&#x7C7B;&#x578B;&#xFF0C;&#x8FD9;&#x4E2A;&#x5BF9;&#x8C61;&#x7C7B;&#x578B;&#x5B9E;&#x9645;&#x4E0A;&#x4E5F;&#x662F;&#x53E6;&#x4E00;&#x4E2A;&#x7ED3;&#x6784;&#xFF0C;&#x7528;&#x6765;&#x63CF;&#x8FF0;&#x4E00;&#x4E2A;Python&#x5BF9;&#x8C61;&#xFF08;&#x6BD4;&#x5982;<code>dict</code>&#x6216;&#x8005;<code>int</code>&#xFF09;&#x3002;</p>
<p>&#x6BCF;&#x4E2A;&#x5BF9;&#x8C61;&#x6709;&#x5B83;&#x81EA;&#x5DF1;&#x7684;&#x5BF9;&#x8C61;&#x5185;&#x5B58;&#x5206;&#x914D;&#x5668;&#xFF0C;&#x5B83;&#x77E5;&#x9053;&#x5982;&#x4F55;&#x83B7;&#x53D6;&#x5185;&#x5B58;&#x6765;&#x5B58;&#x50A8;&#x8FD9;&#x4E2A;&#x5BF9;&#x8C61;&#x3002;&#x6BCF;&#x4E2A;&#x5BF9;&#x8C61;&#x4E5F;&#x6709;&#x4E00;&#x4E2A;&#x7279;&#x5B9A;&#x4E8E;&#x5BF9;&#x8C61;&#x5185;&#x5B58;&#x91CA;&#x653E;&#x5668;&#xFF0C;&#x5B83;&#x4F1A;&#x5728;&#x5BF9;&#x8C61;&#x4E0D;&#x518D;&#x9700;&#x8981;&#x7684;&#x65F6;&#x5019;&#x201C;&#x91CA;&#x653E;&#x201D;&#x6389;&#x5185;&#x5B58;&#x3002;</p>
<p>&#x7136;&#x800C;&#xFF0C;&#x5728;&#x6240;&#x6709;&#x5173;&#x4E8E;&#x5185;&#x5B58;&#x5206;&#x914D;&#x548C;&#x91CA;&#x653E;&#x7684;&#x8BA8;&#x8BBA;&#x4E2D;&#xFF0C;&#x6709;&#x4E00;&#x4E2A;&#x91CD;&#x8981;&#x7684;&#x56E0;&#x7D20;&#xFF1A;&#x5185;&#x5B58;&#x65F6;&#x8BA1;&#x7B97;&#x673A;&#x4E2D;&#x7684;&#x5171;&#x4EAB;&#x8D44;&#x6E90;&#xFF0C;&#x5982;&#x679C;&#x4E24;&#x4E2A;&#x8FDB;&#x7A0B;&#x5C1D;&#x8BD5;&#x53BB;&#x540C;&#x65F6;&#x5199;&#x5165;&#x540C;&#x4E00;&#x4E2A;&#x5730;&#x65B9;&#x5C31;&#x7CDF;&#x7CD5;&#x4E86;&#x3002;</p>
<h2 id="gil">&#x5168;&#x5C40;&#x89E3;&#x91CA;&#x5668;&#x9501;&#xFF08;GIL&#xFF09;</h2>
<p>GIL&#x5C31;&#x662F;&#x5904;&#x7406;&#x5171;&#x4EAB;&#x8D44;&#x6E90;&#x7684;&#x5E38;&#x89C1;&#x95EE;&#x9898;&#xFF08;&#x6BD4;&#x5982;&#x8BA1;&#x7B97;&#x673A;&#x7684;&#x5185;&#x5B58;&#xFF09;&#x7684;&#x4E00;&#x4E2A;&#x89E3;&#x51B3;&#x65B9;&#x6848;&#x3002;&#x5F53;&#x4E24;&#x4E2A;&#x7EBF;&#x7A0B;&#x540C;&#x65F6;&#x5C1D;&#x8BD5;&#x66F4;&#x6539;&#x540C;&#x4E00;&#x4E2A;&#x8D44;&#x6E90;&#x65F6;&#xFF0C;&#x4ED6;&#x4EEC;&#x53EF;&#x80FD;&#x8E29;&#x5230;&#x5BF9;&#x65B9;&#x7684;&#x811A;&#x8DBE;&#x5934;&#x3002;&#x6700;&#x7EC8;&#x7684;&#x7ED3;&#x679C;&#x53EF;&#x80FD;&#x5F88;&#x6DF7;&#x4E71;&#xFF0C;&#x4E24;&#x4E2A;&#x7EBF;&#x7A0B;&#x90FD;&#x6CA1;&#x6709;&#x5F97;&#x5230;&#x4ED6;&#x4EEC;&#x60F3;&#x8981;&#x7684;&#x7ED3;&#x679C;&#x3002;</p>
<p>&#x518D;&#x60F3;&#x4E00;&#x60F3;&#x90A3;&#x4E2A;&#x4E66;&#x672C;&#x7684;&#x6BD4;&#x55BB;&#x3002;&#x5047;&#x8BBE;&#x6709;&#x4E24;&#x4E2A;&#x4F5C;&#x8005;&#x56FA;&#x6267;&#x5730;&#x8BA4;&#x4E3A;&#x8BE5;&#x4ED6;&#x4EEC;&#x5199;&#x4E86;&#xFF0C;&#x5E76;&#x4E14;&#x4E24;&#x4E2A;&#x4EBA;&#x60F3;&#x8981;&#x540C;&#x65F6;&#x5411;&#x540C;&#x4E00;&#x4E2A;&#x4E66;&#x9875;&#x4E2D;&#x5199;&#x5165;&#x3002;</p>
<p>&#x4ED6;&#x4EEC;&#x90FD;&#x5FFD;&#x7565;&#x4E86;&#x5BF9;&#x65B9;&#x7684;&#x521B;&#x4F5C;&#x6545;&#x4E8B;&#x7684;&#x4F01;&#x56FE;&#xFF0C;&#x7136;&#x540E;&#x5F00;&#x59CB;&#x4E86;&#x5411;&#x9875;&#x9762;&#x7684;&#x5199;&#x5165;&#x3002;&#x6700;&#x7EC8;&#x7684;&#x7ED3;&#x679C;&#x5C31;&#x662F;&#x4E24;&#x4E2A;&#x6545;&#x4E8B;&#x4E92;&#x76F8;&#x91CD;&#x53E0;&#xFF0C;&#x5BFC;&#x81F4;&#x6574;&#x4E2A;&#x9875;&#x9762;&#x5B8C;&#x5168;&#x65E0;&#x6CD5;&#x9605;&#x8BFB;&#x3002;</p>
<p>&#x8FD9;&#x4E2A;&#x95EE;&#x9898;&#x7684;&#x89E3;&#x51B3;&#x65B9;&#x6848;&#x4E4B;&#x4E00;&#x662F;&#xFF0C;&#x5F53;&#x7EBF;&#x7A0B;&#x4E0E;&#x5171;&#x4EAB;&#x8D44;&#x6E90;&#xFF08;&#x4E66;&#x9875;&#xFF09;&#x8FDB;&#x884C;&#x4EA4;&#x4E92;&#x65F6;&#xFF0C;&#x5728;&#x89E3;&#x91CA;&#x5668;&#x4E0A;&#x8FDB;&#x884C;&#x7684;&#x5355;&#x4E2A;&#x5168;&#x5C40;&#x9501;&#x5B9A;&#x3002;&#x6362;&#x53E5;&#x8BDD;&#x8BF4;&#xFF0C;&#x540C;&#x65F6;&#x53EA;&#x6709;&#x4E00;&#x4E2A;&#x4F5C;&#x8005;&#x53EF;&#x4EE5;&#x5199;&#x5165;&#x3002;</p>
<p>Python&#x7684;GIL&#x901A;&#x8FC7;&#x9501;&#x5B9A;&#x6574;&#x4E2A;&#x89E3;&#x91CA;&#x5668;&#x6765;&#x5B9E;&#x73B0;&#x8FD9;&#x4E00;&#x70B9;&#xFF0C;&#x8FD9;&#x610F;&#x5473;&#x7740;&#x53E6;&#x4E00;&#x4E2A;&#x7EBF;&#x7A0B;&#x4E0D;&#x53EF;&#x80FD;&#x62A2;&#x5360;&#x5F53;&#x524D;&#x7684;&#x7EBF;&#x7A0B;&#x3002;&#x5F53;CPython&#x5904;&#x7406;&#x5185;&#x5B58;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5B83;&#x5229;&#x7528;GIL&#x6765;&#x4FDD;&#x8BC1;&#x64CD;&#x4F5C;&#x7684;&#x5B89;&#x5168;&#x3002;</p>
<p>&#x8FD9;&#x79CD;&#x65B9;&#x5F0F;&#x6709;&#x5229;&#x6709;&#x5F0A;&#xFF0C;&#x5728;Python&#x793E;&#x533A;&#x4E2D;CIL&#x53D7;&#x5230;&#x4E86;&#x5F88;&#x5927;&#x7684;&#x8D28;&#x7591;&#x3002;&#x8981;&#x60F3;&#x4E86;&#x89E3;&#x66F4;&#x591A;&#x5173;&#x4E8E;CIL&#x7684;&#x5185;&#x5BB9;&#xFF0C;&#x6211;&#x5EFA;&#x8BAE;&#x9605;&#x8BFB;<a href="https://realpython.com/python-gil/">What is the Python Global Interpreter Lock (GIL)?</a></p>
<h2 id>&#x5783;&#x573E;&#x56DE;&#x6536;</h2>
<p>&#x6211;&#x4EEC;&#x518D;&#x6765;&#x56DE;&#x987E;&#x90A3;&#x4E2A;&#x4E66;&#x672C;&#x7684;&#x6BD4;&#x55BB;&#x3002;&#x5047;&#x8BBE;&#x4E66;&#x4E2D;&#x6709;&#x4E00;&#x4E9B;&#x6545;&#x4E8B;&#x5DF2;&#x7ECF;&#x5F88;&#x8001;&#x4E86;&#xFF0C;&#x6CA1;&#x6709;&#x4EBA;&#x6B63;&#x5728;&#x9605;&#x8BFB;&#x548C;&#x5F15;&#x7528;&#x8FD9;&#x4E9B;&#x6545;&#x4E8B;&#x4E86;&#xFF0C;&#x8FD9;&#x65F6;&#x5019;&#x4F60;&#x5C31;&#x53EF;&#x4EE5;&#x4E22;&#x6389;&#x5B83;&#x4EEC;&#x6765;&#x4E3A;&#x65B0;&#x7684;&#x6545;&#x4E8B;&#x817E;&#x51FA;&#x7A7A;&#x95F4;&#x4E86;&#x3002;</p>
<p>&#x90A3;&#x4E9B;&#x65E7;&#x7684;&#x3001;&#x4E0D;&#x518D;&#x88AB;&#x5F15;&#x7528;&#x7684;&#x6545;&#x4E8B;&#x53EF;&#x4EE5;&#x4E0E;Python&#x4E2D;&#x5F15;&#x7528;&#x8BA1;&#x6570;&#x964D;&#x4E3A;0&#x7684;&#x5BF9;&#x8C61;&#x4F5C;&#x7C7B;&#x6BD4;&#x3002;&#x8BB0;&#x4F4F;Python&#x4E2D;&#x7684;&#x6BCF;&#x4E2A;&#x5BF9;&#x8C61;&#x90FD;&#x6709;&#x4E00;&#x4E2A;&#x5F15;&#x7528;&#x8BA1;&#x6570;&#x548C;&#x6307;&#x5411;&#x7C7B;&#x578B;&#x7684;&#x6307;&#x9488;&#x3002;</p>
<p>&#x5F15;&#x7528;&#x8BA1;&#x6570;&#x4F1A;&#x56E0;&#x4E3A;&#x4E0D;&#x540C;&#x7684;&#x539F;&#x56E0;&#x800C;&#x589E;&#x957F;&#x3002;&#x6BD4;&#x5982;&#xFF0C;&#x5F53;&#x4F60;&#x5C06;&#x4E00;&#x4E2A;&#x5BF9;&#x8C61;&#x8D4B;&#x7ED9;&#x53E6;&#x4E00;&#x4E2A;&#x53D8;&#x91CF;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5F15;&#x7528;&#x8BA1;&#x6570;&#x5C31;&#x4F1A;&#x52A0;&#x4E00;&#xFF1A;</p>
<pre><code class="language-python">numbers = [1, 2, 3]
## &#x5F15;&#x7528;&#x8BA1;&#x6570; = 1
more_numbers = numbers
## &#x5F15;&#x7528;&#x8BA1;&#x6570; = 2
</code></pre>
<p>&#x628A;&#x4E00;&#x4E2A;&#x5BF9;&#x8C61;&#x4F5C;&#x4E3A;&#x53C2;&#x6570;&#x4F20;&#x9012;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5F15;&#x7528;&#x8BA1;&#x6570;&#x4E5F;&#x4F1A;&#x589E;&#x52A0;&#xFF1A;</p>
<pre><code class="language-python">total = sum(numbers)
</code></pre>
<p>&#x6700;&#x540E;&#x4E00;&#x4E2A;&#x4F8B;&#x5B50;&#x662F;&#xFF0C;&#x5F53;&#x4E00;&#x4E2A;&#x5BF9;&#x8C61;&#x5305;&#x542B;&#x5728;&#x4E00;&#x4E2A;&#x5217;&#x8868;&#x4E2D;&#xFF0C;&#x5B83;&#x7684;&#x5F15;&#x7528;&#x8BA1;&#x6570;&#x4E5F;&#x4F1A;&#x589E;&#x52A0;&#xFF1A;</p>
<pre><code class="language-python">matrix = [numbers, numbers, numbers]
</code></pre>
<p>Python&#x5141;&#x8BB8;&#x901A;&#x8FC7;<code>sys</code>&#x6A21;&#x5757;&#x6765;&#x67D0;&#x4E2A;&#x5BF9;&#x8C61;&#x68C0;&#x67E5;&#x5F53;&#x524D;&#x7684;&#x5F15;&#x7528;&#x8BA1;&#x6570;&#xFF0C;&#x4F60;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;<code>sys.getrefcount(numbers)</code>&#x6765;&#x83B7;&#x53D6;&#xFF0C;&#x4F46;&#x662F;&#x8BB0;&#x4F4F;&#x628A;&#x5BF9;&#x8C61;&#x4F20;&#x9012;&#x7ED9;<code>getrefcount()</code>&#x51FD;&#x6570;&#x4F1A;&#x4F7F;&#x5F15;&#x7528;&#x8BA1;&#x6570;&#x589E;&#x52A0;1&#x3002;</p>
<p>&#x65E0;&#x8BBA;&#x90A3;&#x79CD;&#x60C5;&#x51B5;&#xFF0C;&#x5982;&#x679C;&#x4E00;&#x4E2A;&#x5BF9;&#x8C61;&#x4ECD;&#x7136;&#x88AB;&#x4F60;&#x7684;&#x4EE3;&#x7801;&#x9700;&#x8981;&#xFF0C;&#x5B83;&#x7684;&#x5F15;&#x7528;&#x8BA1;&#x6570;&#x5C31;&#x4F1A;&#x5927;&#x4E8E;0&#x3002;&#x4E00;&#x65E6;&#x5B83;&#x964D;&#x5230;0&#xFF0C;&#x8FD9;&#x4E2A;&#x5BF9;&#x8C61;&#x5BF9;&#x5E94;&#x7684;&#x91CA;&#x653E;&#x51FD;&#x6570;&#x5C06;&#x4F1A;&#x88AB;&#x8C03;&#x7528;&#xFF0C;&#x201C;&#x91CA;&#x653E;&#x201D;&#x5185;&#x5B58;&#x6765;&#x8BA9;&#x5176;&#x4ED6;&#x7684;&#x5BF9;&#x8C61;&#x4F7F;&#x7528;&#x3002;</p>
<p>&#x4F46;&#x662F;&#x201C;&#x91CA;&#x653E;&#x201D;&#x5185;&#x5B58;&#x662F;&#x4EC0;&#x4E48;&#x610F;&#x601D;&#x5462;&#xFF1F;&#x5176;&#x4ED6;&#x7684;&#x5BF9;&#x8C61;&#x5982;&#x4F55;&#x4F7F;&#x7528;&#x5B83;&#xFF1F;&#x8BA9;&#x6211;&#x4EEC;&#x8FDB;&#x5165;CPython&#x7684;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x3002;</p>
<h2 id="cpython">CPython&#x7684;&#x5185;&#x5B58;&#x7BA1;&#x7406;</h2>
<p>&#x6211;&#x4EEC;&#x5C06;&#x6DF1;&#x5165;CPython&#x7684;&#x5185;&#x5B58;&#x67B6;&#x6784;&#x548C;&#x7B97;&#x6CD5;&#xFF0C;&#x7CFB;&#x597D;&#x5B89;&#x5168;&#x5E26;&#xFF01;</p>
<p>&#x5C31;&#x50CF;&#x4E4B;&#x524D;&#x63D0;&#x5230;&#x7684;&#x90A3;&#x6837;&#xFF0C;&#x4ECE;&#x786C;&#x4EF6;&#x5230;CPython&#x4E4B;&#x95F4;&#x6709;&#x5F88;&#x591A;&#x5C42;&#x7684;&#x62BD;&#x8C61;&#x3002;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x62BD;&#x8C61;&#x7269;&#x7406;&#x5185;&#x5B58;&#xFF0C;&#x5E76;&#x521B;&#x5EFA;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#xFF08;&#x5305;&#x62EC;Python&#xFF09;&#x53EF;&#x8BBF;&#x95EE;&#x7684;&#x865A;&#x62DF;&#x5185;&#x5B58;&#x5C42;&#x3002;</p>
<p>&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x7684;&#x865A;&#x62DF;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x5668;&#x4E3A;Python&#x7684;&#x8FDB;&#x7A0B;&#x5206;&#x914D;&#x4E86;&#x4E00;&#x5927;&#x5757;&#x5185;&#x5B58;&#x3002;&#x4E0B;&#x9762;&#x8FD9;&#x5F20;&#x56FE;&#x7247;&#x4E2D;&#x7684;&#x7070;&#x8272;&#x533A;&#x57DF;&#x6B63;&#x5728;&#x88AB;Python&#x8FDB;&#x7A0B;&#x6240;&#x62E5;&#x6709;&#x3002;</p>
<p><img src="http://oss.ykai.top/%5B%E7%BF%BB%E8%AF%91%5DPython%E7%9A%84%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/memory_management.webp" alt loading="lazy"></p>
<p>Python&#x5C06;&#x4E00;&#x90E8;&#x5206;&#x5185;&#x5B58;&#x7528;&#x4E8E;&#x5185;&#x90E8;&#x4F7F;&#x7528;&#x548C;&#x975E;&#x5BF9;&#x8C61;&#x5185;&#x5B58;&#xFF0C;&#x53E6;&#x4E00;&#x90E8;&#x5206;&#x7528;&#x4E8E;&#x5BF9;&#x8C61;&#x7684;&#x5B58;&#x50A8;&#xFF08;&#x4F60;&#x7684;<code>int</code>&#xFF0C;<code>dict</code>&#x7B49;&#x7B49;&#xFF09;&#x3002;&#x6CE8;&#x610F;&#x8FD9;&#x662F;&#x88AB;&#x7B80;&#x5316;&#x4E4B;&#x540E;&#x7684;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x60F3;&#x8981;&#x5B8C;&#x6574;&#x7684;&#x56FE;&#x7247;&#xFF0C;&#x4F60;&#x53EF;&#x4EE5;&#x67E5;&#x770B;<a href="https://github.com/python/cpython/blob/7d6ddb96b34b94c1cbdf95baa94492c48426404e/Objects/obmalloc.c">CPython&#x7684;&#x6E90;&#x4EE3;&#x7801;</a>&#xFF0C;&#x90A3;&#x91CC;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x6240;&#x6709;&#x7684;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x8FC7;&#x7A0B;&#x3002;</p>
<p>CPython&#x6709;&#x4E00;&#x4E2A;&#x5BF9;&#x8C61;&#x5206;&#x914D;&#x5668;&#xFF0C;&#x5B83;&#x7684;&#x804C;&#x8D23;&#x662F;&#x5728;&#x4E0A;&#x8FF0;&#x7684;&#x5BF9;&#x8C61;&#x5185;&#x5B58;&#x533A;&#x57DF;&#xFF08;&#x8BD1;&#x8005;&#xFF1A;&#x7EFF;&#x8272;&#x533A;&#x57DF;&#xFF09;&#x4E2D;&#x5206;&#x914D;&#x5185;&#x5B58;&#x3002;&#x8FD9;&#x4E2A;&#x5BF9;&#x8C61;&#x5206;&#x914D;&#x5668;&#x662F;&#x5927;&#x591A;&#x6570;&#x903B;&#x8F91;&#x53D1;&#x751F;&#x7684;&#x5730;&#x65B9;&#xFF0C;&#x6BCF;&#x5F53;&#x4E00;&#x4E2A;&#x65B0;&#x7684;&#x5BF9;&#x8C61;&#x9700;&#x8981;&#x7A7A;&#x95F4;&#x6216;&#x8005;&#x88AB;&#x5220;&#x9664;&#x7684;&#x65F6;&#x5019;&#x5B83;&#x5C31;&#x4F1A;&#x88AB;&#x8C03;&#x7528;&#x3002;</p>
<p>&#x4E00;&#x822C;&#x5730;&#xFF0C;&#x50CF;<code>list</code>&#x548C;<code>int</code>&#x8FD9;&#x6837;&#x7684;&#x5BF9;&#x8C61;&#xFF0C;&#x5728;&#x52A0;&#x5165;&#x6216;&#x8005;&#x5220;&#x9664;&#x6570;&#x636E;&#x7684;&#x65F6;&#x5019;&#x4E0D;&#x4F1A;&#x540C;&#x65F6;&#x6D89;&#x53CA;&#x5230;&#x5927;&#x91CF;&#x6570;&#x636E;&#xFF0C;&#x6240;&#x4EE5;&#x8FD9;&#x4E2A;&#x5206;&#x914D;&#x5176;&#x7684;&#x8BBE;&#x8BA1;&#x662F;&#x5728;&#x4E00;&#x6B21;&#x5904;&#x7406;&#x5C11;&#x91CF;&#x6570;&#x636E;&#x7684;&#x65F6;&#x5019;&#x5DE5;&#x4F5C;&#x826F;&#x597D;&#xFF0C;&#x540C;&#x65F6;&#xFF0C;&#x4E0D;&#x5230;&#x4E07;&#x4E0D;&#x5F97;&#x5DF2;&#xFF0C;&#x5B83;&#x4E5F;&#x4F1A;&#x5C3D;&#x53EF;&#x80FD;&#x5730;&#x5C1D;&#x8BD5;&#x4E0D;&#x53BB;&#x5206;&#x914D;&#x5185;&#x5B58;&#x3002;</p>
<p>&#x5728;<a href="https://github.com/python/cpython/blob/7d6ddb96b34b94c1cbdf95baa94492c48426404e/Objects/obmalloc.c">&#x6E90;&#x4EE3;&#x7801;</a>&#x91CC;&#x7684;&#x6CE8;&#x91CA;&#x63CF;&#x8FF0;&#x8FD9;&#x4E2A;&#x5206;&#x914D;&#x5668;&#x4E3A;&#xFF1A;&#x4E00;&#x4E2A;&#x4E13;&#x7528;&#x4E8E;&#x5C0F;&#x5757;&#x5185;&#x5B58;&#x5206;&#x914D;&#x7684;&#x5FEB;&#x901F;&#x5206;&#x914D;&#x5668;&#xFF0C;&#x57FA;&#x4E8E;&#x901A;&#x7528;&#x76EE;&#x7684;&#x7684;malloc&#x5206;&#x914D;&#x5668;&#x3002;&#x5176;&#x4E2D;&#xFF0C;<code>malloc</code>&#x662F;C&#x8BED;&#x8A00;&#x6807;&#x51C6;&#x5E93;&#x7684;&#x5185;&#x5B58;&#x5206;&#x914D;&#x51FD;&#x6570;&#xFF0E;</p>
<p>&#x73B0;&#x5728;&#x6211;&#x4EEC;&#x6765;&#x770B;&#x770B;CPython&#x7684;&#x5185;&#x5B58;&#x5206;&#x914D;&#x7B56;&#x7565;&#x3002;&#x9996;&#x5148;&#x6211;&#x4EEC;&#x8BA8;&#x8BBA;&#x4E09;&#x4E2A;&#x4E3B;&#x8981;&#x7684;&#x90E8;&#x5206;&#x4EE5;&#x53CA;&#x5B83;&#x4EEC;&#x4E4B;&#x95F4;&#x7684;&#x5173;&#x7CFB;&#x3002;</p>
<p><code>arena</code>&#x662F;&#x5185;&#x5B58;&#x4E2D;&#x6700;&#x5927;&#x5757;&#xFF0C;&#x5B83;&#x4F1A;&#x5BF9;&#x9F50;&#x5230;&#x5185;&#x5B58;&#x9875;&#x7684;&#x8FB9;&#x754C;&#x3002;&#x9875;&#x8FB9;&#x754C;&#x662F;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x6240;&#x4F7F;&#x7528;&#x7684;&#x5B9A;&#x957F;&#x8FDE;&#x7EED;&#x5185;&#x5B58;&#x5757;&#x7684;&#x8FB9;&#x7F18;&#xFF0C;Python&#x5047;&#x8BBE;&#x7CFB;&#x7EDF;&#x9875;&#x5927;&#x5C0F;&#x662F;256K&#x5B57;&#x8282;&#x3002;</p>
<p><img src="http://oss.ykai.top/%5B%E7%BF%BB%E8%AF%91%5DPython%E7%9A%84%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/memory_management_1.webp" alt loading="lazy"></p>
<p>&#x533A;&#x5757;&#x5185;&#x90E8;&#x662F;<code>pool</code>&#xFF0C;<code>pool</code>&#x662F;&#x4E00;&#x79CD;&#x865A;&#x62DF;&#x7684;&#x5185;&#x5B58;&#x9875;&#xFF08;4K&#x5B57;&#x8282;&#xFF09;&#x3002;&#x5C31;&#x50CF;&#x6211;&#x4EEC;&#x7684;&#x6BD4;&#x55BB;&#x4E2D;&#x7684;&#x4E66;&#x9875;&#xFF0C;&#x8FD9;&#x4E9B;<code>pool</code>&#x88AB;&#x5206;&#x5272;&#x6210;&#x8F83;&#x5C0F;&#x7684;&#x5185;&#x5B58;&#x5757;&#xFF08;<code>block</code>&#xFF09;&#x3002;</p>
<p>&#x7ED9;&#x5B9A;pool&#x4E2D;&#x7684;&#x6240;&#x6709;&#x7684;block&#x90FD;&#x6709;&#x7740;&#x76F8;&#x540C;&#x7684;&#x5927;&#x5C0F;&#x7EA7;&#x522B;&#x3002;&#x7ED9;&#x5B9A;&#x4E00;&#x5B9A;&#x5927;&#x5C0F;&#x7684;&#x8BF7;&#x6C42;&#x6570;&#x636E;&#xFF0C;&#x5BF9;&#x5E94;&#x7684;&#x5927;&#x5C0F;&#x7EA7;&#x522B;&#x5C31;&#x6307;&#x5B9A;&#x4E86;&#x56FA;&#x5B9A;&#x7684;block&#x5927;&#x5C0F;&#x3002;&#x4E0B;&#x9762;&#x8FD9;&#x5F20;&#x8868;&#x6765;&#x81EA;<a href="https://github.com/python/cpython/blob/7d6ddb96b34b94c1cbdf95baa94492c48426404e/Objects/obmalloc.c">&#x6E90;&#x4EE3;&#x7801;</a>&#x7684;&#x6CE8;&#x91CA;&#xFF1A;</p>
<table>
<thead>
<tr>
<th>&#x6570;&#x636E;&#x5927;&#x5C0F;&#xFF08;&#x5B57;&#x8282;&#xFF09;</th>
<th>&#x5757;&#x5927;&#x5C0F;</th>
<th>&#x5927;&#x5C0F;&#x7EA7;&#x522B;&#x5E8F;&#x53F7;</th>
</tr>
</thead>
<tbody>
<tr>
<td>1-8</td>
<td>8</td>
<td>0</td>
</tr>
<tr>
<td>9-16</td>
<td>16</td>
<td>1</td>
</tr>
<tr>
<td>17-24</td>
<td>24</td>
<td>2</td>
</tr>
<tr>
<td>25-32</td>
<td>32</td>
<td>3</td>
</tr>
<tr>
<td>33-40</td>
<td>40</td>
<td>4</td>
</tr>
<tr>
<td>41-48</td>
<td>48</td>
<td>5</td>
</tr>
<tr>
<td>49-56</td>
<td>56</td>
<td>6</td>
</tr>
<tr>
<td>57-64</td>
<td>64</td>
<td>7</td>
</tr>
<tr>
<td>65-72</td>
<td>72</td>
<td>8</td>
</tr>
<tr>
<td>&#x2026;</td>
<td>&#x2026;</td>
<td>&#x2026;</td>
</tr>
<tr>
<td>497-504</td>
<td>504</td>
<td>62</td>
</tr>
<tr>
<td>505-512</td>
<td>512</td>
<td>63</td>
</tr>
</tbody>
</table>
<p>&#x4F8B;&#x5982;&#xFF0C;&#x5982;&#x679C;&#x8BF7;&#x6C42;42&#x5B57;&#x8282;&#x7684;&#x6570;&#x636E;&#xFF0C;&#x8FD9;&#x4E9B;&#x6570;&#x636E;&#x5C06;&#x4F1A;&#x88AB;&#x653E;&#x7F6E;&#x5728;48&#x5B57;&#x8282;&#x5927;&#x5C0F;&#x7684;&#x5757;&#x4E2D;&#x3002;</p>
<h3 id="pools">Pools</h3>
<p>Pool&#x662F;&#x7531;&#x76F8;&#x540C;&#x5927;&#x5C0F;&#x7EA7;&#x522B;&#x7684;block&#x7EC4;&#x6210;&#x7684;&#xFF0C;&#x6BCF;&#x4E2A;pool&#x7EF4;&#x62A4;&#x4E86;&#x4E00;&#x4E2A;&#x53CC;&#x5411;&#x94FE;&#x8868;&#xFF0C;&#x8FDE;&#x63A5;&#x5230;&#x5176;&#x4ED6;&#x76F8;&#x540C;&#x5927;&#x5C0F;&#x7EA7;&#x522B;&#x7684;pool&#xFF0C;&#x56E0;&#x6B64;&#x7B97;&#x6CD5;&#x53EF;&#x4EE5;&#x5F88;&#x5BB9;&#x6613;&#x5730;&#x4E3A;&#x6240;&#x9700;&#x7684;&#x5757;&#x5927;&#x5C0F;&#x627E;&#x5230;&#x53EF;&#x7528;&#x7684;&#x7A7A;&#x95F4;&#xFF0C;&#x5373;&#x4F7F;&#x662F;&#x5728;&#x4E0D;&#x540C;&#x7684;pool&#x91CC;&#x9762;&#x3002;</p>
<p><code>usedpools</code>&#x94FE;&#x8868;&#x8DDF;&#x8E2A;&#x6709;&#x4E00;&#x5B9A;&#x7A7A;&#x95F4;&#x53EF;&#x7528;&#x7684;&#x5404;&#x4E2A;&#x7EA7;&#x522B;&#x7684;pool&#xFF0C;&#x5F53;&#x8BF7;&#x6C42;&#x67D0;&#x4E2A;&#x5757;&#x5927;&#x5C0F;&#x65F6;&#xFF0C;&#x7B97;&#x6CD5;&#x4F1A;&#x5728;&#x8FD9;&#x4E2A;<code>usedpools</code>&#x5217;&#x8868;&#x4E2D;&#x68C0;&#x67E5;&#x8FD9;&#x4E2A;&#x5757;&#x5927;&#x5C0F;&#x7684;pool&#x5217;&#x8868;&#x3002;</p>
<p>pool&#x4F1A;&#x5904;&#x4E8E;&#x4E09;&#x79CD;&#x72B6;&#x6001;&#xFF1A;<code>used</code>&#xFF0C;<code>full</code>&#x548C;<code>empty</code>&#x3002;<code>used</code>&#x72B6;&#x6001;&#x7684;pool&#x6709;&#x7740;&#x7A7A;&#x95F2;&#x7684;block&#x6765;&#x5B58;&#x50A8;&#x6570;&#x636E;&#xFF1B;<code>full</code>&#x72B6;&#x6001;&#x7684;pool&#x4E2D;&#x6240;&#x6709;&#x7684;block&#x90FD;&#x5DF2;&#x88AB;&#x5206;&#x914D;&#x51FA;&#x53BB;&#xFF0C;&#x5E76;&#x4E14;&#x5305;&#x542B;&#x7740;&#x6570;&#x636E;&#xFF1B;<code>empty</code>&#x72B6;&#x6001;&#x7684;pool&#x4E2D;&#x6CA1;&#x6709;&#x6570;&#x636E;&#xFF0C;&#x5728;&#x9700;&#x8981;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x53EF;&#x4EE5;&#x5206;&#x914D;&#x4EFB;&#x4F55;&#x5927;&#x5C0F;&#x7EA7;&#x522B;&#x7684;&#x5757;&#x3002;</p>
<p><code>freepools</code>&#x94FE;&#x8868;&#x8DDF;&#x8E2A;&#x7740;&#x6240;&#x6709;&#x7684;<code>empty</code>&#x72B6;&#x6001;&#x7684;pool&#xFF0C;&#x4EC0;&#x4E48;&#x65F6;&#x5019;empty pool&#x4F1A;&#x88AB;&#x4F7F;&#x7528;&#x5462;&#xFF1F;</p>
<p>&#x5047;&#x8BBE;&#x4F60;&#x7684;&#x4EE3;&#x7801;&#x9700;&#x8981;8&#x5B57;&#x8282;&#x7684;&#x5185;&#x5B58;&#x5757;&#xFF0C;&#x5982;&#x679C;&#x5728;<code>usedpools</code>&#x4E2D;&#x6CA1;&#x6709;8&#x5B57;&#x8282;&#x5927;&#x5C0F;&#x7EA7;&#x522B;&#x7684;pool&#xFF0C;&#x4E00;&#x4E2A;&#x65B0;&#x7684;<code>empty poo</code>l&#x5C31;&#x4F1A;&#x88AB;&#x521D;&#x59CB;&#x5316;&#xFF0C;&#x6765;&#x5B58;&#x50A8;8&#x5B57;&#x8282;&#x7684;&#x5757;&#xFF0C;&#x8FD9;&#x4E2A;pool&#x4F1A;&#x88AB;&#x52A0;&#x5165;&#x5230;<code>usedpools</code>&#x5217;&#x8868;&#x4E2D;&#x4EE5;&#x4FBF;&#x4E4B;&#x540E;&#x7684;&#x5206;&#x914D;&#x8BF7;&#x6C42;&#x3002;</p>
<p><code>full</code>&#x72B6;&#x6001;&#x7684;pool&#x7531;&#x4E8E;&#x4E00;&#x4E9B;&#x5185;&#x5B58;&#x4E0D;&#x518D;&#x9700;&#x8981;&#x800C;&#x91CA;&#x653E;&#x4E86;&#x4E00;&#x4E9B;&#x5757;&#xFF0C;&#x90A3;&#x8FD9;&#x4E2A;pool&#x5C31;&#x4F1A;&#x88AB;&#x91CD;&#x65B0;&#x52A0;&#x5165;&#x5230;<code>usedpools</code>&#x5217;&#x8868;&#x4E2D;&#x3002;</p>
<p>&#x73B0;&#x5728;&#x4F60;&#x53EF;&#x4EE5;&#x770B;&#x5230;pool&#xFF08;&#x4EE5;&#x53CA;&#x5927;&#x5C0F;&#x7EA7;&#x522B;&#xFF09;&#x662F;&#x5982;&#x4F55;&#x5728;&#x5404;&#x4E2A;&#x72B6;&#x6001;&#x95F4;&#x8F6C;&#x79FB;&#x7684;&#x4E86;&#x3002;</p>
<h3 id="block">Block</h3>
<p><img src="http://oss.ykai.top/%5B%E7%BF%BB%E8%AF%91%5DPython%E7%9A%84%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/memory_management_2.webp" alt loading="lazy"></p>
<p>&#x5C31;&#x50CF;&#x4E0A;&#x56FE;&#x6240;&#x8FF0;&#xFF0C;pool&#x4E2D;&#x5305;&#x542B;&#x4E86;&#x4E00;&#x4E2A;&#x6307;&#x5411;&#x5176;&#x4E2D;&#x7A7A;&#x95F2;&#x5757;&#x7684;&#x6307;&#x9488;&#x3002;&#x5176;&#x5B9E;&#x8FD9;&#x548C;&#x5B9E;&#x9645;&#x7684;&#x60C5;&#x51B5;&#x6709;&#x6240;&#x5DEE;&#x522B;&#xFF0C;&#x6839;&#x636E;&#x6E90;&#x4EE3;&#x7801;&#x4E2D;&#x7684;&#x6CE8;&#x91CA;&#xFF0C;&#x8FD9;&#x4E2A;&#x5185;&#x5B58;&#x5206;&#x914D;&#x5668;&#x4F1A;&#x201C;&#x5728;&#x5404;&#x4E2A;&#x5C42;&#x7EA7;&#x4E0A;&#xFF0C;&#x4E0D;&#x5230;&#x4E07;&#x4E0D;&#x5F97;&#x4E00;&#x4E0D;&#x53BB;&#x52A8;&#x7528;&#x5185;&#x5B58;&#x201D;&#x3002;</p>
<p>&#x8FD9;&#x610F;&#x5473;&#x7740;&#x4E00;&#x4E2A;pool&#x4E2D;&#x7684;block&#x53EF;&#x4EE5;&#x62E5;&#x6709;&#x4E09;&#x79CD;&#x72B6;&#x6001;&#xFF0C;&#x5982;&#x4E0B;&#xFF1A;</p>
<ul>
<li><code>untouched</code>&#xFF1A;&#x4ECE;&#x672A;&#x88AB;&#x5206;&#x914D;&#x8FC7;&#x7684;&#x5185;&#x5B58;&#xFF1B;</li>
<li><code>free</code>&#xFF1A;&#x66FE;&#x88AB;&#x5206;&#x914D;&#x8FC7;&#xFF0C;&#x4F46;&#x4E4B;&#x540E;&#x88AB;CPython&#x201C;&#x91CA;&#x653E;&#x201D;&#x6389;&#x4E86;&#xFF0C;&#x4E0D;&#x518D;&#x5305;&#x542B;&#x6709;&#x6548;&#x7684;&#x6570;&#x636E;&#xFF1B;</li>
<li><code>allocated</code>&#xFF1A;&#x5B9E;&#x9645;&#x5305;&#x542B;&#x6709;&#x6548;&#x6570;&#x636E;&#x7684;&#x5185;&#x5B58;&#x3002;</li>
</ul>
<p><code>freeblock</code>&#x6307;&#x9488;&#x6307;&#x5411;&#x4E86;&#x4E00;&#x4E2A;<code>free</code>&#x72B6;&#x6001;&#x7684;block&#x7684;&#x5355;&#x94FE;&#x8868;&#x3002;&#x6362;&#x53E5;&#x8BDD;&#x8BF4;&#xFF0C;&#x4E00;&#x4E2A;&#x53EF;&#x4EE5;&#x5B58;&#x50A8;&#x6570;&#x636E;&#x7684;&#x5730;&#x65B9;&#x7684;&#x5217;&#x8868;&#x3002;&#x5982;&#x679C;&#x9700;&#x8981;&#x66F4;&#x591A;<code>free block</code>&#xFF0C;&#x5206;&#x914D;&#x5668;&#x5C31;&#x4F1A;&#x4ECE;pool&#x4E2D;&#x83B7;&#x53D6;&#x4E00;&#x4E9B;<code>untouched</code>&#x72B6;&#x6001;&#x7684;&#x5757;&#x3002;</p>
<p>&#x5F53;&#x5185;&#x5B58;&#x5206;&#x914D;&#x5668;&#x201C;&#x91CA;&#x653E;&#x201D;&#x6389;&#x4E00;&#x4E9B;&#x5757;&#x4E4B;&#x540E;&#xFF0C;&#x8FD9;&#x4E9B;<code>free block</code>&#x4F1A;&#x88AB;&#x52A0;&#x5165;&#x5230;<code>freeblock</code>&#x5217;&#x8868;&#x7684;&#x5934;&#x90E8;&#xFF0C;&#xFF08;&#x6240;&#x4EE5;&#xFF09;&#x8FD9;&#x4E2A;&#x5217;&#x8868;&#x53EF;&#x80FD;&#x662F;&#x5185;&#x5B58;&#x4E2D;&#x4E0D;&#x8FDE;&#x7EED;&#x7684;&#x5757;&#xFF0C;&#x5C31;&#x50CF;&#x7B2C;&#x4E00;&#x4E2A;&#x56FE;&#x6240;&#x793A;&#x3002;&#x53EF;&#x80FD;&#x50CF;&#x662F;&#x4E0B;&#x9762;&#x8FD9;&#x5F20;&#x56FE;&#xFF1A;</p>
<p><img src="http://oss.ykai.top/%5B%E7%BF%BB%E8%AF%91%5DPython%E7%9A%84%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/memory_management_3.webp" alt loading="lazy"></p>
<h3 id="arena">Arena</h3>
<p><code>arena</code>&#x5305;&#x542B;&#x4E86;<code>pool</code>&#xFF0C;&#x8FD9;&#x4E9B;pool&#x7684;&#x72B6;&#x6001;&#x53EF;&#x80FD;&#x662F;<code>used</code>&#x3001;<code>full</code>&#x6216;&#x8005;<code>empty</code>&#xFF0C;&#x800C;<code>arena</code>&#x81EA;&#x8EAB;&#x5E76;&#x6CA1;&#x6709;&#x8FD9;&#x4E9B;&#x660E;&#x786E;&#x7684;&#x72B6;&#x6001;&#x3002;</p>
<p>&#x76F8;&#x53CD;&#xFF0C;arena&#x88AB;&#x7EC4;&#x7EC7;&#x5230;&#x4E00;&#x4E2A;&#x79F0;&#x4E3A;<code>usable_arenas</code>&#x7684;&#x53CC;&#x5411;&#x94FE;&#x8868;&#x4E2D;&#xFF0C;&#x8FD9;&#x4E2A;&#x94FE;&#x8868;&#x6839;&#x636E;&#x5176;&#x4E2D;&#x53EF;&#x7528;&#x7684;&#x7A7A;pool&#x7684;&#x6570;&#x91CF;&#x6392;&#x5E8F;&#xFF0C;&#x7A7A;pool&#x8D8A;&#x5C11;&#xFF0C;&#x5C31;&#x8D8A;&#x9760;&#x8FD1;&#x5217;&#x8868;&#x7684;&#x524D;&#x65B9;&#x3002;</p>
<p><img src="http://oss.ykai.top/%5B%E7%BF%BB%E8%AF%91%5DPython%E7%9A%84%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/memory_management_4.webp" alt loading="lazy"></p>
<p>&#x8FD9;&#x5C31;&#x610F;&#x5473;&#x7740;&#xFF0C;&#x5728;&#x5B58;&#x50A8;&#x65B0;&#x6570;&#x636E;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5305;&#x542B;&#x6700;&#x591A;&#x6570;&#x636E;&#x7684;arena&#x5C06;&#x4F1A;&#x88AB;&#x9009;&#x4E2D;&#x3002;&#x4E3A;&#x4EC0;&#x4E48;&#x4E0D;&#x662F;&#x53CD;&#x8FC7;&#x6765;&#x7684;&#xFF1F;&#x4E3A;&#x4EC0;&#x4E48;&#x4E0D;&#x628A;&#x6570;&#x636E;&#x653E;&#x5728;&#x6709;&#x6700;&#x591A;&#x7A7A;&#x95F2;&#x7A7A;&#x95F4;&#x7684;&#x5730;&#x65B9;&#xFF1F;</p>
<p>&#x8FD9;&#x5C31;&#x5F15;&#x51FA;&#x4E86;&#x201C;&#x91CA;&#x653E;&#x5185;&#x5B58;&#x201D;&#x7684;&#x771F;&#x5B9E;&#x610F;&#x4E49;&#x3002;&#x4F60;&#x4F1A;&#x6CE8;&#x610F;&#x5230;&#x6211;&#x8BF4;&#x201C;&#x91CA;&#x653E;&#x201D;&#x7684;&#x65F6;&#x5019;&#x4E00;&#x76F4;&#x5E26;&#x7740;&#x5F15;&#x53F7;&#xFF0C;&#x539F;&#x56E0;&#x5C31;&#x662F;block&#x53EA;&#x662F;&#x88AB;&#x8BA4;&#x4E3A;&#x201C;&#x91CA;&#x653E;&#x201D;&#x6389;&#x4E86;&#xFF0C;&#x5B9E;&#x9645;&#x4E0A;&#x8FD9;&#x4E9B;&#x5185;&#x5B58;&#x5E76;&#x6CA1;&#x6709;&#x8FD4;&#x8FD8;&#x7ED9;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#xFF0C;Python&#x8FDB;&#x7A0B;&#x4FDD;&#x7559;&#x7740;&#x8FD9;&#x4E9B;&#x5185;&#x5B58;&#xFF0C;&#x4E4B;&#x540E;&#x4F1A;&#x7528;&#x5B83;&#x5B58;&#x50A8;&#x65B0;&#x7684;&#x6570;&#x636E;&#x3002;&#x771F;&#x6B63;&#x7684;&#x91CA;&#x653E;&#x5185;&#x5B58;&#x4F1A;&#x5C06;&#x5176;&#x8FD4;&#x56DE;&#x7ED9;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x3002;</p>
<p>arena&#x662F;&#x552F;&#x4E00;&#x4E00;&#x4E2A;&#x53EF;&#x4EE5;&#x88AB;&#x5B9E;&#x9645;&#x91CA;&#x653E;&#x7684;&#x4E1C;&#x897F;&#xFF0C;&#x6240;&#x4EE5;&#x6709;&#x7406;&#x7531;&#x8BA4;&#x4E3A;&#xFF0C;&#x5E94;&#x8BE5;&#x5141;&#x8BB8;&#x90A3;&#x4E9B;&#x66F4;&#x63A5;&#x8FD1;&#x7A7A;&#x7684;arena&#x53D8;&#x6210;&#x5B8C;&#x5168;&#x7684;&#x7A7A;&#xFF0C;&#x8FD9;&#x6837;&#x7684;&#x8BDD;&#xFF0C;&#x5176;&#x4E2D;&#x7684;&#x5185;&#x5B58;&#x5C31;&#x53EF;&#x4EE5;&#x88AB;&#x5B9E;&#x9645;&#x91CA;&#x653E;&#x6389;&#xFF0C;&#x4EE5;&#x51CF;&#x5C11;Python&#x7A0B;&#x5E8F;&#x7684;&#x6574;&#x4F53;&#x5185;&#x5B58;&#x5360;&#x7528;&#x3002;</p>
<h2 id>&#x7ED3;&#x8BBA;</h2>
<p>&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x662F;&#x8BA1;&#x7B97;&#x673A;&#x4E2D;&#x4E0D;&#x53EF;&#x6216;&#x7F3A;&#x7684;&#x4E00;&#x90E8;&#x5206;&#xFF0C;&#x4E0D;&#x8BBA;&#x7ED3;&#x679C;&#x597D;&#x574F;&#xFF0C;Python&#x51E0;&#x4E4E;&#x5C06;&#x6240;&#x6709;&#x7684;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x90FD;&#x5728;&#x5E55;&#x540E;&#x5904;&#x7406;&#x3002;</p>
<p>&#x5728;&#x8FD9;&#x7BC7;&#x6587;&#x7AE0;&#x4E2D;&#xFF0C;&#x4F60;&#x5B66;&#x5230;&#x4E86;&#xFF1A;</p>
<ul>
<li>&#x4EC0;&#x4E48;&#x662F;&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x4EE5;&#x53CA;&#x5B83;&#x7684;&#x91CD;&#x8981;&#x6027;&#xFF1B;</li>
<li>&#x9ED8;&#x8BA4;&#x7684;Python&#x5B9E;&#x73B0;CPython&#x662F;&#x5982;&#x4F55;&#x7528;C&#x8BED;&#x8A00;&#x5199;&#x7684;&#xFF1B;</li>
<li>CPython&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x4E2D;&#x7684;&#x7B97;&#x6CD5;&#x548C;&#x6570;&#x636E;&#x7ED3;&#x6784;&#x662F;&#x5982;&#x4F55;&#x5904;&#x7406;&#x4F60;&#x7684;&#x6570;&#x636E;&#x7684;&#x3002;</li>
</ul>
<p>Pyhton&#x62BD;&#x8C61;&#x4E86;&#x8BB8;&#x591A;&#x8BA1;&#x7B97;&#x673A;&#x7684;&#x4E25;&#x683C;&#x7EC6;&#x8282;&#xFF0C;&#x8FD9;&#x5C31;&#x4F7F;&#x4F60;&#x6709;&#x80FD;&#x529B;&#x5728;&#x66F4;&#x9AD8;&#x7684;&#x5C42;&#x7EA7;&#x4E0A;&#x5F00;&#x53D1;&#xFF0C;&#x800C;&#x4E0D;&#x7528;&#x56E0;&#x4E3A;&#x62C5;&#x5FC3;&#x5982;&#x4F55;&#x3001;&#x5728;&#x54EA;&#x5B58;&#x50A8;&#x4F60;&#x7684;&#x5B57;&#x8282;&#x800C;&#x5934;&#x75DB;&#x3002;</p>
<hr>
<p>&#x539F;&#x6587;&#x94FE;&#x63A5;&#xFF1A;<a href="https://realpython.com/python-memory-management/">Memory Management in Python</a></p>
<hr>
<h2 id>&#x8BD1;&#x8005;&#x8BB0;</h2>
<p>&#x4ECE;&#x6574;&#x4F53;&#x6765;&#x8BF4;&#xFF0C;&#x8FD9;&#x7BC7;&#x6587;&#x7AE0;&#x662F;&#x6BD4;&#x8F83;&#x5BB9;&#x6613;&#xFF0C;&#x9002;&#x5408;&#x5BF9;&#x5185;&#x5B58;&#x76F8;&#x5173;&#x6982;&#x5FF5;&#x6BD4;&#x8F83;&#x6A21;&#x7CCA;&#x7684;&#x65B0;&#x624B;&#x770B;&#xFF1B;&#x4ECE;Python&#x7684;&#x89D2;&#x5EA6;&#x6765;&#x8BF4;&#xFF0C;&#x5927;&#x6982;&#x8BB2;&#x8FF0;&#x4E86;&#x5173;&#x4E8E;Python&#x5185;&#x5B58;&#x7BA1;&#x7406;&#x4E2D;&#x7684;&#x4E00;&#x4E9B;&#x6982;&#x5FF5;&#x3001;&#x6570;&#x636E;&#x7ED3;&#x6784;&#x548C;&#x7B97;&#x6CD5;&#xFF0C;&#x4E0D;&#x592A;&#x7EC6;&#x81F4;&#x4F46;&#x4F5C;&#x4E3A;&#x5165;&#x95E8;&#x4E86;&#x89E3;&#x4E5F;&#x662F;&#x633A;&#x597D;&#x7684;&#x3002;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[引导、分区、文件系统]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#x8FD9;&#x5B66;&#x671F;&#x6709;&#x4E86;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x8BFE;&#x7A0B;&#xFF0C;&#x5E76;&#x4E14;&#x52A0;&#x5165;&#x4E86;&#x8BD5;&#x70B9;&#x73ED;&#x3002;&#x8BD5;&#x70B9;&#x73ED;&#x7684;&#x4EFB;&#x52A1;&#x8FD8;&#x633A;&#x5B9E;&#x5728;&#x7684;&#xFF0C;&#x4E00;&#x4E0A;&#x6765;&#x5C31;&#x662F;&#x4ECE;&#x786C;&#x4EF6;&#x7684;&#x5F15;&#x5BFC;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x5728;&#x64CD;</p>]]></description><link>https://blog.ykai.cc/yindao-fenqu-wenjianxitong/</link><guid isPermaLink="false">6331df653945280001365b99</guid><category><![CDATA[OS]]></category><dc:creator><![CDATA[Yingkai Dang]]></dc:creator><pubDate>Mon, 23 Sep 2019 14:33:13 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x8FD9;&#x5B66;&#x671F;&#x6709;&#x4E86;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x8BFE;&#x7A0B;&#xFF0C;&#x5E76;&#x4E14;&#x52A0;&#x5165;&#x4E86;&#x8BD5;&#x70B9;&#x73ED;&#x3002;&#x8BD5;&#x70B9;&#x73ED;&#x7684;&#x4EFB;&#x52A1;&#x8FD8;&#x633A;&#x5B9E;&#x5728;&#x7684;&#xFF0C;&#x4E00;&#x4E0A;&#x6765;&#x5C31;&#x662F;&#x4ECE;&#x786C;&#x4EF6;&#x7684;&#x5F15;&#x5BFC;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x5728;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x52A0;&#x8F7D;&#x4E4B;&#x524D;&#x7684;MBR&#x4E2D;&#x4EE3;&#x7801;&#x7684;&#x6267;&#x884C;&#x3002;</p>
<p>&#x56E0;&#x4E3A;&#x5BF9;&#x4E8E;&#x6C47;&#x7F16;&#x4E0D;&#x719F;&#xFF0C;&#x6240;&#x4EE5;&#x4EE3;&#x7801;&#x91CC;&#x9762;&#x6709;&#x4E9B;&#x7EC6;&#x8282;&#x8FD8;&#x4E0D;&#x592A;&#x6E05;&#x695A;&#xFF0C;&#x8FD9;&#x7BC7;&#x6587;&#x7AE0;&#x4E3B;&#x8981;&#x8BB0;&#x5F55;&#x4E00;&#x4E0B;&#x5F15;&#x5BFC;&#x7684;&#x5927;&#x81F4;&#x8FC7;&#x7A0B;&#xFF0C;&#x627F;&#x8F7D;&#x5F15;&#x5BFC;&#x4FE1;&#x606F;&#x4E0E;&#x4EE3;&#x7801;MBR&#xFF0C;&#x4EE5;&#x53CA;MBR&#x4E4B;&#x540E;&#x7684;&#x5206;&#x533A;&#x4E0E;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x3002;</p>
<p>&#x7531;&#x4E8E;&#x6C34;&#x5E73;&#x6709;&#x9650;&#xFF0C;&#x65E0;&#x6CD5;&#x505A;&#x5230;&#x7EC6;&#x8282;&#x4FF1;&#x5230;&#xFF0C;&#x53EA;&#x662F;&#x5728;&#x6B64;&#x8BB0;&#x5F55;&#x6211;&#x5BF9;&#x4E8E;&#x6574;&#x4F53;&#x8FC7;&#x7A0B;&#x7684;&#x7406;&#x89E3;&#x3002;<br>
&#x53E6;&#x5916;&#xFF0C;&#x8FD9;&#x91CC;&#x53EA;&#x4ECB;&#x7ECD;MBR+MBR&#x786C;&#x76D8;&#x542F;&#x52A8;&#x65B9;&#x5F0F;&#xFF0C;&#x5E76;&#x672A;&#x8003;&#x8651;&#x5230;UEFI+GPT&#x786C;&#x76D8;&#x7684;&#x65B9;&#x6848;&#x3002;</p>
<h2 id>&#x5B58;&#x50A8;&#x8BBE;&#x5907;&#x3001;&#x5206;&#x533A;&#x4E0E;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;</h2>
<h3 id>&#x5B58;&#x50A8;&#x8BBE;&#x5907;</h3>
<p>&#x4EC0;&#x4E48;&#x662F;&#x4E00;&#x4E2A;&#x5B58;&#x50A8;&#x8BBE;&#x5907;&#xFF1F;&#xFF08;&#x8FD9;&#x91CC;&#x5E76;&#x975E;&#x6307;&#x6613;&#x5931;&#x6027;&#x5B58;&#x50A8;&#xFF0C;&#x4E3B;&#x5B58;&#x3001;&#x7F13;&#x5B58;&#x7B49;&#xFF09;</p>
<p>&#x5728;&#x8FD9;&#x91CC;&#xFF0C;&#x6211;&#x4E0D;&#x60F3;&#x50CF;&#x5B66;&#x9662;&#x6D3E;&#x7684;&#x8BA1;&#x7B97;&#x673A;&#x4F53;&#x7CFB;&#x4E00;&#x6837;&#xFF0C;&#x5C06;&#x5176;&#x53EA;&#x662F;&#x4F5C;&#x4E3A;&#x5BF9;&#x4E3B;&#x5B58;&#x7684;&#x8F85;&#x52A9;&#xFF0C;&#x56E0;&#x4E3A;&#x5728;&#x5F53;&#x4ECA;&#x7684;&#x8BA1;&#x7B97;&#x673A;&#x4E16;&#x754C;&#xFF0C;&#x786C;&#x76D8;&#x4E0E;&#x5185;&#x5B58;&#x5B8C;&#x5168;&#x662F;&#x4E24;&#x4E2A;&#x89D2;&#x8272;&#xFF0C;&#x867D;&#x7136;&#x8FD9;&#x6709;&#x53EF;&#x80FD;&#x662F;&#x5DE5;&#x4E1A;&#x5236;&#x9020;&#x6280;&#x672F;&#x7684;&#x539F;&#x56E0;&#xFF0C;&#x4F46;&#x81F3;&#x5C11;&#x8FD9;&#x662F;&#x4E8B;&#x5B9E;&#xFF1B;&#x6211;&#x4E5F;&#x4E0D;&#x60F3;&#x50CF;&#x4E00;&#x4E2A;&#x786C;&#x4EF6;&#x5382;&#x5546;&#x90A3;&#x6837;&#xFF0C;&#x5C06;&#x5B58;&#x50A8;&#x8BBE;&#x5907;&#x7EC6;&#x5206;&#x4E3A;&#x8F6F;&#x76D8;&#x3001;&#x786C;&#x76D8;&#x3001;USB&#x8BBE;&#x5907;&#x7B49;&#x7B49;&#xFF0C;&#x8FD9;&#x4E9B;&#x8BBE;&#x5907;&#x5176;&#x5B9E;&#x672C;&#x8D28;&#x662F;&#x76F8;&#x540C;&#x7684;&#xFF0C;&#x6211;&#x4EEC;&#x5728;&#x6B64;&#x9700;&#x8981;&#x8003;&#x8651;&#x7684;&#x662F;&#x5B83;&#x4EEC;&#x4E4B;&#x95F4;&#x7684;&#x201C;&#x5171;&#x76F8;&#x201D;&#xFF0C;&#x5E76;&#x975E;&#x5DEE;&#x5F02;&#xFF0C;&#x5B83;&#x4EEC;&#x7684;&#x5DEE;&#x5F02;&#x6216;&#x8BB8;&#x53EA;&#x5728;&#x4E8E;&#x786C;&#x4EF6;&#x63A5;&#x53E3;&#x5B9E;&#x73B0;&#x4E0E;&#x5386;&#x53F2;&#x9057;&#x7559;&#x95EE;&#x9898;&#xFF0C;&#x4E0D;&#x8981;&#x8BA9;&#x8FD9;&#x4E9B;&#x79F0;&#x4E3A;&#x81EA;&#x5DF1;&#x7406;&#x89E3;&#x7684;&#x7D2F;&#x8D58;&#x3002;</p>
<p>&#x5BF9;&#x6211;&#x4EEC;&#x6765;&#x8BF4;&#xFF0C;&#x5BF9;&#x4E00;&#x5757;&#x5B58;&#x50A8;&#x8BBE;&#x5907;&#xFF0C;&#x65E0;&#x8BBA;&#x662F;&#x8F6F;&#x76D8;&#x786C;&#x76D8;&#x8FD8;&#x662F;U&#x76D8;&#xFF0C;&#x6700;&#x672C;&#x8D28;&#x7684;&#x62BD;&#x8C61;&#x662F;&#x4E00;&#x4E2A;&#x6570;&#x7EC4;&#x3002;&#x5C06;&#x5B83;&#x4EEC;&#x7EDF;&#x7EDF;&#x90FD;&#x5F53;&#x505A;&#x6570;&#x7EC4;&#xFF0C;&#x6682;&#x4E14;&#x5FFD;&#x7565;&#x6389;&#x5DEE;&#x5F02;&#x3002;&#x4E0E;&#x6570;&#x7EC4;&#x76F8;&#x4F34;&#x800C;&#x751F;&#x7684;&#xFF0C;&#x5C31;&#x662F;&#x6570;&#x7EC4;&#x7684;&#x7D22;&#x5F15;&#x65B9;&#x5F0F;&#xFF0C;&#x5BF9;&#x5E94;&#x7684;&#x662F;&#x5B58;&#x50A8;&#x8BBE;&#x5907;&#x4E2D;&#x7684;&#x5BFB;&#x5740;&#x65B9;&#x5F0F;&#x3002;&#x63A5;&#x53D7;&#x4E86;&#x8FD9;&#x4E2A;&#x62BD;&#x8C61;&#xFF0C;&#x5B58;&#x50A8;&#x8BBE;&#x5907;&#x5C31;&#x6210;&#x4E3A;&#x4E86;&#x4F60;&#x7406;&#x5FF5;&#x4E16;&#x754C;&#x4E2D;&#x7684;&#x4E00;&#x4E2A;&#x4E2A;&#x5C0F;&#x65B9;&#x5757;&#x4E86;&#x3002;</p>
<h3 id>&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;</h3>
<p>&#x5BF9;&#x4E8E;&#x4E00;&#x5757;&#x786C;&#x76D8;&#xFF0C;&#x6211;&#x4EEC;&#x6700;&#x76F4;&#x89C9;&#x7684;&#x611F;&#x53D7;&#x662F;&#x4EC0;&#x4E48;&#xFF1F;&#x662F;&#x5B83;&#x80FD;&#x5B58;&#x50A8;&#x6587;&#x4EF6;&#x3002;&#x60F3;&#x4E00;&#x60F3;&#xFF0C;&#x4E00;&#x8FB9;&#x662F;&#x4E00;&#x4E2A;&#x6570;&#x7EC4;&#xFF0C;&#x53E6;&#x4E00;&#x8FB9;&#x662F;&#x4E00;&#x5806;&#x76EE;&#x5F55;&#x4E0E;&#x6587;&#x4EF6;&#xFF0C;&#x8FD9;&#x4E24;&#x4E2A;&#x4E1C;&#x897F;&#x600E;&#x4E48;&#x8054;&#x7CFB;&#x8D77;&#x6765;&#x5462;&#xFF1F;&#x7528;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x3002;&#x5982;&#x679C;&#x8003;&#x8651;&#x5230;&#x6587;&#x4EF6;&#x4E5F;&#x662F;&#x4E00;&#x5757;&#x5B57;&#x8282;&#x4E32;&#xFF0C;&#x90A3;&#x4E48;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x672C;&#x8D28;&#x4E0A;&#x5C31;&#x662F;&#x5B9E;&#x73B0;&#x8FD9;&#x4E2A;&#x529F;&#x80FD;&#x7684;&#xFF1A; <strong>&#x5728;&#x4E00;&#x5757;&#x6570;&#x7EC4;&#x4E0A;&#xFF0C;&#x5B8C;&#x6210;&#x5BF9;&#x4E00;&#x7CFB;&#x5217;&#x5B57;&#x8282;&#x5757;&#x7684;&#x7EC4;&#x7EC7;&#x4E0E;&#x64CD;&#x4F5C;&#x3002;&#x201C;&#x7EC4;&#x7EC7;&#x201D;&#x662F;&#x6570;&#x636E;&#x7ED3;&#x6784;&#xFF0C;&#x201C;&#x64CD;&#x4F5C;&#x201D;&#x662F;&#x7B97;&#x6CD5;&#xFF0C;&#x4E24;&#x4E2A;&#x5408;&#x8D77;&#x6765;&#x5C31;&#x662F;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x3002;</strong> &#x6211;&#x4EEC;&#x5728;&#x201C;&#x683C;&#x5F0F;&#x5316;&#x201D;&#x4E00;&#x4E2A;&#x201C;&#x786C;&#x76D8;&#x201D;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x505A;&#x7684;&#x5C31;&#x662F;&#x201C;&#x521D;&#x59CB;&#x5316;&#x6570;&#x636E;&#x7ED3;&#x6784;&#x201D;&#x7684;&#x5DE5;&#x4F5C;&#xFF0C;&#x521D;&#x59CB;&#x5316;&#x540E;&#x7684;&#x6570;&#x636E;&#x7ED3;&#x6784;&#x5C31;&#x653E;&#x5728;&#x786C;&#x76D8;&#x8FD9;&#x4E2A;&#x6570;&#x7EC4;&#x5185;&#x90E8;&#x3002;&#x4E4B;&#x540E;&#xFF0C;&#x5982;&#x679C;&#x7528;&#x6237;&#x8981;&#x5B58;&#x50A8;&#x6587;&#x4EF6;&#xFF0C;&#x53EA;&#x8981;&#x6309;&#x7167;&#x89C4;&#x5B9A;&#x7684;&#x7B97;&#x6CD5;&#xFF0C;&#x5408;&#x7406;&#x5730;&#x64CD;&#x4F5C;&#x8FD9;&#x4E9B;&#x6570;&#x636E;&#x7ED3;&#x6784;&#xFF0C;&#x5C06;&#x81EA;&#x5DF1;&#x8981;&#x5B58;&#x7684;&#x4E1C;&#x897F;&#x5199;&#x8FDB;&#x8BE5;&#x5199;&#x7684;&#x5730;&#x65B9;&#x5C31;&#x53EF;&#x4EE5;&#x4E86;&#x3002;&#x67E5;&#x8BE2;&#x6587;&#x4EF6;&#x4E5F;&#x662F;&#x4E00;&#x6837;&#x3002;</p>
<p>&#x6211;&#x4EEC;&#x5C1D;&#x8BD5;&#x4F53;&#x9A8C;&#x4E00;&#x4E0B;&#x8FD9;&#x4E2A;&#x8FC7;&#x7A0B;&#x3002;&#x5047;&#x8BBE;&#x8981;&#x5B9E;&#x73B0;&#x5B58;&#x653E;&#x6587;&#x4EF6;&#x7684;&#x529F;&#x80FD;&#xFF0C;&#x4E0D;&#x8003;&#x8651;&#x6027;&#x80FD;&#x3002;&#x6211;&#x4EEC;&#x7528;&#x6700;&#x7B80;&#x5355;&#x7684;&#x65B9;&#x5F0F;&#x6765;&#x505A;&#xFF1A;&#x5C06;&#x6574;&#x4E2A;&#x6570;&#x7EC4;&#x5206;&#x6210;&#x5927;&#x5C0F;&#x76F8;&#x540C;&#x7684;&#x5757;&#xFF0C;&#x6BD4;&#x5982;&#x6BCF;&#x5757;512&#x4E2A;&#x5B57;&#x8282;&#xFF0C;&#x6BCF;&#x5757;&#x5B58;&#x4E00;&#x4E2A;&#x6587;&#x4EF6;&#xFF0C;&#x6BCF;&#x5757;&#x7684;&#x7B2C;&#x4E00;&#x4E2A;&#x5B57;&#x8282;&#x5B58;&#x50A8;&#x8FD9;&#x4E2A;&#x5757;&#x6709;&#x6CA1;&#x6709;&#x88AB;&#x4F7F;&#x7528;&#x8FC7;&#xFF0C;&#x4E4B;&#x540E;&#x7684;&#x4E03;&#x4E2A;&#x5B57;&#x8282;&#x5B58;&#x50A8;&#x8FD9;&#x4E2A;&#x5757;&#x5B58;&#x7684;&#x6587;&#x4EF6;&#x7684;&#x6587;&#x4EF6;&#x540D;&#xFF1B;&#x8981;&#x5B58;&#x50A8;&#x6587;&#x4EF6;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5C31;&#x4ECE;&#x5934;&#x4EE5;&#x6B64;&#x5BFB;&#x627E;&#x5C1A;&#x4E14;&#x6CA1;&#x6709;&#x88AB;&#x5360;&#x7528;&#x7684;&#x5757;&#xFF0C;&#x67E5;&#x627E;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5C31;&#x4EE5;&#x6B64;&#x627E;&#x5BF9;&#x5E94;&#x7684;&#x6587;&#x4EF6;&#x540D;&#x3002;&#x8FD9;&#x6837;&#xFF0C;&#x4E00;&#x4E2A;&#x7B80;&#x964B;&#x7684;&#x3001;&#x652F;&#x6301;&#x6587;&#x4EF6;&#x5927;&#x5C0F;&#x6709;&#x9650;&#x7684;&#x3001;&#x652F;&#x6301;&#x6587;&#x4EF6;&#x540D;&#x975E;&#x5E38;&#x77ED;&#x7684;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x5C31;&#x5B8C;&#x6210;&#x4E86;&#x3002;&#x5728;&#x521D;&#x59CB;&#x5316;&#x4E4B;&#x540E;&#xFF0C;&#x6211;&#x4EEC;&#x53EA;&#x9700;&#x8981;&#x4E00;&#x6BB5;&#x80FD;&#x8DD1;&#x8D77;&#x6765;&#x7684;&#x4EE3;&#x7801;&#x5C31;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x5B83;&#x4E86;&#x3002;</p>
<p>&#x867D;&#x7136;&#x5F88;&#x7B80;&#x964B;&#xFF0C;&#x4F46;&#x662F;&#x5927;&#x6982;&#x4E5F;&#x80FD;&#x8BF4;&#x660E;&#x95EE;&#x9898;&#x3002;</p>
<h3 id>&#x5206;&#x533A;</h3>
<p>&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x7406;&#x89E3;&#x4E86;&#xFF0C;&#x90A3;&#x5206;&#x533A;&#x7684;&#x6982;&#x5FF5;&#x5C31;&#x6CA1;&#x4EC0;&#x4E48;&#x597D;&#x8BF4;&#x7684;&#x4E86;&#x3002;</p>
<p>&#x6211;&#x4EEC;&#x4E0D;&#x6EE1;&#x8DB3;&#x4E8E;&#x5C06;&#x4E00;&#x6574;&#x5757;&#x786C;&#x76D8;&#x5F53;&#x505A;&#x4E00;&#x4E2A;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x7528;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x4EEC;&#x641E;&#x4E86;&#x4E00;&#x5F20;&#x8868;&#xFF0C;&#x53EB;&#x505A;&#x5206;&#x533A;&#x8868;&#xFF0C;&#x4E00;&#x822C;&#x5C31;&#x5728;&#x786C;&#x76D8;&#x7684;&#x5F00;&#x5934;&#x3002;&#x8FD9;&#x4E2A;&#x8868;&#x7684;&#x4F5C;&#x7528;&#x5F88;&#x7B80;&#x5355;&#xFF0C;&#x91CC;&#x9762;&#x6709;&#x56DB;&#x9879;&#xFF0C;&#x6BCF;&#x4E00;&#x9879;&#x5BF9;&#x5E94;&#x4E00;&#x4E2A;&#x5206;&#x533A;&#xFF0C;&#x8BB0;&#x5F55;&#x4E24;&#x4E2A;&#x5B57;&#x6BB5;&#xFF1A;&#x5206;&#x533A;&#x7684;&#x5F00;&#x59CB;&#x4E0E;&#x7ED3;&#x5C3E;&#x3002;&#x8FD9;&#x6837;&#x5B50;&#xFF0C;&#x6574;&#x5757;&#x786C;&#x76D8;&#x5C31;&#x88AB;&#x5206;&#x4E3A;&#x4E86;&#x56DB;&#x4E2A;&#x5757;&#xFF0C;&#x79F0;&#x4F5C;&#x56DB;&#x4E2A;&#x5206;&#x533A;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x56DB;&#x4E2A;&#x6570;&#x7EC4;&#xFF0C;&#x6211;&#x4EEC;&#x5728;&#x6BCF;&#x4E2A;&#x6570;&#x7EC4;&#x4E0A;&#x90FD;&#x5EFA;&#x7ACB;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x5206;&#x5757;&#x4F7F;&#x7528;&#x8FD9;&#x4E2A;&#x786C;&#x76D8;&#x4E86;&#x3002;</p>
<blockquote>
<p>&#x4EE5;&#x4E0A;&#x63CF;&#x8FF0;&#x4E2D;&#xFF0C;&#x786C;&#x76D8;&#x4E00;&#x8BCD;&#x53EF;&#x4EE5;&#x66FF;&#x6362;&#x4E3A;&#x8F6F;&#x76D8;&#x3001;U&#x76D8;&#x7B49;&#x7B49;&#x3002;<br><br>
&#x5206;&#x533A;&#x8868;&#x5B58;&#x50A8;&#x7684;&#x4F4D;&#x7F6E;&#x89C1;&#x4E0B;&#x9762;&#x6240;&#x8FF0;&#x7684;MBR&#x3002;</p>
</blockquote>
<h2 id="mbr">MBR&#x4E0E;&#x5F15;&#x5BFC;</h2>
<p>&#x5728;&#x6211;&#x4EEC;&#x7684;&#x4E2A;&#x4EBA;&#x7535;&#x8111;&#x7ECF;&#x8FC7;&#x786C;&#x4EF6;&#x52A0;&#x7535;&#x3001;&#x81EA;&#x68C0;&#x5B8C;&#x6210;&#x4E4B;&#x540E;&#xFF0C;&#x5B83;&#x5C31;&#x8981;&#x8FDB;&#x884C;&#x4E00;&#x4E9B;&#x9884;&#x5907;&#x6D3B;&#x52A8;&#x6765;&#x7ED9;&#x7528;&#x6237;&#x63D0;&#x4F9B;&#x53EF;&#x4F7F;&#x7528;&#x7684;&#x4EA4;&#x4E92;&#x63A5;&#x53E3;&#x4E86;&#xFF0C;&#x4E2A;&#x4EBA;&#x7535;&#x8111;&#x4E0A;&#x8FD9;&#x4E2A;&#x4EA4;&#x4E92;&#x63A5;&#x53E3;&#x5C31;&#x662F;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#xFF0C;&#x800C;&#x9884;&#x5907;&#x6211;&#x4EEC;&#x79F0;&#x4E4B;&#x4E3A;&#x5F15;&#x5BFC;&#x3002;</p>
<p>&#x5F15;&#x5BFC;&#x65F6;&#x671F;&#x4F1A;&#x505A;&#x4EC0;&#x4E48;&#x4E8B;&#x60C5;&#x5462;&#xFF1F;</p>
<ol>
<li>
<p>&#x52A0;&#x8F7D;<br>
&#x9996;&#x5148;&#xFF0C;&#x786C;&#x4EF6;&#x53D1;&#x73B0;&#x4E00;&#x4E2A;&#x5B58;&#x50A8;&#x8BBE;&#x5907;&#xFF0C;&#x5982;&#x679C;&#x6211;&#x4EEC;&#x5C06;&#x5B58;&#x50A8;&#x8BBE;&#x5907;&#x770B;&#x505A;&#x4E00;&#x4E2A;&#x5F88;&#x5927;&#x7684;&#x6570;&#x7EC4;&#xFF0C;&#x90A3;&#x4E48;&#x786C;&#x4EF6;&#x5C31;&#x4F1A;&#x5C06;&#x8FD9;&#x4E2A;&#x6570;&#x7EC4;&#x7684;&#x524D;512&#x4E2A;&#x5B57;&#x8282;&#x52A0;&#x8F7D;&#x5230;&#x5185;&#x5B58;&#x7684;0000:7c00&#x5904;&#xFF1B;<br>
&#x8FD9;512&#x4E2A;&#x5B57;&#x8282;&#x7684;&#x5185;&#x5BB9;&#x5C31;&#x662F;&#x6211;&#x4EEC;&#x8BF4;&#x7684;&#x4E3B;&#x5F15;&#x5BFC;&#x8BB0;&#x5F55;&#xFF08;Master Boot Record&#xFF0C;MBR&#xFF09;&#xFF0C;&#x6309;&#x7167;&#x7EA6;&#x5B9A;&#xFF0C;&#x8FD9;&#x91CC;&#x9762;&#x5927;&#x81F4;&#x5305;&#x542B;&#x4E86;&#x4E00;&#x4E2A;&#x4E09;&#x4E2A;&#x5185;&#x5BB9;&#xFF1A;&#x5F15;&#x5BFC;&#x4EE3;&#x7801;&#x3001;&#x5206;&#x533A;&#x8868;&#x3001;&#x53EF;&#x542F;&#x52A8;&#x6807;&#x5FD7;&#x3002;</p>
<table>
<thead>
<tr>
<th>&#x63CF;&#x8FF0;</th>
<th>&#x957F;&#x5EA6;</th>
</tr>
</thead>
<tbody>
<tr>
<td>&#x4EE3;&#x7801;&#x533A;</td>
<td>446</td>
</tr>
<tr>
<td>&#x5206;&#x533A;&#x8868;</td>
<td>64</td>
</tr>
<tr>
<td>&#x53EF;&#x542F;&#x52A8;&#x6807;&#x5FD7;</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>512</td>
</tr>
</tbody>
</table>
</li>
<li>
<p>&#x68C0;&#x67E5;<br>
&#x4E4B;&#x540E;&#xFF0C;&#x786C;&#x4EF6;&#x53BB;&#x68C0;&#x67E5;&#x52A0;&#x8F7D;&#x8FDB;&#x6765;&#x7684;&#x5185;&#x5BB9;&#x7684;&#x6700;&#x540E;&#x4E24;&#x4E2A;&#x5B57;&#x8282;&#x7684;&#x5185;&#x5BB9;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x53EF;&#x542F;&#x52A8;&#x6807;&#x5FD7;&#xFF0C;&#x5982;&#x679C;&#x662F;0x55aa&#xFF0C;&#x90A3;&#x4E48;&#x8868;&#x660E;&#x8FD9;&#x4E2A;&#x8BBE;&#x5907;&#x662F;&#x4E00;&#x4E2A;&#x53EF;&#x542F;&#x52A8;&#x8BBE;&#x5907;&#xFF0C;&#x5426;&#x5219;&#xFF0C;&#x8F6C;&#x800C;&#x5C1D;&#x8BD5;&#x5176;&#x4ED6;&#x8BBE;&#x5907;&#xFF1B;</p>
</li>
<li>
<p>&#x8FD0;&#x884C;<br>
&#x786E;&#x5B9A;&#x8BE5;&#x8BBE;&#x5907;&#x53EF;&#x542F;&#x52A8;&#x4E4B;&#x540E;&#xFF0C;&#x786C;&#x4EF6;&#x5C31;&#x4F1A;&#x5C1D;&#x8BD5;&#x6267;&#x884C;&#x4E4B;&#x524D;&#x52A0;&#x8F7D;&#x7684;MBR&#x4E2D;&#x7684;&#x4EE3;&#x7801;&#x3002;&#x8FD9;&#x65F6;&#x5019;&#xFF0C;&#x7CFB;&#x7EDF;&#x7684;&#x63A7;&#x5236;&#x6743;&#x5C31;&#x4EA4;&#x7ED9;&#x4E86;&#x5F15;&#x5BFC;&#x4EE3;&#x7801;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x6211;&#x4EEC;&#x5199;&#x7684;&#x4EE3;&#x7801;&#x3002;</p>
</li>
</ol>
<p>&#x4E0A;&#x8FF0;&#x8FC7;&#x7A0B;&#x5F88;&#x7B80;&#x5355;&#xFF0C;&#x5728;&#x8FD9;&#x4E2A;&#x8FC7;&#x7A0B;&#x4E2D;&#x9700;&#x8981;&#x6CE8;&#x610F;&#x7684;&#xFF1A;</p>
<ul>
<li>512&#x4E2A;&#x5B57;&#x8282;&#x957F;&#x7684;MBR&#x90FD;&#x662F;&#x7531;&#x6211;&#x4EEC;&#x81EA;&#x5DF1;&#x5728;&#x4EE3;&#x7801;&#x91CC;&#x9762;&#x5199;&#x7684;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x8BF4;&#xFF0C;&#x6211;&#x4EEC;&#x7684;&#x6C47;&#x7F16;&#x4EE3;&#x7801;&#x91CC;&#x9762;&#x4E0D;&#x6B62;&#x9700;&#x8981;&#x6709;&#x53EF;&#x6267;&#x884C;&#x7684;&#x4EE3;&#x7801;&#xFF0C;&#x8FD8;&#x9700;&#x8981;&#x586B;&#x5145;&#x597D;&#x5176;&#x4F59;&#x7684;&#x5B57;&#x8282;&#xFF0C;&#x6BD4;&#x5982;&#x542F;&#x52A8;&#x6807;&#x5FD7;&#x548C;&#x5206;&#x533A;&#x8868;&#x3002;&#x8FD9;&#x4E5F;&#x5C31;&#x662F;&#x4E3A;&#x4EC0;&#x4E48;&#x6211;&#x4EEC;&#x9700;&#x8981;&#x5728;&#x4EE3;&#x7801;&#x7684;&#x672B;&#x5C3E;&#x5199;&#x4E0A;<code>times 512-($-$$)</code>&#xFF0C;&#x4EE5;&#x53CA;&#x4E3A;&#x4EC0;&#x4E48;&#x6700;&#x540E;&#x8981;&#x6709;0xaa55&#x7684;&#x539F;&#x56E0;&#xFF0C;&#x4F46;&#x7531;&#x4E8E;&#x6682;&#x65F6;&#x4E0D;&#x9700;&#x8981;&#x5206;&#x533A;&#x8868;&#xFF0C;&#x6240;&#x4EE5;&#x5206;&#x533A;&#x8868;&#x5E76;&#x6CA1;&#x6709;&#x88AB;&#x586B;&#x5145;&#x3002;</li>
<li>MBR&#x5E76;&#x975E;&#x88AB;&#x52A0;&#x8F7D;&#x5230;0&#x5730;&#x5740;&#x5904;&#xFF0C;&#x800C;&#x662F;7C00&#x5904;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x8BF4;&#xFF0C;&#x6211;&#x4EEC;&#x7684;&#x4EE3;&#x7801;&#x6700;&#x7EC8;&#x6267;&#x884C;&#x7684;&#x65F6;&#x5019;&#x8D77;&#x70B9;&#x4F1A;&#x5728;&#x5185;&#x5B58;&#x7684;7C00&#x5904;&#xFF0C;&#x8FD9;&#x65F6;&#x5019;&#x5C31;&#x9700;&#x8981;&#x6CE8;&#x610F;&#x4E86;&#xFF0C;&#x5982;&#x679C;&#x5728;&#x4EE3;&#x7801;&#x91CC;&#x6211;&#x4EEC;&#x7528;&#x5230;&#x4E86;&#x8DF3;&#x8F6C;&#x6307;&#x4EE4;&#x7B49;&#xFF0C;&#x90A3;&#x4E48;&#x6C47;&#x7F16;&#x5668;&#x5728;&#x751F;&#x6210;&#x673A;&#x5668;&#x4EE3;&#x7801;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x9700;&#x8981;&#x5982;&#x4F55;&#x586B;&#x5145;&#x8DF3;&#x8F6C;&#x76EE;&#x6807;&#x5462;&#xFF1F;&#x5982;&#x679C;&#x6C47;&#x7F16;&#x5668;&#x8BA4;&#x4E3A;&#x4EE3;&#x7801;&#x7684;&#x8D77;&#x59CB;&#x5730;&#x5740;&#x662F;0&#xFF0C;&#x90A3;&#x4E48;&#x8DF3;&#x8F6C;&#x6307;&#x4EE4;&#x7684;&#x64CD;&#x4F5C;&#x7801;&#x5C31;&#x4F1A;&#x662F;&#x4EE5;0&#x4E3A;&#x57FA;&#x51C6;&#x8BA1;&#x7B97;&#x5F97;&#x6765;&#x7684;&#x4E86;&#xFF0C;&#x5F88;&#x663E;&#x7136;&#x4F1A;&#x51FA;&#x95EE;&#x9898;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x4EEC;&#x9700;&#x8981;&#x5728;&#x4EE3;&#x7801;&#x6700;&#x5F00;&#x59CB;&#x7528;org&#x4F2A;&#x6307;&#x4EE4;&#x544A;&#x8BC9;&#x6C47;&#x7F16;&#x5668;&#x7A0B;&#x5E8F;&#x7684;&#x8D77;&#x70B9;&#xFF0C;&#x8FD9;&#x6837;&#xFF0C;&#x5728;&#x901A;&#x8FC7;&#x504F;&#x79FB;&#x91CF;&#x8BA1;&#x7B97;&#x7EDD;&#x5BF9;&#x4F4D;&#x7F6E;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x751F;&#x6210;&#x7684;&#x4EE3;&#x7801;&#x624D;&#x4F1A;&#x4E0D;&#x51FA;&#x95EE;&#x9898;&#x3002;&#x5F53;&#x7136;&#xFF0C;&#x5982;&#x679C;&#x4EE3;&#x7801;&#x91CC;&#x9762;&#x6CA1;&#x6709;&#x7528;&#x5230;&#x901A;&#x8FC7;&#x504F;&#x79FB;&#x8BA1;&#x7B97;&#x7684;&#xFF0C;&#x6BD4;&#x5982;&#x5168;&#x662F;mov&#x6307;&#x4EE4;&#xFF0C;&#x90A3;&#x4E48;&#x65E0;&#x8BBA;&#x5982;&#x4F55;&#x90FD;&#x4E0D;&#x4F1A;&#x51FA;&#x95EE;&#x9898;&#x3002;</li>
</ul>
<p>&#x5904;&#x7406;&#x597D;&#x5F00;&#x5934;&#x4E0E;&#x7ED3;&#x5C3E;&#xFF0C;&#x5269;&#x4E0B;&#x7684;&#x5C31;&#x662F;&#x5982;&#x4F55;&#x5199;&#x4EE3;&#x7801;&#x4E86;&#x3002;</p>
<hr>
<p>&#x53C2;&#x8003;&#xFF1A;</p>
<ul>
<li><a href="https://zh.wikipedia.org/wiki/%E4%B8%BB%E5%BC%95%E5%AF%BC%E8%AE%B0%E5%BD%95">&#x7EF4;&#x57FA;&#x767E;&#x79D1;&#xFF1A;&#x4E3B;&#x5F15;&#x5BFC;&#x8BB0;&#x5F55;</a></li>
<li><a href="https://en.wikipedia.org/wiki/Master_boot_record">WikiPedia: Master Boot Record</a></li>
</ul>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[编程语言能带来什么？]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#x4E00;&#x95E8;&#x8BED;&#x8A00;&#x505A;&#x7684;&#x4E8B;&#x60C5;&#xFF0C;&#x5176;&#x5B9E;&#x662F;&#x4E3A;&#x786C;&#x4EF6;&#x8D4B;&#x4E88;&#x601D;&#x7EF4;&#x5BF9;&#x8C61;&#xFF0C;&#x5EFA;&#x7ACB;&#x4E00;&#x79CD;&#x5BF9;&#x786C;&#x4EF6;&#x7684;&#x62BD;&#x8C61;&#xFF0C;&#x6216;&#x8005;&#x8BF4;&#x662F;&#x5BF9;&#x67D0;&#x4E9B;&#x57FA;&#x672C;&#x5F62;&#x5F0F;&#x7684;&#x5047;&#x8BBE;&#x4E0E;&#x603B;&#x7ED3;</p>]]></description><link>https://blog.ykai.cc/bian-cheng-yu-yan-neng-dai-lai-shi-yao/</link><guid isPermaLink="false">6331df653945280001365b98</guid><dc:creator><![CDATA[Yingkai Dang]]></dc:creator><pubDate>Sun, 18 Aug 2019 18:09:09 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x4E00;&#x95E8;&#x8BED;&#x8A00;&#x505A;&#x7684;&#x4E8B;&#x60C5;&#xFF0C;&#x5176;&#x5B9E;&#x662F;&#x4E3A;&#x786C;&#x4EF6;&#x8D4B;&#x4E88;&#x601D;&#x7EF4;&#x5BF9;&#x8C61;&#xFF0C;&#x5EFA;&#x7ACB;&#x4E00;&#x79CD;&#x5BF9;&#x786C;&#x4EF6;&#x7684;&#x62BD;&#x8C61;&#xFF0C;&#x6216;&#x8005;&#x8BF4;&#x662F;&#x5BF9;&#x67D0;&#x4E9B;&#x57FA;&#x672C;&#x5F62;&#x5F0F;&#x7684;&#x5047;&#x8BBE;&#x4E0E;&#x603B;&#x7ED3;&#xFF1B;<br>
&#x4E00;&#x95E8;&#x8BED;&#x8A00;&#x505A;&#x5230;&#x7C7B;&#x578B;&#x5B8C;&#x5907;&#xFF0C;&#x53EA;&#x662F;&#x8BED;&#x8A00;&#x505A;&#x7684;&#x62BD;&#x8C61;&#x8FBE;&#x5230;&#x4E86;&#x5B8C;&#x5907;&#xFF0C;&#x5B83;&#x7684;&#x201C;&#x529F;&#x80FD;&#x201D;&#x5E76;&#x672A;&#x88AB;&#x63D0;&#x5347;&#xFF0C;&#x751A;&#x81F3;&#x4E00;&#x5B9A;&#x4F1A;&#x51CF;&#x5F31;&#xFF1B;<br>
&#x5F53;&#x505A;&#x51FA;&#x62BD;&#x8C61;&#x65F6;&#xFF0C;&#x4E00;&#x5B9A;&#x4F1A;&#x4E3A;&#x539F;&#x672C;&#x81EA;&#x7531;&#x3001;&#x96BE;&#x4EE5;&#x88AB;&#x4EBA;&#x7C7B;&#x9A7E;&#x9A6D;&#x7684;&#x57FA;&#x672C;&#x5F62;&#x5F0F;&#x505A;&#x51FA;&#x5047;&#x8BBE;&#x548C;&#x7EA6;&#x675F;&#xFF0C;&#x8FD9;&#x79CD;&#x7EA6;&#x675F;&#x4F7F;&#x5F97;&#x5F62;&#x5F0F;&#x80FD;&#x5728;&#x601D;&#x7EF4;&#x7684;&#x9886;&#x57DF;&#x88AB;&#x5E94;&#x7528;&#xFF0C;&#x4F46;&#x540C;&#x65F6;&#xFF0C;&#x8FD9;&#x79CD;&#x7EA6;&#x675F;&#x4E5F;&#x4F7F;&#x5F97;&#x539F;&#x672C;&#x968F;&#x610F;&#x81EA;&#x7531;&#x7684;&#x5F62;&#x5F0F;&#x53D8;&#x5F97;&#x56FA;&#x5316;&#xFF0C;&#x4E5F;&#x56E0;&#x6B64;&#x4F1A;&#x4E27;&#x5931;&#x4E00;&#x4E9B;&#x529F;&#x80FD;&#xFF1B;<br>
&#x80FD;&#x5B9E;&#x73B0;&#x7684;&#x529F;&#x80FD;&#x7531;&#x5176;&#x62BD;&#x8C61;&#x4E2D;&#x4ECD;&#x7136;&#x4FDD;&#x7559;&#x7684;&#x5F62;&#x5F0F;&#x51B3;&#x5B9A;&#xFF0C;&#x4F46;&#x6613;&#x7528;&#x6027;&#x5219;&#x7531;&#x62BD;&#x8C61;&#x65F6;&#x5BF9;&#x5F62;&#x5F0F;&#x505A;&#x7684;&#x5047;&#x8BBE;&#x603B;&#x7ED3;&#x7684;&#x5408;&#x7406;&#x6027;&#x51B3;&#x5B9A;&#xFF0C;&#x8FD9;&#x4E9B;&#x5047;&#x8BBE;&#x603B;&#x7ED3;&#x8D8A;&#x662F;&#x7B26;&#x5408;&#x4EBA;&#x7C7B;&#x7684;&#x4E60;&#x60EF;&#xFF0C;&#x5C31;&#x8D8A;&#x662F;&#x6613;&#x7528;&#xFF1B;<br>
&#x5F53;&#x62BD;&#x8C61;&#x51FA;&#x73B0;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5176;&#x5B9E;&#x4E5F;&#x521B;&#x5EFA;&#x4E86;&#x65B0;&#x7684;&#x5F62;&#x5F0F;&#xFF0C;&#x6216;&#x8005;&#x8BF4;&#x201C;&#x53D1;&#x73B0;&#x201D;&#x4E86;&#x65B0;&#x7684;&#x5F62;&#x5F0F;&#xFF0C;&#x8FD9;&#x79CD;&#x65B0;&#x7684;&#x5F62;&#x5F0F;&#x5728;&#x539F;&#x672C;&#x7684;&#x57FA;&#x672C;&#x5F62;&#x5F0F;&#x4E2D;&#x5F88;&#x96BE;&#x88AB;&#x4EBA;&#x7C7B;&#x53D1;&#x73B0;&#xFF1B;</p>
<p>&#x56E0;&#x6B64;&#xFF0C;&#x51E0;&#x4E4E;&#x6240;&#x6709;&#x8BED;&#x8A00;&#x90FD;&#x65E0;&#x6CD5;&#x505A;&#x5230;&#x6BD4;&#x6C47;&#x7F16;&#x8BED;&#x8A00;&#x201C;&#x66F4;&#x591A;&#x201D;&#xFF0C;&#x800C;&#x53EA;&#x80FD;&#x505A;&#x5230;&#x201C;&#x66F4;&#x597D;&#x201D;&#xFF0C;&#x8BED;&#x8A00;&#x5C42;&#x9762;&#x7684;&#x5404;&#x79CD;&#x6A21;&#x578B;&#x4E0E;&#x6982;&#x5FF5;&#xFF0C;&#x51B3;&#x5B9A;&#x4E86;&#x5B83;&#x6709;&#x591A;&#x597D;&#x7528;&#x3001;&#x591A;&#x201C;&#x5F3A;&#x5927;&#x201D;&#x3002;</p>
<p>&#x8FD9;&#x79CD;&#x7531;&#x7EA6;&#x675F;&#x5F62;&#x6210;&#x6613;&#x7528;&#x6027;&#x7684;&#x5F62;&#x5F0F;&#x5728;&#x8BA1;&#x7B97;&#x673A;&#x7684;&#x4E16;&#x754C;&#x5230;&#x5904;&#x90FD;&#x662F;&#xFF0C;&#x6240;&#x8C13;&#x201C;&#x589E;&#x52A0;&#x4E00;&#x5C42;&#x5C31;&#x80FD;&#x89E3;&#x51B3;&#x95EE;&#x9898;&#x201D;&#x5927;&#x591A;&#x6570;&#x65F6;&#x5019;&#x90FD;&#x6307;&#x7684;&#x662F;&#x8FD9;&#x79CD;&#x60C5;&#x51B5;&#x3002;</p>
<p>&#x8FD9;&#x79CD;&#x73B0;&#x8C61;&#x4E5F;&#x80FD;&#x4E3A;&#x4E86;&#x89E3;&#x76F4;&#x89C9;&#x4E0E;&#x601D;&#x7EF4;&#x7684;&#x5173;&#x7CFB;&#x63D0;&#x4F9B;&#x4E00;&#x4E9B;&#x542F;&#x793A;&#x3002;&#x4EBA;&#x7C7B;&#x7684;&#x76F4;&#x89C9;&#x662F;&#x5F3A;&#x5927;&#x53C8;&#x5F31;&#x5C0F;&#x7684;&#xFF0C;&#x5F3A;&#x5927;&#x662F;&#x56E0;&#x4E3A;&#x8FD9;&#x4E2A;&#x8BCD;&#x8BED;&#x662F;&#x5728;&#x601D;&#x7EF4;&#x8303;&#x7574;&#x4E2D;&#x4F5C;&#x7528;&#x7684;&#xFF0C;&#x800C;&#x76F4;&#x89C9;&#x4F5C;&#x4E3A;&#x601D;&#x7EF4;&#x7684;&#x6E90;&#x6CC9;&#x5FC5;&#x5B9A;&#x96BE;&#x4EE5;&#x3001;&#x6216;&#x8005;&#x8BF4;&#x65E0;&#x6CD5;&#x63CF;&#x8FF0;&#x76F4;&#x89C9;&#xFF0C;&#x6240;&#x4EE5;&#x4F1A;&#x611F;&#x5230;&#x201C;&#x5F3A;&#x5927;&#x201D;&#xFF1B;&#x800C;&#x5F31;&#x5C0F;&#x662F;&#x56E0;&#x4E3A;&#xFF0C;&#x4EBA;&#x7C7B;&#x7684;&#x76F4;&#x89C9;&#x80FD;&#x544A;&#x8BC9;&#x6211;&#x4EEC;&#x7684;&#x5F62;&#x5F0F;&#x592A;&#x5C11;&#x4E86;&#xFF0C;&#x6211;&#x4EEC;&#x5927;&#x591A;&#x6570;&#x65F6;&#x5019;&#x80FD;&#x505A;&#x5230;&#x7684;&#xFF0C;&#x53EA;&#x662F;&#x201C;&#x53D1;&#x73B0;&#x7B80;&#x5355;&#x7684;&#x5F62;&#x5F0F;&#xFF0C;&#x7136;&#x540E;&#x505A;&#x51FA;&#x62BD;&#x8C61;&#xFF0C;&#x8FDB;&#x4E00;&#x6B65;&#x53D1;&#x73B0;&#x62BD;&#x8C61;&#x51FA;&#x6765;&#x7684;&#x5F62;&#x5F0F;&#x201D;&#xFF0C;&#x56E0;&#x4E3A;&#x76F4;&#x89C9;&#x505A;&#x4E0D;&#x5230;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x4EEC;&#x9700;&#x8981;&#x4F5C;&#x4E3A;&#x7406;&#x6027;&#x7684;&#x601D;&#x7EF4;&#x6765;&#x8F85;&#x52A9;&#x6211;&#x4EEC;&#x611F;&#x77E5;&#x56E0;&#x679C;&#x3002;&#x4ECE;&#x4E0A;&#x8FF0;&#x7684;&#x8FC7;&#x7A0B;&#x4E2D;&#xFF0C;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x53D1;&#x73B0;&#xFF0C;&#x601D;&#x7EF4;&#x5176;&#x5B9E;&#x662F;&#x7406;&#x6027;&#x4E3A;&#x5F31;&#x5C0F;&#x7684;&#x4EBA;&#x7C7B;&#x63D0;&#x4F9B;&#x7684;&#x5DE5;&#x5177;&#xFF0C;&#x4F46;&#x56E0;&#x4E3A;&#x5176;&#x6839;&#x672C;&#x662F;&#x62BD;&#x8C61;&#xFF0C;&#x62BD;&#x8C61;&#x7684;&#x8FC7;&#x7A0B;&#x662F;&#x5047;&#x8BBE;&#x548C;&#x603B;&#x7ED3;&#x7684;&#x8FC7;&#x7A0B;&#xFF0C;&#x6240;&#x4EE5;&#x601D;&#x7EF4;&#x4E5F;&#x4F1A;&#x79F0;&#x4E3A;&#x6211;&#x4EEC;&#x7684;&#x684E;&#x688F;&#xFF0C;&#x8FD9;&#x79CD;&#x73B0;&#x8C61;&#x4E0E;&#x6211;&#x4E4B;&#x524D;&#x63CF;&#x8FF0;&#x7684;&#x201C;&#x5F53;&#x6211;&#x62FF;&#x8D77;&#x9524;&#x5B50;&#xFF0C;&#x5C31;&#x4E0D;&#x518D;&#x80FD;&#x7528;&#x624B;&#x6307;&#x62FF;&#x634F;&#x201D;&#x662F;&#x4E00;&#x4E2A;&#x9053;&#x7406;&#x3002;&#x4E5F;&#x6B63;&#x662F;&#x56E0;&#x4E3A;&#x8FD9;&#x79CD;&#x73B0;&#x8C61;&#xFF0C;&#x65F6;&#x5E38;&#x5DE5;&#x4F5C;&#x5728;&#x521B;&#x9020;&#x6027;&#x7684;&#x76F4;&#x89C9;&#x6D3B;&#x52A8;&#x4E2D;&#x7684;&#x7231;&#x56E0;&#x65AF;&#x5766;&#x4F1A;&#x89C9;&#x5F97;&#x201C;&#x8D8A;&#x7B26;&#x5408;&#x76F4;&#x89C9;&#x7684;&#x4E1C;&#x897F;&#x5C31;&#x8D8A;&#x662F;&#x96BE;&#x4EE5;&#x601D;&#x8003;&#x201D;&#x3002;<br>
&#x601D;&#x7EF4;&#x5E26;&#x6765;&#x7684;&#xFF0C;&#x662F;&#x6211;&#x4EEC;&#x5BF9;&#x5F62;&#x5F0F;&#x7684;&#x66F4;&#x654F;&#x9510;&#x7684;&#x611F;&#x77E5;&#xFF0C;&#x5B83;&#x80FD;&#x5E26;&#x6765;&#x66F4;&#x591A;&#x7684;&#x76F4;&#x89C9;&#x53EF;&#x7528;&#x7684;&#x5BA2;&#x4F53;&#xFF0C;&#x56E0;&#x6B64;&#x80FD;&#x591F;&#x6269;&#x5145;&#x6211;&#x4EEC;&#x7684;&#x76F4;&#x89C9;&#xFF0C;&#x4F46;&#x8FD9;&#x79CD;&#x76F4;&#x89C9;&#x5BA2;&#x4F53;&#x4E0D;&#x591F;&#x7EAF;&#x7CB9;&#xFF0C;&#x5B83;&#x4E00;&#x5B9A;&#x5DF2;&#x7ECF;&#x88AB;&#x67D0;&#x79CD;&#x7A0B;&#x5EA6;&#x5730;&#x7279;&#x5316;&#x4E86;&#x3002;<br>
&#x6709;&#x4E86;&#x66F4;&#x591A;&#x7684;&#x76F4;&#x89C9;&#xFF0C;&#x6211;&#x4EEC;&#x5C31;&#x53EF;&#x4EE5;&#x5C06;&#x5B83;&#x4EEC;&#x7528;&#x4E8E;&#x5BF9;&#x5BA2;&#x4F53;&#x7684;&#x6539;&#x9020;&#x4E0A;&#xFF0C;&#x6211;&#x4EEC;&#x5C31;&#x80FD;&#x591F;&#x6709;&#x673A;&#x4F1A;&#x83B7;&#x5F97;&#x66F4;&#x5F3A;&#x7684;&#x610F;&#x5FD7;&#x3002;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[信号相关笔记（《Linux&UNIX系统编程手册》）]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#x4FE1;&#x53F7;&#x7528;&#x4E8E;&#x8FDB;&#x7A0B;&#x95F4;&#x4FE1;&#x606F;&#x7684;&#x4F20;&#x9012;&#xFF0C;&#x5BF9;&#x4FE1;&#x53F7;&#x7684;&#x5904;&#x7406;&#x5C5E;&#x4E8E;&#x5F02;&#x6B65;&#x8FC7;&#x7A0B;&#xFF0C;&#x540C;&#x65F6;&#x4F1A;&#x4E2D;&#x65AD;&#x8FDB;&#x7A0B;&#x5F53;&#x524D;&#x7684;&#x6267;&#x884C;&#xFF0C;&#x7C7B;&#x4F3C;&#x786C;&#x4EF6;&#x4E2D;&#x603B;&#x7EBF;&#x7684;&#x4E2D;&#x65AD;&#x673A;</p>]]></description><link>https://blog.ykai.cc/linux-unix-2/</link><guid isPermaLink="false">6331df653945280001365b90</guid><category><![CDATA[Linux]]></category><category><![CDATA[《Linux&UNIX系统编程手册》]]></category><dc:creator><![CDATA[Yingkai Dang]]></dc:creator><pubDate>Sun, 04 Aug 2019 02:02:07 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x4FE1;&#x53F7;&#x7528;&#x4E8E;&#x8FDB;&#x7A0B;&#x95F4;&#x4FE1;&#x606F;&#x7684;&#x4F20;&#x9012;&#xFF0C;&#x5BF9;&#x4FE1;&#x53F7;&#x7684;&#x5904;&#x7406;&#x5C5E;&#x4E8E;&#x5F02;&#x6B65;&#x8FC7;&#x7A0B;&#xFF0C;&#x540C;&#x65F6;&#x4F1A;&#x4E2D;&#x65AD;&#x8FDB;&#x7A0B;&#x5F53;&#x524D;&#x7684;&#x6267;&#x884C;&#xFF0C;&#x7C7B;&#x4F3C;&#x786C;&#x4EF6;&#x4E2D;&#x603B;&#x7EBF;&#x7684;&#x4E2D;&#x65AD;&#x673A;&#x5236;&#xFF0C;&#x6240;&#x4EE5;&#x4FE1;&#x53F7;&#x4E5F;&#x53EB;&#x4F5C;&#x201C;&#x8F6F;&#x4EF6;&#x4E2D;&#x65AD;&#x201D;&#x3002;</p>
<h2 id>&#x4FE1;&#x53F7;&#x7684;&#x751F;&#x6210;&#x4E0E;&#x4F20;&#x9012;&#x65F6;&#x673A;</h2>
<ul>
<li>&#x4ECE;&#x8FDB;&#x7A0B;&#x7684;&#x89D2;&#x5EA6;&#x6765;&#x8BF4;&#xFF1A;&#x4FE1;&#x53F7;&#x4E00;&#x822C;&#x4E3A;&#x5F02;&#x6B65;&#x4EA7;&#x751F;&#xFF0C;&#x7A0B;&#x5E8F;&#x65E0;&#x6CD5;&#x9884;&#x6D4B;&#x4FE1;&#x53F7;&#x4F55;&#x65F6;&#x5230;&#x6765;&#xFF1B;&#x4F46;&#x6709;&#x4E2A;&#x4F8B;&#x5916;&#xFF0C;&#x4F7F;&#x7528;<code>raise</code>&#x3001;<code>kill</code>&#x5411;&#x8FDB;&#x7A0B;&#x81EA;&#x8EAB;&#x53D1;&#x9001;&#x7684;&#x4FE1;&#x53F7;&#x662F;&#x540C;&#x6B65;&#x7684;&#xFF0C;&#x5373;<strong>&#x5728;&#x8FD9;&#x4E9B;&#x8C03;&#x7528;&#x8FD4;&#x56DE;&#x65F6;&#xFF0C;&#x4FE1;&#x53F7;&#x5FC5;&#x5B9A;&#x5DF2;&#x7ECF;&#x4F20;&#x9012;&#x5230;</strong>&#x3002;</li>
<li>&#x4ECE;&#x5185;&#x6838;&#x7684;&#x89D2;&#x5EA6;&#x770B;&#xFF1A;&#x4FE1;&#x53F7;&#x4F1A;&#x5728;&#x7531;&#x5185;&#x6838;&#x6001;&#x8F6C;&#x4E3A;&#x7528;&#x6237;&#x6001;&#x65F6;&#x88AB;&#x5904;&#x7406;&#xFF1A;&#x8981;&#x4E48;&#x8FDB;&#x7A0B;&#x88AB;&#x91CD;&#x65B0;&#x8C03;&#x5EA6;&#xFF0C;&#x8981;&#x4E48;&#x8FDB;&#x7A0B;&#x4ECE;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x4E2D;&#x8FD4;&#x56DE;&#x3002;&#x6240;&#x4EE5;&#xFF0C;&#x5728;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#x4E2D;&#x8FDB;&#x884C;&#x7684;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x6709;&#x53EF;&#x80FD;&#x5BFC;&#x81F4;&#x53E6;&#x4E00;&#x4E2A;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#x7684;&#x8C03;&#x7528;&#x3002;</li>
</ul>
<h2 id>&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;</h2>
<p>&#x5927;&#x591A;&#x6570;&#x4FE1;&#x53F7;&#x53EF;&#x4EE5;&#x6709;&#x7528;&#x6237;&#x81EA;&#x5B9A;&#x4E49;&#x51FD;&#x6570;&#xFF0C;&#x8FD9;&#x4E9B;&#x51FD;&#x6570;&#x5728;&#x4FE1;&#x53F7;&#x5230;&#x6765;&#x65F6;&#x88AB;&#x8C03;&#x7528;&#xFF0C;&#x4F7F;&#x7528;<code>signal</code>&#x6216;&#x8005;<code>sigaction</code>&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x6765;&#x8BBE;&#x7F6E;&#x3002;</p>
<p>&#x7531;&#x4E8E;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#x8C03;&#x7528;&#x65F6;&#x673A;&#x7684;&#x7279;&#x6B8A;&#x6027;&#xFF0C;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#x7684;&#x8981;&#x6C42;&#x6BD4;&#x8F83;&#x4E25;&#x683C;&#xFF0C;&#x5FC5;&#x987B;&#x4E3A;&#x201C;&#x5F02;&#x6B65;&#x4FE1;&#x53F7;&#x53EF;&#x91CD;&#x5165;&#x201D;&#x51FD;&#x6570;&#xFF0C;&#x4EE5;&#x4FDD;&#x8BC1;&#x8BBF;&#x95EE;&#x7684;&#x5B89;&#x5168;&#x3002;&#x201C;&#x5F02;&#x6B65;&#x4FE1;&#x53F7;&#x53EF;&#x91CD;&#x5165;&#x201D;&#x51FD;&#x6570;&#x88AB;&#x5B9A;&#x4E49;&#x4E3A;&#xFF1A;&#x4E00;&#x4E2A;&#x51FD;&#x6570;&#x8981;&#x4E48;&#x53EF;&#x91CD;&#x5165;&#xFF0C;&#x8981;&#x4E48;&#x4E0D;&#x53EF;&#x88AB;&#x4FE1;&#x53F7;&#x4E2D;&#x65AD;&#x3002;UNIX&#x7684;&#x51E0;&#x4E2A;&#x6807;&#x51C6;&#xFF08;POSIX&#x3001;SUS&#xFF09;&#x5B9A;&#x4E49;&#x4E86;&#x4E00;&#x4E2A;&#x5F02;&#x6B65;&#x4FE1;&#x53F7;&#x53EF;&#x91CD;&#x5165;&#x7684;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x7684;&#x5217;&#x8868;&#xFF0C;&#x4F46;Linux&#x5E76;&#x672A;&#x5B8C;&#x5168;&#x5B9E;&#x73B0;&#x8FD9;&#x4E9B;&#x51FD;&#x6570;&#x7684;&#x53EF;&#x91CD;&#x5165;&#x6027;&#x3002;</p>
<h2 id>&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#x7684;&#x5D4C;&#x5957;&#x8C03;&#x7528;</h2>
<p>&#x5982;&#x4E0A;&#x6240;&#x8FF0;&#xFF1A;&#x5982;&#x679C;&#x5728;A&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#x4E2D;&#x6CA1;&#x6709;&#x963B;&#x585E;&#x67D0;&#x4E2A;&#x4FE1;&#x53F7;B&#xFF0C;&#x90A3;&#x4E48;&#x5728;A&#x7684;&#x5904;&#x7406;&#x51FD;&#x6570;&#x4E2D;&#xFF0C;&#x5982;&#x679C;&#x6709;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#xFF0C;&#x90A3;&#x4E48;&#x5728;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x8FD4;&#x56DE;&#x65F6;&#x4FE1;&#x53F7;B&#x7684;&#x5230;&#x6765;&#x662F;&#x4F1A;&#x6253;&#x65AD;A&#x7684;&#x5904;&#x7406;&#x51FD;&#x6570;&#x7684;&#x6267;&#x884C;&#xFF0C;&#x800C;&#x53BB;&#x6267;&#x884C;B&#x7684;&#x5904;&#x7406;&#x51FD;&#x6570;&#x3002;&#x6CE8;&#x610F;&#xFF0C;&#x6B64;&#x65F6;A&#x7684;&#x5904;&#x7406;&#x51FD;&#x6570;&#x4ECD;&#x672A;&#x6267;&#x884C;&#x5B8C;&#xFF0C;&#x5728;&#x4FE1;&#x53F7;A&#x4E0A;&#x8BBE;&#x7F6E;&#x7684;&#x963B;&#x585E;&#x63A9;&#x7801;&#x4ECD;&#x672A;&#x88AB;&#x64A4;&#x9500;&#xFF0C;&#x4FE1;&#x53F7;B&#x7684;&#x5904;&#x7406;&#x51FD;&#x6570;&#x4E2D;&#x7684;&#x63A9;&#x7801;&#x662F;AB&#x63A9;&#x7801;&#x7684;&#x4E0E;&#x3002;</p>
<h2 id>&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#x4E2D;&#x8981;&#x6CE8;&#x610F;&#x7684;&#x51E0;&#x70B9;</h2>
<ul>
<li>&#x8981;&#x4E48;&#x4E0D;&#x4F7F;&#x7528;&#x4E0D;&#x662F;&#x201C;&#x5F02;&#x6B65;&#x4FE1;&#x53F7;&#x53EF;&#x91CD;&#x5165;&#x201D;&#x7684;&#x51FD;&#x6570;&#xFF0C;&#x8981;&#x4E48;&#x5728;&#x7A0B;&#x5E8F;&#x4E0D;&#x5B89;&#x5168;&#x7684;&#x5730;&#x65B9;&#x4E2D;&#x963B;&#x585E;&#x8BE5;&#x4FE1;&#x53F7;&#xFF08;&#x8FD9;&#x91CC;&#x7684;&#x4E0D;&#x5B89;&#x5168;&#x7684;&#x5730;&#x65B9;&#x6307;&#xFF1A;&#x7A0B;&#x5E8F;&#x4E2D;&#x4F7F;&#x5F97;&#x8BE5;&#x51FD;&#x6570;&#x53D8;&#x5F97;&#x201C;&#x4E0D;&#x53EF;&#x91CD;&#x5165;&#x201D;&#x7684;&#x90E8;&#x5206;&#xFF09;&#xFF1B;</li>
<li>&#x7531;&#x4E8E;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#x5728;&#x5F53;&#x524D;&#x7EBF;&#x7A0B;&#x6267;&#x884C;&#xFF0C;&#x56E0;&#x6B64;<code>errno</code>&#x53D8;&#x91CF;&#x4E5F;&#x5C31;&#x53D8;&#x4E3A;&#x4E0D;&#x5B89;&#x5168;&#x7684;&#x4E86;&#xFF0C;&#x6240;&#x4EE5;&#xFF0C;&#x4E00;&#x822C;&#x4F1A;&#x5728;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#x7684;&#x51FA;&#x53E3;&#x548C;&#x5165;&#x53E3;&#x5907;&#x4EFD;&#x6062;&#x590D;<code>errno</code>&#x7684;&#x503C;&#xFF1B;</li>
<li>&#x5728;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#x4E2D;&#x4F7F;&#x7528;<code>longjmp</code>&#x8FDB;&#x884C;&#x975E;&#x672C;&#x5730;&#x8DF3;&#x8F6C;&#x65F6;&#xFF0C;&#x9700;&#x8981;&#x6CE8;&#x610F;&#x7684;&#x662F;&#xFF0C;&#x4E0D;&#x662F;&#x6240;&#x6709;UNIX&#x7CFB;&#x7EDF;&#x90FD;&#x4FDD;&#x8BC1;<code>longjmp</code>&#x8DF3;&#x8F6C;&#x51FA;&#x53BB;&#x65F6;&#x4F1A;&#x53D6;&#x6D88;&#x5BF9;&#x5F53;&#x524D;&#x4FE1;&#x53F7;&#x7684;&#x963B;&#x585E;&#xFF08;&#x8FDB;&#x5165;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#x524D;&#x4F1A;&#x963B;&#x585E;&#x5BF9;&#x5E94;&#x7684;&#x4FE1;&#x53F7;&#xFF09;&#xFF0C;&#x56E0;&#x6B64;&#xFF0C;&#x9700;&#x8981;&#x4F7F;&#x7528;<code>sigsetjmp</code>&#x548C;<code>siglongjmp</code>&#x51FD;&#x6570;&#x8FDB;&#x884C;&#x975E;&#x672C;&#x5730;&#x8DF3;&#x8F6C;&#xFF1B;</li>
</ul>
<h2 id>&#x7279;&#x6B8A;&#x4FE1;&#x53F7;&#x7684;&#x7279;&#x6B8A;&#x8868;&#x73B0;</h2>
<ol>
<li><code>SIGKILL</code>&#x548C;<code>SIGSTOP</code>&#x4FE1;&#x53F7;&#x5747;&#x65E0;&#x6CD5;&#x963B;&#x585E;&#x6216;&#x8005;&#x5FFD;&#x7565;&#xFF0C;&#x5C1D;&#x8BD5;&#x4FEE;&#x6539;&#x9ED8;&#x8BA4;&#x884C;&#x4E3A;&#x5219;&#x4F1A;&#x51FA;&#x9519;&#xFF1B;</li>
<li><code>SIGCONT</code>&#x4FE1;&#x53F7;&#x53EF;&#x4EE5;&#x88AB;&#x963B;&#x585E;&#x6216;&#x8005;&#x5FFD;&#x7565;&#xFF0C;&#x4F46;&#x662F;&#x5373;&#x4F7F;&#x8FD9;&#x6837;&#xFF0C;&#x88AB;&#x6682;&#x505C;&#x7684;&#x8FDB;&#x7A0B;&#x4ECD;&#x7136;&#x4F1A;&#x88AB;&#x5524;&#x9192;&#x3002;&#x540C;&#x65F6;&#xFF0C;&#x8FDB;&#x7A0B;&#x6536;&#x5230;<code>SIGCONT</code>&#x4FE1;&#x53F7;&#x540E;&#xFF0C;&#x4F1A;&#x5C06;&#x6B63;&#x5904;&#x4E8E;&#x7B49;&#x5F85;&#x72B6;&#x6001;&#x7684;<code>SIGSTOP</code>&#x4FE1;&#x53F7;&#x6E05;&#x9664;&#x6389;&#xFF1B;&#x540C;&#x6837;&#x7684;&#xFF0C;&#x6536;&#x5230;<code>SIGSTOP</code>&#x4F1A;&#x5C06;&#x7B49;&#x5F85;&#x7684;<code>SIGCONT</code>&#x4FE1;&#x53F7;&#x6E05;&#x9664;&#xFF1B;</li>
<li><code>SIGCHLD</code>&#x4FE1;&#x53F7;&#xFF0C;&#x9ED8;&#x8BA4;&#x5728;&#x5B50;&#x8FDB;&#x7A0B;&#x7ED3;&#x675F;&#x6216;&#x505C;&#x6B62;&#x65F6;&#x89E6;&#x53D1;&#x3002;&#x5982;&#x679C;&#x6307;&#x5B9A;<code>SA_NOCLDSTOP</code>&#x6807;&#x5FD7;&#xFF0C;&#x5B50;&#x8FDB;&#x7A0B;&#x56E0;&#x4FE1;&#x53F7;&#x88AB;&#x505C;&#x6B62;&#xFF08;<code>STOP</code>&#xFF09;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x4E0D;&#x4F1A;&#x89E6;&#x53D1;&#x8BE5;&#x4FE1;&#x53F7;&#xFF1B;&#x5982;&#x679C;&#x6307;&#x5B9A;<code>SA_NOCLDWAIT</code>&#x6807;&#x5FD7;&#xFF0C;&#x5B50;&#x8FDB;&#x7A0B;&#x7ED3;&#x675F;&#x540E;&#x4F1A;&#x88AB;&#x7CFB;&#x7EDF;&#x76F4;&#x63A5;&#x6E05;&#x7406;&#xFF0C;&#x4E0D;&#x4F1A;&#x4EA7;&#x751F;&#x50F5;&#x5C38;&#x8FDB;&#x7A0B;&#xFF0C;&#x4F46;&#x4ECD;&#x4F1A;&#x89E6;&#x53D1;&#x7236;&#x8FDB;&#x7A0B;&#x7684;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#xFF1B;</li>
<li>&#x663E;&#x5F0F;&#x7684;&#x5C06;<code>SIGCHLD</code>&#x4FE1;&#x53F7;&#x5FFD;&#x7565;&#xFF08;<code>SIG_IGN</code>&#xFF09;&#x4E5F;&#x53EF;&#x4EE5;&#x8FBE;&#x5230;&#x7B2C;&#x4E09;&#x70B9;&#x6240;&#x8FF0;&#x7684;&#x6548;&#x679C;&#x3002;</li>
</ol>
<h2 id>&#x5B9E;&#x65F6;&#x4FE1;&#x53F7;</h2>
<p>&#x5B9E;&#x65F6;&#x4FE1;&#x53F7;&#x662F;&#x6807;&#x51C6;&#x4FE1;&#x53F7;&#x4EE5;&#x540E;&#x7684;&#x4FE1;&#x53F7;&#xFF0C;&#x5927;&#x591A;&#x6570;&#x6CA1;&#x6709;&#x7279;&#x5B9A;&#x7684;&#x610F;&#x4E49;&#xFF0C;&#x4F9B;&#x7A0B;&#x5E8F;&#x81EA;&#x8EAB;&#x4F7F;&#x7528;&#x3002;&#x5B9E;&#x65F6;&#x4FE1;&#x53F7;&#x4E0E;&#x6807;&#x51C6;&#x4FE1;&#x53F7;&#x76F8;&#x6BD4;&#xFF0C;&#x63D0;&#x4F9B;&#x4E86;&#x961F;&#x5217;&#x5316;&#x7BA1;&#x7406;&#xFF0C;&#x5177;&#x6709;&#x7279;&#x5B9A;&#x987A;&#x5E8F;&#xFF0C;&#x5E76;&#x4E14;&#x53EF;&#x4EE5;&#x9644;&#x5E26;&#x5C11;&#x91CF;&#x6570;&#x636E;&#xFF08;&#x4E00;&#x4E2A;&#x6574;&#x578B;&#x6216;&#x4E00;&#x4E2A;&#x6307;&#x9488;&#xFF09;&#x3002;&#x5B9E;&#x65F6;&#x4FE1;&#x53F7;&#x6700;&#x5927;&#x548C;&#x6700;&#x5C0F;&#x503C;&#x5B9A;&#x4E49;&#x4E3A;<code>SIGRTMIN</code>&#x3001;<code>SIGRTMAX</code>&#x3002;</p>
<h2 id>&#x4FE1;&#x53F7;&#x7684;&#x540C;&#x6B65;&#x7B49;&#x5F85;</h2>
<p><code>sigsuspend</code>, <code>sigwaitinfo</code>, <code>signalfd</code>&#x76F8;&#x5173;&#x7684;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x63D0;&#x4F9B;&#x4E86;&#x5C06;&#x4FE1;&#x53F7;&#x540C;&#x6B65;&#x5904;&#x7406;&#x7684;&#x529F;&#x80FD;&#xFF0C;&#x8BE6;&#x7EC6;&#x4ECB;&#x7ECD;&#x89C1;&#x4E0B;&#x3002;</p>
<h2 id>&#x76F8;&#x5173;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;</h2>
<h3 id="signal">signal</h3>
<p>&#x7B80;&#x5355;&#x8BBE;&#x7F6E;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;</p>
<h3 id="sigaction">sigaction</h3>
<p>&#x4E3A;&#x4E00;&#x4E2A;&#x4FE1;&#x53F7;&#x8BBE;&#x7F6E;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#xFF0C;&#x4F46;&#x662F;&#x652F;&#x6301;&#x66F4;&#x591A;&#x529F;&#x80FD;&#x3002;</p>
<p>&#x6BD4;&#x5982;&#xFF0C;&#x652F;&#x6301;&#x5728;&#x6267;&#x884C;&#x5BF9;&#x5E94;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#x524D;&#x81EA;&#x52A8;&#x963B;&#x585E;&#x4FE1;&#x53F7;&#x81EA;&#x8EAB;&#x4E0E;&#x4E00;&#x7EC4;&#x6307;&#x5B9A;&#x7684;&#x4FE1;&#x53F7;&#xFF0C;&#x5E76;&#x5728;&#x5904;&#x7406;&#x51FD;&#x6570;&#x8FD4;&#x56DE;&#x4E4B;&#x540E;&#x81EA;&#x52A8;&#x6E05;&#x9664;&#x963B;&#x585E;&#x3002;&#x4E0E;&#x5728;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#x4E2D;&#x624B;&#x52A8;&#x963B;&#x585E;&#x6240;&#x9700;&#x51FD;&#x6570;&#x4E0D;&#x540C;&#xFF0C;<code>sigaction</code>&#x6240;&#x505A;&#x7684;&#x963B;&#x585E;&#x662F;&#x5728;&#x5904;&#x7406;&#x51FD;&#x6570;&#x88AB;&#x6267;&#x884C;&#x4E4B;&#x524D;&#xFF08;&#x6216;&#x8BB8;&#x662F;&#x5185;&#x6838;&#x6001;&#x65F6;&#xFF09;&#xFF0C;&#x6240;&#x4EE5;&#x53EF;&#x4EE5;&#x4FDD;&#x8BC1;&#x963B;&#x585E;&#x64CD;&#x4F5C;&#x7684;&#x6709;&#x6548;&#x6027;&#x4E0D;&#x4F1A;&#x53D7;&#x5230;&#x4FE1;&#x53F7;&#x5F02;&#x6B65;&#x6027;&#x7684;&#x5F71;&#x54CD;&#x3002;&#x6BD4;&#x5982;&#xFF1A;</p>
<pre><code class="language-c">void
handler(int sig)
{
    sigprocmask(SIG_SETMASK, &amp;mask, &amp;prevmask);  // block some signal
    /* DO SOMETHING*/
    sigprocmask(SIG_SETMASK, &amp;prevmask, NULL);   // restore
}
</code></pre>
<p>&#x5982;&#x679C;&#x8981;&#x88AB;&#x963B;&#x585E;&#x7684;&#x4FE1;&#x53F7;&#x5728;&#x7B2C;&#x56DB;&#x884C;&#x524D;&#x6765;&#x5230;&#xFF0C;&#x90A3;&#x4E48;&#x7B2C;&#x56DB;&#x884C;&#x5C31;&#x6CA1;&#x8D77;&#x5230;&#x5B83;&#x5E94;&#x6709;&#x7684;&#x4F5C;&#x7528;&#x3002;</p>
<p>&#x53E6;&#x5916;&#xFF0C;<code>sigaction</code>&#x8FD8;&#x652F;&#x6301;&#x81EA;&#x52A8;&#x91CD;&#x542F;&#x88AB;&#x4E2D;&#x65AD;&#x7684;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x3001;&#x4E0D;&#x5C06;&#x5B50;&#x8FDB;&#x7A0B;&#x8F6C;&#x4E3A;&#x50F5;&#x5C38;&#x8FDB;&#x7A0B;&#x3001;&#x4F7F;&#x7528;&#x81EA;&#x5B9A;&#x4E49;&#x7684;&#x6808;&#x6267;&#x884C;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#x7B49;&#x7B49;&#x529F;&#x80FD;&#x3002;</p>
<h3 id="sigprocmask">sigprocmask</h3>
<p>&#x8BE5;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x7528;&#x4E8E;&#x8BBE;&#x7F6E;&#x548C;&#x67E5;&#x770B;&#x201C;&#x963B;&#x585E;&#x4FE1;&#x53F7;&#x5217;&#x8868;&#x201D;&#x3002;</p>
<p>&#x5185;&#x6838;&#x4E3A;&#x8FDB;&#x7A0B;&#xFF08;&#x7EBF;&#x7A0B;&#xFF09;&#x7EF4;&#x62A4;&#x4E86;&#x4E00;&#x7EC4;&#x88AB;&#x963B;&#x585E;&#x7684;&#x4FE1;&#x53F7;&#x5217;&#x8868;&#xFF0C;&#x5904;&#x4E8E;&#x8BE5;&#x5217;&#x8868;&#x4E2D;&#x7684;&#x4FE1;&#x53F7;&#x4E0D;&#x4F1A;&#x88AB;&#x8FDB;&#x7A0B;&#x63A5;&#x6536;&#x5230;&#xFF0C;&#x800C;&#x662F;&#x7B49;&#x5F85;&#x8FDB;&#x7A0B;&#x505C;&#x6B62;&#x963B;&#x585E;&#x3002;&#x4FE1;&#x53F7;&#x88AB;&#x963B;&#x585E;&#x65F6;&#xFF0C;&#x5BF9;&#x65B0;&#x5230;&#x7684;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x65B9;&#x5F0F;&#x6709;&#x6392;&#x961F;&#x548C;&#x4E0D;&#x6392;&#x961F;&#x4E24;&#x79CD;&#xFF0C;&#x6807;&#x51C6;&#x4FE1;&#x53F7;&#x4E0D;&#x6392;&#x961F;&#xFF0C;&#x5B9E;&#x65F6;&#x4FE1;&#x53F7;&#x6392;&#x961F;&#x3002;</p>
<h3 id="sigpenging">sigpenging</h3>
<p>&#x7528;&#x4E8E;&#x67E5;&#x770B;&#x7531;&#x4E8E;&#x963B;&#x585E;&#x800C;&#x6B63;&#x5728;&#x7B49;&#x5F85;&#x7684;&#x4FE1;&#x53F7;&#x3002;</p>
<h3 id="sigsuspend">sigsuspend</h3>
<p>&#x5728;&#x66F4;&#x6539;&#x4FE1;&#x53F7;&#x63A9;&#x7801;&#x7684;&#x4E4B;&#x540E;&#xFF0C;&#x6302;&#x8D77;&#x8FDB;&#x7A0B;&#x76F4;&#x5230;&#x65B0;&#x7684;&#x4FE1;&#x53F7;&#x5230;&#x8FBE;&#xFF0C;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#x8FD4;&#x56DE;&#x540E;&#xFF0C;&#x81EA;&#x52A8;&#x8FD8;&#x539F;&#x4FE1;&#x53F7;&#x63A9;&#x7801;&#x3002;</p>
<p>&#x6709;&#x65F6;&#x5019;&#x5B9E;&#x73B0;&#x8FD9;&#x6837;&#x7684;&#x529F;&#x80FD;&#xFF1A;&#x4FE1;&#x53F7;&#x539F;&#x672C;&#x88AB;&#x963B;&#x585E;&#xFF0C;&#x73B0;&#x5728;&#x9700;&#x8981;&#x53D6;&#x6D88;&#x963B;&#x585E;&#xFF0C;&#x76F4;&#x5230;&#x7B2C;&#x4E00;&#x4E2A;&#x4FE1;&#x53F7;&#x5230;&#x8FBE;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x5E0C;&#x671B;&#x540C;&#x6B65;&#x7B49;&#x5F85;&#x4E00;&#x4E2A;&#x4FE1;&#x53F7;&#x3002;&#x5982;&#x679C;&#x6309;&#x7167;&#x5982;&#x4E0B;&#x65B9;&#x5F0F;&#x5199;&#xFF1A;</p>
<pre><code class="language-c">sigprocmask(SIG_SETMASK, &amp;mask, &amp;prevmask);
pause();
sigprocmask(SIG_SETMASK, &amp;prevmask, NULL);
</code></pre>
<p>&#x770B;&#x8D77;&#x6765;&#x80FD;&#x5B9E;&#x73B0;&#x6240;&#x9700;&#x7684;&#x529F;&#x80FD;&#xFF1A;&#x5148;&#x8BBE;&#x7F6E;&#x65B0;&#x7684;&#x963B;&#x585E;&#x63A9;&#x7801;&#xFF0C;&#x7136;&#x540E;&#x7B49;&#x5F85;&#x4FE1;&#x53F7;&#x5230;&#x8FBE;&#xFF0C;&#x6700;&#x540E;&#x6062;&#x590D;&#x3002;&#x4F46;&#x662F;&#x5982;&#x679C;&#x4FE1;&#x53F7;&#x5728;<code>pause</code>&#x8C03;&#x7528;&#x4E4B;&#x524D;&#x3001;&#x7B2C;&#x4E00;&#x4E2A;<code>sigprocmask</code>&#x4E4B;&#x540E;&#x5230;&#x8FBE;&#xFF0C;&#x90A3;&#x4E48;&#x7A0B;&#x5E8F;&#x7684;&#x8868;&#x73B0;&#x5C31;&#x4E0D;&#x6B63;&#x786E;&#x4E86;&#xFF0C;&#x4E4B;&#x540E;&#x7684;<code>pause</code>&#x8FD4;&#x56DE;&#x5E76;&#x4E0D;&#x662F;&#x56E0;&#x4E3A;&#x4FE1;&#x53F7;&#x7684;&#x7B2C;&#x4E00;&#x6B21;&#x5230;&#x8FBE;&#x3002;&#x5B9E;&#x8D28;&#x4E0A;&#xFF0C;&#x8FD9;&#x662F;&#x4E00;&#x4E2A;&#x7ADE;&#x6001;&#x95EE;&#x9898;&#xFF0C;&#x7ADE;&#x6001;&#x7684;&#x53CC;&#x65B9;&#x4E3A;&#x4E3B;&#x7A0B;&#x5E8F;&#x548C;&#x4FE1;&#x53F7;&#x7684;&#x5904;&#x7406;&#x51FD;&#x6570;&#x3002;</p>
<p><code>sigsuspend</code>&#x5C31;&#x53EF;&#x4EE5;&#x89E3;&#x51B3;&#x8FD9;&#x4E2A;&#x95EE;&#x9898;&#xFF0C;&#x8FD9;&#x4E2A;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x5C06;&#x4E0A;&#x9762;&#x4E09;&#x4E2A;&#x64CD;&#x4F5C;&#x5C01;&#x88C5;&#x6210;&#x4E00;&#x4E2A;&#x539F;&#x5B50;&#x64CD;&#x4F5C;&#xFF0C;&#x4EE5;&#x89E3;&#x51B3;&#x8FD9;&#x91CC;&#x7684;&#x7ADE;&#x6001;&#x95EE;&#x9898;&#x3002;&#x5982;&#x679C;<code>sigsuspend</code>&#x88AB;&#x4FE1;&#x53F7;&#x6253;&#x65AD;&#xFF08;&#x5B8C;&#x6210;&#x76EE;&#x6807;&#xFF09;&#xFF0C;&#x5219;&#x8FD4;&#x56DE;<code>-1</code>&#xFF0C;<code>errno</code>&#x8BBE;&#x7F6E;&#x4E3A;<code>EINTR</code>&#x3002;</p>
<h3 id="sigwaitinfo">sigwaitinfo</h3>
<p>&#x8FD9;&#x662F;&#x7C7B;&#x4F3C;<code>sigsuspend</code>&#x7684;&#x4E00;&#x4E2A;&#x8C03;&#x7528;&#xFF0C;&#x4E5F;&#x662F;&#x5B9E;&#x73B0;&#x4FE1;&#x53F7;&#x7684;&#x540C;&#x6B65;&#x7B49;&#x5F85;&#x3002;&#x901A;&#x8FC7;&#x53C2;&#x6570;<code>mask</code>&#x6765;&#x6307;&#x5B9A;&#x9700;&#x8981;&#x7B49;&#x5F85;&#x7684;&#x4FE1;&#x53F7;&#x3002;</p>
<p>&#x4F46;&#x662F;&#x4E0E;<code>sigsuspend</code>&#x4E0D;&#x540C;&#x4E4B;&#x5904;&#x5728;&#x4E8E;&#xFF1A;</p>
<ol>
<li><code>sigwaitinfo</code>&#x5E76;&#x4E0D;&#x4F1A;&#x53BB;&#x8C03;&#x7528;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#xFF0C;&#x800C;&#x662F;&#x76F4;&#x63A5;&#x8FD4;&#x56DE;&#x4FE1;&#x53F7;&#x7684;&#x7F16;&#x53F7;&#x548C;&#x4E00;&#x4E2A;<code>siginfo_t</code>&#x7ED3;&#x6784;&#x4F53;&#xFF1B;</li>
<li><code>sigwaitinfo</code>&#x7684;&#x53C2;&#x6570;<code>mask</code>&#x5E76;&#x4E0D;&#x662F;&#x7528;&#x6765;&#x66FF;&#x6362;&#x5F53;&#x524D;&#x7684;<code>mask</code>&#x7684;&#xFF0C;&#x800C;&#x662F;&#x6307;&#x5B9A;&#x9700;&#x8981;&#x7B49;&#x5F85;&#x7684;&#x4FE1;&#x53F7;&#xFF0C;&#x76F8;&#x53CD;&#xFF0C;<code>sigsuspend</code>&#x7684;<code>mask</code>&#x53C2;&#x6570;&#x4F1A;&#x88AB;&#x7528;&#x6765;&#x66FF;&#x6362;&#x5F53;&#x524D;&#x8FDB;&#x7A0B;&#x7684;mask&#x3002;</li>
</ol>
<p>&#x9700;&#x8981;&#x6CE8;&#x610F;&#x7684;&#x662F;&#xFF0C;&#x5728;<code>sigwaitinfo</code>&#x4E00;&#x4E2A;&#x4FE1;&#x53F7;&#x524D;&#xFF0C;&#x9700;&#x8981;&#x663E;&#x5F0F;&#x5730;&#x5C06;&#x8FD9;&#x4E2A;&#x4FE1;&#x53F7;&#x963B;&#x585E;&#xFF08;&#x963B;&#x585E;&#x4E4B;&#x540E;<code>sigwaitinfo</code>&#x4ECD;&#x7136;&#x53EF;&#x4EE5;&#x63A5;&#x6536;&#x5230;&#x4FE1;&#x53F7;&#x7684;&#x4F20;&#x9012;&#xFF09;&#xFF1B;&#x5982;&#x679C;<code>sigwaitinfo</code>&#x7684;&#x65F6;&#x5019;&#x6CA1;&#x6709;&#x5BF9;&#x76F8;&#x5E94;&#x7684;&#x4FE1;&#x53F7;&#x8FDB;&#x884C;&#x963B;&#x585E;&#xFF0C;<code>sigwaitinfo</code>&#x7684;&#x7ED3;&#x679C;&#x672A;&#x5B9A;&#x4E49;&#x3002;&#x901A;&#x5E38;&#x4F1A;&#x5728;<code>sigwaitinfo</code>&#x4E4B;&#x524D;&#x963B;&#x585E;&#x6240;&#x6709;&#x7684;&#x4FE1;&#x53F7;&#x3002;</p>
<p><code>sigwaitinfo</code>&#x6709;&#x53EF;&#x80FD;&#x88AB;&#x5176;&#x4ED6;&#x672A;&#x963B;&#x585E;&#x7684;&#x4FE1;&#x53F7;&#x6253;&#x65AD;&#xFF0C;&#x6B64;&#x65F6;<code>errno</code>&#x4E3A;<code>EINTR</code>&#x3002;</p>
<h3 id="signalfd">signalfd</h3>
<p>&#x8FD9;&#x4E5F;&#x662F;&#x7528;&#x6765;&#x4F7F;&#x4FE1;&#x53F7;&#x540C;&#x6B65;&#x63A5;&#x6536;&#x7684;&#x4E00;&#x4E2A;&#x8C03;&#x7528;&#xFF0C;&#x8FD9;&#x4E2A;&#x8C03;&#x7528;&#x4E3A;&#x4FE1;&#x53F7;&#x7684;&#x63A5;&#x53D7;&#x521B;&#x5EFA;&#x4E86;&#x4E00;&#x4E2A;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;&#xFF0C;&#x5F53;&#x65B0;&#x7684;&#x4FE1;&#x53F7;&#x5230;&#x8FBE;&#x65F6;&#xFF0C;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;&#x53D8;&#x4E3A;&#x53EF;&#x8BFB;&#x72B6;&#x6001;&#x3002;&#x53EF;&#x4EE5;&#x914D;&#x5408;<code>select</code>&#x7B49;&#x5B8C;&#x6210;&#x540C;&#x6B65;&#x3002;</p>
<h3 id="sigset_t">sigset_t</h3>
<p>&#x4FE1;&#x53F7;&#x96C6;&#x7684;&#x6570;&#x636E;&#x7C7B;&#x578B;&#xFF0C;&#x7528;&#x4E8E;&#x63CF;&#x8FF0;&#x4E00;&#x7EC4;&#x4FE1;&#x53F7;&#xFF0C;&#x5B9E;&#x73B0;&#x65B9;&#x5F0F;&#x53D6;&#x51B3;&#x4E8E;&#x5177;&#x4F53;&#x5B9E;&#x73B0;&#xFF0C;&#x53EF;&#x80FD;&#x4E3A;&#x6574;&#x578B;&#x3001;&#x6570;&#x7EC4;&#x6216;&#x8005;&#x7ED3;&#x6784;&#x4F53;&#x3002;</p>
<p>&#x4EE5;&#x4E0B;&#x4E3A;<code>glibc</code>&#x63D0;&#x4F9B;&#x7684;&#x4FE1;&#x53F7;&#x96C6;&#x64CD;&#x4F5C;&#x51FD;&#x6570;&#xFF1A;</p>
<ul>
<li><code>sigemptyset</code> &#x6E05;&#x7A7A;</li>
<li><code>sigfillset</code> &#x586B;&#x6EE1;</li>
<li><code>sigaddset</code> &#x6DFB;&#x52A0;</li>
<li><code>sigdelset</code> &#x5220;&#x9664;</li>
<li><code>sigismember</code> &#x67E5;&#x8BE2;</li>
</ul>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Python中的变量（名称绑定）]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h2 id>&#x4EE3;&#x7801;&#x5757;</h2>
<p>Python&#x7684;&#x7A0B;&#x5E8F;&#x7531;&#x4EE3;&#x7801;&#x5757;&#x7EC4;&#x6210;&#xFF0C;&#x6A21;&#x5757;&#x3001;&#x51FD;&#x6570;&#x3001;&#x7C7B;&#x5B9A;&#x4E49;&#x90FD;&#x5C5E;&#x4E8E;&#x4EE3;&#x7801;&#x5757;&#x3002;&#x4EE3;&#x7801;&#x5757;&#x4F5C;&#x4E3A;&#x4E00;&#x4E2A;&#x5355;&#x5143;&#x88AB;&#x89E3;&#x91CA;&#x5668;&#x8FD0;&#x884C;&#xFF0C;<strong>&#x4EE3;&#x7801;&#x5757;&#x53EF;</strong></p>]]></description><link>https://blog.ykai.cc/python-zhong-de-bian-liang/</link><guid isPermaLink="false">6331df653945280001365b8f</guid><category><![CDATA[Python]]></category><dc:creator><![CDATA[Yingkai Dang]]></dc:creator><pubDate>Sun, 04 Aug 2019 02:01:35 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id>&#x4EE3;&#x7801;&#x5757;</h2>
<p>Python&#x7684;&#x7A0B;&#x5E8F;&#x7531;&#x4EE3;&#x7801;&#x5757;&#x7EC4;&#x6210;&#xFF0C;&#x6A21;&#x5757;&#x3001;&#x51FD;&#x6570;&#x3001;&#x7C7B;&#x5B9A;&#x4E49;&#x90FD;&#x5C5E;&#x4E8E;&#x4EE3;&#x7801;&#x5757;&#x3002;&#x4EE3;&#x7801;&#x5757;&#x4F5C;&#x4E3A;&#x4E00;&#x4E2A;&#x5355;&#x5143;&#x88AB;&#x89E3;&#x91CA;&#x5668;&#x8FD0;&#x884C;&#xFF0C;<strong>&#x4EE3;&#x7801;&#x5757;&#x53EF;&#x4EE5;&#x62E5;&#x6709;&#x72EC;&#x7ACB;&#x7684;&#x4F5C;&#x7528;&#x57DF;</strong>&#x3002;</p>
<p>&#x4EE3;&#x7801;&#x5757;&#x5728;<em>&#x6267;&#x884C;&#x5E27;</em>&#x4E2D;&#x88AB;&#x6267;&#x884C;&#x3002; &#x4E00;&#x4E2A;&#x5E27;&#x4F1A;&#x5305;&#x542B;&#x67D0;&#x4E9B;&#x7BA1;&#x7406;&#x4FE1;&#x606F;&#xFF08;&#x7528;&#x4E8E;&#x8C03;&#x8BD5;&#xFF09;&#x5E76;&#x51B3;&#x5B9A;&#x4EE3;&#x7801;&#x5757;&#x6267;&#x884C;&#x5B8C;&#x6210;&#x540E;&#x5E94;&#x524D;&#x5F80;&#x4F55;&#x5904;&#x4EE5;&#x53CA;&#x5982;&#x4F55;&#x7EE7;&#x7EED;&#x6267;&#x884C;&#x3002;</p>
<h2 id>&#x53D8;&#x91CF;</h2>
<p>Python&#x4E2D;&#x7684;&#x53D8;&#x91CF;&#xFF0C;&#x672C;&#x8D28;&#x4E0A;&#x662F;&#x5185;&#x5B58;&#x4E2D;&#x5BF9;&#x8C61;&#x7684;&#x540D;&#x79F0;&#x7ED1;&#x5B9A;&#x3002;&#x80FD;&#x591F;&#x521B;&#x5EFA;&#x7ED1;&#x5B9A;&#x7684;&#x8BED;&#x53E5;&#x6709;&#xFF1A;&#x7B49;&#x53F7;&#x8D4B;&#x503C;&#x3001;&#x51FD;&#x6570;&#x4F20;&#x53C2;&#x3001;<code>import</code>&#x3001;&#x7C7B;&#x5B9A;&#x4E49;&#x3001;&#x51FD;&#x6570;&#x5B9A;&#x4E49;&#x3001;<code>for</code>&#x3001;<code>with</code>&#x548C;<code>except</code>&#x7684;<code>as</code>&#x3002;</p>
<h3 id>&#x53D8;&#x91CF;&#x4F5C;&#x7528;&#x57DF;</h3>
<p>&#x4F5C;&#x7528;&#x57DF;&#x6307;&#x7684;&#x662F;&#x53D8;&#x91CF;&#x80FD;&#x88AB;&#x8BBF;&#x95EE;&#x5230;&#x7684;&#x8303;&#x56F4;&#xFF0C;&#x662F;&#x4E00;&#x4E2A;&#x8303;&#x56F4;&#xFF0C;&#x53EF;&#x5206;&#x4E3A;&#xFF1A;&#x5168;&#x5C40;&#x4F5C;&#x7528;&#x57DF;&#x3001;&#x672C;&#x5730;&#x4F5C;&#x7528;&#x57DF;&#x3001;&#x975E;&#x672C;&#x5730;&#x4F5C;&#x7528;&#x57DF;&#x3001;&#x5185;&#x7F6E;&#x4F5C;&#x7528;&#x57DF;&#x3002;&#x5168;&#x5C40;&#x4F5C;&#x7528;&#x57DF;&#xFF08;<code>global</code>&#xFF09;&#x6307;&#x6574;&#x4E2A;&#x6A21;&#x5757;&#x5185;&#xFF1B;&#x672C;&#x5730;&#x4F5C;&#x7528;&#x57DF;&#xFF08;<code>local</code>&#xFF09;&#x6307;&#x5F53;&#x524D;&#x4EE3;&#x7801;&#x5757;&#x5185;&#xFF1B;&#x975E;&#x672C;&#x5730;&#x4F5C;&#x7528;&#x57DF;&#xFF08;<code>nonlocal</code>&#xFF09;&#x6307;&#x672C;&#x5730;&#x4F5C;&#x7528;&#x57DF;&#x4EE5;&#x4E0A;&#xFF0C;&#x5168;&#x5C40;&#x4F5C;&#x7528;&#x57DF;&#x4EE5;&#x4E0B;&#x7684;&#x8303;&#x56F4;&#xFF1B;&#x5185;&#x7F6E;&#x4F5C;&#x7528;&#x57DF;&#xFF08;<code>builtin</code>&#xFF09;&#x662F;&#x4E00;&#x4E2A;&#x7279;&#x5B9A;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#xFF0C;&#x5185;&#x542B;&#x4E00;&#x4E9B;&#x5185;&#x7F6E;&#x53D8;&#x91CF;&#x3002;</p>
<p>&#x53D8;&#x91CF;&#x6309;&#x7167;&#x4F5C;&#x7528;&#x57DF;&#x533A;&#x5206;&#xFF0C;&#x5171;&#x6709;&#x4E09;&#x79CD;&#xFF1A;<code>&#x5168;&#x5C40;&#x53D8;&#x91CF;</code>&#x3001;<code>&#x5C40;&#x90E8;&#x53D8;&#x91CF;</code>&#x3001;<code>&#x81EA;&#x7531;&#x53D8;&#x91CF;</code>&#x3002;</p>
<ul>
<li>&#x5168;&#x5C40;&#x53D8;&#x91CF;&#xFF1A;&#x62E5;&#x6709;&#x5168;&#x5C40;&#x4F5C;&#x7528;&#x57DF;</li>
<li>&#x5C40;&#x90E8;&#x53D8;&#x91CF;&#xFF1A;&#x62E5;&#x6709;&#x672C;&#x5730;&#x4F5C;&#x7528;&#x57DF;</li>
<li>&#x81EA;&#x7531;&#x53D8;&#x91CF;&#xFF1A;&#x4F5C;&#x7528;&#x57DF;&#x672A;&#x786E;&#x5B9A;</li>
</ul>
<h3 id>&#x4F5C;&#x7528;&#x57DF;&#x7684;&#x786E;&#x5B9A;</h3>
<p>&#x53D8;&#x91CF;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x5E76;&#x975E;&#x5728;&#x8FD0;&#x884C;&#x671F;&#x786E;&#x5B9A;&#x7684;&#xFF0C;&#x800C;&#x662F;&#x5728;&#x9884;&#x7F16;&#x8BD1;&#x671F;&#x786E;&#x5B9A;&#x3002;&#x5728;&#x9884;&#x7F16;&#x8BD1;&#x65F6;&#xFF0C;&#x7F16;&#x8BD1;&#x5668;&#x4F1A;&#xFF1A;</p>
<ol>
<li>&#x626B;&#x63CF;&#x975E;&#x5168;&#x5C40;&#x4EE3;&#x7801;&#x5757;&#x4E2D;&#x7684;&#x7ED1;&#x5B9A;&#x8BED;&#x53E5;&#xFF0C;&#x5E76;&#x5C06;&#x8BE5;&#x8BED;&#x53E5;&#x6240;&#x521B;&#x5EFA;&#x7684;&#x540D;&#x79F0;&#x4F5C;&#x4E3A;&#x8BE5;&#x4EE3;&#x7801;&#x5757;&#x7684;&#x5C40;&#x90E8;&#x53D8;&#x91CF;&#xFF1B;</li>
<li>&#x5C06;&#x5728;&#x6A21;&#x5757;&#x5C42;&#x7EA7;&#xFF08;&#x5168;&#x5C40;&#xFF09;&#x521B;&#x5EFA;&#x7684;&#x540D;&#x79F0;&#x7ED1;&#x5B9A;&#x5F53;&#x505A;&#x5168;&#x5C40;&#x53D8;&#x91CF;&#xFF1B;</li>
<li>&#x5C06;&#x4EE3;&#x7801;&#x5757;&#x4E2D;&#x4F7F;&#x7528;&#x4F46;&#x672A;&#x5B9A;&#x4E49;&#x7684;&#x53D8;&#x91CF;&#x5F53;&#x505A;&#x81EA;&#x7531;&#x53D8;&#x91CF;&#xFF1B;</li>
<li>&#x5C06;&#x4F7F;&#x7528;<code>global</code>&#x548C;<code>nonlocal</code>&#x5173;&#x952E;&#x5B57;&#x5B9A;&#x4E49;&#x7684;&#x53D8;&#x91CF;&#x5206;&#x522B;&#x4F1A;&#x5F53;&#x505A;&#x5BF9;&#x5168;&#x5C40;&#x548C;&#x975E;&#x672C;&#x5730;&#x4F5C;&#x7528;&#x57DF;&#x5185;&#x7684;&#x7ED1;&#x5B9A;&#x3002;</li>
</ol>
<p>&#x8FD9;&#x4E9B;&#x90FD;&#x5728;<strong>&#x8FD0;&#x884C;&#x524D;</strong>&#x51B3;&#x5B9A;&#xFF0C;&#x8C28;&#x8BB0;&#x3002;</p>
<h3 id>&#x547D;&#x540D;&#x7A7A;&#x95F4;</h3>
<p>&#x547D;&#x540D;&#x7A7A;&#x95F4;&#x662F;&#x4E00;&#x4E2A;&#x5B57;&#x5178;&#xFF0C;&#x8868;&#x793A;&#x4E00;&#x4E2A;&#x4EE3;&#x7801;&#x5757;&#x6240;&#x62E5;&#x6709;&#x7684;&#x540D;&#x79F0;&#x7ED1;&#x5B9A;&#xFF0C;&#x4EE3;&#x7801;&#x5757;&#x6BCF;&#x6B21;&#x6267;&#x884C;&#x65F6;&#x90FD;&#x4F1A;&#x751F;&#x6210;&#x65B0;&#x7684;&#x547D;&#x540D;&#x7A7A;&#x95F4;&#x3002;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;<code>globals()</code>&#x548C;<code>locals()</code>&#x51FD;&#x6570;&#x5206;&#x522B;&#x8BBF;&#x95EE;&#x5168;&#x5C40;&#x548C;&#x672C;&#x5730;&#x547D;&#x540D;&#x7A7A;&#x95F4;&#x3002;&#x4F7F;&#x7528;<code>global</code>&#x548C;<code>nonlocal</code>&#x5173;&#x952E;&#x5B57;&#x65F6;&#xFF0C;&#x4F1A;&#x5C06;&#x6307;&#x5B9A;&#x7684;&#x53D8;&#x91CF;&#x653E;&#x5230;&#x5F53;&#x524D;&#x4EE3;&#x7801;&#x5757;&#x7684;&#x547D;&#x540D;&#x7A7A;&#x95F4;&#x5185;&#x3002;</p>
<h3 id>&#x5BF9;&#x53D8;&#x91CF;&#x7684;&#x7ED1;&#x5B9A;&#xFF08;&#x521B;&#x5EFA;&#xFF09;</h3>
<p>&#x5728;&#x4EE3;&#x7801;&#x5757;&#x4E2D;&#x9047;&#x5230;&#x7ED1;&#x5B9A;&#x8BED;&#x53E5;&#x65F6;&#xFF0C;&#x4F1A;&#x5728;&#x4EE3;&#x7801;&#x5757;&#x5BF9;&#x5E94;&#x7684;&#x547D;&#x540D;&#x7A7A;&#x95F4;&#x5B57;&#x5178;&#x4E2D;&#x6DFB;&#x52A0;&#x5BF9;&#x5E94;&#x7684;&#x952E;&#x503C;&#x5BF9;&#xFF0C;&#x8FD9;&#x65F6;&#x624D;&#x5B8C;&#x6210;&#x4E86;&#x5BF9;&#x53D8;&#x91CF;&#x7684;&#x7ED1;&#x5B9A;&#x3002;</p>
<h3 id>&#x5BF9;&#x53D8;&#x91CF;&#x7684;&#x5F15;&#x7528;&#xFF08;&#x4F7F;&#x7528;&#xFF09;</h3>
<p>&#x5728;&#x8FD0;&#x884C;&#x671F;&#xFF0C;&#x5BF9;&#x4E00;&#x4E2A;&#x53D8;&#x91CF;&#x8FDB;&#x884C;&#x5F15;&#x7528;&#xFF08;&#x4F7F;&#x7528;&#xFF09;&#x65F6;&#xFF0C;&#x5B9E;&#x9645;&#x4E0A;&#x5C31;&#x662F;&#x8981;&#x627E;&#x5230;&#x53D8;&#x91CF;&#x6240;&#x7ED1;&#x5B9A;&#x7684;&#x5BF9;&#x8C61;&#x3002;&#x60C5;&#x51B5;&#x5206;&#x4E3A;&#xFF1A;</p>
<ul>
<li>&#x5982;&#x679C;&#x662F;&#x6A21;&#x5757;&#x5185;&#x7684;&#x5168;&#x5C40;&#x53D8;&#x91CF;&#xFF0C;&#x5728;&#x5168;&#x5C40;&#x547D;&#x540D;&#x7A7A;&#x95F4;&#x5185;&#x67E5;&#x627E;&#x540D;&#x79F0;&#x7ED1;&#x5B9A;&#xFF1B;</li>
<li>&#x5982;&#x679C;&#x662F;&#x5C40;&#x90E8;&#x53D8;&#x91CF;&#xFF0C;&#x5219;&#x5728;&#x5F53;&#x524D;&#x4EE3;&#x7801;&#x5757;&#x7684;&#x547D;&#x540D;&#x7A7A;&#x95F4;&#x5185;&#x67E5;&#x627E;&#x7ED1;&#x5B9A;&#xFF1B;</li>
<li>&#x5982;&#x679C;&#x662F;&#x81EA;&#x7531;&#x53D8;&#x91CF;&#xFF0C;&#x5219;&#x4ECE;&#x5F53;&#x524D;&#x4EE3;&#x7801;&#x5757;&#x7684;&#x547D;&#x540D;&#x7A7A;&#x95F4;&#x5F00;&#x59CB;&#x5C42;&#x5C42;&#x5411;&#x4E0A;&#x67E5;&#x627E;&#xFF0C;&#x76F4;&#x5230;&#x627E;&#x5230;&#x4E00;&#x4E2A;&#x7ED1;&#x5B9A;&#x3002;</li>
</ul>
<p>&#x53EF;&#x4EE5;&#x770B;&#x51FA;&#xFF0C;&#x95ED;&#x5305;&#x73B0;&#x8C61;&#x5C31;&#x662F;&#x7531;&#x81EA;&#x7531;&#x53D8;&#x91CF;&#x7684;&#x8BBF;&#x95EE;&#x673A;&#x5236;&#x4EA7;&#x751F;&#x7684;&#x3002;</p>
<p><em>&#x6B64;&#x5904;&#x6240;&#x8FF0;&#x53EA;&#x662F;&#x8BED;&#x8A00;&#x8868;&#x73B0;&#xFF0C;&#x5E76;&#x975E;&#x5B9E;&#x73B0;&#x7EC6;&#x8282;&#xFF0C;&#x5BF9;&#x81EA;&#x7531;&#x53D8;&#x91CF;&#x7684;&#x5F15;&#x7528;&#x53EF;&#x80FD;&#x5E76;&#x975E;&#x76F4;&#x63A5;&#x5728;&#x547D;&#x540D;&#x7A7A;&#x95F4;&#x5185;&#x641C;&#x7D22;&#xFF0C;&#x800C;&#x662F;&#x5728;&#x9884;&#x7F16;&#x8BD1;&#x671F;&#x786E;&#x5B9A;&#x4E0A;&#x5C42;&#x547D;&#x540D;&#x7A7A;&#x95F4;&#x662F;&#x5426;&#x6709;&#x5BF9;&#x5E94;&#x7684;&#x7ED1;&#x5B9A;&#x3002;</em> &#x4F8B;&#x5982;&#xFF0C;&#x6700;&#x5E38;&#x89C1;&#x7684;&#x95ED;&#x5305;&#xFF1A;</p>
<pre><code class="language-python">def outer():
    a = 10
    def inner():
        print(a)
    return inner

print(outer().__closure__)   # (&lt;cell at 0x7f379c12c828: int object at 0x7f379ca7b600&gt;,)
</code></pre>
<p>&#x53EF;&#x4EE5;&#x770B;&#x51FA;&#xFF0C;&#x5185;&#x90E8;&#x51FD;&#x6570;&#x5BF9;<code>a</code>&#x7684;&#x8BBF;&#x95EE;&#x4F1A;&#x88AB;&#x76F4;&#x63A5;&#x7ED1;&#x5B9A;&#x5230;<code>inner</code>&#x5BF9;&#x8C61;&#x4E0A;&#xFF0C;&#x800C;&#x4E0D;&#x4F1A;&#x53BB;&#x5728;&#x547D;&#x540D;&#x7A7A;&#x95F4;&#x91CD;&#x65B0;&#x67E5;&#x627E;&#x3002;</p>
<h2 id>&#x5B9E;&#x4F8B;</h2>
<p>&#x8BF7;&#x770B;&#x5982;&#x4E0B;&#x4EE3;&#x7801;&#xFF1A;</p>
<pre><code class="language-python">a = 10 	# global
def foo():
    print(a)
foo() 	# 10, no error
</code></pre>
<p>&#x6CA1;&#x6709;&#x95EE;&#x9898;&#xFF0C;&#x56E0;&#x4E3A;a&#x5C5E;&#x4E8E;&#x81EA;&#x7531;&#x53D8;&#x91CF;&#xFF0C;&#x4F1A;&#x5411;&#x4E0A;&#x67E5;&#x627E;&#x3002;</p>
<p>&#x5982;&#x679C;&#x53D8;&#x6210;&#x8FD9;&#x6837;&#xFF1A;</p>
<pre><code class="language-python">a = 10 	# global
def foo():
    a = 5
    print(a)
foo() 	# 5, no error
</code></pre>
<p>&#x6B64;&#x65F6;&#xFF0C;<code>a</code>&#x5728;&#x9884;&#x7F16;&#x8BD1;&#x671F;&#x88AB;&#x786E;&#x5B9A;&#x4E3A;&#x5C40;&#x90E8;&#x53D8;&#x91CF;&#xFF0C;&#x56E0;&#x6B64;&#x5728;<code>foo</code>&#x4EE3;&#x7801;&#x5757;&#x4E2D;&#x9690;&#x85CF;&#x4E86;&#x5168;&#x5C40;&#x7684;<code>a</code>&#x3002;</p>
<p>&#x4F46;&#x662F;&#xFF0C;&#x5982;&#x679C;&#x53D8;&#x6210;&#x8FD9;&#x6837;&#xFF1A;</p>
<pre><code class="language-python">a = 10 	# global
def foo():
    print(a)
    a = 5
foo() 	# UnboundLocalError: local variable &apos;a&apos; referenced before assignment
</code></pre>
<p>&#x51FA;&#x9519;&#x4E86;&#xFF01;&#x6B63;&#x662F;&#x56E0;&#x4E3A;<code>foo</code>&#x4E2D;&#x6709;&#x5BF9;<code>a</code>&#x7684;&#x7ED1;&#x5B9A;&#xFF08;&#x8D4B;&#x503C;&#x8BED;&#x53E5;&#xFF09;&#xFF0C;<code>a</code>&#x88AB;&#x5F53;&#x505A;&#x5C40;&#x90E8;&#x53D8;&#x91CF;&#xFF0C;&#x4F46;&#x662F;&#x5728;&#x7B2C;&#x4E09;&#x884C;<code>print(a)</code>&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x8D4B;&#x503C;&#x4ECD;&#x672A;&#x6267;&#x884C;&#xFF0C;&#x7ED1;&#x5B9A;&#x4E5F;&#x5C31;&#x672A;&#x5B8C;&#x6210;&#xFF0C;&#x56E0;&#x6B64;&#x629B;&#x51FA;&#x5F02;&#x5E38;&#x3002;&#x8FD9;&#x91CC;&#x5C31;&#x4F53;&#x73B0;&#x51FA;&#x4E86;<code>&#x53D8;&#x91CF;&#x4F5C;&#x7528;&#x57DF;&#x7684;&#x51B3;&#x5B9A;&#x662F;&#x5728;&#x9884;&#x7F16;&#x8BD1;&#x671F;&#x786E;&#x5B9A;</code>&#x8FD9;&#x4E00;&#x73B0;&#x8C61;&#x9020;&#x6210;&#x7684;&#x5F71;&#x54CD;&#x3002;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>