<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Cherrymelon's Blog</title>
        <link>https://cherrymelon.me/</link>
        <description>Generate by NotionNext</description>
        <lastBuildDate>Tue, 26 Sep 2023 08:32:56 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-CN</language>
        <copyright>All rights reserved 2023, Cherrymelon</copyright>
        <item>
            <title><![CDATA[MySQL索引相关]]></title>
            <link>https://cherrymelon.me/article/207285e3-81e1-4453-9067-9f74eb598924</link>
            <guid>https://cherrymelon.me/article/207285e3-81e1-4453-9067-9f74eb598924</guid>
            <pubDate>Sat, 05 Nov 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Mysql 索引常识总结]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-207285e381e1445390679f74eb598924"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><h4 class="notion-h notion-h3 notion-h-indent-0 notion-block-d5e3ff8efdb74035a990cb1b78bde47f" data-id="d5e3ff8efdb74035a990cb1b78bde47f"><span><div id="d5e3ff8efdb74035a990cb1b78bde47f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#d5e3ff8efdb74035a990cb1b78bde47f" title="从数据结构角度"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>从数据结构角度</b></span></span></h4><div class="notion-text notion-block-dcce520ffbd44135ac3c04c3bc652ba1">1、B+树索引(O(log(n)))：关于B+树索引，可以参考 <a target="_blank" rel="noopener noreferrer" class="notion-link" href="http://blog.codinglabs.org/articles/theory-of-mysql-index.html">MySQL索引背后的数据结构及算法原理</a></div><div class="notion-text notion-block-58effb42ba6f40dba55fcff237afb860">2、hash索引：
