精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

探秘自動機原理與優化實踐

移動開發
自動機廣泛應用在Linux的各種文本搜索工具以及各類的正則表達式匹配庫中,是進行正則表達式匹配的必備技術。自動機理論和圖靈機理論一樣,是現代信息技術大廈的關鍵核心基礎理論。本文將從理論與應用的角度揭秘自動機原理與實踐優化。

自動機概況

使用Linux開發環境的程序員一定使用過sed、grep、lex等Linux系統工具,sed、grep是Linux中重要的數據流搜索與處理工具,Lex是linux下廣泛使用的詞法分析器生成器,用于復雜語言的解析、編譯器前端的開發等。盡管這些Linux系統工具功能各異,但這些工具內部都實現了一個自動機,用于對輸入預料進行基于正則表達式的文本搜索。自動機則是正則表達式的等價實現。

從計算理論上講,正則表達式與自動機具有理論上的嚴格等價性,正則表達式和自動機具有等價的對匹配模式的定義能力。正則表達式是匹配模式的形式化表達,自動機則是對匹配模式的計算機實現的一種表達。

安全檢測與防護領域的入侵檢測系統(Intrusion Detection Systems,IDS)、入侵防護系統(Intrusion Prevention System, IPS)、web應用防火墻(Web Application Firewall,WAF)等都大量應用了自動機技術進行網絡數據流的正則表達式匹配,以實現對網絡報文的檢測與分析。

圖片

IPS/IDS與WAF系統

自動機技術也廣泛應用于DPI系統(Deep Packet Inspection,DPI)中,以實現對網絡報文的解析與識別。

圖片

應用于應用識別的DPI系統

2、正則表達式與自動機

2.1 初識正則表達式與自動機

在形式化語言與自動機理論中,正則表達式與有窮自動機有著理論上的嚴格等價性。

圖片

正則表達式與自動機的等價性

自動機分為確定型有窮自動機(Deterministic Finite Automata,DFA)和非確定型有窮自動機(Non-Deterministic Finite Automata,NFA)。確定型有窮自動機中,對于給定的確定狀態與確定輸入,其狀態轉移關系是確定唯一的,且每一時刻只存在一個激活狀態。相反,在非確定型有窮自動機中,對于給定的確定狀態與確定輸入,其可能存在多個狀態轉移關系,且某一時刻可能存在多個的激活狀態。非確定型有窮自動機又主要分為存在epsilon轉移的epsilon-NFA與沒有epsilon轉移的NFA,其經典代表分別為Thompson NFA與Gluskov NFA。

圖片

Thompson NFA

上圖所示為識別正則表達式(AB|CD)*AFF*的Thompson NFA,可見thompson NFA由基本的子正則表達式NFA單元通過epsilon邊連接而成,epsilon邊連接的兩個狀態可以由空字符進行轉移,即存在無條件的狀態轉移關系,由字母標識的邊連接的兩個狀態表明這兩個狀態之間需要輸入對應的字符才能進行激活狀態的轉移。

圖片

Gluskov NFA

上圖所示為識別正則表達式(AB|CD)*AFF*的Gluskov NFA。顯而易見,Gluskov NFA比Thompson NFA要簡潔很多,且Glukov NFA中NFA的狀態數與正則表達式中出現的字符和字符集總數一致。相比于Thompson NFA,Gluskov NFA狀態數更少,結構更緊湊。同時在Gluskov NFA中,狀態之間的跳轉條件被移到了節點內變成了節點的激活條件,因此Gluskov NFA的運行時處理也會變得更加簡單。在運行時讀入一個字符c時,便可知道字符c可以激活的狀態集reach(c),那么只需在Gluskov NFA當前的激活狀態集s的基礎上計算其后繼狀態集succ(s),并取reach(c)與succ(s)的交集,所得的交集即為Gluskov NFA的下一刻激活狀態集。對于Thompson NFA,節點的激活條件并不唯一,且需要處理epsilon邊連接的狀態轉移關系,其下一刻的激活狀態集的計算會更復雜。

對Thompson NFA或Gluskov NFA使用子集構造算法,可以將NFA轉化為DFA。DFA相較于NFA最大的優勢是性能,而劣勢在于空間開銷,這是因為DFA狀態轉移的確定性是通過對NFA不同狀態進行組合得到的,因此功能等價的DFA和NFA從理論上來說,DFA狀態數的上限是NFA狀態數的指數關系。

