<?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://hanzhu.dev/</link><image><url>https://hanzhu.dev/favicon.png</url><title>隅</title><link>https://hanzhu.dev/</link></image><generator>Ghost 5.9</generator><lastBuildDate>Tue, 31 Mar 2026 11:03:12 GMT</lastBuildDate><atom:link href="https://hanzhu.dev/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[【拖延版】书单2021&2022然后就到了2023]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h1 id="2022">2022</h1>
<p>2022&#x90FD;&#x4E5F;&#x53EA;&#x5269;&#x4E0B;5&#x4E2A;&#x6708;&#x4E86;&#x3002;&#x5E76;&#x4E00;&#x8D77;&#xFF0C;&#x90FD;&#x8981;&#x770B;&#xFF0C;&#x4E0D;&#x8981;&#x62D6;&#x3002;</p>
<h3 id>&#x4E13;&#x4E1A;</h3>
<p>System Design The big archive</p>
<h3 id>&#x5174;&#x8DA3;</h3>
<p><s>&#x7A00;&#x7F3A;</s><br>
&#x7F6E;&#x8EAB;&#x4E8B;&#x5185;<br>
&#x5E95;&#x5C42;&#x903B;&#x8F91;</p>
<p>--------------&#x8FD9;&#x662F;&#x65E7;&#x7684;2021&#x7684;</p>]]></description><link>https://hanzhu.dev/shu-dan-2021-and-2022/</link><guid isPermaLink="false">60b38adc017a8d06dd2173e7</guid><dc:creator><![CDATA[Frank]]></dc:creator><pubDate>Tue, 02 Aug 2022 15:57:00 GMT</pubDate><media:content url="https://hanzhu.dev/content/images/2021/05/Essential-Books.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h1 id="2022">2022</h1>
<img src="https://hanzhu.dev/content/images/2021/05/Essential-Books.jpg" alt="&#x3010;&#x62D6;&#x5EF6;&#x7248;&#x3011;&#x4E66;&#x5355;2021&amp;2022&#x7136;&#x540E;&#x5C31;&#x5230;&#x4E86;2023"><p>2022&#x90FD;&#x4E5F;&#x53EA;&#x5269;&#x4E0B;5&#x4E2A;&#x6708;&#x4E86;&#x3002;&#x5E76;&#x4E00;&#x8D77;&#xFF0C;&#x90FD;&#x8981;&#x770B;&#xFF0C;&#x4E0D;&#x8981;&#x62D6;&#x3002;</p>
<h3 id>&#x4E13;&#x4E1A;</h3>
<p>System Design The big archive</p>
<h3 id>&#x5174;&#x8DA3;</h3>
<p><s>&#x7A00;&#x7F3A;</s><br>
&#x7F6E;&#x8EAB;&#x4E8B;&#x5185;<br>
&#x5E95;&#x5C42;&#x903B;&#x8F91;</p>
<p>--------------&#x8FD9;&#x662F;&#x65E7;&#x7684;2021&#x7684;&#x5206;&#x5272;&#x7EBF;&#xFF0C;&#x539F;Po 2021.5.30--------------</p>
<h1 id="2021">2021</h1>
<p>&#x6211;&#x5B9E;&#x5728;&#x662F;&#x592A;&#x61D2;&#x4E86; &#x9700;&#x8981;&#x903C;&#x81EA;&#x5DF1;&#x4E00;&#x4E0B; &#x51C6;&#x5907;&#x53CD;&#x5976;&#x81EA;&#x5DF1;&#x4E00;&#x53E3;</p>
<h3 id>&#x4E13;&#x4E1A;</h3>
<p>The Go Programming<br>
System Design Interview<br>
Go&#x8BED;&#x8A00;&#x9AD8;&#x7EA7;&#x7F16;&#x7A0B;<br>
Clean Code<br>
&#x5251;&#x6307;offer<br>
Site Reliability Engineering<br>
Site Reliability Engineering Workbook<br>
Designing Data-Intensive Applications<br>
Algorithm<br>
&#x6DF1;&#x5165;&#x7406;&#x89E3;&#x8BA1;&#x7B97;&#x673A;&#x7CFB;&#x7EDF;<br>
Go&#x8BED;&#x8A00;&#x7F16;&#x7A0B;&#x4E4B;&#x65C5;</p>
<h3 id>&#x5174;&#x8DA3;</h3>
<p>&#x827A;&#x672F;&#x7684;&#x6545;&#x4E8B;<br>
&#x903B;&#x8F91;&#x5B66;<br>
&#x597D;&#x6218;&#x7565; &#x574F;&#x6218;&#x7565;<br>
K8s in cation<br>
K8s best practices</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[代码结构分层]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#x5728;&#x5F00;&#x59CB;&#x8BB0;&#x5F55;&#x5B9E;&#x8DF5;&#x4E4B;&#x524D;&#xFF0C;&#x5EFA;&#x8BAE;&#x5148;&#x9605;&#x8BFB;&#x4E00;&#x4E0B;&#x4E24;&#x7BC7;&#x6587;&#x7AE0;&#xFF1A;<br>
<a href="https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html">The Clean Architecture</a><br>
<a href="https://hackernoon.com/golang-clean-archithecture-efd6d7c43047">Trying Clean Architecture on Golang</a></p>
<h1 id="clean-architecture%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5">Clean Architecture&#x57FA;&#x672C;&#x6982;&#x5FF5;</h1>
<p>Each of these architectures produce systems that are:</p>
<ol>
<li>Independent of Frameworks. The architecture does</li></ol>]]></description><link>https://hanzhu.dev/dai-ma-jie-gou-fen-ceng/</link><guid isPermaLink="false">62a03ea19657313908075fc9</guid><category><![CDATA[go]]></category><category><![CDATA[oop]]></category><dc:creator><![CDATA[Frank]]></dc:creator><pubDate>Sun, 12 Jun 2022 03:37:16 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x5728;&#x5F00;&#x59CB;&#x8BB0;&#x5F55;&#x5B9E;&#x8DF5;&#x4E4B;&#x524D;&#xFF0C;&#x5EFA;&#x8BAE;&#x5148;&#x9605;&#x8BFB;&#x4E00;&#x4E0B;&#x4E24;&#x7BC7;&#x6587;&#x7AE0;&#xFF1A;<br>
<a href="https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html">The Clean Architecture</a><br>
<a href="https://hackernoon.com/golang-clean-archithecture-efd6d7c43047">Trying Clean Architecture on Golang</a></p>
<h1 id="clean-architecture%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5">Clean Architecture&#x57FA;&#x672C;&#x6982;&#x5FF5;</h1>
<p>Each of these architectures produce systems that are:</p>
<ol>
<li>Independent of Frameworks. The architecture does not depend on the existence of some library of feature laden software. This allows you to use such frameworks as tools, rather than having to cram your system into their limited constraints.</li>
<li>Testable. The business rules can be tested without the UI, Database, Web Server, or any other external element.</li>
<li>Independent of UI. The UI can change easily, without changing the rest of the system. A Web UI could be replaced with a console UI, for example, without changing the business rules.</li>
<li>Independent of Database. You can swap out Oracle or SQL Server, for Mongo, BigTable, CouchDB, or something else. Your business rules are not bound to the database.</li>
<li>Independent of any external agency. In fact your business rules simply don&#x2019;t know anything at all about the outside world.</li>
</ol>
<p>An attempt:<br>
<img src="https://hanzhu.dev/content/images/2022/06/CleanArchitecture.jpeg" alt="CleanArchitecture" loading="lazy"></p>
<h2 id="the-dependency-rule">The Dependency Rule</h2>
<p><strong>Entities</strong>: &#x5C01;&#x88C5;&#x4E86;&#x4F01;&#x4E1A;&#x7EF4;&#x5EA6;&#x7684;business rules. Entity&#x53EF;&#x4EE5;&#x662F;an object with methods, &#x6216;&#x8005;&#x662F;a set of data structures and functions. &#x5982;&#x679C;&#x662F;&#x7B80;&#x5355;&#x5E94;&#x7528;&#xFF0C;entity&#x5219;&#x662F;&#x5E94;&#x7528;&#x7684;business objects&#x3002;&#x4ED6;&#x4EEC;&#x5E94;&#x8BE5;&#x662F;&#x6700;&#x4E0D;&#x53EF;&#x80FD;&#x968F;&#x5916;&#x90E8;&#x53D8;&#x5316;&#x7684;&#x3002;<br>
<strong>Use Cases</strong>: &#x5305;&#x542B;&#x4E86;application specific&#x7684;business rules&#x3002;&#x5C01;&#x88C5;&#x5E76;&#x5B9E;&#x65BD;all the use cases of the system.&#x8FD9;&#x4E9B;use cases orchestrate the flow of data to and from the entities, and direct those entities to use their enterprise wide business rules to achieve the goals of the use case.<br>
<strong>Interface Adapters</strong>: &#x662F;a set of adapters&#x7528;&#x6765;&#x628A;&#x6570;&#x636E;&#x4ECE;use cases&#x548C;entities&#x5C42;&#x7684;&#x683C;&#x5F0F;&#x8F6C;&#x6362;&#x5230;external agency(DB or web)&#x3002;&#x8FD9;&#x4E2A;&#x5C42;&#x4F1A;&#x5B8C;&#x6574;&#x5305;&#x542B;MVC&#x7ED3;&#x6784;&#x3002;&#x540C;&#x6837;&#xFF0C;&#x8FD9;&#x5C42;&#x4F1A;&#x628A;&#x4ECE;use cases&#x548C;entities&#x5C42;&#x7684;&#x6570;&#x636E;&#x5F62;&#x5F0F;&#x8F6C;&#x6362;&#x5230;&#x6301;&#x4E45;&#x5C42;framework, &#x6BD4;&#x65B9;&#x6570;&#x636E;&#x5E93;&#x3002;&#x5728;&#x6B64;&#x5C42;&#x5F80;&#x5185;&#x7684;&#x4EE3;&#x7801;&#x65E0;&#x9700;&#x77E5;&#x9053;&#x6570;&#x636E;&#x5E93;&#x3002;&#x5982;&#x679C;&#x662F;SQL&#x6570;&#x636E;&#x5E93;&#xFF0C;&#x5219;&#x6240;&#x6709;SQL&#x5FC5;&#x987B;&#x53D7;&#x5230;&#x6B64;&#x5C42;&#x7EA6;&#x675F;&#xFF0C;&#x5C24;&#x5176;&#x662F;&#x548C;&#x6570;&#x636E;&#x5E93;&#x76F8;&#x5173;&#x7684;&#x90E8;&#x5206;&#x3002;<br>
<strong>Frameworks &amp; Drivers</strong>: &#x6700;&#x5916;&#x5C42;&#x4E00;&#x822C;&#x7531;&#x6846;&#x67B6;&#x548C;&#x5DE5;&#x5177;&#x7EC4;&#x6210;&#xFF0C;&#x6BD4;&#x65B9;&#x6570;&#x636E;&#x5E93;&#xFF0C;&#x7F51;&#x7EDC;&#x67B6;&#x6784;&#x7B49;&#x3002;&#x4E00;&#x822C;&#x53EA;&#x653E;&#x4E9B;&#x4E0E;&#x5916;&#x754C;&#x6C9F;&#x901A;&#x7684;&#x80F6;&#x6C34;&#x4EE3;&#x7801;&#x3002;</p>
<h2 id="crossing-boundaries">Crossing boundaries</h2>
<p>At the lower right of the diagram is an example of how we cross the circle boundaries. It shows the Controllers and Presenters communicating with the Use Cases in the next layer. Note the flow of control. It begins in the controller, moves through the use case, and then winds up executing in the presenter. Note also the source code dependencies. Each one of them points inwards towards the use cases.</p>
<p>We usually resolve this apparent contradiction by using the Dependency Inversion Principle. In a language like Java, for example, we would arrange interfaces and inheritance relationships such that the source code dependencies oppose the flow of control at just the right points across the boundary.</p>
<blockquote>
<p><strong>Dependency Inversion Principle</strong><br>
&#x8BB0;&#x5F97;&#x4F7F;&#x7528;Dependency Inversion Principle&#xFF0C;&#x5373;&#xFF1A;</p>
<ol>
<li>High-level modules should not import anything from low-level modules. Both should depend on abstractions (e.g., interfaces).</li>
<li>Abstractions should not depend on details. Details (concrete implementations) should depend on abstractions.<br>
In a language like Java, for example, we would arrange interfaces and inheritance relationships such that the source code dependencies oppose the flow of control at just the right points across the boundary.<br>
<img src="https://hanzhu.dev/content/images/2022/06/screenshot-20220613-215721.png" alt="screenshot-20220613-215721" loading="lazy"></li>
</ol>
</blockquote>
<p>For example, consider that the use case needs to call the presenter. However, this call must not be direct because that would violate The Dependency Rule: No name in an outer circle can be mentioned by an inner circle. So we have the use case call an interface (Shown here as Use Case Output Port) in the inner circle, and have the presenter in the outer circle implement it.</p>
<p>The same technique is used to cross all the boundaries in the architectures. We take advantage of dynamic polymorphism to create source code dependencies that oppose the flow of control so that we can conform to The Dependency Rule no matter what direction the flow of control is going in.</p>
<h1 id="golang%E4%B8%AD%E7%9A%84%E5%AF%B9%E5%BA%94">Golang&#x4E2D;&#x7684;&#x5BF9;&#x5E94;</h1>
<p><strong>Entities--&gt;Models</strong>: &#x5B58;&#x50A8;&#x5BF9;&#x8C61;&#x7ED3;&#x6784;&#x4E0E;&#x65B9;&#x6CD5;&#x3002;Same as Entities, will used in all layer. This layer, will store any Object&#x2019;s Struct and its method. Any entities, or model will stored here.<br>
&#x4E3E;&#x4F8B;&#xFF1A;</p>
<pre><code>import &quot;time&quot;

type Article struct {
	ID        int64     `json:&quot;id&quot;`
	Title     string    `json:&quot;title&quot;`
	Content   string    `json:&quot;content&quot;`
	UpdatedAt time.Time `json:&quot;updated_at&quot;`
	CreatedAt time.Time `json:&quot;created_at&quot;`
}
</code></pre>
<p><strong>Use Cases</strong>: &#x5904;&#x7406;&#x4E1A;&#x52A1;&#x6D41;&#x7A0B;&#x3002;This layer will act as the business process handler. Any process will handled here. This layer will decide, which repository layer will use. And have responsibility to provide data to serve into delivery. Process the data doing calculation or anything will done here.<br>
Usecase layer will accept any input from Delivery layer, that already sanitized, then process the input could be storing into DB , or Fetching from DB ,etc.<br>
This Usecase layer will depends to Repository Layer</p>
<p><strong>Delivery</strong>: &#x626E;&#x6F14;presenter&#xFF0C;API&#x63A5;&#x53E3;&#x7B49;&#x3002;This layer will act as the presenter. Decide how the data will presented. Could be as REST API, or HTML File, or gRPC whatever the delivery type.<br>
This layer also will accept the input from user. Sanitize the input and sent it to Usecase layer.<br>
For my sample project, I&#x2019;m using REST API as the delivery method.<br>
Client will call the resource endpoint over network, and the Delivery layer will get the input or request, and sent it to Usecase Layer.<br>
This layer will depends to Usecase Layer.</p>
<p><strong>Repository</strong>: &#x7EAF;&#x6570;&#x636E;&#x5E93;&#x64CD;&#x4F5C;&#x3002;Repository will store any Database handler. Querying, or Creating/ Inserting into any database will stored here. This layer will act for CRUD to database only. No business process happen here. Only plain function to Database.<br>
This layer also have responsibility to choose what DB will used in Application. Could be Mysql, MongoDB, MariaDB, Postgresql whatever, will decided here.<br>
If using ORM, this layer will control the input, and give it directly to ORM services.<br>
If calling microservices, will handled here. Create HTTP Request to other services, and sanitize the data. This layer, must fully act as a repository. Handle all data input - output no specific logic happen.<br>
This Repository layer will depends to Connected DB , or other microservices if exists.</p>
<h2 id="communications-between-layers">Communications Between Layers</h2>
<p>Except Models, each layer will communicate <strong>through inteface</strong>. For example, Usecase layer need the Repository layer, so how they communicate? Repository will provide an interface to be their contract and communication.</p>
<p>References:<br>
<a href="https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html">https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html</a><br>
<a href="https://hackernoon.com/golang-clean-archithecture-efd6d7c43047">https://hackernoon.com/golang-clean-archithecture-efd6d7c43047</a><br>
<a href="https://www.cnblogs.com/gaochundong/p/dependency_inversion_principle.html">https://www.cnblogs.com/gaochundong/p/dependency_inversion_principle.html</a><br>
<a href="https://www.jianshu.com/p/272dc047d527">https://www.jianshu.com/p/272dc047d527</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[序列化与反序列化]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#x5E38;&#x89C1;&#x7684;&#x5E8F;&#x5217;&#x5316;&#x65B9;&#x5F0F;&#x6709;&#xFF1A;<br>
JDK&#xFF08;&#x4E0D;&#x652F;&#x6301;&#x8DE8;&#x8BED;&#x8A00;&#xFF09;&#x3001;JSON&#x3001;XML&#x3001;Hessian&#x3001;Kryo&#xFF08;&#x4E0D;&#x652F;&#x6301;&#x8DE8;&#x8BED;&#x8A00;&#xFF09;&#x3001;Thrift&#x3001;Protostuff&#x3001;FST&#xFF08;&#x4E0D;&#x652F;&#x6301;&#x8DE8;&#x8BED;&#x8A00;&#xFF09;</p>
<p>&#x6280;</p>]]></description><link>https://hanzhu.dev/xu-lie-hua-yu-fan-xu-lie-hua/</link><guid isPermaLink="false">62a02cc49657313908075f99</guid><category><![CDATA[go]]></category><category><![CDATA[oop]]></category><category><![CDATA[network]]></category><dc:creator><![CDATA[Frank]]></dc:creator><pubDate>Wed, 08 Jun 2022 05:02:52 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x5E38;&#x89C1;&#x7684;&#x5E8F;&#x5217;&#x5316;&#x65B9;&#x5F0F;&#x6709;&#xFF1A;<br>
JDK&#xFF08;&#x4E0D;&#x652F;&#x6301;&#x8DE8;&#x8BED;&#x8A00;&#xFF09;&#x3001;JSON&#x3001;XML&#x3001;Hessian&#x3001;Kryo&#xFF08;&#x4E0D;&#x652F;&#x6301;&#x8DE8;&#x8BED;&#x8A00;&#xFF09;&#x3001;Thrift&#x3001;Protostuff&#x3001;FST&#xFF08;&#x4E0D;&#x652F;&#x6301;&#x8DE8;&#x8BED;&#x8A00;&#xFF09;</p>
<p>&#x6280;&#x672F;&#x9009;&#x578B;&#x5173;&#x952E;&#x70B9;&#xFF1A;<br>
&#x534F;&#x8BAE;&#x662F;&#x5426;&#x652F;&#x6301;&#x8DE8;&#x5E73;&#x53F0;&#xFF0C;&#x5E8F;&#x5217;&#x5316;&#x7684;&#x901F;&#x5EA6;&#xFF08;&#x65F6;&#x95F4;&#x5F00;&#x9500;&#xFF0C;&#x7CFB;&#x7EDF;&#x6027;&#x80FD;&#xFF09;&#xFF0C;&#x5E8F;&#x5217;&#x5316;&#x51FA;&#x6765;&#x7684;&#x5927;&#x5C0F;&#xFF08;&#x7A7A;&#x95F4;&#x5F00;&#x9500;&#xFF0C;&#x51CF;&#x8F7B;&#x7F51;&#x7EDC;&#x3001;&#x78C1;&#x76D8;&#x538B;&#x529B;&#xFF09;&#x3002;</p>
<p>&#x5178;&#x578B;&#x7684;&#x5E8F;&#x5217;&#x5316;&#x548C;&#x53CD;&#x5E8F;&#x5217;&#x5316;&#x8FC7;&#x7A0B;&#x5F80;&#x5F80;&#x9700;&#x8981;&#x5982;&#x4E0B;&#x7EC4;&#x4EF6;&#xFF1A;</p>
<ul>
<li>IDL&#xFF08;Interface description language&#xFF09;&#x6587;&#x4EF6;&#xFF1A;&#x53C2;&#x4E0E;&#x901A;&#x8BAF;&#x7684;&#x5404;&#x65B9;&#x9700;&#x8981;&#x5BF9;&#x901A;&#x8BAF;&#x7684;&#x5185;&#x5BB9;&#x9700;&#x8981;&#x505A;&#x76F8;&#x5173;&#x7684;&#x7EA6;&#x5B9A;&#xFF08;Specifications&#xFF09;&#x3002;&#x4E3A;&#x4E86;&#x5EFA;&#x7ACB;&#x4E00;&#x4E2A;&#x4E0E;&#x8BED;&#x8A00;&#x548C;&#x5E73;&#x53F0;&#x65E0;&#x5173;&#x7684;&#x7EA6;&#x5B9A;&#xFF0C;&#x8FD9;&#x4E2A;&#x7EA6;&#x5B9A;&#x9700;&#x8981;&#x91C7;&#x7528;&#x4E0E;&#x5177;&#x4F53;&#x5F00;&#x53D1;&#x8BED;&#x8A00;&#x3001;&#x5E73;&#x53F0;&#x65E0;&#x5173;&#x7684;&#x8BED;&#x8A00;&#x6765;&#x8FDB;&#x884C;&#x63CF;&#x8FF0;&#x3002;&#x8FD9;&#x79CD;&#x8BED;&#x8A00;&#x88AB;&#x79F0;&#x4E3A;&#x63A5;&#x53E3;&#x63CF;&#x8FF0;&#x8BED;&#x8A00;&#xFF08;IDL&#xFF09;&#xFF0C;&#x91C7;&#x7528;IDL&#x64B0;&#x5199;&#x7684;&#x534F;&#x8BAE;&#x7EA6;&#x5B9A;&#x79F0;&#x4E4B;&#x4E3A;IDL&#x6587;&#x4EF6;&#x3002;</li>
<li>IDL Compiler&#xFF1A;IDL&#x6587;&#x4EF6;&#x4E2D;&#x7EA6;&#x5B9A;&#x7684;&#x5185;&#x5BB9;&#x4E3A;&#x4E86;&#x5728;&#x5404;&#x8BED;&#x8A00;&#x548C;&#x5E73;&#x53F0;&#x53EF;&#x89C1;&#xFF0C;&#x9700;&#x8981;&#x6709;&#x4E00;&#x4E2A;&#x7F16;&#x8BD1;&#x5668;&#xFF0C;&#x5C06;IDL&#x6587;&#x4EF6;&#x8F6C;&#x6362;&#x6210;&#x5404;&#x8BED;&#x8A00;&#x5BF9;&#x5E94;&#x7684;&#x52A8;&#x6001;&#x5E93;&#x3002;</li>
<li>Stub/Skeleton Lib&#xFF1A;&#x8D1F;&#x8D23;&#x5E8F;&#x5217;&#x5316;&#x548C;&#x53CD;&#x5E8F;&#x5217;&#x5316;&#x7684;&#x5DE5;&#x4F5C;&#x4EE3;&#x7801;&#x3002;Stub&#x662F;&#x4E00;&#x6BB5;&#x90E8;&#x7F72;&#x5728;&#x5206;&#x5E03;&#x5F0F;&#x7CFB;&#x7EDF;&#x5BA2;&#x6237;&#x7AEF;&#x7684;&#x4EE3;&#x7801;&#xFF0C;&#x4E00;&#x65B9;&#x9762;&#x63A5;&#x6536;&#x5E94;&#x7528;&#x5C42;&#x7684;&#x53C2;&#x6570;&#xFF0C;&#x5E76;&#x5BF9;&#x5176;&#x5E8F;&#x5217;&#x5316;&#x540E;&#x901A;&#x8FC7;&#x5E95;&#x5C42;&#x534F;&#x8BAE;&#x6808;&#x53D1;&#x9001;&#x5230;&#x670D;&#x52A1;&#x7AEF;&#xFF0C;&#x53E6;&#x4E00;&#x65B9;&#x9762;&#x63A5;&#x6536;&#x670D;&#x52A1;&#x7AEF;&#x5E8F;&#x5217;&#x5316;&#x540E;&#x7684;&#x7ED3;&#x679C;&#x6570;&#x636E;&#xFF0C;&#x53CD;&#x5E8F;&#x5217;&#x5316;&#x540E;&#x4EA4;&#x7ED9;&#x5BA2;&#x6237;&#x7AEF;&#x5E94;&#x7528;&#x5C42;&#xFF1B;Skeleton&#x90E8;&#x7F72;&#x5728;&#x670D;&#x52A1;&#x7AEF;&#xFF0C;&#x5176;&#x529F;&#x80FD;&#x4E0E;Stub&#x76F8;&#x53CD;&#xFF0C;&#x4ECE;&#x4F20;&#x8F93;&#x5C42;&#x63A5;&#x6536;&#x5E8F;&#x5217;&#x5316;&#x53C2;&#x6570;&#xFF0C;&#x53CD;&#x5E8F;&#x5217;&#x5316;&#x540E;&#x4EA4;&#x7ED9;&#x670D;&#x52A1;&#x7AEF;&#x5E94;&#x7528;&#x5C42;&#xFF0C;&#x5E76;&#x5C06;&#x5E94;&#x7528;&#x5C42;&#x7684;&#x6267;&#x884C;&#x7ED3;&#x679C;&#x5E8F;&#x5217;&#x5316;&#x540E;&#x6700;&#x7EC8;&#x4F20;&#x9001;&#x7ED9;&#x5BA2;&#x6237;&#x7AEF;Stub&#x3002;</li>
<li>Client/Server&#xFF1A;&#x6307;&#x7684;&#x662F;&#x5E94;&#x7528;&#x5C42;&#x7A0B;&#x5E8F;&#x4EE3;&#x7801;&#xFF0C;&#x4ED6;&#x4EEC;&#x9762;&#x5BF9;&#x7684;&#x662F;IDL&#x6240;&#x751F;&#x5B58;&#x7684;&#x7279;&#x5B9A;&#x8BED;&#x8A00;&#x7684;class&#x6216;struct&#x3002;</li>
<li>&#x5E95;&#x5C42;&#x534F;&#x8BAE;&#x6808;&#x548C;&#x4E92;&#x8054;&#x7F51;&#xFF1A;&#x5E8F;&#x5217;&#x5316;&#x4E4B;&#x540E;&#x7684;&#x6570;&#x636E;&#x901A;&#x8FC7;&#x5E95;&#x5C42;&#x7684;&#x4F20;&#x8F93;&#x5C42;&#x3001;&#x7F51;&#x7EDC;&#x5C42;&#x3001;&#x94FE;&#x8DEF;&#x5C42;&#x4EE5;&#x53CA;&#x7269;&#x7406;&#x5C42;&#x534F;&#x8BAE;&#x8F6C;&#x6362;&#x6210;&#x6570;&#x5B57;&#x4FE1;&#x53F7;&#x5728;&#x4E92;&#x8054;&#x7F51;&#x4E2D;&#x4F20;&#x9012;&#x3002;<br>
<img src="https://hanzhu.dev/content/images/2022/06/a9bee91c.jpeg" alt="a9bee91c" loading="lazy"></li>
</ul>
<p>&#x5E8F;&#x5217;&#x5316;&#x7EC4;&#x4EF6;&#x4E0E;&#x6570;&#x636E;&#x5E93;&#x8BBF;&#x95EE;&#x7EC4;&#x4EF6;&#x7684;&#x5BF9;&#x6BD4;<br>
&#x6570;&#x636E;&#x5E93;&#x8BBF;&#x95EE;&#x5BF9;&#x4E8E;&#x5F88;&#x591A;&#x5DE5;&#x7A0B;&#x5E08;&#x6765;&#x8BF4;&#x76F8;&#x5BF9;&#x719F;&#x6089;&#xFF0C;&#x6240;&#x7528;&#x5230;&#x7684;&#x7EC4;&#x4EF6;&#x4E5F;&#x76F8;&#x5BF9;&#x5BB9;&#x6613;&#x7406;&#x89E3;&#x3002;&#x4E0B;&#x8868;&#x7C7B;&#x6BD4;&#x4E86;&#x5E8F;&#x5217;&#x5316;&#x8FC7;&#x7A0B;&#x4E2D;&#x7528;&#x5230;&#x7684;&#x90E8;&#x5206;&#x7EC4;&#x4EF6;&#x548C;&#x6570;&#x636E;&#x5E93;&#x8BBF;&#x95EE;&#x7EC4;&#x4EF6;&#x7684;&#x5BF9;&#x5E94;&#x5173;&#x7CFB;&#xFF0C;&#x4EE5;&#x4FBF;&#x4E8E;&#x5927;&#x5BB6;&#x66F4;&#x597D;&#x7684;&#x628A;&#x63E1;&#x5E8F;&#x5217;&#x5316;&#x76F8;&#x5173;&#x7EC4;&#x4EF6;&#x7684;&#x6982;&#x5FF5;&#x3002;</p>
<table>
<thead>
<tr>
<th>&#x5E8F;&#x5217;&#x5316;&#x7EC4;&#x4EF6;</th>
<th>&#x6570;&#x636E;&#x5E93;&#x7EC4;&#x4EF6;</th>
<th>&#x8BF4;&#x660E;</th>
</tr>
</thead>
<tbody>
<tr>
<td>IDL</td>
<td>DDL</td>
<td>&#x7528;&#x4E8E;&#x5EFA;&#x8868;&#x6216;&#x8005;&#x6A21;&#x578B;&#x7684;&#x8BED;&#x8A00;</td>
</tr>
<tr>
<td>DL file</td>
<td>DB Schema</td>
<td>&#x8868;&#x521B;&#x5EFA;&#x6587;&#x4EF6;&#x6216;&#x6A21;&#x578B;&#x6587;&#x4EF6;</td>
</tr>
<tr>
<td>Stub/Skeleton lib</td>
<td>O/R mapping</td>
<td>&#x5C06;class&#x548C;Table&#x6216;&#x8005;&#x6570;&#x636E;&#x6A21;&#x578B;&#x8FDB;&#x884C;&#x6620;&#x5C04;</td>
</tr>
</tbody>
</table>
<p>References:<br>
<a href="https://tech.meituan.com/2015/02/26/serialization-vs-deserialization.html">https://tech.meituan.com/2015/02/26/serialization-vs-deserialization.html</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[DNS既使用TCP又使用UDP]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h1 id="from-microsoft">From Microsoft</h1>
<p>DNS uses TCP for Zone transfer and UDP for name, and queries either regular (primary) or reverse. UDP can be used to exchange small information whereas TCP must be used to exchange information larger than 512 bytes. If a client doesn&apos;t get response from DNS, it</p>]]></description><link>https://hanzhu.dev/dnsyou-shi-yong-tcpyou-shi-yong-udp/</link><guid isPermaLink="false">6272334c9657313908075f60</guid><category><![CDATA[network]]></category><category><![CDATA[tcp]]></category><dc:creator><![CDATA[Frank]]></dc:creator><pubDate>Wed, 04 May 2022 08:15:46 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h1 id="from-microsoft">From Microsoft</h1>
<p>DNS uses TCP for Zone transfer and UDP for name, and queries either regular (primary) or reverse. UDP can be used to exchange small information whereas TCP must be used to exchange information larger than 512 bytes. If a client doesn&apos;t get response from DNS, it must retransmit the data using TCP after 3-5 seconds of interval.</p>
<h1 id="from-scoolor-blog">From Scoolor Blog</h1>
<h2 id="dns%E5%9C%A8%E8%BF%9B%E8%A1%8C%E5%8C%BA%E5%9F%9F%E4%BC%A0%E8%BE%93%E7%9A%84%E6%97%B6%E5%80%99%E4%BD%BF%E7%94%A8tcp%E5%8D%8F%E8%AE%AE%EF%BC%8C%E5%85%B6%E5%AE%83%E6%97%B6%E5%80%99%E5%88%99%E4%BD%BF%E7%94%A8udp%E5%8D%8F%E8%AE%AE">DNS&#x5728;&#x8FDB;&#x884C;&#x533A;&#x57DF;&#x4F20;&#x8F93;&#x7684;&#x65F6;&#x5019;&#x4F7F;&#x7528;TCP&#x534F;&#x8BAE;&#xFF0C;&#x5176;&#x5B83;&#x65F6;&#x5019;&#x5219;&#x4F7F;&#x7528;UDP&#x534F;&#x8BAE;</h2>
<p>DNS&#x7684;&#x89C4;&#x8303;&#x89C4;&#x5B9A;&#x4E86;2&#x79CD;&#x7C7B;&#x578B;&#x7684;DNS&#x670D;&#x52A1;&#x5668;&#xFF0C;&#x4E00;&#x4E2A;&#x53EB;&#x4E3B;DNS&#x670D;&#x52A1;&#x5668;&#xFF0C;&#x4E00;&#x4E2A;&#x53EB;&#x8F85;&#x52A9;DNS&#x670D;&#x52A1;&#x5668;&#x3002;&#x5728;&#x4E00;&#x4E2A;&#x533A;&#x4E2D;&#x4E3B;DNS&#x670D;&#x52A1;&#x5668;&#x4ECE;&#x81EA;&#x5DF1;&#x672C;&#x673A;&#x7684;&#x6570;&#x636E;&#x6587;&#x4EF6;&#x4E2D;&#x8BFB;&#x53D6;&#x8BE5;&#x533A;&#x7684;DNS&#x6570;&#x636E;&#x4FE1;&#x606F;&#xFF0C;&#x800C;&#x8F85;&#x52A9;DNS&#x670D;&#x52A1;&#x5668;&#x5219;&#x4ECE;&#x533A;&#x7684;&#x4E3B;DNS&#x670D;&#x52A1;&#x5668;&#x4E2D;&#x8BFB;&#x53D6;&#x8BE5;&#x533A;&#x7684;DNS&#x6570;&#x636E;&#x4FE1;&#x606F;&#x3002;&#x5F53;&#x4E00;&#x4E2A;&#x8F85;&#x52A9;DNS&#x670D;&#x52A1;&#x5668;&#x542F;&#x52A8;&#x65F6;&#xFF0C;&#x5B83;&#x9700;&#x8981;&#x4E0E;&#x4E3B;DNS&#x670D;&#x52A1;&#x5668;&#x901A;&#x4FE1;&#xFF0C;&#x5E76;&#x52A0;&#x8F7D;&#x6570;&#x636E;&#x4FE1;&#x606F;&#xFF0C;&#x8FD9;&#x5C31;&#x53EB;&#x505A;&#x533A;&#x4F20;&#x9001;&#xFF08;zone transfer&#xFF09;&#x3002;</p>
<p>&#x533A;&#x57DF;&#x4F20;&#x8F93;&#x662F;DNS&#x7684;&#x4E8B;&#x52A1;&#xFF0C;&#x5BF9;&#x51C6;&#x786E;&#x6027;&#x8981;&#x6C42;&#x6BD4;&#x8F83;&#x9AD8;&#xFF0C;&#x800C;&#x4E14;&#x4F1A;&#x4EA7;&#x751F;&#x5927;&#x4E8E;512&#x5B57;&#x8282;&#x7684;&#x6570;&#x636E;&#x5305;&#xFF0C;&#x56E0;&#x6B64;&#x4F7F;&#x7528;TCP&#x534F;&#x8BAE;&#x3002;</p>
<h2 id="%E4%B8%BA%E4%BB%80%E4%B9%88%E6%97%A2%E4%BD%BF%E7%94%A8tcp%E5%8F%88%E4%BD%BF%E7%94%A8udp%EF%BC%9F">&#x4E3A;&#x4EC0;&#x4E48;&#x65E2;&#x4F7F;&#x7528;TCP&#x53C8;&#x4F7F;&#x7528;UDP&#xFF1F;</h2>
<p>&#x9996;&#x5148;&#x4E86;&#x89E3;&#x4E00;&#x4E0B;TCP&#x4E0E;UDP&#x4F20;&#x9001;&#x5B57;&#x8282;&#x7684;&#x957F;&#x5EA6;&#x9650;&#x5236;&#x3002;</p>
<p>UDP&#x62A5;&#x6587;&#x7684;&#x6700;&#x5927;&#x957F;&#x5EA6;&#x4E3A;512&#x5B57;&#x8282;&#xFF0C;&#x800C;TCP&#x5219;&#x5141;&#x8BB8;&#x62A5;&#x6587;&#x957F;&#x5EA6;&#x8D85;&#x8FC7;512&#x5B57;&#x8282;&#x3002;&#x5F53;DNS&#x67E5;&#x8BE2;&#x8D85;&#x8FC7;512&#x5B57;&#x8282;&#x65F6;&#xFF0C;&#x534F;&#x8BAE;&#x7684;TC&#x6807;&#x5FD7;&#x51FA;&#x73B0;&#x5220;&#x9664;&#x6807;&#x5FD7;&#xFF0C;&#x8FD9;&#x65F6;&#x5219;&#x4F7F;&#x7528;TCP&#x53D1;&#x9001;&#x3002;&#x901A;&#x5E38;&#x4F20;&#x7EDF;&#x7684;UDP&#x62A5;&#x6587;&#x4E00;&#x822C;&#x4E0D;&#x4F1A;&#x5927;&#x4E8E;512&#x5B57;&#x8282;&#x3002;</p>
<h2 id="%E5%8C%BA%E5%9F%9F%E4%BC%A0%E9%80%81%E6%97%B6%E4%BD%BF%E7%94%A8tcp%EF%BC%8C%E4%B8%BB%E8%A6%81%E6%9C%89%E4%B8%80%E4%B8%8B%E4%B8%A4%E7%82%B9%E8%80%83%E8%99%91">&#x533A;&#x57DF;&#x4F20;&#x9001;&#x65F6;&#x4F7F;&#x7528;TCP&#xFF0C;&#x4E3B;&#x8981;&#x6709;&#x4E00;&#x4E0B;&#x4E24;&#x70B9;&#x8003;&#x8651;</h2>
<p>&#x8F85;&#x57DF;&#x540D;&#x670D;&#x52A1;&#x5668;&#x4F1A;&#x5B9A;&#x65F6;&#xFF08;&#x4E00;&#x822C;&#x65F6;3&#x5C0F;&#x65F6;&#xFF09;&#x5411;&#x4E3B;&#x57DF;&#x540D;&#x670D;&#x52A1;&#x5668;&#x8FDB;&#x884C;&#x67E5;&#x8BE2;&#x4EE5;&#x4FBF;&#x4E86;&#x89E3;&#x6570;&#x636E;&#x662F;&#x5426;&#x6709;&#x53D8;&#x52A8;&#x3002;&#x5982;&#x6709;&#x53D8;&#x52A8;&#xFF0C;&#x5219;&#x4F1A;&#x6267;&#x884C;&#x4E00;&#x6B21;&#x533A;&#x57DF;&#x4F20;&#x9001;&#xFF0C;&#x8FDB;&#x884C;&#x6570;&#x636E;&#x540C;&#x6B65;&#x3002;&#x533A;&#x57DF;&#x4F20;&#x9001;&#x5C06;&#x4F7F;&#x7528;TCP&#x800C;&#x4E0D;&#x662F;UDP&#xFF0C;&#x56E0;&#x4E3A;&#x6570;&#x636E;&#x540C;&#x6B65;&#x4F20;&#x9001;&#x7684;&#x6570;&#x636E;&#x91CF;&#x6BD4;&#x4E00;&#x4E2A;&#x8BF7;&#x6C42;&#x548C;&#x5E94;&#x7B54;&#x7684;&#x6570;&#x636E;&#x91CF;&#x8981;&#x591A;&#x5F97;&#x591A;&#x3002;<br>
TCP&#x662F;&#x4E00;&#x79CD;&#x53EF;&#x9760;&#x7684;&#x8FDE;&#x63A5;&#xFF0C;&#x4FDD;&#x8BC1;&#x4E86;&#x6570;&#x636E;&#x7684;&#x51C6;&#x786E;&#x6027;&#x3002;</p>
<h2 id="%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90%E6%97%B6%E4%BD%BF%E7%94%A8udp%E5%8D%8F%E8%AE%AE">&#x57DF;&#x540D;&#x89E3;&#x6790;&#x65F6;&#x4F7F;&#x7528;UDP&#x534F;&#x8BAE;</h2>
<p>&#x5BA2;&#x6237;&#x7AEF;&#x5411;DNS&#x670D;&#x52A1;&#x5668;&#x67E5;&#x8BE2;&#x57DF;&#x540D;&#xFF0C;&#x4E00;&#x822C;&#x8FD4;&#x56DE;&#x7684;&#x5185;&#x5BB9;&#x90FD;&#x4E0D;&#x8D85;&#x8FC7;512&#x5B57;&#x8282;&#xFF0C;&#x7528;UDP&#x4F20;&#x8F93;&#x5373;&#x53EF;&#x3002;&#x4E0D;&#x7528;&#x7ECF;&#x8FC7;TCP&#x4E09;&#x6B21;&#x63E1;&#x624B;&#xFF0C;&#x8FD9;&#x6837;DNS&#x670D;&#x52A1;&#x5668;&#x8D1F;&#x8F7D;&#x66F4;&#x4F4E;&#xFF0C;&#x54CD;&#x5E94;&#x66F4;&#x5FEB;&#x3002;&#x867D;&#x7136;&#x4ECE;&#x7406;&#x8BBA;&#x4E0A;&#x8BF4;&#xFF0C;&#x5BA2;&#x6237;&#x7AEF;&#x4E5F;&#x53EF;&#x4EE5;&#x6307;&#x5B9A;&#x5411;DNS&#x670D;&#x52A1;&#x5668;&#x67E5;&#x8BE2;&#x7684;&#x65F6;&#x5019;&#x4F7F;&#x7528;TCP&#xFF0C;&#x4F46;&#x4E8B;&#x5B9E;&#x4E0A;&#xFF0C;&#x5F88;&#x591A;DNS&#x670D;&#x52A1;&#x5668;&#x8FDB;&#x884C;&#x914D;&#x7F6E;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x4EC5;&#x652F;&#x6301;UDP&#x67E5;&#x8BE2;&#x5305;&#x3002;</p>
<h2 id="%E6%80%BB%E7%BB%93">&#x603B;&#x7ED3;</h2>
<p>&#x5927;&#x591A;&#x6570;&#x60C5;&#x51B5;&#x4E0B;&#xFF0C;DNS&#x89E3;&#x6790;&#x8BF7;&#x6C42;&#x548C;&#x54CD;&#x5E94;&#x90FD;&#x5F88;&#x5C0F;&#xFF0C;&#x4F7F;&#x7528;UDP&#x534F;&#x8BAE;&#x66F4;&#x52A0;&#x9AD8;&#x6548;&#xFF0C;&#x867D;&#x7136;&#x6CA1;&#x6709;TCP&#x53EF;&#x9760;&#xFF0C;&#x4F46;&#x662F;&#x901F;&#x5EA6;&#x5FEB;&#xFF0C;&#x6D88;&#x8017;&#x7684;&#x7CFB;&#x7EDF;&#x8D44;&#x6E90;&#x66F4;&#x5C11;&#xFF0C;&#x975E;&#x5E38;&#x9002;&#x5408;&#x5C11;&#x91CF;&#x6570;&#x636E;&#x5305;&#x7684;&#x4F20;&#x8F93;&#x3002;<br>
&#x4E00;&#x4E9B;DNS&#x4E8B;&#x52A1;&#xFF0C;&#x6BD4;&#x5982;&#x533A;&#x57DF;&#x4F20;&#x8F93;&#x6216;&#x5176;&#x4ED6;&#x9644;&#x52A0;&#x67E5;&#x8BE2;&#xFF0C;&#x53EF;&#x80FD;&#x4F1A;&#x4EA7;&#x751F;&#x5927;&#x4E8E;512&#x5B57;&#x8282;&#x7684;&#x6570;&#x636E;&#x5305;&#xFF0C;&#x56E0;&#x6B64;&#x4F7F;&#x7528;TCP&#x66F4;&#x52A0;&#x53EF;&#x9760;&#xFF0C;&#x4F7F;&#x7528;TCP&#x4F1A;&#x51CF;&#x5C11;&#x4E22;&#x5305;&#x548C;&#x91CD;&#x65B0;&#x53D1;&#x5305;&#x7684;&#x60C5;&#x51B5;&#xFF0C;&#x56E0;&#x6B64;&#x66F4;&#x52A0;&#x53EF;&#x9760;&#x4E0E;&#x9AD8;&#x6548;&#x3002;</p>
<p>References:<br>
<a href="https://docs.microsoft.com/en-us/troubleshoot/windows-server/networking/dns-works-on-tcp-and-udp">https://docs.microsoft.com/en-us/troubleshoot/windows-server/networking/dns-works-on-tcp-and-udp</a><br>
<a href="https://www.zhihu.com/question/310145373">https://www.zhihu.com/question/310145373</a><br>
<a href="https://scoolor.github.io/2018/11/10/dns-udp-tcp/">https://scoolor.github.io/2018/11/10/dns-udp-tcp/</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[MySQL backlog]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#x4ECA;&#x5929;&#x6B63;&#x5DE7;&#x770B;&#x5230;&#x4E86;&#xFF0C;&#x5148;&#x603B;&#x7ED3;&#x5728;&#x8FD9;&#x91CC;</p>
<p><a href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_back_log">back_log</a></p>
<table>
<thead>
<tr>
<th>Command-Line Format</th>
<th>--back-log=#</th>
</tr>
</thead>
<tbody>
<tr>
<td>System Variable</td>
<td>back_log</td>
</tr>
<tr>
<td>Scope</td>
<td>Global</td>
</tr>
<tr>
<td>Dynamic</td>
<td>No</td>
</tr>
<tr>
<td>SET_VAR Hint Applies</td>
<td>No</td>
</tr>
<tr>
<td>Type</td>
<td>Integer</td>
</tr>
<tr>
<td>Default Value</td>
<td>-1 (signifies autosizing; do not assign this literal value)</td>
</tr>
<tr>
<td>Minimum Value</td>
<td>1</td>
</tr>
</tbody>
</table>
<p>The number</p>]]></description><link>https://hanzhu.dev/mysql-backlog/</link><guid isPermaLink="false">620f51b49657313908075f00</guid><category><![CDATA[linux]]></category><category><![CDATA[database]]></category><dc:creator><![CDATA[Frank]]></dc:creator><pubDate>Sat, 19 Feb 2022 13:28:20 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x4ECA;&#x5929;&#x6B63;&#x5DE7;&#x770B;&#x5230;&#x4E86;&#xFF0C;&#x5148;&#x603B;&#x7ED3;&#x5728;&#x8FD9;&#x91CC;</p>
<p><a href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_back_log">back_log</a></p>
<table>
<thead>
<tr>
<th>Command-Line Format</th>
<th>--back-log=#</th>
</tr>
</thead>
<tbody>
<tr>
<td>System Variable</td>
<td>back_log</td>
</tr>
<tr>
<td>Scope</td>
<td>Global</td>
</tr>
<tr>
<td>Dynamic</td>
<td>No</td>
</tr>
<tr>
<td>SET_VAR Hint Applies</td>
<td>No</td>
</tr>
<tr>
<td>Type</td>
<td>Integer</td>
</tr>
<tr>
<td>Default Value</td>
<td>-1 (signifies autosizing; do not assign this literal value)</td>
</tr>
<tr>
<td>Minimum Value</td>
<td>1</td>
</tr>
</tbody>
</table>
<p>The number of outstanding connection requests MySQL can have. This comes into play when the main MySQL thread gets very many connection requests in a very short time. It then takes some time (although very little) for the main thread to check the connection and start a new thread. The back_log value indicates how many requests can be stacked during this short time before MySQL momentarily stops answering new requests. You need to increase this only if you expect a large number of connections in a short period of time.</p>
<p>In other words, this value is the size of the listen queue for incoming TCP/IP connections. Your operating system has its own limit on the size of this queue. The manual page for the Unix listen() system call should have more details. Check your OS documentation for the maximum value for this variable. back_log cannot be set higher than your operating system limit.</p>
<p>The default value is the value of max_connections, which enables the permitted backlog to adjust to the maximum permitted number of connections.</p>
<p><a href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_connections">max_connections</a></p>
<table>
<thead>
<tr>
<th>Command-Line Format</th>
<th>--max-connections=#</th>
</tr>
</thead>
<tbody>
<tr>
<td>System Variable</td>
<td>max_connections</td>
</tr>
<tr>
<td>Scope</td>
<td>Global</td>
</tr>
<tr>
<td>Dynamic</td>
<td>Yes</td>
</tr>
<tr>
<td>SET_VAR Hint Applies</td>
<td>No</td>
</tr>
<tr>
<td>Type</td>
<td>Integer</td>
</tr>
<tr>
<td>Default Value</td>
<td>151</td>
</tr>
</tbody>
</table>
<p>The maximum permitted number of simultaneous client connections. The maximum effective value is the lesser of the effective value of open_files_limit - 810, and the value actually set for max_connections.</p>
<p>For more information, see <a href="https://dev.mysql.com/doc/refman/8.0/en/connection-interfaces.html">Section 5.1.12.1, &#x201C;Connection Interfaces&#x201D;</a>.</p>
<p><a href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html">https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html</a><br>
<a href="https://juejin.cn/post/6844903949221232647">&#x8BE6;&#x89E3;linux&#x4E2D;&#x7684;backlog</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[[Linux]硬链接和软链接]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#x672C;&#x6587;&#x975E;&#x7EAF;&#x539F;&#x521B;&#xFF0C;&#x662F;&#x5404;&#x6587;&#x6742;&#x7CC5;&#x800C;&#x6765;&#x52A0;&#x90E8;&#x5206;&#x81EA;&#x8EAB;&#x5B9E;&#x8DF5;&#xFF0C;&#x5728;&#x6B64;&#x81F4;&#x8C22;&#x5404;&#x4F4D;&#x4F5C;&#x8005;&#xFF01;</p>
<p><strong>&#x6B63;&#x6587;</strong><br>
<img src="https://hanzhu.dev/content/images/2021/10/1192583-20170925225909964-1496152149.png" alt="1192583-20170925225909964-1496152149" loading="lazy"></p>
<p>&#x8BF4;&#x5230;&#x786C;&#x94FE;&#x63A5;&#xFF08;Hard link&#xFF09;&#x4E0E;&#x8F6F;&#x94FE;&#x63A5;(Symbolic link)&#xFF0C;&#x9996;</p>]]></description><link>https://hanzhu.dev/hard-link-and-symbolic-link/</link><guid isPermaLink="false">61618a589657313908075e23</guid><category><![CDATA[linux]]></category><category><![CDATA[OS]]></category><dc:creator><![CDATA[Frank]]></dc:creator><pubDate>Sat, 09 Oct 2021 12:33:07 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x672C;&#x6587;&#x975E;&#x7EAF;&#x539F;&#x521B;&#xFF0C;&#x662F;&#x5404;&#x6587;&#x6742;&#x7CC5;&#x800C;&#x6765;&#x52A0;&#x90E8;&#x5206;&#x81EA;&#x8EAB;&#x5B9E;&#x8DF5;&#xFF0C;&#x5728;&#x6B64;&#x81F4;&#x8C22;&#x5404;&#x4F4D;&#x4F5C;&#x8005;&#xFF01;</p>
<p><strong>&#x6B63;&#x6587;</strong><br>
<img src="https://hanzhu.dev/content/images/2021/10/1192583-20170925225909964-1496152149.png" alt="1192583-20170925225909964-1496152149" loading="lazy"></p>
<p>&#x8BF4;&#x5230;&#x786C;&#x94FE;&#x63A5;&#xFF08;Hard link&#xFF09;&#x4E0E;&#x8F6F;&#x94FE;&#x63A5;(Symbolic link)&#xFF0C;&#x9996;&#x5148;&#x9700;&#x8981;&#x4E86;&#x89E3;&#x7D22;&#x5F15;&#x8282;&#x70B9;&#xFF08;Inode&#xFF09;&#x3002;&#x5173;&#x4E8E;Inode&#x8BF7;&#x79FB;&#x6B65;&#x8FD9;&#x91CC;&#x3002;</p>
<h2 id="%E7%A1%AC%E9%93%BE%E6%8E%A5">&#x786C;&#x94FE;&#x63A5;</h2>
<p>&#x7531;&#x4E8E;linux&#x4E0B;&#x7684;&#x6587;&#x4EF6;&#x662F;&#x901A;&#x8FC7;&#x7D22;&#x5F15;&#x8282;&#x70B9;&#xFF08;Inode&#xFF09;&#x6765;&#x8BC6;&#x522B;&#x6587;&#x4EF6;&#xFF0C;&#x786C;&#x94FE;&#x63A5;&#x53EF;&#x4EE5;&#x8BA4;&#x4E3A;<strong>&#x662F;&#x4E00;&#x4E2A;&#x6307;&#x9488;</strong>&#xFF0C;&#x6307;&#x5411;&#x6587;&#x4EF6;&#x7D22;&#x5F15;&#x8282;&#x70B9;&#x7684;&#x6307;&#x9488;&#xFF0C;&#x7CFB;&#x7EDF;&#x5E76;&#x4E0D;&#x4E3A;&#x5B83;&#x91CD;&#x65B0;&#x5206;&#x914D;inode&#x3002;inode&#x6307;&#x5411;&#x4E86;&#x7269;&#x7406;&#x786C;&#x76D8;&#x7684;<strong>&#x4E00;&#x4E2A;&#x533A;&#x5757;</strong>&#xFF0C;&#x4E8B;&#x5B9E;&#x4E0A;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x4F1A;&#x7EF4;&#x62A4;&#x4E00;&#x4E2A;&#x5F15;&#x7528;&#x8BA1;&#x6570;&#xFF0C;&#x53EA;&#x8981;&#x6709;&#x6587;&#x4EF6;&#x6307;&#x5411;&#x8FD9;&#x4E2A;&#x533A;&#x5757;&#xFF0C;&#x5B83;&#x5C31;&#x4E0D;&#x4F1A;&#x4ECE;&#x786C;&#x76D8;&#x4E0A;&#x6D88;&#x5931;&#x3002;<strong>&#x6BCF;&#x6DFB;&#x52A0;&#x4E00;&#x4E2A;&#x4E00;&#x4E2A;&#x786C;&#x94FE;&#x63A5;&#xFF0C;&#x6587;&#x4EF6;&#x7684;&#x94FE;&#x63A5;&#x6570;&#x5C31;&#x52A0;1</strong>&#x3002;</p>
<p>&#x7528;ln&#x547D;&#x4EE4;&#x6765;&#x5EFA;&#x7ACB;&#x786C;&#x94FE;&#x63A5;&#x3002;</p>
<pre><code>#&#x7528;&#x6CD5;
usage: ln [-Ffhinsv] source_file [target_file]
       ln [-Ffhinsv] source_file ... target_dir
       link source_file target_file

#&#x521B;&#x5EFA;&#x524D;
&#x279C;  ~ ls -lrth tmp
-rw-r--r--  1 hanzhu  staff     0B Oct  9 20:41 tmp

#&#x521B;&#x5EFA;&#x786C;&#x94FE;&#x63A5;
&#x279C;  ~ ln tmp tmphard

#&#x521B;&#x5EFA;&#x540E;
&#x279C;  ~ ls -ilrth tmp*
38351334 -rw-r--r--  2 hanzhu  staff     0B Oct  9 20:41 tmphard
38351334 -rw-r--r--  2 hanzhu  staff     0B Oct  9 20:41 tmp
</code></pre>
<p>&#x6CE8;&#x610F;&#x5728;&#x521B;&#x5EFA;&#x94FE;&#x63A5;&#x524D;, tmp&#x663E;&#x793A;&#x7684;&#x94FE;&#x63A5;&#x6570;&#x76EE;&#x4E3A;1,&#x521B;&#x5EFA;&#x94FE;&#x63A5;&#x540E;</p>
<ol>
<li>tmp&#x548C;tmphard&#x7684;&#x94FE;&#x63A5;&#x6570;&#x76EE;&#x90FD;&#x53D8;&#x4E3A;2;</li>
<li>tmp&#x548C;tmphard&#x5728;inode&#x53F7;&#x662F;&#x4E00;&#x6837;&#x7684;;</li>
<li>tmp&#x548C;tmphard&#x663E;&#x793A;&#x7684;&#x6587;&#x4EF6;&#x5927;&#x5C0F;&#x4E5F;&#x662F;&#x4E00;&#x6837;&#x3002;<br>
&#x53EF;&#x89C1;&#x8FDB;&#x884C;&#x4E86;ln&#x547D;&#x4EE4;&#x7684;&#x64CD;&#x4F5C;&#x7ED3;&#x679C;&#xFF1A;tmp&#x548C;tmphard&#x662F;&#x540C;&#x4E00;&#x4E2A;&#x6587;&#x4EF6;&#x7684;&#x4E24;&#x4E2A;&#x540D;&#x5B57;&#xFF0C;&#x5B83;&#x4EEC;&#x5177;&#x6709;&#x540C;&#x6837;&#x7684;&#x7D22;&#x5F15;&#x8282;&#x70B9;&#x53F7;&#x548C;&#x6587;&#x4EF6;&#x5C5E;&#x6027;&#xFF0C;&#x5EFA;&#x7ACB;&#x6587;&#x4EF6;tmp&#x7684;&#x786C;&#x94FE;&#x63A5;&#xFF0C;&#x5C31;&#x662F;&#x4E3A;tmp&#x7684;&#x6587;&#x4EF6;&#x7D22;&#x5F15;&#x8282;&#x70B9;&#x5728;&#x5F53;&#x524D;&#x76EE;&#x5F55;&#x4E0A;&#x5EFA;&#x7ACB;&#x4E00;&#x4E2A;&#x65B0;&#x6307;&#x9488;&#x3002;</li>
</ol>
<p>&#x5982;&#x4E0B;&#x793A;&#x4F8B;,&#x4F60;&#x53EF;&#x4EE5;&#x5220;&#x9664;&#x5176;&#x4E2D;&#x4EFB;&#x4F55;&#x4E00;&#x4E2A;,&#x6BD4;&#x5982;rm tmp ,&#x6BCF;&#x6B21;&#x53EA;&#x4F1A;&#x5220;&#x9664;&#x4E00;&#x4E2A;&#x6307;&#x9488;&#xFF0C;&#x94FE;&#x63A5;&#x6570;&#x540C;&#x65F6;&#x51CF;&#x4E00;,&#x53EA;&#x6709;&#x5C06;&#x6240;&#x6709;&#x6307;&#x5411;&#x6587;&#x4EF6;&#x5185;&#x5BB9;&#x7684;&#x6307;&#x9488;,&#x4E5F;&#x5373;&#x94FE;&#x63A5;&#x6570;&#x51CF;&#x4E3A;0&#x65F6;&#xFF0C;&#x5185;&#x6838;&#x624D;&#x4F1A;&#x628A;&#x6587;&#x4EF6;&#x5185;&#x5BB9;&#x4ECE;&#x78C1;&#x76D8;&#x4E0A;&#x5220;&#x9664;&#x3002;</p>
<pre><code>#&#x5220;&#x9664;
&#x279C;  ~ rm tmp
&#x279C;  ~ ls -ilrth tmp*
38351334 -rw-r--r--  1 hanzhu  staff     0B Oct  9 20:41 tmphard
</code></pre>
<p>&#x4E0D;&#x8DB3;&#xFF1A;<br>
&#x5C3D;&#x7BA1;&#x786C;&#x94FE;&#x63A5;&#x8282;&#x7701;&#x7A7A;&#x95F4;&#xFF0C;&#x4E5F;&#x662F;Linux&#x7CFB;&#x7EDF;&#x6574;&#x5408;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x7684;&#x4F20;&#x7EDF;&#x65B9;&#x5F0F;&#xFF0C;&#x4F46;&#x662F;&#x5B58;&#x5728;&#x4EE5;&#x4E0B;&#x4E0D;&#x8DB3;&#x4E4B;&#x5904;&#xFF1A;</p>
<ol>
<li>&#x4E0D;&#x53EF;&#x4EE5;&#x5728;&#x4E0D;&#x540C;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x7684;&#x6587;&#x4EF6;&#x95F4;&#x5EFA;&#x7ACB;&#x94FE;&#x63A5;</li>
<li>&#x53EA;&#x6709;&#x8D85;&#x7EA7;&#x7528;&#x6237;&#x624D;&#x53EF;&#x4EE5;&#x4E3A;&#x76EE;&#x5F55;&#x521B;&#x5EFA;&#x786C;&#x94FE;&#x63A5;&#x3002;</li>
</ol>
<p><strong>&#x4E00;&#x4E9B;&#x786C;&#x94FE;&#x63A5;&#x603B;&#x7ED3;&#xFF1A;</strong></p>
<ul>
<li>&#x786C;&#x94FE;&#x63A5;&#x6587;&#x4EF6;&#x662F;&#x666E;&#x901A;&#x6587;&#x4EF6;&#xFF0C;&#x53EF;&#x4EE5;&#x7528;rm&#x5220;&#x9664;&#xFF1B;</li>
<li>&#x5177;&#x6709;&#x76F8;&#x540C;inode&#x8282;&#x70B9;&#x53F7;&#x7684;&#x591A;&#x4E2A;&#x6587;&#x4EF6;&#x4E92;&#x4E3A;&#x786C;&#x94FE;&#x63A5;&#x6587;&#x4EF6;&#xFF1B;</li>
<li>&#x5220;&#x9664;&#x786C;&#x94FE;&#x63A5;&#x6587;&#x4EF6;&#x6216;&#x8005;&#x5220;&#x9664;&#x6E90;&#x6587;&#x4EF6;&#x4EFB;&#x610F;&#x4E4B;&#x4E00;&#xFF0C;&#x6587;&#x4EF6;&#x5B9E;&#x4F53;&#x5E76;&#x672A;&#x88AB;&#x5220;&#x9664;&#xFF1B;</li>
<li>&#x53EA;&#x6709;&#x5220;&#x9664;&#x4E86;&#x6E90;&#x6587;&#x4EF6;&#x548C;&#x6240;&#x6709;&#x5BF9;&#x5E94;&#x7684;&#x786C;&#x94FE;&#x63A5;&#x6587;&#x4EF6;&#xFF0C;&#x6587;&#x4EF6;&#x5B9E;&#x4F53;&#x624D;&#x4F1A;&#x88AB;&#x5220;&#x9664;&#xFF1B;</li>
<li>&#x786C;&#x94FE;&#x63A5;&#x6587;&#x4EF6;&#x662F;&#x6587;&#x4EF6;&#x7684;&#x53E6;&#x4E00;&#x4E2A;&#x5165;&#x53E3;&#xFF1B;</li>
<li>&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x7ED9;&#x6587;&#x4EF6;&#x8BBE;&#x7F6E;&#x786C;&#x94FE;&#x63A5;&#x6587;&#x4EF6;&#x6765;&#x9632;&#x6B62;&#x91CD;&#x8981;&#x6587;&#x4EF6;&#x88AB;&#x8BEF;&#x5220;&#xFF1B;</li>
<li>&#x521B;&#x5EFA;&#x786C;&#x94FE;&#x63A5;&#x547D;&#x4EE4; ln &#x6E90;&#x6587;&#x4EF6; &#x786C;&#x94FE;&#x63A5;&#x6587;&#x4EF6;&#xFF1B;</li>
<li>&#x5BF9;&#x4E8E;&#x9759;&#x6001;&#x6587;&#x4EF6;&#xFF08;&#x6CA1;&#x6709;&#x8FDB;&#x7A0B;&#x6B63;&#x5728;&#x8C03;&#x7528;&#xFF09;&#xFF0C;&#x5F53;&#x786C;&#x94FE;&#x63A5;&#x6570;&#x4E3A;0&#x65F6;&#x6587;&#x4EF6;&#x5C31;&#x88AB;&#x5220;&#x9664;&#x3002;&#x6CE8;&#x610F;&#xFF1A;&#x5982;&#x679C;&#x6709;&#x8FDB;&#x7A0B;&#x6B63;&#x5728;&#x8C03;&#x7528;&#xFF0C;&#x5219;&#x65E0;&#x6CD5;&#x5220;&#x9664;&#x6216;&#x8005;&#x5373;&#x4F7F;&#x6587;&#x4EF6;&#x540D;&#x88AB;&#x5220;&#x9664;&#x4F46;&#x7A7A;&#x95F4;&#x4E0D;&#x4F1A;&#x91CA;&#x653E;&#x3002;</li>
</ul>
<h2 id="%E8%BD%AF%E9%93%BE%E6%8E%A5">&#x8F6F;&#x94FE;&#x63A5;</h2>
<p>&#x8F6F;&#x94FE;&#x63A5;&#x514B;&#x670D;&#x4E86;&#x786C;&#x94FE;&#x63A5;&#x7684;&#x4E0D;&#x8DB3;&#xFF0C;&#x6CA1;&#x6709;&#x4EFB;&#x4F55;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x7684;&#x9650;&#x5236;&#xFF0C;&#x4EFB;&#x4F55;&#x7528;&#x6237;&#x53EF;&#x4EE5;&#x521B;&#x5EFA;&#x6307;&#x5411;&#x76EE;&#x5F55;&#x7684;&#x7B26;&#x53F7;&#x94FE;&#x63A5;&#x3002;&#x56E0;&#x800C;&#x73B0;&#x5728;&#x66F4;&#x4E3A;&#x5E7F;&#x6CDB;&#x4F7F;&#x7528;&#xFF0C;&#x5B83;&#x5177;&#x6709;&#x66F4;&#x5927;&#x7684;&#x7075;&#x6D3B;&#x6027;&#xFF0C;&#x751A;&#x81F3;&#x53EF;&#x4EE5;&#x8DE8;&#x8D8A;&#x4E0D;&#x540C;&#x673A;&#x5668;&#x3001;&#x4E0D;&#x540C;&#x7F51;&#x7EDC;&#x5BF9;&#x6587;&#x4EF6;&#x8FDB;&#x884C;&#x94FE;&#x63A5;&#x3002;&#x8F6F;&#x94FE;&#x63A5;&#x7684;inode&#x6240;&#x6307;&#x5411;&#x7684;&#x5185;&#x5BB9;&#x5B9E;&#x9645;&#x4E0A;&#x662F;&#x4FDD;&#x5B58;&#x4E86;&#x4E00;&#x4E2A;&#x7EDD;&#x5BF9;&#x8DEF;&#x5F84;&#xFF0C;&#x5F53;&#x7528;&#x6237;&#x8BBF;&#x95EE;&#x8FD9;&#x4E2A;&#x6587;&#x4EF6;&#x65F6;&#xFF0C;&#x7CFB;&#x7EDF;&#x4F1A;&#x81EA;&#x52A8;&#x5C06;&#x5176;&#x66FF;&#x6362;&#x6210;&#x5176;&#x6240;&#x6307;&#x7684;&#x6587;&#x4EF6;&#x8DEF;&#x5F84;&#x3002;</p>
<p>&#x5982;&#x679C;&#x7ED9;ln&#x547D;&#x4EE4;&#x52A0;&#x4E0A;- s&#x9009;&#x9879;&#xFF0C;&#x5219;&#x5EFA;&#x7ACB;&#x8F6F;&#x94FE;&#x63A5;&#x3002;&#x5982;&#x679C;[<strong>&#x94FE;&#x63A5;&#x540D;</strong>] &#x5DF2;&#x7ECF;&#x5B58;&#x5728;&#x4F46;&#x4E0D;&#x662F;&#x76EE;&#x5F55;&#xFF0C;&#x5C06;&#x4E0D;&#x505A;&#x94FE;&#x63A5;&#x3002;[<strong>&#x94FE;&#x63A5;&#x540D;</strong>]&#x53EF;&#x4EE5;&#x662F;&#x4EFB;&#x4F55;&#x4E00;&#x4E2A;&#x6587;&#x4EF6;&#x540D;&#xFF08;&#x53EF;&#x5305;&#x542B;&#x8DEF;&#x5F84;&#xFF09;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x662F;&#x4E00;&#x4E2A;&#x76EE;&#x5F55;&#xFF0C;&#x5E76;&#x4E14;&#x5141;&#x8BB8;&#x5B83;&#x4E0E;&#x201C;&#x76EE;&#x6807;&#x201D;&#x4E0D;&#x5728;&#x540C;&#x4E00;&#x4E2A;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x4E2D;&#x3002;&#x5982;&#x679C;[<strong>&#x94FE;&#x63A5;&#x540D;</strong>]&#x662F;&#x4E00;&#x4E2A;&#x5DF2;&#x7ECF;&#x5B58;&#x5728;&#x7684;&#x76EE;&#x5F55;&#xFF0C;&#x7CFB;&#x7EDF;&#x5C06;&#x5728;&#x8BE5;&#x76EE;&#x5F55;&#x4E0B;&#x5EFA;&#x7ACB;&#x4E00;&#x4E2A;&#x6216;&#x591A;&#x4E2A;&#x4E0E;&#x201C;&#x76EE;&#x6807;&#x201D;&#x540C;&#x540D;&#x7684;&#x6587;&#x4EF6;&#xFF0C;&#x6B64;&#x65B0;&#x5EFA;&#x7684;&#x6587;&#x4EF6;&#x5B9E;&#x9645;&#x4E0A;&#x662F;&#x6307;&#x5411;&#x539F;&#x201C;&#x76EE;&#x6807;&#x201D;&#x7684;&#x7B26;&#x53F7;&#x94FE;&#x63A5;&#x6587;&#x4EF6;&#x3002;</p>
<p>&#x7528;ln -s&#x547D;&#x4EE4;&#x6765;&#x5EFA;&#x7ACB;&#x8F6F;&#x94FE;&#x63A5;&#x3002;</p>
<pre><code>#&#x521B;&#x5EFA;&#x8F6F;&#x94FE;&#x63A5;
&#x279C;  ~ ln -s  tmp tmpsoft

#&#x521B;&#x5EFA;&#x540E;
&#x279C;  ~ ls -ilrth tmp*
38351334 -rw-r--r--  2 hanzhu  staff     0B Oct  9 20:41 tmphard
38351334 -rw-r--r--  2 hanzhu  staff     0B Oct  9 20:41 tmp
38364003 lrwxr-xr-x  1 hanzhu  staff     3B Oct  9 21:58 tmpsoft -&gt; tmp
</code></pre>
<p>&#x8F6F;&#x94FE;&#x63A5;&#x4E0E;&#x786C;&#x94FE;&#x63A5;&#xFF0C;&#x533A;&#x522B;&#x4E0D;&#x4EC5;&#x4EC5;&#x662F;&#x5728;&#x6982;&#x5FF5;&#x4E0A;&#xFF0C;&#x5728;&#x5B9E;&#x73B0;&#x4E0A;&#x4E5F;&#x662F;&#x4E0D;&#x540C;&#x7684;&#x3002;&#x533A;&#x522B;&#xFF1A;</p>
<ol>
<li>&#x786C;&#x94FE;&#x63A5;&#x539F;&#x6587;&#x4EF6;&#xFF06;&#x94FE;&#x63A5;&#x6587;&#x4EF6;&#x516C;&#x7528;&#x4E00;&#x4E2A;inode&#x53F7;&#xFF0C;&#x8BF4;&#x660E;&#x4ED6;&#x4EEC;&#x662F;&#x540C;&#x4E00;&#x4E2A;&#x6587;&#x4EF6;&#xFF0C;&#x800C;&#x8F6F;&#x94FE;&#x63A5;&#x539F;&#x6587;&#x4EF6;&#xFF06;&#x94FE;&#x63A5;&#x6587;&#x4EF6;&#x62E5;&#x6709;&#x4E0D;&#x540C;&#x7684;inode&#x53F7;&#xFF0C;&#x8868;&#x660E;&#x4ED6;&#x4EEC;&#x662F;&#x4E24;&#x4E2A;&#x4E0D;&#x540C;&#x7684;&#x6587;&#x4EF6;&#xFF1B;</li>
<li>&#x5728;&#x6587;&#x4EF6;&#x5C5E;&#x6027;&#x4E0A;&#x8F6F;&#x94FE;&#x63A5;&#x660E;&#x786E;&#x5199;&#x51FA;&#x4E86;&#x662F;&#x94FE;&#x63A5;&#x6587;&#x4EF6;&#xFF0C;&#x800C;&#x786C;&#x94FE;&#x63A5;&#x6CA1;&#x6709;&#x5199;&#x51FA;&#x6765;&#xFF0C;&#x56E0;&#x4E3A;&#x5728;&#x672C;&#x8D28;&#x4E0A;&#x786C;&#x94FE;&#x63A5;&#x6587;&#x4EF6;&#x548C;&#x539F;&#x6587;&#x4EF6;&#x662F;&#x5B8C;&#x5168;&#x5E73;&#x7B49;&#x5173;&#x7CFB;&#xFF1B;&#x94FE;&#x63A5;&#x6570;&#x76EE;&#x662F;&#x4E0D;&#x4E00;&#x6837;&#x7684;&#xFF0C;&#x8F6F;&#x94FE;&#x63A5;&#x7684;&#x94FE;&#x63A5;&#x6570;&#x76EE;&#x4E0D;&#x4F1A;&#x589E;&#x52A0;&#xFF1B;</li>
<li>&#x6587;&#x4EF6;&#x5927;&#x5C0F;&#x662F;&#x4E0D;&#x4E00;&#x6837;&#x7684;&#xFF0C;&#x786C;&#x94FE;&#x63A5;&#x6587;&#x4EF6;&#x663E;&#x793A;&#x7684;&#x5927;&#x5C0F;&#x662F;&#x8DDF;&#x539F;&#x6587;&#x4EF6;&#x662F;&#x4E00;&#x6837;&#x7684;&#xFF0C;&#x56E0;&#x4E3A;&#x662F;&#x7B49;&#x540C;&#x7684;&#xFF0C;&#x800C;&#x8FD9;&#x91CC;&#x8F6F;&#x94FE;&#x63A5;&#x663E;&#x793A;&#x7684;&#x5927;&#x5C0F;&#x4E0E;&#x539F;&#x6587;&#x4EF6;&#x5C31;&#x4E0D;&#x540C;&#x4E86;&#xFF0C;tmp&#x5927;&#x5C0F;&#x662F;0B&#xFF0C;&#x800C;tmpsoft&#x662F;3B.</li>
</ol>
<p>&#x603B;&#x4E4B;&#xFF0C;&#x5EFA;&#x7ACB;&#x8F6F;&#x94FE;&#x63A5;&#x5C31;&#x662F;&#x5EFA;&#x7ACB;&#x4E86;&#x4E00;&#x4E2A;&#x65B0;&#x6587;&#x4EF6;&#x3002;&#x5F53;&#x8BBF;&#x95EE;&#x94FE;&#x63A5;&#x6587;&#x4EF6;&#x65F6;&#xFF0C;&#x7CFB;&#x7EDF;&#x5C31;&#x4F1A;&#x53D1;&#x73B0;&#x4ED6;&#x662F;&#x4E2A;&#x94FE;&#x63A5;&#x6587;&#x4EF6;&#xFF0C;&#x5B83;&#x8BFB;&#x53D6;&#x94FE;&#x63A5;&#x6587;&#x4EF6;&#x627E;&#x5230;&#x771F;&#x6B63;&#x8981;&#x8BBF;&#x95EE;&#x7684;&#x6587;&#x4EF6;&#x3002;</p>
<p>&#x7F3A;&#x70B9;&#xFF1A;</p>
<ol>
<li>&#x56E0;&#x4E3A;&#x94FE;&#x63A5;&#x6587;&#x4EF6;&#x5305;&#x542B;&#x6709;&#x539F;&#x6587;&#x4EF6;&#x7684;&#x8DEF;&#x5F84;&#x4FE1;&#x606F;&#xFF0C;&#x6240;&#x4EE5;&#x5F53;&#x539F;&#x6587;&#x4EF6;&#x4ECE;&#x4E00;&#x4E2A;&#x76EE;&#x5F55;&#x4E0B;&#x79FB;&#x5230;&#x5176;&#x4ED6;&#x76EE;&#x5F55;&#x4E2D;&#xFF0C;&#x518D;&#x8BBF;&#x95EE;&#x94FE;&#x63A5;&#x6587;&#x4EF6;&#xFF0C;&#x7CFB;&#x7EDF;&#x5C31;&#x627E;&#x4E0D;&#x5230;&#x4E86;&#xFF0C;&#x800C;&#x786C;&#x94FE;&#x63A5;&#x5C31;&#x6CA1;&#x6709;&#x8FD9;&#x4E2A;&#x7F3A;&#x9677;&#xFF0C;&#x4F60;&#x60F3;&#x600E;&#x4E48;&#x79FB;&#x5C31;&#x600E;&#x4E48;&#x79FB;&#xFF1B;</li>
<li>&#x5B83;&#x8981;&#x7CFB;&#x7EDF;&#x5206;&#x914D;&#x989D;&#x5916;&#x7684;&#x7A7A;&#x95F4;&#x7528;&#x4E8E;&#x5EFA;&#x7ACB;&#x65B0;&#x7684;&#x7D22;&#x5F15;&#x8282;&#x70B9;&#x548C;&#x4FDD;&#x5B58;&#x539F;&#x6587;&#x4EF6;&#x7684;&#x8DEF;&#x5F84;&#x3002;</li>
</ol>
<p><strong>&#x4E00;&#x4E9B;&#x8F6F;&#x94FE;&#x63A5;&#x603B;&#x7ED3;&#xFF1A;</strong></p>
<ul>
<li>&#x8F6F;&#x94FE;&#x63A5;&#x7C7B;&#x4F3C;windows&#x7CFB;&#x7EDF;&#x7684;&#x5FEB;&#x6377;&#x65B9;&#x5F0F;&#xFF1B;</li>
<li>&#x8F6F;&#x94FE;&#x63A5;&#x91CC;&#x9762;&#x5B58;&#x653E;&#x7684;&#x662F;&#x6E90;&#x6587;&#x4EF6;&#x7684;&#x8DEF;&#x5F84;&#xFF0C;&#x6307;&#x5411;&#x6E90;&#x6587;&#x4EF6;&#xFF1B;</li>
<li>&#x5220;&#x9664;&#x6E90;&#x6587;&#x4EF6;&#xFF0C;&#x8F6F;&#x94FE;&#x63A5;&#x4F9D;&#x7136;&#x5B58;&#x5728;&#xFF0C;&#x4F46;&#x65E0;&#x6CD5;&#x8BBF;&#x95EE;&#x6E90;&#x6587;&#x4EF6;&#x5185;&#x5BB9;&#xFF1B;</li>
<li>&#x8F6F;&#x94FE;&#x63A5;&#x5931;&#x6548;&#x65F6;&#x4E00;&#x822C;&#x662F;&#x767D;&#x5B57;&#x7EA2;&#x5E95;&#x95EA;&#x70C1;&#xFF1B;</li>
<li>&#x521B;&#x5EFA;&#x8F6F;&#x94FE;&#x63A5;&#x547D;&#x4EE4; ln -s &#x6E90;&#x6587;&#x4EF6; &#x8F6F;&#x94FE;&#x63A5;&#x6587;&#x4EF6;&#xFF1B;</li>
<li>&#x8F6F;&#x94FE;&#x63A5;&#x548C;&#x6E90;&#x6587;&#x4EF6;&#x662F;&#x4E0D;&#x540C;&#x7684;&#x6587;&#x4EF6;&#xFF0C;&#x6587;&#x4EF6;&#x7C7B;&#x578B;&#x4E5F;&#x4E0D;&#x540C;&#xFF0C;inode&#x53F7;&#x4E5F;&#x4E0D;&#x540C;&#xFF1B;</li>
<li>&#x8F6F;&#x94FE;&#x63A5;&#x7684;&#x6587;&#x4EF6;&#x7C7B;&#x578B;&#x662F;&#x201C;l&#x201D;&#xFF0C;&#x53EF;&#x4EE5;&#x7528;rm&#x5220;&#x9664;&#x3002;</li>
</ul>
<p>&#x878D;&#x4F1A;&#x8D2F;&#x901A;&#x540E;&#x4F60;&#x4F1A;&#x53D1;&#x73B0;&#xFF1A;</p>
<ol>
<li>&#x5220;&#x9664;&#x7B26;&#x53F7;&#x8FDE;&#x63A5;tmpsoft,&#x5BF9;tmp,tmphard&#x65E0;&#x5F71;&#x54CD;&#xFF1B;</li>
<li>&#x5220;&#x9664;&#x786C;&#x8FDE;&#x63A5;tmphard&#xFF0C;&#x5BF9;tmp,tmpsoft&#x4E5F;&#x65E0;&#x5F71;&#x54CD;&#xFF1B;</li>
<li>&#x5220;&#x9664;&#x539F;&#x6587;&#x4EF6;tmp&#xFF0C;&#x5BF9;&#x786C;&#x8FDE;&#x63A5;tmphard&#x6CA1;&#x6709;&#x5F71;&#x54CD;&#xFF0C;&#x5BFC;&#x81F4;&#x7B26;&#x53F7;&#x8FDE;&#x63A5;tmpsoft&#x5931;&#x6548;&#xFF1B;</li>
<li>&#x540C;&#x65F6;&#x5220;&#x9664;&#x539F;&#x6587;&#x4EF6;tmp,&#x786C;&#x8FDE;&#x63A5;tmphard&#xFF0C;&#x6574;&#x4E2A;&#x6587;&#x4EF6;&#x4F1A;&#x771F;&#x6B63;&#x7684;&#x88AB;&#x5220;&#x9664;&#x3002;</li>
<li>&#x6211;&#x4EEC;&#x518D;&#x5411;&#x8FD9;&#x4E2A;&#x8F6F;&#x94FE;&#x63A5;&#x5199;&#x70B9;&#x4E1C;&#x897F;,&#x5219;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#xFF0C;&#x521A;&#x624D;&#x5220;&#x9664;&#x7684;tmp&#x6587;&#x4EF6;&#x7ADF;&#x7136;&#x53C8;&#x51FA;&#x73B0;&#x4E86;&#xFF01;&#x8FD9;&#x5C31;&#x8BF4;&#x660E;&#xFF0C;&#x5F53;&#x6211;&#x4EEC;&#x5199;&#x5165;&#x8BBF;&#x95EE;&#x8F6F;&#x94FE;&#x63A5;&#x65F6;&#xFF0C;&#x7CFB;&#x7EDF;&#x81EA;&#x52A8;&#x5C06;&#x5176;&#x8DEF;&#x5F84;&#x66FF;&#x6362;&#x4E3A;&#x5176;&#x6240;&#x4EE3;&#x8868;&#x7684;&#x7EDD;&#x5BF9;&#x8DEF;&#x5F84;&#xFF0C;&#x5E76;&#x76F4;&#x63A5;&#x8BBF;&#x95EE;&#x90A3;&#x4E2A;&#x8DEF;&#x5F84;&#x4E86;&#x3002;</li>
</ol>
<pre><code>#&#x5220;&#x9664;tmp
&#x279C;  ~ rm tmp
&#x279C;  ~ ls -ilrth tmp*
38351334 -rw-r--r--  1 hanzhu  staff     0B Oct  9 20:41 tmphard
38364003 lrwxr-xr-x  1 hanzhu  staff     3B Oct  9 21:58 tmpsoft -&gt; tmp

#&#x5BF9;&#x786C;&#x94FE;&#x63A5;&#x65E0;&#x5F71;&#x54CD;&#xFF08;&#x672C;&#x6765;&#x5C31;&#x662F;&#x7A7A;&#x6587;&#x6863;&#xFF09;
&#x279C;  ~ cat tmphard

#&#x8F6F;&#x94FE;&#x63A5;&#x5931;&#x6548;
&#x279C;  ~ cat tmpsoft
cat: tmpsoft: No such file or directory

#&#x6211;&#x4EEC;&#x518D;&#x5411;&#x8FD9;&#x4E2A;&#x8F6F;&#x94FE;&#x63A5;&#x5199;&#x70B9;&#x4E1C;&#x897F;
&#x279C;  ~ echo &gt;&gt; tmpsoft
&#x279C;  ~ ls -ilrth tmp*
38351334 -rw-r--r--  1 hanzhu  staff     0B Oct  9 20:41 tmphard
38364003 lrwxr-xr-x  1 hanzhu  staff     3B Oct  9 21:58 tmpsoft -&gt; tmp
38377261 -rw-r--r--  1 hanzhu  staff     1B Oct  9 23:07 tmp
</code></pre>
<h2 id="%E7%A1%AC%E9%93%BE%E6%8E%A5%E5%92%8C%E8%BD%AF%E9%93%BE%E6%8E%A5%E7%9A%84%E5%8C%BA%E5%88%AB">&#x786C;&#x94FE;&#x63A5;&#x548C;&#x8F6F;&#x94FE;&#x63A5;&#x7684;&#x533A;&#x522B;</h2>
<p>&#x539F;&#x7406;&#x4E0A;&#xFF0C;&#x786C;&#x94FE;&#x63A5;&#x548C;&#x6E90;&#x6587;&#x4EF6;&#x7684;inode&#x8282;&#x70B9;&#x53F7;&#x76F8;&#x540C;&#xFF0C;&#x4E24;&#x8005;&#x4E92;&#x4E3A;&#x786C;&#x94FE;&#x63A5;&#x3002;&#x8F6F;&#x8FDE;&#x63A5;&#x548C;&#x6E90;&#x6587;&#x4EF6;&#x7684;inode&#x8282;&#x70B9;&#x53F7;&#x4E0D;&#x540C;&#xFF0C;&#x8FDB;&#x800C;&#x6307;&#x5411;&#x7684;block&#x4E5F;&#x4E0D;&#x540C;&#xFF0C;&#x8F6F;&#x8FDE;&#x63A5;block&#x4E2D;&#x5B58;&#x653E;&#x4E86;&#x6E90;&#x6587;&#x4EF6;&#x7684;&#x8DEF;&#x5F84;&#x540D;&#x3002;</p>
<p>&#x5B9E;&#x9645;&#x4E0A;&#xFF0C;&#x786C;&#x94FE;&#x63A5;&#x548C;&#x6E90;&#x6587;&#x4EF6;&#x662F;&#x540C;&#x4E00;&#x4EFD;&#x6587;&#x4EF6;&#xFF0C;&#x800C;&#x8F6F;&#x8FDE;&#x63A5;&#x662F;&#x72EC;&#x7ACB;&#x7684;&#x6587;&#x4EF6;&#xFF0C;&#x7C7B;&#x4F3C;&#x4E8E;&#x5FEB;&#x6377;&#x65B9;&#x5F0F;&#xFF0C;&#x5B58;&#x50A8;&#x7740;&#x6E90;&#x6587;&#x4EF6;&#x7684;&#x4F4D;&#x7F6E;&#x4FE1;&#x606F;&#x4FBF;&#x4E8E;&#x6307;&#x5411;&#x3002;</p>
<p>&#x4F7F;&#x7528;&#x9650;&#x5236;&#x4E0A;&#xFF0C;&#x4E0D;&#x80FD;&#x5BF9;&#x76EE;&#x5F55;&#x521B;&#x5EFA;&#x786C;&#x94FE;&#x63A5;&#xFF0C;&#x4E0D;&#x80FD;&#x5BF9;&#x4E0D;&#x540C;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x521B;&#x5EFA;&#x786C;&#x94FE;&#x63A5;&#xFF0C;&#x4E0D;&#x80FD;&#x5BF9;&#x4E0D;&#x5B58;&#x5728;&#x7684;&#x6587;&#x4EF6;&#x521B;&#x5EFA;&#x786C;&#x94FE;&#x63A5;&#xFF1B;&#x53EF;&#x4EE5;&#x5BF9;&#x76EE;&#x5F55;&#x521B;&#x5EFA;&#x8F6F;&#x8FDE;&#x63A5;&#xFF0C;&#x53EF;&#x4EE5;&#x8DE8;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x521B;&#x5EFA;&#x8F6F;&#x8FDE;&#x63A5;&#xFF0C;&#x53EF;&#x4EE5;&#x5BF9;&#x4E0D;&#x5B58;&#x5728;&#x7684;&#x6587;&#x4EF6;&#x521B;&#x5EFA;&#x8F6F;&#x8FDE;&#x63A5;&#x3002;</p>
<p>References:<br>
<a href="https://www.cnblogs.com/Peter2014/p/7594504.html">Linux&#x786C;&#x94FE;&#x63A5;&#x548C;&#x8F6F;&#x8FDE;&#x63A5;&#x7684;&#x533A;&#x522B;&#x4E0E;&#x603B;&#x7ED3;</a><br>
<a href="https://blog.csdn.net/hairetz/article/details/4168296">&#x5173;&#x4E8E;&#x786C;&#x94FE;&#x63A5;&#x548C;&#x8F6F;&#x8FDE;&#x63A5;&#xFF08;&#x7B26;&#x53F7;&#x94FE;&#x63A5;&#xFF09;&#x7684;&#x533A;&#x522B;</a><br>
<a href="https://www.jianshu.com/p/dde6a01c4094">5&#x5206;&#x949F;&#x8BA9;&#x4F60;&#x660E;&#x767D;&#x201C;&#x8F6F;&#x94FE;&#x63A5;&#x201D;&#x548C;&#x201C;&#x786C;&#x94FE;&#x63A5;&#x201D;&#x7684;&#x533A;&#x522B;</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[进程间通信 Inter-Process Communication]]></title><description><![CDATA[<!--kg-card-begin: markdown--><blockquote>
<p>&#x5173;&#x4E8E;&#x8FDB;&#x7A0B;&#x4E0E;&#x7EBF;&#x7A0B;&#xFF0C;&#x8BF7;&#x79FB;&#x6B65;<a href="https://hanzhu.dev/processes-and-threads/">&#x8FDB;&#x7A0B;&#x4E0E;&#x7EBF;&#x7A0B;</a>&#x3002;<br>
&#x672C;&#x6587;&#x5E76;&#x975E;&#x539F;&#x521B;&#xFF0C;&#x800C;&#x662F;&#x62FC;&#x63A5;&#x6574;&#x7406;&#x5404;&#x4F5C;&#x8005;&#x535A;&#x6587;&#xFF0C;&#x4E3B;&#x8981;&#x8FD8;&#x662F;&#x4E3A;&#x4E86;&#x68B3;&#x7406;&#x5B66;&#x4E60;&#xFF0C;&#x5728;&#x6B64;&#x4E00;</p></blockquote>]]></description><link>https://hanzhu.dev/ipc/</link><guid isPermaLink="false">615f33c29657313908075ce9</guid><category><![CDATA[OS]]></category><category><![CDATA[linux]]></category><dc:creator><![CDATA[Frank]]></dc:creator><pubDate>Thu, 07 Oct 2021 18:23:08 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><blockquote>
<p>&#x5173;&#x4E8E;&#x8FDB;&#x7A0B;&#x4E0E;&#x7EBF;&#x7A0B;&#xFF0C;&#x8BF7;&#x79FB;&#x6B65;<a href="https://hanzhu.dev/processes-and-threads/">&#x8FDB;&#x7A0B;&#x4E0E;&#x7EBF;&#x7A0B;</a>&#x3002;<br>
&#x672C;&#x6587;&#x5E76;&#x975E;&#x539F;&#x521B;&#xFF0C;&#x800C;&#x662F;&#x62FC;&#x63A5;&#x6574;&#x7406;&#x5404;&#x4F5C;&#x8005;&#x535A;&#x6587;&#xFF0C;&#x4E3B;&#x8981;&#x8FD8;&#x662F;&#x4E3A;&#x4E86;&#x68B3;&#x7406;&#x5B66;&#x4E60;&#xFF0C;&#x5728;&#x6B64;&#x4E00;&#x5E76;&#x81F4;&#x8C22;&#x5E76;&#x5C06;references&#x8D34;&#x5728;&#x6587;&#x672B;&#x3002;</p>
</blockquote>
<h1 id="%E6%AD%A3%E6%96%87">&#x6B63;&#x6587;</h1>
<blockquote>
<p>linux&#x4E0B;&#x7684;&#x8FDB;&#x7A0B;&#x901A;&#x4FE1;&#x624B;&#x6BB5;&#x57FA;&#x672C;&#x4E0A;&#x662F;&#x4ECE;Unix&#x5E73;&#x53F0;&#x4E0A;&#x7684;&#x8FDB;&#x7A0B;&#x901A;&#x4FE1;&#x624B;&#x6BB5;&#x7EE7;&#x627F;&#x800C;&#x6765;&#x7684;&#x3002;&#x800C;&#x5BF9;Unix&#x53D1;&#x5C55;&#x505A;&#x51FA;&#x91CD;&#x5927;&#x8D21;&#x732E;&#x7684;&#x4E24;&#x5927;&#x4E3B;&#x529B;AT&amp;T&#x7684;&#x8D1D;&#x5C14;&#x5B9E;&#x9A8C;&#x5BA4;&#x53CA;BSD&#xFF08;&#x52A0;&#x5DDE;&#x5927;&#x5B66;&#x4F2F;&#x514B;&#x5229;&#x5206;&#x6821;&#x7684;&#x4F2F;&#x514B;&#x5229;&#x8F6F;&#x4EF6;&#x53D1;&#x5E03;&#x4E2D;&#x5FC3;&#xFF09;&#x5728;&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x65B9;&#x9762;&#x7684;&#x4FA7;&#x91CD;&#x70B9;&#x6709;&#x6240;&#x4E0D;&#x540C;&#x3002;<br>
&#x524D;&#x8005;&#x5BF9;Unix&#x65E9;&#x671F;&#x7684;&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x624B;&#x6BB5;&#x8FDB;&#x884C;&#x4E86;&#x7CFB;&#x7EDF;&#x7684;&#x6539;&#x8FDB;&#x548C;&#x6269;&#x5145;&#xFF0C;&#x5F62;&#x6210;&#x4E86;&#x201C;system V IPC&#x201D;&#xFF0C;&#x901A;&#x4FE1;&#x8FDB;&#x7A0B;&#x5C40;&#x9650;&#x5728;&#x5355;&#x4E2A;&#x8BA1;&#x7B97;&#x673A;&#x5185;&#xFF1B;<br>
&#x540E;&#x8005;&#x5219;&#x8DF3;&#x8FC7;&#x4E86;&#x8BE5;&#x9650;&#x5236;&#xFF0C;&#x5F62;&#x6210;&#x4E86;&#x57FA;&#x4E8E;&#x5957;&#x63A5;&#x53E3;&#xFF08;socket&#xFF09;&#x7684;&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x673A;&#x5236;&#x3002;<br>
Linux&#x5219;&#x628A;&#x4E24;&#x8005;&#x7EE7;&#x627F;&#x4E86;&#x4E0B;&#x6765;</p>
</blockquote>
<ul>
<li>&#x65E9;&#x671F;UNIX&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;</li>
<li>&#x57FA;&#x4E8E;System V&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;</li>
<li>&#x57FA;&#x4E8E;Socket&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;</li>
<li>POSIX&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x3002;</li>
</ul>
<p>UNIX&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x65B9;&#x5F0F;&#x5305;&#x62EC;&#xFF1A;&#x7BA1;&#x9053;&#x3001;FIFO&#x3001;&#x4FE1;&#x53F7;&#x3002;<br>
System V&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x65B9;&#x5F0F;&#x5305;&#x62EC;&#xFF1A;System V&#x6D88;&#x606F;&#x961F;&#x5217;&#x3001;System V&#x4FE1;&#x53F7;&#x706F;&#x3001;System V&#x5171;&#x4EAB;&#x5185;&#x5B58;<br>
POSIX&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x5305;&#x62EC;&#xFF1A;posix&#x6D88;&#x606F;&#x961F;&#x5217;&#x3001;posix&#x4FE1;&#x53F7;&#x706F;&#x3001;posix&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x3002;</p>
<blockquote>
<p>&#x7531;&#x4E8E;Unix&#x7248;&#x672C;&#x7684;&#x591A;&#x6837;&#x6027;&#xFF0C;&#x7535;&#x5B50;&#x7535;&#x6C14;&#x5DE5;&#x7A0B;&#x534F;&#x4F1A;&#xFF08;IEEE&#xFF09;&#x5F00;&#x53D1;&#x4E86;&#x4E00;&#x4E2A;&#x72EC;&#x7ACB;&#x7684;Unix&#x6807;&#x51C6;&#xFF0C;&#x8FD9;&#x4E2A;&#x65B0;&#x7684;ANSI Unix&#x6807;&#x51C6;&#x88AB;&#x79F0;&#x4E3A;&#x8BA1;&#x7B97;&#x673A;&#x73AF;&#x5883;&#x7684;&#x53EF;&#x79FB;&#x690D;&#x6027;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x754C;&#x9762;&#xFF08;PSOIX&#xFF09;&#x3002;&#x73B0;&#x6709;&#x5927;&#x90E8;&#x5206;Unix&#x548C;&#x6D41;&#x884C;&#x7248;&#x672C;&#x90FD;&#x662F;&#x9075;&#x5FAA;POSIX&#x6807;&#x51C6;&#x7684;&#xFF0C;&#x800C;Linux&#x4ECE;&#x4E00;&#x5F00;&#x59CB;&#x5C31;&#x9075;&#x5FAA;POSIX&#x6807;&#x51C6;&#xFF1B;<br>
BSD&#x5E76;&#x4E0D;&#x662F;&#x6CA1;&#x6709;&#x6D89;&#x8DB3;&#x5355;&#x673A;&#x5185;&#x7684;&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#xFF08;socket&#x672C;&#x8EAB;&#x5C31;&#x53EF;&#x4EE5;&#x7528;&#x4E8E;&#x5355;&#x673A;&#x5185;&#x7684;&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#xFF09;&#x3002;&#x4E8B;&#x5B9E;&#x4E0A;&#xFF0C;&#x5F88;&#x591A;Unix&#x7248;&#x672C;&#x7684;&#x5355;&#x673A;IPC&#x7559;&#x6709;BSD&#x7684;&#x75D5;&#x8FF9;&#xFF0C;&#x5982;4.4BSD&#x652F;&#x6301;&#x7684;&#x533F;&#x540D;&#x5185;&#x5B58;&#x6620;&#x5C04;&#x3001;4.3+BSD&#x5BF9;&#x53EF;&#x9760;&#x4FE1;&#x53F7;&#x8BED;&#x4E49;&#x7684;&#x5B9E;&#x73B0;&#x7B49;&#x7B49;&#x3002;</p>
</blockquote>
<p><img src="https://hanzhu.dev/content/images/2021/10/75d42345-8a3b-412d-be9b-a2030030265a.png" alt="75d42345-8a3b-412d-be9b-a2030030265a" loading="lazy"></p>
<h2 id="1-pipe%E7%AE%A1%E9%81%93">1. Pipe&#x7BA1;&#x9053;</h2>
<ul>
<li>&#x7BA1;&#x9053;&#x662F;&#x534A;&#x53CC;&#x5DE5;&#x7684;&#x901A;&#x4FE1;&#xFF0C;&#x6570;&#x636E;&#x53EA;&#x80FD;&#x5355;&#x5411;&#x6D41;&#x52A8;&#xFF0C;&#x9700;&#x8981;&#x53CC;&#x65B9;&#x901A;&#x4FE1;&#x65F6;&#xFF0C;&#x9700;&#x8981;&#x5EFA;&#x7ACB;&#x8D77;&#x4E24;&#x4E2A;&#x7BA1;&#x9053;&#xFF1B;</li>
<li>&#x53EA;&#x80FD;&#x5728;&#x5177;&#x6709;&#x4EB2;&#x7F18;&#x5173;&#x7CFB;&#x7684;&#x8FDB;&#x7A0B;&#x95F4;&#x4F7F;&#x7528;&#xFF0C;&#x8FDB;&#x7A0B;&#x7684;&#x4EB2;&#x7F18;&#x5173;&#x7CFB;&#x901A;&#x5E38;&#x662F;&#x6307;&#x7236;&#x5B50;&#x8FDB;&#x7A0B;&#x5173;&#x7CFB;&#x3002;</li>
<li>&#x5355;&#x72EC;&#x6784;&#x6210;&#x4E00;&#x79CD;&#x72EC;&#x7ACB;&#x7684;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#xFF1A;&#x7BA1;&#x9053;&#x5BF9;&#x4E8E;&#x7BA1;&#x9053;&#x4E24;&#x7AEF;&#x7684;&#x8FDB;&#x7A0B;&#x800C;&#x8A00;&#xFF0C;&#x5C31;&#x662F;&#x4E00;&#x4E2A;&#x6587;&#x4EF6;&#xFF0C;&#x4F46;&#x5B83;&#x4E0D;&#x662F;&#x666E;&#x901A;&#x7684;&#x6587;&#x4EF6;&#xFF0C;&#x5B83;&#x4E0D;&#x5C5E;&#x4E8E;&#x67D0;&#x79CD;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#xFF0C;&#x800C;&#x662F;&#x81EA;&#x7ACB;&#x95E8;&#x6237;&#xFF0C;&#x5355;&#x72EC;&#x6784;&#x6210;&#x4E00;&#x79CD;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#xFF0C;&#x5E76;&#x4E14;&#x53EA;&#x5B58;&#x5728;&#x4E0E;&#x5185;&#x5B58;&#x4E2D;&#x3002;</li>
<li>&#x6570;&#x636E;&#x7684;&#x8BFB;&#x51FA;&#x548C;&#x5199;&#x5165;&#xFF1A;&#x4E00;&#x4E2A;&#x8FDB;&#x7A0B;&#x5411;&#x7BA1;&#x9053;&#x4E2D;&#x5199;&#x7684;&#x5185;&#x5BB9;&#x88AB;&#x7BA1;&#x9053;&#x53E6;&#x4E00;&#x7AEF;&#x7684;&#x8FDB;&#x7A0B;&#x8BFB;&#x51FA;&#x3002;&#x5199;&#x5165;&#x7684;&#x5185;&#x5BB9;&#x6BCF;&#x6B21;&#x90FD;&#x6DFB;&#x52A0;&#x5728;&#x7BA1;&#x9053;&#x7F13;&#x51B2;&#x533A;&#x7684;&#x672B;&#x5C3E;&#xFF0C;&#x5E76;&#x4E14;&#x6BCF;&#x6B21;&#x90FD;&#x662F;&#x4ECE;&#x7F13;&#x51B2;&#x533A;&#x7684;&#x5934;&#x90E8;&#x8BFB;&#x51FA;&#x6570;&#x636E;&#x3002;<br>
<img src="https://hanzhu.dev/content/images/2021/10/63749262-e8c2-4636-a1e6-607df9fc99f4.png" alt="63749262-e8c2-4636-a1e6-607df9fc99f4" loading="lazy"></li>
</ul>
<p><strong>&#x7BA1;&#x9053;&#x7684;&#x5B9E;&#x8D28;&#xFF1A;</strong><br>
&#x7BA1;&#x9053;&#x7684;&#x5B9E;&#x8D28;&#x662F;&#x4E00;&#x4E2A;&#x5185;&#x6838;&#x7F13;&#x51B2;&#x533A;&#xFF0C;&#x8FDB;&#x7A0B;&#x4EE5;&#x5148;&#x8FDB;&#x5148;&#x51FA;&#x7684;&#x65B9;&#x5F0F;&#x4ECE;&#x7F13;&#x51B2;&#x533A;&#x5B58;&#x53D6;&#x6570;&#x636E;&#xFF0C;&#x7BA1;&#x9053;&#x4E00;&#x7AEF;&#x7684;&#x8FDB;&#x7A0B;&#x987A;&#x5E8F;&#x7684;&#x5C06;&#x6570;&#x636E;&#x5199;&#x5165;&#x7F13;&#x51B2;&#x533A;&#xFF0C;&#x53E6;&#x4E00;&#x7AEF;&#x7684;&#x8FDB;&#x7A0B;&#x5219;&#x987A;&#x5E8F;&#x7684;&#x8BFB;&#x51FA;&#x6570;&#x636E;&#x3002;<br>
&#x8BE5;&#x7F13;&#x51B2;&#x533A;&#x53EF;&#x4EE5;&#x770B;&#x4F5C;&#x662F;&#x4E00;&#x4E2A;&#x5FAA;&#x73AF;&#x961F;&#x5217;&#xFF0C;&#x8BFB;&#x548C;&#x5199;&#x7684;&#x4F4D;&#x7F6E;&#x90FD;&#x662F;&#x81EA;&#x52A8;&#x589E;&#x957F;&#x7684;&#xFF0C;&#x4E0D;&#x80FD;&#x968F;&#x610F;&#x6539;&#x53D8;&#xFF0C;&#x4E00;&#x4E2A;&#x6570;&#x636E;&#x53EA;&#x80FD;&#x88AB;&#x8BFB;&#x4E00;&#x6B21;&#xFF0C;&#x8BFB;&#x51FA;&#x6765;&#x4EE5;&#x540E;&#x5728;&#x7F13;&#x51B2;&#x533A;&#x5C31;&#x4E0D;&#x590D;&#x5B58;&#x5728;&#x4E86;&#x3002;<br>
&#x5F53;&#x7F13;&#x51B2;&#x533A;&#x8BFB;&#x7A7A;&#x6216;&#x8005;&#x5199;&#x6EE1;&#x65F6;&#xFF0C;&#x6709;&#x4E00;&#x5B9A;&#x7684;&#x89C4;&#x5219;&#x63A7;&#x5236;&#x76F8;&#x5E94;&#x7684;&#x8BFB;&#x8FDB;&#x7A0B;&#x6216;&#x8005;&#x5199;&#x8FDB;&#x7A0B;&#x8FDB;&#x5165;&#x7B49;&#x5F85;&#x961F;&#x5217;&#xFF0C;&#x5F53;&#x7A7A;&#x7684;&#x7F13;&#x51B2;&#x533A;&#x6709;&#x65B0;&#x6570;&#x636E;&#x5199;&#x5165;&#x6216;&#x8005;&#x6EE1;&#x7684;&#x7F13;&#x51B2;&#x533A;&#x6709;&#x6570;&#x636E;&#x8BFB;&#x51FA;&#x6765;&#x65F6;&#xFF0C;&#x5C31;&#x5524;&#x9192;&#x7B49;&#x5F85;&#x961F;&#x5217;&#x4E2D;&#x7684;&#x8FDB;&#x7A0B;&#x7EE7;&#x7EED;&#x8BFB;&#x5199;&#x3002;</p>
<p><strong>&#x7BA1;&#x9053;&#x7684;&#x5C40;&#x9650;&#xFF1A;</strong><br>
&#x7BA1;&#x9053;&#x7684;&#x4E3B;&#x8981;&#x5C40;&#x9650;&#x6027;&#x6B63;&#x4F53;&#x73B0;&#x5728;&#x5B83;&#x7684;&#x7279;&#x70B9;&#x4E0A;&#xFF1A;</p>
<ul>
<li>&#x53EA;&#x652F;&#x6301;&#x5355;&#x5411;&#x6570;&#x636E;&#x6D41;&#xFF1B;</li>
<li>&#x53EA;&#x80FD;&#x7528;&#x4E8E;&#x5177;&#x6709;&#x4EB2;&#x7F18;&#x5173;&#x7CFB;&#x7684;&#x8FDB;&#x7A0B;&#x4E4B;&#x95F4;&#xFF1B;</li>
<li>&#x6CA1;&#x6709;&#x540D;&#x5B57;&#xFF1B;</li>
<li>&#x7BA1;&#x9053;&#x7684;&#x7F13;&#x51B2;&#x533A;&#x662F;&#x6709;&#x9650;&#x7684;&#xFF08;&#x7BA1;&#x9053;&#x5236;&#x5B58;&#x5728;&#x4E8E;&#x5185;&#x5B58;&#x4E2D;&#xFF0C;&#x5728;&#x7BA1;&#x9053;&#x521B;&#x5EFA;&#x65F6;&#xFF0C;&#x4E3A;&#x7F13;&#x51B2;&#x533A;&#x5206;&#x914D;&#x4E00;&#x4E2A;&#x9875;&#x9762;&#x5927;&#x5C0F;&#xFF09;&#xFF1B;</li>
<li>&#x7BA1;&#x9053;&#x6240;&#x4F20;&#x9001;&#x7684;&#x662F;&#x65E0;&#x683C;&#x5F0F;&#x5B57;&#x8282;&#x6D41;&#xFF0C;&#x8FD9;&#x5C31;&#x8981;&#x6C42;&#x7BA1;&#x9053;&#x7684;&#x8BFB;&#x51FA;&#x65B9;&#x548C;&#x5199;&#x5165;&#x65B9;&#x5FC5;&#x987B;&#x4E8B;&#x5148;&#x7EA6;&#x5B9A;&#x597D;&#x6570;&#x636E;&#x7684;&#x683C;&#x5F0F;&#xFF0C;&#x6BD4;&#x5982;&#x591A;&#x5C11;&#x5B57;&#x8282;&#x7B97;&#x4F5C;&#x4E00;&#x4E2A;&#x6D88;&#x606F;&#xFF08;&#x6216;&#x547D;&#x4EE4;&#x3001;&#x6216;&#x8BB0;&#x5F55;&#xFF09;&#x7B49;&#x7B49;&#xFF1B;<br>
&#x6D41;&#x7BA1;&#x9053;s_pipe: &#x53BB;&#x9664;&#x4E86;&#x7B2C;&#x4E00;&#x79CD;&#x9650;&#x5236;,&#x53EF;&#x4EE5;&#x53CC;&#x5411;&#x4F20;&#x8F93;.<br>
&#x7BA1;&#x9053;&#x53EF;&#x7528;&#x4E8E;&#x5177;&#x6709;&#x4EB2;&#x7F18;&#x5173;&#x7CFB;&#x8FDB;&#x7A0B;&#x95F4;&#x7684;&#x901A;&#x4FE1;&#xFF0C;&#x547D;&#x540D;&#x7BA1;&#x9053;:name_pipe&#x514B;&#x670D;&#x4E86;&#x7BA1;&#x9053;&#x6CA1;&#x6709;&#x540D;&#x5B57;&#x7684;&#x9650;&#x5236;&#xFF0C;&#x56E0;&#x6B64;&#xFF0C;&#x9664;&#x5177;&#x6709;&#x7BA1;&#x9053;&#x6240;&#x5177;&#x6709;&#x7684;&#x529F;&#x80FD;&#x5916;&#xFF0C;&#x5B83;&#x8FD8;&#x5141;&#x8BB8;&#x65E0;&#x4EB2;&#x7F18;&#x5173;&#x7CFB;&#x8FDB;&#x7A0B;&#x95F4;&#x7684;&#x901A;&#x4FE1;&#xFF1B;</li>
</ul>
<h2 id="2-fifo%E5%8C%BF%E5%90%8D%E7%AE%A1%E9%81%93">2. FIFO&#x533F;&#x540D;&#x7BA1;&#x9053;</h2>
<p>&#x533F;&#x540D;&#x7BA1;&#x9053;&#xFF0C;&#x7531;&#x4E8E;&#x6CA1;&#x6709;&#x540D;&#x5B57;&#xFF0C;&#x53EA;&#x80FD;&#x7528;&#x4E8E;&#x4EB2;&#x7F18;&#x5173;&#x7CFB;&#x7684;&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x3002;&#x4E3A;&#x4E86;&#x514B;&#x670D;&#x8FD9;&#x4E2A;&#x7F3A;&#x70B9;&#xFF0C;&#x63D0;&#x51FA;&#x4E86;&#x6709;&#x540D;&#x7BA1;&#x9053;(FIFO)&#x3002;<strong>&#x5728;&#x78C1;&#x76D8;&#x4E0A;&#x6709;&#x5BF9;&#x5E94;&#x7684;&#x7D22;&#x5F15;&#x8282;&#x70B9;&#xFF0C;&#x4F46;&#x6CA1;&#x6709;&#x6570;&#x636E;&#x5757;</strong>&#x2014;&#x2014;&#x6362;&#x8A00;&#x4E4B;&#xFF0C;&#x53EA;&#x662F;&#x62E5;&#x6709;&#x4E00;&#x4E2A;&#x540D;&#x5B57;&#x548C;&#x76F8;&#x5E94;&#x7684;&#x8BBF;&#x95EE;&#x6743;&#x9650;&#xFF0C;&#x901A;&#x8FC7;mknode()&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x6216;&#x8005;mkfifo()&#x51FD;&#x6570;&#x6765;&#x5EFA;&#x7ACB;&#x7684;&#x3002;&#x4E00;&#x65E6;&#x5EFA;&#x7ACB;&#xFF0C;&#x4EFB;&#x4F55;&#x8FDB;&#x7A0B;&#x90FD;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x6587;&#x4EF6;&#x540D;&#x5C06;&#x5176;&#x6253;&#x5F00;&#x548C;&#x8FDB;&#x884C;&#x8BFB;&#x5199;&#xFF0C;&#x800C;&#x4E0D;&#x5C40;&#x9650;&#x4E8E;&#x7236;&#x5B50;&#x8FDB;&#x7A0B;&#xFF0C;&#x5F53;&#x7136;&#x524D;&#x63D0;&#x662F;&#x8FDB;&#x7A0B;&#x5BF9;FIFO&#x6709;&#x9002;&#x5F53;&#x7684;&#x8BBF;&#x95EE;&#x6743;&#x3002;&#x5F53;&#x4E0D;&#x518D;&#x88AB;&#x8FDB;&#x7A0B;&#x4F7F;&#x7528;&#x65F6;&#xFF0C;FIFO&#x5728;&#x5185;&#x5B58;&#x4E2D;&#x91CA;&#x653E;&#xFF0C;&#x4F46;&#x78C1;&#x76D8;&#x8282;&#x70B9;&#x4ECD;&#x7136;&#x5B58;&#x5728;&#x3002;<br>
<img src="https://hanzhu.dev/content/images/2021/10/caa3977e-cddc-44d7-99d8-01e4405c7df0.png" alt="caa3977e-cddc-44d7-99d8-01e4405c7df0" loading="lazy"><br>
&#x6709;&#x540D;&#x7BA1;&#x9053;&#x4E0D;&#x540C;&#x4E8E;&#x533F;&#x540D;&#x7BA1;&#x9053;&#x4E4B;&#x5904;&#x5728;&#x4E8E;&#x5B83;&#x63D0;&#x4F9B;&#x4E86;&#x4E00;&#x4E2A;&#x8DEF;&#x5F84;&#x540D;&#x4E0E;&#x4E4B;&#x5173;&#x8054;&#xFF0C;<strong>&#x4EE5;&#x6709;&#x540D;&#x7BA1;&#x9053;&#x7684;&#x6587;&#x4EF6;&#x5F62;&#x5F0F;&#x5B58;&#x5728;&#x4E8E;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x4E2D;</strong>&#xFF0C;&#x8FD9;&#x6837;&#xFF0C;<strong>&#x5373;&#x4F7F;&#x4E0E;&#x6709;&#x540D;&#x7BA1;&#x9053;&#x7684;&#x521B;&#x5EFA;&#x8FDB;&#x7A0B;&#x4E0D;&#x5B58;&#x5728;&#x4EB2;&#x7F18;&#x5173;&#x7CFB;&#x7684;&#x8FDB;&#x7A0B;&#xFF0C;&#x53EA;&#x8981;&#x53EF;&#x4EE5;&#x8BBF;&#x95EE;&#x8BE5;&#x8DEF;&#x5F84;&#xFF0C;&#x5C31;&#x80FD;&#x591F;&#x5F7C;&#x6B64;&#x901A;&#x8FC7;&#x6709;&#x540D;&#x7BA1;&#x9053;&#x76F8;&#x4E92;&#x901A;&#x4FE1;</strong>&#xFF0C;&#x56E0;&#x6B64;&#xFF0C;&#x901A;&#x8FC7;&#x6709;&#x540D;&#x7BA1;&#x9053;&#x4E0D;&#x76F8;&#x5173;&#x7684;&#x8FDB;&#x7A0B;&#x4E5F;&#x80FD;&#x4EA4;&#x6362;&#x6570;&#x636E;&#x3002;&#x503C;&#x5F97;&#x6CE8;&#x610F;&#x7684;&#x662F;&#xFF0C;&#x6709;&#x540D;&#x7BA1;&#x9053;&#x4E25;&#x683C;&#x9075;&#x5FAA;<strong>&#x5148;&#x8FDB;&#x5148;&#x51FA;(first in first out)</strong>,&#x5BF9;&#x533F;&#x540D;&#x7BA1;&#x9053;&#x53CA;&#x6709;&#x540D;&#x7BA1;&#x9053;&#x7684;&#x8BFB;&#x603B;&#x662F;&#x4ECE;&#x5F00;&#x59CB;&#x5904;&#x8FD4;&#x56DE;&#x6570;&#x636E;&#xFF0C;&#x5BF9;&#x5B83;&#x4EEC;&#x7684;&#x5199;&#x5219;&#x628A;&#x6570;&#x636E;&#x6DFB;&#x52A0;&#x5230;&#x672B;&#x5C3E;&#x3002;&#x5B83;&#x4EEC;&#x4E0D;&#x652F;&#x6301;&#x8BF8;&#x5982;lseek()&#x7B49;&#x6587;&#x4EF6;&#x5B9A;&#x4F4D;&#x64CD;&#x4F5C;&#x3002;<strong>&#x6709;&#x540D;&#x7BA1;&#x9053;&#x7684;&#x540D;&#x5B57;&#x5B58;&#x5728;&#x4E8E;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x4E2D;&#xFF0C;&#x5185;&#x5BB9;&#x5B58;&#x653E;&#x5728;&#x5185;&#x5B58;&#x4E2D;&#x3002;</strong></p>
<blockquote>
<p>&#x533F;&#x540D;&#x7BA1;&#x9053;&#x548C;&#x6709;&#x540D;&#x7BA1;&#x9053;&#x603B;&#x7ED3;&#xFF1A;<br>
&#xFF08;1&#xFF09;&#x7BA1;&#x9053;&#x662F;&#x7279;&#x6B8A;&#x7C7B;&#x578B;&#x7684;&#x6587;&#x4EF6;&#xFF0C;&#x5728;&#x6EE1;&#x8DB3;&#x5148;&#x5165;&#x5148;&#x51FA;&#x7684;&#x539F;&#x5219;&#x6761;&#x4EF6;&#x4E0B;&#x53EF;&#x4EE5;&#x8FDB;&#x884C;&#x8BFB;&#x5199;&#xFF0C;&#x4F46;&#x4E0D;&#x80FD;&#x8FDB;&#x884C;&#x5B9A;&#x4F4D;&#x8BFB;&#x5199;&#x3002;<br>
&#xFF08;2&#xFF09;&#x533F;&#x540D;&#x7BA1;&#x9053;&#x662F;&#x5355;&#x5411;&#x7684;&#xFF0C;&#x53EA;&#x80FD;&#x5728;&#x6709;&#x4EB2;&#x7F18;&#x5173;&#x7CFB;&#x7684;&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#xFF1B;&#x6709;&#x540D;&#x7BA1;&#x9053;&#x4EE5;&#x78C1;&#x76D8;&#x6587;&#x4EF6;&#x7684;&#x65B9;&#x5F0F;&#x5B58;&#x5728;&#xFF0C;&#x53EF;&#x4EE5;&#x5B9E;&#x73B0;&#x672C;&#x673A;&#x4EFB;&#x610F;&#x4E24;&#x4E2A;&#x8FDB;&#x7A0B;&#x901A;&#x4FE1;&#x3002;<br>
&#xFF08;3&#xFF09;&#x65E0;&#x540D;&#x7BA1;&#x9053;&#x963B;&#x585E;&#x95EE;&#x9898;&#xFF1A;&#x65E0;&#x540D;&#x7BA1;&#x9053;&#x65E0;&#x9700;&#x663E;&#x793A;&#x6253;&#x5F00;&#xFF0C;&#x521B;&#x5EFA;&#x65F6;&#x76F4;&#x63A5;&#x8FD4;&#x56DE;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;&#xFF0C;&#x5728;&#x8BFB;&#x5199;&#x65F6;&#x9700;&#x8981;&#x786E;&#x5B9A;&#x5BF9;&#x65B9;&#x7684;&#x5B58;&#x5728;&#xFF0C;&#x5426;&#x5219;&#x5C06;&#x9000;&#x51FA;&#x3002;&#x5982;&#x679C;&#x5F53;&#x524D;&#x8FDB;&#x7A0B;&#x5411;&#x65E0;&#x540D;&#x7BA1;&#x9053;&#x7684;&#x4E00;&#x7AEF;&#x5199;&#x6570;&#x636E;&#xFF0C;&#x5FC5;&#x987B;&#x786E;&#x5B9A;&#x53E6;&#x4E00;&#x7AEF;&#x6709;&#x67D0;&#x4E00;&#x8FDB;&#x7A0B;&#x3002;&#x5982;&#x679C;&#x5199;&#x5165;&#x65E0;&#x540D;&#x7BA1;&#x9053;&#x7684;&#x6570;&#x636E;&#x8D85;&#x8FC7;&#x5176;&#x6700;&#x5927;&#x503C;&#xFF0C;&#x5199;&#x64CD;&#x4F5C;&#x5C06;&#x963B;&#x585E;&#xFF0C;&#x5982;&#x679C;&#x7BA1;&#x9053;&#x4E2D;&#x6CA1;&#x6709;&#x6570;&#x636E;&#xFF0C;&#x8BFB;&#x64CD;&#x4F5C;&#x5C06;&#x963B;&#x585E;&#xFF0C;&#x5982;&#x679C;&#x7BA1;&#x9053;&#x53D1;&#x73B0;&#x53E6;&#x4E00;&#x7AEF;&#x65AD;&#x5F00;&#xFF0C;&#x5C06;&#x81EA;&#x52A8;&#x9000;&#x51FA;&#x3002;<br>
&#xFF08;4&#xFF09;&#x6709;&#x540D;&#x7BA1;&#x9053;&#x963B;&#x585E;&#x95EE;&#x9898;&#xFF1A;&#x6709;&#x540D;&#x7BA1;&#x9053;&#x5728;&#x6253;&#x5F00;&#x65F6;&#x9700;&#x8981;&#x786E;&#x5B9E;&#x5BF9;&#x65B9;&#x7684;&#x5B58;&#x5728;&#xFF0C;&#x5426;&#x5219;&#x5C06;&#x963B;&#x585E;&#x3002;&#x5373;&#x4EE5;&#x8BFB;&#x65B9;&#x5F0F;&#x6253;&#x5F00;&#x67D0;&#x7BA1;&#x9053;&#xFF0C;&#x5728;&#x6B64;&#x4E4B;&#x524D;&#x5FC5;&#x987B;&#x4E00;&#x4E2A;&#x8FDB;&#x7A0B;&#x4EE5;&#x5199;&#x65B9;&#x5F0F;&#x6253;&#x5F00;&#x7BA1;&#x9053;&#xFF0C;&#x5426;&#x5219;&#x963B;&#x585E;&#x3002;&#x6B64;&#x5916;&#xFF0C;&#x53EF;&#x4EE5;&#x4EE5;&#x8BFB;&#x5199;&#xFF08;O_RDWR&#xFF09;&#x6A21;&#x5F0F;&#x6253;&#x5F00;&#x6709;&#x540D;&#x7BA1;&#x9053;&#xFF0C;&#x5373;&#x5F53;&#x524D;&#x8FDB;&#x7A0B;&#x8BFB;&#xFF0C;&#x5F53;&#x524D;&#x8FDB;&#x7A0B;&#x5199;&#xFF0C;&#x4E0D;&#x4F1A;&#x963B;&#x585E;&#x3002;</p>
</blockquote>
<p><a href="http://blog.chinaunix.net/uid-26833883-id-3227144.html">&#x5EF6;&#x4F38;&#x9605;&#x8BFB;&#xFF1A;&#x8BE5;&#x535A;&#x5BA2;&#x6709;&#x533F;&#x540D;&#x7BA1;&#x9053;&#x548C;&#x6709;&#x540D;&#x7BA1;&#x9053;&#x7684;C&#x8BED;&#x8A00;&#x5B9E;&#x8DF5;</a></p>
<h2 id="3-%E4%BF%A1%E5%8F%B7%E9%87%8F-semaphore">3. &#x4FE1;&#x53F7;&#x91CF;( semaphore )</h2>
<p>&#x4FE1;&#x53F7;&#x91CF;&#x662F;&#x4E00;&#x4E2A;<strong>&#x8BA1;&#x6570;&#x5668;</strong>&#xFF0C;&#x53EF;&#x4EE5;&#x7528;&#x6765;&#x63A7;&#x5236;&#x591A;&#x4E2A;&#x8FDB;&#x7A0B;&#x5BF9;&#x5171;&#x4EAB;&#x8D44;&#x6E90;&#x7684;&#x8BBF;&#x95EE;&#x3002;&#x4FE1;&#x53F7;&#x91CF;<strong>&#x7528;&#x4E8E;&#x5B9E;&#x73B0;&#x8FDB;&#x7A0B;&#x95F4;&#x7684;&#x4E92;&#x65A5;&#x4E0E;&#x540C;&#x6B65;&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x7528;&#x4E8E;&#x5B58;&#x50A8;&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x6570;&#x636E;</strong>&#x3002;&#x5B83;&#x5E38;&#x4F5C;&#x4E3A;&#x4E00;&#x79CD;&#x9501;&#x673A;&#x5236;&#xFF0C;&#x9632;&#x6B62;&#x67D0;&#x8FDB;&#x7A0B;&#x6B63;&#x5728;&#x8BBF;&#x95EE;&#x5171;&#x4EAB;&#x8D44;&#x6E90;&#x65F6;&#xFF0C;&#x5176;&#x4ED6;&#x8FDB;&#x7A0B;&#x4E5F;&#x8BBF;&#x95EE;&#x8BE5;&#x8D44;&#x6E90;&#x3002;&#x56E0;&#x6B64;&#xFF0C;&#x4E3B;&#x8981;&#x4F5C;&#x4E3A;&#x8FDB;&#x7A0B;&#x95F4;&#x4EE5;&#x53CA;&#x540C;&#x4E00;&#x8FDB;&#x7A0B;&#x5185;&#x4E0D;&#x540C;&#x7EBF;&#x7A0B;&#x4E4B;&#x95F4;&#x7684;&#x540C;&#x6B65;&#x624B;&#x6BB5;&#x3002;<br>
&#x4FE1;&#x53F7;&#x91CF;&#x57FA;&#x4E8E;<strong>&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x7684; PV &#x64CD;&#x4F5C;&#xFF0C;&#x7A0B;&#x5E8F;&#x5BF9;&#x4FE1;&#x53F7;&#x91CF;&#x7684;&#x64CD;&#x4F5C;&#x90FD;&#x662F;&#x539F;&#x5B50;&#x64CD;&#x4F5C;&#x3002;</strong><br>
&#x4FE1;&#x53F7;&#x662F;&#x6BD4;&#x8F83;&#x590D;&#x6742;&#x7684;&#x901A;&#x4FE1;&#x65B9;&#x5F0F;&#xFF0C;&#x7528;&#x4E8E;&#x901A;&#x77E5;&#x63A5;&#x53D7;&#x8FDB;&#x7A0B;&#x6709;&#x67D0;&#x79CD;&#x4E8B;&#x4EF6;&#x53D1;&#x751F;&#xFF0C;&#x9664;&#x4E86;&#x7528;&#x4E8E;&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x5916;&#xFF0C;&#x8FDB;&#x7A0B;&#x8FD8;&#x53EF;&#x4EE5;&#x53D1;&#x9001;&#x4FE1;&#x53F7;&#x7ED9;&#x8FDB;&#x7A0B;&#x672C;&#x8EAB;&#xFF1B;linux&#x9664;&#x4E86;&#x652F;&#x6301;Unix&#x65E9;&#x671F;&#x4FE1;&#x53F7;&#x8BED;&#x4E49;&#x51FD;&#x6570;sigal&#x5916;&#xFF0C;&#x8FD8;&#x652F;&#x6301;&#x8BED;&#x4E49;&#x7B26;&#x5408;Posix.1&#x6807;&#x51C6;&#x7684;&#x4FE1;&#x53F7;&#x51FD;&#x6570;sigaction&#xFF08;&#x5B9E;&#x9645;&#x4E0A;&#xFF0C;&#x8BE5;&#x51FD;&#x6570;&#x662F;&#x57FA;&#x4E8E;BSD&#x7684;&#xFF0C;BSD&#x4E3A;&#x4E86;&#x5B9E;&#x73B0;&#x53EF;&#x9760;&#x4FE1;&#x53F7;&#x673A;&#x5236;&#xFF0C;&#x53C8;&#x80FD;&#x591F;&#x7EDF;&#x4E00;&#x5BF9;&#x5916;&#x63A5;&#x53E3;&#xFF0C;&#x7528;sigaction&#x51FD;&#x6570;&#x91CD;&#x65B0;&#x5B9E;&#x73B0;&#x4E86;signal&#x51FD;&#x6570;&#xFF09;&#xFF1B;</p>
<p>&#x4FE1;&#x53F7;&#x91CF;&#x7684;&#x672C;&#x8D28;&#x662F;&#x4E00;&#x79CD;<strong>&#x6570;&#x636E;&#x64CD;&#x4F5C;&#x9501;</strong>&#xFF0C;&#x5B83;&#x672C;&#x8EAB;&#x4E0D;&#x5177;&#x6709;&#x6570;&#x636E;&#x4EA4;&#x6362;&#x7684;&#x529F;&#x80FD;&#xFF0C;&#x800C;&#x662F;&#x901A;&#x8FC7;<strong>&#x63A7;&#x5236;&#x5176;&#x4ED6;&#x7684;&#x901A;&#x4FE1;&#x8D44;&#x6E90;</strong>&#xFF08;&#x6587;&#x4EF6;&#xFF0C;&#x5916;&#x90E8;&#x8BBE;&#x5907;&#xFF09;&#x6765;&#x5B9E;&#x73B0;&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#xFF0C;<strong>&#x5B83;&#x672C;&#x8EAB;&#x53EA;&#x662F;&#x4E00;&#x79CD;&#x5916;&#x90E8;&#x8D44;&#x6E90;&#x7684;&#x6807;&#x8BC6;</strong>&#x3002;&#x4FE1;&#x53F7;&#x91CF;&#x5728;&#x6B64;&#x8FC7;&#x7A0B;&#x4E2D;&#x8D1F;&#x8D23;&#x6570;&#x636E;&#x64CD;&#x4F5C;&#x7684;&#x4E92;&#x65A5;&#x3001;&#x540C;&#x6B65;&#x7B49;&#x529F;&#x80FD;&#x3002;<br>
&#x5F53;&#x8BF7;&#x6C42;&#x4E00;&#x4E2A;&#x4F7F;&#x7528;&#x4FE1;&#x53F7;&#x91CF;&#x6765;&#x8868;&#x793A;&#x7684;&#x8D44;&#x6E90;&#x65F6;&#xFF0C;&#x8FDB;&#x7A0B;&#x9700;&#x8981;&#x5148;&#x8BFB;&#x53D6;&#x4FE1;&#x53F7;&#x91CF;&#x7684;&#x503C;&#x6765;&#x5224;&#x65AD;&#x8D44;&#x6E90;&#x662F;&#x5426;&#x53EF;&#x7528;&#x3002;&#x5927;&#x4E8E;0&#xFF0C;&#x8D44;&#x6E90;&#x53EF;&#x4EE5;&#x8BF7;&#x6C42;&#xFF0C;&#x7B49;&#x4E8E;0&#xFF0C;&#x65E0;&#x8D44;&#x6E90;&#x53EF;&#x7528;&#xFF0C;&#x8FDB;&#x7A0B;&#x4F1A;&#x8FDB;&#x5165;&#x7761;&#x7720;&#x72B6;&#x6001;&#x76F4;&#x81F3;&#x8D44;&#x6E90;&#x53EF;&#x7528;&#x3002;<br>
&#x5F53;&#x8FDB;&#x7A0B;&#x4E0D;&#x518D;&#x4F7F;&#x7528;&#x4E00;&#x4E2A;&#x4FE1;&#x53F7;&#x91CF;&#x63A7;&#x5236;&#x7684;&#x5171;&#x4EAB;&#x8D44;&#x6E90;&#x65F6;&#xFF0C;&#x4FE1;&#x53F7;&#x91CF;&#x7684;&#x503C;+1&#xFF0C;&#x5BF9;&#x4FE1;&#x53F7;&#x91CF;&#x7684;&#x503C;&#x8FDB;&#x884C;&#x7684;&#x589E;&#x51CF;&#x64CD;&#x4F5C;&#x5747;&#x4E3A;&#x539F;&#x5B50;&#x64CD;&#x4F5C;&#xFF0C;&#x8FD9;&#x662F;&#x7531;&#x4E8E;&#x4FE1;&#x53F7;&#x91CF;&#x4E3B;&#x8981;&#x7684;&#x4F5C;&#x7528;&#x662F;&#x7EF4;&#x62A4;&#x8D44;&#x6E90;&#x7684;&#x4E92;&#x65A5;&#x6216;&#x591A;&#x8FDB;&#x7A0B;&#x7684;&#x540C;&#x6B65;&#x8BBF;&#x95EE;&#x3002;&#x800C;&#x5728;&#x4FE1;&#x53F7;&#x91CF;&#x7684;&#x521B;&#x5EFA;&#x53CA;&#x521D;&#x59CB;&#x5316;&#x4E0A;&#xFF0C;&#x4E0D;&#x80FD;&#x4FDD;&#x8BC1;&#x64CD;&#x4F5C;&#x5747;&#x4E3A;&#x539F;&#x5B50;&#x6027;&#x3002;</p>
<p>&#x4FE1;&#x53F7;&#x91CF;&#x662F;&#x4E00;&#x4E2A;&#x8BA1;&#x6570;&#x5668;&#xFF0C;&#x7528;&#x4E8E;&#x591A;&#x8FDB;&#x7A0B;&#x5BF9;&#x5171;&#x4EAB;&#x6570;&#x636E;&#x7684;&#x8BBF;&#x95EE;&#xFF0C;&#x4FE1;&#x53F7;&#x91CF;&#x7684;&#x610F;&#x56FE;&#x5728;&#x4E8E;&#x8FDB;&#x7A0B;&#x95F4;&#x540C;&#x6B65;&#x3002;<br>
&#x4E3A;&#x4E86;&#x83B7;&#x5F97;&#x5171;&#x4EAB;&#x8D44;&#x6E90;&#xFF0C;&#x8FDB;&#x7A0B;&#x9700;&#x8981;&#x6267;&#x884C;&#x4E0B;&#x5217;&#x64CD;&#x4F5C;&#xFF1A;<br>
&#xFF08;1&#xFF09;<strong>&#x521B;&#x5EFA;&#x4E00;&#x4E2A;&#x4FE1;&#x53F7;&#x91CF;</strong>&#xFF1A;&#x8FD9;&#x8981;&#x6C42;&#x8C03;&#x7528;&#x8005;&#x6307;&#x5B9A;&#x521D;&#x59CB;&#x503C;&#xFF0C;&#x5BF9;&#x4E8E;&#x4E8C;&#x503C;&#x4FE1;&#x53F7;&#x91CF;&#x6765;&#x8BF4;&#xFF0C;&#x5B83;&#x901A;&#x5E38;&#x662F;1&#xFF0C;&#x4E5F;&#x53EF;&#x662F;0&#x3002;<br>
&#xFF08;2&#xFF09;<strong>&#x7B49;&#x5F85;&#x4E00;&#x4E2A;&#x4FE1;&#x53F7;&#x91CF;</strong>&#xFF1A;&#x8BE5;&#x64CD;&#x4F5C;&#x4F1A;&#x6D4B;&#x8BD5;&#x8FD9;&#x4E2A;&#x4FE1;&#x53F7;&#x91CF;&#x7684;&#x503C;&#xFF0C;&#x5982;&#x679C;&#x5C0F;&#x4E8E;0&#xFF0C;&#x5C31;&#x963B;&#x585E;&#x3002;&#x4E5F;&#x79F0;&#x4E3A;P&#x64CD;&#x4F5C;&#x3002;<br>
&#xFF08;3&#xFF09;<strong>&#x6302;&#x51FA;&#x4E00;&#x4E2A;&#x4FE1;&#x53F7;&#x91CF;</strong>&#xFF1A;&#x8BE5;&#x64CD;&#x4F5C;&#x5C06;&#x4FE1;&#x53F7;&#x91CF;&#x7684;&#x503C;&#x52A0;1&#xFF0C;&#x4E5F;&#x79F0;&#x4E3A;V&#x64CD;&#x4F5C;&#x3002;<br>
&#x4E3A;&#x4E86;&#x6B63;&#x786E;&#x5730;&#x5B9E;&#x73B0;&#x4FE1;&#x53F7;&#x91CF;&#xFF0C;&#x4FE1;&#x53F7;&#x91CF;&#x503C;&#x7684;&#x6D4B;&#x8BD5;&#x53CA;&#x51CF;1&#x64CD;&#x4F5C;&#x5E94;&#x5F53;&#x662F;&#x539F;&#x5B50;&#x64CD;&#x4F5C;&#x3002;&#x4E3A;&#x6B64;&#xFF0C;&#x4FE1;&#x53F7;&#x91CF;&#x901A;&#x5E38;&#x662F;&#x5728;&#x5185;&#x6838;&#x4E2D;&#x5B9E;&#x73B0;&#x7684;&#x3002;Linux&#x73AF;&#x5883;&#x4E2D;&#xFF0C;&#x6709;&#x4E09;&#x79CD;&#x7C7B;&#x578B;&#xFF1A;<strong>Posix&#xFF08;<a href="https://baike.baidu.com/item/%E5%8F%AF%E7%A7%BB%E6%A4%8D%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E6%8E%A5%E5%8F%A3/12718298?fr=aladdin&amp;fromtitle=POSIX&amp;fromid=3792413">&#x53EF;&#x79FB;&#x690D;&#x6027;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x63A5;&#x53E3;</a>&#xFF09;&#x6709;&#x540D;&#x4FE1;&#x53F7;&#x91CF;&#xFF08;&#x4F7F;&#x7528;Posix IPC&#x540D;&#x5B57;&#x6807;&#x8BC6;&#xFF09;&#x3001;Posix&#x57FA;&#x4E8E;&#x5185;&#x5B58;&#x7684;&#x4FE1;&#x53F7;&#x91CF;&#xFF08;&#x5B58;&#x653E;&#x5728;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x533A;&#x4E2D;&#xFF09;&#x3001;System V&#x4FE1;&#x53F7;&#x91CF;&#xFF08;&#x5728;&#x5185;&#x6838;&#x4E2D;&#x7EF4;&#x62A4;&#xFF09;</strong>&#x3002;&#x8FD9;&#x4E09;&#x79CD;&#x4FE1;&#x53F7;&#x91CF;&#x90FD;&#x53EF;&#x7528;&#x4E8E;&#x8FDB;&#x7A0B;&#x95F4;&#x6216;&#x7EBF;&#x7A0B;&#x95F4;&#x7684;&#x540C;&#x6B65;&#x3002;<br>
<img src="https://hanzhu.dev/content/images/2021/10/b689a445-a591-49c4-9a6b-8d00802d0a73.png" alt="b689a445-a591-49c4-9a6b-8d00802d0a73" loading="lazy"><br>
<img src="https://hanzhu.dev/content/images/2021/10/a8fae36a-4376-4b41-b6e4-35ce3d5a7c4c.png" alt="a8fae36a-4376-4b41-b6e4-35ce3d5a7c4c" loading="lazy"><br>
<img src="https://hanzhu.dev/content/images/2021/10/056efec6-3d2a-4b88-a06e-22e052911f11.png" alt="056efec6-3d2a-4b88-a06e-22e052911f11" loading="lazy"></p>
<blockquote>
<p><strong>&#x4FE1;&#x53F7;&#x91CF;&#x4E0E;&#x666E;&#x901A;&#x6574;&#x578B;&#x53D8;&#x91CF;&#x7684;&#x533A;&#x522B;</strong>&#xFF1A;<br>
&#xFF08;1&#xFF09;&#x4FE1;&#x53F7;&#x91CF;&#x662F;&#x975E;&#x8D1F;&#x6574;&#x578B;&#x53D8;&#x91CF;&#xFF0C;&#x9664;&#x4E86;&#x521D;&#x59CB;&#x5316;&#x4E4B;&#x5916;&#xFF0C;&#x5B83;&#x53EA;&#x80FD;&#x901A;&#x8FC7;&#x4E24;&#x4E2A;&#x6807;&#x51C6;&#x539F;&#x5B50;&#x64CD;&#x4F5C;&#xFF1A;wait(semap) , signal(semap) ; &#x6765;&#x8FDB;&#x884C;&#x8BBF;&#x95EE;&#xFF1B;<br>
&#xFF08;2&#xFF09;&#x64CD;&#x4F5C;&#x4E5F;&#x88AB;&#x79F0;&#x4E3A;PV&#x539F;&#x8BED;&#xFF08;P&#x6765;&#x6E90;&#x4E8E;&#x8377;&#x5170;&#x8BED;proberen&quot;&#x6D4B;&#x8BD5;&quot;&#xFF0C;V&#x6765;&#x6E90;&#x4E8E;&#x8377;&#x5170;&#x8BED;verhogen&quot;&#x589E;&#x52A0;&quot;&#xFF0C;P&#x8868;&#x793A;&#x901A;&#x8FC7;&#x7684;&#x610F;&#x601D;&#xFF0C;V&#x8868;&#x793A;&#x91CA;&#x653E;&#x7684;&#x610F;&#x601D;&#xFF09;&#xFF0C;&#x800C;&#x666E;&#x901A;&#x6574;&#x578B;&#x53D8;&#x91CF;&#x5219;&#x53EF;&#x4EE5;&#x5728;&#x4EFB;&#x4F55;&#x8BED;&#x53E5;&#x5757;&#x4E2D;&#x88AB;&#x8BBF;&#x95EE;&#xFF1B;</p>
</blockquote>
<blockquote>
<p><strong>&#x4FE1;&#x53F7;&#x91CF;&#x4E0E;&#x4E92;&#x65A5;&#x91CF;&#x4E4B;&#x95F4;&#x7684;&#x533A;&#x522B;</strong>&#xFF1A;<br>
&#xFF08;1&#xFF09;&#x4E92;&#x65A5;&#x91CF;&#x7528;&#x4E8E;&#x7EBF;&#x7A0B;&#x7684;&#x4E92;&#x65A5;&#xFF0C;&#x4FE1;&#x53F7;&#x91CF;&#x7528;&#x4E8E;&#x7EBF;&#x7A0B;&#x7684;&#x540C;&#x6B65;&#x3002;&#x8FD9;&#x662F;&#x4E92;&#x65A5;&#x91CF;&#x548C;&#x4FE1;&#x53F7;&#x91CF;&#x7684;&#x6839;&#x672C;&#x533A;&#x522B;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x4E92;&#x65A5;&#x548C;&#x540C;&#x6B65;&#x4E4B;&#x95F4;&#x7684;&#x533A;&#x522B;&#x3002;<br>
<strong>&#x4E92;&#x65A5;</strong>&#xFF1A;&#x662F;&#x6307;&#x67D0;&#x4E00;&#x8D44;&#x6E90;&#x540C;&#x65F6;&#x53EA;&#x5141;&#x8BB8;&#x4E00;&#x4E2A;&#x8BBF;&#x95EE;&#x8005;&#x5BF9;&#x5176;&#x8FDB;&#x884C;&#x8BBF;&#x95EE;&#xFF0C;&#x5177;&#x6709;&#x552F;&#x4E00;&#x6027;&#x548C;&#x6392;&#x5B83;&#x6027;&#x3002;&#x4F46;&#x4E92;&#x65A5;&#x65E0;&#x6CD5;&#x9650;&#x5236;&#x8BBF;&#x95EE;&#x8005;&#x5BF9;&#x8D44;&#x6E90;&#x7684;&#x8BBF;&#x95EE;&#x987A;&#x5E8F;&#xFF0C;&#x5373;&#x8BBF;&#x95EE;&#x662F;&#x65E0;&#x5E8F;&#x7684;&#x3002;<br>
<strong>&#x540C;&#x6B65;</strong>&#xFF1A;&#x662F;&#x6307;&#x5728;&#x4E92;&#x65A5;&#x7684;&#x57FA;&#x7840;&#x4E0A;&#xFF08;&#x5927;&#x591A;&#x6570;&#x60C5;&#x51B5;&#xFF09;&#xFF0C;&#x901A;&#x8FC7;&#x5176;&#x5B83;&#x673A;&#x5236;&#x5B9E;&#x73B0;&#x8BBF;&#x95EE;&#x8005;&#x5BF9;&#x8D44;&#x6E90;&#x7684;&#x6709;&#x5E8F;&#x8BBF;&#x95EE;&#x3002;<br>
&#x5728;&#x5927;&#x591A;&#x6570;&#x60C5;&#x51B5;&#x4E0B;&#xFF0C;&#x540C;&#x6B65;&#x5DF2;&#x7ECF;&#x5B9E;&#x73B0;&#x4E86;&#x4E92;&#x65A5;&#xFF0C;&#x7279;&#x522B;&#x662F;&#x6240;&#x6709;&#x5199;&#x5165;&#x8D44;&#x6E90;&#x7684;&#x60C5;&#x51B5;&#x5FC5;&#x5B9A;&#x662F;&#x4E92;&#x65A5;&#x7684;&#x3002;&#x5C11;&#x6570;&#x60C5;&#x51B5;&#x662F;&#x6307;&#x53EF;&#x4EE5;&#x5141;&#x8BB8;&#x591A;&#x4E2A;&#x8BBF;&#x95EE;&#x8005;&#x540C;&#x65F6;&#x8BBF;&#x95EE;&#x8D44;&#x6E90;<br>
&#xFF08;2&#xFF09;&#x4E92;&#x65A5;&#x91CF;&#x503C;&#x53EA;&#x80FD;&#x4E3A;0/1&#xFF0C;&#x4FE1;&#x53F7;&#x91CF;&#x503C;&#x53EF;&#x4EE5;&#x4E3A;&#x975E;&#x8D1F;&#x6574;&#x6570;&#x3002;<br>
&#x4E5F;&#x5C31;&#x662F;&#x8BF4;&#xFF0C;&#x4E00;&#x4E2A;&#x4E92;&#x65A5;&#x91CF;&#x53EA;&#x80FD;&#x7528;&#x4E8E;&#x4E00;&#x4E2A;&#x8D44;&#x6E90;&#x7684;&#x4E92;&#x65A5;&#x8BBF;&#x95EE;&#xFF0C;&#x5B83;&#x4E0D;&#x80FD;&#x5B9E;&#x73B0;&#x591A;&#x4E2A;&#x8D44;&#x6E90;&#x7684;&#x591A;&#x7EBF;&#x7A0B;&#x4E92;&#x65A5;&#x95EE;&#x9898;&#x3002;&#x4FE1;&#x53F7;&#x91CF;&#x53EF;&#x4EE5;&#x5B9E;&#x73B0;&#x591A;&#x4E2A;&#x540C;&#x7C7B;&#x8D44;&#x6E90;&#x7684;&#x591A;&#x7EBF;&#x7A0B;&#x4E92;&#x65A5;&#x548C;&#x540C;&#x6B65;&#x3002;&#x5F53;&#x4FE1;&#x53F7;&#x91CF;&#x4E3A;&#x5355;&#x503C;&#x4FE1;&#x53F7;&#x91CF;&#x662F;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x5B8C;&#x6210;&#x4E00;&#x4E2A;&#x8D44;&#x6E90;&#x7684;&#x4E92;&#x65A5;&#x8BBF;&#x95EE;&#x3002;<br>
&#xFF08;3&#xFF09;&#x4E92;&#x65A5;&#x91CF;&#x7684;&#x52A0;&#x9501;&#x548C;&#x89E3;&#x9501;&#x5FC5;&#x987B;&#x7531;&#x540C;&#x4E00;&#x7EBF;&#x7A0B;&#x5206;&#x522B;&#x5BF9;&#x5E94;&#x4F7F;&#x7528;&#xFF0C;&#x4FE1;&#x53F7;&#x91CF;&#x53EF;&#x4EE5;&#x7531;&#x4E00;&#x4E2A;&#x7EBF;&#x7A0B;&#x91CA;&#x653E;&#xFF0C;&#x53E6;&#x4E00;&#x4E2A;&#x7EBF;&#x7A0B;&#x5F97;&#x5230;&#x3002;</p>
</blockquote>
<h2 id="4-%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97-message-queue">4. &#x6D88;&#x606F;&#x961F;&#x5217;( message queue )</h2>
<p>&#x6D88;&#x606F;&#x961F;&#x5217;&#x662F;&#x7531;&#x6D88;&#x606F;&#x7684;&#x94FE;&#x8868;&#xFF0C;&#x5B58;&#x653E;&#x5728;&#x5185;&#x6838;&#x4E2D;&#x5E76;&#x7531;&#x6D88;&#x606F;&#x961F;&#x5217;&#x6807;&#x8BC6;&#x7B26;&#x6807;&#x8BC6;&#x3002;&#x6D88;&#x606F;&#x961F;&#x5217;&#x514B;&#x670D;&#x4E86;&#x4FE1;&#x53F7;&#x4F20;&#x9012;&#x4FE1;&#x606F;&#x5C11;&#x3001;&#x7BA1;&#x9053;&#x53EA;&#x80FD;&#x627F;&#x8F7D;&#x65E0;&#x683C;&#x5F0F;&#x5B57;&#x8282;&#x6D41;&#x4EE5;&#x53CA;&#x7F13;&#x51B2;&#x533A;&#x5927;&#x5C0F;&#x53D7;&#x9650;&#x7B49;&#x7F3A;&#x70B9;&#x3002;<br>
<img src="https://hanzhu.dev/content/images/2021/10/5f0eee90-8a23-48bf-b65d-ad93c721e518.png" alt="5f0eee90-8a23-48bf-b65d-ad93c721e518" loading="lazy"><br>
&#x6D88;&#x606F;&#x961F;&#x5217;&#x662F;&#x6D88;&#x606F;&#x7684;&#x94FE;&#x63A5;&#x8868;&#xFF0C;&#x5305;&#x62EC;Posix&#x6D88;&#x606F;&#x961F;&#x5217;system V&#x6D88;&#x606F;&#x961F;&#x5217;&#x3002;<br>
&#x6D88;&#x606F;&#x961F;&#x5217;&#x4E0E;&#x7BA1;&#x9053;&#x901A;&#x4FE1;&#x76F8;&#x6BD4;&#xFF0C;&#x5176;&#x4F18;&#x52BF;&#x662F;&#x5BF9;&#x6BCF;&#x4E2A;&#x6D88;&#x606F;&#x6307;&#x5B9A;&#x7279;&#x5B9A;&#x7684;&#x6D88;&#x606F;&#x7C7B;&#x578B;&#xFF0C;&#x63A5;&#x6536;&#x7684;&#x65F6;&#x5019;&#x4E0D;&#x9700;&#x8981;&#x6309;&#x7167;&#x961F;&#x5217;&#x6B21;&#x5E8F;&#xFF0C;&#x800C;&#x662F;&#x53EF;&#x4EE5;&#x6839;&#x636E;&#x81EA;&#x5B9A;&#x4E49;&#x6761;&#x4EF6;&#x63A5;&#x6536;&#x7279;&#x5B9A;&#x7C7B;&#x578B;&#x7684;&#x6D88;&#x606F;&#x3002;<br>
&#x53EF;&#x4EE5;&#x628A;&#x6D88;&#x606F;&#x770B;&#x505A;&#x4E00;&#x4E2A;&#x8BB0;&#x5F55;&#xFF0C;&#x5177;&#x6709;&#x7279;&#x5B9A;&#x7684;&#x683C;&#x5F0F;&#x4EE5;&#x53CA;&#x7279;&#x5B9A;&#x7684;&#x4F18;&#x5148;&#x7EA7;&#x3002;&#x5BF9;&#x6D88;&#x606F;&#x961F;&#x5217;&#x6709;&#x5199;&#x6743;&#x9650;&#x7684;&#x8FDB;&#x7A0B;&#x53EF;&#x4EE5;&#x5411;&#x6D88;&#x606F;&#x961F;&#x5217;&#x4E2D;&#x6309;&#x7167;&#x4E00;&#x5B9A;&#x7684;&#x89C4;&#x5219;&#x6DFB;&#x52A0;&#x65B0;&#x6D88;&#x606F;&#xFF0C;&#x5BF9;&#x6D88;&#x606F;&#x961F;&#x5217;&#x6709;&#x8BFB;&#x6743;&#x9650;&#x7684;&#x8FDB;&#x7A0B;&#x53EF;&#x4EE5;&#x4ECE;&#x6D88;&#x606F;&#x961F;&#x5217;&#x4E2D;&#x8BFB;&#x53D6;&#x6D88;&#x606F;&#x3002;</p>
<ul>
<li>&#x6D88;&#x606F;&#x961F;&#x5217;&#x662F;&#x5B58;&#x653E;&#x5728;&#x5185;&#x6838;&#x4E2D;&#x7684;&#x6D88;&#x606F;&#x94FE;&#x8868;&#xFF0C;&#x6BCF;&#x4E2A;&#x6D88;&#x606F;&#x961F;&#x5217;&#x7531;&#x6D88;&#x606F;&#x961F;&#x5217;&#x6807;&#x8BC6;&#x7B26;&#x8868;&#x793A;&#x3002;</li>
<li>&#x4E0E;&#x7BA1;&#x9053;&#xFF08;&#x65E0;&#x540D;&#x7BA1;&#x9053;&#xFF1A;&#x53EA;&#x5B58;&#x5728;&#x4E8E;&#x5185;&#x5B58;&#x4E2D;&#x7684;&#x6587;&#x4EF6;&#xFF1B;&#x547D;&#x540D;&#x7BA1;&#x9053;&#xFF1A;&#x5B58;&#x5728;&#x4E8E;&#x5B9E;&#x9645;&#x7684;&#x78C1;&#x76D8;&#x4ECB;&#x8D28;&#x6216;&#x8005;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#xFF09;&#x4E0D;&#x540C;&#x7684;&#x662F;&#x6D88;&#x606F;&#x961F;&#x5217;&#x5B58;&#x653E;&#x5728;&#x5185;&#x6838;&#x4E2D;&#xFF0C;&#x53EA;&#x6709;&#x5728;&#x5185;&#x6838;&#x91CD;&#x542F;(&#x5373;&#xFF0C;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x91CD;&#x542F;)&#x6216;&#x8005;&#x663E;&#x793A;&#x5730;&#x5220;&#x9664;&#x4E00;&#x4E2A;&#x6D88;&#x606F;&#x961F;&#x5217;&#x65F6;&#xFF0C;&#x8BE5;&#x6D88;&#x606F;&#x961F;&#x5217;&#x624D;&#x4F1A;&#x88AB;&#x771F;&#x6B63;&#x7684;&#x5220;&#x9664;&#x3002;</li>
<li>&#x53E6;&#x5916;&#x4E0E;&#x7BA1;&#x9053;&#x4E0D;&#x540C;&#x7684;&#x662F;&#xFF0C;&#x6D88;&#x606F;&#x961F;&#x5217;&#x5728;&#x67D0;&#x4E2A;&#x8FDB;&#x7A0B;&#x5F80;&#x4E00;&#x4E2A;&#x961F;&#x5217;&#x5199;&#x5165;&#x6D88;&#x606F;&#x4E4B;&#x524D;&#xFF0C;&#x5E76;&#x4E0D;&#x9700;&#x8981;&#x53E6;&#x5916;&#x67D0;&#x4E2A;&#x8FDB;&#x7A0B;&#x5728;&#x8BE5;&#x961F;&#x5217;&#x4E0A;&#x7B49;&#x5F85;&#x6D88;&#x606F;&#x7684;&#x5230;&#x8FBE;&#x3002;</li>
</ul>
<blockquote>
<p>&#x6D88;&#x606F;&#x961F;&#x5217;&#x7279;&#x70B9;&#x603B;&#x7ED3;&#xFF1A;<br>
&#xFF08;1&#xFF09;&#x6D88;&#x606F;&#x961F;&#x5217;&#x662F;&#x6D88;&#x606F;&#x7684;&#x94FE;&#x8868;,&#x5177;&#x6709;&#x7279;&#x5B9A;&#x7684;&#x683C;&#x5F0F;,&#x5B58;&#x653E;&#x5728;&#x5185;&#x5B58;&#x4E2D;&#x5E76;&#x7531;&#x6D88;&#x606F;&#x961F;&#x5217;&#x6807;&#x8BC6;&#x7B26;&#x6807;&#x8BC6;.<br>
&#xFF08;2&#xFF09;&#x6D88;&#x606F;&#x961F;&#x5217;&#x5141;&#x8BB8;&#x4E00;&#x4E2A;&#x6216;&#x591A;&#x4E2A;&#x8FDB;&#x7A0B;&#x5411;&#x5B83;&#x5199;&#x5165;&#x4E0E;&#x8BFB;&#x53D6;&#x6D88;&#x606F;.<br>
&#xFF08;3&#xFF09;&#x7BA1;&#x9053;&#x548C;&#x6D88;&#x606F;&#x961F;&#x5217;&#x7684;&#x901A;&#x4FE1;&#x6570;&#x636E;&#x90FD;&#x662F;&#x5148;&#x8FDB;&#x5148;&#x51FA;&#x7684;&#x539F;&#x5219;&#x3002;<br>
&#xFF08;4&#xFF09;&#x6D88;&#x606F;&#x961F;&#x5217;&#x53EF;&#x4EE5;&#x5B9E;&#x73B0;&#x6D88;&#x606F;&#x7684;&#x968F;&#x673A;&#x67E5;&#x8BE2;,&#x6D88;&#x606F;&#x4E0D;&#x4E00;&#x5B9A;&#x8981;&#x4EE5;&#x5148;&#x8FDB;&#x5148;&#x51FA;&#x7684;&#x6B21;&#x5E8F;&#x8BFB;&#x53D6;,&#x4E5F;&#x53EF;&#x4EE5;&#x6309;&#x6D88;&#x606F;&#x7684;&#x7C7B;&#x578B;&#x8BFB;&#x53D6;.&#x6BD4;FIFO&#x66F4;&#x6709;&#x4F18;&#x52BF;&#x3002;<br>
&#xFF08;5&#xFF09;&#x6D88;&#x606F;&#x961F;&#x5217;&#x514B;&#x670D;&#x4E86;&#x4FE1;&#x53F7;&#x627F;&#x8F7D;&#x4FE1;&#x606F;&#x91CF;&#x5C11;&#xFF0C;&#x7BA1;&#x9053;&#x53EA;&#x80FD;&#x627F;&#x8F7D;&#x65E0;&#x683C;&#x5F0F;&#x5B57; &#x8282;&#x6D41;&#x4EE5;&#x53CA;&#x7F13;&#x51B2;&#x533A;&#x5927;&#x5C0F;&#x53D7;&#x9650;&#x7B49;&#x7F3A;&#x3002;<br>
&#xFF08;6&#xFF09;&#x76EE;&#x524D;&#x4E3B;&#x8981;&#x6709;&#x4E24;&#x79CD;&#x7C7B;&#x578B;&#x7684;&#x6D88;&#x606F;&#x961F;&#x5217;&#xFF1A;POSIX&#x6D88;&#x606F;&#x961F;&#x5217;&#x4EE5;&#x53CA;System V&#x6D88;&#x606F;&#x961F;&#x5217;&#xFF0C;&#x7CFB;&#x7EDF;V&#x6D88;&#x606F;&#x961F;&#x5217;&#x76EE;&#x524D;&#x88AB;&#x5927;&#x91CF;&#x4F7F;&#x7528;&#x3002;&#x7CFB;&#x7EDF;V&#x6D88;&#x606F;&#x961F;&#x5217;&#x662F;&#x968F;&#x5185;&#x6838;&#x6301;&#x7EED;&#x7684;&#xFF0C;&#x53EA;&#x6709;&#x5728;&#x5185;&#x6838;&#x91CD;&#x542F;&#x6216;&#x8005;&#x4EBA;&#x5DE5;&#x5220;&#x9664;&#x65F6;&#xFF0C;&#x8BE5;&#x6D88;&#x606F;&#x961F;&#x5217;&#x624D;&#x4F1A;&#x88AB;&#x5220;&#x9664;&#x3002;</p>
</blockquote>
<p><a href="https://blog.csdn.net/yang_yulei/article/details/19772649">&#x5EF6;&#x4F38;&#x9605;&#x8BFB;&#xFF1A;&#x6D88;&#x606F;&#x961F;&#x5217;C&#x8BED;&#x8A00;&#x7684;&#x5B9E;&#x8DF5;</a></p>
<h2 id="5-%E4%BF%A1%E5%8F%B7-singal">5. &#x4FE1;&#x53F7; ( singal )</h2>
<p>&#x4FE1;&#x53F7;&#x662F;&#x4E00;&#x79CD;&#x6BD4;&#x8F83;&#x590D;&#x6742;&#x7684;&#x901A;&#x4FE1;&#x65B9;&#x5F0F;&#xFF0C;&#x7528;&#x4E8E;&#x901A;&#x77E5;&#x63A5;&#x6536;&#x8FDB;&#x7A0B;&#x67D0;&#x4E2A;&#x4E8B;&#x4EF6;&#x5DF2;&#x7ECF;&#x53D1;&#x751F;&#x3002;&#x4E3B;&#x8981;&#x4F5C;&#x4E3A;&#x8FDB;&#x7A0B;&#x95F4;&#x4EE5;&#x53CA;&#x540C;&#x4E00;&#x8FDB;&#x7A0B;&#x4E0D;&#x540C;&#x7EBF;&#x7A0B;&#x4E4B;&#x95F4;&#x7684;&#x540C;&#x6B65;&#x624B;&#x6BB5;&#x3002;<br>
<img src="https://hanzhu.dev/content/images/2021/10/b0393bf3-a8d3-4525-a35e-fc736c118d00.png" alt="b0393bf3-a8d3-4525-a35e-fc736c118d00" loading="lazy"></p>
<ul>
<li>&#x4FE1;&#x53F7;&#x662F;Linux&#x7CFB;&#x7EDF;&#x4E2D;&#x7528;&#x4E8E;&#x8FDB;&#x7A0B;&#x95F4;&#x4E92;&#x76F8;&#x901A;&#x4FE1;&#x6216;&#x8005;&#x64CD;&#x4F5C;&#x7684;&#x4E00;&#x79CD;&#x673A;&#x5236;&#xFF0C;&#x4FE1;&#x53F7;&#x53EF;&#x4EE5;&#x5728;&#x4EFB;&#x4F55;&#x65F6;&#x5019;&#x53D1;&#x7ED9;&#x67D0;&#x4E00;&#x8FDB;&#x7A0B;&#xFF0C;&#x800C;&#x65E0;&#x9700;&#x77E5;&#x9053;&#x8BE5;&#x8FDB;&#x7A0B;&#x7684;&#x72B6;&#x6001;&#x3002;</li>
<li>&#x5982;&#x679C;&#x8BE5;&#x8FDB;&#x7A0B;&#x5F53;&#x524D;&#x5E76;&#x672A;&#x5904;&#x4E8E;&#x6267;&#x884C;&#x72B6;&#x6001;&#xFF0C;&#x5219;&#x8BE5;&#x4FE1;&#x53F7;&#x5C31;&#x6709;&#x5185;&#x6838;&#x4FDD;&#x5B58;&#x8D77;&#x6765;&#xFF0C;&#x76F4;&#x5230;&#x8BE5;&#x8FDB;&#x7A0B;&#x6062;&#x590D;&#x6267;&#x884C;&#x5E76;&#x4F20;&#x9012;&#x7ED9;&#x5B83;&#x4E3A;&#x6B62;&#x3002;</li>
<li>&#x5982;&#x679C;&#x4E00;&#x4E2A;&#x4FE1;&#x53F7;&#x88AB;&#x8FDB;&#x7A0B;&#x8BBE;&#x7F6E;&#x4E3A;&#x963B;&#x585E;&#xFF0C;&#x5219;&#x8BE5;&#x4FE1;&#x53F7;&#x7684;&#x4F20;&#x9012;&#x88AB;&#x5EF6;&#x8FDF;&#xFF0C;&#x76F4;&#x5230;&#x5176;&#x963B;&#x585E;&#x88AB;&#x53D6;&#x6D88;&#x65F6;&#x624D;&#x88AB;&#x4F20;&#x9012;&#x7ED9;&#x8FDB;&#x7A0B;&#x3002;</li>
</ul>
<blockquote>
<p>Linux&#x7CFB;&#x7EDF;&#x4E2D;&#x5E38;&#x7528;&#x4FE1;&#x53F7;&#xFF1A;<br>
&#xFF08;1&#xFF09;SIGHUP&#xFF1A;&#x7528;&#x6237;&#x4ECE;&#x7EC8;&#x7AEF;&#x6CE8;&#x9500;&#xFF0C;&#x6240;&#x6709;&#x5DF2;&#x542F;&#x52A8;&#x8FDB;&#x7A0B;&#x90FD;&#x5C06;&#x6536;&#x5230;&#x8BE5;&#x8FDB;&#x7A0B;&#x3002;&#x7CFB;&#x7EDF;&#x7F3A;&#x7701;&#x72B6;&#x6001;&#x4E0B;&#x5BF9;&#x8BE5;&#x4FE1;&#x53F7;&#x7684;&#x5904;&#x7406;&#x662F;&#x7EC8;&#x6B62;&#x8FDB;&#x7A0B;&#x3002;<br>
&#xFF08;2&#xFF09;SIGINT&#xFF1A;&#x7A0B;&#x5E8F;&#x7EC8;&#x6B62;&#x4FE1;&#x53F7;&#x3002;&#x7A0B;&#x5E8F;&#x8FD0;&#x884C;&#x8FC7;&#x7A0B;&#x4E2D;&#xFF0C;&#x6309;Ctrl+C&#x952E;&#x5C06;&#x4EA7;&#x751F;&#x8BE5;&#x4FE1;&#x53F7;&#x3002;<br>
&#xFF08;3&#xFF09;SIGQUIT&#xFF1A;&#x7A0B;&#x5E8F;&#x9000;&#x51FA;&#x4FE1;&#x53F7;&#x3002;&#x7A0B;&#x5E8F;&#x8FD0;&#x884C;&#x8FC7;&#x7A0B;&#x4E2D;&#xFF0C;&#x6309;Ctrl+\&#x952E;&#x5C06;&#x4EA7;&#x751F;&#x8BE5;&#x4FE1;&#x53F7;&#x3002;<br>
&#xFF08;4&#xFF09;SIGBUS&#x548C;SIGSEGV&#xFF1A;&#x8FDB;&#x7A0B;&#x8BBF;&#x95EE;&#x975E;&#x6CD5;&#x5730;&#x5740;&#x3002;<br>
&#xFF08;5&#xFF09;SIGFPE&#xFF1A;&#x8FD0;&#x7B97;&#x4E2D;&#x51FA;&#x73B0;&#x81F4;&#x547D;&#x9519;&#x8BEF;&#xFF0C;&#x5982;&#x9664;&#x96F6;&#x64CD;&#x4F5C;&#x3001;&#x6570;&#x636E;&#x6EA2;&#x51FA;&#x7B49;&#x3002;<br>
&#xFF08;6&#xFF09;SIGKILL&#xFF1A;&#x7528;&#x6237;&#x7EC8;&#x6B62;&#x8FDB;&#x7A0B;&#x6267;&#x884C;&#x4FE1;&#x53F7;&#x3002;shell&#x4E0B;&#x6267;&#x884C;kill -9&#x53D1;&#x9001;&#x8BE5;&#x4FE1;&#x53F7;&#x3002;<br>
&#xFF08;7&#xFF09;SIGTERM&#xFF1A;&#x7ED3;&#x675F;&#x8FDB;&#x7A0B;&#x4FE1;&#x53F7;&#x3002;shell&#x4E0B;&#x6267;&#x884C;kill &#x8FDB;&#x7A0B;pid&#x53D1;&#x9001;&#x8BE5;&#x4FE1;&#x53F7;&#x3002;<br>
&#xFF08;8&#xFF09;SIGALRM&#xFF1A;&#x5B9A;&#x65F6;&#x5668;&#x4FE1;&#x53F7;&#x3002;<br>
&#xFF08;9&#xFF09;SIGCLD&#xFF1A;&#x5B50;&#x8FDB;&#x7A0B;&#x9000;&#x51FA;&#x4FE1;&#x53F7;&#x3002;&#x5982;&#x679C;&#x5176;&#x7236;&#x8FDB;&#x7A0B;&#x6CA1;&#x6709;&#x5FFD;&#x7565;&#x8BE5;&#x4FE1;&#x53F7;&#x4E5F;&#x6CA1;&#x6709;&#x5904;&#x7406;&#x8BE5;&#x4FE1;&#x53F7;&#xFF0C;&#x5219;&#x5B50;&#x8FDB;&#x7A0B;&#x9000;&#x51FA;&#x540E;&#x5C06;&#x5F62;&#x6210;&#x50F5;&#x5C38;&#x8FDB;&#x7A0B;&#x3002;</p>
</blockquote>
<p><strong>&#x4FE1;&#x53F7;&#x6765;&#x6E90;</strong><br>
&#x4FE1;&#x53F7;&#x662F;&#x8F6F;&#x4EF6;&#x5C42;&#x6B21;&#x4E0A;&#x5BF9;&#x4E2D;&#x65AD;&#x673A;&#x5236;&#x7684;&#x4E00;&#x79CD;&#x6A21;&#x62DF;&#xFF0C;&#x662F;&#x4E00;&#x79CD;&#x5F02;&#x6B65;&#x901A;&#x4FE1;&#x65B9;&#x5F0F;&#xFF0C;&#x4FE1;&#x53F7;&#x53EF;&#x4EE5;&#x5728;&#x7528;&#x6237;&#x7A7A;&#x95F4;&#x8FDB;&#x7A0B;&#x548C;&#x5185;&#x6838;&#x4E4B;&#x95F4;&#x76F4;&#x63A5;&#x4EA4;&#x4E92;&#xFF0C;&#x5185;&#x6838;&#x53EF;&#x4EE5;&#x5229;&#x7528;&#x4FE1;&#x53F7;&#x6765;&#x901A;&#x77E5;&#x7528;&#x6237;&#x7A7A;&#x95F4;&#x7684;&#x8FDB;&#x7A0B;&#x53D1;&#x751F;&#x4E86;&#x54EA;&#x4E9B;&#x7CFB;&#x7EDF;&#x4E8B;&#x4EF6;&#xFF0C;&#x4FE1;&#x53F7;&#x4E8B;&#x4EF6;&#x4E3B;&#x8981;&#x6709;&#x4E24;&#x4E2A;&#x6765;&#x6E90;&#xFF1A;</p>
<ul>
<li>&#x786C;&#x4EF6;&#x6765;&#x6E90;&#xFF1A;&#x7528;&#x6237;&#x6309;&#x952E;&#x8F93;&#x5165;Ctrl+C&#x9000;&#x51FA;&#x3001;&#x786C;&#x4EF6;&#x5F02;&#x5E38;&#x5982;&#x65E0;&#x6548;&#x7684;&#x5B58;&#x50A8;&#x8BBF;&#x95EE;&#x7B49;&#x3002;</li>
<li>&#x8F6F;&#x4EF6;&#x7EC8;&#x6B62;&#xFF1A;&#x7EC8;&#x6B62;&#x8FDB;&#x7A0B;&#x4FE1;&#x53F7;&#x3001;&#x5176;&#x4ED6;&#x8FDB;&#x7A0B;&#x8C03;&#x7528;kill&#x51FD;&#x6570;&#x3001;&#x8F6F;&#x4EF6;&#x5F02;&#x5E38;&#x4EA7;&#x751F;&#x4FE1;&#x53F7;&#x3002;</li>
</ul>
<p>&#x4E00;&#x65E6;&#x6709;&#x4FE1;&#x53F7;&#x4EA7;&#x751F;&#xFF0C;&#x7528;&#x6237;&#x8FDB;&#x7A0B;&#x5BF9;&#x4FE1;&#x53F7;&#x4EA7;&#x751F;&#x7684;&#x76F8;&#x5E94;&#x6709;&#x4E09;&#x79CD;&#x65B9;&#x5F0F;&#xFF1A;<br>
1&#xFF09;&#x6267;&#x884C;&#x9ED8;&#x8BA4;&#x64CD;&#x4F5C;&#xFF0C;linux&#x5BF9;&#x6BCF;&#x79CD;&#x4FE1;&#x53F7;&#x90FD;&#x89C4;&#x5B9A;&#x4E86;&#x9ED8;&#x8BA4;&#x64CD;&#x4F5C;&#x3002;<br>
2&#xFF09;&#x6355;&#x6349;&#x4FE1;&#x53F7;&#xFF0C;&#x5B9A;&#x4E49;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#xFF0C;&#x5F53;&#x4FE1;&#x53F7;&#x53D1;&#x751F;&#x65F6;&#xFF0C;&#x6267;&#x884C;&#x76F8;&#x5E94;&#x7684;&#x5904;&#x7406;&#x51FD;&#x6570;&#x3002;<br>
3&#xFF09;&#x5FFD;&#x7565;&#x4FE1;&#x53F7;&#xFF0C;&#x5F53;&#x4E0D;&#x5E0C;&#x671B;&#x63A5;&#x6536;&#x5230;&#x7684;&#x4FE1;&#x53F7;&#x5BF9;&#x8FDB;&#x7A0B;&#x7684;&#x6267;&#x884C;&#x4EA7;&#x751F;&#x5F71;&#x54CD;&#xFF0C;&#x800C;&#x8BA9;&#x8FDB;&#x7A0B;&#x7EE7;&#x7EED;&#x6267;&#x884C;&#x65F6;&#xFF0C;&#x53EF;&#x4EE5;&#x5FFD;&#x7565;&#x8BE5;&#x4FE1;&#x53F7;&#xFF0C;&#x5373;&#x4E0D;&#x5BF9;&#x4FE1;&#x53F7;&#x8FDB;&#x7A0B;&#x4F5C;&#x4EFB;&#x4F55;&#x5904;&#x7406;&#x3002;<br>
&#x6709;&#x4E24;&#x4E2A;&#x4FE1;&#x53F7;&#x662F;&#x5E94;&#x7528;&#x8FDB;&#x7A0B;&#x65E0;&#x6CD5;&#x6355;&#x6349;&#x548C;&#x5FFD;&#x7565;&#x7684;&#xFF0C;&#x5373;SIGKILL&#x548C;SEGSTOP&#xFF0C;&#x8FD9;&#x662F;&#x4E3A;&#x4E86;&#x4F7F;&#x7CFB;&#x7EDF;&#x7BA1;&#x7406;&#x5458;&#x80FD;&#x5728;&#x4EFB;&#x4F55;&#x65F6;&#x5019;&#x4E2D;&#x65AD;&#x6216;&#x7ED3;&#x675F;&#x67D0;&#x4E00;&#x7279;&#x5B9A;&#x7684;&#x8FDB;&#x7A0B;&#x3002;</p>
<p><strong>&#x4FE1;&#x53F7;&#x751F;&#x547D;&#x5468;&#x671F;&#x548C;&#x5904;&#x7406;&#x6D41;&#x7A0B;</strong><br>
&#xFF08;1&#xFF09;&#x4FE1;&#x53F7;&#x88AB;&#x67D0;&#x4E2A;&#x8FDB;&#x7A0B;&#x4EA7;&#x751F;&#xFF0C;&#x5E76;&#x8BBE;&#x7F6E;&#x6B64;&#x4FE1;&#x53F7;&#x4F20;&#x9012;&#x7684;&#x5BF9;&#x8C61;&#xFF08;&#x4E00;&#x822C;&#x4E3A;&#x5BF9;&#x5E94;&#x8FDB;&#x7A0B;&#x7684;pid&#xFF09;&#xFF0C;&#x7136;&#x540E;&#x4F20;&#x9012;&#x7ED9;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#xFF1B;<br>
&#xFF08;2&#xFF09;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x6839;&#x636E;&#x63A5;&#x6536;&#x8FDB;&#x7A0B;&#x7684;&#x8BBE;&#x7F6E;&#xFF08;&#x662F;&#x5426;&#x963B;&#x585E;&#xFF09;&#x800C;&#x9009;&#x62E9;&#x6027;&#x7684;&#x53D1;&#x9001;&#x7ED9;&#x63A5;&#x6536;&#x8005;&#xFF0C;&#x5982;&#x679C;&#x63A5;&#x6536;&#x8005;&#x963B;&#x585E;&#x8BE5;&#x4FE1;&#x53F7;&#xFF08;&#x4E14;&#x8BE5;&#x4FE1;&#x53F7;&#x662F;&#x53EF;&#x4EE5;&#x963B;&#x585E;&#x7684;&#xFF09;&#xFF0C;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x5C06;&#x6682;&#x65F6;&#x4FDD;&#x7559;&#x8BE5;&#x4FE1;&#x53F7;&#xFF0C;&#x800C;&#x4E0D;&#x4F20;&#x9012;&#xFF0C;&#x76F4;&#x5230;&#x8BE5;&#x8FDB;&#x7A0B;&#x89E3;&#x9664;&#x4E86;&#x5BF9;&#x6B64;&#x4FE1;&#x53F7;&#x7684;&#x963B;&#x585E;&#xFF08;&#x5982;&#x679C;&#x5BF9;&#x5E94;&#x8FDB;&#x7A0B;&#x5DF2;&#x7ECF;&#x9000;&#x51FA;&#xFF0C;&#x5219;&#x4E22;&#x5F03;&#x6B64;&#x4FE1;&#x53F7;&#xFF09;&#xFF0C;&#x5982;&#x679C;&#x5BF9;&#x5E94;&#x8FDB;&#x7A0B;&#x6CA1;&#x6709;&#x963B;&#x585E;&#xFF0C;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x5C06;&#x4F20;&#x9012;&#x6B64;&#x4FE1;&#x53F7;&#x3002;<br>
&#xFF08;3&#xFF09;&#x76EE;&#x7684;&#x8FDB;&#x7A0B;&#x63A5;&#x6536;&#x5230;&#x6B64;&#x4FE1;&#x53F7;&#x540E;&#xFF0C;&#x5C06;&#x6839;&#x636E;&#x5F53;&#x524D;&#x8FDB;&#x7A0B;&#x5BF9;&#x6B64;&#x4FE1;&#x53F7;&#x8BBE;&#x7F6E;&#x7684;&#x9884;&#x5904;&#x7406;&#x65B9;&#x5F0F;&#xFF0C;&#x6682;&#x65F6;&#x7EC8;&#x6B62;&#x5F53;&#x524D;&#x4EE3;&#x7801;&#x7684;&#x6267;&#x884C;&#xFF0C;&#x4FDD;&#x62A4;&#x4E0A;&#x4E0B;&#x6587;&#xFF08;&#x4E3B;&#x8981;&#x5305;&#x62EC;&#x4E34;&#x65F6;&#x5BC4;&#x5B58;&#x5668;&#x6570;&#x636E;&#xFF0C;&#x5F53;&#x524D;&#x7A0B;&#x5E8F;&#x4F4D;&#x7F6E;&#x4EE5;&#x53CA;&#x5F53;&#x524D;CPU&#x7684;&#x72B6;&#x6001;&#xFF09;&#x3001;&#x8F6C;&#x800C;&#x6267;&#x884C;&#x4E2D;&#x65AD;&#x670D;&#x52A1;&#x7A0B;&#x5E8F;&#xFF0C;&#x6267;&#x884C;&#x5B8C;&#x6210;&#x540E;&#x5728;&#x56DE;&#x590D;&#x5230;&#x4E2D;&#x65AD;&#x7684;&#x4F4D;&#x7F6E;&#x3002;&#x5F53;&#x7136;&#xFF0C;&#x5BF9;&#x4E8E;&#x62A2;&#x5360;&#x5F0F;&#x5185;&#x6838;&#xFF0C;&#x5728;&#x4E2D;&#x65AD;&#x8FD4;&#x56DE;&#x65F6;&#x8FD8;&#x5C06;&#x5F15;&#x53D1;&#x65B0;&#x7684;&#x8C03;&#x5EA6;&#x3002;<br>
<img src="https://hanzhu.dev/content/images/2021/10/cc9ce8ae-0d73-492e-93a2-151fe6b7d3d5.png" alt="cc9ce8ae-0d73-492e-93a2-151fe6b7d3d5" loading="lazy"></p>
<h2 id="6-%E5%85%B1%E4%BA%AB%E5%86%85%E5%AD%98-shared-memory">6. &#x5171;&#x4EAB;&#x5185;&#x5B58;( shared memory )</h2>
<p>&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x5C31;&#x662F;&#x6620;&#x5C04;&#x4E00;&#x6BB5;&#x80FD;&#x88AB;&#x5176;&#x4ED6;&#x8FDB;&#x7A0B;&#x6240;&#x8BBF;&#x95EE;&#x7684;&#x5185;&#x5B58;&#xFF0C;&#x8FD9;&#x6BB5;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x7531;&#x4E00;&#x4E2A;&#x8FDB;&#x7A0B;&#x521B;&#x5EFA;&#xFF0C;&#x4F46;&#x591A;&#x4E2A;&#x8FDB;&#x7A0B;&#x90FD;&#x53EF;&#x4EE5;&#x8BBF;&#x95EE;&#x3002;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x662F;&#x6700;&#x5FEB;&#x7684; IPC &#x65B9;&#x5F0F;&#xFF0C;&#x5B83;&#x662F;&#x9488;&#x5BF9;&#x5176;&#x4ED6;&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x65B9;&#x5F0F;&#x8FD0;&#x884C;&#x6548;&#x7387;&#x4F4E;&#x800C;&#x4E13;&#x95E8;&#x8BBE;&#x8BA1;&#x7684;&#x3002;&#x5B83;&#x5F80;&#x5F80;&#x4E0E;&#x5176;&#x4ED6;&#x901A;&#x4FE1;&#x673A;&#x5236;&#xFF0C;&#x5982;&#x4FE1;&#x53F7;&#x91CF;&#xFF0C;&#x914D;&#x5408;&#x4F7F;&#x7528;&#xFF0C;&#x6765;&#x5B9E;&#x73B0;&#x8FDB;&#x7A0B;&#x95F4;&#x7684;&#x540C;&#x6B65;&#x548C;&#x901A;&#x4FE1;&#x3002;<br>
<img src="https://hanzhu.dev/content/images/2021/10/56b7ebc3-7663-4d6c-9152-deb34ded5fad.png" alt="56b7ebc3-7663-4d6c-9152-deb34ded5fad" loading="lazy"></p>
<ul>
<li>&#x4F7F;&#x5F97;&#x591A;&#x4E2A;&#x8FDB;&#x7A0B;&#x53EF;&#x4EE5;&#x8BBF;&#x95EE;&#x540C;&#x4E00;&#x5757;&#x5185;&#x5B58;&#x7A7A;&#x95F4;&#xFF0C;&#x662F;&#x6700;&#x5FEB;&#x7684;&#x53EF;&#x7528;IPC&#x5F62;&#x5F0F;&#x3002;&#x662F;&#x9488;&#x5BF9;&#x5176;&#x4ED6;&#x901A;&#x4FE1;&#x673A;&#x5236;&#x8FD0;&#x884C;&#x6548;&#x7387;&#x8F83;&#x4F4E;&#x800C;&#x8BBE;&#x8BA1;&#x7684;&#x3002;</li>
<li>&#x4E3A;&#x4E86;&#x5728;&#x591A;&#x4E2A;&#x8FDB;&#x7A0B;&#x95F4;&#x4EA4;&#x6362;&#x4FE1;&#x606F;&#xFF0C;&#x5185;&#x6838;&#x4E13;&#x95E8;&#x7559;&#x51FA;&#x4E86;&#x4E00;&#x5757;&#x5185;&#x5B58;&#x533A;&#xFF0C;&#x53EF;&#x4EE5;&#x7531;&#x9700;&#x8981;&#x8BBF;&#x95EE;&#x7684;&#x8FDB;&#x7A0B;&#x5C06;&#x5176;&#x6620;&#x5C04;&#x5230;&#x81EA;&#x5DF1;&#x7684;&#x79C1;&#x6709;&#x5730;&#x5740;&#x7A7A;&#x95F4;&#x3002;&#x8FDB;&#x7A0B;&#x5C31;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x8BFB;&#x5199;&#x8FD9;&#x4E00;&#x5757;&#x5185;&#x5B58;&#x800C;&#x4E0D;&#x9700;&#x8981;&#x8FDB;&#x884C;&#x6570;&#x636E;&#x7684;&#x62F7;&#x8D1D;&#xFF0C;&#x4ECE;&#x800C;&#x5927;&#x5927;&#x63D0;&#x9AD8;&#x6548;&#x7387;&#x3002;</li>
<li>&#x7531;&#x4E8E;&#x591A;&#x4E2A;&#x8FDB;&#x7A0B;&#x5171;&#x4EAB;&#x4E00;&#x6BB5;&#x5185;&#x5B58;&#xFF0C;&#x56E0;&#x6B64;&#x9700;&#x8981;&#x4F9D;&#x9760;&#x67D0;&#x79CD;&#x540C;&#x6B65;&#x673A;&#x5236;&#xFF08;&#x5982;&#x4FE1;&#x53F7;&#x91CF;&#xFF09;&#x6765;&#x8FBE;&#x5230;&#x8FDB;&#x7A0B;&#x95F4;&#x7684;&#x540C;&#x6B65;&#x53CA;&#x4E92;&#x65A5;&#x3002;<br>
<img src="https://hanzhu.dev/content/images/2021/10/1341a49e-60e6-492a-b109-2d3ec5affc9c.png" alt="1341a49e-60e6-492a-b109-2d3ec5affc9c" loading="lazy"><br>
<strong>&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x7684;&#x4F18;&#x7F3A;&#x70B9;&#xFF1A;</strong><br>
1&#x3001;&#x4F18;&#x70B9;&#xFF1A;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x4F7F;&#x7528;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x8FDB;&#x884C;&#x8FDB;&#x7A0B;&#x95F4;&#x7684;&#x901A;&#x4FE1;&#x771F;&#x7684;&#x662F;&#x975E;&#x5E38;&#x65B9;&#x4FBF;&#xFF0C;&#x800C;&#x4E14;&#x51FD;&#x6570;&#x7684;&#x63A5;&#x53E3;&#x4E5F;&#x7B80;&#x5355;&#xFF0C;&#x6570;&#x636E;&#x7684;&#x5171;&#x4EAB;&#x8FD8;&#x4F7F;&#x8FDB;&#x7A0B;&#x95F4;&#x7684;&#x6570;&#x636E;&#x4E0D;&#x7528;&#x4F20;&#x9001;&#xFF0C;&#x800C;&#x662F;&#x76F4;&#x63A5;&#x8BBF;&#x95EE;&#x5185;&#x5B58;&#xFF0C;&#x4E5F;&#x52A0;&#x5FEB;&#x4E86;&#x7A0B;&#x5E8F;&#x7684;&#x6548;&#x7387;&#x3002;&#x540C;&#x65F6;&#xFF0C;&#x5B83;&#x4E5F;&#x4E0D;&#x50CF;&#x533F;&#x540D;&#x7BA1;&#x9053;&#x90A3;&#x6837;&#x8981;&#x6C42;&#x901A;&#x4FE1;&#x7684;&#x8FDB;&#x7A0B;&#x6709;&#x4E00;&#x5B9A;&#x7684;&#x7236;&#x5B50;&#x5173;&#x7CFB;&#x3002;<br>
2&#x3001;&#x7F3A;&#x70B9;&#xFF1A;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x6CA1;&#x6709;&#x63D0;&#x4F9B;&#x540C;&#x6B65;&#x7684;&#x673A;&#x5236;&#xFF0C;&#x8FD9;&#x4F7F;&#x5F97;&#x6211;&#x4EEC;&#x5728;&#x4F7F;&#x7528;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x8FDB;&#x884C;&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x65F6;&#xFF0C;&#x5F80;&#x5F80;&#x8981;&#x501F;&#x52A9;&#x5176;&#x4ED6;&#x7684;&#x624B;&#x6BB5;&#x6765;&#x8FDB;&#x884C;&#x8FDB;&#x7A0B;&#x95F4;&#x7684;&#x540C;&#x6B65;&#x5DE5;&#x4F5C;&#x3002;</li>
</ul>
<p>&#x91C7;&#x7528;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x8FDB;&#x884C;&#x901A;&#x4FE1;&#x7684;&#x4E00;&#x4E2A;&#x4E3B;&#x8981;&#x597D;&#x5904;&#x662F;&#x6548;&#x7387;&#x9AD8;&#xFF0C;&#x56E0;&#x4E3A;&#x8FDB;&#x7A0B;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x8BFB;&#x5199;&#x5185;&#x5B58;&#xFF0C;&#x800C;&#x4E0D;&#x9700;&#x8981;&#x4EFB;&#x4F55;&#x6570;&#x636E;&#x7684;&#x62F7;&#x8D1D;&#xFF0C;&#x5BF9;&#x4E8E;&#x50CF;&#x7BA1;&#x9053;&#x548C;&#x6D88;&#x606F;&#x961F;&#x91CC;&#x7B49;&#x901A;&#x4FE1;&#x65B9;&#x5F0F;&#xFF0C;<strong>&#x5219;&#x9700;&#x8981;&#x5728;&#x5185;&#x6838;&#x548C;&#x7528;&#x6237;&#x7A7A;&#x95F4;&#x8FDB;&#x884C;&#x56DB;&#x6B21;&#x7684;&#x6570;&#x636E;&#x62F7;&#x8D1D;&#xFF0C;&#x800C;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x5219;&#x53EA;&#x62F7;&#x8D1D;&#x4E24;&#x6B21;&#xFF1A;&#x4E00;&#x6B21;&#x4ECE;&#x8F93;&#x5165;&#x6587;&#x4EF6;&#x5230;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x533A;&#xFF0C;&#x53E6;&#x4E00;&#x6B21;&#x4ECE;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x5230;&#x8F93;&#x51FA;&#x6587;&#x4EF6;&#x3002;</strong><br>
&#x4E00;&#x822C;&#x800C;&#x8A00;&#xFF0C;&#x8FDB;&#x7A0B;&#x4E4B;&#x95F4;&#x5728;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x65F6;&#xFF0C;&#x5E76;&#x4E0D;&#x603B;&#x662F;&#x8BFB;&#x5199;&#x5C11;&#x91CF;&#x6570;&#x636E;&#x540E;&#x5C31;&#x89E3;&#x9664;&#x6620;&#x5C04;&#xFF0C;&#x6709;&#x65B0;&#x7684;&#x901A;&#x4FE1;&#x65F6;&#x5728;&#x91CD;&#x65B0;&#x5EFA;&#x7ACB;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x533A;&#x57DF;&#xFF1B;&#x800C;&#x662F;&#x4FDD;&#x6301;&#x5171;&#x4EAB;&#x533A;&#x57DF;&#xFF0C;&#x76F4;&#x5230;&#x901A;&#x4FE1;&#x5B8C;&#x6BD5;&#x4E3A;&#x6B62;&#xFF0C;&#x8FD9;&#x6837;&#xFF0C;&#x6570;&#x636E;&#x5185;&#x5BB9;&#x4E00;&#x76F4;&#x4FDD;&#x5B58;&#x5728;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x4E2D;&#xFF0C;&#x5E76;&#x6CA1;&#x6709;&#x5199;&#x56DE;&#x6587;&#x4EF6;&#x3002;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x4E2D;&#x7684;&#x5185;&#x5BB9;&#x5F80;&#x5F80;&#x662F;&#x5728;&#x89E3;&#x9664;&#x6620;&#x5C04;&#x65F6;&#x624D;&#x5199;&#x56DE;&#x6587;&#x4EF6;&#xFF0C;&#x56E0;&#x6B64;&#xFF0C;&#x91C7;&#x7528;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x7684;&#x901A;&#x4FE1;&#x65B9;&#x5F0F;&#x6548;&#x7387;&#x975E;&#x5E38;&#x9AD8;&#x3002;</p>
<table>
<thead>
<tr>
<th>&#x7C7B;&#x578B;</th>
<th>&#x539F;&#x7406;</th>
<th>&#x6613;&#x5931;&#x6027;</th>
</tr>
</thead>
<tbody>
<tr>
<td>mmap</td>
<td>&#x5229;&#x7528;&#x6587;&#x4EF6;(open)&#x6620;&#x5C04;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x533A;&#x57DF;</td>
<td>&#x4F1A;&#x4FDD;&#x5B58;&#x5728;&#x78C1;&#x76D8;&#x4E0A;&#xFF0C;&#x4E0D;&#x4F1A;&#x4E22;&#x5931;</td>
</tr>
<tr>
<td>Posix shared memory</td>
<td>&#x5229;&#x7528;/dev/shm&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;(mmap)&#x6620;&#x5C04;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x533A;&#x57DF;</td>
<td>&#x968F;&#x5185;&#x6838;&#x6301;&#x7EED;&#xFF0C;&#x5185;&#x6838;&#x81EA;&#x4E3E;&#x540E;&#x4F1A;&#x4E22;&#x5931;</td>
</tr>
<tr>
<td>SystemV shared memory</td>
<td>&#x5229;&#x7528;/dev/shm&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;(shmat)&#x6620;&#x5C04;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x533A;&#x57DF;</td>
<td>&#x968F;&#x5185;&#x6838;&#x6301;&#x7EED;&#xFF0C;&#x5185;&#x6838;&#x81EA;&#x4E3E;&#x540E;&#x4F1A;&#x4E22;&#x5931;</td>
</tr>
</tbody>
</table>
<p>&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x6709;&#x4E24;&#x79CD;&#x5B9E;&#x73B0;&#x65B9;&#x5F0F;&#xFF1A;<strong>1&#x3001;&#x5185;&#x5B58;&#x6620;&#x5C04; 2&#x3001;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x673A;&#x5236;</strong><br>
<strong>1&#x3001;&#x5185;&#x5B58;&#x6620;&#x5C04;</strong><br>
&#x5185;&#x5B58;&#x6620;&#x5C04; memory map&#x673A;&#x5236;&#x4F7F;&#x8FDB;&#x7A0B;&#x4E4B;&#x95F4;&#x901A;&#x8FC7;&#x6620;&#x5C04;&#x540C;&#x4E00;&#x4E2A;&#x666E;&#x901A;&#x6587;&#x4EF6;&#x5B9E;&#x73B0;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#xFF0C;&#x901A;&#x8FC7;mmap()&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x5B9E;&#x73B0;&#x3002;&#x666E;&#x901A;&#x6587;&#x4EF6;&#x88AB;&#x6620;&#x5C04;&#x5230;&#x8FDB;&#x7A0B;&#x5730;&#x5740;&#x7A7A;&#x95F4;&#x540E;&#xFF0C;&#x8FDB;&#x7A0B;&#x53EF;&#x4EE5;&#x50CF;&#x8BBF;&#x95EE;&#x666E;&#x901A;&#x5185;&#x5B58;&#x4E00;&#x6837;&#x5BF9;&#x6587;&#x4EF6;&#x8FDB;&#x884C;&#x8BBF;&#x95EE;&#xFF0C;&#x4E0D;&#x5FC5;&#x518D;&#x8C03;&#x7528;read/write&#x7B49;&#x6587;&#x4EF6;&#x64CD;&#x4F5C;&#x51FD;&#x6570;&#x3002;<br>
<strong>2&#x3001;UNIX System V&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x673A;&#x5236;</strong><br>
IPC&#x7684;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x6307;&#x7684;&#x662F;&#x628A;&#x6240;&#x6709;&#x7684;&#x5171;&#x4EAB;&#x6570;&#x636E;&#x653E;&#x5728;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x533A;&#x57DF;&#xFF08;IPC shared memory region&#xFF09;&#xFF0C;&#x4EFB;&#x4F55;&#x60F3;&#x8981;&#x8BBF;&#x95EE;&#x8BE5;&#x6570;&#x636E;&#x7684;&#x8FDB;&#x7A0B;&#x90FD;&#x5FC5;&#x987B;&#x5728;&#x672C;&#x8FDB;&#x7A0B;&#x7684;&#x5730;&#x5740;&#x7A7A;&#x95F4;&#x65B0;&#x589E;&#x4E00;&#x5757;&#x5185;&#x5B58;&#x533A;&#x57DF;&#xFF0C;&#x7528;&#x6765;&#x6620;&#x5C04;&#x5B58;&#x653E;&#x5171;&#x4EAB;&#x6570;&#x636E;&#x7684;&#x7269;&#x7406;&#x5185;&#x5B58;&#x9875;&#x9762;&#x3002;<br>
&#x548C;&#x524D;&#x9762;&#x7684;mmap&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x901A;&#x8FC7;&#x6620;&#x5C04;&#x4E00;&#x4E2A;&#x666E;&#x901A;&#x6587;&#x4EF6;&#x5B9E;&#x73B0;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x4E0D;&#x540C;&#xFF0C;UNIX system V&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x662F;&#x901A;&#x8FC7;&#x6620;&#x5C04;&#x7279;&#x6B8A;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;shm&#x4E2D;&#x7684;&#x6587;&#x4EF6;&#x5B9E;&#x73B0;&#x8FDB;&#x7A0B;&#x95F4;&#x7684;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x901A;&#x4FE1;&#x3002;</p>
<p><a href="https://www.cnblogs.com/linuxbug/p/4882776.html">&#x5EF6;&#x4F38;&#x9605;&#x8BFB;&#xFF1A;Linux&#x652F;&#x6301;&#x7684;&#x4E3B;&#x8981;&#x4E09;&#x79CD;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x65B9;&#x5F0F;&#xFF1A;mmap()&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x3001;Posix&#x5171;&#x4EAB;&#x5185;&#x5B58;&#xFF0C;&#x4EE5;&#x53CA;System V&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x5B9E;&#x8DF5;</a></p>
<h2 id="7-%E5%A5%97%E6%8E%A5%E5%AD%97-socket">7. &#x5957;&#x63A5;&#x5B57;( socket )</h2>
<p>&#x5957;&#x63A5;&#x5B57;&#x4E5F;&#x662F;&#x4E00;&#x79CD;&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x673A;&#x5236;&#xFF0C;&#x4E0E;&#x5176;&#x4ED6;&#x901A;&#x4FE1;&#x673A;&#x5236;&#x4E0D;&#x540C;&#x7684;&#x662F;&#xFF0C;&#x5B83;&#x53EF;&#x7528;&#x4E8E;&#x4E0D;&#x540C;&#x673A;&#x5668;&#x95F4;&#x7684;&#x8FDB;&#x7A0B;&#x901A;&#x4FE1;<br>
&#x66F4;&#x4E3A;&#x4E00;&#x822C;&#x7684;&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x673A;&#x5236;&#xFF0C;&#x53EF;&#x7528;&#x4E8E;&#x4E0D;&#x540C;&#x673A;&#x5668;&#x4E4B;&#x95F4;&#x7684;&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x3002;&#x8D77;&#x521D;&#x662F;&#x7531;Unix&#x7CFB;&#x7EDF;&#x7684;BSD&#x5206;&#x652F;&#x5F00;&#x53D1;&#x51FA;&#x6765;&#x7684;&#xFF0C;&#x4F46;&#x73B0;&#x5728;&#x4E00;&#x822C;&#x53EF;&#x4EE5;&#x79FB;&#x690D;&#x5230;&#x5176;&#x5B83;&#x7C7B;Unix&#x7CFB;&#x7EDF;&#x4E0A;&#xFF1A;Linux&#x548C;System V&#x7684;&#x53D8;&#x79CD;&#x90FD;&#x652F;&#x6301;&#x5957;&#x63A5;&#x5B57;&#x3002;</p>
<p>&#x5957;&#x63A5;&#x5B57;&#x662F;&#x4E00;&#x79CD;&#x901A;&#x4FE1;&#x673A;&#x5236;&#xFF0C;&#x51ED;&#x501F;&#x8FD9;&#x79CD;&#x673A;&#x5236;&#xFF0C;&#x5BA2;&#x6237;/&#x670D;&#x52A1;&#x5668;&#xFF08;&#x5373;&#x8981;&#x8FDB;&#x884C;&#x901A;&#x4FE1;&#x7684;&#x8FDB;&#x7A0B;&#xFF09;&#x7CFB;&#x7EDF;&#x7684;&#x5F00;&#x53D1;&#x5DE5;&#x4F5C;&#x65E2;&#x53EF;&#x4EE5;&#x5728;&#x672C;&#x5730;&#x5355;&#x673A;&#x4E0A;&#x8FDB;&#x884C;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x8DE8;&#x7F51;&#x7EDC;&#x8FDB;&#x884C;&#x3002;&#x4E5F;&#x5C31;&#x662F;&#x8BF4;&#x5B83;&#x53EF;&#x4EE5;&#x8BA9;&#x4E0D;&#x5728;&#x540C;&#x4E00;&#x53F0;&#x8BA1;&#x7B97;&#x673A;&#x4F46;&#x901A;&#x8FC7;&#x7F51;&#x7EDC;&#x8FDE;&#x63A5;&#x8BA1;&#x7B97;&#x673A;&#x4E0A;&#x7684;&#x8FDB;&#x7A0B;&#x8FDB;&#x884C;&#x901A;&#x4FE1;&#x3002;<br>
<img src="https://hanzhu.dev/content/images/2021/10/f56b5dcb-792f-4d45-91ad-539c12db4d59.png" alt="f56b5dcb-792f-4d45-91ad-539c12db4d59" loading="lazy"><br>
<img src="https://hanzhu.dev/content/images/2021/10/ee281a86-ebd3-47be-bdcc-266be1461618.png" alt="ee281a86-ebd3-47be-bdcc-266be1461618" loading="lazy"></p>
<p>&#x5957;&#x63A5;&#x5B57;&#x662F;&#x652F;&#x6301;TCP/IP&#x7684;&#x7F51;&#x7EDC;&#x901A;&#x4FE1;&#x7684;&#x57FA;&#x672C;&#x64CD;&#x4F5C;&#x5355;&#x5143;&#xFF0C;&#x53EF;&#x4EE5;&#x770B;&#x505A;&#x662F;&#x4E0D;&#x540C;&#x4E3B;&#x673A;&#x4E4B;&#x95F4;&#x7684;&#x8FDB;&#x7A0B;&#x8FDB;&#x884C;&#x53CC;&#x5411;&#x901A;&#x4FE1;&#x7684;&#x7AEF;&#x70B9;&#xFF0C;&#x7B80;&#x5355;&#x7684;&#x8BF4;&#x5C31;&#x662F;&#x901A;&#x4FE1;&#x7684;&#x4E24;&#x65B9;&#x7684;&#x4E00;&#x79CD;&#x7EA6;&#x5B9A;&#xFF0C;&#x7528;&#x5957;&#x63A5;&#x5B57;&#x4E2D;&#x7684;&#x76F8;&#x5173;&#x51FD;&#x6570;&#x6765;&#x5B8C;&#x6210;&#x901A;&#x4FE1;&#x8FC7;&#x7A0B;&#x3002;</p>
<p><strong>&#x5957;&#x63A5;&#x5B57;&#x7279;&#x6027;</strong><br>
&#x5957;&#x63A5;&#x5B57;&#x7684;&#x7279;&#x6027;&#x7531;3&#x4E2A;&#x5C5E;&#x6027;&#x786E;&#x5B9A;&#xFF0C;&#x5B83;&#x4EEC;&#x5206;&#x522B;&#x662F;&#xFF1A;&#x57DF;&#x3001;&#x7AEF;&#x53E3;&#x53F7;&#x3001;&#x534F;&#x8BAE;&#x7C7B;&#x578B;&#x3002;<br>
<strong>&#xFF08;1&#xFF09;&#x5957;&#x63A5;&#x5B57;&#x7684;&#x57DF;</strong><br>
&#x5B83;&#x6307;&#x5B9A;&#x5957;&#x63A5;&#x5B57;&#x901A;&#x4FE1;&#x4E2D;&#x4F7F;&#x7528;&#x7684;&#x7F51;&#x7EDC;&#x4ECB;&#x8D28;&#xFF0C;&#x6700;&#x5E38;&#x89C1;&#x7684;&#x5957;&#x63A5;&#x5B57;&#x57DF;&#x6709;&#x4E24;&#x79CD;&#xFF1A;<br>
<strong>&#x4E00;&#x662F;AF_INET&#xFF0C;&#x5B83;&#x6307;&#x7684;&#x662F;Internet&#x7F51;&#x7EDC;</strong>&#x3002;&#x5F53;&#x5BA2;&#x6237;&#x4F7F;&#x7528;&#x5957;&#x63A5;&#x5B57;&#x8FDB;&#x884C;&#x8DE8;&#x7F51;&#x7EDC;&#x7684;&#x8FDE;&#x63A5;&#x65F6;&#xFF0C;&#x5B83;&#x5C31;&#x9700;&#x8981;&#x7528;&#x5230;&#x670D;&#x52A1;&#x5668;&#x8BA1;&#x7B97;&#x673A;&#x7684;IP&#x5730;&#x5740;&#x548C;&#x7AEF;&#x53E3;&#x6765;&#x6307;&#x5B9A;&#x4E00;&#x53F0;&#x8054;&#x7F51;&#x673A;&#x5668;&#x4E0A;&#x7684;&#x67D0;&#x4E2A;&#x7279;&#x5B9A;&#x670D;&#x52A1;&#xFF0C;&#x6240;&#x4EE5;&#x5728;&#x4F7F;&#x7528;socket&#x4F5C;&#x4E3A;&#x901A;&#x4FE1;&#x7684;&#x7EC8;&#x70B9;&#xFF0C;&#x670D;&#x52A1;&#x5668;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x5FC5;&#x987B;&#x5728;&#x5F00;&#x59CB;&#x901A;&#x4FE1;&#x4E4B;&#x524D;&#x7ED1;&#x5B9A;&#x4E00;&#x4E2A;&#x7AEF;&#x53E3;&#xFF0C;&#x670D;&#x52A1;&#x5668;&#x5728;&#x6307;&#x5B9A;&#x7684;&#x7AEF;&#x53E3;&#x7B49;&#x5F85;&#x5BA2;&#x6237;&#x7684;&#x8FDE;&#x63A5;&#x3002;<br>
&#x53E6;&#x4E00;&#x4E2A;&#x57DF;AF_UNIX&#xFF0C;&#x8868;&#x793A;UNIX&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#xFF0C;&#x5B83;&#x5C31;&#x662F;&#x6587;&#x4EF6;&#x8F93;&#x5165;/&#x8F93;&#x51FA;&#xFF0C;&#x800C;&#x5B83;&#x7684;&#x5730;&#x5740;&#x5C31;&#x662F;&#x6587;&#x4EF6;&#x540D;&#x3002;<br>
<strong>&#xFF08;2&#xFF09;&#x5957;&#x63A5;&#x5B57;&#x7684;&#x7AEF;&#x53E3;&#x53F7;</strong><br>
&#x6BCF;&#x4E00;&#x4E2A;&#x57FA;&#x4E8E;TCP/IP&#x7F51;&#x7EDC;&#x901A;&#x8BAF;&#x7684;&#x7A0B;&#x5E8F;(&#x8FDB;&#x7A0B;)&#x90FD;&#x88AB;&#x8D4B;&#x4E88;&#x4E86;&#x552F;&#x4E00;&#x7684;&#x7AEF;&#x53E3;&#x548C;&#x7AEF;&#x53E3;&#x53F7;&#xFF0C;&#x7AEF;&#x53E3;&#x662F;&#x4E00;&#x4E2A;&#x4FE1;&#x606F;&#x7F13;&#x51B2;&#x533A;&#xFF0C;&#x7528;&#x4E8E;&#x4FDD;&#x7559;Socket&#x4E2D;&#x7684;&#x8F93;&#x5165;/&#x8F93;&#x51FA;&#x4FE1;&#x606F;&#xFF0C;&#x7AEF;&#x53E3;&#x53F7;&#x662F;&#x4E00;&#x4E2A;16&#x4F4D;&#x65E0;&#x7B26;&#x53F7;&#x6574;&#x6570;&#xFF0C;&#x8303;&#x56F4;&#x662F;0-65535&#xFF0C;&#x4EE5;&#x533A;&#x522B;&#x4E3B;&#x673A;&#x4E0A;&#x7684;&#x6BCF;&#x4E00;&#x4E2A;&#x7A0B;&#x5E8F;&#xFF08;&#x7AEF;&#x53E3;&#x53F7;&#x5C31;&#x50CF;&#x623F;&#x5C4B;&#x4E2D;&#x7684;&#x623F;&#x95F4;&#x53F7;&#xFF09;&#xFF0C;&#x4F4E;&#x4E8E;256&#x7684;&#x7AEF;&#x53E3;&#x53F7;&#x4FDD;&#x7559;&#x7ED9;&#x6807;&#x51C6;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#xFF0C;&#x6BD4;&#x5982;pop3&#x7684;&#x7AEF;&#x53E3;&#x53F7;&#x5C31;&#x662F;110&#xFF0C;&#x6BCF;&#x4E00;&#x4E2A;&#x5957;&#x63A5;&#x5B57;&#x90FD;&#x7EC4;&#x5408;&#x8FDB;&#x4E86;IP&#x5730;&#x5740;&#x3001;&#x7AEF;&#x53E3;&#xFF0C;&#x8FD9;&#x6837;&#x5F62;&#x6210;&#x7684;&#x6574;&#x4F53;&#x5C31;&#x53EF;&#x4EE5;&#x533A;&#x522B;&#x6BCF;&#x4E00;&#x4E2A;&#x5957;&#x63A5;&#x5B57;&#x3002;<br>
<strong>&#xFF08;3&#xFF09;&#x5957;&#x63A5;&#x5B57;&#x534F;&#x8BAE;&#x7C7B;&#x578B;</strong><br>
&#x56E0;&#x7279;&#x7F51;&#x63D0;&#x4F9B;&#x4E09;&#x79CD;&#x901A;&#x4FE1;&#x673A;&#x5236;&#xFF0C;<br>
<strong>&#x4E00;&#x662F;&#x6D41;&#x5957;&#x63A5;&#x5B57;</strong>&#xFF0C;&#x6D41;&#x5957;&#x63A5;&#x5B57;&#x5728;&#x57DF;&#x4E2D;&#x901A;&#x8FC7;TCP/IP&#x8FDE;&#x63A5;&#x5B9E;&#x73B0;&#xFF0C;&#x540C;&#x65F6;&#x4E5F;&#x662F;AF_UNIX&#x4E2D;&#x5E38;&#x7528;&#x7684;&#x5957;&#x63A5;&#x5B57;&#x7C7B;&#x578B;&#x3002;&#x6D41;&#x5957;&#x63A5;&#x5B57;&#x63D0;&#x4F9B;&#x7684;&#x662F;&#x4E00;&#x4E2A;&#x6709;&#x5E8F;&#x3001;&#x53EF;&#x9760;&#x3001;&#x53CC;&#x5411;&#x5B57;&#x8282;&#x6D41;&#x7684;&#x8FDE;&#x63A5;&#xFF0C;&#x56E0;&#x6B64;&#x53D1;&#x9001;&#x7684;&#x6570;&#x636E;&#x53EF;&#x4EE5;&#x786E;&#x4FDD;&#x4E0D;&#x4F1A;&#x4E22;&#x5931;&#x3001;&#x91CD;&#x590D;&#x6216;&#x4E71;&#x5E8F;&#x5230;&#x8FBE;&#xFF0C;&#x800C;&#x4E14;&#x5B83;&#x8FD8;&#x6709;&#x4E00;&#x5B9A;&#x7684;&#x51FA;&#x9519;&#x540E;&#x91CD;&#x65B0;&#x53D1;&#x9001;&#x7684;&#x673A;&#x5236;&#x3002;<br>
<strong>&#x4E8C;&#x4E2A;&#x662F;&#x6570;&#x636E;&#x62A5;&#x5957;&#x63A5;&#x5B57;</strong>&#xFF0C;&#x5B83;&#x4E0D;&#x9700;&#x8981;&#x5EFA;&#x7ACB;&#x8FDE;&#x63A5;&#x548C;&#x7EF4;&#x6301;&#x4E00;&#x4E2A;&#x8FDE;&#x63A5;&#xFF0C;&#x5B83;&#x4EEC;&#x5728;&#x57DF;&#x4E2D;&#x901A;&#x5E38;&#x662F;&#x901A;&#x8FC7;UDP/IP&#x534F;&#x8BAE;&#x5B9E;&#x73B0;&#x7684;&#x3002;&#x5B83;&#x5BF9;&#x53EF;&#x4EE5;&#x53D1;&#x9001;&#x7684;&#x6570;&#x636E;&#x7684;&#x957F;&#x5EA6;&#x6709;&#x9650;&#x5236;&#xFF0C;&#x6570;&#x636E;&#x62A5;&#x4F5C;&#x4E3A;&#x4E00;&#x4E2A;&#x5355;&#x72EC;&#x7684;&#x7F51;&#x7EDC;&#x6D88;&#x606F;&#x88AB;&#x4F20;&#x8F93;,&#x5B83;&#x53EF;&#x80FD;&#x4F1A;&#x4E22;&#x5931;&#x3001;&#x590D;&#x5236;&#x6216;&#x9519;&#x4E71;&#x5230;&#x8FBE;&#xFF0C;UDP&#x4E0D;&#x662F;&#x4E00;&#x4E2A;&#x53EF;&#x9760;&#x7684;&#x534F;&#x8BAE;&#xFF0C;&#x4F46;&#x662F;&#x5B83;&#x7684;&#x901F;&#x5EA6;&#x6BD4;&#x8F83;&#x9AD8;&#xFF0C;&#x56E0;&#x4E3A;&#x5B83;&#x5E76;&#x4E00;&#x9700;&#x8981;&#x603B;&#x662F;&#x8981;&#x5EFA;&#x7ACB;&#x548C;&#x7EF4;&#x6301;&#x4E00;&#x4E2A;&#x8FDE;&#x63A5;&#x3002;<br>
<strong>&#x4E09;&#x662F;&#x539F;&#x59CB;&#x5957;&#x63A5;&#x5B57;</strong>&#xFF0C;&#x539F;&#x59CB;&#x5957;&#x63A5;&#x5B57;&#x5141;&#x8BB8;&#x5BF9;&#x8F83;&#x4F4E;&#x5C42;&#x6B21;&#x7684;&#x534F;&#x8BAE;&#x76F4;&#x63A5;&#x8BBF;&#x95EE;&#xFF0C;&#x6BD4;&#x5982;IP&#x3001; ICMP&#x534F;&#x8BAE;&#xFF0C;&#x5B83;&#x5E38;&#x7528;&#x4E8E;&#x68C0;&#x9A8C;&#x65B0;&#x7684;&#x534F;&#x8BAE;&#x5B9E;&#x73B0;&#xFF0C;&#x6216;&#x8005;&#x8BBF;&#x95EE;&#x73B0;&#x6709;&#x670D;&#x52A1;&#x4E2D;&#x914D;&#x7F6E;&#x7684;&#x65B0;&#x8BBE;&#x5907;&#xFF0C;&#x56E0;&#x4E3A;RAW SOCKET&#x53EF;&#x4EE5;&#x81EA;&#x5982;&#x5730;&#x63A7;&#x5236;Windows&#x4E0B;&#x7684;&#x591A;&#x79CD;&#x534F;&#x8BAE;&#xFF0C;&#x80FD;&#x591F;&#x5BF9;&#x7F51;&#x7EDC;&#x5E95;&#x5C42;&#x7684;&#x4F20;&#x8F93;&#x673A;&#x5236;&#x8FDB;&#x884C;&#x63A7;&#x5236;&#xFF0C;&#x6240;&#x4EE5;&#x53EF;&#x4EE5;&#x5E94;&#x7528;&#x539F;&#x59CB;&#x5957;&#x63A5;&#x5B57;&#x6765;&#x64CD;&#x7EB5;&#x7F51;&#x7EDC;&#x5C42;&#x548C;&#x4F20;&#x8F93;&#x5C42;&#x5E94;&#x7528;&#x3002;&#x6BD4;&#x5982;&#xFF0C;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;RAW SOCKET&#x6765;&#x63A5;&#x6536;&#x53D1;&#x5411;&#x672C;&#x673A;&#x7684;ICMP&#x3001;IGMP&#x534F;&#x8BAE;&#x5305;&#xFF0C;&#x6216;&#x8005;&#x63A5;&#x6536;TCP/IP&#x6808;&#x4E0D;&#x80FD;&#x591F;&#x5904;&#x7406;&#x7684;IP&#x5305;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x7528;&#x6765;&#x53D1;&#x9001;&#x4E00;&#x4E9B;&#x81EA;&#x5B9A;&#x5305;&#x5934;&#x6216;&#x81EA;&#x5B9A;&#x534F;&#x8BAE;&#x7684;IP&#x5305;&#x3002;&#x7F51;&#x7EDC;&#x76D1;&#x542C;&#x6280;&#x672F;&#x5F88;&#x5927;&#x7A0B;&#x5EA6;&#x4E0A;&#x4F9D;&#x8D56;&#x4E8E;SOCKET_RAW&#x3002;</p>
<blockquote>
<p>&#x539F;&#x59CB;&#x5957;&#x63A5;&#x5B57;&#x4E0E;&#x6807;&#x51C6;&#x5957;&#x63A5;&#x5B57;&#x7684;&#x533A;&#x522B;&#x5728;&#x4E8E;&#xFF1A;<br>
&#x539F;&#x59CB;&#x5957;&#x63A5;&#x5B57;&#x53EF;&#x4EE5;&#x8BFB;&#x5199;&#x5185;&#x6838;&#x6CA1;&#x6709;&#x5904;&#x7406;&#x7684;IP&#x6570;&#x636E;&#x5305;&#xFF0C;&#x800C;&#x6D41;&#x5957;&#x63A5;&#x5B57;&#x53EA;&#x80FD;&#x8BFB;&#x53D6;TCP&#x534F;&#x8BAE;&#x7684;&#x6570;&#x636E;&#xFF0C;&#x6570;&#x636E;&#x62A5;&#x5957;&#x63A5;&#x5B57;&#x53EA;&#x80FD;&#x8BFB;&#x53D6;UDP&#x534F;&#x8BAE;&#x7684;&#x6570;&#x636E;&#x3002;&#x56E0;&#x6B64;&#xFF0C;&#x5982;&#x679C;&#x8981;&#x8BBF;&#x95EE;&#x5176;&#x4ED6;&#x534F;&#x8BAE;&#x53D1;&#x9001;&#x6570;&#x636E;&#x5FC5;&#x987B;&#x4F7F;&#x7528;&#x539F;&#x59CB;&#x5957;&#x63A5;&#x5B57;&#x3002;</p>
</blockquote>
<p><strong>&#x5957;&#x63A5;&#x5B57;&#x901A;&#x4FE1;&#x7684;&#x5EFA;&#x7ACB;</strong><br>
<img src="https://hanzhu.dev/content/images/2021/10/642a4906-43da-4bed-b607-aad124b1d334.png" alt="642a4906-43da-4bed-b607-aad124b1d334" loading="lazy"><br>
<strong>&#x670D;&#x52A1;&#x5668;&#x7AEF;</strong><br>
&#xFF08;1&#xFF09;&#x9996;&#x5148;&#x670D;&#x52A1;&#x5668;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x7528;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;socket&#x6765;&#x521B;&#x5EFA;&#x4E00;&#x4E2A;&#x5957;&#x63A5;&#x5B57;&#xFF0C;&#x5B83;&#x662F;&#x7CFB;&#x7EDF;&#x5206;&#x914D;&#x7ED9;&#x8BE5;&#x670D;&#x52A1;&#x5668;&#x8FDB;&#x7A0B;&#x7684;&#x7C7B;&#x4F3C;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;&#x7684;&#x8D44;&#x6E90;&#xFF0C;&#x5B83;&#x4E0D;&#x80FD;&#x4E0E;&#x5176;&#x4ED6;&#x7684;&#x8FDB;&#x7A0B;&#x5171;&#x4EAB;&#x3002;<br>
&#xFF08;2&#xFF09;&#x7136;&#x540E;&#xFF0C;&#x670D;&#x52A1;&#x5668;&#x8FDB;&#x7A0B;&#x4F1A;&#x7ED9;&#x5957;&#x63A5;&#x5B57;&#x8D77;&#x4E2A;&#x540D;&#x5B57;&#xFF0C;&#x6211;&#x4EEC;&#x4F7F;&#x7528;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;bind&#x6765;&#x7ED9;&#x5957;&#x63A5;&#x5B57;&#x547D;&#x540D;&#x3002;&#x7136;&#x540E;&#x670D;&#x52A1;&#x5668;&#x8FDB;&#x7A0B;&#x5C31;&#x5F00;&#x59CB;&#x7B49;&#x5F85;&#x5BA2;&#x6237;&#x8FDE;&#x63A5;&#x5230;&#x8FD9;&#x4E2A;&#x5957;&#x63A5;&#x5B57;&#x3002;<br>
&#xFF08;3&#xFF09;&#x63A5;&#x4E0B;&#x6765;&#xFF0C;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;listen&#x6765;&#x521B;&#x5EFA;&#x4E00;&#x4E2A;&#x961F;&#x5217;&#x5E76;&#x5C06;&#x5176;&#x7528;&#x4E8E;&#x5B58;&#x653E;&#x6765;&#x81EA;&#x5BA2;&#x6237;&#x7684;&#x8FDB;&#x5165;&#x8FDE;&#x63A5;&#x3002;<br>
&#xFF08;4&#xFF09;&#x6700;&#x540E;&#xFF0C;&#x670D;&#x52A1;&#x5668;&#x901A;&#x8FC7;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;accept&#x6765;&#x63A5;&#x53D7;&#x5BA2;&#x6237;&#x7684;&#x8FDE;&#x63A5;&#x3002;&#x5B83;&#x4F1A;&#x521B;&#x5EFA;&#x4E00;&#x4E2A;&#x4E0E;&#x539F;&#x6709;&#x7684;&#x547D;&#x540D;&#x5957;&#x63A5;&#x4E0D;&#x540C;&#x7684;&#x65B0;&#x5957;&#x63A5;&#x5B57;&#xFF0C;&#x8FD9;&#x4E2A;&#x5957;&#x63A5;&#x5B57;&#x53EA;&#x7528;&#x4E8E;&#x4E0E;&#x8FD9;&#x4E2A;&#x7279;&#x5B9A;&#x5BA2;&#x6237;&#x7AEF;&#x8FDB;&#x884C;&#x901A;&#x4FE1;&#xFF0C;&#x800C;&#x547D;&#x540D;&#x5957;&#x63A5;&#x5B57;&#xFF08;&#x5373;&#x539F;&#x5148;&#x7684;&#x5957;&#x63A5;&#x5B57;&#xFF09;&#x5219;&#x88AB;&#x4FDD;&#x7559;&#x4E0B;&#x6765;&#x7EE7;&#x7EED;&#x5904;&#x7406;&#x6765;&#x81EA;&#x5176;&#x4ED6;&#x5BA2;&#x6237;&#x7684;&#x8FDE;&#x63A5;&#xFF08;&#x5EFA;&#x7ACB;&#x5BA2;&#x6237;&#x7AEF;&#x548C;&#x670D;&#x52A1;&#x7AEF;&#x7684;&#x7528;&#x4E8E;&#x901A;&#x4FE1;&#x7684;&#x6D41;&#xFF0C;&#x8FDB;&#x884C;&#x901A;&#x4FE1;&#xFF09;&#x3002;<br>
<strong>&#x5BA2;&#x6237;&#x7AEF;</strong><br>
&#xFF08;1&#xFF09;&#x5BA2;&#x6237;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x9996;&#x5148;&#x8C03;&#x7528;socket&#x6765;&#x521B;&#x5EFA;&#x4E00;&#x4E2A;&#x672A;&#x547D;&#x540D;&#x7684;&#x5957;&#x63A5;&#x5B57;&#xFF0C;&#x7136;&#x540E;&#x5C06;&#x670D;&#x52A1;&#x5668;&#x7684;&#x547D;&#x540D;&#x5957;&#x63A5;&#x5B57;&#x4F5C;&#x4E3A;&#x4E00;&#x4E2A;&#x5730;&#x5740;&#x6765;&#x8C03;&#x7528;connect&#x4E0E;&#x670D;&#x52A1;&#x5668;&#x5EFA;&#x7ACB;&#x8FDE;&#x63A5;&#x3002;<br>
&#xFF08;2&#xFF09;&#x4E00;&#x65E6;&#x8FDE;&#x63A5;&#x5EFA;&#x7ACB;&#xFF0C;&#x6211;&#x4EEC;&#x5C31;&#x53EF;&#x4EE5;&#x50CF;&#x4F7F;&#x7528;&#x5E95;&#x5C42;&#x7684;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;&#x90A3;&#x6837;&#x7528;&#x5957;&#x63A5;&#x5B57;&#x6765;&#x5B9E;&#x73B0;&#x53CC;&#x5411;&#x6570;&#x636E;&#x7684;&#x901A;&#x4FE1;&#xFF08;&#x901A;&#x8FC7;&#x6D41;&#x8FDB;&#x884C;&#x6570;&#x636E;&#x4F20;&#x8F93;&#xFF09;&#x3002;</p>
<h2 id="8-unix%E5%9F%9F%E5%A5%97%E6%8E%A5%E5%AD%97%EF%BC%88unix-domain-socket">8. Unix&#x57DF;&#x5957;&#x63A5;&#x5B57;&#xFF08;Unix domain socket)</h2>
<p>&#x7528;&#x4E8E;&#x5728;&#x540C;&#x4E00;&#x53F0;&#x673A;&#x5668;&#x4E0A;&#x8FD0;&#x884C;&#x7684;&#x8FDB;&#x7A0B;&#x4E4B;&#x95F4;&#x7684;&#x901A;&#x4FE1;&#x3002;&#x867D;&#x7136;&#x56E0;&#x7279;&#x7F51;&#x57DF;&#x5957;&#x63A5;&#x5B57;&#x53EF;&#x7528;&#x4E8E;&#x540C;&#x4E00;&#x76EE;&#x7684;&#xFF0C;&#x4F46;UNIX&#x57DF;&#x5957;&#x63A5;&#x5B57;&#x7684;&#x6548;&#x7387;&#x66F4;&#x9AD8;&#x3002;UNIX&#x57DF;&#x5957;&#x63A5;&#x5B57;&#x4EC5;&#x4EC5;&#x590D;&#x5236;&#x6570;&#x636E;&#xFF1B;&#x5B83;&#x4EEC;&#x5E76;&#x4E0D;&#x6267;&#x884C;&#x534F;&#x8BAE;&#x5904;&#x7406;&#xFF0C;&#x4E0D;&#x9700;&#x8981;&#x6DFB;&#x52A0;&#x6216;&#x5220;&#x9664;&#x7F51;&#x7EDC;&#x62A5;&#x5934;&#xFF0C;&#x65E0;&#x9700;&#x8BA1;&#x7B97;&#x68C0;&#x9A8C;&#x548C;&#xFF0C;&#x4E0D;&#x8981;&#x4EA7;&#x751F;&#x987A;&#x5E8F;&#x53F7;&#xFF0C;&#x65E0;&#x9700;&#x53D1;&#x9001;&#x786E;&#x8BA4;&#x62A5;&#x6587;&#x3002;<br>
<img src="https://hanzhu.dev/content/images/2021/10/1324476c-e4bf-42de-91d2-b14e6090d41f.png" alt="1324476c-e4bf-42de-91d2-b14e6090d41f" loading="lazy"></p>
<p>Refs:<br>
<a href="https://www.jianshu.com/p/c1015f5ffa74">&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;IPC (InterProcess Communication)</a><br>
<a href="https://blog.csdn.net/gatieme/article/details/50908749">Linux&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x7684;&#x51E0;&#x79CD;&#x65B9;&#x5F0F;&#x603B;&#x7ED3;--linux&#x5185;&#x6838;&#x5256;&#x6790;&#xFF08;&#x4E03;&#xFF09;</a><br>
<a href="http://blog.chinaunix.net/uid-26833883-id-3227144.html">&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;--&#x7BA1;&#x9053;</a><br>
<a href="https://www.cnblogs.com/luo77/p/5816326.html">&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x7684;&#x65B9;&#x5F0F;&#x2014;&#x2014;&#x4FE1;&#x53F7;&#x3001;&#x7BA1;&#x9053;&#x3001;&#x6D88;&#x606F;&#x961F;&#x5217;&#x3001;&#x5171;&#x4EAB;&#x5185;&#x5B58;</a><br>
<a href="https://blog.csdn.net/ljianhui/article/details/10253345">Linux&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x2014;&#x2014;&#x4F7F;&#x7528;&#x5171;&#x4EAB;&#x5185;&#x5B58;</a><br>
<a href="http://blog.chinaunix.net/uid-26833883-id-3230564.html">&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;---&#x5171;&#x4EAB;&#x5185;&#x5B58;</a><br>
<a href="https://www.cnblogs.com/linuxbug/p/4882776.html">Linux&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;(&#x56DB;) - &#x5171;&#x4EAB;&#x5185;&#x5B58;</a><br>
<a href="https://www.cnblogs.com/diyingyun/archive/2011/12/04/2275229.html">&#x4FE1;&#x53F7;&#x91CF;&#x4E0E;&#x4E92;&#x65A5;&#x9501;</a><br>
<a href="http://blog.chinaunix.net/uid-23193900-id-3194924.html">&#x4FE1;&#x53F7;&#x91CF;</a><br>
<a href="https://www.jianshu.com/p/5788fb2345ce">&#x770B;&#x56FE;&#x7406;&#x89E3;&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;IPC</a><br>
<a href="https://cloud.tencent.com/developer/article/1688297">&#x8FDB;&#x7A0B;&#x548C;&#x7EBF;&#x7A0B;&#x7684;&#x6982;&#x5FF5;&#x3001;&#x533A;&#x522B;&#x53CA;&#x8FDB;&#x7A0B;&#x7EBF;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[进程与线程]]></title><description><![CDATA[<!--kg-card-begin: markdown--><blockquote>
<p>&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x8FD8;&#x8BF7;&#x79FB;&#x6B65;&#xFF1A;<a href="https://hanzhu.dev/ipc/">&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1; Inter-Process Communication</a></p>
</blockquote>
<p><strong>&#x8FDB;&#x7A0B;</strong>&#xFF1A;&#x8FD0;&#x884C;&#x65F6;&#x7A0B;&#x5E8F;&#x7684;&#x5C01;&#x88C5;&#xFF0C;&#x662F;<strong>&#x7CFB;&#x7EDF;&#x8FDB;&#x884C;&#x8D44;&#x6E90;&#x8C03;&#x5EA6;&#x548C;&#x5206;&#x914D;&#x7684;&#x7684;&#x57FA;&#x672C;&#x5355;&#x4F4D;&#xFF0C;&#x5B9E;&#x73B0;</strong></p>]]></description><link>https://hanzhu.dev/processes-and-threads/</link><guid isPermaLink="false">61546bb99657313908075cc1</guid><category><![CDATA[OS]]></category><category><![CDATA[linux]]></category><dc:creator><![CDATA[Frank]]></dc:creator><pubDate>Wed, 29 Sep 2021 13:38:19 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><blockquote>
<p>&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;&#x8FD8;&#x8BF7;&#x79FB;&#x6B65;&#xFF1A;<a href="https://hanzhu.dev/ipc/">&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1; Inter-Process Communication</a></p>
</blockquote>
<p><strong>&#x8FDB;&#x7A0B;</strong>&#xFF1A;&#x8FD0;&#x884C;&#x65F6;&#x7A0B;&#x5E8F;&#x7684;&#x5C01;&#x88C5;&#xFF0C;&#x662F;<strong>&#x7CFB;&#x7EDF;&#x8FDB;&#x884C;&#x8D44;&#x6E90;&#x8C03;&#x5EA6;&#x548C;&#x5206;&#x914D;&#x7684;&#x7684;&#x57FA;&#x672C;&#x5355;&#x4F4D;&#xFF0C;&#x5B9E;&#x73B0;&#x4E86;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x7684;&#x5E76;&#x53D1;</strong>&#xFF1B;&#x6BCF;&#x4E2A;&#x8FDB;&#x7A0B;&#x90FD;&#x6709;&#x81EA;&#x5DF1;&#x72EC;&#x7ACB;&#x7684;&#x4E00;&#x5757;&#x5185;&#x5B58;&#x7A7A;&#x95F4;&#xFF0C;&#x4E00;&#x4E2A;&#x8FDB;&#x7A0B;&#x53EF;&#x4EE5;&#x6709;&#x591A;&#x4E2A;&#x7EBF;&#x7A0B;&#x3002;</p>
<p><strong>&#x7EBF;&#x7A0B;</strong>&#xFF1A;&#x8FDB;&#x7A0B;&#x4E2D;&#x7684;&#x5B50;&#x4EFB;&#x52A1;&#xFF08;&#x63A7;&#x5236;&#x5355;&#x5143;&#xFF09;&#xFF0C;<strong>&#x662F;CPU&#x8C03;&#x5EA6;&#x548C;&#x5206;&#x6D3E;&#x7684;&#x57FA;&#x672C;&#x5355;&#x4F4D;&#xFF0C;&#x7528;&#x4E8E;&#x4FDD;&#x8BC1;&#x7A0B;&#x5E8F;&#x7684;&#x5B9E;&#x65F6;&#x6027;&#xFF0C;&#x5B9E;&#x73B0;&#x8FDB;&#x7A0B;&#x5185;&#x90E8;&#x7684;&#x5E76;&#x53D1;&#xFF1B;&#x7EBF;&#x7A0B;&#x662F;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x53EF;&#x8BC6;&#x522B;&#x7684;&#x6700;&#x5C0F;&#x6267;&#x884C;&#x548C;&#x8C03;&#x5EA6;&#x5355;&#x4F4D;&#x3002;</strong> &#x6BCF;&#x4E2A;&#x7EBF;&#x7A0B;&#x90FD;&#x72EC;&#x81EA;&#x5360;&#x7528;&#x4E00;&#x4E2A;<strong>&#x865A;&#x62DF;&#x5904;&#x7406;&#x5668;</strong>&#xFF1A;&#x72EC;&#x81EA;&#x7684;<strong>&#x5BC4;&#x5B58;&#x5668;&#x7EC4;&#xFF0C;&#x6307;&#x4EE4;&#x8BA1;&#x6570;&#x5668;&#x548C;&#x5904;&#x7406;&#x5668;&#x72B6;&#x6001;</strong>&#x3002;&#x6BCF;&#x4E2A;&#x7EBF;&#x7A0B;&#x5B8C;&#x6210;&#x4E0D;&#x540C;&#x7684;&#x4EFB;&#x52A1;&#xFF0C;&#x4F46;&#x662F;<strong>&#x5171;&#x4EAB;&#x540C;&#x4E00;&#x5730;&#x5740;&#x7A7A;&#x95F4;</strong>&#xFF08;&#x4E5F;&#x5C31;&#x662F;&#x540C;&#x6837;&#x7684;<strong>&#x52A8;&#x6001;&#x5185;&#x5B58;&#xFF0C;&#x6620;&#x5C04;&#x6587;&#x4EF6;&#xFF0C;&#x76EE;&#x6807;&#x4EE3;&#x7801;&#x7B49;&#x7B49;</strong>&#xFF09;&#xFF0C;<strong>&#x6253;&#x5F00;&#x7684;&#x6587;&#x4EF6;&#x961F;&#x5217;&#x548C;&#x5176;&#x4ED6;&#x5185;&#x6838;&#x8D44;&#x6E90;&#x3002;</strong></p>
<p><strong>&#x8FDB;&#x7A0B;&#x4E0E;&#x7EBF;&#x7A0B;&#x7684;&#x533A;&#x522B;&#x603B;&#x7ED3;</strong><br>
&#x7EBF;&#x7A0B;&#x5177;&#x6709;&#x8BB8;&#x591A;&#x4F20;&#x7EDF;&#x8FDB;&#x7A0B;&#x6240;&#x5177;&#x6709;&#x7684;&#x7279;&#x5F81;&#xFF0C;&#x6545;&#x53C8;&#x79F0;&#x4E3A;&#x8F7B;&#x578B;&#x8FDB;&#x7A0B;(Light&#x2014;Weight Process)&#x6216;&#x8FDB;&#x7A0B;&#x5143;&#xFF1B;&#x800C;&#x628A;&#x4F20;&#x7EDF;&#x7684;&#x8FDB;&#x7A0B;&#x79F0;&#x4E3A;&#x91CD;&#x578B;&#x8FDB;&#x7A0B;(Heavy&#x2014;Weight Process)&#xFF0C;&#x5B83;&#x76F8;&#x5F53;&#x4E8E;&#x53EA;&#x6709;&#x4E00;&#x4E2A;&#x7EBF;&#x7A0B;&#x7684;&#x4EFB;&#x52A1;&#x3002;&#x5728;&#x5F15;&#x5165;&#x4E86;&#x7EBF;&#x7A0B;&#x7684;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x4E2D;&#xFF0C;&#x901A;&#x5E38;&#x4E00;&#x4E2A;&#x8FDB;&#x7A0B;&#x90FD;&#x6709;&#x82E5;&#x5E72;&#x4E2A;&#x7EBF;&#x7A0B;&#xFF0C;&#x81F3;&#x5C11;&#x5305;&#x542B;&#x4E00;&#x4E2A;&#x7EBF;&#x7A0B;&#x3002;</p>
<ul>
<li>&#x6839;&#x672C;&#x533A;&#x522B;&#xFF1A;&#x8FDB;&#x7A0B;&#x662F;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x8D44;&#x6E90;&#x5206;&#x914D;&#x7684;&#x57FA;&#x672C;&#x5355;&#x4F4D;&#xFF0C;&#x800C;&#x7EBF;&#x7A0B;&#x662F;&#x5904;&#x7406;&#x5668;&#x4EFB;&#x52A1;&#x8C03;&#x5EA6;&#x548C;&#x6267;&#x884C;&#x7684;&#x57FA;&#x672C;&#x5355;&#x4F4D;</li>
<li>&#x8D44;&#x6E90;&#x5F00;&#x9500;&#xFF1A;&#x6BCF;&#x4E2A;&#x8FDB;&#x7A0B;&#x90FD;&#x6709;&#x72EC;&#x7ACB;&#x7684;&#x4EE3;&#x7801;&#x548C;&#x6570;&#x636E;&#x7A7A;&#x95F4;&#xFF08;&#x7A0B;&#x5E8F;&#x4E0A;&#x4E0B;&#x6587;&#xFF09;&#xFF0C;&#x7A0B;&#x5E8F;&#x4E4B;&#x95F4;&#x7684;&#x5207;&#x6362;&#x4F1A;&#x6709;&#x8F83;&#x5927;&#x7684;&#x5F00;&#x9500;&#xFF1B;&#x7EBF;&#x7A0B;&#x53EF;&#x4EE5;&#x770B;&#x505A;&#x8F7B;&#x91CF;&#x7EA7;&#x7684;&#x8FDB;&#x7A0B;&#xFF0C;&#x540C;&#x4E00;&#x7C7B;&#x7EBF;&#x7A0B;&#x5171;&#x4EAB;&#x4EE3;&#x7801;&#x548C;&#x6570;&#x636E;&#x7A7A;&#x95F4;&#xFF0C;&#x6BCF;&#x4E2A;&#x7EBF;&#x7A0B;&#x90FD;&#x6709;&#x81EA;&#x5DF1;&#x72EC;&#x7ACB;&#x7684;&#x8FD0;&#x884C;&#x6808;&#x548C;&#x7A0B;&#x5E8F;&#x8BA1;&#x6570;&#x5668;&#xFF08;PC&#xFF09;&#xFF0C;&#x7EBF;&#x7A0B;&#x4E4B;&#x95F4;&#x5207;&#x6362;&#x7684;&#x5F00;&#x9500;&#x5C0F;&#x3002;</li>
<li>&#x5305;&#x542B;&#x5173;&#x7CFB;&#xFF1A;&#x5982;&#x679C;&#x4E00;&#x4E2A;&#x8FDB;&#x7A0B;&#x5185;&#x6709;&#x591A;&#x4E2A;&#x7EBF;&#x7A0B;&#xFF0C;&#x5219;&#x6267;&#x884C;&#x8FC7;&#x7A0B;&#x4E0D;&#x662F;&#x4E00;&#x6761;&#x7EBF;&#x7684;&#xFF0C;&#x800C;&#x662F;&#x591A;&#x6761;&#x7EBF;&#xFF08;&#x7EBF;&#x7A0B;&#xFF09;&#x5171;&#x540C;&#x5B8C;&#x6210;&#x7684;&#xFF1B;&#x7EBF;&#x7A0B;&#x662F;&#x8FDB;&#x7A0B;&#x7684;&#x4E00;&#x90E8;&#x5206;&#xFF0C;&#x6240;&#x4EE5;&#x7EBF;&#x7A0B;&#x4E5F;&#x88AB;&#x79F0;&#x4E3A;&#x8F7B;&#x6743;&#x8FDB;&#x7A0B;&#x6216;&#x8005;&#x8F7B;&#x91CF;&#x7EA7;&#x8FDB;&#x7A0B;&#x3002;</li>
<li>&#x5185;&#x5B58;&#x5206;&#x914D;&#xFF1A;&#x540C;&#x4E00;&#x8FDB;&#x7A0B;&#x7684;&#x7EBF;&#x7A0B;&#x5171;&#x4EAB;&#x672C;&#x8FDB;&#x7A0B;&#x7684;&#x5730;&#x5740;&#x7A7A;&#x95F4;&#x548C;&#x8D44;&#x6E90;&#xFF0C;&#x800C;&#x8FDB;&#x7A0B;&#x4E4B;&#x95F4;&#x7684;&#x5730;&#x5740;&#x7A7A;&#x95F4;&#x548C;&#x8D44;&#x6E90;&#x662F;&#x76F8;&#x4E92;&#x72EC;&#x7ACB;&#x7684;</li>
<li>&#x5F71;&#x54CD;&#x5173;&#x7CFB;&#xFF1A;&#x4E00;&#x4E2A;&#x8FDB;&#x7A0B;&#x5D29;&#x6E83;&#x540E;&#xFF0C;&#x5728;&#x4FDD;&#x62A4;&#x6A21;&#x5F0F;&#x4E0B;&#x4E0D;&#x4F1A;&#x5BF9;&#x5176;&#x4ED6;&#x8FDB;&#x7A0B;&#x4EA7;&#x751F;&#x5F71;&#x54CD;&#xFF0C;&#x4F46;&#x662F;&#x4E00;&#x4E2A;&#x7EBF;&#x7A0B;&#x5D29;&#x6E83;&#x6574;&#x4E2A;&#x8FDB;&#x7A0B;&#x90FD;&#x6B7B;&#x6389;&#x3002;&#x6240;&#x4EE5;&#x591A;&#x8FDB;&#x7A0B;&#x8981;&#x6BD4;&#x591A;&#x7EBF;&#x7A0B;&#x5065;&#x58EE;&#x3002;</li>
<li>&#x901A;&#x4FE1;&#xFF1A;&#x7531;&#x4E8E;&#x540C;&#x4E00;&#x8FDB;&#x7A0B;&#x4E2D;&#x7684;&#x591A;&#x4E2A;&#x7EBF;&#x7A0B;&#x5177;&#x6709;&#x76F8;&#x540C;&#x7684;&#x5730;&#x5740;&#x7A7A;&#x95F4;&#xFF0C;&#x81F4;&#x4F7F;&#x5B83;&#x4EEC;&#x4E4B;&#x95F4;&#x7684;&#x540C;&#x6B65;&#x548C;&#x901A;&#x4FE1;&#x7684;&#x5B9E;&#x73B0;&#xFF0C;&#x4E5F;&#x53D8;&#x5F97;&#x6BD4;&#x8F83;&#x5BB9;&#x6613;&#x3002;<strong>&#x8FDB;&#x7A0B;&#x95F4;&#x901A;&#x4FE1;IPC&#xFF0C;&#x7EBF;&#x7A0B;&#x95F4;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x8BFB;&#x5199;&#x8FDB;&#x7A0B;&#x6570;&#x636E;&#x6BB5;&#xFF08;&#x5982;&#x5168;&#x5C40;&#x53D8;&#x91CF;&#xFF09;&#x6765;&#x8FDB;&#x884C;&#x901A;&#x4FE1;&#x2014;&#x2014;&#x9700;&#x8981;&#x8FDB;&#x7A0B;&#x540C;&#x6B65;&#x548C;&#x4E92;&#x65A5;&#x624B;&#x6BB5;&#x7684;&#x8F85;&#x52A9;&#xFF0C;&#x4EE5;&#x4FDD;&#x8BC1;&#x6570;&#x636E;&#x7684;&#x4E00;&#x81F4;&#x6027;&#x3002;</strong> &#x5728;&#x6709;&#x7684;&#x7CFB;&#x7EDF;&#x4E2D;&#xFF0C;&#x7EBF;&#x7A0B;&#x7684;&#x5207;&#x6362;&#x3001;&#x540C;&#x6B65;&#x548C;&#x901A;&#x4FE1;&#x90FD;&#x65E0;&#x987B;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x5185;&#x6838;&#x7684;&#x5E72;&#x9884;</li>
<li><strong>&#x8FDB;&#x7A0B;&#x7F16;&#x7A0B;&#x8C03;&#x8BD5;&#x7B80;&#x5355;&#x53EF;&#x9760;&#x6027;&#x9AD8;&#xFF0C;&#x4F46;&#x662F;&#x521B;&#x5EFA;&#x9500;&#x6BC1;&#x5F00;&#x9500;&#x5927;&#xFF1B;&#x7EBF;&#x7A0B;&#x6B63;&#x76F8;&#x53CD;&#xFF0C;&#x5F00;&#x9500;&#x5C0F;&#xFF0C;&#x5207;&#x6362;&#x901F;&#x5EA6;&#x5FEB;&#xFF0C;&#x4F46;&#x662F;&#x7F16;&#x7A0B;&#x8C03;&#x8BD5;&#x76F8;&#x5BF9;&#x590D;&#x6742;</strong></li>
<li>&#x6267;&#x884C;&#x8FC7;&#x7A0B;&#xFF1A;&#x6BCF;&#x4E2A;&#x72EC;&#x7ACB;&#x7684;&#x8FDB;&#x7A0B;&#x6709;&#x7A0B;&#x5E8F;&#x8FD0;&#x884C;&#x7684;&#x5165;&#x53E3;&#x3001;&#x987A;&#x5E8F;&#x6267;&#x884C;&#x5E8F;&#x5217;&#x548C;&#x7A0B;&#x5E8F;&#x51FA;&#x53E3;&#x3002;&#x4F46;&#x662F;&#x7EBF;&#x7A0B;&#x4E0D;&#x80FD;&#x72EC;&#x7ACB;&#x6267;&#x884C;&#xFF0C;&#x5FC5;&#x987B;&#x4F9D;&#x5B58;&#x5728;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x4E2D;&#xFF0C;&#x7531;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x63D0;&#x4F9B;&#x591A;&#x4E2A;&#x7EBF;&#x7A0B;&#x6267;&#x884C;&#x63A7;&#x5236;&#xFF0C;&#x4E24;&#x8005;&#x5747;&#x53EF;&#x5E76;&#x53D1;&#x6267;&#x884C;</li>
<li><strong>&#x8FDB;&#x7A0B;&#x9002;&#x5E94;&#x4E8E;&#x591A;&#x6838;&#x3001;&#x591A;&#x673A;&#x5206;&#x5E03;&#xFF1B;&#x7EBF;&#x7A0B;&#x9002;&#x7528;&#x4E8E;&#x591A;&#x6838;</strong></li>
</ul>
<p>References:<br>
<a href="https://blog.csdn.net/ThinkWon/article/details/102021274">https://blog.csdn.net/ThinkWon/article/details/102021274</a><br>
<a href="https://www.liaoxuefeng.com/wiki/1016959663602400/1017631469467456">https://www.liaoxuefeng.com/wiki/1016959663602400/1017631469467456</a><br>
<a href="https://wizardforcel.gitbooks.io/wangdaokaoyan-os/content/7.html">https://wizardforcel.gitbooks.io/wangdaokaoyan-os/content/7.html</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[什么是阻塞，非阻塞，同步，异步？]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>2021.9&#x66F4;&#x65B0;<br>
Todo:<br>
<a href="https://blog.csdn.net/tjiyu/article/details/52959418">5&#x79CD;IO&#x6A21;&#x578B;&#x3001;&#x963B;&#x585E;IO&#x548C;&#x975E;&#x963B;&#x585E;IO&#x3001;&#x540C;&#x6B65;IO&#x548C;&#x5F02;&#x6B65;IO</a><br>
<a href="https://mathcs.clarku.edu/~jbreecher/cs280/UNIX%20Network%20Programming(Volume1,3rd).pdf">Chapter6 of Unix Network Programming.vol3</a>, &#x5C24;&#x5176;&#x662F;6.2 I/O model</p>
<p>========================<br>
&#x7B54;&#x6848;&#x90FD;&#x6765;&#x81EA;&#x77E5;&#x4E4E;&#xFF1A;</p>
<h2 id="answer1">Answer1</h2>]]></description><link>https://hanzhu.dev/shi-yao-shi-zu-sai-fei-zu-sai-tong-bu-yi-bu/</link><guid isPermaLink="false">5fdaf0df017a8d06dd21706f</guid><category><![CDATA[linux]]></category><category><![CDATA[network]]></category><category><![CDATA[OS]]></category><dc:creator><![CDATA[Frank]]></dc:creator><pubDate>Tue, 21 Sep 2021 07:15:00 GMT</pubDate><media:content url="https://hanzhu.dev/content/images/2021/09/figure_6.3.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://hanzhu.dev/content/images/2021/09/figure_6.3.png" alt="&#x4EC0;&#x4E48;&#x662F;&#x963B;&#x585E;&#xFF0C;&#x975E;&#x963B;&#x585E;&#xFF0C;&#x540C;&#x6B65;&#xFF0C;&#x5F02;&#x6B65;&#xFF1F;"><p>2021.9&#x66F4;&#x65B0;<br>
Todo:<br>
<a href="https://blog.csdn.net/tjiyu/article/details/52959418">5&#x79CD;IO&#x6A21;&#x578B;&#x3001;&#x963B;&#x585E;IO&#x548C;&#x975E;&#x963B;&#x585E;IO&#x3001;&#x540C;&#x6B65;IO&#x548C;&#x5F02;&#x6B65;IO</a><br>
<a href="https://mathcs.clarku.edu/~jbreecher/cs280/UNIX%20Network%20Programming(Volume1,3rd).pdf">Chapter6 of Unix Network Programming.vol3</a>, &#x5C24;&#x5176;&#x662F;6.2 I/O model</p>
<p>========================<br>
&#x7B54;&#x6848;&#x90FD;&#x6765;&#x81EA;&#x77E5;&#x4E4E;&#xFF1A;</p>
<h2 id="answer1">Answer1</h2>
<p>&#x6240;&#x8C13;&#x540C;&#x6B65;&#x5F02;&#x6B65;&#xFF0C;&#x53EA;&#x662F;&#x5BF9;&#x4E8E;&#x6C34;&#x58F6;&#x800C;&#x8A00;&#x3002; &#x666E;&#x901A;&#x6C34;&#x58F6;&#xFF0C;&#x540C;&#x6B65;&#xFF1B;&#x54CD;&#x6C34;&#x58F6;&#xFF0C;&#x5F02;&#x6B65;&#x3002; &#x867D;&#x7136;&#x90FD;&#x80FD;&#x5E72;&#x6D3B;&#xFF0C;&#x4F46;&#x54CD;&#x6C34;&#x58F6;&#x53EF;&#x4EE5;&#x5728;&#x81EA;&#x5DF1;&#x5B8C;&#x5DE5;&#x4E4B;&#x540E;&#xFF0C;&#x63D0;&#x793A;&#x8001;&#x5F20;&#x6C34;&#x5F00;&#x4E86;&#x3002;&#x8FD9;&#x662F;&#x666E;&#x901A;&#x6C34;&#x58F6;&#x6240;&#x4E0D;&#x80FD;&#x53CA;&#x7684;&#x3002; &#x540C;&#x6B65;&#x53EA;&#x80FD;&#x8BA9;&#x8C03;&#x7528;&#x8005;&#x53BB;&#x8F6E;&#x8BE2;&#x81EA;&#x5DF1;&#xFF08;&#x60C5;&#x51B5;2&#x4E2D;&#xFF09;&#xFF0C;&#x9020;&#x6210;&#x8001;&#x5F20;&#x6548;&#x7387;&#x7684;&#x4F4E;&#x4E0B;&#x3002;</p>
<p>&#x6240;&#x8C13;&#x963B;&#x585E;&#x975E;&#x963B;&#x585E;&#xFF0C;&#x4EC5;&#x4EC5;&#x5BF9;&#x4E8E;&#x8001;&#x5F20;&#x800C;&#x8A00;&#x3002; &#x7ACB;&#x7B49;&#x7684;&#x8001;&#x5F20;&#xFF0C;&#x963B;&#x585E;&#xFF1B;&#x770B;&#x7535;&#x89C6;&#x7684;&#x8001;&#x5F20;&#xFF0C;&#x975E;&#x963B;&#x585E;&#x3002; &#x60C5;&#x51B5;1&#x548C;&#x60C5;&#x51B5;3&#x4E2D;&#x8001;&#x5F20;&#x5C31;&#x662F;&#x963B;&#x585E;&#x7684;&#xFF0C;&#x5AB3;&#x5987;&#x558A;&#x4ED6;&#x90FD;&#x4E0D;&#x77E5;&#x9053;&#x3002;&#x867D;&#x7136;3&#x4E2D;&#x54CD;&#x6C34;&#x58F6;&#x662F;&#x5F02;&#x6B65;&#x7684;&#xFF0C;&#x53EF;&#x5BF9;&#x4E8E;&#x7ACB;&#x7B49;&#x7684;&#x8001;&#x5F20;&#x6CA1;&#x6709;&#x592A;&#x5927;&#x7684;&#x610F;&#x4E49;&#x3002;&#x6240;&#x4EE5;&#x4E00;&#x822C;&#x5F02;&#x6B65;&#x662F;&#x914D;&#x5408;&#x975E;&#x963B;&#x585E;&#x4F7F;&#x7528;&#x7684;&#xFF0C;&#x8FD9;&#x6837;&#x624D;&#x80FD;&#x53D1;&#x6325;&#x5F02;&#x6B65;&#x7684;&#x6548;&#x7528;&#x3002;</p>
<p>&#x4F5C;&#x8005;&#xFF1A;&#x77E5;&#x4E4E;&#x7528;&#x6237;<br>
&#x94FE;&#x63A5;&#xFF1A;<a href="https://www.zhihu.com/question/26393784/answer/513257548">https://www.zhihu.com/question/26393784/answer/513257548</a></p>
<h2 id="answer2">Answer2</h2>
<p>&#x4F5C;&#x8005;&#xFF1A;&#x540E;&#x7AEF;&#x6280;&#x672F;&#x5C0F;&#x9ED1;&#x677F;<br>
&#x94FE;&#x63A5;&#xFF1A;<a href="https://www.zhihu.com/question/26393784/answer/1480048712">https://www.zhihu.com/question/26393784/answer/1480048712</a><br>
&#x6765;&#x6E90;&#xFF1A;&#x77E5;&#x4E4E;<br>
&#x8457;&#x4F5C;&#x6743;&#x5F52;&#x4F5C;&#x8005;&#x6240;&#x6709;&#x3002;&#x5546;&#x4E1A;&#x8F6C;&#x8F7D;&#x8BF7;&#x8054;&#x7CFB;&#x4F5C;&#x8005;&#x83B7;&#x5F97;&#x6388;&#x6743;&#xFF0C;&#x975E;&#x5546;&#x4E1A;&#x8F6C;&#x8F7D;&#x8BF7;&#x6CE8;&#x660E;&#x51FA;&#x5904;&#x3002;</p>
<p>&#x5728;&#x8BA8;&#x8BBA;&#x95EE;&#x9898;&#x4E4B;&#x524D;&#xFF0C;&#x6211;&#x4EEC;&#x9700;&#x8981;&#x786E;&#x5B9A;&#x4E00;&#x4E0B;&#x4E0A;&#x4E0B;&#x6587;&#xFF0C;&#x4EE5;&#x514D;&#x4EA7;&#x751F;&#x8BEF;&#x89E3;&#xFF0C;&#x672C;&#x6587;&#x8BA8;&#x8BBA;&#x7684;&#x80CC;&#x666F;&#x662F;&#x57FA;&#x4E8E;Linux&#x7684;&#x7F51;&#x7EDC;IO&#x5F00;&#x5C55;&#x7684;&#x5B9E;&#x9645;&#x4E0A;&#x65E0;&#x8BBA;&#x662F;&#x54EA;&#x4E00;&#x79CD;IO&#x6A21;&#x578B;&#xFF0C;&#x90FD;&#x53EF;&#x4EE5;&#x5206;&#x4E3A;&#x4E24;&#x4E2A;&#x9636;&#x6BB5;(&#x4EE5;read&#x64CD;&#x4F5C;&#x4E3A;&#x4F8B;)&#xFF1A;</p>
<ul>
<li><strong>&#x7B49;&#x5F85;&#x6570;&#x636E;&#x51C6;&#x5907;&#x5C31;&#x7EEA;</strong></li>
<li><strong>&#x5C06;&#x6570;&#x636E;&#x4ECE;&#x5185;&#x6838;&#x6001;&#x62F7;&#x8D1D;&#x5230;&#x7528;&#x6237;&#x7A7A;&#x95F4;</strong></li>
</ul>
<p>&#x8FD9;&#x91CC;&#x6211;&#x4EEC;&#x9700;&#x8981;&#x89E3;&#x91CA;&#x4E00;&#x4E0B;&#xFF0C;&#x4EC0;&#x4E48;&#x662F;&#x5185;&#x6838;&#x6001;&#x548C;&#x7528;&#x6237;&#x6001;<br>
<img src="https://hanzhu.dev/content/images/2020/12/v2-813fb065a50f437100ad35cae40e8ef8_720w.jpg" alt="&#x4EC0;&#x4E48;&#x662F;&#x963B;&#x585E;&#xFF0C;&#x975E;&#x963B;&#x585E;&#xFF0C;&#x540C;&#x6B65;&#xFF0C;&#x5F02;&#x6B65;&#xFF1F;" loading="lazy"></p>
<ul>
<li><strong>&#x7528;&#x6237;&#x6001;</strong>&#xFF1A;&#x4E5F;&#x79F0;&#x4E3A;&#x7528;&#x6237;&#x7A7A;&#x95F4;&#xFF0C;&#x5373;&#x4E0A;&#x5C42;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x7684;&#x6D3B;&#x52A8;&#x7A7A;&#x95F4;&#xFF0C;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x7684;&#x6267;&#x884C;&#x5FC5;&#x987B;&#x4F9D;&#x8D56;&#x4E8E;&#x5185;&#x6838;&#x63D0;&#x4F9B;&#x7684;&#x8D44;</li>
<li><strong>&#x5185;&#x6838;&#x6001;</strong>&#xFF1A;&#x4E5F;&#x79F0;&#x4E3A;&#x5185;&#x6838;&#x7A7A;&#x95F4;&#xFF0C;&#x63A7;&#x5236;&#x8BA1;&#x7B97;&#x673A;&#x7684;&#x786C;&#x4EF6;&#x8D44;&#x6E90;&#xFF0C;&#x5E76;&#x63D0;&#x4F9B;&#x4E0A;&#x5C42;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x8FD0;&#x884C;&#x7684;&#x73AF;&#x5883;</li>
</ul>
<p>&#x6CE8;&#xFF1A;&#x7528;&#x6237;&#x6001;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x5207;&#x6362;&#x5230;&#x5185;&#x6838;&#x6001;&#xFF0C;&#x8FD9;&#x662F;<strong>&#x4E3B;&#x52A8;</strong>&#x8FDB;&#x5165;&#x5230;<strong>&#x5185;&#x6838;&#x6001;</strong>&#x3002;&#x6B64;&#x5916;&#x5728;&#x51FA;&#x73B0;&#x5F02;&#x5E38;&#x6216;&#x8005;&#x5916;&#x56F4;&#x8BBE;&#x5907;&#x7684;&#x4E2D;&#x65AD;&#x4E5F;&#x4F1A;&#x8FDB;&#x5165;&#x5230;&#x5185;&#x6838;&#x6001;&#xFF0C;&#x4E0D;&#x8FC7;&#x662F;<strong>&#x88AB;&#x52A8;</strong>&#x54CD;&#x5E94;&#x7684;<br>
<strong>&#x5148;&#x8BF4;&#x7ED3;&#x8BBA;&#xFF1A;&#x5404;&#x79CD;IO&#x6A21;&#x578B;&#x5176;&#x5B9E;&#x662F;&#x6839;&#x636E;&#x5B83;&#x5728;&#x4E0A;&#x8FF0;&#x4E24;&#x4E2A;&#x9636;&#x6BB5;&#x7684;&#x4E0D;&#x540C;&#x8868;&#x73B0;(&#x7528;&#x6237;&#x8FDB;&#x7A0B;&#x6216;&#x8005;&#x7EBF;&#x7A0B;&#x662F;&#x5426;&#x963B;&#x585E;)&#x6765;&#x533A;&#x5206;&#x7684;&#xFF01;&#xFF01;&#xFF01;<br>
&#x5728;&#x7B2C;&#x4E00;&#x4E2A;&#x9636;&#x6BB5;&#x7528;&#x6237;&#x8FDB;&#x7A0B;&#x662F;&#x5426;&#x963B;&#x585E;&#x7528;&#x6765;&#x533A;&#x5206;&#x963B;&#x585E;/&#x975E;&#x963B;&#x585E;&#xFF0C;&#x5728;&#x7B2C;&#x4E8C;&#x4E2A;&#x9636;&#x6BB5;&#x7528;&#x6237;&#x662F;&#x5426;&#x963B;&#x585E;&#x7528;&#x6765;&#x533A;&#x5206;&#x540C;&#x6B65;/&#x5F02;&#x6B65;&#xFF01;&#xFF01;&#xFF01;</strong></p>
<p>&#x963B;&#x585E;IO<br>
<img src="https://hanzhu.dev/content/images/2020/12/v2-03717ef36d57a84ea587e709fe6d9421_720w.jpg" alt="&#x4EC0;&#x4E48;&#x662F;&#x963B;&#x585E;&#xFF0C;&#x975E;&#x963B;&#x585E;&#xFF0C;&#x540C;&#x6B65;&#xFF0C;&#x5F02;&#x6B65;&#xFF1F;" loading="lazy"><br>
&#x5F53;&#x7528;&#x6237;&#x8FDB;&#x7A0B;&#x53D1;&#x8D77;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;recvfrom&#x65F6;&#xFF0C;&#x5728;<strong>&#x7B2C;&#x4E00;&#x9636;&#x6BB5;</strong>&#xFF0C;&#x5185;&#x6838;&#x9996;&#x5148;&#x4F1A;&#x7B49;&#x5F85;&#x6570;&#x636E;&#x51C6;&#x5907;&#x5C31;&#x7EEA;&#xFF0C;&#x8FD9;&#x4E2A;&#x8FC7;&#x7A0B;&#x4E2D;&#x7528;&#x6237;&#x8FDB;&#x7A0B;&#x662F;&#x963B;&#x585E;&#x7684;&#xFF1B;&#x5728;<strong>&#x7B2C;&#x4E8C;&#x9636;&#x6BB5;</strong>&#xFF0C;&#x5F53;&#x6570;&#x636E;&#x51C6;&#x5907;&#x5C31;&#x7EEA;&#x4E4B;&#x540E;&#xFF0C;&#x6570;&#x636E;&#x4F1A;&#x4ECE;&#x5185;&#x6838;&#x7A7A;&#x95F4;&#x62F7;&#x8D1D;&#x5230;&#x7528;&#x6237;&#x7A7A;&#x95F4;(&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x7A7A;&#x95F4;)&#xFF0C;&#x8FD9;&#x4E2A;&#x8FC7;&#x7A0B;&#x4E2D;&#x7528;&#x6237;&#x8FDB;&#x7A0B;&#x540C;&#x6837;&#x662F;&#x963B;&#x585E;&#x7684;&#xFF0C;&#x76F4;&#x5230;&#x6570;&#x636E;&#x62F7;&#x8D1D;&#x5B8C;&#x6210;&#x624D;&#x6062;&#x590D;&#x3002;&#x6240;&#x4EE5;&#xFF0C;<strong>&#x963B;&#x585E;IO&#x5728;&#x4E24;&#x4E2A;&#x9636;&#x6BB5;&#x90FD;&#x662F;&#x963B;&#x585E;</strong>&#x7684;&#xFF01;&#xFF01;</p>
<p>&#x975E;&#x963B;&#x585E;IO<br>
<img src="https://hanzhu.dev/content/images/2020/12/v2-c0eeab970e8bfad0a9aeda8012e018ba_720w.jpg" alt="&#x4EC0;&#x4E48;&#x662F;&#x963B;&#x585E;&#xFF0C;&#x975E;&#x963B;&#x585E;&#xFF0C;&#x540C;&#x6B65;&#xFF0C;&#x5F02;&#x6B65;&#xFF1F;" loading="lazy"><br>
&#x975E;&#x963B;&#x585E;IO&#x548C;&#x963B;&#x585E;IO&#x76F8;&#x4F3C;&#xFF0C;&#x533A;&#x522B;&#x5728;&#x4E8E;<strong>&#x7B2C;&#x4E00;&#x9636;&#x6BB5;</strong>&#xFF0C;&#x5728;&#x7B49;&#x5F85;&#x6570;&#x636E;&#x51C6;&#x5907;&#x5C31;&#x7EEA;&#x7684;&#x8FC7;&#x7A0B;&#x4E2D;&#xFF0C;&#x7528;&#x6237;&#x8FDB;&#x7A0B;&#x4E0D;&#x4F1A;&#x963B;&#x585E;&#xFF0C;&#x800C;&#x662F;&#x5728;&#x6570;&#x636E;&#x6CA1;&#x6709;&#x51C6;&#x5907;&#x5C31;&#x7EEA;&#x7684;&#x65F6;&#x5019;&#x5F97;&#x5230;&#x4E00;&#x4E2A;error&#x8FD4;&#x56DE;&#xFF0C;&#x8FD9;&#x662F;&#x7528;&#x6237;&#x8FDB;&#x7A0B;&#x5C31;&#x77E5;&#x9053;&#x6570;&#x636E;&#x8FD8;&#x6CA1;&#x6709;&#x51C6;&#x5907;&#x597D;&#xFF0C;&#x7136;&#x540E;&#x5C31;&#x53EF;&#x4EE5;&#x7EE7;&#x7EED;&#x53D1;&#x8D77;recvfrom&#x64CD;&#x4F5C;&#x76F4;&#x5230;&#x6570;&#x636E;&#x51C6;&#x5907;&#x5C31;&#x7EEA;<br>
<strong>&#x5728;&#x7B2C;&#x4E8C;&#x9636;&#x6BB5;&#xFF0C;&#x6570;&#x636E;&#x4ECE;&#x5185;&#x6838;&#x7A7A;&#x95F4;&#x5411;&#x7528;&#x6237;&#x7A7A;&#x95F4;&#x62F7;&#x8D1D;&#x65F6;&#xFF0C;&#x975E;&#x963B;&#x585E;IO&#x7528;&#x6237;&#x8FDB;&#x7A0B;&#x540C;&#x6837;&#x662F;&#x963B;&#x585E;&#x7684;</strong></p>
<p>IO&#x591A;&#x8DEF;&#x590D;&#x7528;<br>
<img src="https://hanzhu.dev/content/images/2020/12/v2-a76b3367300b6f0a81d06a0b2e92b05d_720w.jpg" alt="&#x4EC0;&#x4E48;&#x662F;&#x963B;&#x585E;&#xFF0C;&#x975E;&#x963B;&#x585E;&#xFF0C;&#x540C;&#x6B65;&#xFF0C;&#x5F02;&#x6B65;&#xFF1F;" loading="lazy"><br>
<strong>IO&#x591A;&#x8DEF;&#x590D;&#x7528;&#x5B9E;&#x9645;&#x4E0A;&#x662F;&#x901A;&#x8FC7;select/epoll&#x7B49;&#x51FD;&#x6570;&#x8F6E;&#x8BE2;&#x591A;&#x4E2A;socket</strong>&#xFF0C;&#x5F53;&#x7528;&#x6237;&#x8FDB;&#x7A0B;&#x8C03;&#x7528;&#x4E86;select&#x51FD;&#x6570;&#xFF0C;&#x6574;&#x4E2A;&#x7528;&#x6237;&#x8FDB;&#x7A0B;&#x5C31;&#x4F1A;&#x88AB;&#x963B;&#x585E;&#xFF0C;&#x76F4;&#x5230;&#x6536;&#x5230;&#x6570;&#x636E;&#x51C6;&#x5907;&#x5C31;&#x7EEA;&#x7684;&#x8FD4;&#x56DE;&#x540E;&#x7EED;&#x7684;&#x64CD;&#x4F5C;&#x548C;&#x975E;&#x963B;&#x585E;IO&#x662F;&#x7C7B;&#x4F3C;&#x7684;&#xFF0C;&#x7531;&#x4E8E;&#x5728;recvfrom&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x4E4B;&#x524D;&#xFF0C;&#x9700;&#x8981;&#x7684;&#x6570;&#x636E;&#x5C31;&#x5DF2;&#x7ECF;&#x51C6;&#x5907;&#x5C31;&#x7EEA;&#x4E86;&#xFF0C;&#x6240;&#x4EE5;<strong>&#x7B2C;&#x4E00;&#x4E2A;&#x9636;&#x6BB5;&#x662F;&#x975E;&#x963B;&#x585E;&#x7684;&#xFF1B;&#x7B2C;&#x4E8C;&#x4E2A;&#x9636;&#x6BB5;&#x540C;&#x6837;&#x8FD8;&#x662F;&#x963B;&#x585E;&#x7684;&#x6240;&#x4EE5;IO&#x591A;&#x8DEF;&#x590D;&#x7528;&#x6574;&#x4E2A;&#x8FC7;&#x7A0B;&#x4E2D;&#xFF0C;&#x7528;&#x6237;&#x8FDB;&#x7A0B;&#x90FD;&#x662F;&#x963B;&#x585E;&#x7684;~</strong></p>
<p>&#x5F02;&#x6B65;IO<br>
<img src="https://hanzhu.dev/content/images/2020/12/v2-ecc3c5e2d79722a08bba89fa91b4fa73_720w.jpg" alt="&#x4EC0;&#x4E48;&#x662F;&#x963B;&#x585E;&#xFF0C;&#x975E;&#x963B;&#x585E;&#xFF0C;&#x540C;&#x6B65;&#xFF0C;&#x5F02;&#x6B65;&#xFF1F;" loading="lazy"><br>
<strong>&#x5F02;&#x6B65;IO&#x5B9E;&#x9645;&#x4E0A;&#x662F;&#x7528;&#x6237;&#x8FDB;&#x7A0B;&#x53D1;&#x8D77;read&#x64CD;&#x4F5C;&#x4E4B;&#x540E;&#xFF0C;&#x5C31;&#x4F1A;&#x7ACB;&#x523B;&#x6536;&#x5230;&#x4E00;&#x4E2A;&#x8FD4;&#x56DE;&#xFF0C;&#x6240;&#x4EE5;&#x7528;&#x6237;&#x8FDB;&#x7A0B;&#x5C31;&#x53EF;&#x4EE5;&#x53BB;&#x5B8C;&#x6210;&#x5176;&#x4ED6;&#x7684;&#x5DE5;&#x4F5C;&#xFF0C;&#x800C;&#x4E0D;&#x9700;&#x8981;&#x963B;&#x585E;&#xFF1B;&#x76F4;&#x5230;&#x6570;&#x636E;&#x51C6;&#x5907;&#x5C31;&#x7EEA;&#x5E76;&#x4E14;&#x5B8C;&#x6210;&#x4E86;&#x4ECE;&#x5185;&#x6838;&#x7A7A;&#x95F4;&#x5411;&#x7528;&#x6237;&#x7A7A;&#x95F4;&#x62F7;&#x8D1D;&#x7684;&#x5DE5;&#x4F5C;&#xFF0C;&#x8FD9;&#x65F6;&#x7528;&#x6237;&#x8FDB;&#x7A0B;&#x4F1A;&#x6536;&#x5230;&#x4E00;&#x4E2A;&#x901A;&#x77E5;&#xFF0C;&#x544A;&#x8BC9;&#x4ED6;read&#x64CD;&#x4F5C;&#x5DF2;&#x5B8C;&#x6210;&#x6574;&#x4E2A;&#x8FC7;&#x7A0B;&#x4E2D;&#x7528;&#x6237;&#x8FDB;&#x7A0B;&#x4E0D;&#x4F1A;&#x88AB;&#x963B;&#x585E;</strong></p>
<p>**&#x603B;&#x7ED3;</p>
<p>&#x6240;&#x4EE5;&#x5B9E;&#x9645;&#x4E0A;&#x963B;&#x585E;IO&#x548C;&#x975E;&#x963B;&#x585E;IO&#x90FD;&#x662F;&#x540C;&#x6B65;IO&#xFF0C;&#x7528;&#x5230;&#x4E86;&#x7279;&#x6B8A;&#x7684;&#x5F02;&#x6B65;&#x51FD;&#x6570;&#x624D;&#x662F;&#x5F02;&#x6B65;IO&#x5982;&#x679C;&#x80FD;&#x4ECE;IO&#x8FC7;&#x7A0B;&#x7684;&#x4E24;&#x4E2A;&#x9636;&#x6BB5;&#x6765;&#x770B;&#x5F85;&#x8FD9;&#x4E9B;&#x95EE;&#x9898;&#xFF0C;&#x5C31;&#x4E0D;&#x4F1A;&#x88AB;&#x8FD9;&#x4E9B;&#x6982;&#x5FF5;&#x548C;&#x4E00;&#x4E9B;&#x4F8B;&#x5B50;&#x7ED5;&#x6655;&#x4E86;**</p>
<h2 id="answer3">Answer3</h2>
<blockquote>
<p>&#x4E00;&#x4E2A;IO&#x64CD;&#x4F5C;&#x5176;&#x5B9E;&#x5206;&#x6210;&#x4E86;&#x4E24;&#x4E2A;&#x6B65;&#x9AA4;&#xFF1A;&#x53D1;&#x8D77;IO&#x8BF7;&#x6C42;&#x548C;&#x5B9E;&#x9645;&#x7684;IO&#x64CD;&#x4F5C;&#x3002;<br>
&#x963B;&#x585E;IO&#x548C;&#x975E;&#x963B;&#x585E;IO&#x7684;&#x533A;&#x522B;&#x5728;&#x4E8E;&#x7B2C;&#x4E00;&#x6B65;&#xFF0C;&#x53D1;&#x8D77;IO&#x8BF7;&#x6C42;&#x662F;&#x5426;&#x4F1A;&#x88AB;&#x963B;&#x585E;&#xFF0C;&#x5982;&#x679C;&#x963B;&#x585E;&#x76F4;&#x5230;&#x5B8C;&#x6210;&#x90A3;&#x4E48;&#x5C31;&#x662F;&#x4F20;&#x7EDF;&#x7684;&#x963B;&#x585E;IO&#xFF0C;&#x5982;&#x679C;&#x4E0D;&#x963B;&#x585E;&#xFF0C;&#x90A3;&#x4E48;&#x5C31;&#x662F;&#x975E;&#x963B;&#x585E;IO&#x3002;<br>
&#x540C;&#x6B65;IO&#x548C;&#x5F02;&#x6B65;IO&#x7684;&#x533A;&#x522B;&#x5C31;&#x5728;&#x4E8E;&#x7B2C;&#x4E8C;&#x4E2A;&#x6B65;&#x9AA4;&#x662F;&#x5426;&#x963B;&#x585E;&#xFF1A;&#x5982;&#x679C;&#x5B9E;&#x9645;&#x7684;IO&#x8BFB;&#x5199;&#x963B;&#x585E;&#x8BF7;&#x6C42;&#x8FDB;&#x7A0B;&#xFF0C;&#x90A3;&#x4E48;&#x5C31;&#x662F;&#x540C;&#x6B65;IO&#xFF0C;&#x56E0;&#x6B64;&#x963B;&#x585E;IO&#x3001;&#x975E;&#x963B;&#x585E;IO&#x3001;IO&#x590D;&#x7528;&#x3001;&#x4FE1;&#x53F7;&#x9A71;&#x52A8;IO&#x90FD;&#x662F;&#x540C;&#x6B65;IO&#xFF1B;&#x5982;&#x679C;&#x4E0D;&#x963B;&#x585E;&#xFF0C;&#x800C;&#x662F;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x5E2E;&#x4F60;&#x505A;&#x5B8C;IO&#x64CD;&#x4F5C;&#x518D;&#x5C06;&#x7ED3;&#x679C;&#x8FD4;&#x56DE;&#x7ED9;&#x4F60;&#xFF0C;&#x90A3;&#x4E48;&#x5C31;&#x662F;&#x5F02;&#x6B65;IO&#x3002;</p>
</blockquote>
<ul>
<li>&#x540C;&#x6B65;&#x963B;&#x585E;I/O&#xFF1A;
<ul>
<li>&#x5F53;&#x8FDB;&#x7A0B;&#x8C03;&#x7528;&#x67D0;&#x4E9B;&#x8BBE;&#x8BA1;I/O&#x64CD;&#x4F5C;&#x7684;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x6216;&#x5E93;&#x51FD;&#x6570;&#x65F6;&#xFF0C;&#x6BD4;&#x5982;accept()&#x3001;send()&#x3001;recv()&#x7B49;&#xFF0C;&#x8FDB;&#x7A0B;&#x4FBF;&#x6682;&#x505C;&#x4E0B;&#x6765;&#xFF0C;&#x7B49;&#x5F85;I/O&#x64CD;&#x4F5C;&#x5B8C;&#x6210;&#x540E;&#x518D;&#x7EE7;&#x7EED;&#x8FD0;&#x884C;&#x3002;</li>
</ul>
</li>
<li>&#x540C;&#x6B65;&#x975E;&#x963B;&#x585E;I/O&#xFF1A;&#xFF08;&#x8F6E;&#x8BE2;&#xFF09;
<ul>
<li>&#x4E0D;&#x4F1A;&#x7B49;&#x5F85;&#x6570;&#x636E;&#x5C31;&#x7EEA;&#xFF0C;&#x800C;&#x662F;&#x7ED3;&#x5408;&#x53CD;&#x590D;&#x8F6E;&#x8BE2;&#x6765;&#x5C1D;&#x8BD5;&#x6570;&#x636E;&#x662F;&#x5426;&#x5C31;&#x7EEA;&#x3002;</li>
<li>&#x4E0E;&#x540C;&#x6B65;&#x963B;&#x585E;I/O&#x76F8;&#x6BD4;&#xFF0C;&#x540C;&#x6B65;&#x975E;&#x963B;&#x585E;I/O&#x597D;&#x5904;&#x662F;&#x5728;&#x4E00;&#x4E2A;&#x8FDB;&#x7A0B;&#x4E2D;&#x53EF;&#x4EE5;&#x540C;&#x65F6;&#x5904;&#x7406;&#x591A;&#x4E2A;I/O&#x64CD;&#x4F5C;&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x963B;&#x585E;&#x5728;&#x4E00;&#x4E2A;I/O&#x64CD;&#x4F5C;&#x4E0A;</li>
</ul>
</li>
<li>&#x591A;&#x8DEF;I/O&#x5C31;&#x7EEA;&#x901A;&#x77E5;&#xFF1A;&#xFF08;I/O&#x590D;&#x7528;&#xFF09;
<ul>
<li>&#x5141;&#x8BB8;&#x8FDB;&#x7A0B;&#x901A;&#x8FC7;&#x4E00;&#x79CD;&#x65B9;&#x6CD5;&#x6765;&#x540C;&#x65F6;&#x76D1;&#x542C;&#x6240;&#x6709;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;&#xFF0C;&#x5E76;&#x53EF;&#x4EE5;&#x5FEB;&#x901F;&#x83B7;&#x5F97;&#x6240;&#x6709;&#x5C31;&#x7EEA;&#x7684;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;&#xFF0C;&#x7136;&#x540E;&#x53EA;&#x9488;&#x5BF9;&#x8FD9;&#x4E9B;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;&#x8FDB;&#x884C;&#x6570;&#x636E;&#x8BBF;&#x95EE;&#x3002;&#x6211;&#x4EEC;&#x5E38;&#x7528;&#x7684;select&#x3001;poll&#x3001;epoll&#x7B49;&#x51FD;&#x6570;&#x4F7F;&#x7528;&#x4E86;I/O&#x590D;&#x7528;&#x6A21;&#x578B;&#x3002;</li>
<li>&#x4E0E;&#x540C;&#x6B65;&#x975E;&#x963B;&#x585E;I/O&#x76F8;&#x6BD4;&#xFF0C;I/O&#x590D;&#x7528;&#x6A21;&#x578B;&#x7684;&#x4F18;&#x52BF;&#x5728;&#x4E8E;&#x53EF;&#x4EE5;&#x540C;&#x65F6;&#x7B49;&#x5F85;&#x591A;&#x4E2A;&#xFF08;&#x800C;&#x4E0D;&#x53EA;&#x662F;&#x4E00;&#x4E2A;&#xFF09;&#x5957;&#x63A5;&#x5B57;&#x63CF;&#x8FF0;&#x7B26;&#x5C31;&#x7EEA;</li>
</ul>
</li>
<li>&#x4FE1;&#x53F7;&#x9A71;&#x52A8;&#x5F0F;I/O&#xFF1A;
<ul>
<li>&#x9700;&#x8981;&#x5F00;&#x542F;&#x5957;&#x63A5;&#x5B57;&#x7684;&#x4FE1;&#x53F7;&#x9A71;&#x52A8;I/O&#x529F;&#x80FD;&#xFF0C;&#x5E76;&#x901A;&#x8FC7;sigaction&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x5B89;&#x88C5;&#x4E00;&#x4E2A;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#x3002;sigaction&#x51FD;&#x6570;&#x7ACB;&#x5373;&#x8FD4;&#x56DE;&#xFF0C;&#x6211;&#x4EEC;&#x7684;&#x8FDB;&#x7A0B;&#x7EE7;&#x7EED;&#x5DE5;&#x4F5C;&#xFF0C;&#x5373;&#x8FDB;&#x7A0B;&#x6CA1;&#x6709;&#x88AB;&#x963B;&#x585E;&#x3002;&#x5F53;&#x6570;&#x636E;&#x62A5;&#x51C6;&#x5907;&#x597D;&#x65F6;&#xFF0C;&#x5185;&#x6838;&#x4F1A;&#x4E3A;&#x8BE5;&#x8FDB;&#x7A0B;&#x4EA7;&#x751F;&#x4E00;&#x4E2A;SIGIO&#x4FE1;&#x53F7;&#xFF0C;&#x8FD9;&#x6837;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x5728;&#x4FE1;&#x53F7;&#x5904;&#x7406;&#x51FD;&#x6570;&#x4E2D;&#x8C03;&#x7528;recvfrom&#x8BFB;&#x53D6;&#x6570;&#x636E;&#x62A5;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x5728;&#x4E3B;&#x5FAA;&#x73AF;&#x4E2D;&#x8BFB;&#x53D6;&#x6570;&#x636E;&#x62A5;&#x3002;&#x65E0;&#x8BBA;&#x5982;&#x4F55;&#x5904;&#x7406;SIGIO&#x4FE1;&#x53F7;&#xFF0C;&#x8FD9;&#x79CD;&#x6A21;&#x578B;&#x7684;&#x4F18;&#x52BF;&#x5728;&#x4E8E;&#x7B49;&#x5F85;&#x6570;&#x636E;&#x62A5;&#x5230;&#x8FBE;&#x671F;&#x95F4;&#x4E0D;&#x88AB;&#x963B;&#x585E;&#x3002;</li>
</ul>
</li>
<li>&#x5F02;&#x6B65;I/O(AIO)&#xFF1A;
<ul>
<li>&#x542F;&#x52A8;&#x67D0;&#x4E2A;&#x64CD;&#x4F5C;&#xFF0C;&#x5E76;&#x8BA9;&#x5185;&#x6838;&#x5728;&#x6574;&#x4E2A;&#x64CD;&#x4F5C;&#xFF08;&#x5305;&#x62EC;&#x7B49;&#x5F85;&#x6570;&#x636E;&#x548C;&#x5C06;&#x6570;&#x636E;&#x4ECE;&#x5185;&#x6838;&#x590D;&#x5236;&#x5230;&#x7528;&#x6237;&#x7A7A;&#x95F4;&#xFF09;&#x5B8C;&#x6210;&#x540E;&#x901A;&#x77E5;&#x5E94;&#x7528;&#x8FDB;&#x7A0B;&#x3002;</li>
<li>&#x4E0E;&#x4FE1;&#x53F7;&#x9A71;&#x52A8;&#x5F0F;I/O&#x7684;&#x533A;&#x522B;&#x5728;&#x4E8E;&#xFF1A;&#x4FE1;&#x53F7;&#x9A71;&#x52A8;&#x5F0F;I/O&#x5728;&#x6570;&#x636E;&#x62A5;&#x51C6;&#x5907;&#x597D;&#x65F6;&#x5C31;&#x901A;&#x77E5;&#x5E94;&#x7528;&#x8FDB;&#x7A0B;&#xFF0C;&#x5E94;&#x7528;&#x8FDB;&#x7A0B;&#x8FD8;&#x9700;&#x8981;&#x5C06;&#x6570;&#x636E;&#x62A5;&#x4ECE;&#x5185;&#x6838;&#x590D;&#x5236;&#x5230;&#x7528;&#x6237;&#x8FDB;&#x7A0B;&#x7F13;&#x51B2;&#x533A;&#xFF1B;&#x800C;&#x5F02;&#x6B65;I/O&#x6A21;&#x578B;&#x5219;&#x662F;&#x6574;&#x4E2A;&#x64CD;&#x4F5C;&#x5B8C;&#x6210;&#x624D;&#x901A;&#x77E5;&#x5E94;&#x7528;&#x8FDB;&#x7A0B;&#xFF0C;&#x5E94;&#x7528;&#x8FDB;&#x7A0B;&#x5728;&#x6574;&#x4E2A;&#x64CD;&#x4F5C;&#x671F;&#x95F4;&#x90FD;&#x4E0D;&#x4F1A;&#x88AB;&#x963B;&#x585E;&#x3002;</li>
</ul>
</li>
</ul>
<p><img src="https://hanzhu.dev/content/images/2020/12/v2-dba1a0af1ce850b2f2a828821fec4f4a_720w.jpg" alt="&#x4EC0;&#x4E48;&#x662F;&#x963B;&#x585E;&#xFF0C;&#x975E;&#x963B;&#x585E;&#xFF0C;&#x540C;&#x6B65;&#xFF0C;&#x5F02;&#x6B65;&#xFF1F;" loading="lazy"></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[操作系统笔记 from Neso]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h2 id="index">Index</h2>
<p><a href="https://www.youtube.com/watch?v=vBURTt97EkA&amp;list=PLBlnK6fEyqRiVhbXDGLXDk_OQAeuVcp2O">https://www.youtube.com/watch?v=vBURTt97EkA&amp;list=PLBlnK6fEyqRiVhbXDGLXDk_OQAeuVcp2O</a></p>
<ol>
<li>Introduction to Operating System</li>
<li>Basics of OS (Computer System Operation)</li>
<li>Basics of OS (Storage Structure)</li>
<li>Basics of OS (I/O Structure)</li>
<li>Computer System Architecture</li>
<li>Operating System Structure</li>
<li>Operating System Services</li>
<li>User Operating System Interface</li>
<li>System Calls</li>
<li>Types of</li></ol>]]></description><link>https://hanzhu.dev/os_notes_neso/</link><guid isPermaLink="false">61459f1a017a8d06dd217467</guid><category><![CDATA[OS]]></category><dc:creator><![CDATA[Frank]]></dc:creator><pubDate>Sat, 18 Sep 2021 08:15:23 GMT</pubDate><media:content url="https://hanzhu.dev/content/images/2021/09/maxresdefault.jpeg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="index">Index</h2>
<img src="https://hanzhu.dev/content/images/2021/09/maxresdefault.jpeg" alt="&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x7B14;&#x8BB0; from Neso"><p><a href="https://www.youtube.com/watch?v=vBURTt97EkA&amp;list=PLBlnK6fEyqRiVhbXDGLXDk_OQAeuVcp2O">https://www.youtube.com/watch?v=vBURTt97EkA&amp;list=PLBlnK6fEyqRiVhbXDGLXDk_OQAeuVcp2O</a></p>
<ol>
<li>Introduction to Operating System</li>
<li>Basics of OS (Computer System Operation)</li>
<li>Basics of OS (Storage Structure)</li>
<li>Basics of OS (I/O Structure)</li>
<li>Computer System Architecture</li>
<li>Operating System Structure</li>
<li>Operating System Services</li>
<li>User Operating System Interface</li>
<li>System Calls</li>
<li>Types of System Calls</li>
<li>System Programs</li>
<li>Operating System Design &amp; Implementation</li>
<li>Structures of Operating System</li>
<li>Virtual Machines</li>
<li>Operating System Generation and System Boot</li>
<li>Process Management (Processes and Threads)</li>
<li>Process State</li>
<li>Process Control Block</li>
<li>Process Scheduling</li>
<li>Context Switch</li>
<li>Operation on Processes &#x2013; Process Creation</li>
<li>Operation on Processes &#x2013; Process Termination</li>
<li>Interprocess Communication</li>
<li>Shared Memory Systems</li>
<li>Message Passing Systems (Part 1)</li>
<li>Message Passing Systems (Part 2)</li>
<li>Message Passing Systems (Part 3)</li>
<li>Sockets in Operating System</li>
<li>Remote Procedure Calls (RPC)</li>
<li>Issues in RPC &amp; How They&apos;re Resolved</li>
<li>Introduction to Threads</li>
<li>Multithreading Models &amp; Hyperthreading</li>
<li>fork() and exec() System Calls</li>
<li>Threading Issues [fork() &amp; exec() System Calls]</li>
<li>Threading Issues (Thread Cancellation)</li>
<li>Introduction to CPU Scheduling</li>
<li>CPU and I/O Burst Cycles</li>
<li>Preemptive and Non-Preemptive Scheduling</li>
<li>Scheduling Criteria</li>
<li>Scheduling Algorithms - First Come First Served (FCFS)</li>
<li>First Come First Served Scheduling (Solved Problem 1)</li>
<li>First Come First Served Scheduling (Solved Problem 2)</li>
<li>Scheduling Algorithms - Shortest Job First (SJF)</li>
<li>Shortest Job First Scheduling (Solved Problem 1)</li>
<li>Shortest Job First Scheduling (Solved Problem 2)</li>
<li>Scheduling Algorithms - Priority Scheduling</li>
<li>Priority Scheduling (Solved Problem 1)</li>
<li>Priority Scheduling (Solved Problem 2)</li>
<li>Scheduling Algorithms - Round Robin Scheduling</li>
<li>Round Robin Scheduling (Turnaround Time &amp; Waiting Time)</li>
<li>Round Robin Scheduling - Solved Problem (Part 1)</li>
<li>Round Robin Scheduling - Solved Problem (Part 2)</li>
<li>Multilevel Queue Scheduling Algorithm</li>
<li>Multilevel Feedback-Queue Scheduling Algorithm</li>
<li>Scheduling Algorithms &#x2013; Solved Problems</li>
<li>Process Synchronization | Chapter-6 | Operating System<br>
(To be continued)</li>
<li>Deadlocks | Chapter-7 | Operating System</li>
<li>Main Memory | Chapter-8 | Operating System</li>
<li>Virtual Memory | Chapter-9 | Operating System</li>
<li>File Systems | Chapter-10 | Operating System</li>
<li>File System Implementation | Chapter-11 | Operating System</li>
<li>Mass Storage Structure | Chapter-12 | Operating System</li>
</ol>
<h2 id="notes">Notes</h2>
<h3 id="23ipc">23 IPC</h3>
<p>OS&#x91CC;&#x8FD0;&#x884C;&#x7684;processes&#x53EF;&#x4EE5;&#x662F;independent processes or cooperating processes</p>
<ul>
<li>Independent processes: &#x65E0;&#x6CD5;&#x5F71;&#x54CD;&#x548C;&#x88AB;&#x5F71;&#x54CD;&#x7CFB;&#x7EDF;&#x91CC;  &#x5176;&#x4ED6;&#x8FDB;&#x7A0B;</li>
<li>Cooperating processes: &#x53EF;&#x4EE5;&#x5F71;&#x54CD;&#x548C;&#x88AB;&#x5F71;&#x54CD;<br>
&#x51E1;&#x662F;share data&#x7684;&#x8FDB;&#x7A0B;&#x90FD;&#x662F;cooperating process<br>
&#x8FDB;&#x7A0B;&#x5408;&#x4F5C;&#x7684;&#x597D;&#x5904;&#xFF1A;</li>
<li>Information sharing &#x5171;&#x4EAB;&#x4FE1;&#x606F;</li>
<li>Computation speedup &#x8BA1;&#x7B97;&#x52A0;&#x901F;</li>
<li>Modularity &#x6A21;&#x5757;&#x5316;</li>
<li>Convenience</li>
</ul>
<p>IPC&#x7684;&#x4E24;&#x79CD;&#x57FA;&#x672C;&#x6A21;&#x578B;&#xFF1A;</p>
<ol>
<li>Shared memory&#xFF1A;&#x7ED9;&#x4E00;&#x7247;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#xFF0C;&#x7136;&#x540E;&#x5408;&#x4F5C;&#x8FDB;&#x7A0B;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x8BFB;&#x5199;&#x8FD9;&#x7247;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x4EA4;&#x6362;&#x4FE1;&#x606F;&#x3002;</li>
<li>Message passing&#xFF1A; &#x5408;&#x4F5C;&#x8FDB;&#x7A0B;&#x901A;&#x8FC7;&#x4EA4;&#x6362;message&#x6765;&#x8FDB;&#x884C;&#x901A;&#x4FE1;<br>
<img src="https://hanzhu.dev/content/images/2021/09/82450595-c4fd-4c21-b3ab-394a55e49631.png" alt="&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x7B14;&#x8BB0; from Neso" loading="lazy"></li>
</ol>
<h3 id="24sharedmemorysystems">24 Shared Memory Systems</h3>
<ul>
<li>&#x901A;&#x4FE1;&#x7684;&#x8FDB;&#x7A0B;&#x9700;&#x8981;&#x5EFA;&#x7ACB;&#x4E00;&#x5757;&#x5171;&#x4EAB;&#x5185;&#x5B58;</li>
<li>&#x4E00;&#x822C;&#x6765;&#x8BF4;&#xFF0C;&#x5171;&#x4EAB;&#x7684;&#x5185;&#x5B58;&#x5728;&#x53D1;&#x8D77;&#x65B9;&#x7684;address space&#x91CC;</li>
<li>&#x5176;&#x4ED6;&#x8FDB;&#x7A0B;&#x5982;&#x9700;&#x901A;&#x4FE1;&#xFF0C;&#x9700;&#x8981;&#x5C06;&#x5171;&#x4EAB;&#x5185;&#x5B58;attach&#x5728;&#x4ED6;&#x4EEC;&#x81EA;&#x5DF1;&#x7684;address space&#x4E0A;</li>
<li>&#x901A;&#x5E38;OS&#x4F1A;&#x963B;&#x6B62;&#x4E0D;&#x540C;&#x8FDB;&#x7A0B;&#x8BBF;&#x95EE;&#x5F7C;&#x6B64;&#x5185;&#x5B58;</li>
<li>&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x4F1A;&#x8BA9;2&#x4E2A;&#x6216;&#x66F4;&#x591A;&#x8FDB;&#x7A0B;&#x540C;&#x610F;&#x79FB;&#x9664;&#x6B64;&#x9650;&#x5236;<br>
&#x4E00;&#x4E2A;&#x4F7F;&#x7528;&#x4F8B;&#x5B50;&#x662F;&#x751F;&#x4EA7;&#x6D88;&#x8D39;&#x95EE;&#x9898;, &#x53EF;&#x4EE5;&#x901A;&#x8FC7;buffer of items&#x6765;&#x6EE1;&#x8DB3;&#x751F;&#x4EA7;&#x4E0E;&#x6D88;&#x8D39;&#x3002;<br>
Buffer&#x6709;&#x4E24;&#x79CD;</li>
<li>Unbounded buffer&#xFF1A;buffer size&#x6CA1;&#x6709;limit</li>
<li>Bounded buffer: fixed buffer size, buffer&#x4E3A;&#x7A7A;&#x6D88;&#x8D39;&#x8005;&#x7B49;&#xFF1B;buffer&#x4E3A;&#x6EE1;&#x751F;&#x4EA7;&#x8005;&#x7B49;</li>
</ul>
<h3 id="252627messagepassingsystems">25,26,27 Message-Passing Systems</h3>
<p>&#x4E0D;&#x7528;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#xFF0C;&#x5728;&#x5206;&#x5E03;&#x5F0F;&#x73AF;&#x5883;&#x91CC;&#x5C24;&#x5176;&#x6709;&#x7528;&#x3002;<br>
&#x9700;&#x8981;&#x540C;&#x65F6;&#x62E5;&#x6709;&#x6536;&#x53D1;&#x80FD;&#x529B;&#x3002;<br>
&#x8FDB;&#x7A0B;&#x53D1;&#x9001;&#x7684;Message&#x53EF;&#x4EE5;&#x662F;&#x56FA;&#x5B9A;&#x957F;&#x5EA6;&#x4E5F;&#x53EF;&#x4EE5;&#x662F;&#x53EF;&#x53D8;&#x957F;&#x5EA6;&#x3002;<br>
Fixed size: &#x7CFB;&#x7EDF;&#x5C42;&#x9762;&#x76F4;&#x63A5;&#xFF0C;&#x7F16;&#x7A0B;&#x5C42;&#x9762;&#x56F0;&#x96BE;<br>
&#x53EF;&#x53D8;&#x957F;&#x5EA6;: &#x7CFB;&#x7EDF;&#x5B9E;&#x73B0;&#x590D;&#x6742;&#xFF0C;&#x7F16;&#x7A0B;&#x5C42;&#x9762;&#x7B80;&#x5355;</p>
<p>&#x8FDB;&#x7A0B;&#x4E4B;&#x95F4;&#x9700;&#x8981;&#x6709;communication link&#xFF0C;&#x8FD9;&#x4E2A;link&#x6709;&#x591A;&#x79CD;&#x5B9E;&#x73B0;&#x65B9;&#x5F0F;&#x3002;&#x53EF;&#x4EE5;&#x903B;&#x8F91;&#x4E0A;&#x5B9E;&#x73B0;link&#x5E76;&#x62E5;&#x6709;send()/receive()&#x64CD;&#x4F5C;&#x7684;&#x65B9;&#x6CD5;&#x6709;&#xFF1A;</p>
<ul>
<li>Direct or indirect communication</li>
<li>Synchronous or asynchronous communication</li>
<li>Automatic or explicit buffering<br>
&#x540C;&#x65F6;&#x6709;&#x51E0;&#x4E2A;&#x95EE;&#x9898;&#x8981;&#x89E3;&#x51B3;&#xFF1A;<br>
Naming<br>
Synchronization<br>
Buffering</li>
</ul>
<h4 id="naming">Naming</h4>
<p>&#x9700;&#x8981;&#x901A;&#x4FE1;&#x7684;&#x8FDB;&#x7A0B;&#x5FC5;&#x987B;&#x8981;&#x6709;refer to each other&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x53EF;&#x4EE5;direct or indirect communication</p>
<h5 id="directcommunication">Direct communication</h5>
<p>&#x5728;direct communication&#x91CC;&#xFF0C;&#x6BCF;&#x4E2A;&#x8FDB;&#x7A0B;&#x5FC5;&#x987B;&#x660E;&#x786E;&#x5730;&#x6307;&#x51FA;&#x901A;&#x4FE1;&#x7684;&#x63A5;&#x6536;&#x65B9;</p>
<ul>
<li>send (P, message)      -send a message to process P</li>
<li>receive (Q, message)   - receive a message from process Q<br>
&#x76F4;&#x8FDE;&#x6709;&#x5982;&#x4E0B;&#x6027;&#x8D28;&#xFF1A;</li>
<li>&#x6BCF;&#x5BF9;&#x60F3;&#x8054;&#x7EDC;&#x7684;process&#x4E4B;&#x95F4;&#x81EA;&#x52A8;&#x751F;&#x6210;link, process&#x9700;&#x8981;&#x77E5;&#x9053;&#x5BF9;&#x65B9;&#x8EAB;&#x4EFD;&#x3002;</li>
<li>&#x6BCF;&#x4E2A;link&#x53EA;&#x5173;&#x8054;&#x4E24;&#x4E2A;process</li>
<li>&#x6BCF;&#x5BF9;process&#x4E4B;&#x95F4;&#xFF0C;&#x53EA;&#x5B58;&#x5728;&#x4E00;&#x4E2A;link<br>
&#x8FD9;&#x79CD;&#x65B9;&#x6848;&#x5C55;&#x73B0;&#x4E86;&#x5BFB;&#x5740;&#x91CC;&#x7684;&#x5BF9;&#x79F0;&#x6027;&#xFF08;symmetry in addressing): &#x6536;&#x53D1;&#x65B9;&#x9700;&#x8981;name the other&#x6765;&#x901A;&#x4FE1;</li>
</ul>
<p>&#x4E00;&#x4E2A;&#x76F4;&#x8FDE;&#x65B9;&#x6848;&#x7684;&#x53D8;&#x79CD;&#xFF1A;&#x53D1;&#x9001;&#x65B9;&#x9700;&#x8981;name&#x63A5;&#x6536;&#x65B9;&#xFF0C;&#x63A5;&#x6536;&#x65B9;&#x65E0;&#x9700;name&#x53D1;&#x9001;&#x65B9;&#x3002;</p>
<ul>
<li>send (P, message)      -send a message to process P</li>
<li>receive (id, message)   - receive a message from any process; the variable id is set to the name of the process with which communication has taken place<br>
&#x8FD9;&#x79CD;&#x65B9;&#x6848;&#x5C55;&#x73B0;&#x4E86;&#x5BFB;&#x5740;&#x91CC;&#x7684;&#x975E;&#x5BF9;&#x79F0;&#x6027;&#xFF08;asymmetry in addressing)<br>
&#x8FD9;&#x4E24;&#x79CD;&#x65B9;&#x6848;&#xFF08;symmetric and asymmetric&#xFF09;&#x90FD;&#x6709;&#x4E2A;&#x7F3A;&#x70B9;&#xFF1A;limited modularity of the resulting process definitions&#x3002;&#x5982;&#x679C;&#x8FDB;&#x7A0B;&#x540D;&#x79F0;&#x66F4;&#x6539;&#xFF0C;&#x5219;&#x53EF;&#x80FD;&#x9700;&#x8981;&#x91CD;&#x65B0;&#x68C0;&#x67E5;&#x6240;&#x6709;&#x7684;&#x5176;&#x4ED6;&#x8FDB;&#x7A0B;&#x5B9A;&#x4E49;&#x3002;</li>
</ul>
<h5 id="indirectcommunication">Indirect communication</h5>
<p>&#x6D88;&#x606F;&#x7ECF;&#x7531;mailboxes&#x6216;port&#x6536;&#x53D1;&#x3002;</p>
<ul>
<li>mailbox&#x53EF;&#x88AB;&#x62BD;&#x8C61;&#x5730;&#x89C6;&#x4E3A;&#x4F9B;&#x8FDB;&#x7A0B;&#x5B58;&#x653E;&#x79FB;&#x9664;message&#x7684;&#x7269;&#x4F53;</li>
<li>&#x6BCF;&#x4E2A;mailbox&#x6709;unique identification</li>
<li>&#x4E24;&#x8FDB;&#x7A0B;&#x53EA;&#x6709;&#x540C;&#x65F6;&#x62E5;&#x6709;shared mailbox&#x65F6;&#x624D;&#x53EF;&#x4EE5;&#x901A;&#x4FE1;<br>
&#x4E3E;&#x4F8B;</li>
<li>send (A, message)      -send a message to mailbox A</li>
<li>receive (A, message)   - receive a message from mailbox A<br>
&#x95F4;&#x63A5;&#x8FDE;&#x6709;&#x5982;&#x4E0B;&#x6027;&#x8D28;&#xFF1A;</li>
<li>&#x53EA;&#x6709;&#x53CC;&#x65B9;&#x8FDB;&#x7A0B;&#x5171;&#x4EAB;shared mailbox&#x65F6;&#xFF0C;link&#x624D;&#x80FD;&#x5EFA;&#x7ACB;</li>
<li>&#x6BCF;&#x4E2A;link&#x80FD;&#x5173;&#x8054;&#x4E24;&#x4E2A;&#x53CA;&#x4EE5;&#x4E0A;process</li>
<li>&#x6BCF;&#x5BF9;&#x901A;&#x4FE1;&#x7684;process&#x4E4B;&#x95F4;&#xFF0C;&#x53EF;&#x4EE5;&#x5B58;&#x5728;&#x591A;&#x4E2A;&#x4E0D;&#x540C;&#x7684;links, &#x6BCF;&#x4E2A;link&#x5BF9;&#x5E94;&#x4E00;&#x4E2A;mailbox<br>
mailbox&#x53EF;&#x4EE5;&#x7531;&#x8FDB;&#x7A0B;&#x6216;&#x8005;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x62E5;&#x6709;&#x3002;</li>
</ul>
<h4 id="synchronization">Synchronization</h4>
<p>&#x8FDB;&#x7A0B;&#x95F4;&#x7684;&#x901A;&#x4FE1;&#x901A;&#x8FC7;send()&#x548C;receive() &#x57FA;&#x5143;/primitives&#x6765;&#x5B9E;&#x73B0;&#x3002;&#x57FA;&#x5143;&#x7684;&#x5B9E;&#x73B0;&#x53EF;&#x4EE5;&#x6709;&#x4E0D;&#x540C;&#x8BBE;&#x8BA1;&#x3002;&#x6D88;&#x606F;&#x53EF;&#x4EE5;&#x662F;blocking&#x6216;nonblocking, &#x4E5F;&#x79F0;&#x4E4B;&#x4E3A;synchronous&#x548C;asynchronous&#x3002;<br>
&#x6536;&#x53D1;X&#x963B;&#x585E;&#x5206;&#x963B;&#x585E;&#xFF0C;4&#x79CD;&#x60C5;&#x51B5;</p>
<h4 id="buffering">Buffering</h4>
<p>&#x65E0;&#x8BBA;&#x901A;&#x4FE1;&#x662F;&#x76F4;&#x63A5;&#x8FD8;&#x662F;&#x95F4;&#x63A5;&#xFF0C;&#x88AB;&#x8FDB;&#x7A0B;&#x4EEC;&#x4EA4;&#x6362;&#x7684;&#x4FE1;&#x606F;&#x90FD;&#x6816;&#x606F;&#x5728;&#x4E00;&#x4E2A;&#x4E34;&#x65F6;&#x961F;&#x5217;&#x91CC;&#x3002;&#x8FD9;&#x79CD;&#x961F;&#x5217;&#x53EF;&#x4EE5;&#x6709;&#x4E09;&#x79CD;&#x5B9E;&#x73B0;&#xFF1A;<br>
Zero capacity: &#x961F;&#x5217;&#x957F;&#x5EA6;&#x4E3A;0. &#x53D1;&#x9001;&#x8005;&#x88AB;block&#x76F4;&#x81F3;&#x63A5;&#x53D7;&#x8005;&#x6536;&#x5230;&#x6D88;&#x606F;&#x3002;<br>
Bounded capacity: &#x961F;&#x5217;&#x957F;&#x5EA6;&#x4E3A;n, &#x6700;&#x591A;&#x5B58;n&#x4E2A;messages. &#x5982;&#x679C;link&#x6EE1;&#x4E86;&#xFF0C;sender&#x4F1A;&#x88AB;&#x963B;&#x585E;&#xFF0C;&#x76F4;&#x81F3;&#x961F;&#x5217;&#x6709;&#x65B0;&#x7684;&#x7A7A;&#x3002;<br>
Unbounded capacity: &#x961F;&#x5217;&#x957F;&#x5EA6;&#x65E0;&#x9650;&#xFF0C;sender&#x6C38;&#x4E0D;&#x963B;&#x585E;&#x3002;</p>
<h3 id="28sockets">28 Sockets</h3>
<ul>
<li>A socket is defined as an endpoint for communication.</li>
<li>A pair of processes communicating over a network employ a pair of sockets-one for each process.</li>
<li>A socket is identified by an IP address concatenated with a port number.</li>
<li>The server waits for incoming client requests by listening to a specified port. Once a request is received, the server accepts a connection from the client socket to complete the connection.</li>
<li>Servers implementing specific services(such as telnet, ftp and http) listen to well- known ports(telnet 23, ftp 21, http 80)</li>
<li>All ports below 1024 are considered well known; we can use them to implement standard services</li>
</ul>
<h3 id="2930rpc">29,30 RPC</h3>
<p>RPC&#x662F;&#x4E00;&#x79CD;&#x901A;&#x4FE1;&#x534F;&#x8BAE;&#xFF0C;&#x53EF;&#x4EE5;&#x8BA9;&#x4E00;&#x4E2A;program&#x901A;&#x8FC7;&#x7F51;&#x7EDC;&#x53BB;&#x8BF7;&#x6C42;&#x53E6;&#x4E00;&#x53F0;&#x673A;&#x5668;&#x4E0A;&#x7684;&#x670D;&#x52A1;&#xFF0C;&#x800C;&#x65E0;&#x9700;&#x77E5;&#x9053;&#x7F51;&#x7EDC;&#x7EC6;&#x8282;&#x3002;</p>
<ul>
<li>&#x4E0E;IPC&#x673A;&#x5236;&#x5728;&#x5F88;&#x591A;&#x65B9;&#x9762;&#x76F8;&#x4F3C;&#xFF0C;&#x4F46;&#x662F;&#x56E0;&#x4E3A;&#x662F;&#x8DE8;&#x73AF;&#x5883;&#xFF0C;&#x6240;&#x4EE5;&#x9700;&#x8981;&#x7528; message based communication scheme&#x6765;&#x63D0;&#x4F9B;&#x8FDC;&#x7A0B;&#x670D;&#x52A1;&#x3002;</li>
<li>&#x4E0E;IPC&#x5BF9;&#x6BD4;&#x7684;&#x662F;&#xFF0C;RPC&#x4EA4;&#x6362;&#x7684;messages&#x90FD;&#x662F;well structured, &#x6240;&#x4EE5;&#x4E0D;&#x53EA;&#x662F;packets of data&#x3002;</li>
<li>&#x6BCF;&#x4E2A;&#x6D88;&#x606F;&#x90FD;&#x4F1A;&#x53D1;&#x7ED9;&#x8FDC;&#x7AEF;&#x7CFB;&#x7EDF;&#x91CC;&#x76D1;&#x542C;port&#x7684;RPC daemon, &#x4FE1;&#x606F;&#x91CC;&#x5305;&#x542B;&#x4E86;identifier of&#x88AB;&#x6267;&#x884C;&#x7684;function&#x548C;&#x4F20;&#x9012;&#x7684;&#x53C2;&#x6570;</li>
<li>&#x4E4B;&#x540E;function&#x88AB;&#x6267;&#x884C;&#xFF0C;output&#x7531;&#x53E6;&#x4E00;&#x4E2A;message&#x8FD4;&#x56DE;</li>
</ul>
<p>The semantics(&#x8BED;&#x4E49;) of RPC &#x8BA9;client&#x80FD;&#x5411;&#x8FDC;&#x7AEF;host invoke(&#x8C03;&#x7528;&#xFF09;a procedure&#x5982;&#x672C;&#x5730;&#x8C03;&#x7528;&#x4E00;&#x822C;</p>
<ul>
<li>RPC&#x7CFB;&#x7EDF;&#x901A;&#x8FC7;&#x5728;&#x5BA2;&#x6237;&#x7AEF;&#x63D0;&#x4F9B;&#x4E00;&#x4E2A;stub&#x6765;&#x9690;&#x85CF;&#x901A;&#x4FE1;&#x7EC6;&#x8282;</li>
<li>&#x4E00;&#x822C;&#x6765;&#x8BF4;&#xFF0C;&#x6BCF;&#x4E2A;&#x72EC;&#x7ACB;&#x7684;remote procedure&#x6709;&#x4E00;&#x4E2A;&#x72EC;&#x7ACB;&#x7684;stub</li>
<li>&#x5F53;client&#x8981;&#x8C03;&#x7528;remote procedure&#x65F6;&#xFF0C;RPC&#x7CFB;&#x7EDF;&#x4F1A;call&#x5BF9;&#x5E94;&#x7684;stub, &#x4F20;&#x9012;&#x9700;&#x8981;&#x7684;&#x53C2;&#x6570;&#x3002;&#x8FD9;&#x4E2A;stub&#x4F1A;&#x786E;&#x5B9A;&#x670D;&#x52A1;&#x5668;&#x4E0A;&#x7684;&#x7AEF;&#x53E3;&#x5E76;&#x628A;&#x53C2;&#x6570;&#x5E8F;&#x5217;&#x5316;&#xFF08;marshal the parameters)</li>
<li>&#x53C2;&#x6570;&#x5E8F;&#x5217;&#x5316;&#x5305;&#x542B;&#x628A;&#x53C2;&#x6570;&#x653E;&#x5165;&#x80FD;&#x901A;&#x8FC7;&#x7F51;&#x7EDC;&#x4F20;&#x8F93;&#x7684;&#x7279;&#x5B9A;&#x683C;&#x5F0F;&#x3002;</li>
<li>&#x7136;&#x540E;stub&#x5C06;message&#x901A;&#x8FC7;message passing&#x53D1;&#x9001;&#x7ED9;server</li>
<li>&#x670D;&#x52A1;&#x7AEF;&#x7C7B;&#x4F3C;&#x7684;stub&#x63A5;&#x53D7;&#x6B64;message&#x5E76;&#x8C03;&#x7528;&#x670D;&#x52A1;&#x5668;procedure</li>
<li>&#x5982;&#x679C;&#x9700;&#x8981;&#xFF0C;&#x8FD4;&#x56DE;&#x503C;&#x4EE5;&#x76F8;&#x540C;&#x65B9;&#x5F0F;&#x88AB;&#x8FD4;&#x56DE;client</li>
</ul>
<p>RPC&#x6709;&#x4E00;&#x4E9B;&#x95EE;&#x9898;</p>
<ul>
<li>Data presentation: eg big-endian&#x548C;little-endian.</li>
<li>A: &#x89E3;&#x51B3;&#x65B9;&#x6CD5;&#x662F;RPC&#x5B9A;&#x4E49;&#x4E86;data&#x7684;machine-independent representation&#xFF0C;&#x6BD4;&#x65B9;XDR(external data representation)&#x3002;&#x5BA2;&#x6237;&#x7AEF;&#x53C2;&#x6570;&#x5E8F;&#x5217;&#x5316;&#x65F6;&#x5C31;&#x5305;&#x62EC;&#x4E86;&#x628A;&#x6570;&#x636E;&#x8F6C;&#x6362;&#x6210;XDR&#xFF0C;&#x670D;&#x52A1;&#x5668;&#x7AEF;&#x53CD;&#x4E4B;&#x4EA6;&#x7136;&#x3002;</li>
<li>&#x56E0;&#x4E3A;&#x7F51;&#x7EDC;&#x95EE;&#x9898;&#x5BFC;&#x81F4;RPC&#x5931;&#x8D25;&#xFF0C;&#x91CD;&#x590D;&#x5E76;&#x88AB;&#x6267;&#x884C;&#x591A;&#x6B21;&#x3002;<br>
A: &#x89E3;&#x51B3;&#x65B9;&#x6CD5;&#x662F;OS&#x5FC5;&#x987B;&#x4FDD;&#x8BC1;messages&#x53EA;&#x88AB;&#x6267;&#x884C;&#x6B63;&#x597D;&#x4E00;&#x6B21;&#x3002;</li>
<li>&#x5728;standard procedure call&#x91CC;&#xFF0C;procedure call&apos;s name is placed by the memory address of the procedure call&#x3002;RPC scheme&#x4E5F;&#x9700;&#x8981;&#x7C7B;&#x4F3C;&#x7684;binding of &#x670D;&#x52A1;&#x7AEF;&#x548C;&#x5BA2;&#x6237;&#x7AEF;&#x7AEF;&#x53E3;&#xFF0C;&#x5BA2;&#x6237;&#x7AEF;&#x600E;&#x4E48;&#x77E5;&#x6089;&#x670D;&#x52A1;&#x7AEF;port number? &#x4ED6;&#x4EEC;&#x53C8;&#x4E0D;&#x5171;&#x4EAB;&#x5185;&#x5B58;&#x3002;<br>
A:</li>
</ul>
<ol>
<li>Binding information&#x53EF;&#x4EE5;&#x662F;predetermined, &#x901A;&#x8FC7;fixed port addresses. &#x7A0B;&#x5E8F;&#x7F16;&#x8BD1;&#x540E;&#xFF0C;&#x670D;&#x52A1;&#x5668;&#x65E0;&#x6CD5;&#x6539;&#x53D8;&#x8BE5;&#x670D;&#x52A1;&#x7AEF;&#x53E3;&#x3002;</li>
<li>Binding&#x53EF;&#x4EE5;&#x7531;rendezvous mechanism(&#x540C;&#x6B65;&#x6C47;&#x5408;&#x673A;&#x5236;&#xFF09;&#x6765;&#x52A8;&#x6001;&#x641E;&#x5B9A;&#x3002;&#x4E00;&#x822C;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x4F1A;&#x63D0;&#x4F9B;&#x4E00;&#x4E2A;rendezvous(&#x4E5F;&#x53EB;matchmaker) daemon&#x5728;&#x56FA;&#x5B9A;&#x7684;RPC port&#x4E0A;&#x3002;&#x5BA2;&#x6237;&#x7AEF;&#x53D1;&#x9001;&#x542B;&#x6709;RPC&#x540D;&#x79F0;&#x7684;&#x6D88;&#x606F;&#x7ED9;rendezvous daemon, &#x8BF7;&#x6C42;&#x5B83;&#x6240;&#x9700;&#x6267;&#x884C;&#x7684;port address&#x3002;&#x670D;&#x52A1;&#x7AEF;&#x8FD4;&#x56DE;&#x7AEF;&#x53E3;&#x4FE1;&#x606F;&#xFF0C;RPC&#x8C03;&#x7528;&#x53EF;&#x4EE5;&#x53D1;&#x9001;&#x5230;&#x90A3;&#x4E2A;&#x7AEF;&#x53E3;&#x76F4;&#x81F3;process terminates&#x6216;&#x8005;&#x670D;&#x52A1;&#x5668;&#x6302;&#x4E86;&#x3002;<br>
<img src="https://hanzhu.dev/content/images/2021/09/50eaa4d8-6f73-4fb0-958a-91ed3a3cb57b.png" alt="&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x7B14;&#x8BB0; from Neso" loading="lazy"></li>
</ol>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[HTTPS过程]]></title><description><![CDATA[<!--kg-card-begin: markdown--><blockquote>
<p>TLDR&#xFF1A;&#x4F7F;&#x7528;&#x975E;&#x5BF9;&#x79F0;&#x52A0;&#x5BC6;&#x4F20;&#x8F93;&#x4E00;&#x4E2A;&#x5BF9;&#x79F0;&#x5BC6;&#x94A5;K&#xFF0C;&#x8BA9;&#x670D;&#x52A1;&#x5668;&#x548C;&#x5BA2;&#x6237;&#x7AEF;&#x90FD;&#x5F97;&#x77E5;&#x3002;&#x7136;&#x540E;&#x4E24;&#x8FB9;&#x90FD;&#x4F7F;&#x7528;&#x8FD9;&#x4E2A;&#x5BF9;&#x79F0;&#x5BC6;&#x94A5;K&#x6765;&#x52A0;&#x5BC6;&#x89E3;&#x5BC6;</p></blockquote>]]></description><link>https://hanzhu.dev/https-progress/</link><guid isPermaLink="false">608113d1017a8d06dd217143</guid><category><![CDATA[network]]></category><category><![CDATA[https]]></category><dc:creator><![CDATA[Frank]]></dc:creator><pubDate>Wed, 07 Jul 2021 13:37:00 GMT</pubDate><media:content url="https://hanzhu.dev/content/images/2021/07/1_5J6ULfBAvgLF8PBM4B__Qw.jpeg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><blockquote>
<img src="https://hanzhu.dev/content/images/2021/07/1_5J6ULfBAvgLF8PBM4B__Qw.jpeg" alt="HTTPS&#x8FC7;&#x7A0B;"><p>TLDR&#xFF1A;&#x4F7F;&#x7528;&#x975E;&#x5BF9;&#x79F0;&#x52A0;&#x5BC6;&#x4F20;&#x8F93;&#x4E00;&#x4E2A;&#x5BF9;&#x79F0;&#x5BC6;&#x94A5;K&#xFF0C;&#x8BA9;&#x670D;&#x52A1;&#x5668;&#x548C;&#x5BA2;&#x6237;&#x7AEF;&#x90FD;&#x5F97;&#x77E5;&#x3002;&#x7136;&#x540E;&#x4E24;&#x8FB9;&#x90FD;&#x4F7F;&#x7528;&#x8FD9;&#x4E2A;&#x5BF9;&#x79F0;&#x5BC6;&#x94A5;K&#x6765;&#x52A0;&#x5BC6;&#x89E3;&#x5BC6;&#x6536;&#x53D1;&#x6570;&#x636E;&#x3002;&#x56E0;&#x4E3A;&#x4F20;&#x8F93;&#x5BC6;&#x94A5;K&#x662F;&#x7528;&#x975E;&#x5BF9;&#x79F0;&#x52A0;&#x5BC6;&#x65B9;&#x5F0F;&#xFF0C;&#x5F88;&#x96BE;&#x7834;&#x89E3;&#x6BD4;&#x8F83;&#x5B89;&#x5168;&#x3002;&#x800C;&#x5177;&#x4F53;&#x4F20;&#x8F93;&#x6570;&#x636E;&#x5219;&#x662F;&#x7528;&#x5BF9;&#x79F0;&#x52A0;&#x5BC6;&#x65B9;&#x5F0F;&#xFF0C;&#x52A0;&#x5FEB;&#x4F20;&#x8F93;&#x901F;&#x5EA6;&#x3002;&#x4E24;&#x5168;&#x5176;&#x7F8E;&#x3002;</p>
</blockquote>
<h1 id="https">HTTPS</h1>
<p>HTTPS&#x5176;&#x5B9E;&#x662F;&#x6709;&#x4E24;&#x90E8;&#x5206;&#x7EC4;&#x6210;&#xFF1A;HTTP + SSL / TLS&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x5728;HTTP&#x4E0A;&#x53C8;&#x52A0;&#x4E86;&#x4E00;&#x5C42;&#x5904;&#x7406;&#x52A0;&#x5BC6;&#x4FE1;&#x606F;&#x7684;&#x6A21;&#x5757;&#x3002;&#x670D;&#x52A1;&#x7AEF;&#x548C;&#x5BA2;&#x6237;&#x7AEF;&#x7684;&#x4FE1;&#x606F;&#x4F20;&#x8F93;&#x90FD;&#x4F1A;&#x901A;&#x8FC7;TLS&#x8FDB;&#x884C;&#x52A0;&#x5BC6;&#xFF0C;&#x6240;&#x4EE5;&#x4F20;&#x8F93;&#x7684;&#x6570;&#x636E;&#x90FD;&#x662F;&#x52A0;&#x5BC6;&#x540E;&#x7684;&#x6570;&#x636E;&#x3002;</p>
<p>&#x5B8C;&#x6574;HTTPS&#x8BF7;&#x6C42;&#x8FC7;&#x7A0B;&#xFF1A;</p>
<ol>
<li>&#x6D4F;&#x89C8;&#x5668;&#x8BF7;&#x6C42;&#x4E00;&#x4E2A;url&#xFF0C;&#x627E;&#x5230;&#x670D;&#x52A1;&#x5668;&#xFF0C;&#x5411;&#x670D;&#x52A1;&#x5668;&#x53D1;&#x8D77;&#x4E00;&#x4E2A;HTTPS&#x8BF7;&#x6C42;&#x3002;</li>
<li>&#x670D;&#x52A1;&#x5668;&#x5C06;&#x81EA;&#x5DF1;&#x7684;&#x8BC1;&#x4E66;(&#x5305;&#x542B;&#x670D;&#x52A1;&#x5668;&#x516C;&#x94A5;S_PuKey)&#x3001;&#x5BF9;&#x79F0;&#x52A0;&#x5BC6;&#x7B97;&#x6CD5;&#x79CD;&#x7C7B;&#x53CA;&#x5176;&#x4ED6;&#x76F8;&#x5173;&#x4FE1;&#x606F;&#x8FD4;&#x56DE;&#x5BA2;&#x6237;&#x7AEF;&#x3002;</li>
<li>&#x6D4F;&#x89C8;&#x5668;&#x68C0;&#x67E5;CA&#x8BC1;&#x4E66;&#x662F;&#x4E0D;&#x662F;&#x7531;&#x53EF;&#x4EE5;&#x4FE1;&#x8D56;&#x7684;CA&#x673A;&#x6784;&#x9881;&#x53D1;&#x7684;&#xFF0C;&#x786E;&#x8BA4;&#x8BC1;&#x4E66;&#x6709;&#x6548;&#x548C;&#x6B64;&#x8BC1;&#x4E66;&#x662F;&#x6B64;&#x7F51;&#x7AD9;&#x7684;&#x3002;&#x5982;&#x679C;&#x4E0D;&#x662F;&#xFF0C;&#x7ED9;&#x5BA2;&#x6237;&#x7AEF;&#x53D1;&#x4E00;&#x4E2A;&#x8B66;&#x544A;&#xFF0C;&#x8BE2;&#x95EE;&#x662F;&#x5426;&#x7EE7;&#x7EED;&#x8BBF;&#x95EE;&#x3002;</li>
<li>&#x5982;&#x679C;&#x662F;&#xFF0C;&#x5BA2;&#x6237;&#x7AEF;&#x4F7F;&#x7528;&#x516C;&#x94A5;&#x52A0;&#x5BC6;&#x4E86;&#x4E00;&#x4E2A;&#x968F;&#x673A;&#x5BF9;&#x79F0;&#x5BC6;&#x94A5;&#xFF0C;&#x5305;&#x62EC;&#x52A0;&#x5BC6;&#x7684;URL&#x4E00;&#x8D77;&#x53D1;&#x9001;&#x5230;&#x670D;&#x52A1;&#x5668;</li>
<li>&#x670D;&#x52A1;&#x5668;&#x7528;&#x81EA;&#x5DF1;&#x7684;&#x79C1;&#x5319;&#x89E3;&#x5BC6;&#x4E86;&#x4F60;&#x53D1;&#x9001;&#x7684;&#x94A5;&#x5319;&#x3002;&#x7136;&#x540E;&#x7528;&#x8FD9;&#x628A;&#x5BF9;&#x79F0;&#x52A0;&#x5BC6;&#x7684;&#x94A5;&#x5319;&#x7ED9;&#x4F60;&#x8BF7;&#x6C42;&#x7684;URL&#x94FE;&#x63A5;&#x89E3;&#x5BC6;&#x3002;</li>
<li>&#x670D;&#x52A1;&#x5668;&#x7528;&#x4F60;&#x53D1;&#x7684;&#x5BF9;&#x79F0;&#x94A5;&#x5319;&#x7ED9;&#x4F60;&#x8BF7;&#x6C42;&#x7684;&#x7F51;&#x9875;&#x52A0;&#x5BC6;&#x3002;&#x4F60;&#x4E5F;&#x6709;&#x76F8;&#x540C;&#x7684;&#x94A5;&#x5319;&#x5C31;&#x53EF;&#x4EE5;&#x89E3;&#x5BC6;&#x53D1;&#x56DE;&#x6765;&#x7684;&#x7F51;&#x9875;&#x4E86;&#x3002;</li>
</ol>
<p><img src="https://hanzhu.dev/content/images/2021/07/v2-fbcfb4b7d254a68b4e39ddbeef776927_720w.jpeg" alt="HTTPS&#x8FC7;&#x7A0B;" loading="lazy"></p>
<h2 id>&#x987A;&#x4FBF;&#x8865;&#x4E00;&#x4E0B;&#x6570;&#x5B57;&#x7B7E;&#x540D;&#xFF1A;&#x52A0;&#x4E86;&#x5BC6;&#x7684;&#x6821;&#x9A8C;&#x548C;</h2>
<ul>
<li>&#x8BC1;&#x660E;&#x662F;&#x539F;&#x4F5C;&#x8005;&#xFF0C;&#x53EA;&#x6709;&#x539F;&#x4F5C;&#x8005;&#x53EF;&#x4EE5;&#x79C1;&#x94A5;&#x6765;&#x8FDB;&#x884C;&#x52A0;&#x5BC6;</li>
<li>&#x8BC1;&#x660E;&#x6CA1;&#x6709;&#x7BE1;&#x6539;&#xFF0C;&#x4E2D;&#x9014;&#x7BE1;&#x6539;&#x6821;&#x9A8C;&#x548C;&#x5C31;&#x4E0D;&#x518D;&#x5339;&#x914D;<br>
&#x6821;&#x9A8C;&#x548C;&#x4F7F;&#x7528;&#x6458;&#x8981;&#x7B97;&#x6CD5;&#x751F;&#x6210;&#xFF0C;&#x6BD4;&#x5982; MD5&#xFF0C;SHA</li>
</ul>
<h2 id="tls">TLS</h2>
<p>TLS&#x5C31;&#x662F;&#x4ECE;SSL&#x53D1;&#x5C55;&#x800C;&#x6765;&#x7684;&#xFF0C;&#x53EA;&#x662F;SSL&#x53D1;&#x5C55;&#x5230;3.0&#x7248;&#x672C;&#x540E;&#x6539;&#x6210;&#x4E86;TLS&#x3002;TLS&#x4E3B;&#x8981;&#x63D0;&#x4F9B;&#x4E09;&#x4E2A;&#x57FA;&#x672C;&#x670D;&#x52A1;&#xFF1A;</p>
<ul>
<li>&#x52A0;&#x5BC6;</li>
<li>&#x8EAB;&#x4EFD;&#x9A8C;&#x8BC1;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x53EB;&#x8BC1;&#x4E66;&#x9A8C;&#x8BC1;</li>
<li>&#x6D88;&#x606F;&#x5B8C;&#x6574;&#x6027;&#x6821;&#x9A8C;<br>
<img src="https://hanzhu.dev/content/images/2021/07/screenshot-20210707-215255.png" alt="HTTPS&#x8FC7;&#x7A0B;" loading="lazy"><br>
TLS&#x534F;&#x8BAE;&#x662F;&#x57FA;&#x4E8E;TCP&#x534F;&#x8BAE;&#x4E4B;&#x4E0A;&#x7684;&#xFF0C;&#x56FE;&#x4E2D;&#x7B2C;&#x4E00;&#x4E2A;&#x84DD;&#x8272;&#x5F80;&#x8FD4;&#x662F;TCP&#x7684;&#x63E1;&#x624B;&#x8FC7;&#x7A0B;&#xFF0C;&#x4E4B;&#x540E;&#x4E24;&#x6B21;&#x6A59;&#x8272;&#x7684;&#x5F80;&#x8FD4;&#xFF0C;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x53EB;&#x505A;TLS&#x7684;&#x63E1;&#x624B;&#x3002;&#x63E1;&#x624B;&#x8FC7;&#x7A0B;&#x5982;&#x4E0B;&#xFF1A;</li>
</ul>
<ol>
<li>Client1&#xFF1A;TLS&#x7248;&#x672C;&#x53F7;+&#x6240;&#x652F;&#x6301;&#x52A0;&#x5BC6;&#x5957;&#x4EF6;&#x5217;&#x8868;+&#x5E0C;&#x671B;&#x4F7F;&#x7528;&#x7684;TLS&#x9009;&#x9879;</li>
<li>Server1:&#x9009;&#x62E9;&#x4E00;&#x4E2A;&#x5BA2;&#x6237;&#x7AEF;&#x7684;&#x52A0;&#x5BC6;&#x5957;&#x4EF6;+&#x81EA;&#x5DF1;&#x7684;&#x516C;&#x94A5;+&#x81EA;&#x5DF1;&#x7684;&#x8BC1;&#x4E66;+&#x5E0C;&#x671B;&#x4F7F;&#x7528;&#x7684;TLS&#x9009;&#x9879;+&#xFF08;&#x8981;&#x6C42;&#x5BA2;&#x6237;&#x7AEF;&#x8BC1;&#x4E66;&#xFF09;&#xFF1B;</li>
<li>Client2:(&#x81EA;&#x5DF1;&#x7684;&#x8BC1;&#x4E66;)+&#x4F7F;&#x7528;&#x670D;&#x52A1;&#x5668;&#x516C;&#x94A5;&#x548C;&#x534F;&#x5546;&#x7684;&#x52A0;&#x5BC6;&#x5957;&#x4EF6;&#x52A0;&#x5BC6;&#x4E00;&#x4E2A;&#x5BF9;&#x79F0;&#x79D8;&#x94A5;&#xFF08;&#x81EA;&#x5DF1;&#x751F;&#x6210;&#x7684;&#x4E00;&#x4E2A;&#x968F;&#x673A;&#x503C;&#xFF09;&#xFF1B;</li>
<li>Server2:&#x4F7F;&#x7528;&#x79C1;&#x94A5;&#x89E3;&#x5BC6;&#x51FA;&#x5BF9;&#x79F0;&#x79D8;&#x94A5;&#xFF08;&#x968F;&#x673A;&#x503C;&#xFF09;&#x540E;&#xFF0C;&#x53D1;&#x9001;&#x52A0;&#x5BC6;&#x7684;Finish&#x6D88;&#x606F;&#xFF0C;&#x8868;&#x660E;&#x5B8C;&#x6210;&#x63E1;&#x624B;</li>
</ol>
<p><img src="https://hanzhu.dev/content/images/2021/07/screenshot-20210707-223951.png" alt="HTTPS&#x8FC7;&#x7A0B;" loading="lazy"></p>
<ul>
<li>&#x5148;&#x770B;&#x84DD;&#x8272;&#x7684;&#x90E8;&#x5206;&#xFF0C;&#x53EF;&#x4EE5;&#x770B;&#x51FA;&#x6765;&#xFF0C;&#x8FD9;&#x662F;tcp&#x94FE;&#x63A5;&#x3002;&#x6240;&#x4EE5;https&#x7684;&#x52A0;&#x5BC6;&#x5C42;&#x4E5F;&#x662F;&#x5728;tcp&#x4E4B;&#x4E0A;&#x7684;&#x3002;</li>
<li>&#x5BA2;&#x6237;&#x7AEF;&#x9996;&#x5148;&#x53D1;&#x8D77;clientHello&#x6D88;&#x606F;&#x3002;&#x5305;&#x542B;&#x4E00;&#x4E2A;&#x5BA2;&#x6237;&#x7AEF;&#x968F;&#x673A;&#x751F;&#x6210;&#x7684;random1 &#x6570;&#x5B57;&#xFF0C;&#x5BA2;&#x6237;&#x7AEF;&#x652F;&#x6301;&#x7684;&#x52A0;&#x5BC6;&#x7B97;&#x6CD5;&#xFF0C;&#x4EE5;&#x53CA;SSL&#x4FE1;&#x606F;&#x3002;</li>
<li>&#x670D;&#x52A1;&#x5668;&#x6536;&#x5230;&#x5BA2;&#x6237;&#x7AEF;&#x7684;clientHello&#x6D88;&#x606F;&#x4EE5;&#x540E;&#xFF0C;&#x53D6;&#x51FA;&#x5BA2;&#x6237;&#x7AEF;&#x6CD5;&#x53D1;&#x6765;&#x7684;random1&#x6570;&#x5B57;&#xFF0C;&#x5E76;&#x4E14;&#x53D6;&#x51FA;&#x5BA2;&#x6237;&#x7AEF;&#x53D1;&#x6765;&#x7684;&#x652F;&#x6301;&#x7684;&#x52A0;&#x5BC6;&#x7B97;&#x6CD5;&#xFF0C;</li>
<li>&#x7136;&#x540E;&#x9009;&#x51FA;&#x4E00;&#x4E2A;&#x52A0;&#x5BC6;&#x7B97;&#x6CD5;&#xFF0C;&#x5E76;&#x751F;&#x6210;&#x4E00;&#x4E2A;&#x968F;&#x673A;&#x6570;random2&#xFF0C;&#x53D1;&#x9001;&#x7ED9;&#x5BA2;&#x6237;&#x7AEF;serverhello</li>
<li>&#x8BA9;&#x5BA2;&#x6237;&#x7AEF;&#x5BF9;&#x670D;&#x52A1;&#x5668;&#x8FDB;&#x884C;&#x8EAB;&#x4EFD;&#x6821;&#x9A8C;,&#x670D;&#x52A1;&#x7AEF;&#x901A;&#x8FC7;&#x5C06;&#x81EA;&#x5DF1;&#x7684;&#x516C;&#x94A5;&#x901A;&#x8FC7;&#x6570;&#x5B57;&#x8BC1;&#x4E66;&#x7684;&#x65B9;&#x5F0F;&#x53D1;&#x9001;&#x7ED9;&#x5BA2;&#x6237;&#x7AEF;</li>
<li>&#x5BA2;&#x6237;&#x7AEF;&#x6536;&#x5230;&#x670D;&#x52A1;&#x7AEF;&#x4F20;&#x6765;&#x7684;&#x8BC1;&#x4E66;&#x540E;&#xFF0C;&#x5148;&#x4ECE; CA &#x9A8C;&#x8BC1;&#x8BE5;&#x8BC1;&#x4E66;&#x7684;&#x5408;&#x6CD5;&#x6027;&#xFF0C;&#x9A8C;&#x8BC1;&#x901A;&#x8FC7;&#x540E;&#x53D6;&#x51FA;&#x8BC1;&#x4E66;&#x4E2D;&#x7684;&#x670D;&#x52A1;&#x7AEF;&#x516C;&#x94A5;&#xFF0C;&#x518D;&#x751F;&#x6210;&#x4E00;&#x4E2A;&#x968F;&#x673A;&#x6570; Random3&#xFF0C;&#x518D;&#x7528;&#x670D;&#x52A1;&#x7AEF;&#x516C;&#x94A5;&#x975E;&#x5BF9;&#x79F0;&#x52A0;&#x5BC6; Random3 &#x751F;&#x6210; PreMaster Key&#x3002;&#x5E76;&#x5C06;PreMaster Key&#x53D1;&#x9001;&#x5230;&#x670D;&#x52A1;&#x7AEF;,&#x670D;&#x52A1;&#x7AEF;&#x901A;&#x8FC7;&#x79C1;&#x94A5;&#x5C06;PreMaster Key&#x89E3;&#x5BC6;&#x83B7;&#x53D6;&#x5230;Random3,&#x6B64;&#x65F6;&#x5BA2;&#x6237;&#x7AEF;&#x548C;&#x670D;&#x52A1;&#x5668;&#x90FD;&#x6301;&#x6709;&#x4E09;&#x4E2A;&#x968F;&#x673A;&#x6570;Random1 Random2 Random3,&#x53CC;&#x65B9;&#x5728;&#x901A;&#x8FC7;&#x8FD9;&#x4E09;&#x4E2A;&#x968F;&#x5373;&#x4E66;&#x751F;&#x6210;&#x4E00;&#x4E2A;&#x5BF9;&#x79F0;&#x52A0;&#x5BC6;&#x7684;&#x5BC6;&#x94A5;.&#x53CC;&#x65B9;&#x6839;&#x636E;&#x8FD9;&#x4E09;&#x4E2A;&#x968F;&#x5373;&#x6570;&#x7ECF;&#x8FC7;&#x76F8;&#x540C;&#x7684;&#x7B97;&#x6CD5;&#x751F;&#x6210;&#x4E00;&#x4E2A;&#x5BC6;&#x94A5;,&#x800C;&#x4EE5;&#x540E;&#x5E94;&#x7528;&#x5C42;&#x4F20;&#x8F93;&#x7684;&#x6570;&#x636E;&#x90FD;&#x4F7F;&#x7528;&#x8FD9;&#x5957;&#x5BC6;&#x94A5;&#x8FDB;&#x884C;&#x52A0;&#x5BC6;.</li>
<li>Change Cipher Spec:&#x544A;&#x8BC9;&#x5BA2;&#x6237;&#x7AEF;&#x4EE5;&#x540E;&#x7684;&#x901A;&#x8BAF;&#x90FD;&#x4F7F;&#x7528;&#x8FD9;&#x4E00;&#x5957;&#x5BC6;&#x94A5;&#x6765;&#x8FDB;&#x884C;.</li>
</ul>
<h1 id>&#x5E38;&#x89C1;&#x52A0;&#x5BC6;&#x7B97;&#x6CD5;</h1>
<ul>
<li>
<p>&#x975E;&#x5BF9;&#x79F0;&#x52A0;&#x5BC6;&#x7B97;&#x6CD5;&#xFF08;&#x516C;&#x94A5;&#x52A0;&#x5BC6;&#xFF09;<br>
&#x6709;RSA&#x3001;DSA/DSS&#x3001;Elgamal&#x3001;Rabin&#x3001;D-H&#x3001;ECC&#x7B49;&#x3002;&#x5728;&#x5BA2;&#x6237;&#x7AEF;&#x4E0E;&#x670D;&#x52A1;&#x5668;&#x76F8;&#x4E92;&#x9A8C;&#x8BC1;&#x7684;&#x8FC7;&#x7A0B;&#x4E2D;&#x7528;&#x7684;&#x5C31;&#x662F;&#x975E;&#x5BF9;&#x79F0;&#x52A0;&#x5BC6;&#x7B97;&#x6CD5;&#x3002;RSA&#x5BC6;&#x7801;&#x4F53;&#x5236;&#x5C31;&#x662F;&#x516C;&#x94A5;&#x5BC6;&#x7801;&#x4F53;&#x5236;&#xFF0C;RSA&#x7684;&#x4E00;&#x5BF9;&#x516C;&#x94A5;&#x548C;&#x79C1;&#x94A5;&#x90FD;&#x53EF;&#x4EE5;&#x7528;&#x6765;&#x52A0;&#x5BC6;&#x548C;&#x89E3;&#x5BC6;&#x3002;&#x6BD4;&#x5982;&#x516C;&#x94A5;&#x52A0;&#x5BC6;&#x540E;&#x53EA;&#x80FD;&#x7531;&#x79C1;&#x94A5;&#x89E3;&#x5BC6;&#xFF1B;&#x79C1;&#x94A5;&#x52A0;&#x5BC6;&#x540E;&#x53EA;&#x80FD;&#x7531;&#x516C;&#x94A5;&#x89E3;&#x5BC6;&#x3002;&#x4E14;&#x4E00;&#x65B9;&#x52A0;&#x5BC6;&#x7684;&#x5185;&#x5BB9;&#x53EA;&#x80FD;&#x7531;&#x5BF9;&#x65B9;&#x8FDB;&#x884C;&#x89E3;&#x5BC6;&#x3002;</p>
</li>
<li>
<p>&#x5BF9;&#x79F0;&#x52A0;&#x5BC6;&#x7B97;&#x6CD5;&#xFF08;&#x79C1;&#x94A5;&#x52A0;&#x5BC6;&#xFF09;<br>
&#x6709;AES&#x3001;DES&#x3001;3DES&#x3001;TDEA&#x3001;Blowfish&#x3001;RC4&#x3001;RC5&#x3001;IDEA&#x7B49;&#x3002;&#x52A0;&#x5BC6;&#x4F7F;&#x7528;&#x7684;&#x5BC6;&#x94A5;&#x548C;&#x89E3;&#x5BC6;&#x4F7F;&#x7528;&#x7684;&#x5BC6;&#x94A5;&#x662F;&#x540C;&#x4E00;&#x4E2A;&#x5BC6;&#x94A5;&#x3002;&#x7531;&#x4E8E;&#x52A0;&#x5BC6;&#x7B97;&#x6CD5;&#x662F;&#x516C;&#x5F00;&#x7684;&#xFF0C;&#x82E5;&#x8981;&#x4FDD;&#x8BC1;&#x5B89;&#x5168;&#x6027;&#xFF0C;&#x5BC6;&#x94A5;&#x4E0D;&#x80FD;&#x5BF9;&#x5916;&#x516C;&#x5F00;&#x3002;&#x901A;&#x5E38;&#x7528;&#x6765;&#x52A0;&#x5BC6;&#x6D88;&#x606F;&#x4F53;&#x3002;</p>
</li>
</ul>
<p>References&#xFF1A;<br>
<a href="https://juejin.cn/post/6844903522333376525">https://juejin.cn/post/6844903522333376525</a><br>
<a href="https://blog.csdn.net/xiaoming100001/article/details/81109617">https://blog.csdn.net/xiaoming100001/article/details/81109617</a><br>
<a href="https://segmentfault.com/a/1190000019976390">https://segmentfault.com/a/1190000019976390</a><br>
<a href="https://www.jianshu.com/p/918d9f517749">https://www.jianshu.com/p/918d9f517749</a><br>
<a href="https://zhuanlan.zhihu.com/p/34732244">https://zhuanlan.zhihu.com/p/34732244</a><br>
<a href="https://juejin.cn/post/6844903545272041479">https://juejin.cn/post/6844903545272041479</a><br>
<a href="https://zhuanlan.zhihu.com/p/43789231">https://zhuanlan.zhihu.com/p/43789231</a></p>
<!--kg-card-end: markdown--><p></p>]]></content:encoded></item><item><title><![CDATA[泛型(施工中)]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>JAVA:<br>
<a href="https://www.liaoxuefeng.com/wiki/1252599548343744/1265102638843296">&#x5ED6;&#x96EA;&#x5CF0;&#x4EC0;&#x4E48;&#x662F;&#x6CDB;&#x578B;</a><br>
<a href="https://segmentfault.com/a/1190000014120746">&#x6CDB;&#x578B;&#x5C31;&#x8FD9;&#x4E48;&#x7B80;&#x5355;</a><br>
<a href="https://www.cnblogs.com/jingmoxukong/p/12049160.html">&#x6DF1;&#x5165;&#x7406;&#x89E3; Java &#x6CDB;&#x578B;</a></p>
<p>Python:<br>
<a href="https://www.pynote.net/archives/3069">&#x5173;&#x4E8E;python&#x652F;&#x6301;&#x6CDB;&#x578B;&#x7684;&#x8BA8;&#x8BBA;</a><br>
<a href="https://www.cnblogs.com/wongbingming/p/13798567.html">&#x767D;&#x5B66;&#x8FD9;&#x4E48;&#x591A;&#x5E74; Python &#xFF1F;&#x8FDE;&#x6CDB;&#x578B;&#x51FD;&#x6570;&#x90FD;&#x4E0D;&#x4F1A;</a></p>]]></description><link>https://hanzhu.dev/fan-xing/</link><guid isPermaLink="false">60a8a8f5017a8d06dd2173ca</guid><dc:creator><![CDATA[Frank]]></dc:creator><pubDate>Sat, 22 May 2021 06:49:47 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>JAVA:<br>
<a href="https://www.liaoxuefeng.com/wiki/1252599548343744/1265102638843296">&#x5ED6;&#x96EA;&#x5CF0;&#x4EC0;&#x4E48;&#x662F;&#x6CDB;&#x578B;</a><br>
<a href="https://segmentfault.com/a/1190000014120746">&#x6CDB;&#x578B;&#x5C31;&#x8FD9;&#x4E48;&#x7B80;&#x5355;</a><br>
<a href="https://www.cnblogs.com/jingmoxukong/p/12049160.html">&#x6DF1;&#x5165;&#x7406;&#x89E3; Java &#x6CDB;&#x578B;</a></p>
<p>Python:<br>
<a href="https://www.pynote.net/archives/3069">&#x5173;&#x4E8E;python&#x652F;&#x6301;&#x6CDB;&#x578B;&#x7684;&#x8BA8;&#x8BBA;</a><br>
<a href="https://www.cnblogs.com/wongbingming/p/13798567.html">&#x767D;&#x5B66;&#x8FD9;&#x4E48;&#x591A;&#x5E74; Python &#xFF1F;&#x8FDE;&#x6CDB;&#x578B;&#x51FD;&#x6570;&#x90FD;&#x4E0D;&#x4F1A;&#x5199;&#xFF1F;</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[强类型，弱类型，动态，静态]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#x672C;&#x6587;&#x975E;&#x539F;&#x521B;&#xFF0C;&#x662F;&#x4E0B;&#x5217;&#x4E00;&#x7CFB;&#x5217;&#x6587;&#x7AE0;&#x7684;&#x96C6;&#x5408;&#xFF0C;&#x5E2E;&#x52A9;&#x7406;&#x89E3;&#x3002;</p>
<h3 id="answer1">Answer 1</h3>
<p><a href="https://www.zhihu.com/question/19918532/answer/21647195">https://www.zhihu.com/question/19918532/answer/21647195</a></p>
<p>&#x7C7B;&#x578B;&#x7CFB;&#x7EDF;&#x7684;&#x4E00;&#x4E9B;&#x6982;&#x5FF5;&#xFF0C;&#x4F17;&#x8BF4;&#x7EB7;&#x7EAD;&#xFF0C;&#x4F7F;&#x7528;</p>]]></description><link>https://hanzhu.dev/qiang-ruo-dong-jing/</link><guid isPermaLink="false">60a8872b017a8d06dd217309</guid><dc:creator><![CDATA[Frank]]></dc:creator><pubDate>Sat, 22 May 2021 06:31:29 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x672C;&#x6587;&#x975E;&#x539F;&#x521B;&#xFF0C;&#x662F;&#x4E0B;&#x5217;&#x4E00;&#x7CFB;&#x5217;&#x6587;&#x7AE0;&#x7684;&#x96C6;&#x5408;&#xFF0C;&#x5E2E;&#x52A9;&#x7406;&#x89E3;&#x3002;</p>
<h3 id="answer1">Answer 1</h3>
<p><a href="https://www.zhihu.com/question/19918532/answer/21647195">https://www.zhihu.com/question/19918532/answer/21647195</a></p>
<p>&#x7C7B;&#x578B;&#x7CFB;&#x7EDF;&#x7684;&#x4E00;&#x4E9B;&#x6982;&#x5FF5;&#xFF0C;&#x4F17;&#x8BF4;&#x7EB7;&#x7EAD;&#xFF0C;&#x4F7F;&#x7528;&#x4E0A;&#x4E5F;&#x6BD4;&#x8F83;&#x4E71;&#x3002;&#x6709;&#x4E9B;&#x4E1C;&#x897F;&#xFF0C;&#x751A;&#x81F3;&#x4E0D;&#x597D;&#x4E25;&#x683C;&#x5B9A;&#x4E49;&#x3002;&#x4EE5;&#x4E0B;&#x7B97;&#x5B66;&#x672F;&#x754C;&#x7684;&#x4E00;&#x79CD;&#x76F8;&#x5BF9;&#x201C;&#x4E25;&#x683C;&#x201D;&#x7684;&#x8BF4;&#x6CD5;&#x3002;</p>
<h5 id="1">1.  &#x5148;&#x5B9A;&#x4E49;&#x4E00;&#x4E9B;&#x57FA;&#x7840;&#x6982;&#x5FF5;</h5>
<p><strong>Program Errors</strong></p>
<ul>
<li>trapped errors&#x3002;&#x5BFC;&#x81F4;&#x7A0B;&#x5E8F;&#x7EC8;&#x6B62;&#x6267;&#x884C;&#xFF0C;&#x5982;&#x9664;0&#xFF0C;Java&#x4E2D;&#x6570;&#x7EC4;&#x8D8A;&#x754C;&#x8BBF;&#x95EE;</li>
<li>untrapped errors&#x3002; &#x51FA;&#x9519;&#x540E;&#x7EE7;&#x7EED;&#x6267;&#x884C;&#xFF0C;&#x4F46;&#x53EF;&#x80FD;&#x51FA;&#x73B0;&#x4EFB;&#x610F;&#x884C;&#x4E3A;&#x3002;&#x5982;C&#x91CC;&#x7684;&#x7F13;&#x51B2;&#x533A;&#x6EA2;&#x51FA;&#x3001;Jump&#x5230;&#x9519;&#x8BEF;&#x5730;&#x5740;</li>
</ul>
<p><strong>Forbidden Behaviours</strong><br>
&#x8BED;&#x8A00;&#x8BBE;&#x8BA1;&#x65F6;&#xFF0C;&#x53EF;&#x4EE5;&#x5B9A;&#x4E49;&#x4E00;&#x7EC4;forbidden behaviors. &#x5B83;&#x5FC5;&#x987B;&#x5305;&#x62EC;&#x6240;&#x6709;untrapped errors, &#x4F46;&#x53EF;&#x80FD;&#x5305;&#x542B;trapped errors.</p>
<p><strong>Well behaved&#x3001;ill behaved</strong></p>
<ul>
<li>well behaved: &#x5982;&#x679C;&#x7A0B;&#x5E8F;&#x6267;&#x884C;&#x4E0D;&#x53EF;&#x80FD;&#x51FA;&#x73B0;forbidden behaviors, &#x5219;&#x4E3A;well behaved&#x3002;</li>
<li>ill behaved: &#x5426;&#x5219;&#x4E3A;ill behaved...</li>
</ul>
<h5 id="2">2. &#x6709;&#x4E86;&#x4E0A;&#x9762;&#x7684;&#x6982;&#x5FF5;&#xFF0C;&#x518D;&#x8BA8;&#x8BBA;&#x5F3A;&#x3001;&#x5F31;&#x7C7B;&#x578B;&#xFF0C;&#x9759;&#x6001;&#x3001;&#x52A8;&#x6001;&#x7C7B;&#x578B;</h5>
<p><strong>&#x5F3A;&#x3001;&#x5F31;&#x7C7B;&#x578B;</strong></p>
<ul>
<li>&#x5F3A;&#x7C7B;&#x578B;strongly typed: &#x5982;&#x679C;&#x4E00;&#x79CD;&#x8BED;&#x8A00;&#x7684;&#x6240;&#x6709;&#x7A0B;&#x5E8F;&#x90FD;&#x662F;well behaved&#x2014;&#x2014;&#x5373;&#x4E0D;&#x53EF;&#x80FD;&#x51FA;&#x73B0;forbidden behaviors&#xFF0C;&#x5219;&#x8BE5;&#x8BED;&#x8A00;&#x4E3A;strongly typed&#x3002;</li>
<li>&#x5F31;&#x7C7B;&#x578B;weakly typed: &#x5426;&#x5219;&#x4E3A;weakly typed&#x3002;&#x6BD4;&#x5982;C&#x8BED;&#x8A00;&#x7684;&#x7F13;&#x51B2;&#x533A;&#x6EA2;&#x51FA;&#xFF0C;&#x5C5E;&#x4E8E;trapped errors&#xFF0C;&#x5373;&#x5C5E;&#x4E8E;forbidden behaviors..&#x6545;C&#x662F;&#x5F31;&#x7C7B;&#x578B;</li>
</ul>
<p>&#x524D;&#x9762;&#x7684;&#x4EBA;&#x4E5F;&#x8BF4;&#x4E86;&#xFF0C;&#x5F31;&#x7C7B;&#x578B;&#x8BED;&#x8A00;&#xFF0C;&#x7C7B;&#x578B;&#x68C0;&#x67E5;&#x66F4;&#x4E0D;&#x4E25;&#x683C;&#xFF0C;&#x5982;&#x504F;&#x5411;&#x4E8E;&#x5BB9;&#x5FCD;&#x9690;&#x5F0F;&#x7C7B;&#x578B;&#x8F6C;&#x6362;&#x3002;&#x8B6C;&#x5982;&#x8BF4;C&#x8BED;&#x8A00;&#x7684;int&#x53EF;&#x4EE5;&#x53D8;&#x6210;double&#x3002; &#x8FD9;&#x6837;&#x7684;&#x7ED3;&#x679C;&#x662F;&#xFF1A;&#x5BB9;&#x6613;&#x4EA7;&#x751F;forbidden behaviours&#xFF0C;&#x6240;&#x4EE5;&#x662F;&#x5F31;&#x7C7B;&#x578B;&#x7684;</p>
<p><strong>&#x52A8;&#x6001;&#x3001;&#x9759;&#x6001;&#x7C7B;&#x578B;</strong></p>
<ul>
<li>&#x9759;&#x6001;&#x7C7B;&#x578B; statically: &#x5982;&#x679C;&#x5728;&#x7F16;&#x8BD1;&#x65F6;&#x62D2;&#x7EDD;ill behaved&#x7A0B;&#x5E8F;&#xFF0C;&#x5219;&#x662F;statically typed;</li>
<li>&#x52A8;&#x6001;&#x7C7B;&#x578B;dynamiclly: &#x5982;&#x679C;&#x5728;&#x8FD0;&#x884C;&#x65F6;&#x62D2;&#x7EDD;ill behaviors, &#x5219;&#x662F;dynamiclly typed&#x3002;</li>
</ul>
<h5 id="3">3. &#x8BEF;&#x533A;</h5>
<p>&#x5927;&#x5BB6;&#x89C9;&#x5F97;C&#x8BED;&#x8A00;&#x8981;&#x5199;int a, int b&#x4E4B;&#x7C7B;&#x7684;&#xFF0C;Python&#x4E0D;&#x7528;&#x5199;(&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x5199;a, b)&#xFF0C;&#x6240;&#x4EE5;C&#x662F;&#x9759;&#x6001;&#xFF0C;Python&#x662F;&#x52A8;&#x6001;&#x3002;&#x8FD9;&#x4E48;&#x7406;&#x89E3;&#x662F;&#x4E0D;&#x591F;&#x51C6;&#x786E;&#x7684;&#x3002;&#x8B6C;&#x5982;Ocaml&#x662F;&#x9759;&#x6001;&#x7C7B;&#x578B;&#x7684;&#xFF0C;&#x4F46;&#x662F;&#x4E5F;&#x53EF;&#x4EE5;&#x4E0D;&#x7528;&#x660E;&#x786E;&#x5730;&#x5199;&#x51FA;&#x6765;&#x3002;&#x3002;Ocaml&#x662F;<strong>&#x9759;&#x6001;&#x9690;&#x5F0F;&#x7C7B;&#x578B;</strong></p>
<p>&#x9759;&#x6001;&#x7C7B;&#x578B;&#x53EF;&#x4EE5;&#x5206;&#x4E3A;&#x4E24;&#x79CD;&#xFF1A;</p>
<ul>
<li>&#x5982;&#x679C;&#x7C7B;&#x578B;&#x662F;&#x8BED;&#x8A00;&#x8BED;&#x6CD5;&#x7684;&#x4E00;&#x90E8;&#x5206;&#xFF0C;&#x5728;&#x662F;<strong>explicitly typed&#x663E;&#x5F0F;&#x7C7B;&#x578B;&#xFF1B;</strong></li>
<li>&#x5982;&#x679C;&#x7C7B;&#x578B;&#x901A;&#x8FC7;&#x7F16;&#x8BD1;&#x65F6;&#x63A8;&#x5BFC;&#xFF0C;&#x662F;<strong>implicity typed&#x9690;&#x5F0F;&#x7C7B;&#x578B;</strong>, &#x6BD4;&#x5982;ML&#x548C;Haskell</li>
</ul>
<h5 id="4">4.&#x4E0B;&#x9762;&#x662F;&#x4E9B;&#x4F8B;&#x5B50;</h5>
<p>&#x65E0;&#x7C7B;&#x578B;&#xFF1A; &#x6C47;&#x7F16;<br>
&#x5F31;&#x7C7B;&#x578B;&#x3001;&#x9759;&#x6001;&#x7C7B;&#x578B; &#xFF1A; C/C++<br>
&#x5F31;&#x7C7B;&#x578B;&#x3001;&#x52A8;&#x6001;&#x7C7B;&#x578B;&#x68C0;&#x67E5;&#xFF1A; Perl/PHP<br>
&#x5F3A;&#x7C7B;&#x578B;&#x3001;&#x9759;&#x6001;&#x7C7B;&#x578B;&#x68C0;&#x67E5; &#xFF1A;Java/C#<br>
&#x5F3A;&#x7C7B;&#x578B;&#x3001;&#x52A8;&#x6001;&#x7C7B;&#x578B;&#x68C0;&#x67E5; &#xFF1A;Python, Scheme<br>
&#x9759;&#x6001;&#x663E;&#x5F0F;&#x7C7B;&#x578B; &#xFF1A;Java/C<br>
&#x9759;&#x6001;&#x9690;&#x5F0F;&#x7C7B;&#x578B; &#xFF1A;Ocaml, Haskell</p>
<p>===============</p>
<h3 id="answer2">Answer 2</h3>
<p><a href="https://www.zhihu.com/question/19918532/answer/47112288">https://www.zhihu.com/question/19918532/answer/47112288</a></p>
<p>&#x524D;&#x9762; @&#x59DA;&#x57F9;&#x68EE; &#x7ED9;&#x7684;&#x5B9A;&#x4E49;&#x6BD4;&#x8F83;&#x8BE6;&#x7EC6;&#xFF0C;&#x4F46;&#x6211;&#x89C9;&#x5F97;&#x5E76;&#x4E0D;&#x6613;&#x4E8E;&#x7406;&#x89E3;&#xFF0C;&#x800C;&#x4E14;&#x6211;&#x770B;&#x5230;&#x8BC4;&#x8BBA;&#x91CC;&#x5DF2;&#x7ECF;&#x6709;&#x4EBA;&#x4EA7;&#x751F;&#x4E86;&#x4E00;&#x4E9B;&#x8BEF;&#x89E3;&#x3002;&#x6211;&#x7684;&#x7406;&#x89E3;&#x662F;&#xFF0C;&#x8FD9;&#x4E9B;&#x6982;&#x5FF5;&#x672C;&#x8EAB;&#x5C31;&#x53EA;&#x662F;&#x4E00;&#x79CD;&#x901A;&#x4FD7;&#x7684;&#x8BF4;&#x6CD5;&#xFF0C;&#x5E76;&#x6CA1;&#x6709;&#x4E25;&#x683C;&#x7684;&#x5B9A;&#x4E49;&#xFF0C;&#x53EA;&#x80FD;&#x52C9;&#x5F3A;&#x7528;&#x4E00;&#x4E9B;&#x672F;&#x8BED;&#x6765;&#x5398;&#x6E05;&#x8FB9;&#x754C;&#x3002;&#x4E0B;&#x9762;&#x662F;&#x300A;Programming Language&#xFF1A;Application and Interpretation&#x300B;&#x91CC;&#x7ED9;&#x7684;&#x4E00;&#x79CD;&#x89E3;&#x91CA;&#xFF0C;&#x6211;&#x89C9;&#x5F97;&#x66F4;&#x6613;&#x4E8E;&#x7406;&#x89E3;&#xFF1A;<br>
<img src="https://hanzhu.dev/content/images/2021/05/ee19ac87e0b6adc9812c2e2cf77e7dc3_1440w.png" alt="ee19ac87e0b6adc9812c2e2cf77e7dc3_1440w" loading="lazy"><br>
&#x4ECE;&#x56FE;&#x4E0A;&#x770B;&#xFF0C;&#x9759;&#x6001;&#x7C7B;&#x578B;&#x3001;&#x52A8;&#x6001;&#x7C7B;&#x578B;&#x5927;&#x5BB6;&#x5E94;&#x8BE5;&#x660E;&#x767D;&#x5176;&#x5B9E;&#x662F;&#x6307;&#x7684;Type Check&#x53D1;&#x751F;&#x7684;&#x65F6;&#x673A;&#x3002;&#x800C;&#x5F3A;&#x7C7B;&#x578B;&#x3001;&#x5F31;&#x7C7B;&#x578B;&#x5230;&#x5E95;&#x662F;&#x4EC0;&#x4E48;&#x610F;&#x601D;&#x5462;&#xFF1F;&#x5176;&#x5B9E;&#x8FD9;&#x4E9B;&#x8BCD;&#x8BED;&#x672C;&#x8EAB;&#x6982;&#x5FF5;&#x5C31;&#x662F;&#x6A21;&#x7CCA;&#x4E0D;&#x6E05;&#x7684;&#xFF0C;&#x53CD;&#x6B63;&#x6211;&#x662F;&#x80FD;&#x907F;&#x514D;&#x4F7F;&#x7528;&#x5C31;&#x5C3D;&#x91CF;&#x907F;&#x514D;&#x4F7F;&#x7528;&#x3002;So what is &#x201C;strong typing&#x201D;?</p>
<blockquote>
<p>This appears to be a meaningless phrase, and people often use it in a non-sensical fashion. To some it seems to mean &#x201C;The language has a type checker&#x201D;. To others it means &#x201C;The language is sound&#x201D; (that is, the type checker and run-time system are related). To most, it seems to justmean, &#x201C;A language like Pascal, C or Java, related in a way I can&#x2019;t quite make precise&#x201D;. If someone uses thisphrase, be sure to ask them to define it for you. (For amusement, watch them squirm.)</p>
</blockquote>
<p>@&#x5218;&#x5178; &#x5728;  @&#x59DA;&#x57F9;&#x68EE; &#x7684;&#x56DE;&#x7B54;&#x4E0B;&#x9762;&#x63D0;&#x4E86;&#x4E00;&#x4E2A;&#x7591;&#x95EE;&#xFF0C;&#x6211;&#x7406;&#x4E86;&#x4E00;&#x4E0B;&#x8FD9;&#x4E2A;&#x903B;&#x8F91;&#xFF1A;</p>
<ul>
<li>&#x6309;&#x7167;&#x5B9A;&#x4E49;&#xFF0C;&#x5982;&#x679C;&#x5728;&#x7F16;&#x8BD1;&#x65F6;&#x62D2;&#x7EDD;ill behaved&#x7A0B;&#x5E8F;&#xFF0C;&#x5219;&#x662F;statically typed&#x3002;</li>
<li>&#x6309;&#x7167;&#x5B9A;&#x4E49;&#xFF0C;&#x5982;&#x679C;&#x4E00;&#x79CD;&#x8BED;&#x8A00;&#x7684;&#x6240;&#x6709;&#x7A0B;&#x5E8F;&#x90FD;&#x662F;well behaved&#xFF0C;&#x5219;&#x8BE5;&#x8BED;&#x8A00;&#x4E3A;strongly typed&#x3002;</li>
<li>&#x90A3;&#x4E48;&#xFF0C;&#x6240;&#x6709;statically typed&#x8BED;&#x8A00;&#x90FD;&#x662F;well behaved&#xFF0C;&#x5373;strongly typed&#x3002;</li>
</ul>
<p>&#x8FD9;&#x903B;&#x8F91;&#x9519;&#x5728;&#x54EA;&#x91CC;&#x5462;&#xFF1F;&#x95EE;&#x9898;&#x5728;&#x4E8E;&#xFF1A;&#x5728;&#x7F16;&#x8BD1;&#x65F6;&#x62D2;&#x7EDD;&#xFF08;&#x90E8;&#x5206;&#xFF09;ill behaved&#x662F;&#x7F16;&#x8BD1;&#x5668;&#x7684;&#x884C;&#x4E3A;&#xFF0C;&#x5E76;&#x4E0D;&#x662F;&#x6982;&#x5FF5;&#x4E0A;&#x7684;&#x5B9A;&#x4E49;&#x3002;&#x4E8B;&#x5B9E;&#x4E0A;&#xFF0C;&#x95EE;&#x9898;&#x6B63;&#x51FA;&#x5728; &#x300C;Statically Typed&#x300D;&#x8FD9;&#x4E2A;&#x8BCD;&#x8EAB;&#x4E0A;&#xFF01;</p>
<p><strong>&#x53EF;&#x4EE5;&#x8FD9;&#x4E48;&#x8BF4;&#xFF0C;&#x5E76;&#x4E0D;&#x5B58;&#x5728; Statically Typed&#xFF0C;&#x53EA;&#x6709; Statically Checked&#x3002;</strong><br>
<a href="http://lucacardelli.name/papers/typesystems.pdf">http://lucacardelli.name/papers/typesystems.pdf</a></p>
<blockquote>
<p>In general, we avoid the words type and typing when referring to run time concepts; for example we replace dynamic typing with dynamic checking and avoid common but ambiguous terms such as strong typing.</p>
</blockquote>
<p>&#x56E0;&#x4E3A;&#x5B83;&#x4E0D;&#x662F;&#x8BED;&#x8A00;&#x56FA;&#x6709;&#x5C5E;&#x6027;&#xFF0C;&#x800C;&#x662F;&#x7F16;&#x8BD1;&#x5668;&#x7684;&#x884C;&#x4E3A;&#xFF0C;&#x641E;&#x6E05;&#x8FD9;&#x70B9;&#x5C31;&#x4E0D;&#x4F1A;&#x4EA7;&#x751F;&#x8BEF;&#x89E3;&#x4E86;&#x3002;&#x53EF;&#x80FD;&#x6709;&#x4EBA;&#x4F1A;&#x95EE;&#xFF0C;&#x65E2;&#x7136;Statically Typed &#x4E0D;&#x662F;&#x8BED;&#x8A00;&#x56FA;&#x6709;&#x5C5E;&#x6027;&#xFF0C;&#x90A3;C\C++&#x3001;Java&#x7684;&#x7C7B;&#x578B;&#x58F0;&#x660E;&#x53C8;&#x600E;&#x4E48;&#x89E3;&#x91CA;&#x5462;&#xFF1F;&#x524D;&#x9762;&#x8BF4;&#x4E86;&#xFF0C;&#x90A3;&#x53EB;&#x300C;Explicitly Typed&#x300D;&#xFF0C;&#x7C7B;&#x578B;&#x662F;&#x8BED;&#x8A00;&#x8BED;&#x6CD5;&#x7684;&#x4E00;&#x90E8;&#x5206;&#xFF0C;&#x4F46;&#x5230;&#x5E95;&#x662F;&#x9759;&#x6001;&#x68C0;&#x67E5;&#x8FD8;&#x662F;&#x8FD0;&#x884C;&#x671F;&#x68C0;&#x67E5;&#xFF0C;&#x6216;&#x8005;&#x662F;&#x6839;&#x672C;&#x4E0D;&#x68C0;&#x67E5;&#xFF0C;&#x90A3;&#x5C31;&#x662F;&#x7F16;&#x8BD1;&#x5668;&#x89E3;&#x91CA;&#x5668;&#x7684;&#x884C;&#x4E3A;&#x4E86;&#x3002;&#x6BD4;&#x5982;PHP&#x6709;Type Hint&#xFF0C;&#x770B;&#x4E0A;&#x53BB;&#x5C31;&#x50CF; Explicitly Typed&#xFF0C;&#x4F46;&#x5B83;&#x662F;&#x8FD0;&#x884C;&#x5230;&#x90A3;&#x884C;&#x4EE3;&#x7801;&#x624D;&#x68C0;&#x67E5;&#xFF0C;&#x4ECD;&#x7136;&#x4E0D;&#x662F;Statically Checked&#x3002;&#x597D;&#x4E86;&#xFF0C;&#x73B0;&#x5728;&#x9759;&#x6001;&#x7C7B;&#x578B;&#x52A8;&#x6001;&#x7C7B;&#x578B;&#x7B97;&#x662F;&#x641E;&#x6E05;&#x695A;&#x4E86;&#x5427;&#x3002;</p>
<p>&#x90A3; Type Safety &#x5462;&#xFF1F;</p>
<blockquote>
<p>Type safety is the property that no primitive operation ever applies to values of the wrong type. By primitive operation we mean not only addition and so forth, but also procedure application. A safe language honors the abstraction boundaries it erects.</p>
</blockquote>
<p>&#x8FD9;&#x4E5F;&#x7B97;&#x662F;&#x901A;&#x4FD7;&#x7684;&#x89E3;&#x91CA;&#x4E86;&#xFF0C;&#x7B26;&#x5408;&#x5927;&#x4F17;&#x5370;&#x8C61;&#xFF0C;&#x5927;&#x5BB6;&#x6240;&#x7406;&#x89E3;&#x7684;&#x5F3A;&#x7C7B;&#x578B;&#x3001;&#x7C7B;&#x578B;&#x5B89;&#x5168;&#x7B49;&#xFF0C;&#x901A;&#x5E38;&#x90FD;&#x662F;&#x6307;&#x8FD0;&#x7B97;&#x7B26;&#x548C;&#x51FD;&#x6570;&#x8C03;&#x7528;&#xFF0C;&#x6BD4;&#x5982;&#x5C06;&#x539F;&#x672C;&#x4F5C;&#x7528;&#x4E8E;Int&#x7684;&#x201C;*&#x201D;&#x53BB;&#x7528;&#x5230;&#x5B57;&#x7B26;&#x4E32;&#x4E0A;&#x662F;&#x4E0D;&#x5408;&#x6CD5;&#x7684;&#xFF0C;&#x7A0B;&#x5E8F;&#x4E0D;&#x4F1A;&#x7EE7;&#x7EED;&#x5F80;&#x4E0B;&#x6267;&#x884C;&#x3002;</p>
<p>&#x4E3A;&#x4EC0;&#x4E48;C/C++ &#x662F;Type unsafe&#x5462;&#xFF1F;&#x6CE8;&#x610F;&#xFF0C;type&#x662F;&#x548C;value&#x7ED1;&#x5B9A;&#x5230;&#x4E00;&#x8D77;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#xFF1A;</p>
<pre><code>int a = 4;
char* s = (char*)a; //&#x5047;&#x8BBE;&#x7C7B;&#x578B;&#x8F6C;&#x6362;OK&#x901A;&#x8FC7;&#x7F16;&#x8BD1;
void f(char* s);
f(s); // unsafe
</code></pre>
<p>C/C++ &#x672C;&#x4E0D;&#x5177;&#x5907;&#x4E00;&#x4E2A; Sound Type System&#xFF0C;&#x5373;&#x5B83;&#x7684;&#x7C7B;&#x578B;&#x7CFB;&#x7EDF;&#x672C;&#x8EAB;&#x5C31;&#x5E76;&#x4E0D;&#x80FD;&#x4FDD;&#x8BC1;&#x5B89;&#x5168;&#x3002;</p>
<p>&#x4E3A;&#x4EC0;&#x4E48;&#x5927;&#x5BB6;&#x8BA4;&#x4E3A;Python&#x662F;&#x5F3A;&#x7C7B;&#x578B;&#x5462;&#xFF1F;&#x4E5F;&#x5C31;&#x662F;&#x8BF4;&#x4ED6;&#x4EEC;&#x503E;&#x5411;&#x4E8E;&#x8BA4;&#x4E3A;Python&#x662F;&#x7C7B;&#x578B;&#x5B89;&#x5168;&#x7684;&#xFF1F;CPython&#x89E3;&#x91CA;&#x5668;&#x5C31;&#x662F;Python&#x8BED;&#x8A00;&#x4E8B;&#x5B9E;&#x4E0A;&#x7684;&#x6807;&#x51C6;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x4EEC;&#x5C31;&#x76F4;&#x63A5;&#x770B;Python&#x89E3;&#x91CA;&#x5668;&#x7684;&#x884C;&#x4E3A;&#x4E86;&#xFF0C;&#x5B83;&#x4F1A;&#x5728;&#x8FD0;&#x884C;&#x671F;&#x68C0;&#x6D4B;&#x7C7B;&#x578B;&#x9519;&#x8BEF;&#xFF0C;&#x7A0B;&#x5E8F;&#x4F1A;&#x4E2D;&#x65AD;&#x6267;&#x884C;&#xFF1A;</p>
<pre><code>class A:
  def halo(self):
    print &quot;A&quot;

class B: 
  pass

A.halo(B()) # &#x629B;&#x51FA; TypeError,&#x5982;&#x679C;B&#x7EE7;&#x627F;&#x81EA;A&#x5219;&#x4E0D;&#x4F1A;&#x62A5;&#x9519;
</code></pre>
<p>&#x5F53;&#x7136;&#xFF0C;ctypes&#x8FD9;&#x79CD;&#x4E1C;&#x897F;&#x6211;&#x4EEC;&#x5C31;&#x4E0D;&#x8003;&#x8651;&#x4E86;&#x3002;&#x76F8;&#x6BD4;&#x4E4B;&#x4E0B;&#xFF0C;JavaScript&#x5C31;&#x5F88;&#x660E;&#x663E;&#x8C08;&#x4E0D;&#x4E0A;&#x7C7B;&#x578B;&#x5B89;&#x5168;&#xFF0C;&#x4F46;&#x8FD9;&#x4E5F;&#x53D6;&#x51B3;&#x4E8E;&#x4F60;&#x7684;&#x5B9A;&#x4E49;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x5C06;&#x7C7B;&#x578B;&#x5B89;&#x5168;&#x7684;&#x5B9A;&#x4E49;&#x653E;&#x5BBD;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x8BA4;&#x4E3A; JavaScript &#x7C7B;&#x578B;&#x5B89;&#x5168;&#xFF0C;&#x6BD4;&#x5982;&#x8C03;&#x7528;&#x4E0D;&#x5B58;&#x5728;&#x7684;&#x65B9;&#x6CD5; JS &#x4E5F;&#x4F1A;&#x4E2D;&#x65AD;&#x6267;&#x884C;&#x3002;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Golang断言Type assertions]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#x65AD;&#x8A00;type assertion&#x63D0;&#x4F9B;&#x4E86;access to an interface value&apos;s underlying concrete value.</p>
<h2 id>&#x76F4;&#x63A5;&#x65AD;&#x8A00;</h2>
<p><code>t := i.(T)</code></p>
<p>This statement asserts that the interface value i holds the concrete type T and assigns the underlying T value to the variable t.</p>
<p>If i does</p>]]></description><link>https://hanzhu.dev/golangduan-yan/</link><guid isPermaLink="false">6082a85c017a8d06dd2171fb</guid><category><![CDATA[go]]></category><dc:creator><![CDATA[Frank]]></dc:creator><pubDate>Sun, 25 Apr 2021 12:21:08 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x65AD;&#x8A00;type assertion&#x63D0;&#x4F9B;&#x4E86;access to an interface value&apos;s underlying concrete value.</p>
<h2 id>&#x76F4;&#x63A5;&#x65AD;&#x8A00;</h2>
<p><code>t := i.(T)</code></p>
<p>This statement asserts that the interface value i holds the concrete type T and assigns the underlying T value to the variable t.</p>
<p>If i does not hold a T, the statement will trigger a panic.&#x76F4;&#x63A5;&#x65AD;&#x8A00;&#x4F1A;&#x5BFC;&#x81F4;panic&#x3002;</p>
<h2 id>&#x6D4B;&#x8BD5;&#x65AD;&#x8A00;</h2>
<p>To test whether an interface value holds a specific type, a type assertion can return two values: the underlying value and a boolean value that reports whether the assertion succeeded.</p>
<p><code>t, ok := i.(T)</code></p>
<p>If i holds a T, then t will be the underlying value and ok will be true.</p>
<p>If not, <strong>ok will be false</strong> and <strong>t will be the zero value of type T</strong>, and <strong>no panic</strong> occurs.</p>
<p>Note the similarity between this syntax and that of reading from a map.</p>
<p>&#x793A;&#x4F8B;&#xFF1A;</p>
<pre><code class="language-go">package main

import &quot;fmt&quot;

func main() {
	var i interface{} = &quot;hello&quot;

	s := i.(string)
	fmt.Println(s)

	s, ok := i.(string)
	fmt.Println(s, ok)

	f, ok := i.(float64)
	fmt.Println(f, ok)

	f = i.(float64) // panic
	fmt.Println(f)
}
</code></pre>
<p>&#x8F93;&#x51FA;</p>
<pre><code>hello
hello true
0 false
panic: interface conversion: interface {} is string, not float64

goroutine 1 [running]:
main.main()
	/tmp/sandbox227310573/prog.go:17 +0x1fe
</code></pre>
<h2 id="switch">&#x914D;&#x5408;Switch</h2>
<p>&#x53E6;&#x5916;&#x4E5F;&#x53EF;&#x4EE5;&#x914D;&#x5408;switch&#x8BED;&#x53E5;&#x8FDB;&#x884C;&#x5224;&#x65AD;&#xFF1A;</p>
<pre><code class="language-go">package main

import &quot;fmt&quot;

func findType(i interface{}) {
    switch x := i.(type) {
    case int:
        fmt.Println(x, &quot;is int&quot;)
    case string:
        fmt.Println(x, &quot;is string&quot;)
    case nil:
        fmt.Println(x, &quot;is nil&quot;)
    default:
        fmt.Println(x, &quot;not type matched&quot;)
    }
}

func main() {
    findType(10)      // int
    findType(&quot;hello&quot;) // string

    var k interface{} // nil
    findType(k)

    findType(10.23) //float64
}
</code></pre>
<p>&#x8FD0;&#x884C;&#x7ED3;&#x679C;&#xFF1A;</p>
<pre><code>10 is int
hello is string
&lt;nil&gt; is nil
10.23 not type matched
</code></pre>
<p>References:<br>
<a href="https://studygolang.com/articles/3314">https://studygolang.com/articles/3314</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Python threading VS multiprocessing(施工中)]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Threading vs Multiprocessing</p>
<p>Threading:</p>
<ul>
<li>A new thread is spawned within the existing process</li>
<li>Starting a thread is faster than starting a process</li>
<li>Memory is shared between all threads</li>
<li>Mutexes often necessary to control access to shared data</li>
<li>One GIL (Global Interpreter Lock) for all threads</li>
</ul>
<p>Multiprocessing:</p>
<ul>
<li>A new process is</li></ul>]]></description><link>https://hanzhu.dev/python-threading-vs-multiprocessing/</link><guid isPermaLink="false">5e5fc6f1017a8d06dd2160e5</guid><category><![CDATA[python]]></category><dc:creator><![CDATA[Frank]]></dc:creator><pubDate>Thu, 22 Apr 2021 13:19:00 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Threading vs Multiprocessing</p>
<p>Threading:</p>
<ul>
<li>A new thread is spawned within the existing process</li>
<li>Starting a thread is faster than starting a process</li>
<li>Memory is shared between all threads</li>
<li>Mutexes often necessary to control access to shared data</li>
<li>One GIL (Global Interpreter Lock) for all threads</li>
</ul>
<p>Multiprocessing:</p>
<ul>
<li>A new process is started independent from the first process</li>
<li>Starting a process is slower than starting a thread</li>
<li>Memory is not shared between processes</li>
<li>Mutexes not necessary (unless threading in the new process)</li>
<li>One GIL (Global Interpreter Lock) for each process</li>
</ul>
<p>&#x8DD1;Threading&#x65F6;&#xFF0C;&#x53EA;&#x6709;&#x4E00;&#x4E2A;CPU&#x5360;&#x6EE1;&#xFF0C;&#x56E0;&#x4E3A;GIL&#x9501;&#x4F4F;&#x4E86;&#xFF1B;Multiprocessing&#x65F6;&#xFF0C;&#x6240;&#x6709;core&#x90FD;&#x5360;&#x6EE1;&#x4E86;&#x3002;&#x867D;&#x7136;Threading&#x4E0D;&#x53EF;&#x4EE5;in parallel, &#x5B83;&#x53EF;&#x4EE5;concurrently,&#x901A;&#x8FC7;&#x5207;&#x7247;&#x6765;&#x56DE;&#x8DF3;&#x3002;</p>
<p>Threading&#x9002;&#x5408;I/O bound&#x7684;task&#xFF0C;&#x56E0;&#x4E3A;&#x9700;&#x8981;&#x7B49;&#x5F85;&#x78C1;&#x76D8;&#x6216;&#x8005;&#x7F51;&#x7EDC;&#x54CD;&#x5E94;&#x3002;&#x5982;&#x679C;&#x662F;CPU bound&#x7684;&#x4EFB;&#x52A1;&#xFF0C;&#x5219;&#x4FBF;&#x5B9C;&#x4E0D;&#x5927;&#x3002;<br>
<img src="https://hanzhu.dev/content/images/2020/03/WX20200305-134615@2x.png" alt="WX20200305-134615@2x" loading="lazy"></p>
<p>&#x4F20;&#x7EDF;&#x505A;&#x6CD5;&#x793A;&#x4F8B;&#x4EE3;&#x7801;&#xFF1A;</p>
<pre><code class="language-python">import threading
import time

start = time.perf_counter()

def do_something(seconds):
    print(f&apos;Sleeping {seconds} second...&apos;)
    time.sleep(seconds)
    print(&apos;Done Sleeping...&apos;)

threads = []
    
for _ in range(10):
    #&#x5148;&#x8BBE;&#x7F6E;&#xFF0C;&#x8FD8;&#x6CA1;&#x8DD1;
    t = threading.Thread(target=do_something, args=[1.5])
    #&#x5F00;&#x59CB;&#x8DD1;
    t.start()
    #&#x4E0D;&#x80FD;&#x5728;loop&#x5185;join&#x662F;&#x56E0;&#x4E3A;&#x5B83;&#x4F1A;join on the thread before looping through and creating and starting the next thread&#xFF0C;&#x672C;&#x8D28;&#x4E0A;&#x4E0E;synchronously&#x8DD1;&#x65E0;&#x5F02;
    #&#x6240;&#x4EE5;&#x9700;&#x8981;&#x529E;&#x6CD5;&#x5148;start threads in one loop&#xFF0C;&#x7136;&#x540E;&#x518D;&#x6B21;loop through the threads again and then run the join method on them
    #&#x505A;&#x6CD5;&#x662F;append&#x53BB;&#x4E00;&#x4E2A;list
    threads.append(t)

for thread in threads:
    thread.join()

    
finish = time.perf_counter()

print (f&apos;Finished in {round(finish-start,2)} second(s)&apos;)
</code></pre>
<p>Python3.2&#x4E4B;&#x540E;&#x6709;&#x4E86;thread pool executor, &#x66F4;&#x65B9;&#x4FBF;&#x9AD8;&#x6548;&#x4E5F;&#x53EF;&#x4EE5;&#x66F4;&#x65B9;&#x4FBF;&#x5207;&#x6362;&#x53BB;multiple processes&#xFF0C;&#x5982;&#x679C;&#x6709;&#x9700;&#x6C42;&#x7684;&#x8BDD;:</p>
<pre><code class="language-python">import concurrent.futures
import time

start = time.perf_counter()

def do_something(seconds):
    print(f&apos;Sleeping {seconds} second...&apos;)
    time.sleep(seconds)
    return f&apos;Done Sleeping...{seconds}&apos;

with concurrent.futures.ThreadPoolExecutor() as executor:
    #submit&#x65B9;&#x6CD5;schedules a function to be executed and returns a future object.
    #future object encapsulates executation of our function, &#x8FD8;&#x5141;&#x8BB8;&#x4F60;&#x5728;scheduled&#x540E;&#x67E5;&#x770B;&#x5B83;, run, done,&#x6216;&#x8005;result  
    
    secs = [5,4,3,2,1]
    #&#x6B64;&#x5904;&#x7528;&#x5230;List comprehension
    results = [executor.submit(do_something, sec) for sec in secs]
    
    for f in concurrent.futures.as_completed(results):
        print(f.result())
    
#     f1 = executor.submit(do_something, 1)
#     f2 = executor.submit(do_something, 1)
#     print(f1.result())
#     print(f2.result())
    
    
finish = time.perf_counter()

print (f&apos;Finished in {round(finish-start,2)} second(s)&apos;)
</code></pre>
<p>&#xFF08;&#x8FD8;&#x53EF;&#x4EE5;&#x52A0;&#x4E0A;multiprocessing&#x7684;&#x4F8B;&#x5B50;&#xFF0C;&#x7D22;&#x6027;&#x8BB2;&#x8BB2;&#x900F;&#xFF09;</p>
<p>Reference:<br>
<a href="https://www.youtube.com/watch?v=ecKWiaHCEKs">https://www.youtube.com/watch?v=ecKWiaHCEKs</a><br>
<a href="https://www.youtube.com/watch?v=IEEhzQoKtQU&amp;t=19s">https://www.youtube.com/watch?v=IEEhzQoKtQU&amp;t=19s</a><br>
<a href="https://www.liaoxuefeng.com/wiki/1016959663602400/1017628290184064">https://www.liaoxuefeng.com/wiki/1016959663602400/1017628290184064</a><br>
<a href="https://www.liaoxuefeng.com/wiki/1016959663602400/1017629247922688">https://www.liaoxuefeng.com/wiki/1016959663602400/1017629247922688</a><br>
<a href="https://timber.io/blog/multiprocessing-vs-multithreading-in-python-what-you-need-to-know/">https://timber.io/blog/multiprocessing-vs-multithreading-in-python-what-you-need-to-know/</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>