a 仅仅能满足&quot;=&quot;,&quot;IN&quot;和&quot;&lt;=&gt;&quot;查询，不能使用范围查询
b 其检索效率非常高，索引的检索可以一次定位，不像B-Tree 索引需要从根节点到枝节点，最后才能访问到页节点这样多次的IO访问，所以 Hash 索引的查询效率要远高于 B-Tree 索引
c 只有Memory存储引擎显示支持hash索引</div><div class="notion-text notion-block-e65578d1f58c4a819b3f90eda809f096">3、FULLTEXT索引（现在MyISAM和InnoDB引擎都支持了）</div><div class="notion-text notion-block-1bc413ddffca493991078295208d68cb">4、R-Tree索引（用于对GIS数据类型创建SPATIAL索引）</div><h4 class="notion-h notion-h3 notion-h-indent-0 notion-block-34ec6a1648cc4d0d931e333b01168f6a" data-id="34ec6a1648cc4d0d931e333b01168f6a"><span><div id="34ec6a1648cc4d0d931e333b01168f6a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#34ec6a1648cc4d0d931e333b01168f6a" title="从物理存储角度"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>从物理存储角度</b></span></span></h4><div class="notion-text notion-block-a412eec767f8422b849689f006f0f085">1、聚集索引（clustered index）</div><div class="notion-text notion-block-48924d79fa4d41dd8e989c59f09e8f9a">2、非聚集索引（non-clustered index）</div><h4 class="notion-h notion-h3 notion-h-indent-0 notion-block-8f462bf3f8c444d880453d8d14b5c2ad" data-id="8f462bf3f8c444d880453d8d14b5c2ad"><span><div id="8f462bf3f8c444d880453d8d14b5c2ad" class="notion-header-anchor"></div><a class="notion-hash-link" href="#8f462bf3f8c444d880453d8d14b5c2ad" title="从逻辑角度"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>从逻辑角度</b></span></span></h4><div class="notion-text notion-block-70d8a352229a47579e5d23e4de3e87f7">1、主键索引：主键索引是一种特殊的唯一索引，不允许有空值</div><div class="notion-text notion-block-ea54e1281a7442cba51eae1fb9cf38b7">2、普通索引或者单列索引</div><div class="notion-text notion-block-2e17d66ea3ac4219843d9c216849f94b">3、多列索引（复合索引）：复合索引指多个字段上创建的索引，只有在查询条件中使用了创建索引时的第一个字段，索引才会被使用。使用复合索引时遵循最左前缀集合</div><div class="notion-text notion-block-74ce080d205b4d379f43f14209da3532">4、唯一索引或者非唯一索引</div><div class="notion-text notion-block-bb866d95dc7d419b9378133735ebdc42">5、空间索引：空间索引是对空间数据类型的字段建立的索引，MYSQL中的空间数据类型有4种，分别是GEOMETRY、POINT、LINESTRING、POLYGON。
MYSQL使用SPATIAL关键字进行扩展，使得能够用于创建正规索引类型的语法创建空间索引。创建空间索引的列，必须将其声明为NOT NULL，空间索引只能在存储引擎为MYISAM的表中创建</div><div class="notion-text notion-block-6cddaf5d9ff7485caa953557bb6bd6cd">1、unique|fulltext|spatial为可选参数，分别表示唯一索引、全文索引和空间索引；</div><div class="notion-text notion-block-002435bf4c8442dea2310ffe9491b61b">2、index和key为同义词，两者作用相同，用来指定创建索引</div><div class="notion-text notion-block-03ac4edb9a38404ca2911d12bff014f5">3、col_name为需要创建索引的字段列，该列必须从数据表中该定义的多个列中选择；</div><div class="notion-text notion-block-87b9f9a416bb4b32b0cabc186a340d4c">4、index_name指定索引的名称，为可选参数，如果不指定，MYSQL默认col_name为索引值；</div><div class="notion-text notion-block-af2321d9802646d68b5a6db1e88f25a8">5、length为可选参数，表示索引的长度，只有字符串类型的字段才能指定索引长度；</div><div class="notion-text notion-block-ae8e40b34edf440f93d34d0e4bf7c631">6、asc或desc指定升序或降序的索引值存储</div><div class="notion-blank notion-block-ce806c4f86ab427cbfd534ae2035d06a"> </div><h4 class="notion-h notion-h3 notion-h-indent-0 notion-block-44959397f0414eb1a9d71a87794c296b" data-id="44959397f0414eb1a9d71a87794c296b"><span><div id="44959397f0414eb1a9d71a87794c296b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#44959397f0414eb1a9d71a87794c296b" title="避免索引失效"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>避免索引失效</b></span></span></h4><div class="notion-text notion-block-4673e5709a9b40f6975112f6e928933c">1). 全值匹配 ，对索引中所有列都指定具体值。该情况下，索引生效，执行效率高。</div><div class="notion-text notion-block-de85046620df4c71bdc9724922841b4e">2). 左前缀法则如果索引了多列，要遵守左前缀法则。指的是查询从索引的左前列开始，并且不跳过索引中的列，否则索引失效。<div class="notion-text-children"><blockquote class="notion-quote notion-block-15d432bb1cb4434187204b40ae2e3655"><div><span class="notion-orange"><em>1）匹配左前缀法则，走索引。结果也只是显示最后的匹配情况。</em></span></div><div class="notion-text notion-block-08b225bcabf04a95bf336712874f2246"><span class="notion-orange"><em>2）如果符合左法则，但是出现跳跃某一列，只有左列索引生效。</em></span></div><div class="notion-text notion-block-942120f953434e45ab816662439e0e49"><span class="notion-orange"><em>3). 范围查询右边的列，不能使用索引 ，否则破坏后面字段的索引。</em></span></div></blockquote></div></div><div class="notion-text notion-block-31f3622821e74ff0a23d2de54a917ea5">4). 不要在索引列上进行运算操作， 索引将失效。</div><div class="notion-text notion-block-0f18984f3fb84cc488160384b8034318">5). 字符串不加单引号，造成索引失效。【在查询是，没有对字符串加单引号，MySQL的查询优化器，会自动的进行类型转换，造成索引失效】</div><div class="notion-text notion-block-8898e568d4f343079b7d71cca17ec16a">6). 尽量使用覆盖索引，避免select *尽量使用覆盖索引（只访问索引的查询（索引列完全包含查询列）如：select id from user，id是user的某个索引），减少select * 。</div><div class="notion-text notion-block-76e964dee8d44e3b9b6e461f8fd5635a">7). 用or分割开的条件， 如果or前的条件中的列有索引，而后面的列中没有索引，那么涉及的索引都不会被用到。但是and不会受影响示例，name字段是索引列 ， 而createtime不是索引列，中间是or进行连接是不走索引的8). 以%开头的Like模糊查询，索引失效。如果仅仅是尾部模糊匹配，索引不会失效。如果是头部模糊匹配，索引失效。【如果使用了，可以应用索引覆盖来解决。】</div><div class="notion-text notion-block-86d1f2da1af24c589f474c6ea7917426">9). 如果MySQL评估使用索引比全表更慢，则不使用索引。</div><div class="notion-text notion-block-a43f78caed1e440e84cbee39d8df22f9">10). is NULL ， is NOT NULL 有时索引失效</div><div class="notion-text notion-block-ffda8aa1c05042a386c9359bd1c37fd4">11). <span class="notion-red">in 走索引， not in 索引也走索引</span></div><div class="notion-text notion-block-9133f7b7495547f9bf3f1c18e0ccb21f">12). 单列索引和复合索引。尽量使用复合索引，而少使用单列索引</div><h4 class="notion-h notion-h3 notion-h-indent-0 notion-block-f5fb73439abe40e896daa8fddbaed0bf" data-id="f5fb73439abe40e896daa8fddbaed0bf"><span><div id="f5fb73439abe40e896daa8fddbaed0bf" class="notion-header-anchor"></div><a class="notion-hash-link" href="#f5fb73439abe40e896daa8fddbaed0bf" title="覆盖索引和索引下推"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">覆盖索引和索引下推</span></span></h4><div class="notion-text notion-block-ead8290e76964ee5bd286eebaac63655">两者概念区别在于覆盖索引发生在索引数据查询完毕后要不要回表查询row_data,即select * 还是 column1，2，3。</div><div class="notion-text notion-block-8301e585a6844dd5909fe192670ac8ab">索引下推发生在二级索引中，当查询条件均为联合索引中字段时，开启索引下推后不会在根据第一个索引数据拿到符合条件的row id后回表查找第二个条件的值，而是直接利用索引metadata进行比较</div><h4 class="notion-h notion-h3 notion-h-indent-0 notion-block-aa7de8b597b5475ebf552c98e4b5541e" data-id="aa7de8b597b5475ebf552c98e4b5541e"><span><div id="aa7de8b597b5475ebf552c98e4b5541e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#aa7de8b597b5475ebf552c98e4b5541e" title="Next-Key lock and Gap lock"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Next-Key lock and Gap lock</span></span></h4><div class="notion-text notion-block-ed119685306f4dd58cb34a856b7e7800">总结一句话，主键索引gap锁是前开后开，唯一索引和普通索引是前开后闭</div><div class="notion-text notion-block-fc792dce5a2b44c1a254b357dffd276d">情况比较多，一一列举</div><div class="notion-text notion-block-780f2936bd8d483aa2b920015c256acc">等值查询时：</div><div class="notion-text notion-block-a70502ee87c74d12857ccf29a35ffee2">如果值不存在</div><div class="notion-text notion-block-dfc66368f74a4bda9b15ae7f7394e6a3">主键索引，唯一索引，普通索引均走间隙锁</div><div class="notion-text notion-block-f0ddac65d7cf4bf09a91640c225ec4bd">如果值存在</div><div class="notion-text notion-block-0f4b96db36ab47189ce9cfb1596d4254">主键索引 唯一索引退化为record lock，普通索引锁住(前一个最大值，后一个最小值)</div><div class="notion-blank notion-block-5e3d0ad847ca443694d9524f0dcbe645"> </div><div class="notion-text notion-block-49fe59c3bb354c648d7cc6dfeae59ed8">范围查询时：</div><div class="notion-text notion-block-29781672d1874fb09107c092f9d27107">主键索引查询范围带=号时，MySQL的版本影响锁的范围，如id有1，4，6，8时，where id≥6会因8.0.25版本修复后，只锁住[6,8),而17之前的版本会锁住[4,8),</div><div class="notion-text notion-block-16d19b855b504af99a3b626fc2898f5d">where id≥5时，新版本会锁住(4，6)区间，和主键的等值查询一致，老版本会锁住[4,6)</div><div class="notion-text notion-block-63e9bef395a7462886a8c58efd49480c">主键范围查询不带等号时，会锁住范围开区间</div><div class="notion-text notion-block-41a98db6f11948c7a5aa0e16389de3cb">非主键唯一索引：</div><div class="notion-text notion-block-5af77720fa064821b9f92291f60e772a">默认会锁住前开后闭区间</div><div class="notion-text notion-block-0d219a27483f4c75bb5a9c0020338abb">普通索引：</div><div class="notion-text notion-block-492847374d5e407c9ff36efe9b997563">默认锁住前开后闭区间，如b有1，5，10，15，20，where b&gt;5 and b≤10，会锁住(5,10],(10,15],即遵循没修bug之前的逻辑</div><div class="notion-blank notion-block-4e26834a70d44fe3beaf030ffef66e45"> </div><div class="notion-text notion-block-429c3363ad2c49eb9f433bd7da94f205">特殊情况</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-f5ce05fc525545169bf3b899e897699a"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fd767e8d9-f380-473b-b4fb-25b0f70478da%2FUntitled.png?table=block&amp;id=f5ce05fc-5255-4516-9bf3-b899e897699a" alt="notion image" loading="lazy" decoding="async"/></div></figure><a class="notion-page-link notion-block-d9dd09eac13747b69472a1525593f3f5" href="/d9dd09eac13747b69472a1525593f3f5"><span class="notion-page-title"><div class="notion-page-icon-inline notion-page-icon-image"><svg class="notion-page-title-icon notion-page-icon" alt="MySQL加锁总结" viewBox="0 0 30 30" width="16"><path d="M16,1H4v28h22V11L16,1z M16,3.828L23.172,11H16V3.828z M24,27H6V3h8v10h10V27z M8,17h14v-2H8V17z M8,21h14v-2H8V21z M8,25h14v-2H8V25z"></path></svg></div><span class="notion-page-title-text">MySQL加锁总结</span></span></a><div class="notion-text notion-block-c21241e7333e4673856fd9bc553f80c9">关于加锁补充一点小细节，在二级索引上，数据的组织格式是[普通索引，主键]，而这就导致了gap 锁的范围是到主键下标为止！！！</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-f36d8d8e47684c24bbc68d4ad1fc2196"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fdd309bff-c3cc-452e-90e9-8ee36351ffaf%2FUntitled.png?table=block&amp;id=f36d8d8e-4768-4c24-bbc6-8d4ad1fc2196" alt="notion image" loading="lazy" decoding="async"/></div></figure><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-b39d63696fba4e1db656f5e304adef82"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fcb93b352-173c-4c27-85d0-d086f2ec183a%2FUntitled.png?table=block&amp;id=b39d6369-6fba-4e1d-b656-f5e304adef82" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-blank notion-block-62c24bb9261343e18d35d26f6d3bc275"> </div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Go语言笔记]]></title>
            <link>https://cherrymelon.me/article/01ca8d5a-afc9-4140-8107-aeca83bec7e5</link>
            <guid>https://cherrymelon.me/article/01ca8d5a-afc9-4140-8107-aeca83bec7e5</guid>
            <pubDate>Fri, 02 Jul 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Go 学习之路]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-01ca8d5aafc941408107aeca83bec7e5"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-4623d83d299f478f81849d64269d2ee3"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F63c6dbf5-3077-409d-b230-3d2264224e96%2FUntitled.png?table=block&amp;id=4623d83d-299f-478f-8184-9d64269d2ee3" alt="notion image" loading="lazy" decoding="async"/></div></figure><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-34152fa360fa4dcdb06c4c99505cd61e" data-id="34152fa360fa4dcdb06c4c99505cd61e"><span><div id="34152fa360fa4dcdb06c4c99505cd61e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#34152fa360fa4dcdb06c4c99505cd61e" title="Go路上遇到的坑一"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Go路上遇到的坑一</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-5b9a1c14116d425086a576078147ab02" data-id="5b9a1c14116d425086a576078147ab02"><span><div id="5b9a1c14116d425086a576078147ab02" class="notion-header-anchor"></div><a class="notion-hash-link" href="#5b9a1c14116d425086a576078147ab02" title="1.魔鬼隐藏在细节中"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1.魔鬼隐藏在细节中</span></span></h4><div class="notion-text notion-block-ad9e9ddfb99e4001a1faf8e4a9356864">Go是传值方式传参，slice结构体中的length和cap都是值！！！</div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Python面试归纳]]></title>
            <link>https://cherrymelon.me/article/40f912dc-1257-46be-b47b-3561cedbd77e</link>
            <guid>https://cherrymelon.me/article/40f912dc-1257-46be-b47b-3561cedbd77e</guid>
            <pubDate>Thu, 02 Mar 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[遇到的面试问题分享]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-40f912dc125746beb47b3561cedbd77e"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-b7054a6def0a496cb5f60beb8b09e6d2" data-id="b7054a6def0a496cb5f60beb8b09e6d2"><span><div id="b7054a6def0a496cb5f60beb8b09e6d2" class="notion-header-anchor"></div><a class="notion-hash-link" href="#b7054a6def0a496cb5f60beb8b09e6d2" title="Python"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Python</span></span></h2><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-ad93353b8ef4404997025e2745f840e0" data-id="ad93353b8ef4404997025e2745f840e0"><span><div id="ad93353b8ef4404997025e2745f840e0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#ad93353b8ef4404997025e2745f840e0" title="gc要点"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>gc要点</b></span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-85f1428eb92c4161beb6f98e8726bf58"><li>python gc算法原理是？引用计数为主，标记清除和分代为辅</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-453874ff08e546869a205299f66002ff"><li>为啥单纯引用计数算法不行？因为引用计数无法解决循环引用问题</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-40af8d52e2024c16a67550e46138add9"><li>标记清除如何运作？可达性算法，从根对象出发，以引用作为有向边，DFS或BFS，未能标记上的对象作为要清除的对象</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-aebcbcdddfae400490f8be00fc2b9c35"><li>怎么分代回收？按经过的gc次数分类，分为新生代，中年代，老年代，新对象总是属于新生代，经过一定次数新生代gc后移动到中年代，以此类推</li></ol><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-faf118845ae24dceb0232b51cb06b079" data-id="faf118845ae24dceb0232b51cb06b079"><span><div id="faf118845ae24dceb0232b51cb06b079" class="notion-header-anchor"></div><a class="notion-hash-link" href="#faf118845ae24dceb0232b51cb06b079" title="类"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>类</b></span></span></h3><ol start="1" class="notion-list notion-list-numbered notion-block-ec6fd98a1da5404e93359693383af646"><li>新式类和旧式类有什么区别？继承顺序不同，C3</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-a22b2ba253544ab2a0e3fc1596ee79ce"><li>什么是metaclass？有什么用处？metaclass是类的类，可以用来改变类的创建过程</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-881c59b409614db187e0a10da307018d"><li>__<b>new</b>__和__init__的区别？</li></ol><div class="notion-blank notion-block-ce686dd1571148bf8e0e25a6df167181"> </div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-f70a17efc3e14781ab3b444893555e9e" data-id="f70a17efc3e14781ab3b444893555e9e"><span><div id="f70a17efc3e14781ab3b444893555e9e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#f70a17efc3e14781ab3b444893555e9e" title="如何实现一个单例模式？"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">如何实现一个单例模式？</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-0c861b77a8564f1d8c740246a774e4b1"><li>装饰器</li></ol><ol start="1" class="notion-list notion-list-numbered notion-block-d0ea90b38d6048c2ad3a5ebe8e927541"><li>metaclass</li></ol><ol start="1" class="notion-list notion-list-numbered notion-block-94c2fa2a608344fc9bc78ddb008f6a59"><li>__<b>new</b>__方法</li></ol><ol start="1" class="notion-list notion-list-numbered notion-block-3ec07b3ccf3b425db35e90f4574840e9"><li>staticmethod classmethod 和实例方法有什么区别？</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-60d813ee93374e1790ffcb4212d1c308"><li>with背后是什么方法？__enter__ 和__exit__ 方法</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-203f82e4d2164a88b7826cf23737a949"><li>装饰器的利弊？使用装饰器极大地复用了代码，但是他有一个缺点就是原函数的元信息不见了，比如函数的<code class="notion-inline-code"><b>docstring</b></code>、<code class="notion-inline-code"><b>__name__</b></code>、参数列表，不难发现，函数 f 被<code class="notion-inline-code"><b>with_logging</b></code>取代了，当然它的<code class="notion-inline-code"><b>docstring</b></code>，<code class="notion-inline-code"><b>__name__</b></code>就是变成了<code class="notion-inline-code"><b>with_logging</b></code>函数的信息了。好在我们有<code class="notion-inline-code"><b>functools.wraps</b></code>，<code class="notion-inline-code"><b>wraps</b></code>本身也是一个装饰器，它能把原函数的元信息拷贝到装饰器里面的 func 函数中，这使得装饰器里面的 func 函数也有和原函数 foo 一样的元信息了</li></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-70c8b1bb0f874c2194c9ceea16ed3520" data-id="70c8b1bb0f874c2194c9ceea16ed3520"><span><div id="70c8b1bb0f874c2194c9ceea16ed3520" class="notion-header-anchor"></div><a class="notion-hash-link" href="#70c8b1bb0f874c2194c9ceea16ed3520" title="GIL"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">GIL</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-5107027eb7df433c9caf7d4996828275"><li>什么是GIL，有啥用？</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-b3e835b8d1ce49f186ac7a9186e8964c"><li>GIL对多线程 多进程有什么影响？</li></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-06efc057e6394e6eba586dd47e82dec5" data-id="06efc057e6394e6eba586dd47e82dec5"><span><div id="06efc057e6394e6eba586dd47e82dec5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#06efc057e6394e6eba586dd47e82dec5" title="深拷贝浅拷贝"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">深拷贝浅拷贝</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-15ebe6ee15084a2185604d0ab3ec9de0"><li>什么是深拷贝？什么是浅拷贝？[:]是浅拷贝, </li></ol><div class="notion-text notion-block-0a153a8dd6764265a663791c099262be">总结：Python函数传递的是对象的引用值，非传值或传引用。但是如果对象是不可变的，感觉和c语言中传值差不多。如果对象是可变的，感觉和c语言中传引用差不多。</div><ol start="1" class="notion-list notion-list-numbered notion-block-ced8eb5067994e24a9845d604ed5d06e"><li>python是传值还是传参？共享引用，这个问题取决于参数是可变对象还是不可变对象，在函数内对可变对象修改时对象值会变，对不可变对象修改时则是重新赋值</li></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-839544ebab2a47c6ad99690ccc27aaed" data-id="839544ebab2a47c6ad99690ccc27aaed"><span><div id="839544ebab2a47c6ad99690ccc27aaed" class="notion-header-anchor"></div><a class="notion-hash-link" href="#839544ebab2a47c6ad99690ccc27aaed" title="装饰器"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">装饰器</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-efe69cbb9848419e8a629431fdb2fc1b"><li>什么是装饰器？用来做什么？</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-fdd1d2de9f6b47b88d8aa8c962036941"><li>装饰器的原理是什么？</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-14e1229e47594235ad358353d9dadbe6"><li>写一个简单的含参装饰器并打印被装饰函数的名字？</li></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-715aef11fb2b4875becb57e0be3cc09a" data-id="715aef11fb2b4875becb57e0be3cc09a"><span><div id="715aef11fb2b4875becb57e0be3cc09a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#715aef11fb2b4875becb57e0be3cc09a" title="生成器"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">生成器</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-99a42016d0394db5ab0a6c0e1a408132"><li>什么是生成器？有什么利弊？</li></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-d9118ab8d3d94db883c4e4aab89d720b" data-id="d9118ab8d3d94db883c4e4aab89d720b"><span><div id="d9118ab8d3d94db883c4e4aab89d720b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#d9118ab8d3d94db883c4e4aab89d720b" title="cpython源码"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">cpython源码</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-c559dd9c0dcf4ecfbaa3f9d3a59c15f9"><li>描述一下dict的插入和删除过程？</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-460128c5fc7c42178a22b735ecf1f98e"><li>python的int有大小限制吗？为什么？</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-20f9bd265ba54c19b17aa1a9364a8b2c"><li>python是如何进行内存管理的？</li></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-4884221b55324b2284d32dcd8ee38847" data-id="4884221b55324b2284d32dcd8ee38847"><span><div id="4884221b55324b2284d32dcd8ee38847" class="notion-header-anchor"></div><a class="notion-hash-link" href="#4884221b55324b2284d32dcd8ee38847" title="语言问题"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">语言问题</span></span></h4><ul class="notion-list notion-list-disc notion-block-f293f2e97f71462c88beb9d2e50ad90d"><li>进行for遍历到结尾的时候，是如何停止的？</li></ul><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-d56211350bfa45f4ace66cb1ef33b996" data-id="d56211350bfa45f4ace66cb1ef33b996"><span><div id="d56211350bfa45f4ace66cb1ef33b996" class="notion-header-anchor"></div><a class="notion-hash-link" href="#d56211350bfa45f4ace66cb1ef33b996" title="操作系统"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">操作系统</span></span></h2><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-af69c9f9bdee498aa111c20c9863ed98" data-id="af69c9f9bdee498aa111c20c9863ed98"><span><div id="af69c9f9bdee498aa111c20c9863ed98" class="notion-header-anchor"></div><a class="notion-hash-link" href="#af69c9f9bdee498aa111c20c9863ed98" title="os "><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">os </span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-87c6cdbe47ac4edb829e54fa5cac8ce2"><li>进程 线程和协程有什么异同？</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-4a6ad97441c84363a017c95a99c708e8"><li>互斥锁和自旋锁的区别？</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-76eea98e417d46b29ddf3b53ac7aba94"><li>堆和栈的区别？</li></ol><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-b49c0f3f90524dd484f5e89f4f805511" data-id="b49c0f3f90524dd484f5e89f4f805511"><span><div id="b49c0f3f90524dd484f5e89f4f805511" class="notion-header-anchor"></div><a class="notion-hash-link" href="#b49c0f3f90524dd484f5e89f4f805511" title="内存管理"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">内存管理</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-4b5b13664e8a4cab961f160da4af5b93" data-id="4b5b13664e8a4cab961f160da4af5b93"><span><div id="4b5b13664e8a4cab961f160da4af5b93" class="notion-header-anchor"></div><a class="notion-hash-link" href="#4b5b13664e8a4cab961f160da4af5b93" title="进程管理"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">进程管理</span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-ca9ef96ce5c44f22b41854dcffd5eebb" data-id="ca9ef96ce5c44f22b41854dcffd5eebb"><span><div id="ca9ef96ce5c44f22b41854dcffd5eebb" class="notion-header-anchor"></div><a class="notion-hash-link" href="#ca9ef96ce5c44f22b41854dcffd5eebb" title="IO管理"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">IO管理</span></span></h4><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-66844d0c58154d8b97b3d57c7ceff9a8" data-id="66844d0c58154d8b97b3d57c7ceff9a8"><span><div id="66844d0c58154d8b97b3d57c7ceff9a8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#66844d0c58154d8b97b3d57c7ceff9a8" title="机组"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">机组</span></span></h2><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-dfb05aa6ae0745d79509019f22c24380" data-id="dfb05aa6ae0745d79509019f22c24380"><span><div id="dfb05aa6ae0745d79509019f22c24380" class="notion-header-anchor"></div><a class="notion-hash-link" href="#dfb05aa6ae0745d79509019f22c24380" title="计网"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">计网</span></span></h2><ul class="notion-list notion-list-disc notion-block-ca52376b1dad4b30af89c0dfb63cc365"><li>OSI 7层网络模型?</li></ul><ul class="notion-list notion-list-disc notion-block-fc37810abc9a492e91d017e713dfaa1f"><li>TCP与UDP的区别？</li></ul><ul class="notion-list notion-list-disc notion-block-ab7fbf442fa64a1b8bee66649c493b95"><li>TCP连接和断开过程？（3次握手 4次挥手）</li></ul><ul class="notion-list notion-list-disc notion-block-c438555a94104f978c9691e4d0d5681c"><li>了解TCP半连接吗？</li></ul><ul class="notion-list notion-list-disc notion-block-fe5a571d2c7543e7be36f4d1eea429c2"><li>TCP粘包了解吗？如何处理？</li></ul><ul class="notion-list notion-list-disc notion-block-c3d49922b14c48cb91f4a6d6264aa5aa"><li>从输入网址到页面显示的过程？</li></ul><ul class="notion-list notion-list-disc notion-block-89196d3fd6c142f9a725d3d811d9af84"><li>什么是socket？</li></ul><ul class="notion-list notion-list-disc notion-block-71bfb0484ebd4fdb848b26f825f68517"><li>BIO NIO AIO了解吗？</li></ul><ul class="notion-list notion-list-disc notion-block-144b82196f9744c281bdb39aedb69fa1"><li>select与epoll的区别？</li></ul><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-a39022f8892a4d8281f5abe0f568b378" data-id="a39022f8892a4d8281f5abe0f568b378"><span><div id="a39022f8892a4d8281f5abe0f568b378" class="notion-header-anchor"></div><a class="notion-hash-link" href="#a39022f8892a4d8281f5abe0f568b378" title="数据库"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">数据库</span></span></h2><ul class="notion-list notion-list-disc notion-block-2c8bdffaebd3490ba9dd4dc8526273e1"><li>redis的数据类型及其底层数据结构</li></ul><ul class="notion-list notion-list-disc notion-block-1078ce1f90764793999ff6f6e1a354e8"><li>如何使用redis实现分布式锁</li></ul><ul class="notion-list notion-list-disc notion-block-4e01845643c14fb69a275995260427c6"><li>mongodb是CAP的哪种</li></ul><ul class="notion-list notion-list-disc notion-block-ae2345dd8c53459a850a9c457d7e0da8"><li>mysql的索引类型</li></ul><ul class="notion-list notion-list-disc notion-block-66b91dc6f64f41dbadee0a817a132ce3"><li>mysql的隔离界别</li></ul><ul class="notion-list notion-list-disc notion-block-4c5ddb12894a45a895ad1046b3c58f47"><li>什么是幻读？默认隔离级别会发生幻读吗？</li></ul><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-6f18b80ffbd94c7e935d56f24ce55320" data-id="6f18b80ffbd94c7e935d56f24ce55320"><span><div id="6f18b80ffbd94c7e935d56f24ce55320" class="notion-header-anchor"></div><a class="notion-hash-link" href="#6f18b80ffbd94c7e935d56f24ce55320" title="Redis"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Redis</span></span></h3><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-d43b8f91ef7a430783094f854df99c4a" data-id="d43b8f91ef7a430783094f854df99c4a"><span><div id="d43b8f91ef7a430783094f854df99c4a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#d43b8f91ef7a430783094f854df99c4a" title="MySQL"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">MySQL</span></span></h3><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-56a12572b10547c5ada34a1df78f9694" data-id="56a12572b10547c5ada34a1df78f9694"><span><div id="56a12572b10547c5ada34a1df78f9694" class="notion-header-anchor"></div><a class="notion-hash-link" href="#56a12572b10547c5ada34a1df78f9694" title="MongoDB"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">MongoDB</span></span></h3><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-8dd6277dd2874d0d9a9bdd7948506b7c" data-id="8dd6277dd2874d0d9a9bdd7948506b7c"><span><div id="8dd6277dd2874d0d9a9bdd7948506b7c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#8dd6277dd2874d0d9a9bdd7948506b7c" title="MQ"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">MQ</span></span></h2><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-8ad978c87688457094aa1e1e35515eae" data-id="8ad978c87688457094aa1e1e35515eae"><span><div id="8ad978c87688457094aa1e1e35515eae" class="notion-header-anchor"></div><a class="notion-hash-link" href="#8ad978c87688457094aa1e1e35515eae" title="RabbitMQ"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">RabbitMQ</span></span></h3><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-99a506a643fc4c7d9625c4b0aad0d3be" data-id="99a506a643fc4c7d9625c4b0aad0d3be"><span><div id="99a506a643fc4c7d9625c4b0aad0d3be" class="notion-header-anchor"></div><a class="notion-hash-link" href="#99a506a643fc4c7d9625c4b0aad0d3be" title="Docker&amp;K8S"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Docker&amp;K8S</span></span></h2><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-4eb6b3dfb14f42ce836d90c500f1e245" data-id="4eb6b3dfb14f42ce836d90c500f1e245"><span><div id="4eb6b3dfb14f42ce836d90c500f1e245" class="notion-header-anchor"></div><a class="notion-hash-link" href="#4eb6b3dfb14f42ce836d90c500f1e245" title="docker  image中的 layer 是什么？"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">docker  image中的 layer 是什么？</span></span></h4><div class="notion-text notion-block-68727b5d20cb49ca94041170c304c06b">docker image 是由 dockerfile创建的，dockerfile 中每行表示一个 layer，所有上层的改动都会传递影响到下一层</div><div class="notion-text notion-block-06be98d73cfc48919b926403318fed22">可考虑将多个命令行合并到一行减少image 大小</div><div class="notion-text notion-block-06ca1172901446328575c7b402d2e8fc">所以尽量把频繁变动的命令放后面执行，以复用底层 layer 减小 image size</div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[信息论编码]]></title>
            <link>https://cherrymelon.me/article/d533a079-1b85-4979-aa44-354ef5569e7e</link>
            <guid>https://cherrymelon.me/article/d533a079-1b85-4979-aa44-354ef5569e7e</guid>
            <pubDate>Fri, 02 Jul 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[比较常见的编码方式]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-d533a0791b854979aa44354ef5569e7e"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><ol start="1" class="notion-list notion-list-numbered notion-block-eb06839464a445a985916e73a709fdcd"><li>奇偶检验码：给一组bit数据加上奇偶位来保护这组数据，补偶检奇，缺点只能检查一位错误，常用于 ECC 校验，数据传输校验</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-c3ebbd3f74e043e2b86d260a9aa7de6a"><li>汉明码：通过奇偶码双重检查确定错误位置并纠正</li></ol><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-7b8801c7ea9b41919019dc34ec739a80"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F0a2a4ecb-af10-45d9-9b7d-6f0124b23a88%2FUntitled.png?table=block&amp;id=7b8801c7-ea9b-4191-9019-dc34ec739a80" alt="notion image" loading="lazy" decoding="async"/></div></figure><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-b0d24e1d0b9546bab065349f61b74e33"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fc94d62c9-3127-40c3-a865-7280e3571aef%2FUntitled.png?table=block&amp;id=b0d24e1d-0b95-46ba-b065-349f61b74e33" alt="notion image" loading="lazy" decoding="async"/></div></figure><ol start="1" class="notion-list notion-list-numbered notion-block-6480cad6d8ba45e2abdbdad13ae9d3f6"><li>极化码，人为劣化一个信道可靠率来提高另一个信道的可靠率</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-6e7352c53c434175af1a5f1150f8f3ef"><li>后续 归零码，非归零码 等编码方式挖坑待填</li></ol></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Rust学习笔记]]></title>
            <link>https://cherrymelon.me/article/d5e96d9e-153f-4c3c-b3ea-54aaffa2c32a</link>
            <guid>https://cherrymelon.me/article/d5e96d9e-153f-4c3c-b3ea-54aaffa2c32a</guid>
            <pubDate>Fri, 02 Jul 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[入门 rust 的第 101 次]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-d5e96d9e153f4c3cb3ea54aaffa2c32a"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-5d17943c65db4d40936ea1629a15b40f" data-id="5d17943c65db4d40936ea1629a15b40f"><span><div id="5d17943c65db4d40936ea1629a15b40f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#5d17943c65db4d40936ea1629a15b40f" title="rust学习笔记"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">rust学习笔记</span></span></h2><div class="notion-text notion-block-ee1e39a6b99546edae5db943a4af516e">本文将介绍rust编程语言的基础知识和常用编程技巧。Rust是一种系统编程语言，具有内存安全和高性能的特性。在学习Rust之前，需要先了解一些基本概念和语法。</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-f80ce32c3f0e4304850d95d0fe16dd78" data-id="f80ce32c3f0e4304850d95d0fe16dd78"><span><div id="f80ce32c3f0e4304850d95d0fe16dd78" class="notion-header-anchor"></div><a class="notion-hash-link" href="#f80ce32c3f0e4304850d95d0fe16dd78" title="基本概念"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">基本概念</span></span></h3><div class="notion-text notion-block-e84ae2a4304b47dda83e4767e962494f">Rust 是一门现代系统编程语言，它是一门具有高度安全性、并发性和速度的语言。Rust 通过所有权机制来管理内存，同时也通过不可变性和可变性的概念保证了内存安全。Rust 也引入了生命周期的概念，用于限制变量的作用域，从而进一步保证内存安全。</div><ul class="notion-list notion-list-disc notion-block-2a3da8ad1d254a96b9eb41e518407465"><li>Ownership(所有权)：Rust通过所有权机制来管理内存。每个值都有一个所有者，同时每个值在同一时间只能有一个所有者。当所有者离开作用域时，这个值就被销毁了。</li></ul><ul class="notion-list notion-list-disc notion-block-8965a2862d6b4c5cb9f86bc5df55b0fa"><li>Borrowing(借用)：Rust中可以将值的所有权借给其他变量或函数使用，而不是转移所有权。这种操作被称为借用，目的是为了避免多个所有者同时对同一个值进行修改。</li></ul><ul class="notion-list notion-list-disc notion-block-4a1978c2da4b45c687a9be4eda9bae14"><li>Lifetime(生命周期)：Rust中每个变量都有一个生命周期，用于限制变量的作用域。生命周期的主要作用是为了在编译期检查内存安全，防止出现空指针和野指针等问题。</li></ul><ul class="notion-list notion-list-disc notion-block-b1201cf0f8cc4e2caf9b57bd8c24a07f"><li>Mutability(可变性)：Rust中变量默认是不可变的，可以使用<code class="notion-inline-code">mut</code>关键字来声明变量可变。这种方式可以避免因为多个所有者同时对同一个值进行修改而引发的问题。</li></ul><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-4e31e9bf8142474b9151a3d445987875" data-id="4e31e9bf8142474b9151a3d445987875"><span><div id="4e31e9bf8142474b9151a3d445987875" class="notion-header-anchor"></div><a class="notion-hash-link" href="#4e31e9bf8142474b9151a3d445987875" title="基本语法"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">基本语法</span></span></h3><div class="notion-text notion-block-babb61d690b842b582bdc37ed91948b5">Rust 具有类似于 C 和 C++ 的语法风格，但是也有一些新的概念和语法。下面是一些常用的语法：</div><ul class="notion-list notion-list-disc notion-block-7fc8bbce297046b4874d0d9034f69019"><li>变量和类型定义：</li></ul><ul class="notion-list notion-list-disc notion-block-9837795e0d244f8f82d21a598946f771"><li>控制流：</li></ul><ul class="notion-list notion-list-disc notion-block-624f651d12e54ad3a30135df9aa65c95"><li>函数定义：</li></ul><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-5d1cb97e4b6240f18506347a284c840c" data-id="5d1cb97e4b6240f18506347a284c840c"><span><div id="5d1cb97e4b6240f18506347a284c840c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#5d1cb97e4b6240f18506347a284c840c" title="常用编程技巧"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">常用编程技巧</span></span></h3><div class="notion-text notion-block-768f440341d94514b3a543457f026004">Rust 具有一些独特的编程技巧，下面是一些常用的技巧：</div><ul class="notion-list notion-list-disc notion-block-e4765fdb844742bba194ca9a8b84e879"><li>使用<code class="notion-inline-code">match</code>表达式处理多种情况：</li></ul><ul class="notion-list notion-list-disc notion-block-c0482373d6f24d8ea01969c63e814250"><li>使用<code class="notion-inline-code">Option</code>类型避免空指针异常：</li></ul><div class="notion-blank notion-block-87aafd3a5e20425ca79c855720560886"> </div><div class="notion-blank notion-block-6ef1638c3363453185968c260fd8bb71"> </div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-5bd17c225c5c41d99a4686784bfb5d91" data-id="5bd17c225c5c41d99a4686784bfb5d91"><span><div id="5bd17c225c5c41d99a4686784bfb5d91" class="notion-header-anchor"></div><a class="notion-hash-link" href="#5bd17c225c5c41d99a4686784bfb5d91" title="引用与可变引用"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">引用与可变引用</span></span></h4><div class="notion-text notion-block-ac1ee72a229649f596064df16190df8b">*解引用 ，&amp;引用，引用本身不可变，但是想修改引用怎么办，可变引用，&amp;mut var</div><div class="notion-text notion-block-b70cd9b9d4d94c04bd840dc88cc9f637">集合：</div><div class="notion-blank notion-block-0ff7dca460a94c9ead5a0121c144976d"> </div><div class="notion-text notion-block-c8535d1b7e134725875a3e45e30ff9fa">泛型 <code class="notion-inline-code">struct Person&lt;T,U&gt;{x:T,y:U}</code> </div><div class="notion-text notion-block-76100516577b44f5adda885d7d0ae6a9">实现接口 <code class="notion-inline-code">pub trait inerface_name{}</code> </div><div class="notion-text notion-block-b537451c1f8344b6ae37716d1d9da882">Result&lt;Ok,Error&gt;,利用？处理异常</div><div class="notion-text notion-block-0795f613f8dd4b09ae10468f44acf8fe">panic！宏</div><div class="notion-text notion-block-01d8e9e34a954a9c966edf511bb5775b">expect ?的区别  结构体pub字段</div><div class="notion-text notion-block-a22162bcf6f24e569f26aad0f5851bed">闭包语法，类似lambda，</div><div class="notion-text notion-block-e4ae713a0a1b463d9b0c7cb05d23afb1">|parameter| statments or {statments}</div><div class="notion-text notion-block-d39e56b2cb1b4ecba0aafeed249a8459">生命周期注解</div><div class="notion-text notion-block-c0a155ab1fa5477faf2082311c945119">channel并发</div><div class="notion-blank notion-block-f4babf785bb04249a8b8e24754dfd0c2"> </div><div class="notion-text notion-block-719e0f09267d4885978d1fa139e0b771">5.12 生命周期注解 语法 三条规则  引用与借用与move的区别  解引用 智能指针中的Box&lt;T&gt;作用  Rc和Arc</div><div class="notion-text notion-block-81cfc5835cb146188d8dde1a708ad275">同步与并发 thread::new 控制通信 推荐用channel mpsc的含义  mutex锁的访问</div><div class="notion-text notion-block-421dee1d87564ec5b8b8bd870110be74">5.13 Rc共享所有权，Refcell实现对引用的修改</div><div class="notion-text notion-block-242f1a8c38a24e129dc0c5652bbf9b93">5.14 Rc的弱引用机制 downgrade返回一个弱引用指针 upgrade返回Option&lt;Rc&lt;T&gt;&gt;</div><div class="notion-blank notion-block-0e1a778e650c45ca8fc6032990d8ac1c"> </div><div class="notion-text notion-block-2f203107bb6c420890181dbcbd8e722b">5.16 str &amp;str string &amp;string array &amp;array的区别</div><div class="notion-blank notion-block-2c820725f811468d93a5f7a862d4edcb"> </div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-4d211f1b2f5c46a8a52d52294052108c" data-id="4d211f1b2f5c46a8a52d52294052108c"><span><div id="4d211f1b2f5c46a8a52d52294052108c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#4d211f1b2f5c46a8a52d52294052108c" title="导包和导入模块"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">导包和导入模块</span></span></h4><div class="notion-text notion-block-8e10489e715c4e5293ef1f2f5b849b14">模块和包都得先用mod 挂载到当前文件，然后use 声明要导入到当前空间的函数</div><div class="notion-text notion-block-e45d23bfd8b543e1a29412e341cb3634">一般mod的函数只能在当前模块使用，若想要在下级模块中使用需要加上pub关键字</div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Python源码剖析笔记]]></title>
            <link>https://cherrymelon.me/article/59ff17e9-2836-49c8-b360-2f5126fa4263</link>
            <guid>https://cherrymelon.me/article/59ff17e9-2836-49c8-b360-2f5126fa4263</guid>
            <pubDate>Fri, 02 Jul 2021 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-59ff17e9283649c8b3602f5126fa4263"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-bec6c75be9ce4cb1baab5e393c3f0eea" data-id="bec6c75be9ce4cb1baab5e393c3f0eea"><span><div id="bec6c75be9ce4cb1baab5e393c3f0eea" class="notion-header-anchor"></div><a class="notion-hash-link" href="#bec6c75be9ce4cb1baab5e393c3f0eea" title="读书笔记"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">读书笔记</span></span></h2><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-d1514b436dcb47f883f23fb20465094f" data-id="d1514b436dcb47f883f23fb20465094f"><span><div id="d1514b436dcb47f883f23fb20465094f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#d1514b436dcb47f883f23fb20465094f" title="第一章节"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">第一章节</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-d4b9c4800a164ce0a8e8bb10f3ded158" data-id="d4b9c4800a164ce0a8e8bb10f3ded158"><span><div id="d4b9c4800a164ce0a8e8bb10f3ded158" class="notion-header-anchor"></div><a class="notion-hash-link" href="#d4b9c4800a164ce0a8e8bb10f3ded158" title="python中的对象与类型系统"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">python中的对象与类型系统</span></span></h4><ul class="notion-list notion-list-disc notion-block-99b4b39be7b440c8a13ced441b908e61"><li>cpython中的对象都是由pyobject head封装类型元信息 <em>typeobject 即ob</em>_type指针和ob_refcnt组成，前者指向对象的类型(对象可为定长对象或者变长对象{pyobject_HEAD,ob_size}，后者作为引用计数。总结，不同的类型有着相似的头部信息</li></ul><ul class="notion-list notion-list-disc notion-block-c247f4fea00c4ac3b491bac22aab5c7d"><li><em>typeobject </em>对象封装了对象类型的元素大小，基本大小，关联的函数指针</li></ul><ul class="notion-list notion-list-disc notion-block-5962090571854997bd88592133b86506"><li>操作指针指向的函数族决定了对象的行为，例如as_number\ as_mapping\as_sequence</li></ul><ul class="notion-list notion-list-disc notion-block-b02906d783064d4cbc4070b11b3dca67"><li>python的动态依靠ob_type指向的对象的类型决定</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-bb81373dcad148a2abfca0e2e27f15a4" data-id="bb81373dcad148a2abfca0e2e27f15a4"><span><div id="bb81373dcad148a2abfca0e2e27f15a4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#bb81373dcad148a2abfca0e2e27f15a4" title="子章节2"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">子章节2</span></span></h4><ul class="notion-list notion-list-disc notion-block-f7891c6b60e24d76bcbee56c129ec908"></ul><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-dec1ca482a7647b2840cb6162fe09225" data-id="dec1ca482a7647b2840cb6162fe09225"><span><div id="dec1ca482a7647b2840cb6162fe09225" class="notion-header-anchor"></div><a class="notion-hash-link" href="#dec1ca482a7647b2840cb6162fe09225" title="第二章节"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">第二章节</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-4a5eb41962554d068b83e9c8ae8f7269" data-id="4a5eb41962554d068b83e9c8ae8f7269"><span><div id="4a5eb41962554d068b83e9c8ae8f7269" class="notion-header-anchor"></div><a class="notion-hash-link" href="#4a5eb41962554d068b83e9c8ae8f7269" title="子章节1"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">子章节1</span></span></h4><ul class="notion-list notion-list-disc notion-block-5c00f5e5d28f409e837a2f1779406f91"></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-c878a4cd6a01422587e50ee0b1ed7154" data-id="c878a4cd6a01422587e50ee0b1ed7154"><span><div id="c878a4cd6a01422587e50ee0b1ed7154" class="notion-header-anchor"></div><a class="notion-hash-link" href="#c878a4cd6a01422587e50ee0b1ed7154" title="子章节2"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">子章节2</span></span></h4><ul class="notion-list notion-list-disc notion-block-2d082516d79044fb8c98b77390306158"></ul><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-e84cada05e304ee3b36243d85642e232" data-id="e84cada05e304ee3b36243d85642e232"><span><div id="e84cada05e304ee3b36243d85642e232" class="notion-header-anchor"></div><a class="notion-hash-link" href="#e84cada05e304ee3b36243d85642e232" title="第三章节"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">第三章节</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-9bc12c1ba3f74ca0ae9e958dde433151" data-id="9bc12c1ba3f74ca0ae9e958dde433151"><span><div id="9bc12c1ba3f74ca0ae9e958dde433151" class="notion-header-anchor"></div><a class="notion-hash-link" href="#9bc12c1ba3f74ca0ae9e958dde433151" title="子章节1"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">子章节1</span></span></h4><ul class="notion-list notion-list-disc notion-block-05efaa8d09f64f5cbedd3ddfcc322e34"></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-0134e3d87d3f4c0fbb359d3cb33dfd57" data-id="0134e3d87d3f4c0fbb359d3cb33dfd57"><span><div id="0134e3d87d3f4c0fbb359d3cb33dfd57" class="notion-header-anchor"></div><a class="notion-hash-link" href="#0134e3d87d3f4c0fbb359d3cb33dfd57" title="子章节2"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">子章节2</span></span></h4></main></div>]]></content:encoded>
        </item>
    </channel>
</rss>