圖片

DFA狀態圖

上圖所示為使用子集構造算法將識別正則表達式(AB|CD)*AFF*的thompson NFA轉化為DFA后的狀態圖。圖中每個藍色框的序號集中的序號對應于thompson NFA中狀態的序號,體現了DFA中的每個狀態對應于NFA狀態集的一個子集。

2.2 主流的開源自動機相關庫

目前廣泛使用的主流開源自動機相關庫主要是Pcre、RE2、Hyperscan

  • Pcre支持的正則表達式語法是最全最復雜的,但PCRE只支持塊模式編譯和匹配,并且只支持單條正則表達式的編譯和匹配,性能在這三款軟件中是最差的。對于需要進行大規模正則規則并行匹配的場景,pcre就顯得力不從心了。
  • Google的開源正則匹配引擎RE2是基于虛擬機方法c++實現的一款快速、安全、線程友好的正則匹配自動機,支持的正則表達式語法比pcre少但比hyperscan多。RE2支持少量正則規則集的并行匹配,不支持只能用回溯算法實現的正則表達式語法。
  • Hyperscan是Intel開源的一款基于正則表達式NFA/DFA圖分析與拆解的高性能正則表達式混合自動機。在這三款軟件中,hyperscan支持的正則語法最少,但其性能是最強的,且支持大規模正則規則集的并行匹配。


3、自動機的性能優化實踐

正則表達式的匹配速率是制約IDS/IPS、WAF、DPI等業務的重要性能瓶頸。提升正則表達式自動機的匹配性能是提升以上業務能力的關鍵所在,下面介紹自動機性能優化的幾種主流方法。

3.1 基于預過濾的性能優化

圖片

基于預過濾的正則表達式優化策略

上圖所示為基于字符串匹配器預過濾的正則表達式匹配優化策略。該方案會在正則表達式的編譯過程中提取正則表達式中的字符串信息,并根據提取的字符串構建一個多字符串預匹配器。如針對規則0,提取了字符串SEARCH,針對規則N提取了字符串SUBSCRIBE。在對輸入預料進行匹配的過程中,會先使用多字符串匹配器進行字符串的匹配,若匹配過程中匹配到了字符串SERACH但是沒有匹配到字符串SUBCRIBE,則會進一步使用根據正則表達式規則0構建的自動機進行第二階段的正則表達式匹配。可見基于預過濾的正則表達式匹配方案為一個兩階段的匹配過程。

基于字符串匹配器的預過濾正則表達式匹配方案雖然能提早過濾掉無法匹配的語料。但仍然存在以下的諸多不足:

(1)對正則表達式中的字符串存在重復匹配,即預過濾的字符串匹配組件匹配一次字符串,自動機又重復匹配一次字符串;

(2)基于預過濾的匹配方案中的第二階段,使用自動機對字符串進行匹配難以有效地使用CPU的SIMD指令集進行字符串匹配的并行加速;

(3)不合理的關鍵字符串選擇容易拖累整體正則表達式的匹配性能。

針對基于字符串匹配器預過濾的正則表達式匹配方案的不足,一種更新穎有效的基于正則表達式分解的正則表達式匹配方案便應運而生了。

3.2 基于正則表達式分解的性能優化

基于正則表達式分解的正則表達式匹配方案首先會將正則表達式拆解成幾個子字符串和子正則表達式。拆解的子字符串會被構建為一個字符串匹配器(字符串匹配器可以有效地使用CPU的SIMD指令集進行并行加速,相比于使用自動機匹進行字符串配具有數量級上的性能優勢),而拆解的子正則表達式則會被構建為一個子自動機,如NFA或DFA。在對輸入語料進行正則表達式匹配時,該方案會按照一定順序調用各個匹配器,并盡量優先調用字符串匹配器進行字符串的匹配,只有當前一個匹配器匹配成功后才會調用下一個匹配器進行匹配,并且只有當所有的匹配器都按照既定的順序匹配成功后,整條拆解的正則表達式才真正匹配成功。

圖片

基于規則拆分的正則表達式匹配策略

