<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>CodeAnalyzer Ultra</title>
    <link>https://wechat2rss.xlab.app/feed/55250c252549088f7bcfa3527fe540bec5e2e16e.xml</link>
    <description>分享白盒安全、代码安全相关的技术知识。包括静态代码分析（SAST）、漏洞利用、安全热点资讯等。 致力于打造全面且细致的专栏内容，理论与实践相结合的讲解方式，尽量做到通俗易懂，示例代码可拿来即用，降低学习门槛。&#xA;(wechat feed made by @ttttmr https://wechat2rss.xlab.app)</description>
    <managingEditor> (CodeAnalyzer Ultra)</managingEditor>
    <image>
      <url>https://wx.qlogo.cn/mmhead/uchmtWQh7iarErdUSiaO0U8RYhUxz0YADdx5ZDiaJWxTyOCOjhH6NJjTDj6WNgPZkrMCw3bOViamI00/0</url>
      <title>CodeAnalyzer Ultra</title>
      <link>https://wechat2rss.xlab.app/feed/55250c252549088f7bcfa3527fe540bec5e2e16e.xml</link>
    </image>
    <item>
      <title>亚马逊入局AI，另辟蹊径能走远吗？</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484600&amp;idx=1&amp;sn=344706325a69a265a630f0118cc9ce20</link>
      <description></description>
      <content:encoded><![CDATA[<p>
原创 <span>SASTing</span> <span>2024-12-03 08:00</span> <span style="display: inline-block;">上海</span>
</p>

<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=d4ed2903&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GZlUPzqxzTyrXzu95EotB9qJAxS7xhZQEYOPuGIPXHhyRaj0vVpYc1It0BvicsSiaS9bQsxsUcNic7ZQ%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;"><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">视频分析专用大模型&#34;Olympus&#34;</span></h1><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">亚马逊可能最早于本周宣布推出其名为“<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Olympus</strong>”的AI模型，该模型专注于<span style="text-decoration:underline;"><em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">视频和图像处理</em></span>。根据The Information的报道，Olympus擅长处理<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">视频分析工作</em>，旨在服务于<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">体育和媒体</em>等行业，并以具有竞争力的<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">价格</em>吸引客户。</p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">Olympus AI模型的特点</span></h2><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Olympus</strong> 大模型不仅能够处理<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">图像和视频</em>，还可以处理<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">文本内容</em>，使其在功能上与其他产品产生<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">差异化</strong>。据消息人士透露，Olympus在<span style="text-decoration:underline;"><em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">视频分析方面表现出色</em></span>，例如可以<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">追踪篮球的轨迹</em>、<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">诊断海底钻探设备的问题</em>等。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">尽管在<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">文本生成</em>方面，Olympus的能力可能不如<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">OpenAI</strong>和<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Anthropic</strong>，但其独有的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">视频处理能力</strong>以及具有竞争力的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">价格策略</strong>是其打开市场的敲门砖，这有助于它在市场上开辟出一片独特的领域。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">视频分析市场AI的<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">渗透率</em>还不是那么高，所以，<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Olympus</strong>大模型的市场前景是相对乐观的。</p><p><mp-common-cpsad class="js_uneditable custom_select_card new_cps_iframe" data-pluginname="mpcps" data-adtype="short-play" data-playappid="wxbd2b3445f6af2282" data-planid="202411231641514887843" data-dramaid="216851" data-srcappid="wx690f86c2e4552666" data-templateid="video-play" data-defaultpath="plugin-private%3A%2F%2Fwx94a6522b1d640c3b%2Fpages%2Fplaylet%2Fplaylet%3FdramaId%3D216851%26srcAppid%3Dwx690f86c2e4552666%26wxTicket%3DdGlja2V0MTYwNDYzNTMwNTMyNjUwMzczMTgzMDM5MA" data-goodssouce="1" data-traceid="732b6865-59bd-4371-89a2-92417c2a3991216851" data-videocarddata="{&#34;name&#34;:&#34;侠骨剑心林青青&#34;,&#34;categoryName&#34;:&#34;家庭&#34;,&#34;videoCoverUrl&#34;:&#34;https://wxaintpcos.wxqcloud.qq.com.cn/public/wx690f86c2e4552666/WxaDramaCoverImage/afc626c6d62c15872781677b5df1c977.jpg&#34;,&#34;categoryInfo&#34;:&#34;73集&#34;}" data-mediano="1" data-disablechangevideo="1" data-playcpstype="2"></mp-common-cpsad></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">亚马逊与Anthropic的合作</span></h2><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">据报道，亚马逊计划在年度<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">AWS re:Invent</em>客户大会期间发布<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Olympus</strong>，该活动将于12月2日至12月6日在拉斯维加斯举行。</p><h3 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 20px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">加强与Anthropic的合作</span></h3><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">11月份，ReadWrite报道了亚马逊加强了与<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Anthropic</em>的合作关系，其追加投资了<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">40亿美元</strong>用于公司发展。协议中指出，Anthropic指定<span style="text-decoration:underline;"><em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">AWS为其主要云服务提供商</em></span>，而AWS客户将提前获得<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">访问权限</strong>，可以通过Amazon Bedrock<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">定制AI模型</strong>。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">双方在官方声明中表示：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(53, 179, 120);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 249, 253);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">该协议是更广泛合作的一部分，旨在开发行业内<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">最可靠、性能最高</strong>的基础模型。</p></blockquote><h3 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 20px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">结合内外部资源推进AI发展</span></h3><div class="mp_common_product_iframe_wrp"><p class="custom_select_card_wrp"><mp-common-product data-cardtype="1" data-windowproduct="v2=HFrLlaLQGnIDnMcRYeZyRlS26KtNkTWRDq1yELGACYYH1YMpPqzB-tKkobGNejWiRg" data-title="[4支9.9]蜜束滋润香氛护手霜补水保湿清爽嫩肤秋冬润护防干裂留香" class="custom_select_card mp_product_iframe mp_common_widget" data-immutable="1" data-req-scene="2" data-customstyle="{&#34;display&#34;:&#34;block&#34;,&#34;height&#34;:&#34;169px&#34;}"></mp-common-product></p></div><div class="mp_common_product_iframe_wrp"><p class="custom_select_card_wrp"><mp-common-product data-cardtype="1" data-windowproduct="v2=HHBBdsDA3PVJlZxBOa693-hKy0U8oYdQRaf9BQg-WVje2UsZeG9-04F-gnZdqFBRug" data-title="鸡蛋收纳盒收纳雞蛋盒鸡蛋收纳盒鸡蛋" class="custom_select_card mp_product_iframe mp_common_widget" data-immutable="1" data-req-scene="2" data-customstyle="{&#34;display&#34;:&#34;block&#34;,&#34;height&#34;:&#34;169px&#34;}"></mp-common-product></p></div><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">此次 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Olympus</strong> 的推出也反映了亚马逊结合<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">外部合作</em>与<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">内部研发</em>双管齐下的AI发展战略：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">亚马逊给Anthropic投资<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">80亿美元</strong>，显示了其对外部技术的投资兴趣；</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Olympus</strong>的发布体现了亚马逊自身在AI领域的创新实力和技术积累。</p></div></li></ul><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">这种内外结合的方式不仅增强了亚马逊的技术多样性，也为客户提供了一个更为全面且灵活的AI解决方案平台。</p></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247484600">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=a9f026ab&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484600%26idx%3D1%26sn%3D344706325a69a265a630f0118cc9ce20">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Tue, 03 Dec 2024 08:00:00 +0800</pubDate>
    </item>
    <item>
      <title>Github架构师手把手教你CodeQL-AI建模！</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484595&amp;idx=1&amp;sn=46e11c6c06868a58c036b617d3ab0a8e</link>
      <description>Copilot 赋能 CodeQL：AI建模不要太爽！</description>
      <content:encoded><![CDATA[<p>
原创 <span>SASTing</span> <span>2024-11-29 08:00</span> <span style="display: inline-block;">上海</span>
</p>

<p>Copilot 赋能 CodeQL：AI建模不要太爽！</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=bec25e6f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSM8wjeah0fNaKaEaZSBwicHcPtkxZt60P86F0JbFvsAQ7lLgx02esVjA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: PingFangSC-regular, sans-serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;"><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">关键词</span></h1><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">CodeQL</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">Copilot</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">AI modeling</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">Variant analysis</p></li></ul><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">Good Sentence</span></h1><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Avi Douglen</strong>（Bounce Security安全咨询机构CEO）:</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">Security at the expense of usability, comes at the expense of security</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">牺牲可用性换取安全性，最终会牺牲安全性</p></blockquote><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">大佬资料</span></h1><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000929" data-ratio="0.6816874400767018" data-type="png" data-w="1043" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=46d2a5fe&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSfGf122YpC5czDTOzP2urJPq3vdz6K55QPOd3xhchGNBjRLjj5qvEicw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">Nick Liffen <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Github架构师</strong></p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000928" data-ratio="0.46111111111111114" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=5394f322&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSbib0pRMTpjVFcHXiaLWW4xhqkKw9aRdctKdZgfujwrAibO0LZaLoWnLZg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;">img</figcaption></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">Niroshan Rajadurai Github副总裁，Semmle（<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CodeQL</strong>前公司）安全专家</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000930" data-ratio="0.7083333333333334" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=a989e97f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSUVz4wVgKiaAquyw9StkoKFX3iaWo4xG6JXJsQLw7ok1Km9iccG7umz5aw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption><p><mp-common-cpsad class="js_uneditable custom_select_card new_cps_iframe" data-pluginname="mpcps" data-templateid="video-play" data-traceid="de86cf62-3859-4b6d-bf84-1152f2a10369wxb98ac240fd74b0e3" data-appid="wxb98ac240fd74b0e3" data-adtype="mini-game" data-goodssouce="1" data-disablechangevideo="1" data-videorate="1.77777779" data-videocarddata="{&#34;name&#34;:&#34;抓大鹅&#34;,&#34;categoryName&#34;:&#34;小游戏&#34;,&#34;videoCoverUrl&#34;:&#34;https://mmgame.qpic.cn/image/149ba97d21e8386ffe07bc67c8b130cd3673a6d6418fa8ee79121e3d2d4f11f0/0&#34;,&#34;categoryInfo&#34;:&#34;益智&#34;}" data-playcpstype="2"></mp-common-cpsad></p><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">背景</span></h1><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">AI 正在从根本上改变技术和安全领域。GitHub将 AI 视为一种<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">工具</span>，帮助开发者加速开发过程的同时编写<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">更安全</strong>的代码。例如，Copilot 推出了一个<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Security</strong> <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">filter</strong>（安全过滤器<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">）</strong>，针对 Python 和 JavaScript 中最常见的易受攻击的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">编码模式</strong>（包括硬编码密钥、SQL 注入和路径穿越等）提出更安全的编码方式。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">CodeQL 团队负责<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">为框架/API</strong>建模，以帮助 CodeQL 发现更多漏洞。建模是一个<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">耗时</strong>的过程，因此团队开始思考能否将<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">AI的能力</strong>迁移过来，加速建模过程。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">实验结果超出预期，团队能够<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">利用</strong> <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">AI</strong> <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">优化建模过程</strong>，以增强工具在代码中发现漏洞的能力。</p><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">1.Security filter 安全过滤器</span></h1><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">1.1.工作原理</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">为了提高Copilot 的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">代码建议质量</strong>，团队更新了底层的 <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Codex 模型</strong>，从而大幅提升了代码建议的质量。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">Codex模型主要的更新点：</p><ol data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">升级的</strong> <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">AI</strong> <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Codex 模型</strong>：将 Copilot 升级到新的 <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">OpenAI</strong> <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Codex 模型</strong>，该模型在<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">代码合成</strong>方面的能力有显著提升。</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">更好的上下文理解</strong>：通过一种称为 <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Fill-In-the-Middle (FIM)</strong> 的新范式改进了Copilot，该范式为开发者提供了更好的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">代码建议</strong>。其不仅考虑代码前缀，还会利用代码后缀，在二者中间留下 <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">gap</strong> 供Copilot 填充。这样，大模型现在能够更好地理解用户代码的逻辑。在 <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">FIM</strong> 提供高质量代码建议的同时，还开发了各种策略保证模型的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">低延迟</strong>。</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">轻量级客户端模型</strong>：更新 VS Code 的 <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Copilot 插件</strong>，引入了<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">轻量级客户端模型</strong>，从而提高了代码建议的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">整体接受率</strong>。Copilot 还会关注<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">用户的历史行为</strong>（如：<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">上次建议是否被接受</strong>），以降低无效建议出现的频率。这项更新使大模型提供的无效建议<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">减少了 4.5%</strong>，以帮助 Copilot 更好地响应每位开发者。</p></li></ol><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000927" data-ratio="0.5166093928980527" data-type="png" data-w="873" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=3743cd76&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSa7EmdgKAjDbia1bqNZn9WicItcEYIDdb6Ec1ehfm0L9TVibiaGsyzsMnJw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">1.2.代码安全能力</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">基于</strong> <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">AI</strong> <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">的漏洞预防系统</strong>，可以<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">实时阻止</strong>不安全的编码模式，以使 Copilot 的建议更加安全。可以处理常见的安全缺陷：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">硬编码密钥</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">SQL 注入</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">路径穿越</p></li></ul><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">该系统利用<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">大型语言模型（LLMs）</strong>来模拟静态分析工具的行为—— Copilot 拥有强大的算力，计算速度非常快，甚至可以检测<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">不完整代码片段中的易受攻击模式</strong>。</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">检测<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">硬编码密钥</strong>的示例：</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000926" data-ratio="0.11424541607898449" data-type="png" data-w="709" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=484ea4b6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSUqgwMaAWPa4YLsd5TUp99EKPa9Eibm8Se8MpOje4qJNBalXl88GzWBA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">2.AI污点建模实践</span></h1><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">2.1.技术点</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">CodeQL发现安全缺陷离不开污点传播分析，对API的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">污点建模</strong>（source、sink、summary）至关重要。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">开源软件（OSS）社区已经开发了<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">数千个</strong>可能需要建模的 API 的 package 。如果建模不及时更新，就会导致<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">漏报</strong>。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">传统上，安全人员会对这些 API <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">手动建模</strong>，但要对数千个 OSS 框架建模<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">非常耗时</span>。为此，团队开始使用<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">大语言模型（LLMs）</strong>来自动为这些API建模，极大地提高了效率。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">AI建模的结果会使用一种 <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">variant analysis （变体分析）</strong>的技术进行<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">测试</strong>，这是一种识别新型安全漏洞的方法。</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">variant analysis是使用一个<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">已知的漏洞</strong>（可能来源于渗透、fuzzing等）作为一个源，去发现代码中<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">相似问题</strong>的一个过程，其会用到以下技术点：</p><ul style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">语义分析（程序语义，可以迅速找到<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">重点函数的调用</span>或拥有<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">特定方法签名</span>的函数）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">控制流分析（代码<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">执行路径</span>）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">数据流分析（可以发现潜在的<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">summary</span>）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">污点分析（可以发现潜在的<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">summary</span>）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">...</p></li></ul><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">此外，其还推出了一种 <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Multi-Repository Variant Analysis (MRVA)</strong>技术，可以多仓库联动，大规模执行变体分析。</p></blockquote><p><mp-common-cpsad class="js_uneditable custom_select_card new_cps_iframe" data-pluginname="mpcps" data-adtype="mini-game" data-appid="wxec2f5a24667055d3" data-templateid="video-play" data-goodssouce="1" data-disablechangevideo="1" data-videorate="1.77777779" data-traceid="ddb806a8-1381-4aaf-8ac6-095b453d5f45wxec2f5a24667055d3" data-videocarddata="{&#34;name&#34;:&#34;天天台球&#34;,&#34;categoryName&#34;:&#34;小游戏&#34;,&#34;videoCoverUrl&#34;:&#34;https://mmgame.qpic.cn/image/f26a58c99cc5ad8a48aa936e8207b0505deba2bd47c259f43e9d51411d2e6653/0&#34;,&#34;videoUid&#34;:&#34;wxv_3333999246701969409&#34;,&#34;categoryInfo&#34;:&#34;益智&#34;}" data-playcpstype="2"></mp-common-cpsad></p><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">2.2.AI建模实践</span></h2><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">CodeQL建模编辑器：</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000931" data-ratio="0.20332936979785968" data-type="png" data-w="841" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=47d480ca&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSvcWTuUSey0z3x88z7Dt9t1Uf9J0HHCHaCeM6dRXkpficwgmN7QTnGqQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">2.2.1.建模前扫描</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">未对<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">org.sql2o.Connection.createQuery(String)</p>建模，直接执行SqlTainted.ql，查询结果为0</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000935" data-ratio="0.47314814814814815" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=d7f551cf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSfIIHwqXqPAnE3AWcbVq1Z5doEOTw4xvEiayc0fLM9anoGqticSt7G1bA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">2.2.2.开始建模</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">点击 【Start modeling】</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000934" data-ratio="0.49166666666666664" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=3eea7cd2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDS8GtAKwcTBot9NjgMXeW8Uhb4QOGdlic2VlTqQ8TarCPtspQwzTk7HWw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">可以为找到的未建模的API选择【Model type】</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">Source</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">Sink</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">Flow summary</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">Netural</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000932" data-ratio="0.29074074074074074" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=7152b6ad&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSAu5CrsYdSUAicAOLgP844OgkMr5ViaGuZoU8Zn8jDuvKpg6MV5xnz48w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">还可以选择【<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Model dependency</strong>】</p></li></ul><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">也就是将建模结果适配到你选定的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">其他仓库</strong></p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000933" data-ratio="0.4824074074074074" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=aa8d3547&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSfaQw4Oao0pFcib7rJRCjwaMcZpWpEaM6iaKZPiaMvd0NRltpM707aiaCgA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">会找到你选定仓库中<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">所有调用</strong>sql2o相关方法的地方，可以看到上文展示的那个sink点也被找到了</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000940" data-ratio="0.5018518518518519" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=e723a01f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSAibY9GVI4mv1tPozo0QmkvSYfQe83BnK2EcNHt6xSp9ezH8C7qGWacA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">此时，常规建模是需要我们<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">手动</strong>指定api是source、sink 还是 summary，<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">这项工作量非常巨大</strong></p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">但是 AI建模 可以<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">一键完成</strong>以上污点建模过程</p></blockquote><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">2.2.3.AI一键污点建模</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">【Model with AI】AI一键污点建模</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000938" data-ratio="0.41574074074074074" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=061f648b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSlLRmGjGBzicJIvYWAKJukqk3JqEYqwhXb7wH52qZqXLBInRElUiaMbIQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><div class="mp_common_product_iframe_wrp"><p class="custom_select_card_wrp"><mp-common-product data-cardtype="1" data-windowproduct="v2=HBBK--_j2TnrR-acYgqr2O_oVePpFEv9VIXN2F9eywkKEGMNQbkz3DDIqMERx0stEg" data-title="新喜乐凡士林晶冻保湿润肤防干裂秋冬护手足霜" class="custom_select_card mp_product_iframe mp_common_widget" data-immutable="1" data-req-scene="2" data-customstyle="{&#34;display&#34;:&#34;block&#34;,&#34;height&#34;:&#34;169px&#34;}"></mp-common-product></p></div><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">AI建模会<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自动理解各个API的工作原理</strong>，建模完成：</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000939" data-ratio="0.6777777777777778" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=0caf021e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSPk0jONiauP9MyAC3PWSmaAUX3nLvONGNMIll8ooNxMAr3cr18JgccVA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">完成后点击【Save all】</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000936" data-ratio="0.2537037037037037" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=edf9d9ab&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSeLNh3etEogXKibkEOPu6AM9qgvwYtpTuY8QpIwibAg6WY0gvViaibAicDUg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">2.2.4.建模后重新查询</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">重新运行查询即可发现<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">SQL注入</strong>漏洞</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000937" data-ratio="0.9478584729981379" data-type="png" data-w="537" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=02f71db5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSmm4FhM2W5oAZ6k2bgwqBB02icFfJMuE3kPKqWn8RPbw2ibXpiaX2lGNNA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">建模后的查询结果：</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000942" data-ratio="0.5092592592592593" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=975d5c14&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSq7ug83icQPj6pcib29razJuHDdT3EJzfZ9V9WyAGRj8EWP8LaNicfKicbw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">总结</span></h1><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">Copilot + CodeQL 还有很多其他功能，但好多功能还未公开，如：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">Secret to detect generic secrets</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">Copilot chat to scale remediation</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">Automically remediating security backlog</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000941" data-ratio="0.3509259259259259" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=ee46dd8d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSsvrouMFoYkI2V4nSYeI89rrG3dyaj3E8Hy3OUia9jvluzKGnWmoZd1Q%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">实在找不到关于CodeQL+Copilot 的AI污点建模的<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">实现原理</strong>（流下了没用的泪水<img data-ratio="1" data-w="128" class="rich_pages wxw-img" style="vertical-align: middle;color: rgb(1, 1, 1);font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;text-align: left;display: inline-block;width: 20px;background-size: cover;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=4fdf9478&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FHurt.png"/>），如果大家有发现相关的文章，欢迎留言/私信(抱拳了！<img data-ratio="1" data-w="128" class="rich_pages wxw-img" style="vertical-align: middle;color: rgb(1, 1, 1);font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;text-align: left;display: inline-block;width: 20px;background-size: cover;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=a214652e&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2Fsmiley_83b.png"/>)</p></blockquote></div><p><mp-common-cpsad class="js_uneditable custom_select_card new_cps_iframe" data-pluginname="mpcps" data-templateid="list" data-traceid="477ac6d7-95f0-4597-91c0-95ecaf5f621d" data-goodssouce="1" data-pid="104_2389142861" data-appuin="3917672154" data-cpsversion="v115"></mp-common-cpsad></p><p><mp-common-cpsad class="js_uneditable custom_select_card new_cps_iframe" data-pluginname="mpcps" data-templateid="list" data-traceid="477ac6d7-95f0-4597-91c0-95ecaf5f621d" data-goodssouce="1" data-pid="105_3292916449774789" data-appuin="3917672154" data-cpsversion="v115"></mp-common-cpsad></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=21d35c4f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSfGf122YpC5czDTOzP2urJPq3vdz6K55QPOd3xhchGNBjRLjj5qvEicw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=34f6f8ce&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSbib0pRMTpjVFcHXiaLWW4xhqkKw9aRdctKdZgfujwrAibO0LZaLoWnLZg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=5a5ec13d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSUVz4wVgKiaAquyw9StkoKFX3iaWo4xG6JXJsQLw7ok1Km9iccG7umz5aw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=595c3033&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSa7EmdgKAjDbia1bqNZn9WicItcEYIDdb6Ec1ehfm0L9TVibiaGsyzsMnJw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=7a4d1d13&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSUqgwMaAWPa4YLsd5TUp99EKPa9Eibm8Se8MpOje4qJNBalXl88GzWBA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=1e220806&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSvcWTuUSey0z3x88z7Dt9t1Uf9J0HHCHaCeM6dRXkpficwgmN7QTnGqQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=0c27eb37&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSfIIHwqXqPAnE3AWcbVq1Z5doEOTw4xvEiayc0fLM9anoGqticSt7G1bA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=5f78a0cf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDS8GtAKwcTBot9NjgMXeW8Uhb4QOGdlic2VlTqQ8TarCPtspQwzTk7HWw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=5a78e207&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSAu5CrsYdSUAicAOLgP844OgkMr5ViaGuZoU8Zn8jDuvKpg6MV5xnz48w%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=80564580&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSfaQw4Oao0pFcib7rJRCjwaMcZpWpEaM6iaKZPiaMvd0NRltpM707aiaCgA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=f5509b85&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSAibY9GVI4mv1tPozo0QmkvSYfQe83BnK2EcNHt6xSp9ezH8C7qGWacA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=ce8ce90b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSlLRmGjGBzicJIvYWAKJukqk3JqEYqwhXb7wH52qZqXLBInRElUiaMbIQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=2bacd6bd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSPk0jONiauP9MyAC3PWSmaAUX3nLvONGNMIll8ooNxMAr3cr18JgccVA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=dee81646&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSeLNh3etEogXKibkEOPu6AM9qgvwYtpTuY8QpIwibAg6WY0gvViaibAicDUg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=e6f36343&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSmm4FhM2W5oAZ6k2bgwqBB02icFfJMuE3kPKqWn8RPbw2ibXpiaX2lGNNA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=f7919fcb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSq7ug83icQPj6pcib29razJuHDdT3EJzfZ9V9WyAGRj8EWP8LaNicfKicbw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=37e35a2b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDPISicbHEndkHtSzCMUdDSsvrouMFoYkI2V4nSYeI89rrG3dyaj3E8Hy3OUia9jvluzKGnWmoZd1Q%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=4fdf9478&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FHurt.png"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=a214652e&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2Fsmiley_83b.png"/></p>



<p><a href="2247484595">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=42c5a94e&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484595%26idx%3D1%26sn%3D46e11c6c06868a58c036b617d3ab0a8e">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 29 Nov 2024 08:00:00 +0800</pubDate>
    </item>
    <item>
      <title>AI赋能SAST实践: Copilot + CodeQL</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484572&amp;idx=1&amp;sn=74b5855e8603a77ee6cecee0092dfaaf</link>
      <description>AI如何赋能SAST工具，4500 字解读微软方案。（大家想看什么内容欢迎留言，笔者会筛选热度最高的议题整理更新）</description>
      <content:encoded><![CDATA[<p>
原创 <span>SASTing</span> <span>2024-11-25 08:00</span> <span style="display: inline-block;">上海</span>
</p>

<p>AI如何赋能SAST工具，4500 字解读微软方案。（大家想看什么内容欢迎留言，笔者会筛选热度最高的议题整理更新）</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=22c52ea2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GZKoEfVFOCmMXlAfoSG6cWJicSxecS1eyBGrzHbQ33jBldGdZJ8nYTOBicolf7Pu7J8oVkk2c1vLt8g%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: PingFangSC-regular, sans-serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;" data-mpa-powered-by="yiban.io"><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">关键词</span></h1><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">CodeQL（SAST工具）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">Coplit（AI工具）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">AI增强SAST工具的实现原理</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">AI驱动的SAST工具能带来哪些好处</p></li></ul><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">背景</span></h1><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">在2023年GitHub的一项调查中，开发者们表示，除了<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">编写代码</strong>（占比<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">32%</span>），他们最常做的任务就是<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">发现和修复安全漏洞</strong>（占比<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">31%</span>）。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">随着开发团队将安全检查提前到软件开发生命周期（SDLC）的早期阶段（<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全左移</strong>），开发者们已经成为抵御漏洞的第一道防线。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">然而，遗憾的是，这种“左移”策略更多是将安全实践的责任推给了<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开发者</strong>，而非真正带来好处。不过，45%的开发者认为，在对软件进行安全审查时，如果能很好地结合<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">生成式AI</strong>的能力，那么会在<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">保证软件安全</strong>的前提下，极大地<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">提高开发效率</strong>。</p><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">GitHub高级安全团队的AI负责人<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Tiferet Gazit</p>以及首席安全专家<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Keith Hoodlet</p>从专业角度发表了看法，包括以下三个方面：</div><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">开发者面临的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全挑战</strong></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">AI驱动</strong>的安全工具的价值</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">AI</strong>如何增强静态应用程序安全测试（<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">SAST</strong>）的效果</p></li></ul><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">为什么开发者对安全问题感到沮丧？</span></h2><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">在分享<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Gazit</p>和<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Hoodlet</p>的见解之前，我们先听听开发者的心声。</div><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">2019年末，微软的<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">One Engineering System</p>团队与几位开发者进行了座谈，了解他们在遵循<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全与合规指南</span>时的困扰。虽然这是几年前的事情，但他们的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">痛点</strong>至今依然存在：</div><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">在进行安全审查时，一些开发者被迫使用<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">非定制化</strong>的工具，工具<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">无法结合业务场景做分析</span>，导致产生大量的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">误报漏报</strong>，这严重影响了他们发现和解决安全漏洞的效率。</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">此外，大多数开发者的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">首要任务</strong>是<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">编写和review代码</strong>。然而，在“<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全左移</strong>”策略的背景下，他们还被要求在日常工作中<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">审查、理解和修复漏洞</strong>，这对他们的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全开发</strong>能力提出了更高的要求。</p></li></ul><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">开发者在做安全审查时，需要在<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">不运行项目</span>的前提下发现漏洞，这需要他们有丰富的安<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">全审查经验</span>，并且对各种漏洞类型熟练掌握。开发者需要在&#34;<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开发</strong>&#34;与&#34;<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全</strong>&#34;两个角色之间反复切换，无形中加重了负担，降低了开发效率。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">简而言之：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">安全并非开发过程的固有部分，开发者往往对自己代码的安全性<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">缺乏信心</strong>。</p></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">如果不加以干预，这些困扰只会随着时间的推移而加剧。根据Gartner的预测，到2028年，<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">75%</span>的企业软件工程师将使用<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">AI编码助手</strong>。这意味着，随着开发者借助GitHub <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Copilot</strong>等AI工具提高生产力并编写更多代码，需要审查的代码量也将随之增加。</p><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">安全专家也面临巨大压力</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">通常情况下，每<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">100</span>名开发者中只有<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">一位</span>安全专家，他们最终成为抵御漏洞的<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">最后一道防线</span>（并负责制定和执行安全政策），这是一项艰巨的任务。ISC2（国际信息系统安全认证联盟）在其2023年的工作力研究中报告称，全球对安全专业人员的需求<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">增加了四百万</span>。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">虽然AI不能<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">取代</span>安全专家，但它可以帮助他们扩展知识和能力。</p><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Gazit</p>表示：</div><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">AI可以帮助进行<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">代码和安全审查</strong>，确保在提高开发速度的同时不会导致漏洞的增加。”</p></blockquote><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">AI如何赋能SAST工具</span></h1><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">SAST工具</strong>并非开发者使用的唯一安全工具，但它们是<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">最受欢迎</strong>的工具之一。让我们看看AI如何帮助SAST工具更高效地完成工作。</p><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">AI增强框架建模能力</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">为了让SAST工具检测代码中的漏洞，工具自身需要<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">理解</strong>整个项目。因此，安全专家通过<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">建模</strong>来进行<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">污点分析</strong>。但项目中使用的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">组件/框架是千变万化的</strong>，因此，<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">对常用的框架进行建模</strong>是非常重要的。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">这时AI就派上用场了。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">可以使用<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">AI对开源框架和库进行建模</strong>，从而提高SAST工具对整个项目的理解能力。</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">CodeQL如何<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">通过AI对框架进行建模</strong> 会在后续文章中介绍</p></blockquote><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">在开发环境中提供上下文相关的漏洞信息</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">Code scanning autofix 是一个AI驱动的安全功能示例，它结合了SAST工具（在本例中是GitHub的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CodeQL</strong>）与GitHub <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Copilot</strong>的生成式AI能力。</p><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">code scanning autofix</p>可以带来很多便利：</div><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">开发者可以在<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">PR</strong>(pull request)中直接收到<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">AI建议的代码修复方案和警报</strong></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">收到关于<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">漏洞描述</strong>及<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">针对具体的业务场景的修复建议</strong></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">可以在命令行界面（CLI）中直接<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">查看并应用自动修复建议</strong>，只需启用GitHub CLI<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">扩展</strong>即可</p></li></ul><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">code scanning autofix</p>初版支持分析<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">JavaScript</p>、<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">TypeScript</p>、<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Python</p>、<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Java</p>、<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">C#</p>和<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Go</p>。它能够为<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">超过90%的漏洞类型</span>生成修复方案，并且其中<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">超过三分之二</span>的修复方案<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">几乎无需修改即可合并</span>。未来还将支持更多语言，如<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">C++</p>和<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Ruby</p>。</div><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">开发者可以在<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CI/CD流水线</span>中更快地修复漏洞，而不是在生产环境中才发现这些漏洞。</p><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">增强软件开发生命周期（SDLC）</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">开发者使用SAST工具在整个SDLC中保护他们的代码。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">一旦开发者启用了像<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CodeQL</strong>这样的代码扫描解决方案，SAST工具将扫描源代码，并将安全检查集成到<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CI/CD</strong>工作流程中：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">当你对代码库进行更改并在GitHub上创建PR时，CodeQL会<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自动进行扫描</strong>。如果发现漏洞，它会在PR中对应的文件中<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">发出警报</strong>。开发者可以在合并分支前持续监控代码安全，做到在开发阶段发现漏洞并修复。</p></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">除了commit和PR，你还可以在<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">GitHub Actions</p>工作流程中设置<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">指定时间点运行</strong>CodeQL。因此，如果你想让CodeQL在特定时间间隔内定期扫描代码，可以使用GitHub Actions工作流程进行调度。</div></li></ul><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">code scanning autofix的实际效果</span></h2><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Gazit</p>表示：</div><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><div style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">code scanning autofix</p>通过提供<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">修复方案</strong>及<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">上下文解释</strong>，使CodeQL对开发者<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">更加友好</span>。这种AI应用降低了开发者修复漏洞的门槛。</div></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">SQL注入</strong>是一种常见的漏洞，通常可以通过SAST工具发现。</p><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">以下是<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">code scanning autofix</p>检测<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">SQL注入</strong>并提供<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">AI修复方案</strong>的流程。</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000917" data-ratio="0.524074074074074" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=69b1aa57&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZKoEfVFOCmMXlAfoSG6cWJhZeLCRMHPgK7adtHah8CMsnxDk9BicBmuHA2v0AfKDejLSibj2AHaCOg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">步骤1:发现漏洞</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">CodeQL的代码扫描功能可以在所有公共仓库中免费启用，并自动安排运行。扫描过程主要包括四个部分，都围绕源代码展开：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">tokenization（标记）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">abstraction（抽象）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">semantic analysis（语义分析）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">taint analysis（污点分析）</p></li></ul><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">CodeQL运行原理（以上四步）会在后续文章中解释</p></blockquote><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">步骤2:构建<strong style="align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: inline-block;font-size: 22px;flex-direction: unset;float: unset;height: auto;justify-content: unset;letter-spacing: 0em;line-height: 1.5em;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">prompt</strong> (提示)以生成修复方案</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">对于CodeQL支持的所有语言，开发者将在其仓库的PR中看到<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">SQL注入警报</strong>，以及<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">漏洞描述</strong>和<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">上下文文档</strong>。另外，还会提供一个修复方案，开发者可以选择<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">accept</p>, <p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">edit</p>,或 <p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">dismiss</p>。</div><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">以下是发送给<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Copilot</strong>的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">prompt</strong>中包含的内容：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">CodeQL<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">报告</strong>及关于检测到的漏洞的常规信息：如<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">漏洞示例</strong>及其<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">修复方法</strong>，这些信息是从<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CodeQL漏洞知识库</strong>中获取的。</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">代码片段和行号</strong>，可能来自<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">多个</strong>源代码文件，这些代码片段和行号来源于CodeQL污点分析的完整<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">数据流信息</strong>。这些代码片段就是项目中<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">最可能需要修复的代码块</strong>。</p></li></ul><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">为了指导Copilot的响应格式，我们的机器学习工程师需要：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">限制Copilot的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">基础模型</strong>，使其<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">仅编辑prompt中包含的代码</span>。</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">要求模型生成<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Markdown格式</strong>的输出，包括漏洞的详细<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">描述</strong>和<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">修复方案</strong>。</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">要求提供“before”和“after”的代码块（<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">上下文信息</strong>），展示需要更改的代码片段（包括一些上下文行）以及要进行的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">编辑内容</strong>。</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">要求模型列出修复方案中使用的所有<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">外部依赖项</strong>。</p></li></ul><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">步骤3:检查不良代码</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">做一些过滤操作（不良内容、敏感内容等）</p><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">步骤4:最后的润色</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">在开发者看到Copilot的修复方案之前，<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">fix generator</p>（修复生成器）会<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">处理和优化</strong>LLM（大型语言模型）的输出，以检测并纠正可能的错误。</div><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">fix generator</p>要做以下工作：</div><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">fuzzy search</strong>（模糊搜索），以确保包含AI生成的修复代码与prompt中提供的代码块<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">上下文信息匹配</strong>。模糊搜索寻找代码块之间的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">精确和相似匹配</strong>，以便<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">fix generator</p>可以捕捉并纠正错误，例如<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">缩进</strong>、<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">分号</strong>或<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">代码注释差异</strong>相关的错误。</div></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">使用解析器<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">检查语法错误</strong></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">进行<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">语义检查</strong>，以评估AI提供的修复方案的逻辑。例如，<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">名称解析</strong>和<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">类型检查</strong>有助于确保修复代码与原始代码的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">意图和功能</strong>相匹配。</p></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">验证</strong>Copilot修复方案中的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">外部依赖项</strong>。这意味着查找包含项目依赖项信息的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">配置文件</strong>，以查看所需的依赖项<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">是否已存在于项目中</span>。如果没有，<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">fix generator</p>会验证依赖项<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">是否存在</span>，并检查其是否有漏洞。然后，它会将需要的依赖项<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">添加到配置文件</strong>中，作为修复建议的一部分。</div></li></ul><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">步骤5:解释漏洞和修复方案</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">最后一步是在PR中向开发者<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">展示</strong>CodeQL警报。通过<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">code scanning autofix</p>，原始的CodeQL警报会得到<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">增强</strong>：包括AI建议的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">修复方案</strong>、<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">漏洞描述</strong>，以及<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">补丁</strong>等。开发者可以选择<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">accept</p>, <p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">edit</p>,或 <p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">dismiss</p>。</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000916" data-ratio="0.21666666666666667" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=f647f10a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZKoEfVFOCmMXlAfoSG6cWJhUomaT6UvCibuZFJMPEb7icWIG42XjJSuW5KjpOBa84mhMr37kZoDE4w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">如何从AI驱动的SAST工具中受益</span></h1><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">通过AI，安全检查能够无缝集成到开发者的日常工作流程中，使安全成为SDLC的一部分，而非生产后的补救措施。当开发者在<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开发阶段</strong>更容易地确保代码安全时，整个<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">SDLC</strong>都会得到强化。而当SDLC得到更好的保护时，组织可以更专注于创新。</p><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Hoodlet</p>表示：</div><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">当你<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">将安全视为SDLC的一个特性</strong>时，你的应用程序将更能抵御日益复杂的攻击，从而节省时间和金钱。你可以将这些节省下来的成本用于其他改进和新功能的实验。</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">组织在构建安全产品的同时，释放了资源<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">用于创新</strong>。此外，安全团队可以专注于那些需要他们专业知识的战略性项目。</p></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">此外，开发者也可以获益：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">在<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开发阶段</strong>更安全地编写<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">更多代</strong><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">码</strong>。只需看看数据。由Copilot驱动的<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">code scanning autofix</p>可以为代码库中检测到的<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">超过90%</span>的漏洞类提供修复方案，并且超过三分之二的建议几乎无需修改即可合并。</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">更快更好地修复漏洞。通过<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">code scanning autofix</p>，开发者会收到AI生成的代码修复方案（<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">与业务场景结合</strong>）。他们还会收到针对实际业务场景的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">漏洞描述</strong>，而非固定的描述。这种<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">具体的上下文</strong>帮助开发者更好地理解检测到的漏洞的性质、为何存在于代码库中以及如何修复它。</div></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">在<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开发环境</strong>中直接获得<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全指导</strong>。开发者可以在<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">PR</strong>中<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">直接获取AI增强的SAST工具提供的所有信息。</strong>与传统的安全工具不同，其可以被视作<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">定制化工具</strong>。</p></li></ul></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=da13a98d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZKoEfVFOCmMXlAfoSG6cWJhZeLCRMHPgK7adtHah8CMsnxDk9BicBmuHA2v0AfKDejLSibj2AHaCOg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=a53b61ef&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZKoEfVFOCmMXlAfoSG6cWJhUomaT6UvCibuZFJMPEb7icWIG42XjJSuW5KjpOBa84mhMr37kZoDE4w%2F640%3Fwx_fmt%3Dpng"/></p>



<p><a href="2247484572">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=31da13b0&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484572%26idx%3D1%26sn%3D74b5855e8603a77ee6cecee0092dfaaf">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 25 Nov 2024 08:00:00 +0800</pubDate>
    </item>
    <item>
      <title>由老版mybatis-plus本地构建说开去</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484563&amp;idx=1&amp;sn=ba4dfe8fa51550a7ce67f9de9880de06</link>
      <description>开源老项目构建之路</description>
      <content:encoded><![CDATA[<p>
原创 <span>SASTing</span> <span>2024-11-22 08:00</span> <span style="display: inline-block;">上海</span>
</p>

<p>开源老项目构建之路</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=d5ac7849&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQzR4qWZDsR86NQddCGDVDlMBxMsNNV3HnrHIsia0drlMcq5WNPMFLwY1g%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: PingFangSC-regular, sans-serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;" data-mpa-powered-by="yiban.io"><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">由老版mybatis-plus本地构建说开去</span></h1><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">本文详细讲述了如何在本地成功构建<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">mybatis-plus-v2.3.2</p>（2018年9月发布的版本），过程中遇到的各种问题及解决办法，大家可以将本文理解为一篇<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">经验帖</span>，可以举一反三，遇到类似的场景也可以参考这个思路去解决：</div><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">类似的场景：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">需要研究一些<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">比较老的开源项目</strong>，在进行本地构建时遇到的各种问题：</p><ul style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">构建工具新旧版不兼容</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">旧的项目使用一些旧的插件/组件/三方库等（有的都已经废弃了，可能找不到）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">...</p></li></ul></blockquote><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">问题1:gradle新旧版本特性不兼容</span></h2><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">本地clone mybatis-plus后切换到v2.3.2 tag，直接gradle build会报错，显示不支持<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">uploadArchives</p>特性</div><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">解决1:找到对应的旧版gradle并配置</span></h2><ol data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">通过google定位到是gradle新旧版不兼容问题，那么下载哪个旧版本呢，通过观察mybatis-plus-v2.3.2的发布时间，决定要用哪个旧版本的gradle</p></li></ol><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000902" data-ratio="0.19796954314720813" data-type="png" data-w="591" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=eb545c0f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQz07s0JhdxhErJYPMVpzxvXh9JMSYCnzGFXMHUDdT7EibLov8wnQhMPRw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">可以看到是2018.9.17发布的，所以当时使用的gradle版本一定是这个日期之前的。</p><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">ok，现在去找对应的gradle版本：<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><a href="https://gradle.org/releases/" target="_blank">https://gradle.org/releases/</a></p></div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000904" data-ratio="0.8640996602491506" data-type="png" data-w="883" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=d0c9032b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQztcicEzFtT34LFDnTVCT76Xt9icSxWGocGVKozibTzOtEPkJ8ac8xQN4JA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">可以看到v4.10.1是<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">2018.9.12</span>发布的，v4.10是<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">2018.8.27</span>发布的，保险起见，我们使用gradle v4.10，就可以解决新旧版特性不兼容问题</p><ol data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">下载gradle4.10（新版gradle不支持<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">uploadArchives</p>特性）</div></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">idea配置gradle-4.10</p></li></ol><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000906" data-ratio="0.7444444444444445" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=46ae4ded&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQzibf2kdhlshc3EzTvdj3MdpM7GR7UicBibabps5DQRQVURmmnefE6UfIWQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">通过以上操作，可以解决<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">uploadArchives</p>特性不支持问题</div><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">问题2：旧组件propdeps-plugin无法找到</span></h2><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000905" data-ratio="0.1787037037037037" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=8687347c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQzRWbumnnPVP3wg71tDbxjUnf33S08EwD0txL2icy485lyHib3A63W9P8Q%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">直接访问这个地址 <p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><a href="https://repo.spring.io/plugins-release/org/springframework/build/gradle/propdeps-plugin/0.0.7/propdeps-plugin-0.0.7.pom" target="_blank">https://repo.spring.io/plugins-release/org/springframework/build/gradle/propdeps-plugin/0.0.7/propdeps-plugin-0.0.7.pom</a></p>，可以看到需要身份验证</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000903" data-ratio="0.8953722334004024" data-type="png" data-w="497" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=86da1fab&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQzohfacCcnD55D90Zw577ULS3ibzDWVpF0hbEicZszd51mUZFzjBXh6PcQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">解决2：切换build.gradle仓库配置</span></h2><ol data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">直接google搜索，可以找到一个spring仓库的issue（<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><a href="https://github.com/spring-projects/spring-batch/issues/4428" target="_blank">https://github.com/spring-projects/spring-batch/issues/4428</a></p>）：</div></li></ol><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000908" data-ratio="0.45740740740740743" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=df2e37e4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQzBwibwohFnJSNBlCcaSibucSWOUCd9CNhEIic2G9qBg0EOjIBojcliavrgA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">点击 <span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">comment</span>：</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000907" data-ratio="0.32592592592592595" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=f82ea45d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQzHYGpjoicO5k055dNJOPyLOtI60eS0dPw0PxXnjaibHh0PyYTWWQE4ibKg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">可以看到，<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">propdeps-plugin</strong>这个插件已经废弃了，现在发布了新版（<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">spring-attic/propdeps-plugin</span>）作为替换，但是其依旧保留了一些旧版的<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">snapshots</span>（快照），我们点击链接，可以跳转到JFrog，然后直接搜索<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">propdeps-plugin</strong>：</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000909" data-ratio="0.20277777777777778" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=5aa0948d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQz0ARZEr4Q1v4yhRqichFNoMMe7WZguS9Xyxf0XAvNWhKJHN9IibCa2DGA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">第一个是我们要找的：</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000911" data-ratio="0.4527777777777778" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=287a5a37&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQzjA1aRrGO9cnbNwCBSyicicVuMNibCzgbgaBJuazGKWblaeicia5NEEEicxmg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;">img</figcaption></figure><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">可以看到其维护了挺多旧版本的，<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">mybatis-plus v2.3.2</p>用的是<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">0.0.7</p>，我们随便点一个<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">0.0.7</p>的快照版本，找到其pom的url：</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000910" data-ratio="0.337037037037037" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=cedec4ca&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQzu9nYwPh5rUrLvacZMYbez2O6BnKlJRD0kBpezyjbWhWejsGX8Zwe6w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;">img</figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">把url copy出来，url如下：</p><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><a href="https://repo.spring.io/artifactory/plugins-snapshot-local/org/springframework/build/gradle/propdeps-plugin/0.0.7-SNAPSHOT/propdeps-plugin-0.0.7-20140430.192703-1.pom" target="_blank">https://repo.spring.io/artifactory/plugins-snapshot-local/org/springframework/build/gradle/propdeps-plugin/0.0.7-SNAPSHOT/propdeps-plugin-0.0.7-20140430.192703-1.pom</a></p></div><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">根据url可以看到，这个快照版本需要从<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"><a href="https://repo.spring.io/artifactory/plugins-snapshot-local" target="_blank">https://repo.spring.io/artifactory/plugins-snapshot-local</a></p>这个仓库中获取，现在我们去项目的build.gradle中修改：</div><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;"><span style="color: #c678dd;line-height: 26px;">buildscript</span> {    <span style="color: #c678dd;line-height: 26px;">repositories</span> {        maven { url <span style="color: #98c379;line-height: 26px;">&#34;<a href="https://repo.spring.io/plugins-release" target="_blank">https://repo.spring.io/plugins-release</a>&#34;</span> }    }    <span style="color: #c678dd;line-height: 26px;">dependencies</span> {        <span style="color: #c678dd;line-height: 26px;">classpath</span>(<span style="color: #98c379;line-height: 26px;">&#34;org.springframework.build.gradle:propdeps-plugin:0.0.7&#34;</span>)    }}</p></pre><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">改为（<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">maven</strong>仓库及<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">dependencies</strong>都要改）：</p><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;"><span style="color: #c678dd;line-height: 26px;">buildscript</span> {    <span style="color: #c678dd;line-height: 26px;">repositories</span> {        maven { url <span style="color: #98c379;line-height: 26px;">&#34;<a href="https://repo.spring.io/artifactory/plugins-snapshot-local" target="_blank">https://repo.spring.io/artifactory/plugins-snapshot-local</a>&#34;</span> }    }    <span style="color: #c678dd;line-height: 26px;">dependencies</span> {        <span style="color: #c678dd;line-height: 26px;">classpath</span>(<span style="color: #98c379;line-height: 26px;">&#34;org.springframework.build.gradle:propdeps-plugin:0.0.7-SNAPSHOT&#34;</span>)    }}</p></pre><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">改完后，再次build，即可build成功</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000914" data-ratio="0.3101851851851852" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=f58a908b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQzicUB2catNASfiaw3nXW2QicSibHBrMhKRzfBMRu4rwrERjGP4NMXnyHLDg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=aaa34657&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQz07s0JhdxhErJYPMVpzxvXh9JMSYCnzGFXMHUDdT7EibLov8wnQhMPRw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=4b78af71&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQztcicEzFtT34LFDnTVCT76Xt9icSxWGocGVKozibTzOtEPkJ8ac8xQN4JA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=db1c9ecc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQzibf2kdhlshc3EzTvdj3MdpM7GR7UicBibabps5DQRQVURmmnefE6UfIWQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=2c165068&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQzRWbumnnPVP3wg71tDbxjUnf33S08EwD0txL2icy485lyHib3A63W9P8Q%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=615d26e0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQzohfacCcnD55D90Zw577ULS3ibzDWVpF0hbEicZszd51mUZFzjBXh6PcQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=8c976b3c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQzBwibwohFnJSNBlCcaSibucSWOUCd9CNhEIic2G9qBg0EOjIBojcliavrgA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=84e908ae&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQzHYGpjoicO5k055dNJOPyLOtI60eS0dPw0PxXnjaibHh0PyYTWWQE4ibKg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=b6efd01e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQz0ARZEr4Q1v4yhRqichFNoMMe7WZguS9Xyxf0XAvNWhKJHN9IibCa2DGA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c30a89fd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQzjA1aRrGO9cnbNwCBSyicicVuMNibCzgbgaBJuazGKWblaeicia5NEEEicxmg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=0e2f23e7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQzu9nYwPh5rUrLvacZMYbez2O6BnKlJRD0kBpezyjbWhWejsGX8Zwe6w%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=27b6389b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iaq7Uvu15Qibt2LOSbXHV2PYjlZDHgfWd6GrOQZNJvkGLKRGLFa8ibWBMq3YsGWPaRLg1PZGyuDgibH38LZNoWtjZJa%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=27b6389b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iaq7Uvu15Qibt2LOSbXHV2PYjlZDHgfWd6GrOQZNJvkGLKRGLFa8ibWBMq3YsGWPaRLg1PZGyuDgibH38LZNoWtjZJa%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c6589045&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbULRvFESMYRar3rr0C9FQzicUB2catNASfiaw3nXW2QicSibHBrMhKRzfBMRu4rwrERjGP4NMXnyHLDg%2F640%3Fwx_fmt%3Dpng"/></p>



<p><a href="2247484563">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=37e0d1d4&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484563%26idx%3D1%26sn%3Dba4dfe8fa51550a7ce67f9de9880de06">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 22 Nov 2024 08:00:00 +0800</pubDate>
    </item>
    <item>
      <title>设计模式-开闭原则</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484532&amp;idx=1&amp;sn=d3f9affec93aa77a30a8a678338aa7d6</link>
      <description>设计模式之开闭原则</description>
      <content:encoded><![CDATA[<p>
<span>SASTing</span> <span>2024-07-22 08:00</span> <span style="display: inline-block;">上海</span>
</p>

<p>设计模式之开闭原则</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=36a4c715&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTWulcOXnjG1EnsUeOwRvL8bS9jmQ3ia9NONF3Q79RpYynkTyribeKy7EQ%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;" data-mpa-powered-by="yiban.io"><h1 data-tool="mdnice编辑器" style="border-color: rgb(250, 139, 115) rgb(0, 0, 0) rgb(0, 0, 0);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: solid none none;border-width: 2px 1px 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-align: center;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(250, 139, 115);line-height: 1.8em;letter-spacing: 0em;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px 0px 13px 13px;box-shadow: none;display: block;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;padding: 3px 5px 5px;text-align: left;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">考研求职两不误——开放-封闭原则</span></h1><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开闭原则</strong>是面向对象设计思想的核心所在</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">需求发生变化时，要尽量考虑到后续可能的同类变化，对频繁变化的点及时做出<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">抽象</strong></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">面对需求，对程序的改动是通过<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">增加新代码</strong>进行的，而不是<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">更改现有的代码</strong></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">应对频繁变化的点才需抽象，拒绝<em style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">刻意</em>抽象</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000872" data-ratio="0.6654545454545454" data-type="png" data-w="275" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=50e31148&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNT13Uwr6tVhD7Slwe2h9V9nzE3VqmUTQTRaYcUTniblMlCEiclkwdB9Fnw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(250, 139, 115);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;padding: 5px 15px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">1.考研失败</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“……多少次迎着冷眼与嘲笑，从没有放弃过心中的理想，一刹那恍惚，若有所失的感觉，不知不觉已变淡心里爱（谁明白我）……”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜此时正关在房中坐在桌前发呆，音箱中大声地放着 Beyond 乐队的《海阔天空》。此时有人敲门。打开一看，原来是大鸟。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“小菜，怎么听这么<em style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">伤感</em>的歌，声音这么大，我在隔壁都听得清清楚楚。发生什么事了？”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“今天研究生考试成绩出来了，我的英语成绩离分数线差两分。<em style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">之前的努力白费了</em>。</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000873" data-ratio="0.6654545454545454" data-type="png" data-w="275" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=fb9c6a3f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTtlTewxEdjNDX0jmA48ic6nEvFEGRFf5TgpiblImicYVHJ9SrEvTz1oMRg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“失败也是正常的，考不上的人还是占多数呀，想开些吧，<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">找到好工作未必比读研要差的</strong>。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“为了考研，我<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">没有做任何求职的准备</strong>，所以我们班不少同学都找到工作了，我却才刚开始，前段时间的面试也没消息。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“哈，鱼和熊掌岂能兼得，<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">为一件事而放弃另一些机会，也是在情理之中的事</strong>。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“说是这么说，我却感觉比较难受，我的同学，有几个其实水平不比我强，他们都签了 XX 大集团、XX 知名公司，而我现在<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">一无所有</strong>，感觉很糟糕。要是当时我也花点时间在<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">简历</strong>上，或许现在也不至于这么不爽。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“你考研复习的时候，每天学习多长时间，有没有休息的时候？”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“差不多十小时吧，其实效率并不高，有不少时候都困得不行，趴在桌上睡觉去了。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“这就对了，<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">你为什么不利用休息的时间考虑一下自己的简历如何写</strong>，关心一下有些什么单位在招聘呢？这样也就不至于现在这样唉声叹气。”</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000871" data-ratio="0.7078651685393258" data-type="jpeg" data-w="267" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=f9adac72&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTNicUQ7h8CiaQpj24fVVKb1v9Iib8rrFm0lPk74gusU4uEmuetDc5UIlibA%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">我感觉找工作会影响复习的精力</strong>，所以干脆什么都没找，但其实每天都会有些同学求职应聘的消息传到我耳朵里，我也没有安心复习。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“小菜呀，你其实就是没有搞懂一个<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">设计模式的原则</strong>。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“哦，是什么原则？”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“先不谈这个原则，你想想看，<em style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">香港澳门</em>的顺利回归，有一个人起了重要的作用，他是谁？”</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000874" data-ratio="1.382198952879581" data-type="jpeg" data-w="191" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=a9640b53&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTDfpxAPiaF2t83v0N0Hwk0qeic7d6nSOqxsK6icD7A7TZgyWaLknGYibNsg%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“啊，那还用说，是邓小平呀，如果不是他老人家提出的<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">一国两制思想</strong>，或许现在还没回归呢。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“小平同志的确是伟大的政治思想家，他的这一创造性想法有什么<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">独到之处</strong>？”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“我想想看，原因主要是在于<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">大陆的社会主义制度不能修改</strong>，这一点毋庸置疑，而<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">香港澳门长期在资本主义制度下管理和发展</strong>，所以回归时强行修改香港澳门的制度也并<em style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">不合理</em>，所以用‘<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">一国两制</strong>’来解决制度差异造成的矛盾是最合理的办法。”</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000870" data-ratio="0.6267605633802817" data-type="jpeg" data-w="284" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=071364a6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTzHibdywibcXc7EomFG0fFYIIUprhCbgwd0YuSNgPmIyibBibpjUPcUK8TQ%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“说得好，社会主义制度不能修改，邓小平在和英国首相撒切尔夫人谈香港问题的时候，如果咬定香港回来必须要实现<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">社会主义制度</strong>，那回归就困难重重了，香港老百姓也不答应呀，毕竟这么多年来的殖民统治，突然在整个管理制度上进行彻底变化也是不现实的，那么怎么办？为了回归的大局，<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">增加一种制度又何尝不可</strong>，<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">一个国家，两种制度</strong>，这在政治上，是伟大的发明哦。</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0.05);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">在软件设计模式中，这种<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">不能修改，但可以扩展</strong>的思想也是最重要的一种设计原则，它就是<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开放-封闭原则</strong>(<em style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">The Open-CloseedPrinciple，简称OCP</em>)或叫<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开-闭原则</strong>。”</p></blockquote><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(250, 139, 115);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;padding: 5px 15px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">2.开放-封闭原则</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“开放、封闭，具体怎么解释呢？”</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0.05);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;"><strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开放-封闭</strong>原则，是说软件<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">实体</strong>(类、模块、函数等等)应该<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">可以扩展</strong>，但是<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">不可修改</strong>。（ASD）</p></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“这个原则其实是有两个特征，一个是说&#39;<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">对于扩展是开放的</strong>(Openfor extension)’，另一个是说&#39;<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">对于更改是封闭的</strong>(Closed for modification)’（ASD）。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“我们在做任何系统的时候，都不要指望<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">系统一开始时需求确定，就再也不会变化</strong>，这是<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">不现实也不科学</strong>的想法，而既然需求是一定会变化的，那么如何在<em style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">面对需求</em>的变化时，设计的软件可以<em style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">相对容易修改</em>，不至于说，新需求一来，就要把整个程序推倒重来。</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0.05);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">怎样的设计才能面对需求的改变却可以保持相对稳定，从而使得系统可以在第一个版本以后不断推出新的版本呢？<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开放-封闭</strong>给我们答案。”</p></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“我明白了，你的意思是说，设计软件要<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">容易维护又不容易出问题的</strong>最好的办法，就是<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">多扩展，少修改</strong>？”</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000878" data-ratio="0.5870307167235495" data-type="jpeg" data-w="293" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=316c9f1d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTD4IH2GbLsovHmRPXRicbKp3jG3wkS4ib0kDDdMVjoOUV4jjia59IODYvw%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“是的，比如说，我是公司老板，我规定，<em style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">九点上班</em>，不允许迟到。但有几个公司骨干，老是迟到。如果你是老板你怎么做？”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“严格执行考勤制度，<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">迟到扣钱</strong>。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“你倒是够狠，但实际情况是，有的员工家离公司太远，有的员工每天上午要送小孩子上学交通一堵就不得不迟到了。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“这个，让他们有<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">特殊原因的人打报告</strong>，然后允许他们迟到。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“哈，谈何容易，别的不迟到的员工不答应了呀，凭什么他能迟到，我就不能，大家都是工作，我上午也完全可以多睡会再来。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“那怎么办？<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">老是迟到的确也不好</strong>，但不让迟到也不现实。家的远近，交通是否堵塞也不是可以控制的。”</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000876" data-ratio="0.3791208791208791" data-type="jpeg" data-w="364" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=8e7f59e1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTe8I6Aem2Fl6exUP6NjhX2asa8VvmIeFoNKr65OvLOeFLFUUXPHx1ibA%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“仔细想想，你会发现，其实<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">迟到不是主要问题</strong>，每天保证<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">8小时的工作量</strong>是老板最需要的，甚至8小时工作时间也不是主要问题，<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">业绩目标的完成或超额完成才是最重要的指标</strong>，于是应该改变<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">管理方式</strong>，比如<em style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">弹性上班工作制</em>，早到早下班，晚到晚下班，或者每人每月允许三次迟到，迟到者当天下班补时间等等，对市场销售人员可能就更加以业绩为标准，工作时间不固定了。</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0.05);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">这其实就是对工作时间或业绩成效的<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">修改关闭</strong>，而对时间制度<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">扩展的开放</strong>。”</p></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“这就需要老板自己很清楚最希望达到的目的是什么，制定的制度才最合理有效。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“对的，用我们古人的理论来说，<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">管理需要中庸之道</strong>。”</p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(250, 139, 115);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;padding: 5px 15px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">3.何时应对变化</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“啊，有道理。所以，我们尽量应在<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">设计时</strong>，考虑到<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">需求的种种变化</strong>，把问题想得全了，就不会因为需求一来，手足无措。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“哪有那么容易，如果什么问题都考虑得到，那不就成了未卜先知，这是不可能的。<em style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">需求时常会在你想不到的地方出现，让你防不胜防</em>。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“那我们应该怎么做？”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开放-封闭原则</strong>的意思就是说，你设计的时候，时刻要考虑，<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">尽量让这个类是足够好</strong>，写好了就不要去修改了，如果新需求来，我们增加一些类就完事了，<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">原来的代码能不动则不动</strong>。”</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000875" data-ratio="0.56" data-type="jpeg" data-w="300" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=7ca92483&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTibNRQicOlViacVdHtw4Sib5zibwDQvdiasiaam8S2vcKbAwlPicja4ibhKibTGSw%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“这可能做到吗？我深表怀疑呀，怎么可能写完一个类就再也不改了呢？”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“你说得没错，<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">绝对的对修改关闭是不可能的</strong>。无论模块是多么的&#39;封闭’，都会存在一些无法对之封闭的变化。既然不可能完全封闭，</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0.05);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">设计人员必须对于他设计的模块应该对<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">哪种变化封闭做出选择</strong>。他必须先猜测出<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">最有可能发生的变化种类</strong>，然后<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">构造抽象</strong>来隔离那些变化[ASD]。”</p></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“那还是需要猜测程序可能会发生的变化，猜对了，那是成功，猜错了，那就完全走到另一面去了，把本该简单的设计做得非常复杂，<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">很不划算</strong>呀。而且事先猜测，这又是很难做到的。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“你说得没错，我们是很难预先猜测，但我们却可以</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0.05);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">在发生<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">小变化</strong>时，就及早去想办法应对<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">发生更大变化</strong>的可能。也就是说，等到变化发生时<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">立即采取行动</strong>（ASD）。</p></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">正所谓，同一地方，摔第一跤不是你的错，再次在此摔跤就是你的不对了。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“在我们最初编写代码时，<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">假设变化不会发生</strong>。当变化发生时，我们就<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">创建抽象</strong>来隔离以后发生的<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">同类变化</strong>（ASD）。</p><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">比如，我之前让你写的<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">加法</strong>程序，你很快在一个<p style="color: rgb(250, 139, 115);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">client</p>类中就完成，此时变化还没有发生。</div><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">然后我让你加一个<em style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">减法</em>功能，你发现，增加功能需要修改原来这个类，这就违背了今天讲到的&#39;<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开放-封闭原则</strong>’，于是你就该考虑<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">重构程序</strong>，增加一个<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">抽象的运算类</strong>，通过一些面向对象的手段，如<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">继承，多态</strong>等来隔离具体<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">加法、减法</strong>与<p style="color: rgb(250, 139, 115);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">client</p> 耦合，需求依然可以满足，还能应对变化。</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000879" data-ratio="0.45092592592592595" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=a77aac92&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTkczx0sjb98YvtJZWgZXczVI1EEsiczGLm03AYCWbt6VZU0fVVTkhkpA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">这时我又要你再加<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">乘除法</strong>功能，你就不需要再去更改 <p style="color: rgb(250, 139, 115);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">client</p> 以及加法减法的类了，而是增加乘法和除法<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">子类</strong>就可。</div><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0.05);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">即面对需求，对程序的改动是通过<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">增加新代码</strong>进行的，而不是<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">更改现有的代码</strong>[ASD]。这就是&#39;开放-封闭原则’的<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">精神所在</strong>。”</p></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgba(0, 0, 0, 0.4);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0.05);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(0, 0, 0);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">当然，并不是什么时候应对变化都是容易的。我们希望的是在<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开发工作展开不久</strong>就知道可能发生的变化。查明可能发生的变化所等待的<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">时间越长</strong>，要创建正确的抽象就<strong style="color: rgb(250, 139, 115);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">越困难</strong>（ASD）。”</p></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“这个我能理解，如果加减运算都在很多地方应用了，再考虑抽象、考虑分离，就很困难。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开放-封闭原则是面向对象设计的核心所在</strong>。遵循这个原则可以带来面向对象技术所声称的巨大好处，也就是<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">可维护、可扩展、可复用、灵活性好</strong>。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">开发人员应该<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">仅对程序中呈现出频繁变化的那些部分做出抽象</strong>，然而，对于应用程序中的每个部分都<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">刻意</strong>地进行抽象同样不是一个好主意。<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">拒绝</strong>不成熟的抽象和抽象本身一样重要（ASD）。切记，切记。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“哦，我还以为尽量地抽象是好事呢，看来过犹不及呀。”</p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(250, 139, 115);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;padding: 5px 15px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">4.两手准备，全力以赴</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“回过头来说，你<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">考研</strong>和<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">求职</strong>这两件事，考研是你的追求，希望考上研究生，可以更上一层楼，有更大的发展空间和机会。所以考研之前，<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">学习计划是不应该更改</strong>，雷打不动的。这就是<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">对修改关闭</strong>。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">但你要知道，你几个月来只埋头学习，就等于<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">放弃</strong>了许多好公司来你们学校招聘的机会，这机会的失去是很<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">不值得</strong>的。我就不信你一天到晚全在学习，那样效果也不会好。</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000877" data-ratio="0.42318840579710143" data-type="jpeg" data-w="345" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=c39a158e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTTdmo85djafugmDMqN6nHw41r8dsdjKkZKzsdhgxOnfTGq9vQnib5Lqw%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">所以你完全可以抽出一点时间，在<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">不影响你复习的前提下</strong>，来写写自己的<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">简历</strong>，来了解一些招聘大学生的公司的资讯，这不是很好的事吗？既不影响你考研，又可以增大找到好工作的可能性。为考研万一失败后找工作做好了充分的准备。这就是<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">对扩展开放</strong>，<strong style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">对修改关闭</strong>的意义。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“是的，我就不信，我会比别人差！”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟笑了笑说：“好了，我回房间去了，你也早些休息吧。”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">站起身走出了小菜的房门，此时 Beyond 的音乐再次响起，大鸟回头，伸出右手向前摆了个“V”字，说了声:“海阔天空，加油！”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“今天我寒夜里看雪飘过，怀着冷却了的心窝漂远方，风雨里追赶，雾里分不清影踪，天空海阔你与我可会变(谁没在变)，…………仍然自由自我，永远高唱我歌，走遍千里！”</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">（作者注:本故事和“开放-封闭原则”对应有些**牵强,**所以在此做一声明。全力以赴当然是必需，两手准备也是灵活处事的表现，希望读者您能<em style="color: rgb(250, 139, 115);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">对痛苦关闭，对快乐开放</em>。）</p></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=fe5b89bc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNT13Uwr6tVhD7Slwe2h9V9nzE3VqmUTQTRaYcUTniblMlCEiclkwdB9Fnw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=ac16fc43&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTtlTewxEdjNDX0jmA48ic6nEvFEGRFf5TgpiblImicYVHJ9SrEvTz1oMRg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=862b1733&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTNicUQ7h8CiaQpj24fVVKb1v9Iib8rrFm0lPk74gusU4uEmuetDc5UIlibA%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=24750ca9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTDfpxAPiaF2t83v0N0Hwk0qeic7d6nSOqxsK6icD7A7TZgyWaLknGYibNsg%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=8839a72a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTzHibdywibcXc7EomFG0fFYIIUprhCbgwd0YuSNgPmIyibBibpjUPcUK8TQ%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=11963729&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTD4IH2GbLsovHmRPXRicbKp3jG3wkS4ib0kDDdMVjoOUV4jjia59IODYvw%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=db01114e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTe8I6Aem2Fl6exUP6NjhX2asa8VvmIeFoNKr65OvLOeFLFUUXPHx1ibA%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=faec839a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTibNRQicOlViacVdHtw4Sib5zibwDQvdiasiaam8S2vcKbAwlPicja4ibhKibTGSw%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=8f7b67a9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTkczx0sjb98YvtJZWgZXczVI1EEsiczGLm03AYCWbt6VZU0fVVTkhkpA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=a08cfb82&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTTdmo85djafugmDMqN6nHw41r8dsdjKkZKzsdhgxOnfTGq9vQnib5Lqw%2F640%3Fwx_fmt%3Djpeg"/></p>



<p><a href="2247484532">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=f799a385&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484532%26idx%3D1%26sn%3Dd3f9affec93aa77a30a8a678338aa7d6">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 22 Jul 2024 08:00:00 +0800</pubDate>
    </item>
    <item>
      <title>设计模式-单一职责原则</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484531&amp;idx=1&amp;sn=616cdb51a2f444434328017f55ed2805</link>
      <description>设计模式之单一职责原则</description>
      <content:encoded><![CDATA[<p>
<span>SASTing</span> <span>2024-07-15 08:03</span> <span style="display: inline-block;">上海</span>
</p>

<p>设计模式之单一职责原则</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=6eabfe4c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTiaslNibpJnE6Cz6TwcEicqhiaXeK3yFfl3FQaSbtndlPbhreJibyc24ciarA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, PingFangSC-light, serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;" data-mpa-powered-by="yiban.io"><h1 data-tool="mdnice编辑器" style="border-color: rgb(248, 57, 41) rgb(0, 0, 0) rgb(0, 0, 0);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: solid none none;border-width: 2px 1px 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-align: center;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(248, 57, 41);line-height: 1.8em;letter-spacing: 0em;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px 0px 13px 13px;box-shadow: none;display: block;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;padding: 3px 5px 5px;text-align: left;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">拍摄UFO——单职责原则</span></h1><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;color: rgb(34, 34, 34);line-height: 1.8em;letter-spacing: 0em;padding-left: 10px;border-style: none none none solid;border-width: 1px 1px 1px 5px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(248, 57, 41);border-radius: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">1.新手机</span></h2><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟小菜晚上晚饭过后，再外面散步。</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“小菜，刚换的手机感觉如何？”</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：“哈，当然是怎个爽字了得，可以听音乐、玩游戏、拍照、摄像，功能全着呢！”</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“你们这些小年轻，只会赶时髦，手机要那么多功能干吗？能打电话就可以了。”</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000850" data-ratio="0.5071428571428571" data-type="jpeg" data-w="700" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 16px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=3e1c9cc4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTw7yzz41Lej1CN9GavYRJAgvFgGWL2ld5tyhD4vhwPefickRq0LGwRlQ%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：”这你就不懂了吧，比如你出门旅游，<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">数码相机</em>一定要的吧，拍照是最起码的旅游需求；</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">有<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">摄像机</em>会更好，动的影像不是更有保留价值吗；</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">一路上无聊的时候，打打游戏总是需要的，<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">游戏机</em>要准备；</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">坐在大巴士上，看着窗外美景，听听音乐应该也属子正常需求吧，<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">MP3</em>一定要带着了；</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">有时或许还需要什么<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">GPS</em>来定定位，上网看看新闻，发发邮件，查查股票行情，这些求如何办，总不能带着<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">笔记本电脑</em>在路上跑吧。</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">这些东西且不说本身就<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">很重</strong>，很麻烦，就说这些东西的<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">充电器</strong>，就是五花八门，估计单就带这些东西，你就得累个半死了。”</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟：“你说得也没错，现在电子产品能玩的东西太多……”</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜：”啊，大鸟！快看！“</p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;color: rgb(34, 34, 34);line-height: 1.8em;letter-spacing: 0em;padding-left: 10px;border-style: none none none solid;border-width: 1px 1px 1px 5px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(248, 57, 41);border-radius: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">2.拍摄</span></h2><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜惊呼，左手拉住大鸟的手，右手指向了天空。</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大鸟跟着抬头一看，“那应该是架飞机吧！”</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000849" data-ratio="0.56" data-type="jpeg" data-w="300" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 16px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=33211562&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTwsxxegDvUyaQicnJy5LoqTiclwuWeS2AhlibD169BEjzU2gZkINkvRCNQ%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“不可能，”小菜坚决地说，“飞机哪有没翅膀的，那个东西飞得很奇怪，你看，你看，它停在空中，普通飞机怎么会在<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">空中停下来</strong>。”</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“是不太像飞机，<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">飞碟</strong>？！——傻菜，快点用你手机录像呀！”</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“是是是，啊，这手机怎么……等等，”小菜手忙脚乱。</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“看你慌得，”大鸟说，“快些，马上可能就没了。”</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000847" data-ratio="0.749034749034749" data-type="jpeg" data-w="259" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 16px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=a49a6ffd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTicX3ibrc5EVpstmKRBmNsmg3pibuX4LIvX6sjKvhfFpiaSpH1oxZxpGfQA%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“好了好了，”小菜终于打开了手机的摄像功能，对准了天空，“主要是对新功能不熟悉，你看，这家伙飞得多快。”</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“嗯，它应该是<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">飞碟</em>，不然不可能这种样子的，以前也没有听说过这玩意，”大鸟肯定道，“还好你这手机可以摄像——啊，它飞跑了，你拍下来了没有？”</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“好了，我都<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">拍下来了</em>，有点不太清楚，回去放电脑上看看吧。”小菜很开心，他的新手机发挥大作用了，“头一次看到 <em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">UFO</em>，就拍到了，这下可是大新闻了。”</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“是呀，我也头一次看到，我们太幸运了。”</p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;color: rgb(34, 34, 34);line-height: 1.8em;letter-spacing: 0em;padding-left: 10px;border-style: none none none solid;border-width: 1px 1px 1px 5px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(248, 57, 41);border-radius: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">3.没用的东西</span></h2><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">回到家中。小菜将手机文件传入电脑。</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">”这什么呀，黑乎乎的，什么也看不清。”大鸟大为<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">失望</strong>。</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“那不是有一个<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">小白点</strong>吗？”小菜想极力申辩。</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“那白点就和液晶显示器里的坏点一样，这如何看得出是UFO呢，说给别人谁信呀。”</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000848" data-ratio="0.6510791366906474" data-type="jpeg" data-w="278" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 16px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=23730ac2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNT7bMbPYTW9nR56k7Yibricue8iagmLuC33j02CbY21SdAlsicZPZWwicbWdg%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“害！是的。”小菜也承认了这个事实，“这手机拍出来的东西没办法看呀，根本算不上是UFO的证据。”</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小菜拿起手机，一脸苦相，对着它说道：“狗屁，要你这么多功能有鸟用，关键时刻就萎掉，我砸……”小菜举起手机欲往地上砸去。</p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;color: rgb(34, 34, 34);line-height: 1.8em;letter-spacing: 0em;padding-left: 10px;border-style: none none none solid;border-width: 1px 1px 1px 5px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(248, 57, 41);border-radius: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">4.单一职责原则</span></h2><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“砸呀，你砸呀！”大鸟笑嘻嘻地看着小菜，“哼哼，我就知道你舍不得，不过你的手机的确是太没用，这么好的机遇，都没有录成，如果是摄像机，效果一定不会差，因为当时我们眼睛看得很清楚呀。这下说给谁，谁也不信呀！大多数时候，</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">一件产品简单一些，职责单一一些，或许是更好的选择</strong>。这就和设计模式中的一大原则——<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">单一职责</strong>的道理是一样的。”</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000851" data-ratio="0.5256410256410257" data-type="png" data-w="234" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 16px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=bdc3c1e0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTE0W1eiauicLAfhAp3XAkNxXuDyDLQfwtTTYSibk6MnEIX6F1bTWG2Mh3w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“哦，听字面意思，单一职责原则，意思就是说，功能要单一？”</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“哈，可以简单地这么理解，它的准确解释是，就一个类而言，应该<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">仅有一个引起它变化的原因（ASD）</strong>。</p><div data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">我们在做编程的时候，很自然地就会给一个类加各种各样的功能，比如我们写一个窗体应用程序，一般都会生成一个 <p style="color: rgb(248, 57, 41);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Form1</p>这样的类，于是我们就把各种各样的代码，像某种商业运算的算法呀，像数据库访问的 SQL 语句呀什么的都写到这样的类当中，这就意味着，<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">无论任何需求要来，你都需要更改这个窗体类</em>，这其实是很糟糕的，维护麻烦，复用不可能，也缺乏灵活性。”</div><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“是的，我写代码一般刚开始就是把所有的方法直接写在窗体类的代码当中的。”</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-style: none;border-top-width: 3px;border-bottom-width: 3px;border-right-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0.05);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><span style="display: block;color: rgb(248, 57, 41);font-size: 28px;line-height: 1.5em;letter-spacing: 0em;font-weight: bold;">“</span><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(53, 53, 53);font-size: 16px;line-height: 1.8em;letter-spacing: 0.04em;">单一职责原则(<strong style="color: rgb(248, 57, 41);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">SRP</strong>)，就一个类而言，应该仅有一个引起它变化的原因。</p></blockquote><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;color: rgb(34, 34, 34);line-height: 1.8em;letter-spacing: 0em;padding-left: 10px;border-style: none none none solid;border-width: 1px 1px 1px 5px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(248, 57, 41);border-radius: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">5.方块游戏的设计</span></h2><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“我们再来举些例子，比如就拿手机里的<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">俄罗斯方块游戏</strong>为例。要是让你开发这个小游戏，你如何考虑？”大鸟问道。</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000856" data-ratio="1" data-type="jpeg" data-w="225" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 16px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=56f94929&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTPteemq5KHqQRptsbyQtA6CWbqPLz9GUsb3tHj8wlDzlF0TmrhMLqiaA%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“我想想，首先它方块下落动画的原理是画四个小方块，擦掉，然后再在下一行画四个方块。不断地绘出和擦掉就形成了动画，所以应该要有画和擦方块的代码。然后左右键实现左移和右移，下键实现加速，上键实现旋转，这其实都应该是<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">函数</strong>，当然左右移动需要考虑碰撞的问题，下移需要考虑<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">堆积和消层</strong>的问题。”</p><div data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“OK，你也说了不少了。如果就用 <p style="color: rgb(248, 57, 41);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">WinForm</p> 的方式开发，你打算怎么开发呢？”</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000855" data-ratio="1" data-type="png" data-w="225" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 16px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=72e1f0fe&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTkHMNnMqMjAECEiawFbJkTYmc5x5B5koCy6cAicdJ9sOgFUxsWA9gduJg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><div data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“那当然是先建立一个窗体 <p style="color: rgb(248, 57, 41);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Form</p>，然后加一个用于游戏框的控件，比如 <p style="color: rgb(248, 57, 41);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Panel</p> 或者 <p style="color: rgb(248, 57, 41);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">PictureBox</p> ，一个按钮 <p style="color: rgb(248, 57, 41);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Button</p> 来控制&#39;<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开始</em>&#39;，最后再放一个 <p style="color: rgb(248, 57, 41);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Timer</p> 控件用于<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">分时动画</strong>的编程。写代码当然就是编写 <p style="color: rgb(248, 57, 41);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Timer_Tick</p> 事件来<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">绘出和擦除</em>方块，并做出<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">堆积和消层</em>的判断。再编写控件的键盘事件，按了左箭头则左移，右箭头则右移等等。对了，还需要用到些<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">GDI</em>技术的方法来画方块和擦方块。”</div><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“你能不能就这些代码<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">划分一下类</strong>呢？”</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">分类？</strong> 这里好像关键在于各种事件代码如何写吧，这里有什么类可言呢？”</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000854" data-ratio="0.6654545454545454" data-type="jpeg" data-w="275" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 16px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=84547453&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTaYWS7qFEt7KYn9hZsBa5RoRRnkd2xNTtFBg47zRVdhBVm2HPJY9JUg%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“看来你的<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">面向过程开发</strong>已经<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">根深蒂固</em>了。你把所有的代码都写在了 Form1.cs 这个类里，你觉得这合理吗？”</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“可能不合理，但我实在没想出怎么分离它。”</p><div data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“打个比方，如果现在要你写的是手机版的俄罗斯方块程序，即 <p style="color: rgb(248, 57, 41);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">PocketPC</p> 或者 <p style="color: rgb(248, 57, 41);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Windows CE</p> 上运行的程序，它们可以安装 <p style="color: rgb(248, 57, 41);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">.NET</p> 框架的精简版，运行 <p style="color: rgb(248, 57, 41);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">C#</p> 语言编写的应用程序，但PC上的普通 <p style="color: rgb(248, 57, 41);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">WinForm</p> 界面的程序不能使用。那你现在这个代码有什么可以<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">复用</strong>的吗？”</div><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“你都已经说了，不能使用，我当然就没法使用了。<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Copy</em>过去，再针对代码做些改进吧。“</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000853" data-ratio="0.6570397111913358" data-type="jpeg" data-w="277" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 16px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=a56bcd5f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTELwTwY4tzeHZWYVQQwPtTyexNMkOVg1Jcq1iccpfzgd9feRHlwDWvaQ%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“但这当中，<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">有些东西是始终没变的</strong>。”</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“你是说，<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">下落、旋转、碰撞判断、移动、堆积</strong>这些<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">游戏逻辑</em>吧？”</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“说得没错，这些都是<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">和游戏有关的逻辑</strong>，<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">和界面如何表示没有什么关系</strong>，为什么要写在一个类里面呢？</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><span style="text-decoration:underline;">如果一个类承担的职责过多，就等于把这些职责<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">耦合</em>在一起，一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计，当变化发生时，设计会遭受到意想不到的破坏（<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">ASD</strong>）</span>。</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">事实上，你完全可以找出<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">哪些是界面，哪些是游戏逻辑</strong>，然后进行分离。”</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000852" data-ratio="0.27209302325581397" data-type="jpeg" data-w="430" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 16px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=cb256851&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTkL7XEz9nMGRSR8Tshh8ibIjcRSUoEjbGib8ggPTvfVTibd8qWgmfraOuw%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“但我还是不明白，如何分离开。”</p><div data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“你仔细想想看，方块的可移动的游戏区域，可以设计为一个<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">二维整型数组</strong>用来表示坐标，宽10，高20，比如&#39; <p style="color: rgb(248, 57, 41);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">int[,]arraySquare=new int[10,20]; </p>’，那么整个方块的移动其实就是<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">数组的下标变化</strong>，比如原方块在 <p style="color: rgb(248, 57, 41);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">araySquare[3,5]</p>上，则下移时变成 <p style="color: rgb(248, 57, 41);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">arraySquare [3,6]</p>，如果下移同时还按了左键，则是 <p style="color: rgb(248, 57, 41);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">arraySquare[2,6]</p>。每个数组的值就是是否存在方块的标志，<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">存在为1，不存在时缺省为0</strong>。这下你该明白，所谓的碰撞判断，其实就是什么？”</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000857" data-ratio="1" data-type="jpeg" data-w="225" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 16px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=8c4ae4cb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTcjDdYsZrBFQhFH7ibF496GTZMdyZhMVYq4vibSroL7ZcOwNTaIPHLcAw%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“我知道了，</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">是否能左移</strong>，就是判断<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">arraySquare[x,y]</p>中的 <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">x-1</p> 是否小于 0，否则就撞墙了。或者<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">arraySquare [x-1,y]</p>是否等于1，否则就说明左侧有堆积的方块。</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">所谓堆积</strong>，不过是判断 <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">arraySquare [x,y+1]</p>是否等于1的过程，如果是，则将自己 <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">arraySquare[x,y]</p>的值改1。</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">那么消层</strong>，其实就是 <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">arraySquare [x,y]</p>中循环x由0到9，判断<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;"> arraySquare[x,y]</p>是否都等于1，是则此行数据清零，并将其上方的数组值遍历下移一位。”</div></li></ul><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“那你就应该明白了，<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">所谓游戏逻辑，不过就是数组的每一项值变化的问题</strong>，下落、旋转、碰撞判断、移动、堆积这些都是在做<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">数组具体项的值的变化</em>。</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">而<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">界面表示逻辑</strong>，不过是根据数组的数据进行绘出和擦除，或者根据键盘命令调用数组的相应方法进行改变。</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">因此，至少应该考虑将此程序分为两个类，<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">一个是游戏逻辑的类，一个是 WinFom 窗体的类</strong>。当有一天要改变界面，或者换界面时，不过是窗体类的变化，和游戏逻辑无关，以此达到复用的目的。”</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“这个听起来容易，真正要做起来还是有难度的哦！”</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“当然，<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">软件设计真正要做的许多内容，就是发现职责并把那些职责相互分离（ASD）</strong>。其实要去判断是否应该分离出类来，也不难，那就是</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-style: none;border-top-width: 3px;border-bottom-width: 3px;border-right-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0.05);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><span style="display: block;color: rgb(248, 57, 41);font-size: 28px;line-height: 1.5em;letter-spacing: 0em;font-weight: bold;">“</span><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(53, 53, 53);font-size: 16px;line-height: 1.8em;letter-spacing: 0.04em;">如果你能够想到<strong style="color: rgb(248, 57, 41);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">多于一个的动机</strong>去改变一个类，那么这个类就具有<strong style="color: rgb(248, 57, 41);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">多于一个的职责</strong>[ASD]，就应该考虑类的<strong style="color: rgb(248, 57, 41);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">职责分离</strong>。”</p></blockquote><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“的确是这样，<span style="text-decoration:underline;">界面的变化是和游戏本身没有关系的</span>，界面是容易变化的，而游戏逻辑是不太容易变化的，将它们分离开有利于界面的改动。”</p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;color: rgb(34, 34, 34);line-height: 1.8em;letter-spacing: 0em;padding-left: 10px;border-style: none none none solid;border-width: 1px 1px 1px 5px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(0, 0, 0) rgb(248, 57, 41);border-radius: 0px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;box-shadow: none;display: block;font-weight: bold;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">6.手机职责过多吗？</span></h2><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“这下你知道你的手机为什么不能拍摄好 UFO的原因了吧？”大鸟笑道。</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“如果手机只用来接听电话，DV用来拍摄，<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">职责的分离是可以把事情做得更好</em>。不过这其实不是一回事哦，现在的智能手机承担的职责多，并<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">不等于就不可以做好</em>，只不过现在的科技还不能让手机在摄像时超过 DV 而已。”小菜分析说。</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000858" data-ratio="0.5209003215434084" data-type="jpeg" data-w="311" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 16px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=e09b5aba&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTGLZia0D3vjjV5lzVh4z9KWed3nR7WTX54icA1DJH2yalMKeKSCn6c8uQ%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">“<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">整合</strong>当然是一种很好的思想。比如 Google 最初的理想就是将一切的需求都整合到一个文本框里提交，用干净的页面来吸引用户，导致互联网的一场变革。</p><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">但现在分类信息、<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">垂直搜索</strong>又开始流行，这却是<strong style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">单一职责的思想体现</strong>。</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000859" data-ratio="0.56" data-type="png" data-w="300" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 16px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=237c62fd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTpUicyjaibibiaW6icVKxqTSSnVhHIu74CVEEu2lPFbvLibaiayw7mTpR4LL9Q%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(53, 53, 53);line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">现在智能手机整合了很多功能的原因是因为 DV、DC、MP3 等产品的体积也太大了。手机携带很方便，所以才有了这样的过渡产品，如果，<em style="color: rgb(248, 57, 41);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">每一样数码产品都缩小100倍</em>，就像放在包里的一张卡片、一支笔那么简单，而功能和质量都不发生变化，你还会觉得它们很麻烦吗？”大鸟总结道，“总的来说，手机的发展有它的特点，</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-style: none;border-top-width: 3px;border-bottom-width: 3px;border-right-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0.05);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><span style="display: block;color: rgb(248, 57, 41);font-size: 28px;line-height: 1.5em;letter-spacing: 0em;font-weight: bold;">“</span><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(53, 53, 53);font-size: 16px;line-height: 1.8em;letter-spacing: 0.04em;">而编程时，我们却是要在类的<strong style="color: rgb(248, 57, 41);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">职责分离</strong>上多思考，做到<strong style="color: rgb(248, 57, 41);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">单一职责</strong>，这样你的代码才是真正的<strong style="color: rgb(248, 57, 41);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">易维护、易扩展、易复用、灵活多样</strong>。”</p></blockquote></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=8da3f184&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTw7yzz41Lej1CN9GavYRJAgvFgGWL2ld5tyhD4vhwPefickRq0LGwRlQ%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=4fe7304e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTwsxxegDvUyaQicnJy5LoqTiclwuWeS2AhlibD169BEjzU2gZkINkvRCNQ%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=251a6ec9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTicX3ibrc5EVpstmKRBmNsmg3pibuX4LIvX6sjKvhfFpiaSpH1oxZxpGfQA%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c177d7b1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNT7bMbPYTW9nR56k7Yibricue8iagmLuC33j02CbY21SdAlsicZPZWwicbWdg%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=3c6b73af&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTE0W1eiauicLAfhAp3XAkNxXuDyDLQfwtTTYSibk6MnEIX6F1bTWG2Mh3w%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c8b36099&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTPteemq5KHqQRptsbyQtA6CWbqPLz9GUsb3tHj8wlDzlF0TmrhMLqiaA%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=9a38ac32&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTkHMNnMqMjAECEiawFbJkTYmc5x5B5koCy6cAicdJ9sOgFUxsWA9gduJg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=d851748b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTaYWS7qFEt7KYn9hZsBa5RoRRnkd2xNTtFBg47zRVdhBVm2HPJY9JUg%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=14bf71a3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTELwTwY4tzeHZWYVQQwPtTyexNMkOVg1Jcq1iccpfzgd9feRHlwDWvaQ%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=44d5fb56&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTkL7XEz9nMGRSR8Tshh8ibIjcRSUoEjbGib8ggPTvfVTibd8qWgmfraOuw%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=2c6bb99e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTcjDdYsZrBFQhFH7ibF496GTZMdyZhMVYq4vibSroL7ZcOwNTaIPHLcAw%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=cd8dfd11&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTGLZia0D3vjjV5lzVh4z9KWed3nR7WTX54icA1DJH2yalMKeKSCn6c8uQ%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=f78a1535&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GblCqS5y3xsXHsibYTXPHMNTpUicyjaibibiaW6icVKxqTSSnVhHIu74CVEEu2lPFbvLibaiayw7mTpR4LL9Q%2F640%3Fwx_fmt%3Dpng"/></p>



<p><a href="2247484531">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=1f5ffabb&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484531%26idx%3D1%26sn%3D616cdb51a2f444434328017f55ed2805">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 15 Jul 2024 08:03:00 +0800</pubDate>
    </item>
    <item>
      <title>Koltin集合骚操作（二）</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484493&amp;idx=1&amp;sn=80a5b680cfd4dc84387573d482211881</link>
      <description>Kotlin集合高阶函数~</description>
      <content:encoded><![CDATA[<p>
原创 <span>SASTing</span> <span>2024-07-01 08:01</span> <span style="display: inline-block;">上海</span>
</p>

<p>Kotlin集合高阶函数~</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=cffbba14&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Gbh3NzsJVvKicFH7DNQajw6NBR9zTFsydFzRFibLoV9ics8FxddWsRD8uVds9Yic8RnG9LfTjmkSajjAw%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: PingFangSC-regular, sans-serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;"><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">引言</span></h1><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">本文继续补充Kotlin集合高阶函数~</p><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">4.过滤操作符</span></h2><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">filter{...}</p> : <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">过滤函数</strong>，返回<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">满足</strong>指定条件的元素集合</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">filterIndexed{...}</p> : 与<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">filter{}</p>类似，在过滤时可以操作<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">元素下标</strong>（<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">index</p>）</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">filterNot{...}</p> : 与<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">filter{}</p><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">相反</strong></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">filterNotNull()</p> : 返回集合中不为<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">null</p>的元素集合，也就是过滤掉集合中的<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">null</p>元素</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">take(num)</p> : 返回集合中<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">前</strong><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">num</p>个元素组成的集合（针对所有<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Iterable</p>容器）</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">takeWhile{...}</p> : <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">循环遍历</strong>集合，从第一个元素开始遍历，当出现一个不满足条件的元素时，退出遍历，返回遍历过程满足条件的元素（针对所有<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Iterable</p>容器）</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">takeLast(num)</p> : 返回集合中<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">后</strong><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">num</p>个元素组成的集合（针对<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">List</p>）</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">takeLastWhile{...}</p> : 与<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">takeWhile{...}</p>类似，遍历是从最后一个元素开始（针对<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">List</p>）</div></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000831" data-ratio="0.3972222222222222" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=54cf32f0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbh3NzsJVvKicFH7DNQajw6NwgdaBt7CDObTpeKrywyBVq7fiaEY468TcDKRHspCg9NXWFk8hvzYS6g%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">drop(num)</p> : 过滤集合中前<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">num</p>个元素，<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">返回剩余元素</strong>（针对所有<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Iterable</p>容器）</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">dropWhile{...}</p> : <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">循环遍历</strong>集合，从第一个元素开始遍历，当出现一个不满足条件的元素时，退出遍历，<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">返回除遍历过程满足条件的元素外的剩余元素</strong>（针对所有<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Iterable</p>容器）</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">dropLast(num)</p> : 返回集合中除后<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">num</p>个元素外的其他元素（针对<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">List</p>）</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">dropLastWhile{...}</p> : 相同条件下，与<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">takeLastWhile{...}</p>得到的结果相反（针对<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">List</p>）</div></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000832" data-ratio="0.34629629629629627" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=9e9de3d4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbh3NzsJVvKicFH7DNQajw6NcyJoabrhFfum9k8UdGDj57KJQkc0Agic6TJobiaNlsdfvN91Yw27OkAg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">distinct()</p> : 去除<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">重复</strong>元素</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">distinctBy{...}</p> : 根据<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">操作元素</strong>后的结果去重，返回的集合元素顺序与原集合保持一致</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">slice</p> : 按元素下标过滤元素</div></li></ul><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">示例：</p><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;"><span style="color: #c678dd;line-height: 26px;">val</span> list = listOf(<span style="color: #98c379;line-height: 26px;">&#34;a&#34;</span>, <span style="color: #98c379;line-height: 26px;">&#34;bc&#34;</span>, <span style="color: #98c379;line-height: 26px;">&#34;def&#34;</span>, <span style="color: #98c379;line-height: 26px;">&#34;g&#34;</span>, <span style="color: #98c379;line-height: 26px;">&#34;hijk&#34;</span>, <span style="color: #98c379;line-height: 26px;">&#34;lmn&#34;</span>)println(list.take(<span style="color: #d19a66;line-height: 26px;">2</span>))  <span style="color: #5c6370;font-style: italic;line-height: 26px;">// [a, bc]</span>println(list.takeWhile { it.length &lt; <span style="color: #d19a66;line-height: 26px;">4</span> })  <span style="color: #5c6370;font-style: italic;line-height: 26px;">// [a, bc, def, g]</span>println(list.takeLast(<span style="color: #d19a66;line-height: 26px;">2</span>))  <span style="color: #5c6370;font-style: italic;line-height: 26px;">// [hijk, lmn]</span>println(list.takeLastWhile { it.length &lt; <span style="color: #d19a66;line-height: 26px;">4</span> })  <span style="color: #5c6370;font-style: italic;line-height: 26px;">// [lmn]</span>println(list.drop(<span style="color: #d19a66;line-height: 26px;">2</span>))  <span style="color: #5c6370;font-style: italic;line-height: 26px;">// [def, g, hijk, lmn]</span>println(list.dropWhile { it.length &lt; <span style="color: #d19a66;line-height: 26px;">4</span> })  <span style="color: #5c6370;font-style: italic;line-height: 26px;">// [hijk, lmn]</span>println(list.dropLast(<span style="color: #d19a66;line-height: 26px;">2</span>))  <span style="color: #5c6370;font-style: italic;line-height: 26px;">// [a, bc, def, g]</span>println(list.dropLastWhile { it.length &lt; <span style="color: #d19a66;line-height: 26px;">4</span> })  <span style="color: #5c6370;font-style: italic;line-height: 26px;">// [a, bc, def, g, hijk]</span><span style="color: #c678dd;line-height: 26px;">val</span> list3 = listOf(<span style="color: #d19a66;line-height: 26px;">1</span>, <span style="color: #d19a66;line-height: 26px;">1</span>, <span style="color: #d19a66;line-height: 26px;">2</span>, <span style="color: #d19a66;line-height: 26px;">3</span>, <span style="color: #d19a66;line-height: 26px;">3</span>, <span style="color: #d19a66;line-height: 26px;">4</span>, <span style="color: #d19a66;line-height: 26px;">5</span>)println(list3.distinct())  <span style="color: #5c6370;font-style: italic;line-height: 26px;">// [1, 2, 3, 4, 5]</span>println(list3.distinctBy { it % <span style="color: #d19a66;line-height: 26px;">2</span> })  <span style="color: #5c6370;font-style: italic;line-height: 26px;">// [1, 2]</span>println(list3.slice(<span style="color: #d19a66;line-height: 26px;">0</span>..<span style="color: #d19a66;line-height: 26px;">2</span>)) <span style="color: #5c6370;font-style: italic;line-height: 26px;">// [1, 1, 2]</span>println(list3.slice(listOf(<span style="color: #d19a66;line-height: 26px;">2</span>, <span style="color: #d19a66;line-height: 26px;">3</span>, <span style="color: #d19a66;line-height: 26px;">4</span>)))  <span style="color: #5c6370;font-style: italic;line-height: 26px;">// [2, 3, 3]</span></p></pre><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">5.生产操作符</span></h2><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">plus()</p> : <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">合并</strong>两个集合。对于<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">可变集合</strong>，此操作会<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">直接修改集合内容</strong>；对于<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">不可变集合</span>，它会返回一个<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">新的合并后的集合</span>。也可以使用符号<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">+</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">zip</p> : 将两个集合的对应元素<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">配对</strong>，形成一个新的集合，<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">每个元素是一个</strong><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Pair</p>。如果两个集合长度不一致，结果集的长度将与<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">较短的那个集合</strong>相同。</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">unzip</p> :与<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">zip</p>相反，将一个包含<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Pair</p>的集合转换回两个集合。每个<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Pair</p>的元素分别放入<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">两个集合</strong>中。</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">partition</p> : 根据<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">给定的条件</strong>将集合分为两个<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">子集合</strong>：分别存放满足条件的元素和不满足条件的元素。</div></li></ul><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">示例：</p><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;"><span style="color: #c678dd;line-height: 26px;">val</span> list1 = listOf(<span style="color: #d19a66;line-height: 26px;">1</span>, <span style="color: #d19a66;line-height: 26px;">2</span>, <span style="color: #d19a66;line-height: 26px;">3</span>)<span style="color: #c678dd;line-height: 26px;">val</span> list2 = listOf(<span style="color: #d19a66;line-height: 26px;">4</span>, <span style="color: #d19a66;line-height: 26px;">5</span>)<span style="color: #c678dd;line-height: 26px;">val</span> combined = list1 + list2 <span style="color: #5c6370;font-style: italic;line-height: 26px;">// combined 是 [1, 2, 3, 4, 5]</span><span style="color: #c678dd;line-height: 26px;">val</span> names = listOf(<span style="color: #98c379;line-height: 26px;">&#34;Alice&#34;</span>, <span style="color: #98c379;line-height: 26px;">&#34;Bob&#34;</span>)<span style="color: #c678dd;line-height: 26px;">val</span> ages = listOf(<span style="color: #d19a66;line-height: 26px;">24</span>, <span style="color: #d19a66;line-height: 26px;">30</span>)<span style="color: #c678dd;line-height: 26px;">val</span> nameAgePairs = names.zip(ages) <span style="color: #5c6370;font-style: italic;line-height: 26px;">// nameAgePairs 是 [(&#34;Alice&#34;, 24), (&#34;Bob&#34;, 30)]</span><span style="color: #c678dd;line-height: 26px;">val</span> pairs = listOf(<span style="color: #98c379;line-height: 26px;">&#34;Alice&#34;</span> to <span style="color: #d19a66;line-height: 26px;">24</span>, <span style="color: #98c379;line-height: 26px;">&#34;Bob&#34;</span> to <span style="color: #d19a66;line-height: 26px;">30</span>)<span style="color: #c678dd;line-height: 26px;">val</span> (namesList, agesList) = pairs.unzip() <span style="color: #5c6370;font-style: italic;line-height: 26px;">// namesList 是 [&#34;Alice&#34;, &#34;Bob&#34;], agesList 是 [24, 30]</span><span style="color: #c678dd;line-height: 26px;">val</span> numbers = listOf(<span style="color: #d19a66;line-height: 26px;">1</span>, <span style="color: #d19a66;line-height: 26px;">2</span>, <span style="color: #d19a66;line-height: 26px;">3</span>, <span style="color: #d19a66;line-height: 26px;">4</span>, <span style="color: #d19a66;line-height: 26px;">5</span>)<span style="color: #c678dd;line-height: 26px;">val</span> (even, odd) = numbers.partition { it % <span style="color: #d19a66;line-height: 26px;">2</span> == <span style="color: #d19a66;line-height: 26px;">0</span> } <span style="color: #5c6370;font-style: italic;line-height: 26px;">// even 是 [2, 4], odd 是 [1, 3, 5]</span></p></pre><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">6.统计操作符</span></h2><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">any()</p>,<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">any{...}</p> : 检查集合中是否有<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">至少一个元素</strong>满足<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">给定条件</strong>。无参数版<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">any()</p>用于判断集合<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">是否非空</strong>。</div></li></ul><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;"><span style="color: #c678dd;line-height: 26px;">val</span> numbers = listOf(<span style="color: #d19a66;line-height: 26px;">1</span>, <span style="color: #d19a66;line-height: 26px;">2</span>, <span style="color: #d19a66;line-height: 26px;">3</span>, <span style="color: #d19a66;line-height: 26px;">4</span>)<span style="color: #c678dd;line-height: 26px;">val</span> hasEven = numbers.any { it % <span style="color: #d19a66;line-height: 26px;">2</span> == <span style="color: #d19a66;line-height: 26px;">0</span> } <span style="color: #5c6370;font-style: italic;line-height: 26px;">// true</span><span style="color: #c678dd;line-height: 26px;">val</span> isEmpty = listOf&lt;<span style="color: #e6c07b;line-height: 26px;">Int</span>&gt;().any() <span style="color: #5c6370;font-style: italic;line-height: 26px;">// false</span></p></pre><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">all{...}</p> : 检查集合中的所有元素是否<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">都满足给定条件</strong></div></li></ul><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;"><span style="color: #c678dd;line-height: 26px;">val</span> numbers = listOf(<span style="color: #d19a66;line-height: 26px;">2</span>, <span style="color: #d19a66;line-height: 26px;">4</span>, <span style="color: #d19a66;line-height: 26px;">6</span>, <span style="color: #d19a66;line-height: 26px;">8</span>)<span style="color: #c678dd;line-height: 26px;">val</span> allEven = numbers.all { it % <span style="color: #d19a66;line-height: 26px;">2</span> == <span style="color: #d19a66;line-height: 26px;">0</span> } <span style="color: #5c6370;font-style: italic;line-height: 26px;">// true</span></p></pre><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">none()</p>,<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">none{...}</p> : 集合中是否所有元素都<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">不满足</strong>给定条件。无参数版<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">none()</p>判断集合<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">是否为空</strong></div></li></ul><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;"><span style="color: #c678dd;line-height: 26px;">val</span> numbers = listOf(<span style="color: #d19a66;line-height: 26px;">1</span>, <span style="color: #d19a66;line-height: 26px;">3</span>, <span style="color: #d19a66;line-height: 26px;">5</span>)<span style="color: #c678dd;line-height: 26px;">val</span> noEven = numbers.none { it % <span style="color: #d19a66;line-height: 26px;">2</span> == <span style="color: #d19a66;line-height: 26px;">0</span> } <span style="color: #5c6370;font-style: italic;line-height: 26px;">// true</span><span style="color: #c678dd;line-height: 26px;">val</span> isEmpty = listOf&lt;<span style="color: #e6c07b;line-height: 26px;">Int</span>&gt;().none() <span style="color: #5c6370;font-style: italic;line-height: 26px;">// true</span></p></pre><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">max()</p>,<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">maxBy{...}</p> : 返回集合中的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">最大值</strong>。<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">max()</p>适用于<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Comparable</p>类型的集合，<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">maxBy{...}</p>接受一个<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">lambda</p>表达式来确定比较标准</div></li></ul><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;"><span style="color: #c678dd;line-height: 26px;">val</span> numbers = listOf(<span style="color: #d19a66;line-height: 26px;">1</span>, <span style="color: #d19a66;line-height: 26px;">3</span>, <span style="color: #d19a66;line-height: 26px;">2</span>)<span style="color: #c678dd;line-height: 26px;">val</span> maxVal = numbers.maxOrNull() <span style="color: #5c6370;font-style: italic;line-height: 26px;">// 3</span><span style="color: #c678dd;line-height: 26px;">val</span> maxByAbs = numbers.maxBy { -it } <span style="color: #5c6370;font-style: italic;line-height: 26px;">// 1，这里取负数，所以实际是最小值的绝对值最大</span></p></pre><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">min()</p>, <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">minBy{...}</p> : 类似于<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">max()</p>和<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">maxBy{...}</p>, 但用于找到<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">最小值</strong></div></li></ul><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;"><span style="color: #c678dd;line-height: 26px;">val</span> numbers = listOf(<span style="color: #d19a66;line-height: 26px;">1</span>, <span style="color: #d19a66;line-height: 26px;">3</span>, <span style="color: #d19a66;line-height: 26px;">2</span>)<span style="color: #c678dd;line-height: 26px;">val</span> minVal = numbers.minOrNull() <span style="color: #5c6370;font-style: italic;line-height: 26px;">// 1</span></p></pre><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">sum()</p>, <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">sumBy{...}</p>, <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">sumByDouble{...}</p> : 计算集合元素的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">总和</strong>。<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">sum()</p>用于<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">数值类型</strong>集合的直接求和。<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">sumBy{...}</p>和<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">sumByDouble{...}</p>则用于根据<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">提供的函数</strong>计算总和</div></li></ul><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;"><span style="color: #c678dd;line-height: 26px;">val</span> numbers = listOf(<span style="color: #d19a66;line-height: 26px;">1</span>, <span style="color: #d19a66;line-height: 26px;">2</span>, <span style="color: #d19a66;line-height: 26px;">3</span>)<span style="color: #c678dd;line-height: 26px;">val</span> directSum = numbers.sum() <span style="color: #5c6370;font-style: italic;line-height: 26px;">// 6</span><span style="color: #c678dd;line-height: 26px;">val</span> mappedSum = numbers.sumBy { it * <span style="color: #d19a66;line-height: 26px;">2</span> } <span style="color: #5c6370;font-style: italic;line-height: 26px;">// 12</span></p></pre><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">average()</p> : 计算集合中数值的平均值</div></li></ul><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;"><span style="color: #c678dd;line-height: 26px;">val</span> numbers = listOf(<span style="color: #d19a66;line-height: 26px;">1.0</span>, <span style="color: #d19a66;line-height: 26px;">2.0</span>, <span style="color: #d19a66;line-height: 26px;">3.0</span>)<span style="color: #c678dd;line-height: 26px;">val</span> avg = numbers.average() <span style="color: #5c6370;font-style: italic;line-height: 26px;">// 2.0</span></p></pre><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">reduce{...}</p>,<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">reduceIndexed{...}</p>,<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">reduceRight{...}</p>, <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">reduceRightIndexed{...}</p> :  对集合元素进行<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">累积操作</strong>，可以<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自定义累积逻辑</strong>。<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">reduceRight{...}</p>和<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">reduceRightIndexed{...}</p>是<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">从右到左</strong>累积</div></li></ul><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;"><span style="color: #c678dd;line-height: 26px;">val</span> numbers = listOf(<span style="color: #d19a66;line-height: 26px;">1</span>, <span style="color: #d19a66;line-height: 26px;">2</span>, <span style="color: #d19a66;line-height: 26px;">3</span>)<span style="color: #c678dd;line-height: 26px;">val</span> product = numbers.reduce { acc, i -&gt; acc * i } <span style="color: #5c6370;font-style: italic;line-height: 26px;">// 6, 累乘</span><span style="color: #c678dd;line-height: 26px;">val</span> rightSum = numbers.reduceRight { acc, i -&gt; acc + i } <span style="color: #5c6370;font-style: italic;line-height: 26px;">// 6, 从右到左累加</span></p></pre><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">fold{...}</p>,<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">foldIndexed{...}</p>,<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">foldRight{...}</p>,<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">foldRightIndexed{...}</p> : 类似于<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">reduce</p>，但<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">第一个参数可以指定初始值</strong>。<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">foldRight</p>系列也是<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">从右向左</strong>折叠。</div></li></ul><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: Consolas, Monaco, Menlo, monospace;font-size: 12px;"><span style="color: #c678dd;line-height: 26px;">val</span> numbers = listOf(<span style="color: #d19a66;line-height: 26px;">1</span>, <span style="color: #d19a66;line-height: 26px;">2</span>, <span style="color: #d19a66;line-height: 26px;">3</span>)<span style="color: #c678dd;line-height: 26px;">val</span> foldedWithInit = numbers.fold(<span style="color: #d19a66;line-height: 26px;">10</span>) { acc, i -&gt; acc + i } <span style="color: #5c6370;font-style: italic;line-height: 26px;">// 16, 初始值10，累加</span></p></pre></div><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100000842" data-ratio="0.7027777777777777" data-s="300,640" data-type="jpeg" data-w="1080" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=9699602e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Gbh3NzsJVvKicFH7DNQajw6NZKzAIrjyS7uTWMj2VSjK2LaPAIBicHzG6ezsMiaYiavl8w7SiaKHvQ7icXA%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=00c49a81&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbh3NzsJVvKicFH7DNQajw6NwgdaBt7CDObTpeKrywyBVq7fiaEY468TcDKRHspCg9NXWFk8hvzYS6g%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=9198ce19&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbh3NzsJVvKicFH7DNQajw6NcyJoabrhFfum9k8UdGDj57KJQkc0Agic6TJobiaNlsdfvN91Yw27OkAg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c26a2ed9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8R9JYYrc8Ck9iauXBFhcywDdzh1yYNia2vy8RrLJeeXLXNGQmNN7Wnzfhg7KI9ibU5wliaqfX6AUgevd%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c26a2ed9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8R9JYYrc8Ck9iauXBFhcywDdzh1yYNia2vy8RrLJeeXLXNGQmNN7Wnzfhg7KI9ibU5wliaqfX6AUgevd%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c26a2ed9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8R9JYYrc8Ck9iauXBFhcywDdzh1yYNia2vy8RrLJeeXLXNGQmNN7Wnzfhg7KI9ibU5wliaqfX6AUgevd%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c26a2ed9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8R9JYYrc8Ck9iauXBFhcywDdzh1yYNia2vy8RrLJeeXLXNGQmNN7Wnzfhg7KI9ibU5wliaqfX6AUgevd%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c26a2ed9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8R9JYYrc8Ck9iauXBFhcywDdzh1yYNia2vy8RrLJeeXLXNGQmNN7Wnzfhg7KI9ibU5wliaqfX6AUgevd%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c26a2ed9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8R9JYYrc8Ck9iauXBFhcywDdzh1yYNia2vy8RrLJeeXLXNGQmNN7Wnzfhg7KI9ibU5wliaqfX6AUgevd%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c26a2ed9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8R9JYYrc8Ck9iauXBFhcywDdzh1yYNia2vy8RrLJeeXLXNGQmNN7Wnzfhg7KI9ibU5wliaqfX6AUgevd%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c26a2ed9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8R9JYYrc8Ck9iauXBFhcywDdzh1yYNia2vy8RrLJeeXLXNGQmNN7Wnzfhg7KI9ibU5wliaqfX6AUgevd%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c26a2ed9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8R9JYYrc8Ck9iauXBFhcywDdzh1yYNia2vy8RrLJeeXLXNGQmNN7Wnzfhg7KI9ibU5wliaqfX6AUgevd%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c26a2ed9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8R9JYYrc8Ck9iauXBFhcywDdzh1yYNia2vy8RrLJeeXLXNGQmNN7Wnzfhg7KI9ibU5wliaqfX6AUgevd%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c26a2ed9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8R9JYYrc8Ck9iauXBFhcywDdzh1yYNia2vy8RrLJeeXLXNGQmNN7Wnzfhg7KI9ibU5wliaqfX6AUgevd%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=0011fa35&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Gbh3NzsJVvKicFH7DNQajw6NZKzAIrjyS7uTWMj2VSjK2LaPAIBicHzG6ezsMiaYiavl8w7SiaKHvQ7icXA%2F640%3Fwx_fmt%3Djpeg"/></p>



<p><a href="2247484493">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=94cb4e13&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484493%26idx%3D1%26sn%3D80a5b680cfd4dc84387573d482211881">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 01 Jul 2024 08:01:00 +0800</pubDate>
    </item>
    <item>
      <title>Koltin集合骚操作（一）</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484473&amp;idx=1&amp;sn=8d32726aa24a4391b36cdcc3ead028e2</link>
      <description>Kotlin集合操作用着不要太爽</description>
      <content:encoded><![CDATA[<p>
原创 <span>SASTing</span> <span>2024-06-24 08:00</span> <span style="display: inline-block;">上海</span>
</p>

<p>Kotlin集合操作用着不要太爽</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=f55643a4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Ga3z4b74REvDxwAh1jPZGTAasDAGwVVNicrIzh9gxkf2p5VBXiam2oqhvHa8SuLLFANGdtENYh2oB4g%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: PingFangSC-regular, sans-serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;"><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">引言</span></h1><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">作为一名前Java开发者，当我每次需要写一些冗长且常用的功能时，时常会发出这样的感叹：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">这个功能JDK中怎么没有啊？每次都要写好几十行代码，JDK不应该把这个功能封装一下吗</p></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">不知道广大的Java开发者是否也会跟我一样，也会有类似的感慨，欢迎大家<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">留言讨论</strong>。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">在用了Kotlin之后，才知道什么才是真正的方便，其针对集合做了非常丰富的支持：排序、查询、条件过滤、类型转换等等，本文就盘点一下Kotlin中集合的一些骚操作。</p><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">Collection结构</span></h1><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">Kotlin 标准库提供了 <p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">set</p>、<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">list</p>以及 <p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">map</p>的实现。与 Java 不同的是，Kotlin对集合做了区分：<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">元素是否可变</strong>，可变的容器会加<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Mutable</p>前缀，实现对应的接口：</div><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">一个 <span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">只读</span> 接口，<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">只</strong>提供<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">访问</strong>集合元素的操作。</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">一个 <span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">可变</span> 接口，通过<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">写操作</strong>扩展相应的只读接口：添加、删除及更新其元素。</p></li></ul><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">Kotlin中<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Collection</p>的结构如下：</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000815" data-ratio="0.7648148148148148" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=d69ee38f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Ga3z4b74REvDxwAh1jPZGTAFsp0hGdUqoHySyJjiaL9QtJCEhdswEy69vfmoI4AQjgtv63iaUGeBF1A%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><div style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">每种容器类型都有可变与不可变之分，可变的是不可变的子类，如：<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">MutableCollection</p>会实现对应的<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Collection</p>接口（如下图）</div><figure style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000814" data-ratio="0.3333333333333333" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=9f4b9bc9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Ga3z4b74REvDxwAh1jPZGTA8PqdFWicJKNhAiadTRhHpyVODBXJPlYBFZNftFEazhwDxLZiaDcuQdWrQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure></blockquote><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">集合操作</span></h1><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">集合的高阶操作大致可分为六类：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">元素操作符</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">顺序操作符</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">映射操作符</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">过滤操作符</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">生产操作符</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">统计操作符</p></li></ul><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">1.元素操作符</span></h2><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">componentX()</p> ：获取集合中的某一个元素，其中的<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">X</p>只能取<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">1..5</p>，其是<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">List</p>的扩展函数</div></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000813" data-ratio="0.5214180206794683" data-type="png" data-w="677" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=c0d3ac1c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Ga3z4b74REvDxwAh1jPZGTAkcia1LBa6Vso7phTKINU65dpaMDNY6Vl5w0UgOvDcArHGaX2eeicQZ2A%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-2"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">contains(element: T)</p>: 集合中是否包含指定的元素，若存在则返回<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">true</p>，反之返回<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">false</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">elementAt(index: Int)</p>: 获取对应下标的元素。若下标越界，会抛出<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">IndexOutOfBoundsException（下标越界）</p>异常，与<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">get(index)</p>一样</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">elementAtOrElse(index: Int, defaultValue: (Int) -&gt; T)</p>: 获取对应下标的元素。<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">若下标越界，返回默认值</strong>，此默认值就是你传入的下标的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">运算值</strong></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">elementAtOrNull(index)</p> : 获取对应下标的元素。若下标越界，返回<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">null</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">first()</p> : 获取<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">第一个元素</strong>，若集合为空集合，这会抛出<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">NoSuchElementException</p>异常</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">first{}</p> : 获取<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">满足条件的第一个元素</strong>。若不满足条件，则抛出<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">NoSuchElementException</p>异常</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">firstOrNull()</p> : 获取<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">第一个元素</strong>，若集合为空集合，返回<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">null</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">firstOrNull{}</p> : 获取<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">满足条件的第一个元素</strong>。若不满足条件，返回<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">null</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">getOrElse(index,{...})</p> : 同<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">elementAtOrElse</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">getOrNull(index)</p> : 同<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">elementAtOrNull</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">last()</p> : 与<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">first()</p>相反</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">last{}</p> : 与<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">first{}</p>相反</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">lastOrNull{}</p> : 与<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">firstOrNull()</p>相反</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">lastOrNull()</p> : 与<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">firstOrNull{}</p>相反</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">indexOf(T)</p> : 返回指定元素的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">下标</strong>，若不存在，则返回<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">-1</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">indexOfFirst{...}</p> : 返回<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">第一个满足条件元素的下标</strong>，若不存在，则返回<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">-1</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">indexOfLast{...}</p> : 返回<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">最后一个满足条件元素的下标</strong>，若不存在，则返回<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">-1</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">single()</p> : 若集合的长度等于<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">0</p>,则抛出<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">NoSuchElementException</p>异常，若等于<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">1</p>，则返回<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">第一个元素</strong>。反之，则抛出<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">IllegalArgumentException</p>异常</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">single{}</p> : 找到集合中<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">所有满足条件的元素</strong>，若找到的元素个数为1，则返回该元素。否则会根据不同的条件，抛出异常（与<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">singel()</p>一致）</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">singleOrNull()</p> : 与<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">single()</p>类似，但<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">不会抛出异常</strong>，会返回<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">null</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">singleOrNull{}</p> : 与<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">single{}</p>类似，但<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">不会抛出异常</strong>，会返回<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">null</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">forEach{...}</p> : 遍历<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">元素本身</strong></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">forEachIndexed{index,value}</p> : 遍历<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">下标及元素</strong></div></li></ul><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">看到这里，你是不是想说，Kotlin就这？</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000811" data-ratio="0.945" data-type="jpeg" data-w="200" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=eb633414&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Ga3z4b74REvDxwAh1jPZGTAfmk01cBn1ibHTpDthZ2RchD95nl1L8gZqoMFP60nFssdcbEXVbib5dyA%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">稍安勿躁！</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000812" data-ratio="0.6232394366197183" data-type="jpeg" data-w="284" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=8fb4491b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Ga3z4b74REvDxwAh1jPZGTAKOabpRMeGIMfHsDiaPpSEdmdgKSvjDe4Ek8Lne6QLVWXVGSj0OxYmlA%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">接着往下看~</p><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">2.顺序操作符</span></h2><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">reversed()</p> : <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">反转</strong>集合。</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">sorted()</p> : <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自然升序</strong>。</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">sortedBy{}</p> : <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">有条件的升序</strong>（不满足条件的放在<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">前面</strong>，满足条件的放在<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">后面</strong>）</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">sortedDescending()</p> : <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自然降序</strong>。</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">sortedByDescending{}</p> : <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">有条件的降序</strong>（不满足条件的放在<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">后面</strong>，满足条件的放在<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">前面</strong>），与<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">sortedBy{}</p>相反</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">sortedWith(comparator: </p><span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Comparator</p></span><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">&lt;</p><span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">in </p></span><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">T)</p>：<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自定义比较器</strong></div></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000818" data-ratio="0.8333333333333334" data-type="jpeg" data-w="984" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=82eb6067&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Ga3z4b74REvDxwAh1jPZGTAExIe5ZTbN6oxrnOA2ExKnooVKysDQiagmUPda5FicibXnNDZxJLcKTVuw%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">3.映射操作符</span></h2><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">map{...}</p> : 把每个元素按照<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">特定的方法</strong>进行<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">转换</strong>，组成一个<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">新的集合</strong></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">mapNotNull{...}</p> : 与<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">map{}</p>函数的作用相同，但会<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">过滤掉</strong>转换之后为<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">null</p>的元素</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">mapIndexed{index,result}</p> : 与<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">map{}</p>函数的作用相似，但在转换过程中可以拿到<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">每个元素的下标</strong>，最终也会组成一个新<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">的集合</strong></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">mapIndexedNotNull{index,result}</p> : 与<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">mapIndexed{}</p>函数的作用相同，但会<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">过滤掉</strong>转换之后为<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">null</p>的元素</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">&lt;T, R&gt; Iterable&lt;T&gt;.flatMap(transform: (T) -&gt; Iterable&lt;R&gt;): List&lt;R&gt;</p>: 可分为flat和map两个步骤，flat可以将集合<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">扁平化</strong>处理，map可以对集合进行<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">转换</strong>。该函数在处理<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">集合嵌套层级很多</strong>的情况很实用，可以很大程度上简化操作</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">&lt;T, K&gt; Iterable&lt;T&gt;.groupBy(keySelector: (T) -&gt; K): Map&lt;K, List&lt;T&gt;&gt;</p>: 对集合进行<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">分组</strong>。你需要传一个key，函数会根据<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">条件</strong>把集合拆分为为一个<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Map&lt;K,List&lt;T&gt;&gt;</p>类型的集合</div></li></ul><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">示例：</p><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style=""><span style="color: #c678dd;line-height: 26px;">val</span> numbers = listOf(<span style="color: #d19a66;line-height: 26px;">1</span>, <span style="color: #d19a66;line-height: 26px;">2</span>, <span style="color: #d19a66;line-height: 26px;">3</span>, <span style="color: #d19a66;line-height: 26px;">4</span>)<span style="color: #c678dd;line-height: 26px;">val</span> squared = numbers.map { it * it }<span style="color: #5c6370;font-style: italic;line-height: 26px;">// squared 是 [1, 4, 9, 16]，每个数字被平方</span><span style="color: #c678dd;line-height: 26px;">val</span> mixedValues = listOf(<span style="color: #98c379;line-height: 26px;">&#34;1&#34;</span>, <span style="color: #98c379;line-height: 26px;">&#34;two&#34;</span>, <span style="color: #98c379;line-height: 26px;">&#34;3&#34;</span>, <span style="color: #98c379;line-height: 26px;">&#34;four&#34;</span>)<span style="color: #c678dd;line-height: 26px;">val</span> integers = mixedValues.mapNotNull { it.toIntOrNull() }<span style="color: #5c6370;font-style: italic;line-height: 26px;">// integers 是 [1, 3]，只有可以转换为整数的字符串被保留</span><span style="color: #c678dd;line-height: 26px;">val</span> words = listOf(<span style="color: #98c379;line-height: 26px;">&#34;apple&#34;</span>, <span style="color: #98c379;line-height: 26px;">&#34;banana&#34;</span>, <span style="color: #98c379;line-height: 26px;">&#34;cherry&#34;</span>)<span style="color: #c678dd;line-height: 26px;">val</span> indexedWords = words.mapIndexed { index, word -&gt; <span style="color: #98c379;line-height: 26px;">&#34;<span style="color: #d19a66;line-height: 26px;">$index</span>: <span style="color: #d19a66;line-height: 26px;">$word</span>&#34;</span> }<span style="color: #5c6370;font-style: italic;line-height: 26px;">// indexedWords 是 [&#34;0: apple&#34;, &#34;1: banana&#34;, &#34;2: cherry&#34;]，每个单词前加上了它的索引</span><span style="color: #c678dd;line-height: 26px;">val</span> <span style="color: #c678dd;line-height: 26px;">data</span> = listOf(<span style="color: #98c379;line-height: 26px;">&#34;some&#34;</span>, <span style="color: #98c379;line-height: 26px;">&#34;&#34;</span>, <span style="color: #98c379;line-height: 26px;">&#34;text&#34;</span>, <span style="color: #98c379;line-height: 26px;">&#34;none&#34;</span>, <span style="color: #98c379;line-height: 26px;">&#34;here&#34;</span>)<span style="color: #c678dd;line-height: 26px;">val</span> nonEmptyItems = <span style="color: #c678dd;line-height: 26px;">data</span>.mapIndexedNotNull { _, value -&gt; <span style="color: #c678dd;line-height: 26px;">if</span> (value.isNotBlank()) value <span style="color: #c678dd;line-height: 26px;">else</span> <span style="color: #56b6c2;line-height: 26px;">null</span> }<span style="color: #5c6370;font-style: italic;line-height: 26px;">// nonEmptyItems 是 [&#34;some&#34;, &#34;text&#34;, &#34;none&#34;, &#34;here&#34;]，过滤掉了空字符串</span><span style="color: #c678dd;line-height: 26px;">val</span> nestedLists = listOf(listOf(<span style="color: #d19a66;line-height: 26px;">1</span>, <span style="color: #d19a66;line-height: 26px;">2</span>), listOf(<span style="color: #d19a66;line-height: 26px;">3</span>), listOf(<span style="color: #d19a66;line-height: 26px;">4</span>, <span style="color: #d19a66;line-height: 26px;">5</span>, <span style="color: #d19a66;line-height: 26px;">6</span>))<span style="color: #c678dd;line-height: 26px;">val</span> flatList = nestedLists.flatMap { it }<span style="color: #5c6370;font-style: italic;line-height: 26px;">// flatList 是 [1, 2, 3, 4, 5, 6]，将嵌套的列表展平</span><span style="color: #c678dd;line-height: 26px;">val</span> people = listOf(<span style="color: #98c379;line-height: 26px;">&#34;Alice&#34;</span>, <span style="color: #98c379;line-height: 26px;">&#34;Bob&#34;</span>, <span style="color: #98c379;line-height: 26px;">&#34;Charlie&#34;</span>, <span style="color: #98c379;line-height: 26px;">&#34;David&#34;</span>, <span style="color: #98c379;line-height: 26px;">&#34;Eve&#34;</span>)<span style="color: #c678dd;line-height: 26px;">val</span> byFirstLetter = people.groupBy { it.first() }<span style="color: #5c6370;font-style: italic;line-height: 26px;">// byFirstLetter 是 {&#39;A&#39;=[&#34;Alice&#34;], &#39;B&#39;=[&#34;Bob&#34;], &#39;C&#39;=[&#34;Charlie&#34;], &#39;D&#39;=[&#34;David&#34;], &#39;E&#39;=[&#34;Eve&#34;]}，按名字首字母分组</span></p></pre><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">到此，阁下该如何应对？</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000817" data-ratio="0.725" data-type="jpeg" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=3e215fda&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Ga3z4b74REvDxwAh1jPZGTA7ljtnL95Sz4rSWngmDNGO9lRR7y5yKHnJzOZGiaic6pUCOW4DuR0xwpw%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">篇幅太长，下一章讲集合的<strong>过滤操作符</strong>、<strong>生产操作符</strong>及<strong>统计操作符</strong>。</p></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=fd018454&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Ga3z4b74REvDxwAh1jPZGTAFsp0hGdUqoHySyJjiaL9QtJCEhdswEy69vfmoI4AQjgtv63iaUGeBF1A%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=8d5fbb6f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Ga3z4b74REvDxwAh1jPZGTA8PqdFWicJKNhAiadTRhHpyVODBXJPlYBFZNftFEazhwDxLZiaDcuQdWrQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=083c05bb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Ga3z4b74REvDxwAh1jPZGTAkcia1LBa6Vso7phTKINU65dpaMDNY6Vl5w0UgOvDcArHGaX2eeicQZ2A%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=87699e36&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Ga3z4b74REvDxwAh1jPZGTAfmk01cBn1ibHTpDthZ2RchD95nl1L8gZqoMFP60nFssdcbEXVbib5dyA%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=8fcfa5de&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Ga3z4b74REvDxwAh1jPZGTAKOabpRMeGIMfHsDiaPpSEdmdgKSvjDe4Ek8Lne6QLVWXVGSj0OxYmlA%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=266c513c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Ga3z4b74REvDxwAh1jPZGTAExIe5ZTbN6oxrnOA2ExKnooVKysDQiagmUPda5FicibXnNDZxJLcKTVuw%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=0e11706b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8d5CDJmhbMZ2IUtpwOpCgGlWcWG4jNzWG6haYSLS2m1OO3KQibm2DwJmPicX154r8QPYLx6NOz9P8N%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=7a87052b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Ga3z4b74REvDxwAh1jPZGTA7ljtnL95Sz4rSWngmDNGO9lRR7y5yKHnJzOZGiaic6pUCOW4DuR0xwpw%2F640%3Fwx_fmt%3Djpeg"/></p>



<p><a href="2247484473">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=dee34275&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484473%26idx%3D1%26sn%3D8d32726aa24a4391b36cdcc3ead028e2">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 24 Jun 2024 08:00:00 +0800</pubDate>
    </item>
    <item>
      <title>白盒分析神器-代码属性图CPG-3000字参数讲解</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484458&amp;idx=1&amp;sn=498d88ec460a402fd901e86d31b621b6</link>
      <description>一文读懂代码属性图CPG复杂的参数配置。</description>
      <content:encoded><![CDATA[<p>
原创 <span>SASTing</span> <span>2024-06-11 08:30</span> <span style="display: inline-block;">上海</span>
</p>

<p>一文读懂代码属性图CPG复杂的参数配置。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=0165f6a1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Gbfv5Aq6bxwjxpLWQXV6wjXvZzPrRXhcicK25aaiaibiciaJu9At82M45L59Iv2JmmJJt0kMgZFRGGQLKw%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: PingFangSC-regular, sans-serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;"><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">一、项目导入</span></h1><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="">implementation(group = &#34;de.fraunhofer.aisec&#34;, name = &#34;cpg-core&#34;, version = cpgVersion)implementation(group = &#34;de.fraunhofer.aisec&#34;, name = &#34;cpg-language-java&#34;, version = cpgVersion)</p></pre><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">分析java项目需要导入针对java的<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">cpg-language-java</p></div><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">二、cpg调用</span></h1><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">1.使用方式</span></h2><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大致逻辑：构建翻译配置<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">TranslationConfiguration</p>，翻译管理<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">TranslationManager</p>获取配置，通过<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">builder</p>构建分析器，然后开始分析</div><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;"><p>TranslationConfiguration</p>构建</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">参考：<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">de.fraunhofer.aisec.cpg.analysis.AnalysisTest#testNullPointer</p></div><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style=""><span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">fun</span> <span style="color: #61aeee;line-height: 26px;">testNullPointer</span><span style="line-height: 26px;">()</span></span> {    <span style="color: #c678dd;line-height: 26px;">val</span> config =        TranslationConfiguration.builder()            .sourceLocations(File(<span style="color: #98c379;line-height: 26px;">&#34;src/test/resources/Array.java&#34;</span>))            .defaultPasses()            <span style="color: #5c6370;font-style: italic;line-height: 26px;">//                .registerLanguage&lt;JavaLanguage&gt;()</span>            .build()    <span style="color: #c678dd;line-height: 26px;">val</span> analyzer = TranslationManager.builder().config(config).build()    <span style="color: #c678dd;line-height: 26px;">val</span> result = analyzer.analyze().<span style="color: #c678dd;line-height: 26px;">get</span>()    NullPointerCheck().run(result)}</p></pre><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">通过cpg官方的测试用例中的测试方法，可以发现，在构建<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">TranslationConfiguration</p>时传递了三个参数：</div><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">sourceLocations</p></li></ul><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">进入该方法</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000529" data-ratio="0.32037037037037036" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=e0c10ee7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbfv5Aq6bxwjxpLWQXV6wjX2bL0icnbWjfYPkHKup9UbCkDC10n5VIAmoW9PcoO5SCFjxj4Cq1Tibkg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">可以发现，参数是待分析的源码/源码所在目录，</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">defaultPasses</p></li></ul><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">进入该方法</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000532" data-ratio="0.7787037037037037" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=470cb88f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbfv5Aq6bxwjxpLWQXV6wjX34PXKPSYibQHD2dfcbzqabmepPI4zCh7PduL2rsOhG01moF8UwIOtnw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">该方法指定默认的<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Passes</p>策略，包含了 类型处理、DFG处理、EOG处理等等（为cpg的完整性提供了保障）</div><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">registerLanguage（被注释）</p></li></ul><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">进入该方法</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000530" data-ratio="0.21481481481481482" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=0bd5a83c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbfv5Aq6bxwjxpLWQXV6wjXRXUBW3v1UtNgsQpbc5E1oDtIK0sD2xBqjUb5cLdqE6BL4rBtdKT8Bw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">可以看到，其可以指定待分析项目的语言，其支持的语言有这么多~</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000533" data-ratio="0.7027777777777777" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=5ea009e8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbfv5Aq6bxwjxpLWQXV6wjXQLdJZy8cLibtiarronj2vKMRh5Cuex20QLdliaZrkKYnbtkAzZNFIqeyA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">另外，其还支持自定义语言，大概步骤如下：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">要支持一种新的编程语言，你需要执行以下步骤：</p><ol style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">提供一种新的语言定义。在这个阶段，你需要考虑该编程语言的特点以及它必须实现哪些<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">LanguageTraits</p>（语言特征）。通过这种方式，你可以对该语言进行精细化调整，确保各个分析流程（Passes）能够正确运作。</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">实现一个新的<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">LanguageFrontend</p>。当遇到匹配新语言的文件时，这个前端将会被执行。前端的要求已经在上面详细描述过。</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">为了让CPG能够使用新添加的前端，你需要相应地配置翻译过程。这是通过<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">TranslationConfiguration</p>来完成的，在此配置中，你需要通过调用其中一个<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">registerLanguage()</p>方法来注册你的新语言，以便于CPG能够识别并使用针对新语言的前端进行源代码到代码属性图的转换。示例如下：</div></li></ol><pre style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style=""><span style="color: #c678dd;line-height: 26px;">val</span> config: TranslationConfiguration = TranslationConfiguration    .builder()    <span style="color: #5c6370;font-style: italic;line-height: 26px;">// More configuration</span>    .registerLanguage(MyNewLanguage()) <span style="color: #5c6370;font-style: italic;line-height: 26px;">// Option 1</span>    .registerLanguage&lt;MyOtherNewLanguage&gt;() <span style="color: #5c6370;font-style: italic;line-height: 26px;">// Option 2</span>    .registerLanguage(<span style="color: #98c379;line-height: 26px;">&#34;MyThirdNewLanguage&#34;</span>) <span style="color: #5c6370;font-style: italic;line-height: 26px;">// Option 3</span>    .build()</p></pre></blockquote><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">很显然，要调用cpg进行代码分析，肯定要明确其内部有一些什么功能，可以通过什么方法去控制他（参数/配置等），那么<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">TranslationConfiguration</p>就很重要了~</div><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">2.TranslationConfiguration解析</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">高能预警！！！高能预警！！！高能预警！！！</span></p><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">location：<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">kotlin/de/fraunhofer/aisec/cpg/TranslationConfiguration.kt</p></div><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">TranslationConfiguration</p>的类结构如下，这么多字段，看看每个字段都是干嘛的</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000531" data-ratio="1.2988741044012282" data-type="png" data-w="977" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=24d8d02e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbfv5Aq6bxwjxpLWQXV6wjXhbia8sjZtKcHbibmkSWicSoWf7qria4laibVQES3PddUJmVA8WjGbUBh0Uw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">1.symbols</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">附加符号定义，主要用于C++。这是一个<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Map&lt;String,String&gt;</p>映射表，可以用来预先定义一些全局符号或者宏定义，帮助解析器正确解析源代码。</div><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">2.softwareComponents</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">源代码文件列表。用<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Map&lt;String,List&lt;File&gt;&gt;</p>存储，cpg默认将<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">key</p>作为&#34;<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">application</p>&#34;，<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">value</p>就是源文件<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">List</p>。</div><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">当使用Builder构建时，可以调用<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">sourceLocations</p>方法，指定源文件列表，该方法将文件列表存储到<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">softwareComponents</p>表中</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000537" data-ratio="0.3148148148148148" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=2eb709a6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbfv5Aq6bxwjxpLWQXV6wjXT03psc5ntz2QNGWFxpadxs2SI9Qt2T5NBYgiaVFch78bhwnVqBajneg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">3.topLevel</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">通常是待分析项目的根目录。其<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">可以为null</strong></p><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">4.debugParser</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">是否启用解析器调试输出。当设为<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">true</p>时，将在解析过程中生成额外的调试信息。 一般调试时开启。</div><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">5.failOnError</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">解析过程发生Error时是否结束。如果为<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">true</p>，则在遇到任何错误时立即停止解析和翻译；若为<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">false</p>，即使存在错误，也会尽力继续执行。</div><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">6.loadIncludes</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">是否递归加载头文件到CPG中（针对C++）。如果为<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">true</p>，解析器不仅会解析<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">头文件</p>来解析符号和模板，还会将其内容加载到CPG中；否则仅解析但不加载。</div><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">7.includePaths</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">头文件目录列表（针对C++）。这是解析器查找头文件的目录集合，确保符号能够正确解析。</p><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">8.includeWhitelist</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">头文件白名单（针对C++）。非空情况下，只有指定列表中的头文件会被解析和加入到CPG中，除非它同时出现在黑名单中。支持相对路径。</p><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">9.includeBlocklist</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">头文件黑名单（针对C++）。非空情况下，指定的头文件不会被解析，也不会加入CPG节点中，<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">黑名单优先于白名单</strong>。</p><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">10.passes</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">解析过程中一系列的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">处理步骤</strong>。这些<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Pass</p>定义了代码翻译或解析过程中要执行的各种操作或步骤。每个<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Pass</p>可能包含多个处理类，这些类负责执行特定的任务，如解析、转换或优化代码。</div><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;"><strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">What is a Pass?</strong></p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">Passes get a prebuilt CPG that at least contains the CPG-AST and output a modified graph. Their purpose is to extend the syntactic representation of code with additional nodes and edges to represent the semantics of the program. Passes can be executed in sequence, where the output of the previous pass serves as input of the next pass.</p></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">解释：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><div style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Passes</p>接收一个预构建的<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">CPG</p>，其中至少包含了<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">CPG-AST</p>（代码属性图抽象语法树），并输出一个经过修改的图。它们的目的是通过<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">添加额外的节点和边来扩展代码的句法表示</strong>，从而体现程序的语义。这些<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Pass</p>可以按照序列执行，<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">前一个Pass的输出结果作为下一个Pass的输入</strong>。</div></blockquote><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">由于<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Pass</p>执行时是有顺序的，所以cpg还提供了一些注解来控制<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Pass</p>之间的执行顺序</div><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><ul style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">DependsOn(other: KClass&lt;out Pass&gt;, softDependency: Boolean = false)</p> -- The annotated pass is executed after the other pass(es). If <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">softDependency</p> is set to <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">false</p>, it automatically registers these passes if they haven&#39;t been registered by the user.</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ExecuteBefore(other: KClass&lt;out Pass&gt;, ...)</p> -- The annotated pass is executed before the other pass(es) specified.</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ExecuteFirst</p> -- The annotated pass is executed as the first pass if possible.</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ExecuteLast</p> -- The annotated pass is executed as the last pass if possible.</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">RequiredFrontend(frontend: KClass&lt;out LanguageFrontend&gt;)</p> -- The annotated pass is only executed if the frontend has been used.</div></li></ul></blockquote><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">那么具体有哪些<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Pass</p>呢，看<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Pass</p>类结构：</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000538" data-ratio="0.8748796920115496" data-type="png" data-w="1039" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=06c2ab75&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbfv5Aq6bxwjxpLWQXV6wjXUW9kn8TMQib2eE7ZSKiabE1J5IClQicl9qKQNl1ZcN53cuwdiaibxrUlkVw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">11.replacedPasses</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">替换特定<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Pass</p>的映射表。允许用户为特定语言替换默认的<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Pass</p>实现，通过<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Builder.replacePass</p>方法或<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ReplacePass</p>注解实现。</div><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">12.languages</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">支持的语言列表，包括相应的前端解析器。</p><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">13.codeInNodes</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">CPG节点中是否包含源代码片段。<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">默认true</strong></p><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">14.processAnnotations</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">是否处理源代码中的注解。<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">默认 false</strong></p><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">15.disableCleanup</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">是否禁用解析后的TypeManager内存清理步骤。<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">默认false，测试时才可以打开</strong>。</p><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">16.useUnityBuild</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">是否启用统一构建模式。<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">默认为false</strong>，仅针对C++。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">在这种模式下，<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">所有的翻译单元会被合并成单一的一个</strong>，从而避免重复处理头文件，降低向图中添加重复节点的情况。</p><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">17.useParallelFrontends</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">是否使用多线程并发处理不同的语言前端。 <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">默认fasle</strong></p><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">如果设为<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">true</p>，表明源文件的抽象语法树（AST）将<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">并行</strong>地进行解析，尽管后续的遍历和增强操作仍然在一个线程中串行执行。这<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">加快了初始解析的速度</strong>，同时保证后续图增强算法的正确性。</div><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">18.useParallelPasses</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">是否开启Pass并行执行，加速分析速度。<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">默认false</strong></p><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">19.inferenceConfiguration</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">推断</strong>配置对象，控制对未知节点的推断策略。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">默认如下：</p><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style=""><span style="color: #c678dd;line-height: 26px;">private</span> <span style="color: #c678dd;line-height: 26px;">var</span> inferenceConfiguration = InferenceConfiguration.Builder().build()</p></pre><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">InferenceConfiguration.Builder</p> 有如下参数：（不显式<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">build</p>时默认都开启）</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000536" data-ratio="0.32037037037037036" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=f7ce95d1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbfv5Aq6bxwjxpLWQXV6wjXlmPiaEs0vFqRV2VnIqqyWfmeIC5MBfW4dicoCXuyoU1ia9WibaeHNr7ygw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><h4 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 17px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;text-align: center;padding: 10px;border-style: double;border-width: 3px;border-color: rgb(255, 255, 255);border-radius: 0px;align-items: unset;box-shadow: none;display: block;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: 80%;-webkit-box-reflect: unset;">19.1.enabled</span></h4><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">在整个系统中开启推断模块</p><h4 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 17px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;text-align: center;padding: 10px;border-style: double;border-width: 3px;border-color: rgb(255, 255, 255);border-radius: 0px;align-items: unset;box-shadow: none;display: block;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: 80%;-webkit-box-reflect: unset;">19.2.guessCastExpressions</span></h4><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">启用对<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">强制转换表达式与调用表达式的智能猜测</strong>。仅针对C/C++。</p><h4 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 17px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;text-align: center;padding: 10px;border-style: double;border-width: 3px;border-color: rgb(255, 255, 255);border-radius: 0px;align-items: unset;box-shadow: none;display: block;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: 80%;-webkit-box-reflect: unset;">19.3.inferRecords</span></h4><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">是否推断record声明（类声明）。</p><h4 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 17px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;text-align: center;padding: 10px;border-style: double;border-width: 3px;border-color: rgb(255, 255, 255);border-radius: 0px;align-items: unset;box-shadow: none;display: block;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: 80%;-webkit-box-reflect: unset;">19.4.inferFunctions</span></h4><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">是否推断方法声明。</p><h4 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 17px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;text-align: center;padding: 10px;border-style: double;border-width: 3px;border-color: rgb(255, 255, 255);border-radius: 0px;align-items: unset;box-shadow: none;display: block;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: 80%;-webkit-box-reflect: unset;">19.5.inferVariables</span></h4><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">是否推断变量，例如全局变量。</p><h4 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 17px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;text-align: center;padding: 10px;border-style: double;border-width: 3px;border-color: rgb(255, 255, 255);border-radius: 0px;align-items: unset;box-shadow: none;display: block;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: 80%;-webkit-box-reflect: unset;">19.6.inferDfgForUnresolvedSymbols</span></h4><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">是否将<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">方法调用</strong>表达式的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DFG</strong>边添加到未解析的函数中。（例如：在给定的源代码中没有方法的实现）</p><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">20.compilationDatabase</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">编译数据库</strong>，<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">可选参数</span>，提供编译信息以辅助解析。  <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">默认为 null</strong></p><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">它存储了一个从源文件到其编译时所需包含文件路径的映射关系。目前主要由<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">C++前端</strong>[<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">CXXLanguageFrontend</p>]使用。可以通过[<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">CompilationDatabase.Companion.fromFile</p>]方法从文件创建一个新的编译数据库。</div><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">21.matchCommentsToNodes</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">是否采用启发式方法将源文件中找到的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">注释与其最近的AST节点匹配</strong>，并将注释保存在<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">节点的注释属性</strong>中。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">默认false</strong></p><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">22.addIncludesToGraph</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">是否将头文件包含关系添加到CPG中（针对C++）。 <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">默认true</strong></p><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">当设为<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">true</p>时，C++前端会在图中建立节点与所需的头文件之间的连接。</div><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">23.passConfigurations</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">针对每个<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Pass</p>类型的个性化<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">配置</strong>映射表，允许对单个<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Pass</p>调整其运行参数或行为。 <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">默认为空</strong></div><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">是一个<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">映射表</strong>，键是<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Pass</p>的类型，值是<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Pass</p>的配置对象。这个映射允许针对不同类型<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Pass</p>定制特定的运行配置参数。</div><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-family: PingFangSC-regular, sans-serif;letter-spacing: normal;text-align: left;text-wrap: wrap;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="padding: 3px 10px;font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">推荐阅读</span></h1><p style="margin-bottom: 0px;color: rgb(0, 0, 0);font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;text-align: left;text-wrap: wrap;">代码属性图CPG系列文章（白盒/静态代码分析方向）：超<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">万字</strong>的详细讲解，文章<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">理论与实践相结合</strong>，示例代码可<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">拿来即用</strong>，<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">通俗易懂</strong>，这样的文章你爱了吗！<img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="vertical-align: middle;outline: 0px;color: rgb(89, 89, 89);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;background-color: rgb(255, 255, 255);display: inline-block;background-size: cover;width: 20px !important;visibility: visible !important;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=76899f41&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FYellowdog.png"/><span style="color: rgb(89, 89, 89);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;background-color: rgb(255, 255, 255);"> </span></p><ul class="list-paddingleft-1" style="width: 577.422px;color: rgb(0, 0, 0);font-family: PingFangSC-regular, sans-serif;font-size: 16px;text-align: left;text-wrap: wrap;letter-spacing: 0.578px;"><li><p style="padding: 8px 10px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247483879&amp;idx=1&amp;sn=7ae5a6526787f114c28ea77645273081&amp;chksm=c1bc5852f6cbd144ea341e039d47e93543fd6d7bd3e99fc80834458b385ca45fb151829a46da&amp;scene=21#wechat_redirect" textvalue="抽丝剥茧代码属性图CPG-第一弹：CPG介绍" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">抽丝剥茧代码属性图CPG-第一弹：CPG介绍</a></p></li><li><p style="padding: 8px 10px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484169&amp;idx=1&amp;sn=ac94ca020fdd67da7b3bbb9879db1bc3&amp;chksm=c1bc5abcf6cbd3aa16500c17fd111091718094f635e0a8ee9a52b48f73a07f6148d0ef963278&amp;scene=21#wechat_redirect" textvalue="抽丝剥茧代码属性图CPG-第四弹：CPG中的DFG-3" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">抽丝剥茧代码属性图CPG-第四弹：CPG中的DFG-3</a></p></li><li><p style="padding: 8px 10px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484111&amp;idx=1&amp;sn=9b7ec8374dc22623e0e5e6fa8f268248&amp;chksm=c1bc5b7af6cbd26cb014505a75f6ba37425a7950e83b9ffe0aee414f6cd9c3baefd839d4cc7e&amp;scene=21#wechat_redirect" textvalue="SAST-短小精悍的Benchmark" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">SAST-短小精悍的Benchmark</a></p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-imgfileid="100000739" data-ratio="1.3547486033519553" data-s="300,640" data-type="png" data-w="1074" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=95622efd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbGOzPuPFwZLwntJAib2XSibE2eaH0Ric3voSsQYMqNtp1342gicJibLMBYXKFc5ltIH5LzjBWrWGukNKw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="margin-bottom: 0px;padding: 8px 10px;text-indent: 0em;word-spacing: 0em;text-wrap: wrap;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-break: break-word;text-align: left;"><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.04em;">能够看到这篇文章</span><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.04em;">，</span><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.04em;">就是我们的缘分，</span><strong style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.6px;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">坚持输出优质内容</strong></strong><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.04em;">是笔者一直在做的事情。</span><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.04em;">若文章对你有帮助，感谢点个免费的 </span><strong style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.04em;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="letter-spacing: 0.6px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">点赞</strong></strong></strong><strong style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.04em;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="vertical-align: middle;display: inline-block;width: 20px;background-size: cover;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=34c2798b&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2FExpression%2FExpression_80%402x.png"/></strong><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.04em;">、</span><strong style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.04em;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="letter-spacing: 0.6px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">在看</strong></strong><img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="vertical-align: middle;display: inline-block;width: 20px;background-size: cover;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=763711ae&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FLetMeSee.png"/></strong><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.04em;">，</span><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.6px;">大</span><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.6px;">家</span><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.6px;">的鼓励</span><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.6px;">是我最大的动力<img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="vertical-align: middle;display: inline-block;width: 20px;background-size: cover;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=6b4764f4&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FAddoil.png"/></span></p><p style="margin-bottom: 0px;padding: 8px 10px;text-indent: 0em;word-spacing: 0em;text-wrap: wrap;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-break: break-word;text-align: left;">点个<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="letter-spacing: 0.6px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">关注</strong></strong></strong>，不后悔<img data-ratio="1" data-w="128" style="display: inline-block;width: 20px;vertical-align: middle;background-size: cover;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=76899f41&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FYellowdog.png"/></p><p class="mp_profile_iframe_wrp"><mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget" data-pluginname="mpprofile" data-id="MzkxNzY3MjE1NA==" data-headimg="http://mmbiz.qpic.cn/sz_mmbiz_png/cdc0h3QF6GZIG0XBUPGw8ENCX2xJKW6sZrx0ZfKcmRf8ttPCKpYscskFTm4sz2cQYQ63M9QZtX6Olrkolib2UFg/0?wx_fmt=png" data-nickname="CodeAnalyzer Ultra" data-alias="CodeAnalyzer" data-signature="分享白盒安全、代码安全相关的技术知识。包括静态代码分析（SAST）、漏洞利用、安全热点资讯等。 致力于打造全面且细致的专栏内容，理论与实践相结合的讲解方式，尽量做到通俗易懂，示例代码可拿来即用，降低学习门槛。" data-from="0"></mp-common-profile></p></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=99b23ddc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8S1257HQNBZgxAwvILibicgicXwDR1J8zn71OaCZVIJrN3pdVdlcVFG1TPbSlcGOIYkFOibIpapuChbV%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=99b23ddc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8S1257HQNBZgxAwvILibicgicXwDR1J8zn71OaCZVIJrN3pdVdlcVFG1TPbSlcGOIYkFOibIpapuChbV%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=838631d7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbfv5Aq6bxwjxpLWQXV6wjX2bL0icnbWjfYPkHKup9UbCkDC10n5VIAmoW9PcoO5SCFjxj4Cq1Tibkg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=a1ab3657&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbfv5Aq6bxwjxpLWQXV6wjX34PXKPSYibQHD2dfcbzqabmepPI4zCh7PduL2rsOhG01moF8UwIOtnw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=5d9752d6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbfv5Aq6bxwjxpLWQXV6wjXRXUBW3v1UtNgsQpbc5E1oDtIK0sD2xBqjUb5cLdqE6BL4rBtdKT8Bw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=ca8b4ef2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbfv5Aq6bxwjxpLWQXV6wjXQLdJZy8cLibtiarronj2vKMRh5Cuex20QLdliaZrkKYnbtkAzZNFIqeyA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=99b23ddc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8S1257HQNBZgxAwvILibicgicXwDR1J8zn71OaCZVIJrN3pdVdlcVFG1TPbSlcGOIYkFOibIpapuChbV%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=447b588b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbfv5Aq6bxwjxpLWQXV6wjXhbia8sjZtKcHbibmkSWicSoWf7qria4laibVQES3PddUJmVA8WjGbUBh0Uw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=5fc3be3e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbfv5Aq6bxwjxpLWQXV6wjXT03psc5ntz2QNGWFxpadxs2SI9Qt2T5NBYgiaVFch78bhwnVqBajneg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=9d13504e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbfv5Aq6bxwjxpLWQXV6wjXUW9kn8TMQib2eE7ZSKiabE1J5IClQicl9qKQNl1ZcN53cuwdiaibxrUlkVw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=99b23ddc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8S1257HQNBZgxAwvILibicgicXwDR1J8zn71OaCZVIJrN3pdVdlcVFG1TPbSlcGOIYkFOibIpapuChbV%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=53baf28d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbfv5Aq6bxwjxpLWQXV6wjXlmPiaEs0vFqRV2VnIqqyWfmeIC5MBfW4dicoCXuyoU1ia9WibaeHNr7ygw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=76899f41&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FYellowdog.png"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=a9058e0c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbGOzPuPFwZLwntJAib2XSibE2eaH0Ric3voSsQYMqNtp1342gicJibLMBYXKFc5ltIH5LzjBWrWGukNKw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=34c2798b&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2FExpression%2FExpression_80%402x.png"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=763711ae&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FLetMeSee.png"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=6b4764f4&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FAddoil.png"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=76899f41&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FYellowdog.png"/></p>



<p><a href="2247484458">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=a5c8c37d&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484458%26idx%3D1%26sn%3D498d88ec460a402fd901e86d31b621b6">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Tue, 11 Jun 2024 08:30:00 +0800</pubDate>
    </item>
    <item>
      <title>代码属性图CPG之数据流图DFG-精简版</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484457&amp;idx=1&amp;sn=442225fea1aab2dc0dddd0f4ef06e81e</link>
      <description>代码属性图CPG中的DFG-精简版</description>
      <content:encoded><![CDATA[<p>
原创 <span>SASTing</span> <span>2024-06-02 15:31</span> <span style="display: inline-block;">上海</span>
</p>

<p>代码属性图CPG中的DFG-精简版</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=9a98bba5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCPibGx1pHQE1DrqSv92jQI3WBqZmlC2MHDib8icp4oAhX5O9fcwQ7nI9a1w%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: PingFangSC-regular, sans-serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;"><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">引言</span></h1><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CPG中的DFG系列</strong>共分为三篇，三篇文章加起来将近<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">10000字</strong>了，针对每个表达式类型都做了非常详尽的讲解，内容已经非常全面且细致了，绝对值得一读，先放个链接哈，想要学习的同学可直接点击链接跳转哈：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484091&amp;idx=1&amp;sn=8d669ff850a2ce4b07f95aae2abe084d&amp;chksm=c1bc5b0ef6cbd218b48a4074b452fe81563899c98e8f00fffdf61587ec0a86b61bd1afbe5a66&amp;scene=21#wechat_redirect" textvalue="抽丝剥茧代码属性图CPG-第二弹：CPG中的DFG-1" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">抽丝剥茧代码属性图CPG-第二弹：CPG中的DFG-1</a></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484132&amp;idx=1&amp;sn=5b29442ae2d35172409a0579ba2eefb8&amp;chksm=c1bc5b51f6cbd2471d0a89873943d824fe9d2bfc5a26623b1899378da1bc314973a9e4a26083&amp;scene=21#wechat_redirect" textvalue="抽丝剥茧代码属性图CPG-第三弹：CPG中的DFG-2" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">抽丝剥茧代码属性图CPG-第三弹：CPG中的DFG-2</a></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484169&amp;idx=1&amp;sn=ac94ca020fdd67da7b3bbb9879db1bc3&amp;chksm=c1bc5abcf6cbd3aa16500c17fd111091718094f635e0a8ee9a52b48f73a07f6148d0ef963278&amp;scene=21#wechat_redirect" textvalue="抽丝剥茧代码属性图CPG-第四弹：CPG中的DFG-3" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">抽丝剥茧代码属性图CPG-第四弹：CPG中的DFG-3</a></p></li></ul><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">但笔者转念一想，想要从这么多内容中提取<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">要点</strong>（或者自己关注的点）还是需要点功夫的，所以嘞，笔者就以自己粗浅的开发经验，从<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">如何利用CPG中的DFG做开发工作</strong>的角度，总结一下<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">常见的使用场景</strong>，方便大家更快地理解掌握重点（若对总结的要点有疑惑的，可以点击文章底部合集标签<span style="cursor: pointer;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;text-align: left;text-wrap: wrap;">代码属性图CPG</span>，去对应的文章中找详细的介绍）</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">tips：本文几乎不会讲解新的内容，本文是一个<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">精简版</strong>，是对前文<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CPG中的DFG的提炼</strong>，若对这块很熟的同学可以忽略哈~</p></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">OK，正文开始~</strong></p><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">DFG常见使用场景总结</span></h1><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">1.CPG运行逻辑回顾</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">CPG的运行逻辑图回顾：</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000796" data-ratio="0.3296296296296296" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=2572a745&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCPzeXrANXPKVvxMbZkFNH45SibbOM9osANUwna488fmWAfUDAg0hx8IFQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">不知道大家有没有详细看这张图，我们之前讲的DFG相关的内容都是属于图中<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">红色方框</strong>标出来的模块，也就是<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Passes</p>阶段的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Data Flow Graph</strong>，当然，在<a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484132&amp;idx=1&amp;sn=5b29442ae2d35172409a0579ba2eefb8&amp;chksm=c1bc5b51f6cbd2471d0a89873943d824fe9d2bfc5a26623b1899378da1bc314973a9e4a26083&amp;scene=21#wechat_redirect" textvalue="抽丝剥茧代码属性图CPG-第三弹：CPG中的DFG-2" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">抽丝剥茧代码属性图CPG-第三弹：CPG中的DFG-2</a><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Reference</p>小节中，提到了<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ControlFlowSensitiveDFGPass</p>，这个是属于图中<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">黄色方框</strong>模块的，也就是<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Control-Flow Sensitive Data Flow Graph</strong>。对这块不太熟的同学，建议大家点击 <a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247483879&amp;idx=1&amp;sn=7ae5a6526787f114c28ea77645273081&amp;chksm=c1bc5852f6cbd144ea341e039d47e93543fd6d7bd3e99fc80834458b385ca45fb151829a46da&amp;scene=21#wechat_redirect" textvalue="抽丝剥茧代码属性图CPG-第一弹：CPG介绍" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">抽丝剥茧代码属性图CPG-第一弹：CPG介绍</a> 回顾一下。</div><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">在第一篇文章中讲到，CPG中的<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Pass</p>是有执行顺序的，也就是说，有的Pass要依赖其他Pass的输出结果。</div><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><div style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">tips: Data Flow Graph 对应源码中的 <p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">DFGPass</p>，Control-Flow Sensitive Data Flow Graph 对应源码中的<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ControlFlowSensitiveDFGPass</p></div></blockquote><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">现在我们来看看<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">DFGPass</p>和<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ControlFlowSensitiveDFGPass</p>与其他Pass的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">依赖关系</strong></div><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">DFGPass</p>依赖<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">SymbolResolver</p></div></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000793" data-ratio="0.0962962962962963" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=649931f3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCP0xgI73VL3YXIdVdV2Lp5QGvovYtArwNicyxl8bXyvlpiaBZ6V16KxvMA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;">img</figcaption></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">SymbolResolver</p>依赖<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">TypeResolver</p>，<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">TypeHierarchyResolver</p>，<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">EvaluationOrderGraphPass</p></div></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000795" data-ratio="0.15185185185185185" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=66f85f2f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCP15r5lIowVljPjzPeibomrxDjiavqFCocqWAqo3GqXQMyzQjGNXGeUUJA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">TypeHierarchyResolver</p>依赖<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">TypeResolver</p></div></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000794" data-ratio="0.11388888888888889" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=2531d187&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCPCjDE4Nklajn99oyDGbb57GJ3V71f2Vx1z1OX8ibkJibO4MqMvEbkqzbA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">TypeResolver</p>，<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">EvaluationOrderGraphPass</p>不需要依赖其他Pass</div></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000792" data-ratio="0.075" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=4a2deeb2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCP6NGuo2QNibrea9mmcrpgPKeuib7mNXtsuiccZakEp6xMkwpdpibUWrdZ3A%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000802" data-ratio="0.08333333333333333" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=1454feb4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCP4Oq7qjs39BnSS0THTATmXxGBQS2CJgicEkldfXmIoic1ngIIxzHUxx0A%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">这些Pass间的依赖关系与图中从左到右的顺序是对应的</strong>，大家可直接看图，比较直观</p><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">2.CallExpression之Known function</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DFG边</strong>：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">CallExpression的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">实参流向被调用方法的形参</strong></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">被调用方法的声明流向CallExpression</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000800" data-ratio="0.18796296296296297" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=40aad0d5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCPQGyLMwABU7Ims0SuNkuU9sjh5M4YClEaSibC1ul52bp9MIwChC3Oh0Q%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">3. AssignExpression</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DFG边</strong>：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">rhs 流向 lhs</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000799" data-ratio="0.42759795570698467" data-type="png" data-w="587" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=cb16a71a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCPZaWprRAQ8icRbiaokDibFGKb809iaMsbia2KOSbKXyRCuRibd8JKDNKT8RbQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">4.Reference之ControlFlowSensitiveDFGPass</span></h2><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Reference</p>（引用类型）是在日常开发中<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">最常见</strong>的的节点类型。</div><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484132&amp;idx=1&amp;sn=5b29442ae2d35172409a0579ba2eefb8&amp;chksm=c1bc5b51f6cbd2471d0a89873943d824fe9d2bfc5a26623b1899378da1bc314973a9e4a26083&amp;scene=21#wechat_redirect" textvalue="抽丝剥茧代码属性图CPG-第三弹：CPG中的DFG-2" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">抽丝剥茧代码属性图CPG-第三弹：CPG中的DFG-2</a>中讲到的<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Reference</p>（引用类型）的DFG构建分为普通的<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">DFGPass</p>与控制流敏感的<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ControlFlowSensitiveDFGPass</p>，经笔者研究，<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">DFGPass</p><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">实用性极低</strong>，故此处就不再总结。</div><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><div style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">一元操作符(<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">++</p>,<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">--</p>)及复杂二元操作符(<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">+=</p>、<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">-=</p>、<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">*=</p>、<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">/=</p>)此处不作总结。</div></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DFG边</strong>：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">变量声明：initializer  --&gt;  VariableDeclaration</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000797" data-ratio="0.15283018867924528" data-type="png" data-w="530" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=987fae85&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCPvpgEwah6xo1EZpKbbjUwxCUJmv3jAfeXT6awmblMKJ3Ixv9UxsQgXg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">变量读取：当前读取语句之前的最后一次写入 --&gt; 当前读取</p></li></ul><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">tips:若在变量读取前有<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">分支语句</strong>，并且if块和else块内<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">都有对变量的写入操作</strong>，CPG会将if块和else块的变量写入语句<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">都流向当前的变量</strong></p></blockquote><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000798" data-ratio="0.20516962843295639" data-type="png" data-w="619" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=0e8a1acd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCPVbx7nYMic6W4bZWogQbeoTxickMka5whnqibPb28icAMQOQGEkS19D8Ztg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">变量简单赋值(operatorCode为<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">=</p>)：</div></li><ul style="list-style-type: square;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">rhs --&gt; lhs</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">lhs --&gt; next read access of reference</p></li></ul></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000803" data-ratio="0.2658064516129032" data-type="png" data-w="775" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=88069811&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCPpuJv4IksPRbxQuDfr7R2CVdt7HWtM9Z8xuOjshMDgvgBZghch2IKzw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">5.MemberExpression</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">成员表达式（MemberExpression）关注以下字段：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">base: Expression</p>: 被访问字段所属的对象表达式</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">refersTo: Declaration?</p>: 被访问字段的声明，如果源码中未实现相应的类，则该字段为<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">null</p></div></li></ul><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">成员表达式（MemberExpression）代表对<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">对象字段的访问</strong>，并通过 <p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">base</p> 属性 <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">对</strong> <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Reference</p></strong> <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">类进行了扩展</strong>。</div><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">如果相应类的实现可用（<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">refersTo</p>不为<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">null</p>），其处理方式与<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Reference</p>一致。如果<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">refersTo</p>字段为<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">null</p>，则<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">base</p><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">会流向该</strong><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">MemberExpression</p>。</div><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DFG边：</strong></p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">refersTo != null</p></div></li><ul style="list-style-type: square;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">MemberExpression</p>是<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Reference</p>的子类，若其<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">refersTo</p>字段不为<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">null</p>，那么其处理方式与<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Reference</p>一致</div></li></ul><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">refersTo == null</p></div></li><ul style="list-style-type: square;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">base --&gt; MemberExpression</p></li></ul></ul><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">6.ForStatement</span></h2><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">for循环语句（<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ForStatement</p>）关注以下字段：</div><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">condition: Statement</p>: for循环的条件</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">conditionDeclaration: Statement</p>: 条件声明语句</div></li></ul><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DFG边：</strong></p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">condition --&gt; ForStatement</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">conditionDeclaration --&gt; ForStatement</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000804" data-ratio="0.35600425079702447" data-type="png" data-w="941" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=c1a7ab44&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCP5s2MA0J9c4dgLaZK51J5dU94GwlOD1RlRldnNCFWYcJGBs9D1pobXg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">7.IfStatement</span></h2><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">if语句（<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">IfStatement</p>）关注以下字段：</div><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">condition: Statement</p>: if语句的条件</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">conditionDeclaration: Statement</p>: 条件声明语句</div></li></ul><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DFG边：</strong></p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">condition --&gt; IfStatement</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">conditionDeclaration --&gt; ForStatement</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000805" data-ratio="0.3759820426487093" data-type="png" data-w="891" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=c311314c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCPeic2nTyAF39WYnYFOrpmybQ4coD9WrEpAMjlKjmukoPduvps0OYC3uA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">技术交流群</span></h1><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">进群方式：</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><span style="color: rgb(0, 0, 0);font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;text-align: left;text-wrap: wrap;">1.点击公众号菜单栏&#34;</span><strong style="font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;text-align: left;text-wrap: wrap;color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">点击进群</strong><span style="color: rgb(0, 0, 0);font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;text-align: left;text-wrap: wrap;">&#34;，加笔者好友（备注进群）-- </span><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">推荐</strong></p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">2.扫码进群</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100000806" data-ratio="1.5548387096774194" data-s="300,640" data-type="png" data-w="930" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=6fc36e22&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCPibW4ZPBQJw5px9IsFGs42Ft9MG1uJG6GXJaqicRagyYXJQ6u0JJicCXNQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=9ea120bd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCPzeXrANXPKVvxMbZkFNH45SibbOM9osANUwna488fmWAfUDAg0hx8IFQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=03496668&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCP0xgI73VL3YXIdVdV2Lp5QGvovYtArwNicyxl8bXyvlpiaBZ6V16KxvMA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=541538bd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCP15r5lIowVljPjzPeibomrxDjiavqFCocqWAqo3GqXQMyzQjGNXGeUUJA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=89acac2e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCPCjDE4Nklajn99oyDGbb57GJ3V71f2Vx1z1OX8ibkJibO4MqMvEbkqzbA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=d4a0a092&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCP6NGuo2QNibrea9mmcrpgPKeuib7mNXtsuiccZakEp6xMkwpdpibUWrdZ3A%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=53dc04ed&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCP4Oq7qjs39BnSS0THTATmXxGBQS2CJgicEkldfXmIoic1ngIIxzHUxx0A%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=3fbe29fa&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCPQGyLMwABU7Ims0SuNkuU9sjh5M4YClEaSibC1ul52bp9MIwChC3Oh0Q%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=880bde66&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCPZaWprRAQ8icRbiaokDibFGKb809iaMsbia2KOSbKXyRCuRibd8JKDNKT8RbQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=cdaf62ab&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCPvpgEwah6xo1EZpKbbjUwxCUJmv3jAfeXT6awmblMKJ3Ixv9UxsQgXg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=36dfde57&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCPVbx7nYMic6W4bZWogQbeoTxickMka5whnqibPb28icAMQOQGEkS19D8Ztg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=152e44d6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCPpuJv4IksPRbxQuDfr7R2CVdt7HWtM9Z8xuOjshMDgvgBZghch2IKzw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=f95280f0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCP5s2MA0J9c4dgLaZK51J5dU94GwlOD1RlRldnNCFWYcJGBs9D1pobXg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=b1994cda&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCPeic2nTyAF39WYnYFOrpmybQ4coD9WrEpAMjlKjmukoPduvps0OYC3uA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=9f552266&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GZuibUdECINapEm7xiay0XQCPibW4ZPBQJw5px9IsFGs42Ft9MG1uJG6GXJaqicRagyYXJQ6u0JJicCXNQ%2F640%3Fwx_fmt%3Dpng"/></p>



<p><a href="2247484457">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=10e0dabc&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484457%26idx%3D1%26sn%3D442225fea1aab2dc0dddd0f4ef06e81e">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Sun, 02 Jun 2024 15:31:00 +0800</pubDate>
    </item>
    <item>
      <title>黑盒？白盒？灰盒？搞安全的怎么这么喜欢“盒子”？</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484439&amp;idx=1&amp;sn=f8ab9b28b60ab717d7239603567c991d</link>
      <description>SAST, DAST, IAST, RASP 傻傻分不清？各自的优劣势 看这一篇就够了。</description>
      <content:encoded><![CDATA[<p>
原创 <span>SASTing</span> <span>2024-05-27 08:00</span> <span style="display: inline-block;">上海</span>
</p>

<p>SAST, DAST, IAST, RASP 傻傻分不清？各自的优劣势 看这一篇就够了。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=bab8b4ee&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjicQf6t0Y0nEBdDQP6WdTdVyFIpG5EJNKTiasCXsXZjGv9MdS8OK4Jh6g%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;"><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">引言</span></h1><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">在当今快速发展的数字化时代，确保软件应用的安全性成为了企业不可忽视的首要任务。各种软件安全测试技术发挥着重要的作用。其中，<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">SAST</strong>（Static Application Security Testing）、<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DAST</strong>（Dynamic Application Security Testing）、<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">IAST</strong>（Interactive Application Security Testing）以及<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">RASP</strong>（Runtime Application Self-Protection）构成了现代应用程序安全测试的四大支柱。</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000771" data-ratio="0.562037037037037" data-type="jpeg" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=565c6c4a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjhHHrAOvicf7cnfmoQsiatibefXqx6XILLIEB6jiafnHCZKMPBNVWwTSSdw%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">SAST，静态代码分析，能够在代码<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">提交之前</strong>深入挖掘潜在的安全隐患，为开发初期筑起第一道防线。DAST通过<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">模拟</strong>真实攻击场景，对运行中的应用程序进行<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">渗透测试</strong>，有效检测出暴露在外的漏洞。而IAST，则如同一位<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">内置</strong>于应用的侦察兵，通过<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">代码插桩</strong>技术在运行时动态监测，提供<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">即时且精准</strong>的漏洞反馈，极大地提升了测试效率。RASP技术以其独特的运行时<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自我保护</strong>机制，直接<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">嵌入</strong>应用程序内部，实现实时监控与<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">主动防御</strong>，为应用程序穿上了一层隐形的“防弹衣”。</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000774" data-ratio="0.4111111111111111" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=dddee59d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjasH79lD2MuwAgzqgnEzlwt8jtdee9AV2fHrzQDicjqsibmCI8dRkggxA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">这四大技术各有所长，相互补充，共同构建了一个多层次、全方位的安全防护体系，助力企业在不断变化的安全威胁面前，保持<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">韧性</strong>，确保<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">软件质量</strong>和用户<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">数据的安全</strong>。</p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">什么是SAST？</span></h1><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000773" data-ratio="0.8442622950819673" data-type="png" data-w="976" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=94534eba&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjWxsnhnFX7JXhUbv0hMRIO0tpic9NZVBrZWYIXTpgHoJC82iaKUjukl2A%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">SAST（<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Static Application Security Testing</strong> ，又称“<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">白盒</strong>工具”），是用来扫描源代码或二进制文件中的安全缺陷的工具，扫描结果通常会包含<span style="text-decoration:underline;">漏洞描述信息、修复建议、相关标准</span>等， 大部分SAST工具会提供<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CI/CD</strong>集成服务，可无缝衔接至软件开发生命周期内，在软件的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开发阶段</strong>提升软件的安全性及可靠性。</p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">SAST的优势</span></h2><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000770" data-ratio="0.5" data-type="jpeg" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=ad836371&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMj7K9uFbKKgJjFQ2LWqep4RicIwIhutEH9cIYspibqiaM2XcyvNVwspx3tQ%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">在软件<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开发阶段</strong>就发现潜在漏洞，漏洞修复的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">成本较低</strong></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自动化</strong>分析项目的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">所有</strong>源代码，比人工审计速度更快</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">无需真正运行</strong>程序就可分析，可在软件上线之前完成</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">输出<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">可读性较高的分析报告</strong>（漏洞的确切位置信息、完整调用链等），帮助开发人员快速审计定位问题</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">提供漏洞审计功能，可对漏洞进行<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自定义标记</strong></p></li></ul><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">SAST的劣势</span></h2><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000772" data-ratio="0.5" data-type="jpeg" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=97f5d695&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMj3QfVJ0KRCg65JNdNjATkNoibKBefoEuZdYia54dC0IJ3aWETFRTicicKFw%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">误报率较高</strong>（静态分析无法完全模拟程序的动态执行过程）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">使用<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">门槛较高</strong>、维护不易</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">业务逻辑漏洞</strong>分析能力几乎为零</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">没有一套<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">标准/Benchmark测试集</strong>去完美定义SAST工具的能力</p></li></ul><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">什么是DAST？</span></h1><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000778" data-ratio="0.75" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=2a8b583a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjNf1Q7ENdz1uMeiba54jje7Ldh901iba1pLlCr1ic1Koo5EH31Ldkt90vw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">DAST（<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Dynamic Application Security Testing</strong>，动态应用程序安全测试）是一种安全测试方法，它通过<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">模拟真实世界攻击</strong>的方式，在应用程序<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">运行时</strong>检测安全漏洞。DAST不依赖于应用程序的源代码，而是直接对正在运行的应用程序进行<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">黑盒测试</strong>，重点在于发现<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">外部攻击者可能利用的弱点</em>。</p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">DAST的优势</span></h2><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000775" data-ratio="0.4101851851851852" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=5f12c669&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjRjfzq2Fgctr600eO15COLpE1IniamrxwplrteA2eeVL05C2n8vZJ6tA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">贴近实战</strong>：DAST模拟了<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">实际攻击场景</strong>，能够检测到运行时的安全问题，如<span style="text-decoration:underline;">输入验证问题、会话管理漏洞、配置错误等</span>，这些是真实世界攻击者可能利用的漏洞。</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">技术无关性</strong>：DAST<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">独立</strong>于应用程序的技术栈和平台，无需了解应用程序的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">内部结构或源代码</strong>，适合多种技术和环境下的应用测试。</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">误报率较低</strong>：相较于SAST，DAST通常因直接测试应用行为而非源代码逻辑，而导致的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">误报较少</strong>，测试结果往往更具有操作性。</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">复杂架构适应性</strong>：DAST能够测试由多个组件、微服务和第三方系统组成的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">复杂应用架构</strong>，特别是对于那些<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">难以通过静态分析检测的部分特别有效</em>。</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">集成SDLC</strong>：DAST可以集成到软件开发生命周期（SDLC）中，作为持续集成/持续部署（CI/CD）流程的一部分，帮助在部署前发现并修复安全问题。</p></div></li></ul><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">DAST的劣势</span></h2><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000776" data-ratio="0.5601851851851852" data-type="jpeg" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=2db4da26&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjmIBVebO3vufHibBZdWoiaKmoloBKTs8Igtjia2eQffjXiagniaMAmNUgzIw%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">覆盖范围限制</strong>：DAST依赖于应用程序的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">可访问性</strong>，可能无法测试到所有代码路径或深层次的逻辑问题，尤其在没有实际用户交互的场景下。</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">资源消耗</strong>：由于DAST在应用程序运行时进行，可能需要更多的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">资源和时间</strong>来完成全面的安全测试，尤其是对于大型或复杂应用。</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">定位问题难度</strong>：DAST通常不能精确定位到导致安全漏洞的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">具体代码行</strong>，修复漏洞时可能需要额外的调试和分析工作。</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">环境依赖</strong>：为了进行全面测试，DAST可能需要在尽可能接近生产环境的条件下进行，这可能导致测试<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">环境搭建复杂度</strong>增加。</p></div></li></ul><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">SAST与DAST对比</span></h1><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000780" data-ratio="1.4173228346456692" data-type="png" data-w="1016" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=97d090ed&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjJJeQuAq3wCscczB5FtBNbDBHE04npDmo7ygWrTZicib7hyZ6Yic9WNqjQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="overflow-x: auto;"><table><thead><tr><th style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.5em;letter-spacing: 0.04em;text-align: left;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(240, 240, 240);width: auto;height: auto;border-top-width: 1px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;min-width: 85px;">特性</th><th style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.5em;letter-spacing: 0.04em;text-align: left;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(240, 240, 240);width: auto;height: auto;border-top-width: 1px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;min-width: 85px;">SAST（静态应用安全测试）</th><th style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.5em;letter-spacing: 0.04em;text-align: left;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(240, 240, 240);width: auto;height: auto;border-top-width: 1px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;min-width: 85px;">DAST（动态应用安全测试）</th></tr></thead><tbody style="font-size: 15px;line-height: 1.5em;letter-spacing: 0.04em;border-width: 0px;border-style: initial;border-color: initial;"><tr style="color: rgb(89, 89, 89);background-attachment: scroll;background-clip: border-box;background-color: rgb(255, 255, 255);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;"><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">测试时机</td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">在代码<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">编写阶段</strong>，<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">无需运行</strong>应用程序</td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">在应用程序<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">运行时</strong>进行，通常在部署后的环境中</td></tr><tr style="color: rgb(89, 89, 89);background-attachment: scroll;background-clip: border-box;background-color: rgb(248, 248, 248);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;"><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">测试对象</td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;"><strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">源代码</strong>或<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">字节码</strong></td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">应用程序的<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">运行实例</strong>，包括<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Web服务</strong>、API等</td></tr><tr style="color: rgb(89, 89, 89);background-attachment: scroll;background-clip: border-box;background-color: rgb(255, 255, 255);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;"><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">测试方法</td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">静态分析，基于<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">规则</strong>和<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">算法</strong>检查代码逻辑</td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">动态分析，<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">模拟黑客攻击</strong>，探测运行时行为</td></tr><tr style="color: rgb(89, 89, 89);background-attachment: scroll;background-clip: border-box;background-color: rgb(248, 248, 248);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;"><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">漏洞发现</td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;"><strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">逻辑错误</strong>、设计缺陷、<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">编码不良实践</strong></td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">输入验证、<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">认证与授权漏洞</strong>、<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">配置错误</strong>、网络层面漏洞</td></tr><tr style="color: rgb(89, 89, 89);background-attachment: scroll;background-clip: border-box;background-color: rgb(255, 255, 255);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;"><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">误报与漏报</td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">可能有<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">较高误报率</strong>，<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">需人工复审</strong></td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">误报较低，但可能<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">漏报</strong>某些仅在特定条件下触发的漏洞</td></tr><tr style="color: rgb(89, 89, 89);background-attachment: scroll;background-clip: border-box;background-color: rgb(248, 248, 248);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;"><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">覆盖范围</td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">深入代码内部，包括<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">未执行路径</strong></td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">侧重于<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">可到达路径</strong>，对实际执行逻辑的测试</td></tr><tr style="color: rgb(89, 89, 89);background-attachment: scroll;background-clip: border-box;background-color: rgb(255, 255, 255);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;"><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">实施成本</td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;"><strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">高</strong>，需要配置和维护复杂规则集</td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;"><strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">较低</strong>，易于设置，但需准备测试环境</td></tr><tr style="color: rgb(89, 89, 89);background-attachment: scroll;background-clip: border-box;background-color: rgb(248, 248, 248);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;"><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">集成程度</td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">通常集成在<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CI/CD</strong>管道中，支持<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">早期发现</strong></td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">可作为<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">后期</strong>安全审计或持续<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">监控</strong>的一部分</td></tr><tr style="color: rgb(89, 89, 89);background-attachment: scroll;background-clip: border-box;background-color: rgb(255, 255, 255);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;"><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">技能要求</td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">需要对<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">编程语言</strong>和<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全规则</strong>有深入了解</td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">更侧重于<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">渗透测试</strong>技能，理解攻击面和漏洞利用</td></tr><tr style="color: rgb(89, 89, 89);background-attachment: scroll;background-clip: border-box;background-color: rgb(248, 248, 248);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;"><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;">适用阶段</td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;"><strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开发初期</strong>，代码审查阶段</td><td style="min-width: 85px;border-color: rgba(204, 204, 204, 0.4);border-radius: 0px;"><strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开发后期</strong>，测试、部署及生产环境监控阶段</td></tr></tbody></table></p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000779" data-ratio="0.562962962962963" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=0f222aff&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjS7BAdmyBdFr7NpB5oFYIsOG5OCB1ATD2xiaS21gFnUcrzmyLGsO2nzA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">SAST和DAST各有侧重，SAST更偏向于<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">代码质量</strong>和<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">逻辑</strong>层面的安全问题，适合在开发早期发现并修复潜在漏洞；而DAST则更接近于<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">真实攻击场景</strong>，专注于发现<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">运行时</strong>和<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">外部接口</strong>暴露的安全问题。</p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">什么是IAST？</span></h1><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000785" data-ratio="0.6546296296296297" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=5c69e0a5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjKnqiccrD8fgXjgQeiba83RmsgVliapTMohuMMlODGmuiaAzlJVyPiae2ibqQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">IAST（<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Interactive Application Security Testing</strong>，<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">交互式</strong>应用程序安全测试）是一种安全测试技术，它结合了SAST（静态应用安全测试）和DAST（动态应用安全测试）的优点，提供了一种在应用程序<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">运行时</strong>检测安全漏洞的新方法。IAST通过在应用程序内部植入（或<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">插桩</strong>）<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">探针</strong>来实时监测代码执行情况，可以在应用程序执行的同时识别潜在的安全问题。</p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">IAST的优势</span></h2><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000782" data-ratio="0.4962962962962963" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=345bd685&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjPReV9aH0Gl91gVam8eiaYv6gLibZRS5hmj9tQHV1Y34omPrC5J7rPHgg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">高准确性和低误报率</strong>：IAST工具在应用程序的实际<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">执行环境</strong>中运行，能够更准确地识别漏洞，因为它基于真实的运行时数据和<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">上下文</strong>。这大大降低了<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">误报率</strong>，使得安全团队能够集中精力处理真正的问题。</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">深入检测</strong>：由于IAST在应用程序内部工作，它能够检测到深层次的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">逻辑问题</strong>和<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">业务逻辑漏洞</strong>，这些往往是SAST和DAST难以发现的。</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">即时反馈</strong>：IAST能够提供即时的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">漏洞报</strong>告，使得开发人员可以在开发过程中快速识别并修复安全问题，加速了安全问题的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">修复周期</strong>。</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">集成DevOps</strong>：IAST工具设计为无缝集成到<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CI/CD</strong>流程中，支持<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自动化测试</strong>，有助于实现安全左移，即在软件开发生命周期的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">早期</strong>阶段就发现并解决安全问题。</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">广泛覆盖</strong>：支持对<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Web应用</strong>、<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">API</strong>、<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">AJAX页面</strong>、<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CSRF token页面</strong>、<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">验证码页面</strong>等多种场景进行深度测试，包括对<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">加密接口</strong>和<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">防重放</strong>攻击的检测。</p></div></li></ul><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">IAST的劣势</span></h2><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">性能影响</strong>：因为需要在应用程序内部植入探针，可能会对应用的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">运行性能</strong>产生一定影响，尤其是在大规模或高性能要求的应用中。</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000783" data-ratio="1" data-type="png" data-w="900" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=be056362&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjq4JekdVyUyTOqvdL3MibQUo2RnnU7JENk0kgadCTd3s3q4Ouibsb4sMQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">支持范围</strong>：虽然IAST技术日益成熟，但它对<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">编程语言和框架</strong>的支持仍然<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">有限</strong>，尤其是某些特定或较新的技术栈可能无法得到很好的支持。</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">实施复杂性</strong>：相对于DAST，IAST的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">部署和配置</strong>可能更为<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">复杂</strong>，需要在代码中植入探针，对开发和运维团队有一定的技术要求。</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">成本问题</strong>：高级的IAST工具和服务可能会带来较高的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">成本</strong>，尤其是对于小型企业和预算有限的项目来说，这可能是一个考虑因素。</p></div></li></ul><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">什么是RASP？</span></h1><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000784" data-ratio="0.6425925925925926" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=72865ff6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjW6iaicDAB9c6BQeedlJgOy1XvSACPSckRTsicTsCtAibTO3M2UxGJSrqQA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">RASP（<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Runtime Application Self-Protection</strong>，运行时应用自我保护）是一种先进的安全技术，它将安全防护机制直接<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">嵌入到应用程序内部</strong>，使其能在运行时<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自我监控</strong>并防御各种安全威胁。RASP通过在应用程序代码中植入<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">代理或探针</strong>，能够<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">实时分析</strong>应用程序的行为和数据流，识别并阻止恶意活动，比如<span style="text-decoration:underline;">SQL注入、跨站脚本(XSS)攻击、命令注入</span>等。</p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">RASP的优势</span></h2><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">深度防护</strong>：RASP因为嵌入到应用程序内部，能直接观察和控制程序的执行流程，因此能够提供更<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">深入</strong>、更<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">精确</strong>的安全防护，包括识别和防御<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">复杂的逻辑漏洞</strong>。</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">即时响应</strong>：一旦检测到攻击，RASP能够<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">立即采取行动</strong>，比如<span style="text-decoration:underline;">阻止攻击、记录攻击信息或采取其他防护措施</span>，减少损害。</p></div></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000781" data-ratio="0.5625" data-type="png" data-w="560" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=fb5abcc6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjejG4ZezJgBnt7hyxny5Uv4hmLzXxPJS7J4lrKwgsju8x0eIiaibHicgBg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">低误报率</strong>：相比WAF（Web Application Firewall）等外部防护措施，RASP由于能够<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">理解应用程序的上下文</strong>，<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">误报率较低</strong>，减少了对正常流量的干扰。</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">防护未知漏洞</strong>：RASP有能力检测和防御<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">0-day漏洞</strong>，因为它是基于应用程序的行为和上下文来判断是否为攻击，而不是依赖于已知攻击模式。</p></li></ul><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">RASP的劣势</span></h2><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">性能影响</strong>：由于RASP需要监控和分析所有应用程序的运行时行为，可能会对<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">应用性能</strong>造成一定影响，尤其是在<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">高负载</em>情况下。</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000787" data-ratio="0.43148148148148147" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=988e9beb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjd9VOKbDOnZaDIlMBnLsUp69eUUibko0XM2zz02yE6gHdq5UrPX646Fw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">兼容性和支持</strong>：不同的应用程序框架和语言可能需要<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">定制化的RASP实现</strong>，这可能导致<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">兼容性</strong>问题，且并非所有技术栈都能找到合适的RASP解决方案。</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">实施复杂性</strong>：虽然RASP旨在简化安全集成，但其<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">部署</strong>和配置可能<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">相对复杂</strong>，尤其是对于大型或复杂应用，需要细致的规划和调整。</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">内部威胁限制</strong>：RASP在应对源自<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">应用程序内部的攻击</strong>或<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">有权限</strong>的恶意用户时，防护能力可能受限，因为它<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">依赖于应用自身的执行环境</em>。</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000786" data-ratio="0.5805555555555556" data-type="jpeg" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=45075895&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjvC9sD8OENeBLErwGLuZp1Sg4Oia5bmVMQoBjZc6aj9I3JDg2dKpFg6A%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">潜在的稳定性风险</strong>：作为应用程序的一部分，RASP组件自身也可能<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">引入错误或稳定性问题</strong>，需要谨慎选择和测试。</p></li></ul></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=317de335&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjhHHrAOvicf7cnfmoQsiatibefXqx6XILLIEB6jiafnHCZKMPBNVWwTSSdw%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=238e375c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjasH79lD2MuwAgzqgnEzlwt8jtdee9AV2fHrzQDicjqsibmCI8dRkggxA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=8c37309a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjWxsnhnFX7JXhUbv0hMRIO0tpic9NZVBrZWYIXTpgHoJC82iaKUjukl2A%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=ca0aab4e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMj7K9uFbKKgJjFQ2LWqep4RicIwIhutEH9cIYspibqiaM2XcyvNVwspx3tQ%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=03895167&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMj3QfVJ0KRCg65JNdNjATkNoibKBefoEuZdYia54dC0IJ3aWETFRTicicKFw%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=d28306cf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjNf1Q7ENdz1uMeiba54jje7Ldh901iba1pLlCr1ic1Koo5EH31Ldkt90vw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=d987ac33&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjRjfzq2Fgctr600eO15COLpE1IniamrxwplrteA2eeVL05C2n8vZJ6tA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=287f7356&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjmIBVebO3vufHibBZdWoiaKmoloBKTs8Igtjia2eQffjXiagniaMAmNUgzIw%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c68a8e3a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjJJeQuAq3wCscczB5FtBNbDBHE04npDmo7ygWrTZicib7hyZ6Yic9WNqjQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=0df489d1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjS7BAdmyBdFr7NpB5oFYIsOG5OCB1ATD2xiaS21gFnUcrzmyLGsO2nzA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=aa0f1de8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjKnqiccrD8fgXjgQeiba83RmsgVliapTMohuMMlODGmuiaAzlJVyPiae2ibqQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=acdc0f49&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjPReV9aH0Gl91gVam8eiaYv6gLibZRS5hmj9tQHV1Y34omPrC5J7rPHgg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=cd958940&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjq4JekdVyUyTOqvdL3MibQUo2RnnU7JENk0kgadCTd3s3q4Ouibsb4sMQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=f62fbfb8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjW6iaicDAB9c6BQeedlJgOy1XvSACPSckRTsicTsCtAibTO3M2UxGJSrqQA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=951c8334&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjejG4ZezJgBnt7hyxny5Uv4hmLzXxPJS7J4lrKwgsju8x0eIiaibHicgBg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=1884374c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjd9VOKbDOnZaDIlMBnLsUp69eUUibko0XM2zz02yE6gHdq5UrPX646Fw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=ba6688b2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6Gbtbicp7CKBmKnwoATib4ERMjvC9sD8OENeBLErwGLuZp1Sg4Oia5bmVMQoBjZc6aj9I3JDg2dKpFg6A%2F640%3Fwx_fmt%3Djpeg"/></p>



<p><a href="2247484439">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=15d06c7f&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484439%26idx%3D1%26sn%3Df8ab9b28b60ab717d7239603567c991d">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 27 May 2024 08:00:00 +0800</pubDate>
    </item>
    <item>
      <title>程序依赖图PDG</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484417&amp;idx=1&amp;sn=f2a47100883293d7e80f8f9aa45c3ff3</link>
      <description>程序依赖图PDG讲解</description>
      <content:encoded><![CDATA[<p>
原创 <span>SASTing</span> <span>2024-05-20 08:30</span> <span style="display: inline-block;">上海</span>
</p>

<p>程序依赖图PDG讲解</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=c1ad027e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GYtL3SibOBTyWke50ZhpGHS9I5LIQKdqPew8KBwv7uCrehj6QOLWx0ibKtUiaY0sx9onIKEebRaojyjg%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: PingFangSC-regular, sans-serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;"><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">PDG定义</span></h1><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">维基百科对<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">PDG</strong>的定义</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">In computer science, a <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Program Dependence Graph (PDG)</strong> is a representation of a program&#39;s <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">control and data dependencies</strong>. It&#39;s a <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">directed graph</strong> where nodes represent program statements, and edges represent dependencies between these statements. PDGs are useful in various program analysis tasks, including optimizations, debugging, and understanding program behavior.These dependencies are used during dependence analysis in optimizing compilers to make transformations so that multiple cores are used, and <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">parallelism</strong> is improved. Nodes and edges in a PDG may have <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">attributes</strong> associated with them, representing <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">variables read from or written to</strong>, or <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">the type of dependency they represent</strong>. PDGs are used in data flow analysis, slicing, optimization, debugging, and parallelization, providing insights into how program components interact and aiding in understanding and analyzing program behavior.</p></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">解释：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">在计算机科学中，<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">程序依赖图（PDG）</strong>是程序的 <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">控制依赖</strong> 和 <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">数据依赖</strong> 关系的表示。它是一个<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">有向图</strong>，其中节点表示程序语句，边表示语句之间的依赖关系。PDG 在各种程序分析任务中非常有用，包括优化、调试和理解程序行为。在优化编译器的依赖分析期间使用这些依赖关系进行转换，以便使用多个内核，并提高<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">并行执行效率</strong>。PDG 中的节点和边可能具有与其关联的<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">属性</strong>，表示<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">变量读取或写入</strong>、<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">依赖关系类型等</strong>。PDG 用于数据流分析、程序切片、程序优化、调试及并行优化，为理解程序语义提供一种直观的表示形式，有助于理解和分析程序行为。</p></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">官方的解释如上，需要注意的是，<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">程序依赖图PDG</strong>包含两部分，<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">控制依赖图（CDG：Control Dependency Graph ）</strong>和<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">数据依赖图（DDG：Data Dependency Graph）</strong>，分别表示程序语句间的控制依赖关系（如：<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">对于if语句来说，then语句控制依赖于条件判断语句</span>）和数据依赖关系（<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">数据流图中变量间的边指向关系</span>）。</p><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">举两个栗子</span></h1><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">代码块1</p></li></ul><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style=""><span style="color: #c678dd;line-height: 26px;">if</span> (A) then  <span style="color: #5c6370;font-style: italic;line-height: 26px;">// S1</span>    B = C * D  <span style="color: #5c6370;font-style: italic;line-height: 26px;">// S2</span>endif</p></pre><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">S2语句执行与否取决于<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">S1语句的判断结果</strong>，这时，我们称<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">S2控制依赖于S1</strong></p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">代码块2</p></li></ul><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="">A = B * C  <span style="color: #5c6370;font-style: italic;line-height: 26px;">// S1</span>D = A * E + <span style="color: #d19a66;line-height: 26px;">1</span>  <span style="color: #5c6370;font-style: italic;line-height: 26px;">// S2</span></p></pre><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">在S2语句中，对S1语句中的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">变量A进行了读取</strong>，这时，我们称<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">S2数据依赖于S1</strong></p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">Ok，看完两个简单的例子，对<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">控制依赖</strong>和<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">数据依赖</strong>大概有一个具象化的了解，然后就可以看定义了，在讲<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">数据依赖</strong>（DDG）之前，需要先了解一下<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">定义可达性分析</strong>算法。</p><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">预备知识</span></h1><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">定义可达性分析</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">定义可达性分析也叫<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Reaching Definitions Analysis</strong></p><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">定义</span></h3><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">A definition d at program point p reaches a point q if there is a <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">path</strong> from p to q such that d is <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">not “killed”</strong> along that path</p></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">解释：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">在程序点 p 处有一个变量的定义 d，如果有一条<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">控制流路径</strong>可以从程序点 p 到达 程序点 q，并且在这条路径上定义 d 没有被 “<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">kill</strong>” 掉（也就是定义 d 没有被重新覆盖掉），那么就称 <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">p 处的定义 d 可以到达 q</strong>（<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">定义 d 可达q</strong>）。</p></blockquote><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">分析每个程序点处可以到达的定义的过程 称为 <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">定义可达行分析</strong>。</p></blockquote><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000745" data-ratio="0.8625954198473282" data-type="png" data-w="655" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=20ba8308&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtL3SibOBTyWke50ZhpGHS9SXJlxTbFkZ8kiagL0loWXUibus4h8mJ0F2AwvA3HGXrO6UNyD9CMWOWA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">DDG</span></h1><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">数据依赖图DDG</strong>（Data Dependence Graph）针对的对象是<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Statement</strong>（程序语句）</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">（参考论文 <span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Christian Hammer</span> 写的 <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Static Program Analysis Program Dependence Graph</strong>，感兴趣的同学可以直接看原文）</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000749" data-ratio="0.5842592592592593" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=3f42b2d0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtL3SibOBTyWke50ZhpGHS9dPBAu5bwtowkYSubSiaCrEUL47UFnwPm41DXesQyjZE8qryCQQiclaTw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">Data Dependence定义</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><ul style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">Known from optimizing compilers</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">For slicing only “flow dependence” is relevant</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">Called data dependence in the sequel</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;"><strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">x → dd y</strong> means that a node x computes a value that may be used at node y in some feasible execution</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">A node y is data dependent on node x (x →dd y) if</p></li><ul style="list-style-type: square;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">there exists a variable v with v ∈ Def(x) and v ∈ Use(y),</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">and ∃ path P in the <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CFG</strong> <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">from x to y</strong> where the definition of v in x is <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">not definitively killed</strong> (i.e. x is a <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">reaching definition</strong> of y.)</p></li></ul></ul></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">通过定义我们可以知道，程序中的节点x数据依赖于节点y（针对变量v来说），需要满足以下条件：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">1.在节点x处对变量v进行了<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">定义</strong>，在节点y处对变量v进行了<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">使用</strong></p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">2.从节点x到节点y，存在一条<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CFG路径</strong>，并且在这条CFG路径上<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">没有</strong>对变量v重新赋值（<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">not kill</strong>）</p></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">上文已经讲了<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">定义可达性分析</strong>（Reaching Definitions Analysis）的原理，数据依赖图（DDG）的构建过程其实就可以理解为 <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">对每个程序节点的定义做可达性分析的过程</strong>。</p><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">CDG</span></h1><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">控制依赖图CDG</strong>（Control Dependence Graph）针对的对象是<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Statement</strong>（程序语句<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">）</strong></p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">Control Dependence定义：</p><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">程序天然存在的控制依赖关系</span></h2><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><ul style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;"><strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">One statement directly controls the execution of another</strong></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">In structured programs equivalent to “indentation level”</p></li></ul><pre style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style=""><span style="color: #c678dd;line-height: 26px;">while</span>(i&lt;n=) {    sum = sum + i;    prod = prod * i;    i++;}write(sum);</p></pre><ul style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">Statements in the <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">while body</strong> are control dependent on the <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">while predicate</strong>. The write is no longer dependent on the predicate.</p></li></ul></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">解释：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><ul style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;"><strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">前后语句</strong>之间的控制依赖（这也是一种<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">天然的控制流</strong>）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">类似while缩进格式的语句块的控制依赖：<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">while循环体控制依赖于while条件</strong></p></li></ul></blockquote><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">Post-Dominators控制依赖</span></h2><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;"><span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Control Dependence Formally</span></p><ul style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">Standard definition in terms of <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">post-dominance</strong></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">A node x in the <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CFG</strong> is <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">post-dominated</strong> by node y if <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">all paths</strong> from x to exit node pass through <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">y</strong></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">A node y is control dependent on node x (<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">x →cd y</strong>) if</p></li><ul style="list-style-type: square;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">∃ path p from <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">x to y</strong> in the <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CFG</strong>, such that y postdominates every node in p (except for x), and</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">x is <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">not</strong> post-dominated by y</p></li></ul></ul></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">解释：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">通过<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">前向支配树</strong>（FDT）确定控制依赖关系：</p><ul style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">CFG中的节点x被节点y前向支配：从节点x到<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">程序出口</strong>的<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">所有路径都经过y</strong></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">节点x被节点y控制依赖 (<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">x →cd y</strong>)：</p></li><ul style="list-style-type: square;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">在CFG上存在一条从x到y的路径，在这条路径上，y前向支配 <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">除x外</strong> 的所有其他节点</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">x不被y前向支配</strong></p></li></ul></ul></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小剧场（可忽略）：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">这块尽力理解了，本想着自己用”人话“解释一下这个定义，但实在是太难了555，希望有懂这方面的大佬在<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">技术交流群</strong>里解答一下，或者通过公众号与作者<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">私聊</strong>，感谢！</p></blockquote><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">测试代码</span></h1><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style=""><span style="color: #c678dd;line-height: 26px;">package</span> com.test.pdg;<span style="color: #c678dd;line-height: 26px;">import</span> java.io.IOException;<span style="color: #c678dd;line-height: 26px;">public</span> <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">class</span> <span style="color: #e6c07b;line-height: 26px;">TestPDG2</span> </span>{    <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">public</span> <span style="color: #c678dd;line-height: 26px;">void</span> <span style="color: #61aeee;line-height: 26px;">test</span><span style="line-height: 26px;">(Integer n)</span> </span>{        read(n);        <span style="color: #c678dd;line-height: 26px;">int</span> i = <span style="color: #d19a66;line-height: 26px;">1</span>;        <span style="color: #c678dd;line-height: 26px;">int</span> sum = <span style="color: #d19a66;line-height: 26px;">0</span>;        <span style="color: #c678dd;line-height: 26px;">int</span> prod = <span style="color: #d19a66;line-height: 26px;">1</span>;        <span style="color: #c678dd;line-height: 26px;">while</span> (i &lt;= n) {            sum = sum + i;            prod = prod * i;            i++;        }        write(sum);        write(prod);    }    <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">public</span> Integer <span style="color: #61aeee;line-height: 26px;">read</span><span style="line-height: 26px;">(Integer n)</span>  </span>{        <span style="color: #c678dd;line-height: 26px;">try</span> {            n = System.in.read();        } <span style="color: #c678dd;line-height: 26px;">catch</span> (IOException e) {            <span style="color: #c678dd;line-height: 26px;">throw</span> <span style="color: #c678dd;line-height: 26px;">new</span> RuntimeException(e);        }        <span style="color: #c678dd;line-height: 26px;">return</span> n;    }    <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">public</span> <span style="color: #c678dd;line-height: 26px;">void</span> <span style="color: #61aeee;line-height: 26px;">write</span><span style="line-height: 26px;">(Integer n)</span> </span>{        System.out.println(n);    }}</p></pre><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">tips：此处暂时就只把<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">论文中提到的结果</strong>展示出来，供大家参考。笔者尝试本地做测试，想通过直观的图形化展示生成的结果，但由于<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">cpg框架自身的实现不完善</strong>以及本人对neo4j的<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Cyber命令</strong>不是很熟（555，努力进修中），所以最终呈现结果就会显得很乱，基于此，以防混淆视听，就不再做展示啦，感谢大家的理解。</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">（文末会展示暂时的生成效果，大家有什么更好的解决办法可以多多提哈，感谢~）</p></blockquote><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">DDG结果</span></h2><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000747" data-ratio="0.6138888888888889" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=934d148a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtL3SibOBTyWke50ZhpGHS9Nx69SYxOQsPLpcpoYDueTqLSjujHLHMZlLcvFwiaAqiax4KI2dQtCKeA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">CDG结果</span></h2><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">Post-dominator Tree</span></h3><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000748" data-ratio="0.6444444444444445" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=8949fd87&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtL3SibOBTyWke50ZhpGHS91viauxPBPZ79bJV12eU6G2y10exFu8SHSaqcPpPUrGVpUtDxuw0HOkQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">CDG</span></h3><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000746" data-ratio="0.6194444444444445" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=72ac4834&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtL3SibOBTyWke50ZhpGHS93Qkyon8ZthoHzicGQ9CX6nfhIWnwxQzfv3ic67fbnstUd9AnKpDMgMuQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">杂乱的cpg</span></h1><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000754" data-ratio="0.38796296296296295" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=d22735e5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtL3SibOBTyWke50ZhpGHS9AibOibeNIJNRAfUPlGvRAI3anfFtLPLuvqcIRvpPye1qBwd8csicTL8kA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">Tips:测试代码与上文一致</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">红色边：PDG</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">蓝色边：DFG</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">绿色边：CDG</p></blockquote></div><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-family: PingFangSC-regular, sans-serif;letter-spacing: normal;text-align: left;text-wrap: wrap;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="padding: 3px 10px;font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">技术交流群</span></h1><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100000759" data-ratio="1.6096774193548387" data-s="300,640" data-type="png" data-w="930" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=59662329&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtL3SibOBTyWke50ZhpGHS9wm4BJo4JGukufAZb2Klib44v9f2xG5onMoG4SVkiawNHJn3CE1D28QHg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=7c82c03c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8WUmWXnMXdhkI8FNfKeGO4YG6YV9l72ksZMlEBGCSfNSialCVr4fia8Q9bpuC4M65WRyvSx8bdfLTw%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=7c82c03c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8WUmWXnMXdhkI8FNfKeGO4YG6YV9l72ksZMlEBGCSfNSialCVr4fia8Q9bpuC4M65WRyvSx8bdfLTw%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=6804cacc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtL3SibOBTyWke50ZhpGHS9SXJlxTbFkZ8kiagL0loWXUibus4h8mJ0F2AwvA3HGXrO6UNyD9CMWOWA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=2afbcf24&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtL3SibOBTyWke50ZhpGHS9dPBAu5bwtowkYSubSiaCrEUL47UFnwPm41DXesQyjZE8qryCQQiclaTw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=7c82c03c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8WUmWXnMXdhkI8FNfKeGO4YG6YV9l72ksZMlEBGCSfNSialCVr4fia8Q9bpuC4M65WRyvSx8bdfLTw%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=7c82c03c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8WUmWXnMXdhkI8FNfKeGO4YG6YV9l72ksZMlEBGCSfNSialCVr4fia8Q9bpuC4M65WRyvSx8bdfLTw%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=699adf65&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtL3SibOBTyWke50ZhpGHS9Nx69SYxOQsPLpcpoYDueTqLSjujHLHMZlLcvFwiaAqiax4KI2dQtCKeA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=0d438b5c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtL3SibOBTyWke50ZhpGHS91viauxPBPZ79bJV12eU6G2y10exFu8SHSaqcPpPUrGVpUtDxuw0HOkQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=69014105&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtL3SibOBTyWke50ZhpGHS93Qkyon8ZthoHzicGQ9CX6nfhIWnwxQzfv3ic67fbnstUd9AnKpDMgMuQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=154692b2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtL3SibOBTyWke50ZhpGHS9AibOibeNIJNRAfUPlGvRAI3anfFtLPLuvqcIRvpPye1qBwd8csicTL8kA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=895ddb29&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtL3SibOBTyWke50ZhpGHS9wm4BJo4JGukufAZb2Klib44v9f2xG5onMoG4SVkiawNHJn3CE1D28QHg%2F640%3Fwx_fmt%3Dpng"/></p>



<p><a href="2247484417">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=8c0b8b48&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484417%26idx%3D1%26sn%3Df2a47100883293d7e80f8f9aa45c3ff3">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 20 May 2024 08:30:00 +0800</pubDate>
    </item>
    <item>
      <title>白盒分析利器-代码属性图CPG-评估顺序图EOG详解</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484390&amp;idx=1&amp;sn=821aa0fc4986a7022a98d964ddd6df40</link>
      <description>评估顺序图EOG虽然不会直接运用的到checker分析中，但是其在CPG中也是非常重要的存在，其为其他Pass提供了数据支撑</description>
      <content:encoded><![CDATA[<p>
原创 <span>SASTing</span> <span>2024-05-13 08:01</span> <span style="display: inline-block;">上海</span>
</p>

<p>评估顺序图EOG虽然不会直接运用的到checker分析中，但是其在CPG中也是非常重要的存在，其为其他Pass提供了数据支撑</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=7456208e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJseoOPv3RrA4xuKc6tzY0exibGprxciahNicNwMgGC1IDDqEpILVZBvvKQ%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: PingFangSC-regular, sans-serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;"><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">引言</span></h1><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">语言前端在对源码进行转换后，生成AST，然后转换为一种初步的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CPG格式</strong>数据，这种初步的CPG数据在Pass阶段经过一系列的操作，丰富CPG的节点及边的信息，我们本文要讲的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">EOG</strong>（Evaluation Order Graph）<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">评估顺序图</strong>就是Pass阶段的一环，EOG在Pass阶段处于相对靠前的位置，之前讲到的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">ControlFlowSensitiveDFGPass</strong>（数据流图构建）、以及日后要讲的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">ControlDependenceGraphPass</strong>（控制依赖图构建）都要依赖于<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">EOG</strong>去做。</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000661" data-ratio="0.34629629629629627" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=bffb2109&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJnPkqFJviaxt68SJxXKibhN1ZRl0Qlfnia8Wxxp4LNbibSTXW20GYf3USyA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">一、EOG概念</span></h1><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">The Evaluation Order Graph (EOG) is built as edges between AST nodes after the initial translation of the code to the CPG. Its purpose is to follow the order in which code is executed, similar to a CFG, and additionally differentiate on a finer level of granularity in which order expressions and subexpressions are evaluated. Every node points to a set of previously evaluated nodes (prevEOG) and nodes that are evaluated after (nextEOG). The EOG edges are intra-procedural and thus differentiate from INVOKES edges. In the following, we summarize in which order the root node representing a language construct and its descendants in the AST tree are connected.</p></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">解释如下：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><div style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">评估顺序图（EOG）是在将代码<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">初步</strong>转换为 <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CPG</strong> 之后，在 <strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">AST 节点</strong>之间建立的边。其目的是<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">遵循代码执行的顺序</strong>，<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">类似于</span> <span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CFG</span>，此外还能以更细的粒度区分<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">表达式</strong>和<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">子表达式</strong>的评估顺序。每个节点都指向一组之前边：<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">preEOG</p>和<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">nextEOG</p>（这与之前讲的<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DFG</strong>结构类似）。EOG 是<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">方法内</strong>的概念，<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">不涉及方法调用</span>。</div></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">EOG会针对以下<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">类型</strong>及其<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">所有子类</strong>节点构建</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">NamespaceDeclaration</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">TranslationUnitDeclaration</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">RecordDeclaration</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">FunctionDeclaration</p></div></li></ul><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">二、EOG与CFG的区别</span></h1><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">diff1</span>：对于没有显式<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">return语句</strong>的方法，EOG 将会构建一条<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">虚拟边</strong>，这条边指向<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">行号为 -1 的虚拟返回节点</strong>；CFG 则以最后一条<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">reachable</strong>（可达）<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">语句</strong>结束，<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">不会插入虚拟返回语句</span></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">diff2</span>：EOG 会将<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">代码块 Block</strong> 作为一个<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">单独的节点</strong>；CFG 则会使用代码块中的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">第一条实际可执行语句</strong>作为起点</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">diff3</span>：对于 <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">if 语句</strong>，EOG 将 <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">if</strong> 关键字和<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">condition</strong>（条件）视为<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">单独的节点</strong>；CFG 则将其视为<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">同一个</strong> if statement</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">diff4</span>：EOG 将<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">method header</strong>（方法头）视为节点；CFG 将把方法的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">第一条可执行语句</strong>视为节点</p></li></ul><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">tips: EOG 在我们真正使用过程中<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">很少直接用他去做分析</strong>，其更多的是为其他图的构建做基础（如：<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DFG</strong>、<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">PDG</strong>等），再加上EOG与<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CFG</strong>（控制流图）很<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">类似</strong>，只有一些特殊节点的处理有差异。</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">因此，关于EOG的分析不会像DFG那样将所有类型的节点都展开做详细分析，我只挑其与CFG的差异化处理部分、以及常见使用场景做讲解。</p></blockquote><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">对CFG（控制流图）的构建不熟悉的同学可以参考这篇文章：</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247483689&amp;idx=1&amp;sn=09277ebf5687676b1463c6c7782029a1&amp;chksm=c1bc589cf6cbd18ae84c9419295fb5987039a2690439a246d941b08280bd1da6471bc79b45fa&amp;scene=21#wechat_redirect" textvalue="SAST-数据流分析方法-理论" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">SAST-数据流分析方法-理论</a></p></blockquote><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">三、EOG的构建</span></h1><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">tips: 以下测试过程均采用图数据库Neo4j，通过浏览器可视化生成的效果，对Neo4j不熟悉的同学建议阅读：</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">Neo4j（待修改，加链接）</p></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">在分类讨论之前，不妨先验证一下其是否是<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">方法内</strong>的概念</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">测试代码：</p><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style=""><span style="color: #c678dd;line-height: 26px;">package</span> com.test;<span style="color: #c678dd;line-height: 26px;">public</span> <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">class</span> <span style="color: #e6c07b;line-height: 26px;">TestFunCall</span> </span>{    <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">public</span> <span style="color: #c678dd;line-height: 26px;">static</span> <span style="color: #c678dd;line-height: 26px;">void</span> <span style="color: #61aeee;line-height: 26px;">main</span><span style="line-height: 26px;">(String[] args)</span> </span>{        test(<span style="color: #98c379;line-height: 26px;">&#34;SASTing&#34;</span>);    }    <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">public</span> <span style="color: #c678dd;line-height: 26px;">static</span> <span style="color: #c678dd;line-height: 26px;">void</span> <span style="color: #61aeee;line-height: 26px;">test</span><span style="line-height: 26px;">(String a)</span> </span>{        System.out.println(<span style="color: #98c379;line-height: 26px;">&#34;Hello &#34;</span> + a);    }}</p></pre><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">以上代码转换后的CPG如下：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">EOG做了红色加粗渲染</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">DFG做了蓝色渲染</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">黄色节点是<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">方法声明</strong></p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000658" data-ratio="1.1931119311193112" data-type="png" data-w="813" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=8f183d06&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJmg57J2LbwLGssCPITLe7Vbyia7Ho6scPJnY6k1VWMPicoPao2fMs8OcA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;">img</figcaption></figure><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">仔细观察其实可以发现，两个方法声明<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">test</p>、<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">main</p>之间是没有EOG边的，找不到一条从<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">test</p>出发能够到达<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">main</p>的EOG边，反之亦然，这也证明了EOG确实是一个<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">方法内</strong>的概念，其<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">并不涉及方法间的边传递</span>。</div><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">1.FunctionDeclaration</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">EOG构建规则：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">parameters: List&lt;ParameterDeclaration&gt;</p>: 方法参数</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">defaultValue: Expression</p>: 参数的默认值（可选）</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">body: Statement</p>: 方法体</div></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000659" data-ratio="0.24259259259259258" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=2efecf3f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJeAN63iaibkckGIeDVvhrXqPDTgyF8iaeWHABhJX4IHCZwZv0lpibu0NCog%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;">img</figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">测试代码：</p><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style=""><span style="color: #c678dd;line-height: 26px;">package</span> com.test;<span style="color: #c678dd;line-height: 26px;">public</span> <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">class</span> <span style="color: #e6c07b;line-height: 26px;">TestFunctionDecl</span> </span>{    <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">public</span> <span style="color: #c678dd;line-height: 26px;">void</span> <span style="color: #61aeee;line-height: 26px;">nonReturn</span><span style="line-height: 26px;">(String a, <span style="color: #c678dd;line-height: 26px;">int</span> b)</span> </span>{    }}</p></pre><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">生成的CPG如下：</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img data-imgfileid="100000657" data-ratio="3.425287356321839" data-type="png" data-w="87" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=63386aaa&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJ8GCU19que2vLdNwdT0quj3ZX8DqGCmc7gTo7bBQicI1z4naoGWLyX5w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;">img</figcaption></figure><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">黄色节点就是方法声明<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">nonReturn</p></div><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">上面的那个空白节点就是一个<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">虚拟节点</strong>，<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">isImplicit=true</p>，节点属性如下：</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000660" data-ratio="1.1806108897742364" data-type="png" data-w="753" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=a5946987&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJeSPk6zsRhia9iaZMIe5NKoOcjqbrp1M3sdTAtVaRB9f5Ojibdo9aaceTg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;">img</figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">Java中不支持给方法的参数赋默认值的操作，所以其他边暂时就看不到啦，这种处理是为了处理支持<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">参数默认值</strong>的语言。</p><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">2.IfStatement</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">EOG的构建如下图（各节点见名知意，就不详细展开说明了）：</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000664" data-ratio="0.19074074074074074" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=0ecf768e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJwnenzzy0T8NMB9Tbz86HADE2KSTF7dowyYcuoMkahvexoMXjwIfyQw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;">img</figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">测试代码：</p><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style=""><span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">public</span> <span style="color: #c678dd;line-height: 26px;">boolean</span> <span style="color: #61aeee;line-height: 26px;">check</span><span style="line-height: 26px;">(String str)</span> </span>{    <span style="color: #c678dd;line-height: 26px;">if</span> (str.contains(<span style="color: #98c379;line-height: 26px;">&#34;SASTing&#34;</span>)) {        <span style="color: #c678dd;line-height: 26px;">return</span> <span style="color: #c678dd;line-height: 26px;">true</span>;    }    <span style="color: #c678dd;line-height: 26px;">else</span> {        <span style="color: #c678dd;line-height: 26px;">return</span> <span style="color: #c678dd;line-height: 26px;">false</span>;    }}</p></pre><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">转换后的CPG如下：</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000666" data-ratio="0.8611111111111112" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=231e9927&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJGQE5oWic94w0biac9VIuHtvQOtskaFSroPjn4nFFkK2EcQpyic9dCaWEA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;">img</figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">通过转换后的效果可以看到，以下边均可得到验证：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">initializerStatement --&gt; condition|conditionDeclaration</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">condition|conditionDeclaration  -&gt; IfStatement</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">IfStatement --&gt; thenStatement</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">IfStatement --&gt; elseStatement</p></li></ul><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">3.CallExpression</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">EOG构建规则如下：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">callee：被调方法</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000662" data-ratio="0.17592592592592593" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=5ea0d9ef&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJLHmLcXePaBcmvHIibo8d2tWB8NyhKkic71C97IM3FL6BWiaQoUib7FDibVQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;">img</figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">测试代码：</p><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style=""><span style="color: #c678dd;line-height: 26px;">public</span> <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">class</span> <span style="color: #e6c07b;line-height: 26px;">TestCallExpression</span> </span>{    <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">public</span> <span style="color: #c678dd;line-height: 26px;">static</span> <span style="color: #c678dd;line-height: 26px;">void</span> <span style="color: #61aeee;line-height: 26px;">main</span><span style="line-height: 26px;">(String[] args)</span> </span>{        Caller caller = <span style="color: #c678dd;line-height: 26px;">new</span> Caller();        caller.callee(args[<span style="color: #d19a66;line-height: 26px;">0</span>]); <span style="color: #5c6370;font-style: italic;line-height: 26px;">// CallExpression</span>    }}<span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">class</span> <span style="color: #e6c07b;line-height: 26px;">Caller</span> </span>{    <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">public</span> <span style="color: #c678dd;line-height: 26px;">void</span> <span style="color: #61aeee;line-height: 26px;">callee</span><span style="line-height: 26px;">(String name)</span> </span>{    }}</p></pre><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">生成的CPG如下：</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000663" data-ratio="0.5342592592592592" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=0c0741bb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJib1ZXfWMo182JGs5wzeeuECrLKibXicrpmZu5IiaTIX8vbLJt5Kc7dNk3A%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;">img</figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">通过观察上文提到的EOG构建规则图，可以发现，其实就是生成了这样一条边（为了看起来直观，我们此处只讨论一个传参的情况）：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">callee --&gt; argument --&gt; CallExpression</p></li></ul><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">再对比生成的可视化CPG图，可以直观地看到<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">CallExpression</p>的<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">caller</p>、<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">callee及argument</p>之间的EOG边的构建方式，是满足上述规则描述的</div><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">4.ForStatement</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">EOG构建方式：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">initializerStatement  循环开始前的初始化语句 （<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">第一个分号前的初始化语句</strong>）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">condition  循环条件 (<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">第一个分好后的条件语句</strong>)</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">conditionDeclaration  条件声明</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">statement  循环体</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">iterationStatement  每次循环完后要执行的语句（<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">最后一个分号后的语句</strong>）</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000665" data-ratio="0.17685185185185184" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=409dc15b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJc2MicJEwVfhE4o2TktibgicIaajibPdhkX8lFziaRDgu6s4tTv5QVjWXPHw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;">img</figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">测试代码：</p><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style=""><span style="color: #c678dd;line-height: 26px;">public</span> <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">class</span> <span style="color: #e6c07b;line-height: 26px;">TestForStatement</span> </span>{    <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">public</span> <span style="color: #c678dd;line-height: 26px;">void</span> <span style="color: #61aeee;line-height: 26px;">test</span><span style="line-height: 26px;">()</span> </span>{        <span style="color: #c678dd;line-height: 26px;">int</span> a = <span style="color: #d19a66;line-height: 26px;">0</span>;        <span style="color: #c678dd;line-height: 26px;">int</span> i;        <span style="color: #c678dd;line-height: 26px;">for</span>(i=<span style="color: #d19a66;line-height: 26px;">0</span>; i&lt;<span style="color: #d19a66;line-height: 26px;">10</span>; i++) {            a += i;        }    }}</p></pre><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">生成的CPG如下（<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">部分节点已隐藏</strong>）：</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000669" data-ratio="0.5083333333333333" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=789ee0c2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJQz6YDJMJkpR3TRB8bVsIXNtM9KYWDRRTjUY4MyfuuHdyiaMj7uk5VVw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;">img</figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">这张图看起来挺复杂，但莫慌，让笔者带你<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">拆解他</strong>！</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">我们先把这张图划分一下：</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000670" data-ratio="0.4824074074074074" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=29812324&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJicNUerkhdYQ3rAn36mgwvCicpl7kvSwib9p1kZdTLo6N6IgFgYxyVSqsw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;">img</figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">这么看是不是就清晰多了</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">我们再看其EOG的构建规则，其有以下几条边：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">iterationStatement --&gt; condition  （对应上图的  <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">++</p>节点 --&gt; <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">i</p>节点）</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">initializerStatement --&gt; condition  （对应上图的  <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">=</p>节点 --&gt; <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">i</p>节点）</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">condition --&gt; ForStatement  （对应上图中的 <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">&lt;</p>节点 --&gt; <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ForStatement</p>节点）</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">其余从<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ForStatement</p>出去的两条边也存在，为了不影响整体的观看效果，笔者已将其隐藏，大家可自行验证</div></li></ul><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">5.TryStatement</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">EOG构建规则如下图：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">resources:List<statement>try块中需要的值</statement></p></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">tryBlock:Block</p> try代码块</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">finallyBlock:Block</p> finally代码块</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">catchBlocks:List&lt;Block&gt;</p> catch代码块</div></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000667" data-ratio="0.19537037037037036" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=5f0560fb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJDpOcBYYLE1LrdANFW19Oq3OeU7EODJib0JWeic4ACKp2SJm0IZL445YA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;">img</figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">测试代码：</p><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style=""><span style="color: #c678dd;line-height: 26px;">public</span> <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">class</span> <span style="color: #e6c07b;line-height: 26px;">TestTry</span> </span>{    <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">public</span> <span style="color: #c678dd;line-height: 26px;">void</span> <span style="color: #61aeee;line-height: 26px;">test</span><span style="line-height: 26px;">()</span> </span>{        <span style="color: #c678dd;line-height: 26px;">try</span> {            throwExceptionMethod();        } <span style="color: #c678dd;line-height: 26px;">catch</span> (IllegalArgumentException e) {            e.printStackTrace();        } <span style="color: #c678dd;line-height: 26px;">finally</span> {            System.out.println(<span style="color: #98c379;line-height: 26px;">&#34;finished&#34;</span>);        }    }    <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">private</span> <span style="color: #c678dd;line-height: 26px;">void</span> <span style="color: #61aeee;line-height: 26px;">throwExceptionMethod</span><span style="line-height: 26px;">()</span> <span style="color: #c678dd;line-height: 26px;">throws</span> IllegalArgumentException </span>{    }}</p></pre><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">生成的CPG如下（<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">已隐藏部分节点及边</strong>）：</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000668" data-ratio="0.8390151515151515" data-type="png" data-w="1056" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=d67d1edb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJh8B94uGViaJ9qfzX1XGkSNEV9QpfZiakljdMibleicHxBo85AriaHakQHKw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;">img</figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">现在来拆分这张图：</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000671" data-ratio="0.5814814814814815" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=986c985d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJsyZsNn6jDsBugL5ZtFx4bPW8eaIahiaLuVppuGxZjFbxw68arUJowMA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;">img</figcaption></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">划分模块后，可以很直观地看到以下几条边：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">try --&gt; finally</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">catch --&gt; finally</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">resources --&gt; try</p></li></ul><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;color: rgb(0, 0, 0);font-family: PingFangSC-regular, sans-serif;letter-spacing: normal;text-align: left;text-wrap: wrap;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="padding: 3px 10px;font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">推荐阅读</span></h1><p style="margin-bottom: 0px;color: rgb(0, 0, 0);font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;text-align: left;text-wrap: wrap;">代码属性图CPG系列文章（白盒/静态代码分析方向）：超<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">万字</strong>的详细讲解，文章<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">理论与实践相结合</strong>，示例代码可<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">拿来即用</strong>，<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">通俗易懂</strong>，这样的文章你爱了吗！<img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="vertical-align: middle;outline: 0px;color: rgb(89, 89, 89);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;background-color: rgb(255, 255, 255);display: inline-block;background-size: cover;width: 20px !important;visibility: visible !important;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=76899f41&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FYellowdog.png"/><span style="color: rgb(89, 89, 89);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;background-color: rgb(255, 255, 255);"> </span></p><ul class="list-paddingleft-1" style="width: 577.422px;color: rgb(0, 0, 0);font-family: PingFangSC-regular, sans-serif;font-size: 16px;text-align: left;text-wrap: wrap;letter-spacing: 0.578px;"><li><p style="padding: 8px 10px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247483879&amp;idx=1&amp;sn=7ae5a6526787f114c28ea77645273081&amp;chksm=c1bc5852f6cbd144ea341e039d47e93543fd6d7bd3e99fc80834458b385ca45fb151829a46da&amp;scene=21#wechat_redirect" textvalue="抽丝剥茧代码属性图CPG-第一弹：CPG介绍" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">抽丝剥茧代码属性图CPG-第一弹：CPG介绍</a></p></li><li><p style="padding: 8px 10px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484169&amp;idx=1&amp;sn=ac94ca020fdd67da7b3bbb9879db1bc3&amp;chksm=c1bc5abcf6cbd3aa16500c17fd111091718094f635e0a8ee9a52b48f73a07f6148d0ef963278&amp;scene=21#wechat_redirect" textvalue="抽丝剥茧代码属性图CPG-第四弹：CPG中的DFG-3" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">抽丝剥茧代码属性图CPG-第四弹：CPG中的DFG-3</a></p></li><li><p style="padding: 8px 10px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484111&amp;idx=1&amp;sn=9b7ec8374dc22623e0e5e6fa8f268248&amp;chksm=c1bc5b7af6cbd26cb014505a75f6ba37425a7950e83b9ffe0aee414f6cd9c3baefd839d4cc7e&amp;scene=21#wechat_redirect" textvalue="SAST-短小精悍的Benchmark" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">SAST-短小精悍的Benchmark</a></p></li></ul><p style="padding: 8px 10px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484111&amp;idx=1&amp;sn=9b7ec8374dc22623e0e5e6fa8f268248&amp;chksm=c1bc5b7af6cbd26cb014505a75f6ba37425a7950e83b9ffe0aee414f6cd9c3baefd839d4cc7e&amp;scene=21#wechat_redirect" textvalue="SAST-短小精悍的Benchmark" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="1"><span class="js_jump_icon h5_image_link"><img class="rich_pages wxw-img js_insertlocalimg" data-imgfileid="100000740" data-ratio="1.3547486033519553" data-s="300,640" data-type="png" data-w="1074" style="color: rgb(0, 0, 0);font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;text-align: center;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=95622efd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbGOzPuPFwZLwntJAib2XSibE2eaH0Ric3voSsQYMqNtp1342gicJibLMBYXKFc5ltIH5LzjBWrWGukNKw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></a></p><p style="margin-bottom: 0px;padding: 8px 10px;text-indent: 0em;word-spacing: 0em;text-wrap: wrap;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-break: break-word;text-align: left;"><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.04em;">能够看到这篇文章，就是我们的缘分，</span><strong style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.6px;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">坚持输出优质内容</strong></strong><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.04em;">是笔者一直在做的事情。</span><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.04em;">若文章对你有帮助，感谢点个免费的 </span><strong style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.04em;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="letter-spacing: 0.6px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">点赞</strong></strong></strong><strong style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.04em;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="vertical-align: middle;display: inline-block;width: 20px;background-size: cover;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=34c2798b&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2FExpression%2FExpression_80%402x.png"/></strong><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.04em;">、</span><strong style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.04em;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="letter-spacing: 0.6px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">在看</strong></strong><img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="vertical-align: middle;display: inline-block;width: 20px;background-size: cover;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=763711ae&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FLetMeSee.png"/></strong><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.04em;">，</span><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.6px;">大</span><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.6px;">家</span><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.6px;">的鼓励</span><span style="text-indent: 0em;word-spacing: 0em;letter-spacing: 0.6px;">是我最大的动力<img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="vertical-align: middle;display: inline-block;width: 20px;background-size: cover;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=6b4764f4&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FAddoil.png"/></span></p><p style="margin-bottom: 0px;padding: 8px 10px;text-indent: 0em;word-spacing: 0em;text-wrap: wrap;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-break: break-word;text-align: left;"><span style="color: rgb(89, 89, 89);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;text-align: left;text-wrap: wrap;">点个</span><strong style="font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;text-align: left;text-wrap: wrap;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="letter-spacing: 0.6px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">关注</strong></strong></strong><span style="color: rgb(89, 89, 89);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;text-align: left;text-wrap: wrap;">，不后悔</span><img data-ratio="1" data-w="128" style="display: inline-block;width: 20px;vertical-align: middle;background-size: cover;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=76899f41&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FYellowdog.png"/></p><p class="mp_profile_iframe_wrp"><mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget" data-pluginname="mpprofile" data-id="MzkxNzY3MjE1NA==" data-headimg="http://mmbiz.qpic.cn/sz_mmbiz_png/cdc0h3QF6GZIG0XBUPGw8ENCX2xJKW6sZrx0ZfKcmRf8ttPCKpYscskFTm4sz2cQYQ63M9QZtX6Olrkolib2UFg/0?wx_fmt=png" data-nickname="CodeAnalyzer Ultra" data-alias="CodeAnalyzer" data-signature="分享白盒安全、代码安全相关的技术知识。包括静态代码分析（SAST）、漏洞利用、安全热点资讯等。 致力于打造全面且细致的专栏内容，理论与实践相结合的讲解方式，尽量做到通俗易懂，示例代码可拿来即用，降低学习门槛。" data-from="0"></mp-common-profile></p></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=4ed4cd65&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJnPkqFJviaxt68SJxXKibhN1ZRl0Qlfnia8Wxxp4LNbibSTXW20GYf3USyA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=87a31417&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8YyEgA3wnpsSyIaicJMxv2JwUEiaL423TjTyCicNBcMEo2nt8lsOxpxbLAIQmyGw5plWibRKuB8XhlVY%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=87e2d8de&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJmg57J2LbwLGssCPITLe7Vbyia7Ho6scPJnY6k1VWMPicoPao2fMs8OcA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=e1b8e9ef&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJeAN63iaibkckGIeDVvhrXqPDTgyF8iaeWHABhJX4IHCZwZv0lpibu0NCog%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=87a31417&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8YyEgA3wnpsSyIaicJMxv2JwUEiaL423TjTyCicNBcMEo2nt8lsOxpxbLAIQmyGw5plWibRKuB8XhlVY%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=d92f2068&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJ8GCU19que2vLdNwdT0quj3ZX8DqGCmc7gTo7bBQicI1z4naoGWLyX5w%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=423e108d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJeSPk6zsRhia9iaZMIe5NKoOcjqbrp1M3sdTAtVaRB9f5Ojibdo9aaceTg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=d8877649&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJwnenzzy0T8NMB9Tbz86HADE2KSTF7dowyYcuoMkahvexoMXjwIfyQw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=87a31417&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8YyEgA3wnpsSyIaicJMxv2JwUEiaL423TjTyCicNBcMEo2nt8lsOxpxbLAIQmyGw5plWibRKuB8XhlVY%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=20c6ab6a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJGQE5oWic94w0biac9VIuHtvQOtskaFSroPjn4nFFkK2EcQpyic9dCaWEA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=6a5d37ce&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJLHmLcXePaBcmvHIibo8d2tWB8NyhKkic71C97IM3FL6BWiaQoUib7FDibVQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=87a31417&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8YyEgA3wnpsSyIaicJMxv2JwUEiaL423TjTyCicNBcMEo2nt8lsOxpxbLAIQmyGw5plWibRKuB8XhlVY%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=d7ed62d1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJib1ZXfWMo182JGs5wzeeuECrLKibXicrpmZu5IiaTIX8vbLJt5Kc7dNk3A%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=38c74fa6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJc2MicJEwVfhE4o2TktibgicIaajibPdhkX8lFziaRDgu6s4tTv5QVjWXPHw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=87a31417&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8YyEgA3wnpsSyIaicJMxv2JwUEiaL423TjTyCicNBcMEo2nt8lsOxpxbLAIQmyGw5plWibRKuB8XhlVY%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=3729f914&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJQz6YDJMJkpR3TRB8bVsIXNtM9KYWDRRTjUY4MyfuuHdyiaMj7uk5VVw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=4689905d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJicNUerkhdYQ3rAn36mgwvCicpl7kvSwib9p1kZdTLo6N6IgFgYxyVSqsw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=37ef25b7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJDpOcBYYLE1LrdANFW19Oq3OeU7EODJib0JWeic4ACKp2SJm0IZL445YA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=87a31417&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8YyEgA3wnpsSyIaicJMxv2JwUEiaL423TjTyCicNBcMEo2nt8lsOxpxbLAIQmyGw5plWibRKuB8XhlVY%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=a6dfbe40&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJh8B94uGViaJ9qfzX1XGkSNEV9QpfZiakljdMibleicHxBo85AriaHakQHKw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=d38a254a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYtZvkN8hAXy5vpUCwodEsJsyZsNn6jDsBugL5ZtFx4bPW8eaIahiaLuVppuGxZjFbxw68arUJowMA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=76899f41&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FYellowdog.png"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=a9058e0c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbGOzPuPFwZLwntJAib2XSibE2eaH0Ric3voSsQYMqNtp1342gicJibLMBYXKFc5ltIH5LzjBWrWGukNKw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=34c2798b&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2FExpression%2FExpression_80%402x.png"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=763711ae&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FLetMeSee.png"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=6b4764f4&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FAddoil.png"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=76899f41&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FYellowdog.png"/></p>



<p><a href="2247484390">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=239a14bc&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484390%26idx%3D1%26sn%3D821aa0fc4986a7022a98d964ddd6df40">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 13 May 2024 08:01:00 +0800</pubDate>
    </item>
    <item>
      <title>除了ChatGPT，OpenAI还有硬货？</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484389&amp;idx=1&amp;sn=1ea9d0854ef538c685406384ef5a82bb</link>
      <description>大模型LLMs和小模型SLMs怎么选，OpenAI除了ChatGPT还有什么好玩意</description>
      <content:encoded><![CDATA[<p>
原创 <span>SASTing</span> <span>2024-05-09 08:02</span> <span style="display: inline-block;">上海</span>
</p>

<p>大模型LLMs和小模型SLMs怎么选，OpenAI除了ChatGPT还有什么好玩意</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=b69f8f82&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGiad6K8s44RN7A3QIhdTb4A5Gd4V0sPa8fN694SjrGUKlDPGZ3I2o0nQ%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;"><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">引言</span></h1><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">越来越多的网安厂商将基于<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">LLM</strong>（大语言模型） 工具集成到他们的安全产品中。<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">OpenAI的GPT模型</strong>更受厂商的青睐。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">我们熟知的微软的 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Copilot</strong> 使用的也是<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">GPT</strong>大模型，在 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Copilot</strong> 推出的一个月后，微软宣布将使用 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">40000</strong> 份<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">威胁情报数据</strong>做针对性训练。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100000698" data-ratio="0.6428571428571429" data-s="300,640" data-type="jpeg" data-w="560" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=a0df3484&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGqiauL2x6rUk9EuK369ibTeebAVvehMlE5erZFuUvJ5w5HannFV4Ov03w%2F640%3Fwx_fmt%3Djpeg"/></p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">与此同时，<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">OX Security</strong>（软件供应链安全厂商）与<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Ironscales</strong>（电子邮件安全厂商）在 6 月份的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Infosecurity Europe</strong>（欧洲信息安全大会）上发布了基于<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">GPT</strong>的网络安全领域的大模型。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">许多其他供应商也在探索利用 LLM 的可能性，在欧洲信息安全会议期间，<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Contxt</strong>（API安全提供商）CEO  <em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Mayur Upadhyaya</em> 表示：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(53, 179, 120);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 249, 253);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">我们在 <strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">2021</strong> 年获得了一笔创新基金，当时基础模型还没有出现，目的是利用专有数据集建立一个用于<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">个人数据检测</strong>的大模型。我们现在正在尝试如何更好地利用这些数据集。</p></blockquote><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">大模型背后的算法</span></h1><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000686" data-ratio="0.675" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=83f41750&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGUKh7tMgB1v8f0x6JWpgQjc3JoBwMZ9kSxMHyjMrneSltEQLQpZculQ%2F640%3Fwx_fmt%3Dpng"/></figure><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">各个大模型背后采用的AI算法是不一样的，厂商公开使用的算法如下：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Egress</strong>公司：<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">genetic</em> programming, <em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">behavioral analytics-based</em> algorithms, as well as <em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">social graphs</em></p></li></ul><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">遗传编程</strong>、基于<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">行为分析</strong>的算法以及<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">社交图谱</strong>）</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Ironscales</strong>公司：a broad range of algorithms, including some leveraging natural language processing (<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">NLP</em>), but not LLMs yet</p></li></ul><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">多模态算法的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">融合</strong>，包括一些<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">NLP</strong>（自然语言处理）算法，但目前还没有使用 LLMs</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Google</strong>公司：<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">classifiers</em>, a type of machine learning algorithm used to assign a <em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">class label</em> to a data input</p></li></ul><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">网络安全领域使用的大多数AI算法都是<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">分类器</strong>，这是一种机器学习算法，用于<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">为数据输入分配类别标签</strong></p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">大模型现状</span></h1><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">目前的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">通用 LLM</strong> 往往会产生<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">幻觉</strong>（看似合理但错误的回答）。</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000684" data-ratio="0.6" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=e910eb50&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGsU2jhlOf6J5p0FIZibhz7NiccvQ0FdFeT1RYX67xxicc7KichricE3CxFEw%2F640%3Fwx_fmt%3Dpng"/></figure><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CISO Jon France</em>（ISC组织）表示：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(53, 179, 120);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 249, 253);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">幻觉问题</strong>是通用大模型的通病，这对于网络安全领域来说是一个<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">严重的问题</strong>，因为<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">准确性和精确性</strong>在网络安全实践中至关重要。</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">但是，通用大模型 LLM 对网安行业也带来了一定的正向作用：如制定一些<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全政策</strong>等。</p></blockquote><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Ganesh Chellappa</em>（ManageEngine公司支持服务负责人）表示：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(53, 179, 120);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 249, 253);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">现在很多企业的解决方案都是基于<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">用户行为分析</strong>去做的，他们拥有大量的用户行为数据，但这些有用的数据却没有被真正的利用起来，我们完全可以把这些数据给到 <strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">LLM</strong> 去做训练。</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">这些数据可以用作<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">异常行为检测</strong>（电子邮件安全、终端安全等）、<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">威胁情报分析</strong>等领域。</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">如果真正把这些数据利用起来，发挥他们的价值，相信会达到<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">事半功倍</strong>的效果。</p></blockquote><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">如何解决幻觉问题</span></h1><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Chellappa</em>认为:</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(53, 179, 120);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 249, 253);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">网安厂商应该充分利用开源大模型，如：Meta的<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">LLaMA</strong>，斯坦福大学的<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Alpaca</strong>等，利用这些开源大模型框架去训练自己的数据集，幻觉问题将在很大程度上得到改善。</p></blockquote><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100000699" data-ratio="0.5548172757475083" data-s="300,640" data-type="jpeg" data-w="602" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=3a8a130c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGKmzNmMvKZ5KJKH586o8kaCFVGHISvFax8tics6BY9e1ic55d4iaYicsiayA%2F640%3Fwx_fmt%3Djpeg"/></p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">不过，<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Niklas Hellemann</em>（SoSafe CEO）表示：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(53, 179, 120);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 249, 253);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">开源模型正在面临一个日益严重的问题：<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">model poisoning</strong>。像 <strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">LLaMA</strong> 这样的开源大模型已经遭受了模型投毒攻击。</p></blockquote><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">模型投毒是一种针对<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">机器学习模型</strong>的攻击方式，这种攻击手段通过有意地<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">篡改训练数据集</strong>或在训练过程中<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">注入误导信息</strong>，从而导致机器学习模型在部署后的行为出现<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">偏差</strong>，无法做出准确的预测或决策。</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000685" data-ratio="0.462037037037037" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=6ad25385&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vG7aqVCqdJJUibMYkdlGYwuG8RFxCgnjDUxVm67n5NvO1f1ViaiarmE8uhQ%2F640%3Fwx_fmt%3Dpng"/></figure><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大模型有这么多“问题”，我们如何去解决呢？在此之前，我们有必要了解一下大模型的分类。</p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">大模型分类</span></h1><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">我们都知道，大模型一般分两种：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">通用大模型</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">专用大模型</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000688" data-ratio="0.4956855225311601" data-type="png" data-w="1043" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=60a81d2a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGhCkx2MdGIepEmr7UlErsag62Ow7rnyvouSg0tGADaZznjjsiauUbYnA%2F640%3Fwx_fmt%3Dpng"/></figure><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">通用大模型</span></h2><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">这类模型具备<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">跨领域</strong>、<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">跨任务</strong>的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">泛化能力</strong>，能够在多种不同的应用场景下表现出较好的适应性和表现力。例如，GPT-3、通义千问等大模型，它们经过<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">大规模预训练</strong>后，能够完成文本生成、问答、摘要、翻译等多种自然语言处理任务。</p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">专用大模型</span></h2><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">专用大模型也可以称为<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">小模型</strong>，专用大模型通常是为<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">某一特定任务或领域</strong>设计和训练的大型模型，虽然其参数量也可能很大，但相较于通用大模型，它们在<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">特定领域</strong>的性能可能更为突出，因为在设计和训练时就已经考虑了该领域的特殊性，对特定任务有更强的针对性。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">小模型在<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">参数量</em>、<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">复杂度</em>或<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">任务覆盖面</em>上较为有限，是专注于某个具体任务或领域内的模型。这类模型在特定场景下因其针对性强、资源消耗相对较小而受到青睐。</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(53, 179, 120);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 249, 253);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">既然通用大模型有诸多不便，我们何不使用<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">相对小型、专业的数据集</strong>去训练一些<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">特定领域的小模型</strong>呢，小模型的<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">性价比</strong>理论上是更高的。</p></blockquote><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">OpenAI 推出了基于 GPT 的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">网安领域小模型</strong></p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">网安领域小模型</span></h1><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">基于GPT的各领域小模型有很多：</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000691" data-ratio="0.8194444444444444" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=def9e8fa&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vG9EK3iccEPBrvYBVAK1hKfIfqicpP5BJ6AZSj6wfGbxXXkmySic7KjR3hw%2F640%3Fwx_fmt%3Dpng"/></figure><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000690" data-ratio="0.8537037037037037" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=0a1acf69&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGe9icia5iaooaC5Me77vALaQiaYibiacDJ7xBMhgSz99P7TDsSeSxtSX7ZeqA%2F640%3Fwx_fmt%3Dpng"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;">img</figcaption></figure><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">以下<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">基于GPT</strong>的网安领域小模型被广泛使用：</p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">编码</span></h2><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000689" data-ratio="0.7138888888888889" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=e28bc9a1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vG1ZGcmicquDs1uN8GnZ9nwcWHFB3MhbxibdrsvolicnPgEia91j6xrVm5sA%2F640%3Fwx_fmt%3Dpng"/></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">Betterscan.io AI Code Analyzer  代码分析器，分析<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">代码质量</strong>、是否满足<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">编码规范</strong>等</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">Code Securely 基于<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">OWASP Top 10</strong>的安全开发练习，用户可以识别代码中典型的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Web漏洞</strong>，提高安全开发能力</p></li></ul><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">红队</span></h2><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000687" data-ratio="0.5787037037037037" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=55904a5e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGuVLSibHyKQR8FGH367YqThYg4w6fCsC4rmQVHyzpYrKU0EsbzXhOPsw%2F640%3Fwx_fmt%3Dpng"/></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">GP(en)T(ester)  <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">渗透测试</strong>助手</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">HackTricksGPT  根据<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">HackTricks</strong>系列书籍提供一些<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全建议</strong></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">MagicUnprotect 提供<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">恶意软件规避</strong>方式，如：反窃听、反取证等。</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">Pentest Reporter  编写<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">渗透测试报告</strong></p></li></ul><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">蓝队</span></h2><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000693" data-ratio="0.6037037037037037" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=a2a82116&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGqf5cwAU7J98GIYCwnibyibLZhw4EicWezuIaCLbqMh5sgNTXU86tpPxkg%2F640%3Fwx_fmt%3Dpng"/></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">ATT&amp;CK Mate  提供<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">MITRE ATT&amp;CK框架</strong>下的最新战术方法</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">CVEs  查找<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CVE漏洞</strong>的工具</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">Threat Intel Bot 及时了解<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">APT</strong>最新威胁情报</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">Threat Modelling  <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">威胁建模</strong>，识别<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">潜在的漏洞</strong>，并提供解决方案</p></li></ul><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">网安行业指导/职业发展</span></h2><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000694" data-ratio="0.6064814814814815" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=40c97a5b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGibPTTrn1x4lZL4lqCnpq1sGr9cbib8ZQGkbmMwGctxRa4LGgYPOmm0BA%2F640%3Fwx_fmt%3Dpng"/></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">Cyber Security Career Mentor  为初入<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">网安领域的新手</strong>提供一些职业规划</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">Cyber Charli  对8-12岁儿童进行<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">网络安全教育</strong></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">Cyber Mentor  提供网安进阶<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">学习路线</strong>等</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">Pentester Interviewer  渗透测试行业面试官</p></li></ul><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">总结</span></h1><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000695" data-ratio="0.6351219512195122" data-type="png" data-w="1025" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=ee9c4542&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGI899Gibtn41X6rZA7TAMOTxL4bpcKSjNoadUvkYDo8dq0ibLgSic9Xj6Q%2F640%3Fwx_fmt%3Dpng"/></figure><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">任何一项技术都是有<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">两面性</strong>的，大模型无疑是一种<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">革命性</strong>的工具，其给我们的日常生活带来了极大的便利，它可以提高我们的工作效率，同时也会伴随着各种<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全问题</strong>，像利用大模型去做网络攻击、诈骗等。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">任何技术在发展的过程中，都应该做到“<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">两条腿走路</strong>”，不能只关注其便利性，而忽略它带来的负面影响，二者兼顾才能<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">可持续健康发展</strong>。</p><p style="margin-top: 30px;margin-bottom: 15px;padding-right: 10px;padding-left: 10px;outline: 0px;word-spacing: 0em;text-wrap: wrap;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(255, 255, 255);font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-break: break-word;text-align: left;">推荐阅读</p><ul class="list-paddingleft-1" style="list-style-type: disc;"><li style="outline: 0px;"><p style="padding: 8px 10px;outline: 0px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484329&amp;idx=1&amp;sn=2ef2c8d82af4d0caedaf6b239c0339bb&amp;chksm=c1bc5a1cf6cbd30ae6753c21a674bad6a8e825642e2e81c53a8424044d47013772ef37002dde&amp;scene=21#wechat_redirect" textvalue="世界上只有两种程序员：1.懂DevSecOps的 2.其他程序员" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2"></a><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484169&amp;idx=1&amp;sn=ac94ca020fdd67da7b3bbb9879db1bc3&amp;chksm=c1bc5abcf6cbd3aa16500c17fd111091718094f635e0a8ee9a52b48f73a07f6148d0ef963278&amp;scene=21#wechat_redirect" textvalue="抽丝剥茧代码属性图CPG-第四弹：CPG中的DFG-3" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">抽丝剥茧代码属性图CPG-第四弹：CPG中的DFG-3</a></p></li><li style="outline: 0px;"><p style="padding: 8px 10px;outline: 0px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484262&amp;idx=1&amp;sn=1f42921be6b114339023643f86f15aa5&amp;chksm=c1bc5ad3f6cbd3c508265e59e457ebabe01171d87bebbe16cc483ed992dd06eef376504ea4c2&amp;scene=21#wechat_redirect" textvalue="GPT-4可自主利用1day漏洞了，0day还会远吗？渗透测试：我慌了！" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">GPT-4可自主利用1day漏洞了，0day还会远吗？渗透测试：我慌了！</a></p></li><li style="outline: 0px;"><p style="padding: 8px 10px;outline: 0px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484329&amp;idx=1&amp;sn=2ef2c8d82af4d0caedaf6b239c0339bb&amp;chksm=c1bc5a1cf6cbd30ae6753c21a674bad6a8e825642e2e81c53a8424044d47013772ef37002dde&amp;scene=21#wechat_redirect" textvalue="世界上只有两种程序员：1.懂DevSecOps的 2.其他程序员" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">世界上只有两种程序员：1.懂DevSecOps的 2.其他程序员</a></p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100000736" data-ratio="1.3547486033519553" data-s="300,640" data-type="png" data-w="1074" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=95622efd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbGOzPuPFwZLwntJAib2XSibE2eaH0Ric3voSsQYMqNtp1342gicJibLMBYXKFc5ltIH5LzjBWrWGukNKw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="margin-bottom: 0px;padding: 8px 10px;outline: 0px;text-indent: 0em;word-spacing: 0em;text-wrap: wrap;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(255, 255, 255);color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-break: break-word;text-align: left;">能够看到这篇文章，就是我们的缘分，<strong style="outline: 0px;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">坚持输出优质内容</strong>是笔者一直在做的事情。若文章对你有帮助，感谢点个免费的 <strong style="outline: 0px;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">点赞<img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="outline: 0px;vertical-align: middle;display: inline-block;background-size: cover;width: 20px !important;visibility: visible !important;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=c1237747&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGPAje0ySDpeljiciaicUQRrFJqHlRWjTnHMKEiajmViboRwQM46oTq0fOduQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></strong>、<strong style="outline: 0px;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">在看<img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="outline: 0px;vertical-align: middle;display: inline-block;background-size: cover;width: 20px !important;visibility: visible !important;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=03e18ef7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGrQL6ICwg38BVron42ib9h1BYJzCtGBfZY675PuUBC7GYia7McSj9ogIg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></strong>，<span style="outline: 0px;letter-spacing: 0.6px;">大</span><span style="outline: 0px;letter-spacing: 0.6px;">家</span><span style="outline: 0px;letter-spacing: 0.6px;">的鼓励</span><span style="outline: 0px;letter-spacing: 0.6px;">是我最大的动力<img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="outline: 0px;vertical-align: middle;display: inline-block;background-size: cover;width: 20px !important;visibility: visible !important;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=0d39ea83&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGBF0tPhQI6M4xsQwZtwLCn8cX9enGUZkNcyF8ECYwRQuftk27gR9AjA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><p style="margin-bottom: 0px;padding: 8px 10px;outline: 0px;text-indent: 0em;word-spacing: 0em;text-wrap: wrap;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(255, 255, 255);color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-break: break-word;text-align: left;"><span style="outline: 0px;letter-spacing: 0.6px;">点个</span><strong style="outline: 0px;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">关注</strong><span style="outline: 0px;letter-spacing: 0.6px;">，不后悔<img data-ratio="1" data-w="128" style="display: inline-block;width: 20px;vertical-align: middle;background-size: cover;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=76899f41&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FYellowdog.png"/></span></p><p class="mp_profile_iframe_wrp"><mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget" data-pluginname="mpprofile" data-id="MzkxNzY3MjE1NA==" data-headimg="http://mmbiz.qpic.cn/sz_mmbiz_png/cdc0h3QF6GZIG0XBUPGw8ENCX2xJKW6sZrx0ZfKcmRf8ttPCKpYscskFTm4sz2cQYQ63M9QZtX6Olrkolib2UFg/0?wx_fmt=png" data-nickname="CodeAnalyzer Ultra" data-alias="CodeAnalyzer" data-signature="分享白盒安全、代码安全相关的技术知识。包括静态代码分析（SAST）、漏洞利用、安全热点资讯等。 致力于打造全面且细致的专栏内容，理论与实践相结合的讲解方式，尽量做到通俗易懂，示例代码可拿来即用，降低学习门槛。" data-from="0"></mp-common-profile></p></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=a0df3484&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGqiauL2x6rUk9EuK369ibTeebAVvehMlE5erZFuUvJ5w5HannFV4Ov03w%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=83f41750&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGUKh7tMgB1v8f0x6JWpgQjc3JoBwMZ9kSxMHyjMrneSltEQLQpZculQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=e910eb50&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGsU2jhlOf6J5p0FIZibhz7NiccvQ0FdFeT1RYX67xxicc7KichricE3CxFEw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=3a8a130c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGKmzNmMvKZ5KJKH586o8kaCFVGHISvFax8tics6BY9e1ic55d4iaYicsiayA%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=6ad25385&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vG7aqVCqdJJUibMYkdlGYwuG8RFxCgnjDUxVm67n5NvO1f1ViaiarmE8uhQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=60a81d2a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGhCkx2MdGIepEmr7UlErsag62Ow7rnyvouSg0tGADaZznjjsiauUbYnA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=def9e8fa&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vG9EK3iccEPBrvYBVAK1hKfIfqicpP5BJ6AZSj6wfGbxXXkmySic7KjR3hw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=0a1acf69&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGe9icia5iaooaC5Me77vALaQiaYibiacDJ7xBMhgSz99P7TDsSeSxtSX7ZeqA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=e28bc9a1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vG1ZGcmicquDs1uN8GnZ9nwcWHFB3MhbxibdrsvolicnPgEia91j6xrVm5sA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=55904a5e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGuVLSibHyKQR8FGH367YqThYg4w6fCsC4rmQVHyzpYrKU0EsbzXhOPsw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=a2a82116&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGqf5cwAU7J98GIYCwnibyibLZhw4EicWezuIaCLbqMh5sgNTXU86tpPxkg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=40c97a5b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGibPTTrn1x4lZL4lqCnpq1sGr9cbib8ZQGkbmMwGctxRa4LGgYPOmm0BA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=ee9c4542&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGI899Gibtn41X6rZA7TAMOTxL4bpcKSjNoadUvkYDo8dq0ibLgSic9Xj6Q%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=a9058e0c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbGOzPuPFwZLwntJAib2XSibE2eaH0Ric3voSsQYMqNtp1342gicJibLMBYXKFc5ltIH5LzjBWrWGukNKw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=a0bd5c06&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGPAje0ySDpeljiciaicUQRrFJqHlRWjTnHMKEiajmViboRwQM46oTq0fOduQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=06699005&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGrQL6ICwg38BVron42ib9h1BYJzCtGBfZY675PuUBC7GYia7McSj9ogIg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=e8bcbe4b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaMHn8JgzCR0GLiclXdb84vGBF0tPhQI6M4xsQwZtwLCn8cX9enGUZkNcyF8ECYwRQuftk27gR9AjA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=76899f41&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FYellowdog.png"/></p>



<p><a href="2247484389">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=fc1f6acc&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484389%26idx%3D1%26sn%3D1ea9d0854ef538c685406384ef5a82bb">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Thu, 09 May 2024 08:02:00 +0800</pubDate>
    </item>
    <item>
      <title>都2024了，你该不会还没用过这个数据库吧？</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484382&amp;idx=1&amp;sn=0a9979dcf7de46831cdf79b012feedf1</link>
      <description>Neo4j作为一款强大的图形数据库，其采用图形建模，采用Node、Relationship、Property的形式存储数据，可以处理复杂的现实场景。</description>
      <content:encoded><![CDATA[<p>
原创 <span>SASTing</span> <span>2024-05-06 08:02</span> <span style="display: inline-block;">上海</span>
</p>

<p>Neo4j作为一款强大的图形数据库，其采用图形建模，采用Node、Relationship、Property的形式存储数据，可以处理复杂的现实场景。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=b48a6282&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GbY78iaAGoSXocyiahOqCDB6xRmQccVH3bOKDYu55bKzLfnVIdEYfceloFT828PvgpNAuRkkNia7rUlQ%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: PingFangSC-regular, sans-serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;"><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">写在前面</span></h1><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">本文旨在保证&#34;<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">抽丝剥茧代码属性图CPG</strong>&#34;系列文章的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">完整性</strong>，笔者认为<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">图数据库</strong><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Neo4j</strong>也是该系列中不可或缺的一部分，本文起到一个<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">抛砖引玉</strong>的作用，后续大概率会对CPG中的Neo4j做详细的讲解，大家敬请期待~</p><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">引言</span></h1><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">为什么要写CPG中的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Neo4j</strong>呢，在花大把时间肝完<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CPG中的DFG（Data Flow Graph）</strong>后，笔者闲下来再去回顾这些东西时，虽然写得很全面也很细节了， 但看起来还<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">不是那么的直观</strong>，尤其是验证各条边的构建过程时，必须在特定代码场景下<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">debug</strong>调试，然后从程序断点处寻找我们想要的DFG信息，想必大家在阅读过程中也是比较痛苦的。</p><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">基于上述原因，再加上CPG自身集成了图数据库<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Neo4j</strong>，其支持把翻译后的产物<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">TranslationResult</p>序列化到数据库，然后我们就可以通过<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Neo4j Browser</strong>直观地看到生成的图了，<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">各节点间的关系，各节点间连接着什么边，节点都有哪些属性</span>等等以<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">图</strong>的形式呈现，一目了然，对读者极其友好。</div><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">所以嘞，笔者打算以后的文章中若涉及到<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">验证</strong>或者是需要<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">看CPG的构建效果</strong>时，直接给大家上图！</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大家可以先看一张图，直观地感受一下<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">图形化展示</strong>的效果（此图不是完整的图，是笔者本地测试的一张图，主要是让大家感受下neo4j带来的便利）。</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000510" data-ratio="0.6287037037037037" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=3b62acb9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbY78iaAGoSXocyiahOqCDB6xp7trJK4u2bXDrzgibflf1o7DGkqFdDpDbRJsJCfuTSVVY22N7nlzqRg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">红色的边都是<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DFG边</strong>（neo4j browser提供的渲染，可自定义样式），另外，节点是什么类型，其有哪些属性都可以点击节点，直观地看到。</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000507" data-ratio="0.840152235965747" data-type="png" data-w="1051" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=ae44336b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbY78iaAGoSXocyiahOqCDB6x1mgNiaQykeoFsMDVNLyu4v8b3U6llsMxou4DsMSBeZSUWrgOuicD7HeA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">一、Neo4j介绍</span></h1><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">概述</span></h2><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">Neo4j 是一款高性能的、开源的 NoSQL 图形数据库。其采用图形数据模型，将数据表示为<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">节点</strong>、<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">关系</strong>以及节点之间的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">连接</strong>，并且节点及关系都可以携带<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">属性</strong>来扩充信息，非常适合那些需要揭示复杂数据间隐含关系的应用场景。其存储的内容如下：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">Node  节点</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">Relationship  节点间的关系</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">Property  节点属性</p></li></ul><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">特点</span></h2><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">使用Cypher查询语言</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">支持完整的ACID事务特性（原子性，一致性，隔离性和持久性）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">支持将查询的数据导出为JSON和XSL格式</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">提供REST API，可以被任何编程语言访问</p></li></ul><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">二、Neo4j本地安装</span></h1><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">下载地址：<a href="https://neo4j.com/deployment-center/#community" target="_blank">https://neo4j.com/deployment-center/#community</a></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">解压后进入bin文件夹下，执行如下命令：</p></li></ul><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;font-size: 12px;">neo4j.bat console</p></pre><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">如下效果即执行成功</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000508" data-ratio="0.22962962962962963" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=70d0eeae&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbY78iaAGoSXocyiahOqCDB6xb9GC5BrrbpQAaswBtDLbyvMeK8eXDny1hrXibYFib8pOQ9ictONVOv5Mw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">浏览器访问<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><a href="http://localhost:7474/browser/" target="_blank">http://localhost:7474/browser/</a></strong></p></li></ul><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">输入默认账号<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">neo4j</strong>，默认密码<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">neo4j</strong>，然后再<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">修改密码</strong>后即可正常访问。</p><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">三、CPG-neo4j的调用方式</span></h1><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">tips:需先本地安装neo4j，并启动neo4j服务</p></blockquote><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">1.gradle打包+命令行</span></h2><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;font-size: 12px;">// 克隆cpg到本地git <span style="color: #e6c07b;line-height: 26px;">clone</span> <a href="https://github.com/Fraunhofer-AISEC/cpg.git" target="_blank">https://github.com/Fraunhofer-AISEC/cpg.git</a>// 进入cpg-neo4j目录<span style="color: #e6c07b;line-height: 26px;">cd</span> cpg/cpg-neo4j//gradle 构建gralde installDist</p></pre><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">构建完成后，会在<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">build/install/cpg-neo4j/bin</p>目录下生成打包好的可执行文件</div><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">cpg-neo4j</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">cpg-neo4j.bat</p></li></ul><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">命令行调用可执行程序：</strong></p><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;font-size: 12px;">./build/install/cpg-neo4j/bin/cpg-neo4j  [--infer-nodes] [--load-includes] [--no-default-passes]                    [--no-neo4j] [--no-purge-db] [--print-benchmark]                    [--use-unity-build] [--benchmark-json=&lt;benchmarkJson&gt;]                    [--custom-pass-list=&lt;customPasses&gt;]                    [--export-json=&lt;exportJsonFile&gt;] [--host=&lt;host&gt;]                    [--includes-file=&lt;includesFile&gt;]                    [--password=&lt;neo4jPassword&gt;] [--port=&lt;port&gt;]                    [--save-depth=&lt;depth&gt;] [--top-level=&lt;topLevel&gt;]                    [--user=&lt;neo4jUsername&gt;] ([&lt;files&gt;...] | -S=&lt;String=String&gt;                    [-S=&lt;String=String&gt;]... |                    --json-compilation-database=&lt;jsonCompilationDatabase&gt; |                    --list-passes)      [&lt;files&gt;...]           The paths to analyze. If module support is                               enabled, the paths will be looked at if they                               contain modules      --benchmark-json=&lt;benchmarkJson&gt;                             Save benchmark results to json file      --custom-pass-list=&lt;customPasses&gt;                             Add custom list of passes (includes                               --no-default-passes) which is passed as a                               comma-separated list; give either pass name if                               pass is in list, or its FQDN (e.g.                               --custom-pass-list=DFGPass,CallResolver)      --export-json=&lt;exportJsonFile&gt;                             Export cpg as json      --host=&lt;host&gt;          Set the host of the neo4j Database (default:                               localhost).      --includes-file=&lt;includesFile&gt;                             Load includes from file      --infer-nodes          Create inferred nodes for missing declarations      --json-compilation-database=&lt;jsonCompilationDatabase&gt;                             The path to an optional a JSON compilation database      --list-passes          Prints the list available passes      --load-includes        Enable TranslationConfiguration option loadIncludes      --no-default-passes    Do not register default passes [used for debugging]      --no-neo4j             Do not push cpg into neo4j [used for debugging]      --no-purge-db          Do no purge neo4j database before pushing the cpg      --password=&lt;neo4jPassword&gt;                             Neo4j password (default: password      --port=&lt;port&gt;          Set the port of the neo4j Database (default: 7687).      --print-benchmark      Print benchmark result as markdown table  -S, --softwareComponents=&lt;String=String&gt;                             Maps the names of software components to their                               respective files. The files are separated by                               commas (No whitespace!).                             Example: -S App1=./file1.c,./file2.c -S App2=.                               /Main.java,./Class.java      --save-depth=&lt;depth&gt;   Performance optimisation: Limit recursion depth                               form neo4j OGM when leaving the AST. -1                               (default) means no limit is used.      --top-level=&lt;topLevel&gt; Set top level directory of project structure.                               Default: Largest common path of all source files      --use-unity-build      Enable unity build mode for C++ (requires                               --load-includes)      --user=&lt;neo4jUsername&gt; Neo4j user name (default: neo4j)</p></pre><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">我们需要注意以下参数：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">--host   neo4j服务器（默认<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">localhost</strong>）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">--port  服务器端口（默认<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">7687</strong>）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">--user  neo4j用户名（默认 <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">neo4j</strong>）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">--password  neo4j密码（默认 <strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">password</strong>）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">--export-json  是否输出<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">json</strong>格式的结果</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">--no-neo4j  不将结果push至neo4j数据库</p></li></ul><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">使用示例</strong>：（其余参数默认即可）</p><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;font-size: 12px;"> .\cpg-neo4j D:\Example.java --password yourPassword</p></pre><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">有如下响应证明<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">TranslationResult</p>已成功push至neo4j</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000509" data-ratio="0.2712962962962963" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=7fd8487e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbY78iaAGoSXocyiahOqCDB6x8BafibicZbhV2XN4vUT6yndyicAO6wqyibibnR2WTOBefAMDibX2icqvV2Qtg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">然后，就可以访问<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><a href="http://localhost:7474/browser" target="_blank">http://localhost:7474/browser</a></strong>查看CPG翻译后的代码属性图了</p><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">2.code调用</span></h2><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;font-size: 12px;"><span style="color: #61aeee;line-height: 26px;">@Test</span><span style="color: #61aeee;line-height: 26px;">@Throws(InterruptedException::class)</span><span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">fun</span> <span style="color: #61aeee;line-height: 26px;">myNeo4jTest</span><span style="line-height: 26px;">()</span></span> {    <span style="color: #c678dd;line-height: 26px;">val</span> cmd = CommandLine(Application::<span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">class</span>.<span style="color: #e6c07b;line-height: 26px;">java</span>)</span>    cmd.parseArgs(<span style="color: #98c379;line-height: 26px;">&#34;Example.java&#34;</span>)    <span style="color: #c678dd;line-height: 26px;">val</span> application = cmd.getCommand&lt;Application&gt;()    <span style="color: #c678dd;line-height: 26px;">val</span> translationConfiguration = application.setupTranslationConfiguration()    <span style="color: #c678dd;line-height: 26px;">val</span> translationResult = TranslationManager.builder().config(translationConfiguration).build().analyze().<span style="color: #c678dd;line-height: 26px;">get</span>()    application.pushToNeo4j(translationResult)}</p></pre><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">当然，你也可以参考CPG的测试代码进行修改：<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">cpg-neo4j/src/test/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Neo4JTest.kt</p></div><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;text-wrap: wrap;color: rgb(0, 0, 0);font-family: PingFangSC-regular, sans-serif;letter-spacing: normal;text-align: left;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="padding: 3px 10px;font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">推荐阅读</span></h1><p>代码属性图CPG系列文章（白盒/静态代码分析方向）：超<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">万字</strong>的详细讲解，文章<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">理论与实践相结合</strong>，示例代码可<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">拿来即用</strong>，<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">通俗易懂</strong>，这样的文章你爱了吗！<img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="outline: 0px;vertical-align: middle;color: rgb(89, 89, 89);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;text-align: left;background-color: rgb(255, 255, 255);display: inline-block;background-size: cover;width: 20px !important;visibility: visible !important;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=76899f41&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FYellowdog.png"/><span style="color: rgb(89, 89, 89);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);"> </span></p><ul class="list-paddingleft-1" style="width: 577.422px;letter-spacing: 0.578px;text-wrap: wrap;"><li><p style="padding: 8px 10px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247483879&amp;idx=1&amp;sn=7ae5a6526787f114c28ea77645273081&amp;chksm=c1bc5852f6cbd144ea341e039d47e93543fd6d7bd3e99fc80834458b385ca45fb151829a46da&amp;scene=21#wechat_redirect" textvalue="抽丝剥茧代码属性图CPG-第一弹：CPG介绍" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">抽丝剥茧代码属性图CPG-第一弹：CPG介绍</a></p></li><li><p style="padding: 8px 10px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484169&amp;idx=1&amp;sn=ac94ca020fdd67da7b3bbb9879db1bc3&amp;chksm=c1bc5abcf6cbd3aa16500c17fd111091718094f635e0a8ee9a52b48f73a07f6148d0ef963278&amp;scene=21#wechat_redirect" textvalue="抽丝剥茧代码属性图CPG-第四弹：CPG中的DFG-3" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">抽丝剥茧代码属性图CPG-第四弹：CPG中的DFG-3</a></p></li><li><p style="padding: 8px 10px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484111&amp;idx=1&amp;sn=9b7ec8374dc22623e0e5e6fa8f268248&amp;chksm=c1bc5b7af6cbd26cb014505a75f6ba37425a7950e83b9ffe0aee414f6cd9c3baefd839d4cc7e&amp;scene=21#wechat_redirect" textvalue="SAST-短小精悍的Benchmark" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">SAST-短小精悍的Benchmark</a></p></li><li><p style="padding: 8px 10px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484111&amp;idx=1&amp;sn=9b7ec8374dc22623e0e5e6fa8f268248&amp;chksm=c1bc5b7af6cbd26cb014505a75f6ba37425a7950e83b9ffe0aee414f6cd9c3baefd839d4cc7e&amp;scene=21#wechat_redirect" textvalue="SAST-短小精悍的Benchmark" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2"></a><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484262&amp;idx=1&amp;sn=1f42921be6b114339023643f86f15aa5&amp;chksm=c1bc5ad3f6cbd3c508265e59e457ebabe01171d87bebbe16cc483ed992dd06eef376504ea4c2&amp;scene=21#wechat_redirect" textvalue="GPT-4可自主利用1day漏洞了，0day还会远吗？渗透测试：我慌了！" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">GPT-4可自主利用1day漏洞了，0day还会远吗？渗透测试：我慌了！</a></p></li></ul></div><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;text-wrap: wrap;color: rgb(0, 0, 0);font-family: PingFangSC-regular, sans-serif;letter-spacing: normal;text-align: left;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="padding: 3px 10px;font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">技术交流群</span></h1><ul class="list-paddingleft-1" style="width: 577.422px;letter-spacing: 0.578px;text-wrap: wrap;"><li><p style="padding: 8px 10px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;">社群<strong>大佬云集</strong>，可与各领域大咖<span style="background-color: rgb(255, 251, 0);">面对面交流技术</span></p></li><li><p style="padding: 8px 10px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;">定期做<strong>优质技术分享</strong>，<span style="background-color: rgb(255, 251, 0);">提升自己的技术能力</span></p></li><li><p style="padding: 8px 10px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;">自我提升，不仅限于<strong>技术</strong>，还有<span style="background-color: rgb(255, 251, 0);">圈子</span></p></li><li><p style="padding: 8px 10px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;">与笔者<span style="background-color: rgb(255, 251, 0);">交个朋友</span></p></li></ul><p style="margin-bottom: 0px;padding: 8px 10px;text-indent: 0em;word-spacing: 0em;text-wrap: wrap;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-break: break-word;text-align: left;">点击公众号底部菜单栏“<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;text-align: left;text-wrap: wrap;color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">点击进群</strong></strong>”，扫码<strong>加笔者好友</strong>（备注&#34;<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;text-align: left;text-wrap: wrap;color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">进群</strong></strong>&#34;）</p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;text-wrap: wrap;color: rgb(0, 0, 0);font-family: PingFangSC-regular, sans-serif;letter-spacing: normal;text-align: left;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="padding: 3px 10px;font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">聊点两毛钱的</span></h1><p style="margin-bottom: 0px;padding: 8px 10px;text-indent: 0em;word-spacing: 0em;text-wrap: wrap;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-break: break-word;text-align: left;">能够看到这篇文章，就是我们的缘分，<strong style="font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;text-align: left;text-wrap: wrap;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">坚持输出优质内容</strong></strong>是笔者一直在做的事情。若文章对你有帮助，感谢点个免费的 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;text-align: left;text-wrap: wrap;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">点赞</strong></strong></strong><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="vertical-align: middle;display: inline-block;width: 20px;background-size: cover;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=34c2798b&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2FExpression%2FExpression_80%402x.png"/></strong>、<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;text-align: left;text-wrap: wrap;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">在看</strong></strong><img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="vertical-align: middle;display: inline-block;width: 20px;background-size: cover;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=763711ae&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FLetMeSee.png"/></strong>，<span style="letter-spacing: 0.6px;">大</span><span style="letter-spacing: 0.6px;">家</span><span style="letter-spacing: 0.6px;">的鼓励</span><span style="letter-spacing: 0.6px;">是我最大的动力<img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="vertical-align: middle;display: inline-block;width: 20px;background-size: cover;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=6b4764f4&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FAddoil.png"/></span></p><p style="margin-bottom: 0px;padding: 8px 10px;text-indent: 0em;word-spacing: 0em;text-wrap: wrap;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-break: break-word;text-align: left;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;text-align: left;text-wrap: wrap;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><strong style="font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">关注</strong></strong></strong>我，交个朋友~</p><p class="mp_profile_iframe_wrp"><mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget" data-pluginname="mpprofile" data-id="MzkxNzY3MjE1NA==" data-headimg="http://mmbiz.qpic.cn/sz_mmbiz_png/cdc0h3QF6GZIG0XBUPGw8ENCX2xJKW6sZrx0ZfKcmRf8ttPCKpYscskFTm4sz2cQYQ63M9QZtX6Olrkolib2UFg/0?wx_fmt=png" data-nickname="CodeAnalyzer Ultra" data-alias="CodeAnalyzer" data-signature="分享白盒安全、代码安全相关的技术知识。包括静态代码分析（SAST）、漏洞利用、安全热点资讯等。 致力于打造全面且细致的专栏内容，理论与实践相结合的讲解方式，尽量做到通俗易懂，示例代码可拿来即用，降低学习门槛。" data-from="0"></mp-common-profile></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=a1b16911&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbY78iaAGoSXocyiahOqCDB6xp7trJK4u2bXDrzgibflf1o7DGkqFdDpDbRJsJCfuTSVVY22N7nlzqRg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=d1ef61c7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbY78iaAGoSXocyiahOqCDB6x1mgNiaQykeoFsMDVNLyu4v8b3U6llsMxou4DsMSBeZSUWrgOuicD7HeA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=774aac36&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8YMMErXtfk9HicibicVhy28HP6w1JTrqvO1w74NNsKFupMicbRBhpdzN4qWcVO1cTiaWibfBnLZLtolw8X%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=2516892b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbY78iaAGoSXocyiahOqCDB6xb9GC5BrrbpQAaswBtDLbyvMeK8eXDny1hrXibYFib8pOQ9ictONVOv5Mw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=774aac36&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8YMMErXtfk9HicibicVhy28HP6w1JTrqvO1w74NNsKFupMicbRBhpdzN4qWcVO1cTiaWibfBnLZLtolw8X%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=774aac36&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8YMMErXtfk9HicibicVhy28HP6w1JTrqvO1w74NNsKFupMicbRBhpdzN4qWcVO1cTiaWibfBnLZLtolw8X%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=774aac36&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8YMMErXtfk9HicibicVhy28HP6w1JTrqvO1w74NNsKFupMicbRBhpdzN4qWcVO1cTiaWibfBnLZLtolw8X%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=9bc92cd6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GbY78iaAGoSXocyiahOqCDB6x8BafibicZbhV2XN4vUT6yndyicAO6wqyibibnR2WTOBefAMDibX2icqvV2Qtg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=774aac36&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8YMMErXtfk9HicibicVhy28HP6w1JTrqvO1w74NNsKFupMicbRBhpdzN4qWcVO1cTiaWibfBnLZLtolw8X%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=76899f41&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FYellowdog.png"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=34c2798b&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2FExpression%2FExpression_80%402x.png"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=763711ae&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FLetMeSee.png"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=6b4764f4&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FAddoil.png"/></p>



<p><a href="2247484382">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=9e426cd6&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484382%26idx%3D1%26sn%3D0a9979dcf7de46831cdf79b012feedf1">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 06 May 2024 08:02:00 +0800</pubDate>
    </item>
    <item>
      <title>世界上只有两种程序员：1.懂DevSecOps的 2.其他程序员</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484329&amp;idx=1&amp;sn=2ef2c8d82af4d0caedaf6b239c0339bb</link>
      <description>计算机从业者不能不懂的DevSecOps。</description>
      <content:encoded><![CDATA[<p>
原创 <span>SASTing</span> <span>2024-05-04 09:22</span> <span style="display: inline-block;">上海</span>
</p>

<p>计算机从业者不能不懂的DevSecOps。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=ad67b26a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2Z5C9Rzs1mwaibNzBZqI4c45sjibXFSemJC3R0hHduUwBf6HXwWDl2lTA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;"><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">既然说到<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DevSecOps</strong>，就不得不提<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DevOps</strong>，二者从字面上的差距就是前者多了一个“<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Sec</strong>”，也就是<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全</strong>的意思。显然，<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全</strong>在软件开发流程中越来越重要。在讲DevSecOps之前，我们先来回顾一下<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DevOps</strong>。</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000636" data-ratio="0.387037037037037" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=4d596e47&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2llCv8ZBg4wMcXib49OboXfOLVtVMMPZ48mhIFCbOg6Aau7E1Wiaw6P6Q%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">一、什么是DevOps</span></h1><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DevOps</strong>可拆分为两部分：<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Devlopment</strong>与<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Operations</strong>，也就是开发与运营的组合。该流程促进开发人员和运营人员协作，简化了软件开发流程，以确保更快、更高效地部署。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">开发人员和运营人员共同参与到软件开发的生命周期中，共同管理维护这个流程，<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">团队协作效率</strong>大大提升，避免了很多不必要的沟通壁垒，大大提高了软件的开发效率。</p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">二、DevOps的工作原理</span></h1><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开发和运营</strong>是 DevOps 的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">核心</strong>。这两个团队之间有非常紧密的协作关系，开发流程中的其他模块都要围绕这两个部分设计。此外，高效的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">pipeline</strong>也是 DevOps 发挥作用的关键一环。以下DevOps流程图涵盖了从plan（计划）到release（发版）的所有环节，同时也包括软件<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">交付</strong>流程</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000632" data-ratio="0.6064453125" data-type="jpeg" data-w="1024" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=8b67fdd9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2FQu3s5k5YQ7x8DFrNwhFiaS3VKKyDFicBUOcA1FrpEibn8rhbTD2CDA9A%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">DevOps的核心是<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">敏捷性</strong>，其将开发、测试、管理、运营等角色紧密地结合起来，将软件开发生产力推到的一个新的高度。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">另外，<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自动化</strong>在 DevOps 中起着至关重要的作用，其可实现软件的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">快速一键部署</strong>。<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Jenkins</em>、<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Docker</em> 和 <em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Kubernetes</em> 等工具在开发流程中被广泛使用。</p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">三、什么是DevSecOps</span></h1><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000634" data-ratio="0.5416666666666666" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=4f03448a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2v6HybcHTqCokMhGtQIAyBHf07YPTL4fHyMusjE2qUaRAK4InDkyqPw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DevSecOps</strong> 是<span style="text-decoration: underline;">development, security, operations</span>三个的单词的组合，也就是开发、安全和运营的组合，是在软件和应用程序开发生命周期中<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">持续集成安全</strong>的实践，以确保最佳的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全和性能效率</strong>。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">DevSecOps的核心是将<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全</strong>集成到了SDLC（软件开发生命周期）中的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">每个阶段</strong>。简单来说就是：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(53, 179, 120);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 249, 253);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">软件的安全指标会影响软件的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开发、测试、发版、运营</strong>等各个阶段。举个例子:</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">在软件发布前会经过一系列的安全测试（包括SAST、IAST、DAST等），若发现了一些<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">中高危的安全漏洞</strong>（不满足软件安全性标准），是不允许发布的，必须对漏洞进行修复。</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">软件达到安全标准才可以进行下一个阶段。</p></blockquote><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">四、DevSecOps的理念</span></h1><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">DevSecOps 强调<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">开发、安全和运营团队</strong>之间的协作和集成。其强调安全性不应该是<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">事后的想法</strong>，而应该从项目的最初阶段就考虑。这是一种<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">责任共担的文化</strong>，所有团队共同努力，确保在软件开发生命周期的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">所有阶段</strong>都妥善解决<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全性问题</strong>。DevSecOps 的核心是专注于<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自动化和持续集成</strong>，这将确保快速、一致地实施安全措施。</p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">五、DevSecOps中的Sec怎么保证</span></h1><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">软件开发流程的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Security</strong>检测有很多方法，大家可以先看一下这张图：</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000635" data-ratio="0.6972222222222222" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=2dba4d88&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2PNbCafBS8StuKcdjfIRibSJSfJbAssdGZJYYxQBEk6Eic26XI3Z6w9kw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">各阶段的Securtity通常会涉及以下部分（包括但不限于）：</p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">1.Plan阶段</span></h2><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">威胁建模和风险评估：在设计阶段进行威胁建模，识别潜在风险点，并制定针对性的<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全策略</em></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">安全架构设计：<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">最小权限原则</em>、纵深防御、微服务安全边界设计等</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">安全开发规范：编写和更新<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全编码指南</em>等</p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100000638" data-ratio="0.6574074074074074" data-s="300,640" data-type="png" data-w="1080" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=68a16613&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2U0rtW0TEBQeOqbgJCTsG2hIDmC1ibw4Nk5wL5Eye5w1e2SQKNlRdejg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">2.Code、Build、Test阶段</span></h2><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">SAST  静态代码分析工具（<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">白盒</strong>，分析对象为项目<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">源代码</strong>）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><span style="letter-spacing: 0.04em;word-spacing: 0em;">SCA 软件依赖项扫描（旨在发现软件使用的</span><strong style="letter-spacing: 0.04em;word-spacing: 0em;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">第三方组件</strong><span style="letter-spacing: 0.04em;word-spacing: 0em;">中的安全漏洞，通常以分析</span><strong style="letter-spacing: 0.04em;word-spacing: 0em;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">二进制文件、容器</strong><span style="letter-spacing: 0.04em;word-spacing: 0em;">为主，也可分析</span><strong style="letter-spacing: 0.04em;word-spacing: 0em;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">源码</strong><span style="letter-spacing: 0.04em;word-spacing: 0em;">）</span></p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100000639" data-ratio="0.58683314415437" data-s="300,640" data-type="png" data-w="881" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=93ce6720&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2afkKbaTcfSoQLYjqOrvNTlrbdIX7d1DMymJyNtyfNSlxUOslsy8R6w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">3.Deploye阶段</span></h2><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">权限及配置管理</p></li><ul style="list-style-type: square;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">角色权限管理</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">安全配置管理</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">...</p></li></ul></ul><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">4.Operate阶段</span></h2><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">日志监控及审计</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">IDS/IPS/WAF等安全软件</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">漏洞管理与补丁更新</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">DAST  动态应用安全测试（<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">黑盒</strong>，如：渗透测试）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">IAST 交互式应用安全测试（<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">灰盒</strong>，白盒与黑盒的结合，通常通过<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">插桩</strong>方式实现）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">RASP（Runtime Application Self-Protection）：软件运行时的保护措施</p></li></ul><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100000640" data-ratio="0.3888" data-s="300,640" data-type="png" data-w="625" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=4fc0e7a7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2t4vibZt2k4ZSsKsrOtlm2iahZ6apnJw3RcSzTxE3wVhmNfsaxjqZEib4Q%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">5.Monitor阶段</span></h2><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">监控软件行为（日志分析等）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">SIEM（安全信息和事件管理）：SIEM还可以与其他安全工具集成，支持安全事件响应流程（SOAR）的自动化</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">漏洞扫描：发现漏洞及时修复</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">其他安全工具的监控（IDS/IPS等）</p></li></ul><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">六、DevSecOps的优势</span></h1><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000633" data-ratio="0.4525" data-type="png" data-w="800" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=0514446c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2NGxLpw5gWaJZj7nn9ryicf6fwVUksic7HQ7I5FvUBc8s8ydzsrE3iaw3w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">1.<strong style="background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全左移</strong></span></h2><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">将安全融入开发的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">早期阶段</strong>，而不是等到开发后期或者产品发布之后才进行安全审查。这意味着<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">安全不再是开发流程的附加环节</strong>，而是与开发和运维紧密结合，大大减少了因安全问题引发的延迟和额外成本。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100000643" data-ratio="0.7142857142857143" data-s="300,640" data-type="png" data-w="1008" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=f8fc04a6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa23iaWP7DoE2a5cCvyibS3e6ROAcBgd6opdW727Xiav3sTx5giafGJwzEyuw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">2.效率提升</span></h2><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">通过<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自动化工具</strong>和<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CI/CD</strong>流水线集成安全测试，比如<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">静态代码分析</em>、<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">动态应用安全测试</em>等，可以快速检测和修复安全漏洞，可以在确保软件安全性的前提下，显著提升软件的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">交付速度</strong>。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100000642" data-ratio="0.6570397111913358" data-s="300,640" data-type="jpeg" data-w="277" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=af157dc0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2zFVn29YiaesIjW36EgdTDjD8Wmb2ahf9R4TgB7PkKJFf2LAvTfh1juA%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">3.成本降低</span></h2><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">通过<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">预防性</strong>的安全措施，减少了后期修复安全问题所需<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">的时间和人力成本</strong>。同时，由于安全工作贯穿整个开发过程，可以有效避免因安全问题导致的<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">重构、停机</em>等操作。</p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">4.更快的响应速度</span></h2><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">DevSecOps团队在应对安全事件时拥有更快的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">响应速度</strong>，各团队之间紧密合作，安全贯穿始终，团队能够更快地发现、修复安全问题，对应急事件做出更快更有效的响应。</p><h2 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 22px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">5.安全理念渗透</span></h2><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">在安全团队与开发、运营团队协作的过程中，开发及运营人员的安全意识也会得到显著的提高，这对企业来说是一个<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">隐性的潜在价值</strong>。安全意识的提升有助于应对<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">突发的安全事件</strong>。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100000644" data-ratio="0.5824074074074074" data-s="300,640" data-type="jpeg" data-w="1080" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=54d3f346&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2SA5GibiaxhiaSNwaVBKUCb6QGmoZTC9zQCx3ptdFgUzPhJOBLvicRtTiaTQ%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><p style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;margin-top: 30px;margin-bottom: 15px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;">推荐阅读</p><p style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding: 8px 10px;margin-bottom: 0px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;">代码属性图CPG系列文章<span style="color: rgb(89, 89, 89);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;text-align: left;text-wrap: wrap;">（</span><span style="color: rgb(89, 89, 89);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;text-align: left;text-wrap: wrap;">白盒</span><span style="color: rgb(89, 89, 89);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;text-align: left;text-wrap: wrap;">/静态代码分析</span><span style="color: rgb(89, 89, 89);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;text-align: left;text-wrap: wrap;">方向</span><span style="color: rgb(89, 89, 89);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;text-align: left;text-wrap: wrap;">）</span>：超<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">万字</strong>的详细讲解，文章<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">理论与实践相结合</strong>，示例代码可<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">拿来即用</strong>，<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">通俗易懂</strong>，这样的文章你爱了吗！<img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="display: inline-block;width: 20px;vertical-align: middle;background-size: cover;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=76899f41&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FYellowdog.png"/> </p><ul class="list-paddingleft-1" style="list-style-type: disc;"><li><p style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding: 8px 10px;margin-bottom: 0px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247483879&amp;idx=1&amp;sn=7ae5a6526787f114c28ea77645273081&amp;chksm=c1bc5852f6cbd144ea341e039d47e93543fd6d7bd3e99fc80834458b385ca45fb151829a46da&amp;scene=21#wechat_redirect" textvalue="抽丝剥茧代码属性图CPG-第一弹：CPG介绍" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">抽丝剥茧代码属性图CPG-第一弹：CPG介绍</a></p></li><li><p style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding: 8px 10px;margin-bottom: 0px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484091&amp;idx=1&amp;sn=8d669ff850a2ce4b07f95aae2abe084d&amp;chksm=c1bc5b0ef6cbd218b48a4074b452fe81563899c98e8f00fffdf61587ec0a86b61bd1afbe5a66&amp;scene=21#wechat_redirect" textvalue="抽丝剥茧代码属性图CPG-第二弹：CPG中的DFG-1" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">抽丝剥茧代码属性图CPG-第二弹：CPG中的DFG-1</a></p></li><li><p style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding: 8px 10px;margin-bottom: 0px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484111&amp;idx=1&amp;sn=9b7ec8374dc22623e0e5e6fa8f268248&amp;chksm=c1bc5b7af6cbd26cb014505a75f6ba37425a7950e83b9ffe0aee414f6cd9c3baefd839d4cc7e&amp;scene=21#wechat_redirect" textvalue="SAST-短小精悍的Benchmark" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">SAST-短小精悍的Benchmark</a></p></li></ul><p style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding: 8px 10px;margin-bottom: 0px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;"><a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484169&amp;idx=1&amp;sn=ac94ca020fdd67da7b3bbb9879db1bc3&amp;chksm=c1bc5abcf6cbd3aa16500c17fd111091718094f635e0a8ee9a52b48f73a07f6148d0ef963278&amp;scene=21#wechat_redirect" textvalue="抽丝剥茧代码属性图CPG-第四弹：CPG中的DFG-3" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2"><span style="color: rgb(89, 89, 89);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;text-align: left;text-wrap: wrap;background-color: rgb(255, 251, 0);">专栏持续更新中...</span></a></p><p style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;margin-top: 30px;margin-bottom: 15px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;">技术交流群</p><ul class="list-paddingleft-1" style="list-style-type: disc;"><li><p style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding: 8px 10px;margin-bottom: 0px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;">社群<strong>大佬云集</strong>，可与各领域大咖<span style="background-color: rgb(255, 251, 0);">面对面交流技术</span></p></li><li><p style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding: 8px 10px;margin-bottom: 0px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;">定期做做<strong>优质技术分享</strong>，<span style="background-color: rgb(255, 251, 0);">提升自己的技术能力</span></p></li><li><p style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding: 8px 10px;margin-bottom: 0px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;">自我提升，不仅限于<strong>技术</strong>，还有<span style="background-color: rgb(255, 251, 0);">圈子</span></p></li><li><p style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding: 8px 10px;margin-bottom: 0px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;">与笔者<span style="background-color: rgb(255, 251, 0);">交个朋友</span></p></li></ul><p style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding: 8px 10px;margin-bottom: 0px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;">点击公众号底部菜单栏“<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">点击进群</strong>”，扫码<strong>加笔者好友</strong>（备注&#34;<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">进群</strong>&#34;）</p><p style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;margin-top: 30px;margin-bottom: 15px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;">聊点两毛钱的</p><p style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding: 8px 10px;margin-bottom: 0px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;">能够看到这篇文章，就是我们的缘分，<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">坚持输出优质内容</strong>是笔者一直在做的事情。若文章对你有帮助，感谢点个免费的 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">点赞<img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="display: inline-block;width: 20px;vertical-align: middle;background-size: cover;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=34c2798b&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2FExpression%2FExpression_80%402x.png"/></strong>、<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">在看<img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="display: inline-block;width: 20px;vertical-align: middle;background-size: cover;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=763711ae&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FLetMeSee.png"/></strong>，<span style="color: rgb(89, 89, 89);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;text-align: left;text-wrap: wrap;">大</span><span style="color: rgb(89, 89, 89);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;text-align: left;text-wrap: wrap;">家</span><span style="color: rgb(89, 89, 89);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;text-align: left;text-wrap: wrap;">的鼓励</span><span style="color: rgb(89, 89, 89);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 15px;letter-spacing: 0.6px;text-align: left;text-wrap: wrap;">是我最大的动力<img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="display: inline-block;width: 20px;vertical-align: middle;background-size: cover;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=6b4764f4&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FAddoil.png"/></span></p><p style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding: 8px 10px;margin-bottom: 0px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;word-spacing: 0em;word-break: break-word;text-align: left;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">关注</strong>我，交个朋友~</p><p class="mp_profile_iframe_wrp"><mp-common-profile class="custom_select_card mp_profile_iframe mp_common_widget" data-pluginname="mpprofile" data-id="MzkxNzY3MjE1NA==" data-headimg="http://mmbiz.qpic.cn/sz_mmbiz_png/cdc0h3QF6GZIG0XBUPGw8ENCX2xJKW6sZrx0ZfKcmRf8ttPCKpYscskFTm4sz2cQYQ63M9QZtX6Olrkolib2UFg/0?wx_fmt=png" data-nickname="CodeAnalyzer Ultra" data-alias="CodeAnalyzer" data-signature="分享白盒安全、代码安全相关的技术知识。包括静态代码分析（SAST）、漏洞利用、安全热点资讯等。 致力于打造全面且细致的专栏内容，理论与实践相结合的讲解方式，尽量做到通俗易懂，示例代码可拿来即用，降低学习门槛。" data-from="0"></mp-common-profile></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=55601097&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2llCv8ZBg4wMcXib49OboXfOLVtVMMPZ48mhIFCbOg6Aau7E1Wiaw6P6Q%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=ee4b94fd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2FQu3s5k5YQ7x8DFrNwhFiaS3VKKyDFicBUOcA1FrpEibn8rhbTD2CDA9A%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=e5c66904&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2v6HybcHTqCokMhGtQIAyBHf07YPTL4fHyMusjE2qUaRAK4InDkyqPw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=4a56608e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2PNbCafBS8StuKcdjfIRibSJSfJbAssdGZJYYxQBEk6Eic26XI3Z6w9kw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=e66cbf7f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2U0rtW0TEBQeOqbgJCTsG2hIDmC1ibw4Nk5wL5Eye5w1e2SQKNlRdejg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=9654d3ae&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2afkKbaTcfSoQLYjqOrvNTlrbdIX7d1DMymJyNtyfNSlxUOslsy8R6w%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=93c88281&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2t4vibZt2k4ZSsKsrOtlm2iahZ6apnJw3RcSzTxE3wVhmNfsaxjqZEib4Q%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=2b45f91c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2NGxLpw5gWaJZj7nn9ryicf6fwVUksic7HQ7I5FvUBc8s8ydzsrE3iaw3w%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=e074d072&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa23iaWP7DoE2a5cCvyibS3e6ROAcBgd6opdW727Xiav3sTx5giafGJwzEyuw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=59c0c122&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2zFVn29YiaesIjW36EgdTDjD8Wmb2ahf9R4TgB7PkKJFf2LAvTfh1juA%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=84d910ff&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GYW4PQYD5sNfnichKY8xCsa2SA5GibiaxhiaSNwaVBKUCb6QGmoZTC9zQCx3ptdFgUzPhJOBLvicRtTiaTQ%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=76899f41&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FYellowdog.png"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=34c2798b&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2FExpression%2FExpression_80%402x.png"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=763711ae&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FLetMeSee.png"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=6b4764f4&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FAddoil.png"/></p>



<p><a href="2247484329">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=18a4dda4&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484329%26idx%3D1%26sn%3D2ef2c8d82af4d0caedaf6b239c0339bb">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Sat, 04 May 2024 09:22:00 +0800</pubDate>
    </item>
    <item>
      <title>GPT-4可自主利用1day漏洞了，0day还会远吗？渗透测试：我慌了！</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484262&amp;idx=1&amp;sn=1f42921be6b114339023643f86f15aa5</link>
      <description>GPT-4已具备自主利用漏洞的能力。</description>
      <content:encoded><![CDATA[<p>
原创 <span>SASTing</span> <span>2024-04-30 08:00</span> <span style="display: inline-block;">上海</span>
</p>

<p>GPT-4已具备自主利用漏洞的能力。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=3f857151&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GaDejq4TQTQ61gYHr9FGCSzibh09q2GhTFKxfPIvYKfesajvGnFF2ptIhyjMCCjmlVpeqwrc7sxic9g%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;background-position: 0% 0%;background-repeat: no-repeat no-repeat;"><h1 data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">研究发现：GPT-4 可自主利用 87% 的1day漏洞</span></h1><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">伊利诺伊大学的研究人员发现，<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">GPT-4</strong> 可根据 NIST 公布的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">漏洞描述信</strong>息，通过<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">推理</strong>、<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自证</strong>等方式成功利用 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">87%</strong> 的漏洞。</p><p style="color: rgb(0, 0, 0);font-size: 16px;text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-imgfileid="100000600" data-ratio="0.562962962962963" data-s="300,640" data-type="jpeg" data-w="1080" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=101b1489&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GaDejq4TQTQ61gYHr9FGCSzONcR7cpxBDRTuERdibk9xYibJHUSZhXYht2osvH2xFNxncicoia0tAibQyw%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">研究人员表示：</p><blockquote data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top-width: 3px;border-top-style: none;border-color: rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4) rgb(53, 179, 120);border-bottom-width: 3px;border-bottom-style: none;border-right-width: 3px;border-right-style: none;border-radius: 0px;background-image: none;background-size: auto;background-attachment: scroll;background-origin: padding-box;background-clip: border-box;background-color: rgb(251, 249, 253);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;background-position: 0% 0%;background-repeat: no-repeat no-repeat;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">大语言模型 （LLM） 的<em style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">代理能力</em>越来越强。相较于GPT-4，其他模型在<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">工具使用能力</strong>方面差得多。</p></blockquote><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">研究结果表明，GPT-4 可以<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自主检测和利用</strong>可能被渗透工具忽略的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">1day</strong>漏洞。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">美国加州大学洛杉矶分校</em>助理教授 <em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Daniel Kang</em> 希望他的研究成果能用于<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">网络安全防御</strong>，但是，GPT-4的这种能力同时也会被<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">恶意利用</strong>。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Daniel Kang</em>表示 :</p><blockquote data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top-width: 3px;border-top-style: none;border-color: rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4) rgb(53, 179, 120);border-bottom-width: 3px;border-bottom-style: none;border-right-width: 3px;border-right-style: none;border-radius: 0px;background-image: none;background-size: auto;background-attachment: scroll;background-origin: padding-box;background-clip: border-box;background-color: rgb(251, 249, 253);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;background-position: 0% 0%;background-repeat: no-repeat no-repeat;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">我认为，<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">1day</strong>漏洞被利用的门槛会随着 <strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">LLM 成本</strong>的降低而大幅下降。在这之前，利用 <strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">1day</strong> 漏洞必须通过<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">人为手动</strong>的方式。如果 LLM 足够便宜，这个过程很可能会变得更加<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自动化</strong>。</p></blockquote><h1 data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">GPT-4 的自主检测和利用漏洞能力有多强</span></h1><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">GPT-4 具备<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自主利用 1day</strong> 漏洞的能力。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-imgfileid="100000607" data-ratio="0.75" data-s="300,640" data-type="jpeg" data-w="480" style="color: rgb(0, 0, 0);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 16px;letter-spacing: normal;text-align: center;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=7092cd62&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GaDejq4TQTQ61gYHr9FGCSz63D7fV0wVQt8FQicasNwsOjQoOrk7N7FjiaUQxiaka39TJ9S8qr0KwG5g%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">GPT-4 代理</strong>能够自主利用 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Web</strong> 和 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">非Web</strong> 的 1day 漏洞，其甚至可以<span style="text-decoration:underline;">利用模型知识库截止日期之后披露的漏洞</span>。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Daniel Kang</em>表示：</p><blockquote data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top-width: 3px;border-top-style: none;border-color: rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4) rgb(53, 179, 120);border-bottom-width: 3px;border-bottom-style: none;border-right-width: 3px;border-right-style: none;border-radius: 0px;background-image: none;background-size: auto;background-attachment: scroll;background-origin: padding-box;background-clip: border-box;background-color: rgb(251, 249, 253);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;background-position: 0% 0%;background-repeat: no-repeat no-repeat;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">在之前的实验中，我们发现GPT-4在<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">制定计划</strong> 并 <strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">实施计划</strong>方面表现非常出色，<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">GPT-4代理可实时访问互联网</strong>，可以及时收集披露的<em style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">漏洞描述信息与利漏洞用方式</em>等数据。</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">我们所说的“autonomous”的意思是：GPT-4可以<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自主制定</strong>利用漏洞的方案(计划)，这一项能力非常强大，<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">因为从漏洞描述到真正地利用该漏洞，这中间要做的事还有很多</strong>。</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">许多真实环境中存在的漏洞已经被公布了，如 <strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">ACIDRain</strong>（造成了超过 5000 万美元的实际损失），然而，想要真正利用这些漏洞<em style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">并非易事</em>。</p></blockquote><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">在实验的 15 个 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">1day</strong> 漏洞中，只有两个无法利用：</p><ul data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">Iris XSS</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">Hertzbeat RCE</p></div></li></ul><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">作者推测原因：</p><ul data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">Iris Web应用难以预览</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">Hertzbeat RCE 的中文描述很难用英文去理解</p></li></ul><h1 data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">GPT-4 无法自主利用 0day 漏洞</span></h1><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><img class="rich_pages wxw-img js_insertlocalimg" data-imgfileid="100000608" data-ratio="0.5231481481481481" data-s="300,640" data-type="png" data-w="1080" style="color: rgb(0, 0, 0);font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 16px;letter-spacing: normal;text-align: center;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=ad85fa8b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDejq4TQTQ61gYHr9FGCSzF3okVibgpSVeEHtw7cDrVGY9ur4S4B4Gdvrice4K5LgFicGxj2icibClMcA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><span style="color: rgb(89, 89, 89);font-size: 15px;">GPT-4 代理通过<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">漏洞描述信息</strong>去利用漏洞的成功率高达 </span><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><span>87%</span></strong><span style="color: rgb(89, 89, 89);font-size: 15px;">，但在不提供漏洞描述时，成功率只有 </span><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><span>7%</span></strong><span style="color: rgb(89, 89, 89);font-size: 15px;">，这表明GPT-4目前还不能利用 </span><strong style="color: rgb(53, 179, 120);font-size: 15px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-size: auto;width: auto;height: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;background-position: 0% 0%;background-repeat: no-repeat no-repeat;">0day</strong><span style="color: rgb(89, 89, 89);font-size: 15px;"> 漏洞。研究人员表示，这一结果表明：</span></p><blockquote data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top-width: 3px;border-top-style: none;border-color: rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4) rgb(53, 179, 120);border-bottom-width: 3px;border-bottom-style: none;border-right-width: 3px;border-right-style: none;border-radius: 0px;background-image: none;background-size: auto;background-attachment: scroll;background-origin: padding-box;background-clip: border-box;background-color: rgb(251, 249, 253);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;background-position: 0% 0%;background-repeat: no-repeat no-repeat;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">LLM <strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">利用</strong>漏洞的能力远远超过<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">发现</strong>漏洞的能力。</p></blockquote><h1 data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">成本:GPT-4 vs. 渗透人员</span></h1><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">研究人员表示：</p><blockquote data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top-width: 3px;border-top-style: none;border-color: rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4) rgb(53, 179, 120);border-bottom-width: 3px;border-bottom-style: none;border-right-width: 3px;border-right-style: none;border-radius: 0px;background-image: none;background-size: auto;background-attachment: scroll;background-origin: padding-box;background-clip: border-box;background-color: rgb(251, 249, 253);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;background-position: 0% 0%;background-repeat: no-repeat no-repeat;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">GPT-4 成功利用每个漏洞的平均成本为 <strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">8.8 美元</strong>；而对于一名专业渗透测试人员，每个漏洞的利用成本为<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">25美元</strong>（花费半小时）。</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">GPT-4的相关运行成本会逐渐降低，因为GPT-3.5的成本在短短一年内就下降了<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">三倍之多</strong>。</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">LLM相对于技术人员，具备一定的<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">可扩展性</strong>。</p></blockquote><h1 data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">GPT-4 自主利用漏洞需要频繁试错</span></h1><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">大部分漏洞需要<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">多次操作</strong>才能被成功利用，有的多达 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">100 次</strong>。有趣的是，<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">平均操作次数与是否获取漏洞描述没有必然联系</em>，实验证明GPT-4在利用<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">1day</strong>和<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">0day</strong>时进行的操作次数相差不大。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Daniel Kang</em>表示：</p><blockquote data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top-width: 3px;border-top-style: none;border-color: rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4) rgb(53, 179, 120);border-bottom-width: 3px;border-bottom-style: none;border-right-width: 3px;border-right-style: none;border-radius: 0px;background-image: none;background-size: auto;background-attachment: scroll;background-origin: padding-box;background-clip: border-box;background-color: rgb(251, 249, 253);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;background-position: 0% 0%;background-repeat: no-repeat no-repeat;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">若没有 CVE 描述信息，GPT-4 更容易放弃，因为它不知道该走哪条路。</p></blockquote><h1 data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">如何测试 LLM 的漏洞利用能力</span></h1><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">研究人员首先从 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CVE 数据库</strong>和<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">学术论文</strong>中收集了一个基准数据集，其中包含 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">15 个</strong>真实存在的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">1day</strong>漏洞。这些可复现的开源漏洞包括<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Web漏洞</em>、<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">容器漏洞</em>和<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Python 缺陷包</em>，其中有一半以上风险等级为 “<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">high</strong> ”或 “<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">critical</strong>”。</p><figure data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000594" data-ratio="0.6470588235294118" data-type="png" data-w="561" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=d2ec3156&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDejq4TQTQ61gYHr9FGCSzlBU0q2KDEj6HxjibnLGPiaNkff9gprIH8cpVeibz7GCfNQO5SmGyicPJ8Q%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">接下来，他们开发了一个基于 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">ReAct</strong> 自动化框架的 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">LLM 代理</strong>，这意味着它可以<span style="text-decoration:underline;">推理下一步行动、构建行动命令、使用适当的工具执行命令</span>，并在<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">交互式</strong>操作过程中重复执行命令。开发人员只需编写 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">91 行代码</strong>就能创建代理。</p><figure data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000593" data-ratio="0.4" data-type="png" data-w="770" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=2a883847&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDejq4TQTQ61gYHr9FGCSzTejNyfJAibAWlJFOFmbLu9UbS3cuP6iaZfiayq4jQkt4QrROAGic8cn2RQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><span>LLM代理</span></strong><span style="color: rgb(89, 89, 89);font-size: 15px;">不仅支持GPT-4，还支持以下模型：</span></p><ul data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">GPT-3.5.</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">OpenHermes-2.5-Mistral-7B.</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">Llama-2 Chat (70B).</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">LLaMA-2 Chat (13B).</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">LLaMA-2 Chat (7B).</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">Mixtral-8x7B Instruct.</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">Mistral (7B) Instruct v0.2.</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">Nous Hermes-2 Yi 34B.</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">OpenChat 3.5.</p></li></ul><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">该代理配备了<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">自主利用系统漏洞</strong>所需的工具，如<span style="text-decoration:underline;">Web浏览器、终端、Web搜索、文件创建和编辑功能以及代码解释器</span>等。它还可以爬取 CVE 数据库的漏洞描述信息。</p><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><span style="color: rgb(89, 89, 89);font-size: 15px;">此外，研究人员为每个代理提供了详细的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">提示信息</strong>，不断探索利用 15 个漏洞的</span><span style="color: rgb(89, 89, 89);font-size: 15px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><span><span>不同方法</span></span></strong></span><span style="color: rgb(89, 89, 89);font-size: 15px;">，提示信息包含 1056 个 &#34;</span><strong style="color: rgb(53, 179, 120);font-size: 15px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-size: auto;width: auto;height: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;background-position: 0% 0%;background-repeat: no-repeat no-repeat;">tokens</strong><span style="color: rgb(89, 89, 89);font-size: 15px;">&#34;。</span></p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">代理的性能衡量标准包含以下几个方面：</p><ul data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">输入和输出的token数量</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">漏洞利用成功率</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">漏洞复杂性</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">经济成本</p></li></ul><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">为了模拟<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">0day</strong>环境，研究人员在<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">不提供漏洞信息</strong>的情况下进行多次实验，代理既要发现漏洞，又要成功利用漏洞。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">此外，使用 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">ZAP</strong> 和 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Metasploit</strong> 工具进行对比实验，向工具输入相同的漏洞样本，对比传统漏扫工具与LLM的能力。</p><p style="color: rgb(0, 0, 0);font-size: 16px;text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-imgfileid="100000603" data-ratio="0.5" data-s="300,640" data-type="png" data-w="750" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=efb65a09&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDejq4TQTQ61gYHr9FGCSzQC4L4nGcRnmTl3xtWmc4dOepcEyEyIibB52pMFYExML2G6LicyIB0ZaA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">最终，研究人员发现：</p><blockquote data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top-width: 3px;border-top-style: none;border-color: rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4) rgb(53, 179, 120);border-bottom-width: 3px;border-bottom-style: none;border-right-width: 3px;border-right-style: none;border-radius: 0px;background-image: none;background-size: auto;background-attachment: scroll;background-origin: padding-box;background-clip: border-box;background-color: rgb(251, 249, 253);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;background-position: 0% 0%;background-repeat: no-repeat no-repeat;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">只有基于 GPT-4 的 LLM 代理才能发现并利用<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">1day</strong>漏洞，其他 LLM 和两个漏扫工具的成功率都为 <strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">0%</strong>。</p></blockquote><h1 data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">为何要测试 LLMs 的漏洞利用能力</span></h1><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li style="color: rgb(0, 0, 0);font-size: 16px;"><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">在此之前，人们没有对 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">LLM自主利用1day漏洞</strong>的能力做系统性的研究。</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;line-height: 1.8em;letter-spacing: 0.04em;"><p style="line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><span style="color: rgb(89, 89, 89);font-size: 15px;">CVE披露的漏洞信息有很大一部分是</span><strong style="color: rgb(53, 179, 120);font-size: 15px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-size: auto;width: auto;height: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;background-position: 0% 0%;background-repeat: no-repeat no-repeat;">不包含exp</strong><span style="color: rgb(89, 89, 89);font-size: 15px;">的，渗透测试人员需要自己去研究漏洞原理从而真正利用或者修复漏洞，该项研究旨在探索LLM</span></p><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;"><span>自主实现</span></strong></p><span style="color: rgb(89, 89, 89);font-size: 15px;">这一过程的可行性。</span></div></li></ul><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Daniel Kang</em>表示：</p><blockquote data-tool="mdnice编辑器" style="color: rgb(0, 0, 0);font-size: 16px;margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top-width: 3px;border-top-style: none;border-color: rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4) rgb(53, 179, 120);border-bottom-width: 3px;border-bottom-style: none;border-right-width: 3px;border-right-style: none;border-radius: 0px;background-image: none;background-size: auto;background-attachment: scroll;background-origin: padding-box;background-clip: border-box;background-color: rgb(251, 249, 253);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;background-position: 0% 0%;background-repeat: no-repeat no-repeat;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">我们实验室关注的是包括代理在内的人工智能技术<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">在各领域中具备哪些能力</strong>，这些能力是否可以真正运用到生产或生活环境中。</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">网络安全的重要性显而易见，因此，我们最近把研究重点放在了<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">网络安全</strong>上。</p></blockquote></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=a91ec876&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GaDejq4TQTQ61gYHr9FGCSzONcR7cpxBDRTuERdibk9xYibJHUSZhXYht2osvH2xFNxncicoia0tAibQyw%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=3f67eb1c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GaDejq4TQTQ61gYHr9FGCSz63D7fV0wVQt8FQicasNwsOjQoOrk7N7FjiaUQxiaka39TJ9S8qr0KwG5g%2F640%3Fwx_fmt%3Djpeg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=e16e825c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDejq4TQTQ61gYHr9FGCSzF3okVibgpSVeEHtw7cDrVGY9ur4S4B4Gdvrice4K5LgFicGxj2icibClMcA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=8389cb9d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDejq4TQTQ61gYHr9FGCSzlBU0q2KDEj6HxjibnLGPiaNkff9gprIH8cpVeibz7GCfNQO5SmGyicPJ8Q%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=abe1adf5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDejq4TQTQ61gYHr9FGCSzTejNyfJAibAWlJFOFmbLu9UbS3cuP6iaZfiayq4jQkt4QrROAGic8cn2RQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=2f878dee&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaDejq4TQTQ61gYHr9FGCSzQC4L4nGcRnmTl3xtWmc4dOepcEyEyIibB52pMFYExML2G6LicyIB0ZaA%2F640%3Fwx_fmt%3Dpng"/></p>



<p><a href="2247484262">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=396a3fe7&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484262%26idx%3D1%26sn%3D1f42921be6b114339023643f86f15aa5">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Tue, 30 Apr 2024 08:00:00 +0800</pubDate>
    </item>
    <item>
      <title>白盒安全-常量传播还能这么搞？</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484259&amp;idx=1&amp;sn=128b706a657ae769cc584d9b16715cf2</link>
      <description>CPG是如何通过遍历DFG的方式实现常量传播的，虽然其能力有限，但是对我们如何使用DFG有参考意义。</description>
      <content:encoded><![CDATA[<p>
原创 <span>SASTing</span> <span>2024-04-28 08:30</span> <span style="display: inline-block;">上海</span>
</p>

<p>CPG是如何通过遍历DFG的方式实现常量传播的，虽然其能力有限，但是对我们如何使用DFG有参考意义。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=8ac1e4d0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrgeuwumH1Ljhic691Dx8RkFarL4hvNc4hM6J2E8CLPslFDPXrekwmpGHg%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: PingFangSC-regular, sans-serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;"><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">引言</span></h1><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">CPG中DFG（Data Flow Graph）的构建已经讲述完毕了，大家可能会有个疑惑，为什么要如此长篇大论地介绍DFG，有这个必要吗？答案是肯定的，原因如下：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">DFG（Data Flow Graph）是程序分析的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">基础</strong>，在任何程序分析框架中都是非常重要的，其很大程度上影响分析结果的精度，CPG中当然也不例外</p></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">CPG框架通过遍历DFG的方式解决了很多通用型分析，如<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ValueEvaluator</p>、<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Out of Bound Check</p>、<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Null Pointer Check</p>等</div></li></ul><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">所以，为了<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">趁热打铁</strong>，让大家对DFG的运用更加熟练，本文就针对CPG框架中自带的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">基于DFG实现</strong>的<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ValueEvaluator</p>（<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">常量传播</strong>）做分析。</div><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);font-family: PingFangSC-regular, sans-serif;letter-spacing: normal;text-align: left;text-wrap: wrap;border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="padding-top: 8px;padding-bottom: 8px;letter-spacing: 0em;text-indent: 0em;outline: 0px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;visibility: visible;">读后有收获的同学可以点个赞哦<img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="vertical-align: middle;outline: 0px;color: rgb(0, 0, 0);display: inline-block;background-size: cover;width: 20px !important;visibility: visible !important;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=02699b61&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FSocial.png"/>，要是能关注一下公众号就更好啦<img data-ratio="1" data-w="128" class="rich_pages wxw-img" style="vertical-align: middle;outline: 0px;color: rgb(0, 0, 0);display: inline-block;background-size: cover;width: 20px !important;visibility: visible !important;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=9049d882&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2FExpression%2FExpression_43%402x.png"/>~大家的鼓励是笔者硬肝技术的动力！<img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="vertical-align: middle;outline: 0px;color: rgb(0, 0, 0);display: inline-block;background-size: cover;width: 20px !important;visibility: visible !important;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=6b4764f4&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FAddoil.png"/>非常感谢大家~<img class="rich_pages wxw-img" data-ratio="1" data-w="128" style="vertical-align: middle;outline: 0px;color: rgb(0, 0, 0);display: inline-block;background-size: cover;width: 20px !important;visibility: visible !important;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=7d2b8805&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2FExpression%2FExpression_93%402x.png"/></p><p style="padding-top: 8px;padding-bottom: 8px;letter-spacing: 0em;text-indent: 0em;outline: 0px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;visibility: visible;">文中<strong style="outline: 0px;color: rgb(22, 94, 202);background-image: none;background-position: 0% 0%;background-size: auto;background-repeat: no-repeat;background-attachment: scroll;background-origin: padding-box;background-clip: border-box;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;visibility: visible;">有错误的地方欢迎大家<strong style="outline: 0px;background-image: none;background-position: 0% 0%;background-size: auto;background-repeat: no-repeat;background-attachment: scroll;background-origin: padding-box;background-clip: border-box;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;visibility: visible;">私信/</strong>评论区指正</strong>。同时也欢迎大家将自己的想法发布在评论区，希望大家能够畅所欲言，共同进步~</p><p style="padding-top: 8px;padding-bottom: 8px;letter-spacing: 0em;text-indent: 0em;outline: 0px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;visibility: visible;"><strong style="letter-spacing: 0em;text-indent: 0em;word-spacing: 0em;background-image: none;background-position: 0% 0%;background-size: auto;background-repeat: no-repeat;background-attachment: scroll;background-origin: padding-box;background-clip: border-box;outline: 0px;color: rgb(22, 94, 202);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;visibility: visible;">欢迎点击公众号菜单栏&#34;点击进群&#34;，与大佬一同交流技术。</strong></p></blockquote><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">1.介绍</span></h1><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ValueEvaluator</p>值求解器，此处可以理解为<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">常量传播</strong>。</div><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">The value evaluator tries to evaluate the (constant) value of an Expression basically by following DFG edges until we reach a Literal. It also evaluates simple binary operations, such as arithmetic operations, as well as simple string concatenations.</p><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">The result can be retrieved in two ways:</p><ul style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">The result of the resolve function is a JVM object which represents the constant value</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">Furthermore, after the execution of evaluateInternal, the latest evaluation path can be retrieved in the path property of the evaluator.</p></li></ul><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">It contains some advanced mechanics such as resolution of values of arrays, if they contain literal values. Furthermore, its behaviour can be adjusted by implementing the cannotEvaluate function, which is called when the default behaviour would not be able to resolve the value. This way, language specific features such as string formatting can be modelled.</p></blockquote><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">解释：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><div style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ValueEvaluator</p>通过沿<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DFG边跟踪</strong>，直至抵达<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Literal（字面量，也就是常量）</strong>，来计算<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Expression</p>的值。它还能处理简单的二元操作，如算术运算，以及简单的字符串连接。</div><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">获取计算结果有两种方式：</p><ul style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;color: rgb(0, 0, 0);" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">resolve</p>方法返回一个代表该常量值的JVM对象</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">在<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">evaluateInternal</p>方法执行后，可以通过<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">evaluator</p>的<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">path</p>属性获取到当前求值路径</div></li></ul><div style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">另外，<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ValueEvaluator</p>还包含一些高级机制，例如：可以解析<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">数组的常量值</strong>。此外，若解析常量失败，可以通过实现<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">cannotEvaluate</p>函数来自定义一些方法行为。这样，就可以模拟诸如<strong style="color: rgb(22, 94, 202);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">字符串格式化</strong>等语言特定特性。</div></blockquote><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">2.实现</span></h1><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">2.1.常量传播算法</span></h2><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">CPG中的<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ValueEvaluator</p>（常量传播）是通过遍历DFG的方式实现的。</div><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">首先看其核心方法<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">evaluate</p></div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000485" data-ratio="0.1814814814814815" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=8d8c6288&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrgaTRb0QwSpYXdvHEGDJKmYp4g3jUpajImPNaQZiaoOG50JZDasnaMHqA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">可以看到，其调用了<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">evaluateInternal</p>方法</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000489" data-ratio="0.6962962962962963" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=09239a35&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrgPGznmJzz3d4tooX95xRN0HibMxzicicqbibGL6ZUuQpJUJwM18BuKUKrvg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">evaluateInternal</p>方法针对不同类型的节点做了不同的处理，若不支持的节点类型默认调用<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">cannotEvaluate</p>方法。</div><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">显而易见的是，解决问题的整体思路是采用<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">递归</strong>的方式，每次递归进去以后，就把当前<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">正在解析的节点</strong>加到<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">path</p>属性中，递归的<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">终止条件</strong>就是：</div><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;font-size: 12px;">node <span style="color: #c678dd;line-height: 26px;">is</span> Literal&lt;*&gt;</p></pre><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">也就是递归地进行常量传播，<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">直到遇到常量节点为止</strong>，然后直接返回节点的<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">value</p>值</div><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">2.2.判定节点是否为常量</span></h2><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">2.2.1.VariableDeclaration</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">VariableDeclaration</p>变量声明节点直接将初始化值<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">initializer</p>作为递归参数传递</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000486" data-ratio="0.14074074074074075" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=d62b30e3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrgRB7UKO01iaP0c7XU3TdYFF6lIsx7Orn9HZuMeoVjrZsshxIRte3ZOOg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><div style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">tips:这里应该很好理解，一个变量声明的常量值自然就是其初始化赋予的常量值；同时还会传递一个<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">depth+1</p>参数，表示当前递归的深度，这里是为了控制递归的深度，防止影响算法性能</div></blockquote><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">2.2.2.Reference</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Reference</p>引用类型的节点，调用<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">handleReference</p>方法</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000488" data-ratio="0.46944444444444444" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=6d3ff1ff&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrgMaPp7hLXHo6ibfhQPGBQPE91Oz4icaUI5IzPGd1xicNI5pCpBPbRiawicGQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">可以看到，在处理引用类型节点时，要先对引用的<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">prevDFG</p>做<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">filter</p>操作，<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">filter</p>操作主要是针对<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">UnaryOperator</p>（<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">++</p>, <p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">--</p>），这种情况针对引用节点会构建<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">两条DFG边</strong>（可回顾：<a target="_blank" href="http://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484132&amp;idx=1&amp;sn=5b29442ae2d35172409a0579ba2eefb8&amp;chksm=c1bc5b51f6cbd2471d0a89873943d824fe9d2bfc5a26623b1899378da1bc314973a9e4a26083&amp;scene=21#wechat_redirect" textvalue="抽丝剥茧代码属性图CPG-第三弹：CPG中的DFG-2" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">抽丝剥茧代码属性图CPG-第三弹：CPG中的DFG-2</a>），需要把从<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">reference</p>节点出去的DFG边过滤掉，以<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">减少递归次数</strong>。</div><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">对<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">prevDFG</p>过滤完后，只处理<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">size</p>为 1 的情况，将<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">prevDFG.first()</p>作为递归参数传递，其他<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">size</p>不为 1 的情况在<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">MultiValueEvaluator</p>中有支持，此处不详细展开讲解，感兴趣的童鞋可以直接撸CPG源码~</div><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">2.2.3.UnaryOperator</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">UnaryOperator</p>一元操作符节点，调用<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">handleUnaryOp</p>方法</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000487" data-ratio="0.7601851851851852" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=6b5746e9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrgzQkCACZmCePHibUdDTXlbuw9lUm8Hdfgaql33P0K66AkrviaB7ohxtiaA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">可以看到，<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">handleUnaryOp</p>方法关注表达式的输入<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">input</p>，若<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">input</p>为数值类型<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">Number</p>，直接将<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">input</p>作为递归参数传递。</div><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">2.2.4.BinaryOperator</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">BinaryOperator</p>二元操作符，调用<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">handleBinaryOperator</p>方法</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000492" data-ratio="0.3888888888888889" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=a000eb90&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrgB69sMEEdmmgCd7ibX3AiasubCbf674x3FNBsmgrHLtD4KGtKb0DVapgA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">handleBinaryOperator</p>方法分别对<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">lhs</p>与<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">rhs</p>求值，然后再调用<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">computeBinaryOpEffect</p>方法，<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">computeBinaryOpEffect</p>方法就是真正地去执行<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">operator</p>，计算表达式的最终值。</div><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">2.2.5.SubscriptExpression</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">SubscriptExpression</p>下标表达式，调用<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">handleSubscriptExpression</p>方法</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000494" data-ratio="0.8342592592592593" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=a2fc12cb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrg2I4RcFDRNT4gGDkyla3ibHZx0ob9P6s2quU7Zj38Ln1Vlp9MvOnQrFQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">可以看到，<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">handleSubscriptExpression</p>方法中依次做了如下处理：</div><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">initializers</p>为<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">KeyValueExpression</p>时，先对元素进行过滤，然后存储到一个<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ArrayList</p>中，然后再从这个list中取值（其实现细节不是本节讨论的重点，感兴趣的童鞋可以自行研究源码），然后<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">return</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">initializers</p>是常量，直接返回其<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">value</p></div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">表达式 的<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">arrayExpression</p>是<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">SubscriptExpression</p>，将其作为递归参数传递</div></li></ul><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">2.2.6.ConditionalExpression</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ConditionalExpression</p><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">三元运算符</strong>，调用<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">handleConditionalExpression</p>方法</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000491" data-ratio="0.3907407407407407" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=ce357009&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrgcdYwvcraHKmibicCtbcr8j0JibDD0zEkZrsXxbibkmqKMl7SMjcwfVeeicw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">可以看到<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">handleConditionalExpression</p>方法中只支持<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">condition</p>为<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">BinaryOperator</p>的情况，其分别对<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">lhs</p>与<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">rhs</p>做了常量传播，然后如果二者相等，就返回<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">thenExpression</p>的值，反之，返回<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">elseExpression</p>的值。</div><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><div style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">很明显，这里的处理是有bug的，试想一下，若<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">condition</p>是一个<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">BinaryOperator</p>，但是其<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">operatorCode</p>是<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">!=</p>，那得到的结果岂不是刚好相反了嘛。先保留这个疑问，后续对其进行验证。</div></blockquote><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">2.2.7.AssignExpression</span></h3><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">AssignExpression</p>赋值表达式，调用<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">handleAssignExpression</p>方法</div><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000493" data-ratio="0.6185185185185185" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=32ff0713&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrgiaOsHPMlZss47yhSSeWxTgzCmSMqrSz7SYld63MNxyHDv9K183rw8rA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">handleAssignExpression</p>方法只支持<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">single value</p>（若是容器相关的赋值操作，<span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">只支持容器内只有一个元素的情况</span>）的情况，并且此处只对<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">CompoundAssignment</p>（<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">operatorCode: *=, /=, %=, +=, -=, &lt;&lt;=, &gt;&gt;=, &amp;=, ^=, |=</p>）的赋值做了处理（<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">MultiValueEvaluator</p>中有更完善的支持）。其大致逻辑如下：</div><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">先求 <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">lhs</p> 与 <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">rhs</p> 的常量值</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">再对 <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">lhs</p> 与 <p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">rhs</p>做运算操作，返回运算后的值</div></li></ul><h2 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 20px;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px;border-radius: 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;margin-bottom: 2px;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">3.验证</span></h2><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(92, 157, 255);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(249, 249, 249);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><div style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(153, 153, 153);font-size: 16px;line-height: 1.8em;letter-spacing: 0em;">tips:笔者本来是想对第二小节的所有节点类型作一一验证的，但是验证过后，得出一个结论：<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ValueEvaluator</p>分析能力很low，所以都搬过来也没什么意义。所以就只验证了其是否支持过程间分析，以及上文提到的bug。</div></blockquote><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">3.1.Reference</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">测试代码：</p><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;font-size: 12px;"><span style="color: #c678dd;line-height: 26px;">package</span> com.cpg.dfg.analyze.valueevaluator;<span style="color: #c678dd;line-height: 26px;">public</span> <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">class</span> <span style="color: #e6c07b;line-height: 26px;">TestReference</span> </span>{    <span style="color: #5c6370;font-style: italic;line-height: 26px;">// interprocedural test case</span>    <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">public</span> <span style="color: #c678dd;line-height: 26px;">void</span> <span style="color: #61aeee;line-height: 26px;">test</span><span style="line-height: 26px;">()</span> </span>{        <span style="color: #c678dd;line-height: 26px;">int</span> a = <span style="color: #d19a66;line-height: 26px;">1</span>;        a = getA(a);        System.out.println(a);    }    <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">public</span> <span style="color: #c678dd;line-height: 26px;">int</span> <span style="color: #61aeee;line-height: 26px;">getA</span><span style="line-height: 26px;">(<span style="color: #c678dd;line-height: 26px;">int</span> a)</span> </span>{        a++;        <span style="color: #c678dd;line-height: 26px;">return</span> a;    }}</p></pre><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">测试结果如下：</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000490" data-ratio="0.14722222222222223" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=521ff46f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrg4n6F3T1P3SDk7vQ63kvNpJCbjuGqeHz1kicktOowmdic5rwicMicOIicYAg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">可以看到，涉及方法调用时，无法分析出常量值，所以CPG自带的<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ValueEvaluator</p>并<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">不是过程间</strong>的分析</div><h3 data-tool="mdnice编辑器" style="margin: 30px auto 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: center;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 18px;border-color: rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: 80%;height: auto;align-items: unset;border-style: solid;border-width: 4px 1px 1px;border-radius: 0px;box-shadow: none;display: block;flex-direction: unset;float: unset;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;-webkit-box-reflect: unset;">3.2.ConditionalExpression</span></h3><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">测试代码：</p><pre data-tool="mdnice编辑器" style="border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;margin-top: 10px;margin-bottom: 10px;"><p style="overflow-x: auto;padding: 16px;color: #abb2bf;padding-top: 15px;background: #282c34;border-radius: 5px;display: -webkit-box;font-family: &#39;Operator Mono&#39;, Consolas, Monaco, Menlo, monospace;border-top-left-radius: 0px;border-top-right-radius: 0px;border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;font-size: 12px;"><span style="color: #c678dd;line-height: 26px;">package</span> com.cpg.dfg.analyze;<span style="color: #c678dd;line-height: 26px;">public</span> <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">class</span> <span style="color: #e6c07b;line-height: 26px;">TestValueEvaluator</span> </span>{    <span style="line-height: 26px;"><span style="color: #c678dd;line-height: 26px;">public</span> <span style="color: #c678dd;line-height: 26px;">void</span> <span style="color: #61aeee;line-height: 26px;">test</span><span style="line-height: 26px;">()</span> </span>{        <span style="color: #c678dd;line-height: 26px;">int</span> a = <span style="color: #d19a66;line-height: 26px;">1</span>;        a = a != <span style="color: #d19a66;line-height: 26px;">1</span> ? <span style="color: #d19a66;line-height: 26px;">2</span> : a;  <span style="color: #5c6370;font-style: italic;line-height: 26px;">// there is a bug when ValueEvaluator run</span>        System.out.println(a); <span style="color: #5c6370;font-style: italic;line-height: 26px;">// the value of a is 2,it&#39;s error.It should be 1</span>    }}</p></pre><p data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">测试结果如下：</p><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000498" data-ratio="0.1675925925925926" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgb(204, 204, 204) 0px 0px 10px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=90d6ea0a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrgT9qzhHfam4WZzkFaLkl8HN1tvdHtHz2ZPaqsgrGib9YptHUjnxPEbDA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><div data-tool="mdnice编辑器" style="line-height: 1.8em;letter-spacing: 0em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">果然有<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">bug</strong>，第7行输出<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">a</p>时，常量追踪的结果是<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">2</p>，而不是<p style="color: rgb(92, 157, 255);font-size: 14px;line-height: 1.8em;letter-spacing: 0em;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;height: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">1</p>，正好相反，跟笔者上文推测的结论是一致的</div><h1 data-tool="mdnice编辑器" style="border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);margin-top: 30px;margin-bottom: 15px;align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;padding: 3px 10px;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;display: inline;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">总结</span></h1><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">CPG自带的<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ValueEvaluator</p>的常量传播能力很有限</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;">CPG自带的<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ValueEvaluator</p>是<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">过程内</strong>的分析</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ConditionalExpression</p>的处理有bug</div></li><li><div style="margin-top: 5px;margin-bottom: 5px;color: rgb(1, 1, 1);line-height: 1.8em;letter-spacing: 0em;"><span style="color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(136, 128, 255);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">慎用</span>CPG自带的<p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ValueEvaluator</p>，但是若需要使用DFG做checker开发时，可以<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">借鉴</strong><p style="background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(27, 31, 35, 0.05);width: auto;margin-left: 2px;margin-right: 2px;padding: 2px 4px;border-style: none;border-width: 3px;border-color: rgb(0, 0, 0) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4);border-radius: 4px;font-family: &#34;Operator Mono&#34;, Consolas, Monaco, Menlo, monospace;word-break: break-all;">ValueEvaluator</p>中对<strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DFG的使用</strong></div></li></ul></div><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;text-wrap: wrap;color: rgb(0, 0, 0);font-family: PingFangSC-regular, sans-serif;letter-spacing: normal;text-align: left;border-color: rgb(0, 0, 0) rgb(0, 0, 0) rgb(92, 157, 255);align-items: unset;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;border-style: none none solid;border-width: 1px 1px 2px;border-radius: 0px;box-shadow: none;display: flex;flex-direction: unset;float: unset;height: auto;justify-content: unset;line-height: 1.5em;overflow: unset;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;"><span style="padding: 3px 10px;font-size: 22px;color: rgb(255, 255, 255);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(92, 157, 255);line-height: 1.5em;letter-spacing: 0em;align-items: unset;border-style: none;border-width: 1px;border-color: rgb(0, 0, 0);border-radius: 4px 4px 0px 0px;box-shadow: none;flex-direction: unset;float: unset;height: auto;justify-content: unset;overflow: unset;text-indent: 0em;text-shadow: none;transform: none;width: auto;-webkit-box-reflect: unset;">技术交流群</span></h1><p style="margin-bottom: 0px;text-wrap: wrap;color: rgb(0, 0, 0);font-family: PingFangSC-regular, sans-serif;font-size: 16px;letter-spacing: normal;text-align: left;"><span style="letter-spacing: 0em;word-spacing: 0em;">点击公众号底部菜单栏&#34;</span><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">点击进群</strong><span style="letter-spacing: 0em;word-spacing: 0em;">&#34;，加笔者好友（</span><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">备注</strong><strong style="color: rgb(22, 94, 202);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">进群</strong><span style="letter-spacing: 0em;word-spacing: 0em;">）</span></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=02699b61&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FSocial.png"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=9049d882&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2FExpression%2FExpression_43%402x.png"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=6b4764f4&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2Fnewemoji%2FAddoil.png"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=7d2b8805&amp;u=https%3A%2F%2Fres.wx.qq.com%2Ft%2Fwx_fed%2Fwe-emoji%2Fres%2Fv1.3.10%2Fassets%2FExpression%2FExpression_93%402x.png"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=8a1a7acd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrgaTRb0QwSpYXdvHEGDJKmYp4g3jUpajImPNaQZiaoOG50JZDasnaMHqA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=9ea2e151&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrgPGznmJzz3d4tooX95xRN0HibMxzicicqbibGL6ZUuQpJUJwM18BuKUKrvg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=e8b422c0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8fV1spibQibKUldhul8A8QyS0FjSrKnJ6zX5AQYl5XU8CIPRLs7SDIl5go4u7SyDJxf9ANPcbFHO5E%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=ed2c3340&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrgRB7UKO01iaP0c7XU3TdYFF6lIsx7Orn9HZuMeoVjrZsshxIRte3ZOOg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=cd04718e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrgMaPp7hLXHo6ibfhQPGBQPE91Oz4icaUI5IzPGd1xicNI5pCpBPbRiawicGQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=eabb43f9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrgzQkCACZmCePHibUdDTXlbuw9lUm8Hdfgaql33P0K66AkrviaB7ohxtiaA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=09ec338a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrgB69sMEEdmmgCd7ibX3AiasubCbf674x3FNBsmgrHLtD4KGtKb0DVapgA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=3fb03d81&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrg2I4RcFDRNT4gGDkyla3ibHZx0ob9P6s2quU7Zj38Ln1Vlp9MvOnQrFQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=bcb346f0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrgcdYwvcraHKmibicCtbcr8j0JibDD0zEkZrsXxbibkmqKMl7SMjcwfVeeicw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=8beef3f7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrgiaOsHPMlZss47yhSSeWxTgzCmSMqrSz7SYld63MNxyHDv9K183rw8rA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=e8b422c0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8fV1spibQibKUldhul8A8QyS0FjSrKnJ6zX5AQYl5XU8CIPRLs7SDIl5go4u7SyDJxf9ANPcbFHO5E%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=9dbfb18f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrg4n6F3T1P3SDk7vQ63kvNpJCbjuGqeHz1kicktOowmdic5rwicMicOIicYAg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=e8b422c0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_svg%2FuchmtWQh7iarErdUSiaO0U8fV1spibQibKUldhul8A8QyS0FjSrKnJ6zX5AQYl5XU8CIPRLs7SDIl5go4u7SyDJxf9ANPcbFHO5E%2F640%3Fwx_fmt%3Dsvg"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=5ee6aa0e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GYgibT7PXoxGIBUoED8dBibrgT9qzhHfam4WZzkFaLkl8HN1tvdHtHz2ZPaqsgrGib9YptHUjnxPEbDA%2F640%3Fwx_fmt%3Dpng"/></p>



<p><a href="2247484259">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=6294eed0&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484259%26idx%3D1%26sn%3D128b706a657ae769cc584d9b16715cf2">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Sun, 28 Apr 2024 08:30:00 +0800</pubDate>
    </item>
    <item>
      <title>六问读懂2024年全球威胁报告</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484240&amp;idx=1&amp;sn=0e73ef2880ac9ae4239885550ee1dcf2</link>
      <description>引言2024年全球威胁报告（2024 Global Threat Analysis Report）是由Radw</description>
      <content:encoded><![CDATA[<p>
原创 <span>SASTing</span> <span>2024-04-26 08:30</span> <span style="display: inline-block;">上海</span>
</p>

<p>引言2024年全球威胁报告（2024 Global Threat Analysis Report）是由Radw</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=a34fa395&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWjeXp8WfzcEv9UBkSNQeEkhgUtTGT7UEMGB3Wic7hxYiatkWricHByaxLUA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;"><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">引言</span></h1><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">2024年全球威胁报告</strong>（2024 Global Threat Analysis Report）是由Radware公司发布的权威性研究报告，该公司每年都会统计去年的网络攻击事件，总结攻击行为的特点、趋势并对安全防护提出指导性建议。</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(53, 179, 120);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 249, 253);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">Radware是全球领先的物理、云端和软件定义型数据中心网络安全与应用交付解决方案提供商。其有口皆碑的解决方案组合通过为世界各地的企业提供基础设施、应用程序和企业IT保护以及可用性服务来确保数字体验。Radware的解决方案助力全球范围内超过<em style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">12,500</em>家企业和运营商客户快速适应市场挑战，维持业务连续性，并在降低成本的同时实现生产率最大化。</p></blockquote><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">网络安全是当今数字化社会中至关重要的议题，随着技术的不断发展和网络攻击手段的日益<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">复杂化</strong>，各种威胁和攻击对个人、组织甚至国家安全构成了严峻挑战。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">2024年全球威胁分析报告（<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">2024 Global Threat Analysis Report</em>）总结了<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">2023年</strong>的网络安全事件，并提出了未来安全事件的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">发展趋势</strong>，对我们理解当前威胁形势、制定有效防御策略有着重要的参考意义。本文将对该报告进行全面解读，以<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">问答</strong>的形式展开叙述。</p><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">1.2023年网络安全事件的发展趋势是怎样的？</span></h1><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">针对<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DNS和HTTPS协议</strong>的攻击显著增加</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DNS洪水攻击</strong>是最常见的攻击方式</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000586" data-ratio="0.40782122905027934" data-type="png" data-w="895" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=0109c2b4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWj2sfavek3P2yptK6HMIxSRRicGWjD8MHBs82GGc7gNSnkfv54m8L5QzQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><figcaption style="color: rgb(136, 136, 136);font-size: 14px;line-height: 1.5em;letter-spacing: 0em;text-align: center;margin-top: 5px;"></figcaption></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">NTP放大攻击</strong>产生的攻击量最大，几乎占全球攻击总量的一半，并且其<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">利用率最高</strong></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">美国</strong>发起的非请求网络活动（可理解为网络攻击行为）最多，占所有网络活动的45%（美国2022年同样占比最多，为42.5%）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Web</strong>应用程序及针对<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">API</strong>的恶意攻击行为相较于2022年增长了<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">171%<strong style="background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">。很大一部分原因是2023年上半年</strong>DDOS</strong>攻击行为大幅增加。</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000583" data-ratio="0.16868798235942667" data-type="png" data-w="907" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=cbdfcbf8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWj6bfUnpibQhNB2Pjk3caSB2Uxm1J8DzjkonkAVSSdRZUO8apgXBCuLSg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">随着<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">大语言模型</strong>（LLM）及<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">生成式AI</strong>的迅速发展，网络攻击行为的门槛也随之降低，同时，攻击者可以利用这些新型AI技术完成<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">高复杂性、高成功率、大规模</strong>的攻击行为。</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000584" data-ratio="0.6" data-type="png" data-w="1080" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=0e40dae3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWj8FjDn6iaV4YR8gduwBfHgJUwR0zKibBWKzicgtRSTkjDdfYQgwCa7IASw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img class="rich_pages wxw-img" data-imgfileid="100000582" data-ratio="0.36152416356877326" data-type="png" data-w="1076" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=c7a4efad&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWjDUlqARtQax7qQovOGs7L8XRT1G1G0f0aibCDrfF7b20WfWPuDBynYFA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">2.各行业遭受DDOS攻击的情况</span></h1><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">各行业遭受DDOS攻击占比：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">金融 30%</strong></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">科技 22.2%</strong></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">医疗保健 14.2%</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">政府 11.5%</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">运输和物流 8.64%</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">游戏 3.09%</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img data-imgfileid="100000585" data-ratio="1.2694414019715226" data-type="png" data-w="913" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=4d0a593e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWj5nuW08uk2bVEzZzuN6ZDbkzHjROKLMFiaGugFwQIEeJoXicicTBicE54sw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">3.各行业遭受DNS洪水攻击的情况</span></h1><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img data-imgfileid="100000591" data-ratio="1.1697497279651796" data-type="png" data-w="919" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=f0c083d3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWjiab8wXNrIzjYmyPz0BKljM1fao1ZjIYcM65EC8b7Slx8WQooN8jqG6g%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">研究与教育 31.5%</strong></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">电子信息 24.9%</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">科技 18.7%</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">金融 9.53%</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">医疗保健 6.02%</p></li></ul><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">4.各国家遭受网络攻击的情况</span></h1><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img data-imgfileid="100000588" data-ratio="0.8073089700996677" data-type="png" data-w="903" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=5a3903e1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWjgUKia2ibaic8PxuPJFn8GD5wY8UCuYqH1Smkod4C5jI1XjD0Nzb1BIMUA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">如图所示，各国家遭受网络攻击次数的排名如下：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">以色列 （排在首位，遭受1480起网络攻击）</strong></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">印度</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">美国</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">乌克兰 （俄乌冲突影响）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">波兰 （俄乌冲突影响）</p></li></ul><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">5.2023年重大网络安全事件</span></h1><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Log4jShell</strong>（2023 top10 中占据6个，利用JNDI实现RCE）</p></li></ul><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img data-imgfileid="100000587" data-ratio="0.5903614457831325" data-type="png" data-w="581" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=3f684b8e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWjZ1wmt6lP49uYmmR9LbTKR6OrGVX7qbcEEcQIQgaxdnxnCqVhqDabMA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img data-imgfileid="100000589" data-ratio="0.3675889328063241" data-type="png" data-w="759" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=3973d2e9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWjLZIDSOKtywApA4jRVhoM0CkNY0wzmoquftBR8Y9kcIn9oRAmzw87Ag%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-1"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">DNS-named-version-attempt（利用服务器信息泄露获取<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">DNS服务器版本信息</em>）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">ZMAP扫描 （替代Nmap，是工具top10中的第二位，<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">高速扫描、识别已知漏洞、端口扫描等</em>）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">SIPSAK工具（针对SIP协议设备做多种<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">测试</em>，top10中第6位）</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">SIPVicious（<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">发现SIP服务器、密码暴力破解</em>等，top10中第10位）</p></li></ul><h1 data-tool="mdnice编辑器" style="margin-top: 30px;margin-bottom: 15px;display: flex;"><span style="font-size: 24px;color: rgb(53, 179, 120);line-height: 1.5em;letter-spacing: 0em;font-weight: bold;display: block;">6.被扫描的UDP端口top10</span></h1><figure data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;display: flex;flex-direction: column;justify-content: center;align-items: center;"><img data-imgfileid="100000590" data-ratio="0.4941050375133976" data-type="png" data-w="933" style="display: block;margin-right: auto;margin-left: auto;border: 3px none rgba(0, 0, 0, 0.4);border-radius: 0px;object-fit: fill;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=68f1d18b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWjJyprvg5KYBWKsdxpDbUTCDcYuCWrpaPVGZj9fkQpiapmsI6Qf42icXMA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></figure><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">被扫描和利用的 UDP 端口/服务 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">top10</strong> 如下：</p><ul data-tool="mdnice编辑器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;" class="list-paddingleft-2"><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">SIP</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">NTP</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">SSDP</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">SNMP</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">Memcached</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">mDNS</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">80 (2023年新增)</em></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;">MSSQL</p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">IPSec(IKE) (2023年新增)</em></p></li><li><p style="margin-top: 5px;margin-bottom: 5px;color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;"><em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">BitTorrent P2P (2023年新增)</em></p></li></ul><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">2022年top10中的 <em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">LDAP、NetBIOS</em> 及 <em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">CoAP</em>在2023年未进top10。</p></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=aa0c30b9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWj2sfavek3P2yptK6HMIxSRRicGWjD8MHBs82GGc7gNSnkfv54m8L5QzQ%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=bc2f9ddf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWj6bfUnpibQhNB2Pjk3caSB2Uxm1J8DzjkonkAVSSdRZUO8apgXBCuLSg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=1c348ef5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWj8FjDn6iaV4YR8gduwBfHgJUwR0zKibBWKzicgtRSTkjDdfYQgwCa7IASw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=20c4663d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWjDUlqARtQax7qQovOGs7L8XRT1G1G0f0aibCDrfF7b20WfWPuDBynYFA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=51158ade&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWj5nuW08uk2bVEzZzuN6ZDbkzHjROKLMFiaGugFwQIEeJoXicicTBicE54sw%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=be9c5a84&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWjiab8wXNrIzjYmyPz0BKljM1fao1ZjIYcM65EC8b7Slx8WQooN8jqG6g%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=02383cfe&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWjgUKia2ibaic8PxuPJFn8GD5wY8UCuYqH1Smkod4C5jI1XjD0Nzb1BIMUA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=97ba37e4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWjZ1wmt6lP49uYmmR9LbTKR6OrGVX7qbcEEcQIQgaxdnxnCqVhqDabMA%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=d3c8d407&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWjLZIDSOKtywApA4jRVhoM0CkNY0wzmoquftBR8Y9kcIn9oRAmzw87Ag%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=31fb4be3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaiaYw7icEa636QQU0CeIBAWjJyprvg5KYBWKsdxpDbUTCDcYuCWrpaPVGZj9fkQpiapmsI6Qf42icXMA%2F640%3Fwx_fmt%3Dpng"/></p>



<p><a href="2247484240">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=8915e4e0&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484240%26idx%3D1%26sn%3D0e73ef2880ac9ae4239885550ee1dcf2">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 26 Apr 2024 08:30:00 +0800</pubDate>
    </item>
    <item>
      <title>数据库又被黑客拿下了！530万份机密数据要泄露了！</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNzY3MjE1NA==&amp;mid=2247484213&amp;idx=1&amp;sn=d1748f0f81323e82fc72d89ea16cf566</link>
      <description>World-Check数据库泄露，黑客声称要对外公布。</description>
      <content:encoded><![CDATA[<p>
原创 <span>SASTing</span> <span>2024-04-24 08:00</span> <span style="display: inline-block;">中国香港</span>
</p>

<p>World-Check数据库泄露，黑客声称要对外公布。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=e83ec716&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GaRlVJ7XueE4RpjaxqKqrlXrupDFwYClRpicSnwa09PgCf2c79PL9c18sy3d1T2KCrhURkXpBDiaflA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<div data-tool="mdnice编辑器" data-website="https://www.mdnice.com" style="margin-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: Optima, &#34;Microsoft YaHei&#34;, PingFangSC-regular, serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;text-align: left;"><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">近期，一个黑客组织声称，他们成功窃取了一份<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">机密</strong>数据库”<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">World-Check</strong>“，其中包含<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">数百万条记录</strong>。公司会利用该数据库对潜在客户进行筛选，以确认客户是否参与金融犯罪或其他犯罪行为。</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-imgfileid="100000548" data-ratio="0.36621196222455404" data-s="300,640" style="" data-type="png" data-w="953" src="https://wechat2rss.xlab.app/img-proxy/?k=71e46add&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaRlVJ7XueE4RpjaxqKqrlX3BhjxxpYiaqAsy7v7K2k3gOMBJKuaddfQZibO1LOXfE3iat9xL4rgHJFg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">GhostR</strong>（黑客组织代号）声称：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(53, 179, 120);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 249, 253);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">我们于3月份从 ”<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">World-Check</strong>“ 数据库中获取了<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">530万</strong>条记录，这些数据信息会在网上披露。</p></blockquote><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">World-Check</strong> 数据库主要用于 &#34;<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">know your customer</strong>&#34;（KYC）,也就是通过该数据库对客户身份进行确认，防止客户中混入一些潜逃罪犯或者高风险人群（如：参与洗钱、被政府制裁等）。黑客表示，他们从一家有 <strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">World-Check</strong> 数据库访问权限的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">新加坡公司</strong>窃取了数据，但没有透露该公司的名称。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">维护该数据库的<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">伦敦证券交易所</strong>发言人<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Simon Henrick</strong>表示：</p><blockquote data-tool="mdnice编辑器" style="margin-top: 20px;margin-bottom: 20px;padding: 10px 10px 10px 20px;border-top: 3px none rgba(0, 0, 0, 0.4);border-bottom: 3px none rgba(0, 0, 0, 0.4);border-right: 3px none rgba(0, 0, 0, 0.4);border-left-color: rgb(53, 179, 120);border-radius: 0px;background: none 0% 0% / auto no-repeat scroll padding-box border-box rgb(251, 249, 253);width: auto;height: auto;box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;overflow: auto;"><p style="text-indent: 0em;padding-top: 8px;padding-bottom: 8px;color: rgb(89, 89, 89);line-height: 1.8em;letter-spacing: 0.04em;">这不是由我们系统（<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">LSEG</strong>）的安全漏洞造成的。第三方公司数据库中也会保存<strong style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">World-Check</strong>数据库的副本。显然，这是黑客组织从<em style="color: rgb(53, 179, 120);background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0);width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">第三方系统</em>中非法获得的。我们正在积极与第三方公司联系，同时通知相关责任单位，确保我们的数据得到合法保护。</p></blockquote><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Simon Henrick</strong> 没有透露第三方公司的名称，但也没有否认机密数据泄露的事实。</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-imgfileid="100000555" data-ratio="0.4166666666666667" data-s="300,640" style="" data-type="png" data-w="348" src="https://wechat2rss.xlab.app/img-proxy/?k=3bb3ec08&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaRlVJ7XueE4RpjaxqKqrlXTKoIT9GmmfHZ8lspSn8Om2oTWr6vhmwRGfXMce8q0RVp28O4iaSaF7g%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: center;"><span style="color: rgb(89, 89, 89);font-size: 15px;letter-spacing: 0.04em;text-indent: 0em;text-align: left;word-spacing: 0em;">该黑客组织披露了一小部分数据，其中包含大量</span><em style="font-size: 15px;letter-spacing: 0.04em;text-indent: 0em;text-align: left;word-spacing: 0em;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">现任和前任政府官员</em><span style="color: rgb(89, 89, 89);font-size: 15px;letter-spacing: 0.04em;text-indent: 0em;text-align: left;word-spacing: 0em;">、</span><em style="font-size: 15px;letter-spacing: 0.04em;text-indent: 0em;text-align: left;word-spacing: 0em;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">外交官</em><span style="color: rgb(89, 89, 89);font-size: 15px;letter-spacing: 0.04em;text-indent: 0em;text-align: left;word-spacing: 0em;">及一些贪污腐败人群等，名单中还包括一些犯罪分子、</span><em style="font-size: 15px;letter-spacing: 0.04em;text-indent: 0em;text-align: left;word-spacing: 0em;color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">恐怖分子</em><span style="color: rgb(89, 89, 89);font-size: 15px;letter-spacing: 0.04em;text-indent: 0em;text-align: left;word-spacing: 0em;">、情报人员等。</span></p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">World-Check</strong>数据库中包含<span style="text-decoration:underline;">姓名、护照编号、个人账户、银行卡账号</span>等信息。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">伦敦证券交易所</strong> 2021年以<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">270亿美元</strong>收购了金融数据提供商<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">Refinitiv</strong>。该集团从外界收集信息：包括<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">公开的制裁名单</strong>、<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">政府来源</strong>和<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">新闻媒体</strong>等。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;"><strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">World-Check</strong>数据库中不仅会存储敏感人群的信息，<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">普通人的身份信息</strong>也会被存储进去，显然，这是<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">不合法</strong>的。</p><p style="text-align: center;"><img class="rich_pages wxw-img js_insertlocalimg" data-imgfileid="100000551" data-ratio="0.56" data-s="300,640" style="" data-type="jpeg" data-w="300" src="https://wechat2rss.xlab.app/img-proxy/?k=35def9bb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GaRlVJ7XueE4RpjaxqKqrlXI8NCeQrJSS9HrWHia4ghf4jZ7ibGnUGAjSH1iaLxGuk92YM5pLtxwd0tw%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">其实早在2016年，一家<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">第三方公司</strong>的安全漏洞被黑客利用，<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">World-Check</strong>数据库的一份副本就已经泄露。值得注意的是，当时该数据库中<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">英国前顾问</em>被贴上了&#34;<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">恐怖主义</em>&#34;的标签。由于此次数据泄露，<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">汇丰银行</strong>冻结了几个大的银行账户，原因是<strong style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">World-Check</strong>数据库中他们被贴上了“<em style="color: rgb(53, 179, 120);background-attachment: scroll;background-clip: border-box;background-image: none;background-origin: padding-box;background-position: 0% 0%;background-repeat: no-repeat;background-size: auto;width: auto;height: auto;border-style: none;border-width: 3px;border-color: rgba(0, 0, 0, 0.4);border-radius: 0px;">恐怖主义</em>”标签。</p><p data-tool="mdnice编辑器" style="color: rgb(89, 89, 89);font-size: 15px;line-height: 1.8em;letter-spacing: 0.04em;text-indent: 0em;padding-top: 8px;padding-bottom: 8px;">英国数据保护机构办公室发言人目前没有就此次信息泄露事件发表评论。</p></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=70152ca2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaRlVJ7XueE4RpjaxqKqrlX3BhjxxpYiaqAsy7v7K2k3gOMBJKuaddfQZibO1LOXfE3iat9xL4rgHJFg%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=5fc84e03&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2Fcdc0h3QF6GaRlVJ7XueE4RpjaxqKqrlXTKoIT9GmmfHZ8lspSn8Om2oTWr6vhmwRGfXMce8q0RVp28O4iaSaF7g%2F640%3Fwx_fmt%3Dpng"/></p>
<p><img src="https://wechat2rss.xlab.app/img-proxy/?k=670690d5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2Fcdc0h3QF6GaRlVJ7XueE4RpjaxqKqrlXI8NCeQrJSS9HrWHia4ghf4jZ7ibGnUGAjSH1iaLxGuk92YM5pLtxwd0tw%2F640%3Fwx_fmt%3Djpeg"/></p>



<p><a href="2247484213">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=e8a53a92&amp;r=1&amp;u=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNzY3MjE1NA%3D%3D%26mid%3D2247484213%26idx%3D1%26sn%3Dd1748f0f81323e82fc72d89ea16cf566">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 24 Apr 2024 08:00:00 +0800</pubDate>
    </item>
  </channel>
</rss>