上圖所示為使用拆解后的正則表達式.*start[^x]comA+匹配輸入字符串AstarZcomA的一個示例。首先,正則表達式被拆解為五個部分,分別對應于自動機部分FA2、FA1、FA0與字符串部分STR2、STR1。拆解后構造的各個子自動機與子字符串匹配器的匹配順序為STR1->STR2->FA1->FA0->FA2。拆解后構造的各個子自動機與子字符串遵循一下的優先級原則:

  • 字符串匹配優先于自動機匹配。
  • 兩個字符串中間的自動機匹配優先于其它位置的自動機匹配。
  • 匹配語料尾部的自動機優先于匹配語料頭部的自動機。

第一條優先級原則很好理解,在于字符串匹配速率相對于自動機匹配速率有著數量級上的性能優勢。兩個字符串之間的自動機所需匹配的語料的行首和行尾是錨定的,因此它的優先級相對于其它自動機優先級較高,即優先級原則2。由于匹配語料尾部的自動機其匹配的行首是錨定的無需回溯操作,所以其優先級較高,即優先級原則3。可見,拆解后的各子自動機與子字符串匹配器的匹配順序原則上遵循:性能開銷越小的匹配過程,其匹配順序越靠前。

對于輸入語料,AstarZcomA,首先會使用字符串匹配器匹配字符串STR1,此時字符串匹配成功,繼續調用字符串匹配器匹配字符串STR2,此時字符串STR2匹配失敗,則不再使用后續的FA1、FA0、FA2進行匹配。若輸入的字符串為AstartZcomA,則會依次成功匹配STR1、STR2、FA1、FA0、FA2,最后輸出匹配成功信息。

4、正則規則匹配的應用思考

在互聯網領域的各種開發與應用中,網絡進攻檢測、應用流量識別等大量的場景需要使用正則引擎進行正則表達式的匹配。正則表達式的匹配效率不僅取決于使用的正則引擎的性能好壞,也與書寫的正則表達式形式息息相關。揭秘正則引擎的實現原理能讓我們更深入了解正則表達式的形式與正則引擎效率的相關性,更好地指導我們進行正則引擎的性能調優。以下原則的正則表達式書寫指導意見能幫助我們在開發與應用過程中更高效地進行正則表達式的匹配:

  1. 盡量避免使用需要用回溯方法實現的正則表達式語法,如反向引用語法。回溯的引入會使最壞情況下正則匹配的時間復雜度呈指數的增長。
  2. 盡量在正則表達式中避免(.*)、{min,max}這樣的語法,(.*)引入的不確定性以及{min,max}帶來的有界重復是正則表達式引擎的重要性能瓶頸。
  3. 盡量將正則表達式寫得更確定,如盡量在正則表達式中寫更多確定的字符或字符串。
責任編輯:龐桂玉 來源: 移動Labs
相關推薦

2023-10-23 07:13:04

2023-02-20 07:46:45

機器學習AI 技術

2025-02-08 08:10:00

2023-10-29 16:26:27

Python動查重

2017-07-27 10:46:44

神經網絡機器學習強化學習

2025-06-09 07:30:00

Kubernetes節點自動伸縮集群

2017-03-21 09:17:37

2020-12-18 07:42:30

機器學習數據科學

2013-04-17 10:06:55

Google GlasMirror API

2009-06-15 15:57:21

Spring工作原理

2020-05-22 09:12:46

HTTP3網絡協議

2025-01-10 09:47:43

blockSDKiOS

2024-12-25 16:01:01

2021-04-16 09:57:17

AI 數據人工智能

2019-06-04 09:26:35

UCloudUDB數據庫

2022-04-01 09:30:00

開源AutoXGBAPI

2022-10-28 13:41:51

字節SDK監控

2024-05-10 11:35:22

Redis延時隊列數據庫

2025-02-06 08:24:25

AQS開發Java
點贊
收藏

51CTO技術棧公眾號

国产69精品久久久久9999apgf| 日韩中文字幕网站| 久久国产亚洲精品无码| 九色蝌蚪在线| 国产一区二区免费视频| 91成人精品网站| 在线观看免费黄色网址| a级日韩大片| 欧美最猛性xxxxx直播| 天天综合五月天| 四虎影院在线域名免费观看| 久久99精品久久久| 午夜精品视频在线| 2014亚洲天堂| 亚洲宅男网av| 日韩免费高清av| 天天色综合社区| 91av久久| 亚洲图片激情小说| 鲁鲁狠狠狠7777一区二区| 国产乱码一区二区| 丝袜国产日韩另类美女| 欧美激情视频播放| 亚洲国产精品一区二区久久hs| 欧美wwwsss9999| 欧美一区二区美女| 牛夜精品久久久久久久| 免费看男女www网站入口在线| 自拍偷拍欧美精品| 日本一区免费在线观看| 日本黄色三级视频| 国产久卡久卡久卡久卡视频精品| 国产精品国产三级国产专播精品人| 国产一级二级三级| 国产精品99一区二区三| 国产午夜精品免费一区二区三区| 7788色淫网站小说| 99精品在免费线中文字幕网站一区 | 欧美精品一区男女天堂| 999久久久精品视频| julia一区二区三区中文字幕| 精品国产91久久久| 黄网站色视频免费观看| 91麻豆一二三四在线| 国产精品国产三级国产a | 无码人妻一区二区三区一| 久久婷婷五月综合色丁香| 日本丶国产丶欧美色综合| 久久精品免费一区二区| 女人高潮被爽到呻吟在线观看| 亚洲午夜三级在线| 2019日韩中文字幕mv| 日韩成人伦理| 亚洲国产成人91porn| 中文精品无码中文字幕无码专区| 在线免费观看的av| 一区二区三区免费看视频| 日本在线视频www色| 免费观看在线午夜影视| 亚洲婷婷综合色高清在线| 在线视频一区观看| 菠萝蜜视频国产在线播放| 亚洲免费观看在线视频| 无颜之月在线看| 麻豆av在线免费观看| 亚洲一区在线观看免费| 国产av国片精品| 综合日韩av| 欧美亚洲动漫精品| xxx国产在线观看| 日韩美香港a一级毛片| 91麻豆精品91久久久久同性| 师生出轨h灌满了1v1| 国产精品网址| 亚洲人成电影在线| 欧美色视频一区二区三区在线观看| 久久亚洲在线| 欧美夫妻性生活xx| 中日韩精品视频在线观看| 性欧美长视频| 国产欧美精品日韩| www.av日韩| 99久久国产综合色|国产精品| 欧美一区二区视频17c| 日本不卡在线| 亚洲国产精品视频| 欧美视频第一区| 欧美网站免费| 亚洲成人久久一区| 色欲狠狠躁天天躁无码中文字幕 | 一道本在线免费视频| 日本精品视频| 亚洲欧美日韩区| 老熟妇高潮一区二区三区| 一本久道久久久| 国产日韩av在线播放| 日韩中文字幕综合| 中文字幕第一区第二区| 免费毛片网站在线观看| 高清av一区二区三区| 精品国精品自拍自在线| 无码人妻丰满熟妇啪啪欧美| 欧美日本久久| 国产精品第1页| 亚洲精品国产精品乱码不卡| 亚洲国产精品高清| 精品视频在线观看一区| 久久亚洲精品中文字幕| 日韩h在线观看| 欧美在线视频第一页| 久久精品首页| 国产乱码精品一区二区三区日韩精品| 岛国在线大片| 五月婷婷欧美视频| 国产男女无遮挡猛进猛出| 欧美美乳视频| 国产91|九色| 午夜精品久久久久久久99老熟妇| 国产欧美视频一区二区| 欧美在线观看成人| 亚洲日本va| 久久九九国产精品怡红院 | 精品剧情v国产在线观看在线| 欧美老女人性生活视频| 亚洲专区一区二区三区| 都市激情久久久久久久久久久| a√在线中文网新版址在线| 午夜精品久久久久久不卡8050| 一级黄色高清视频| 色天天综合网| 国产美女精品免费电影| 国产三级电影在线| 黑人极品videos精品欧美裸| 国产又粗又猛又色| 欧美日韩午夜| 亚洲最大福利视频| 老司机99精品99| 欧美日韩高清一区二区三区| 最新中文字幕av| 日韩中文字幕区一区有砖一区 | 91精品国产综合久久香蕉最新版 | 亚洲精品一区二区三区四区| 亚洲天天做日日做天天谢日日欢| 国产高清视频网站| 欧美日韩中文一区二区| 国产精品久久久久77777| 韩日在线视频| 欧美午夜理伦三级在线观看| 微拍福利一区二区| 免费看黄色91| 一区二区不卡在线观看| 伊人亚洲精品| 欧美成年人视频| 不卡视频免费在线观看| 一区二区成人在线视频 | 国产精品白丝一区二区三区| 国内精品久久久久| 天堂av资源网| 一本大道av一区二区在线播放| 久久精品无码一区| 青青国产91久久久久久| 熟女视频一区二区三区| 999久久久精品一区二区| 91国在线精品国内播放| 免费a在线观看| 欧美性色黄大片| 卡通动漫亚洲综合| 成人午夜伦理影院| 国产又大又硬又粗| 久久国产中文字幕| 91久久中文字幕| 99在线视频影院| 亚洲欧美日韩一区在线| 在线观看不卡的av| 亚洲人被黑人高潮完整版| 美女网站视频在线观看| 老司机精品久久| 亚洲图片在线观看| 爱爱精品视频| 国产精品第1页| 怡红院在线播放| 日韩精品极品视频| 亚洲视频在线观看免费视频| 一区二区三区高清不卡| 欧美特级黄色录像| 国产揄拍国内精品对白| 日本中文字幕网址| 99九九热只有国产精品| 国产精品二区三区| 电影亚洲一区| 午夜精品在线观看| 免费人成在线观看播放视频| 亚洲国产精品久久久久秋霞不卡 | 国产综合色产在线精品| 欧美视频免费看欧美视频| 成人激情电影在线| 国产精品v欧美精品v日韩精品 | 9a蜜桃久久久久久免费| 三级中文字幕在线观看| 久久影院资源网| 日本黄在线观看| 日韩欧美在线一区二区三区| 中文字幕一区二区人妻视频| 亚洲制服丝袜一区| 亚洲女同二女同志奶水| 99国产精品久久久久| 亚洲一级片av| 日韩精品亚洲专区| 免费超爽大片黄| 91精品啪在线观看国产18 | 久蕉在线视频| 精品国产91洋老外米糕| 国产免费无遮挡| 欧美综合亚洲图片综合区| 黄色小视频在线免费看| 《视频一区视频二区| 中文字幕国产综合| 成人av电影在线| 波多野结衣中文字幕在线播放| 久久字幕精品一区| av之家在线观看| 欧美日韩一区二区三区四区在线观看| 亚洲 日韩 国产第一区| 日韩大片在线免费观看| 99在线首页视频| 欧美经典一区| 91亚洲精品一区二区| 国产黄色一区| 国产精品久久久久国产a级| 欧美少妇精品| 欧美一级免费视频| 大菠萝精品导航| 久久久噜噜噜久久| 激情在线视频播放| 美乳少妇欧美精品| 精品国产丝袜高跟鞋| 啊v视频在线一区二区三区 | 中文字幕+乱码+中文字幕一区| 久久无码人妻精品一区二区三区 | 欧产日产国产精品视频| 久久久久久久久久久免费精品 | 水蜜桃久久夜色精品一区| 日本一区二区三区四区高清视频| 神马午夜久久| 免费成人看片网址| 午夜精品影视国产一区在线麻豆| 国产一区二区在线观看免费播放| 97久久综合区小说区图片区| 丁香五月网久久综合| 国产精品美女在线观看直播| 国产精品免费一区二区三区在线观看 | 欧美日韩国产大片| 怡红院男人天堂| 欧美日韩不卡在线| 夜夜爽8888| 日韩一区二区不卡| 懂色av蜜臀av粉嫩av分享吧| 亚洲成人激情在线观看| 日本aaa在线观看| 亚洲视频日韩精品| 在线看黄色av| 欧美伦理91i| av剧情在线观看| 国产激情综合五月久久| 久久久加勒比| 亚洲一区中文字幕| 国产精品毛片av| 日韩在线电影一区| 国产精品黑丝在线播放| 国产成a人亚洲精v品在线观看| 亚洲成人直播| 好男人www社区| 国产成人综合在线| 黑丝av在线播放| 中文字幕第一区综合| 欧洲猛交xxxx乱大交3| 午夜在线成人av| 懂色av蜜臀av粉嫩av喷吹| 欧美一区二区三区小说| 午夜影院在线视频| 中文字幕亚洲欧美日韩在线不卡| av在线免费观看网址| 97超碰色婷婷| 先锋影音网一区二区| 国产精品一区二区三区免费| 成人羞羞在线观看网站| 91午夜在线观看| 日本va欧美va欧美va精品| www日本在线观看| 国产日韩精品一区二区三区在线| 欧美成欧美va| 色婷婷综合久久久中文字幕| 精品人妻伦一区二区三区久久| 日韩精品中文字幕有码专区| 国产鲁鲁视频在线观看特色| 91成人天堂久久成人| 96视频在线观看欧美| 久久亚洲国产精品日日av夜夜| 外国成人免费视频| 自慰无码一区二区三区| 狠狠色伊人亚洲综合成人| 国产肉体xxxx裸体784大胆| 中文字幕在线观看不卡| 日韩电影在线观看一区二区| 精品久久久久久久久久久久久久久 | 国产999精品久久久久久绿帽| 国内精品久久99人妻无码| 亚洲欧洲av另类| 日韩精品久久久久久免费| 精品国产乱码久久久久久久久| av电影在线播放高清免费观看| 91精品国产91久久久| 亚洲三级av| 91免费网站视频| 日本午夜精品一区二区三区电影| 在线免费看黄色片| 亚洲精品久久久蜜桃| 一区二区三区免费在线视频| 国产午夜精品免费一区二区三区| 蜜桃麻豆影像在线观看| 国产69精品久久久久9999apgf | 依人在线免费视频| 久久蜜桃香蕉精品一区二区三区| 久久久久亚洲av片无码下载蜜桃| 4438x成人网最大色成网站| 电影av一区| 国产999精品| 综合国产视频| 免费看的黄色大片| 99久久久无码国产精品| 精品一区免费观看| 日韩精品一区二区三区在线 | 精产国品一区二区三区| 亚洲欧洲一区二区三区| 伊人免费在线观看高清版| 中文国产亚洲喷潮| 亚洲电影有码| 亚洲欧洲国产日韩精品| 美女诱惑一区二区| 中文字幕伦理片| 欧美天堂一区二区三区| 成人av一区| 国产日韩精品入口| 天天综合国产| 人妻少妇偷人精品久久久任期| 亚洲激情第一区| 精品久久久免费视频| 欧美激情a在线| 国产图片一区| 成熟了的熟妇毛茸茸| 91免费精品国自产拍在线不卡| 国产成人无码精品亚洲| 精品视频—区二区三区免费| 2022成人影院| 亚洲成人自拍视频| 久久超碰97人人做人人爱| 51精品免费网站| 日韩欧美一级片| 国产资源在线观看入口av| 好吊色欧美一区二区三区| 香蕉久久夜色精品国产| 东京热无码av男人的天堂| 欧美女孩性生活视频| 3d玉蒲团在线观看| 国产精品毛片va一区二区三区| 亚洲日本国产| a级片在线观看| 欧美精品久久99久久在免费线| 黄视频在线观看网站| 国产精品二区三区| 久久激情一区| 麻豆网址在线观看| 精品盗摄一区二区三区| 偷拍自拍在线看| 午夜精品视频在线观看一区二区| 久久超碰97中文字幕| 国产精品日日夜夜| 国产亚洲视频在线| 国产一区二区三区国产精品| 欧美三级在线观看视频| 亚洲国产精品精华液2区45| av免费观看网址| 日韩av电影免费观看高清| 97精品97| 亚洲一区二区观看| 777久久久精品| 亚洲天堂资源| 99热都是精品| 国产午夜亚洲精品午夜鲁丝片| 国产模特av私拍大尺度 | 99久久精品国产亚洲| xxav国产精品美女主播| 六月丁香久久丫| 欧美男女交配视频| 精品美女国产在线| a毛片在线播放| 日本一区二区在线视频| 高潮精品一区videoshd| 亚洲自拍偷拍另类| 国产91露脸中文字幕在线|