亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于全站掃描的網(wǎng)站安全監(jiān)測方法與流程

文檔序號:11960141閱讀:541來源:國知局
一種基于全站掃描的網(wǎng)站安全監(jiān)測方法與流程

本發(fā)明屬于計算機(jī)網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,具體的涉及一種基于全站掃描的網(wǎng)站安全監(jiān)測方法。



背景技術(shù):

隨著我國國民經(jīng)濟(jì)和社會信息化進(jìn)程的全面加快,互聯(lián)網(wǎng)已經(jīng)成為人們工作和生活不可或缺的部分。越來越多的政府機(jī)關(guān)、銀行、企事業(yè)等單位為了適應(yīng)社會的發(fā)展,樹立自身良好的形象,擴(kuò)大社會影響,提升工作效率,均建立起自己的門戶網(wǎng)站。然而,由于網(wǎng)站是處于互聯(lián)網(wǎng)這樣一個相對開放的環(huán)境中,各類網(wǎng)頁應(yīng)用系統(tǒng)的復(fù)雜性和多樣性導(dǎo)致系統(tǒng)漏洞層出不窮,病毒木馬和惡意代碼網(wǎng)上肆虐,黑客入侵和篡改網(wǎng)站的安全事件時有發(fā)生,甚至有的篡改網(wǎng)站的事件直接升級成政治事件,嚴(yán)重危及國家安全和人民利益。

傳統(tǒng)網(wǎng)站安全防護(hù)技術(shù)已經(jīng)不能滿足目前安全需求,事前發(fā)現(xiàn)問題也顯得越來越重要,因此,亟需一種能夠高效準(zhǔn)確、合理地對網(wǎng)站安全性進(jìn)行監(jiān)測的方法。



技術(shù)實現(xiàn)要素:

本發(fā)明針對現(xiàn)有技術(shù)存在由于網(wǎng)站是處于互聯(lián)網(wǎng)這樣一個相對開放的環(huán)境中,各類網(wǎng)頁應(yīng)用系統(tǒng)的復(fù)雜性和多樣性導(dǎo)致系統(tǒng)漏洞層出不窮,病毒木馬和惡意代碼網(wǎng)上肆虐,黑客入侵和篡改網(wǎng)站的安全事件時有發(fā)生,甚至有的篡改網(wǎng)站的事件直接升級成政治事件,嚴(yán)重危及國家安全和人民利益等問題,提出一種基于全站掃描的網(wǎng)站安全監(jiān)測方法。

本發(fā)明的技術(shù)方案是:一種基于全站掃描的網(wǎng)站安全監(jiān)測方法,包括任務(wù)調(diào)度模塊、內(nèi)存管理模塊、DNS緩存模塊、WEB網(wǎng)頁異步下載模塊和內(nèi)容識別檢測模塊,包括以下步驟:

步驟一:從監(jiān)測任務(wù)表中取出要檢測的任務(wù)網(wǎng)站屬性,包括url地址、調(diào)度頻率;

步驟二:根據(jù)url中,利用DNS緩存技術(shù),取出url對應(yīng)的網(wǎng)絡(luò)地址;

步驟三:構(gòu)造HTTP請求,向服務(wù)建立連接,并發(fā)送請求,獲取其狀態(tài);

步驟四:如果狀態(tài)存在異常,則進(jìn)行報警;

步驟五:向服務(wù)器構(gòu)造HTTP請求,并下載網(wǎng)頁頁面;

步驟六:利用網(wǎng)頁快速分析算法,對網(wǎng)頁內(nèi)容進(jìn)行分析,并過濾掉不必要的標(biāo)簽和內(nèi)容;

步驟七:利用內(nèi)容編碼識別算法,對網(wǎng)頁內(nèi)容進(jìn)行編碼識別,并對網(wǎng)頁內(nèi)容進(jìn)行轉(zhuǎn)碼;

步驟八:利用中英文分詞識別算法,對轉(zhuǎn)碼后的內(nèi)容進(jìn)行中文分詞;

步驟九:對于網(wǎng)頁分析結(jié)果,利用暗鏈識別技術(shù),對網(wǎng)頁中存在的超鏈接進(jìn)行分析,如果是暗鏈,則進(jìn)行報警;

步驟十:對于網(wǎng)頁內(nèi)容,利用錯別字識別技術(shù),對網(wǎng)頁中的內(nèi)容進(jìn)行分析,如果存在錯別字,則進(jìn)行報警。

所述的基于全站掃描的網(wǎng)站安全監(jiān)測方法,所述網(wǎng)頁快速分析算法的步驟為:

步驟201:查看當(dāng)前字符,如果該字符屬于空格或者換行符,則跳過這些字符;

步驟202:如果是轉(zhuǎn)義字符,則跳過這些轉(zhuǎn)義字符;

步驟203:如果不是’<’符號,則將其當(dāng)做正文存入,否則轉(zhuǎn)到第四步;

步驟204:如果是注釋,則跳過所有注釋,否則轉(zhuǎn)到步驟205步;

步驟205:如果是a、link、base、frame、iframe、title、meta、img、style標(biāo)簽的任意一種,則對其標(biāo)簽的屬性進(jìn)行分析,如果是a標(biāo)簽,則采用Sunday算法取出a標(biāo)簽之間的內(nèi)容;

步驟206:直接跳過其它標(biāo)簽;

步驟207:如果已經(jīng)到文件結(jié)尾,則退出,否則回到步驟201。

所述的基于全站掃描的網(wǎng)站安全監(jiān)測方法,所述編碼識別算法的具體步驟為:

步驟301:獲取http回應(yīng)頭中的編碼;

步驟302:獲取html頁面的編碼;

步驟303:如果在步驟301和步驟302中獲取的編碼任意一個為空,則取非空的編碼集;如果兩者不同,則轉(zhuǎn)至第五步;

步驟304:根據(jù)非空的編碼集,對html已經(jīng)獲取到的內(nèi)容做轉(zhuǎn)碼,如果轉(zhuǎn)碼成功,則結(jié)束否,則轉(zhuǎn)至步驟305;

步驟305:清空編碼集,并調(diào)用自編寫的python編碼判斷模塊接口對該網(wǎng)頁內(nèi)容進(jìn)行判斷,獲取該內(nèi)容的編碼,并轉(zhuǎn)至步驟304,如果失敗,則編碼識別不成功。

所述的基于全站掃描的網(wǎng)站安全監(jiān)測方法,所述中英文分詞算法的具體步驟為:

步驟401:從要分詞的字符串最右邊匹配過的位置開始,判斷第一個字的長度(utf-8編碼);

步驟402:如果該字符是英文字符或者asscii字符,則表明該字符串將是一個英文單詞;否則轉(zhuǎn)到步驟404;

步驟403:如果前面已經(jīng)有識別的英文字符,并且該字符是空格或者非ascii字符,則視為本次英文單詞的結(jié)束,否則繼續(xù)向后匹配;

步驟404:從本字節(jié)開始向后回退一個字的長度,作為一個漢字,同時在詞庫中匹配以前已經(jīng)匹配成功的長度,如果匹配成功,則繼續(xù)向后回退,如果有未識別的字符,則將未識別的字符串放入到詞語隊列,否則視為不匹配,轉(zhuǎn)向步驟405;

步驟406:如果匹配不成功,如果之前有英文字符,則視為該英文字符已經(jīng)結(jié)束;同時將該字加入未識別字符隊列;并將已識別的詞語放入到分詞隊列中;

步驟407:更改分詞位置,如果已到開頭,則此次分詞結(jié)束,否則轉(zhuǎn)到步驟401。

所述的基于全站掃描的網(wǎng)站安全監(jiān)測方法,所述DNS緩存技術(shù)的過程主要為:將域名進(jìn)行hash計算,并在hash鏈表中查找是否存在,如果存在,是否DNS解析失敗或者該DNS地址已經(jīng)過期,如果是的話,則對該域名進(jìn)行解析,并將解析后的地址放入到hash鏈表中去;否則直接取出該域名的Internet地址。

所述的基于全站掃描的網(wǎng)站安全監(jiān)測方法,所述任務(wù)調(diào)度模塊,用于對狀態(tài)檢測和內(nèi)容檢測進(jìn)行任務(wù)調(diào)度,以便于網(wǎng)站監(jiān)測在特定的周期內(nèi)能夠完成。

所述的基于全站掃描的網(wǎng)站安全監(jiān)測方法,所述內(nèi)存管理模塊,對于所有的url掃描任務(wù)所需要的內(nèi)存進(jìn)行提前分配和序列化,以便于內(nèi)存的快速申請和統(tǒng)一管理。

所述的基于全站掃描的網(wǎng)站安全監(jiān)測方法,所述DNS緩存模塊,對于要請求的url進(jìn)行DNS地址緩存,提高其解析速度。

所述的基于全站掃描的網(wǎng)站安全監(jiān)測方法,所述WEB網(wǎng)頁異步下載模塊,對于各種不同傳輸方式的網(wǎng)頁進(jìn)行快速下載。

所述的基于全站掃描的網(wǎng)站安全監(jiān)測方法,所述內(nèi)容識別檢測模塊,主要包括網(wǎng)頁內(nèi)容編碼識別、中英文分詞、暗鏈識別、錯別字識別和敏感詞識別。

本發(fā)明的有益效果是:1 、本發(fā)明采用程序在啟動時,會根據(jù)本機(jī)IP地址和計算能力去任務(wù)總調(diào)度節(jié)點獲取的要監(jiān)測的站點范圍;同時獲取每個站點的檢測頻率。程序啟動之后,根據(jù)每個站點的檢測頻率設(shè)置超時時間,如果當(dāng)前時間大于超時時間,則開始進(jìn)行任務(wù)調(diào)度。為了加快網(wǎng)站DNS解析速度,我們實現(xiàn)了自己的DNS解析系統(tǒng)。主要實現(xiàn)方式是,首先將域名進(jìn)行hash計算,并在hash鏈表中查找是否存在,如果存在,是否DNS解析失敗或者該DNS地址已經(jīng)過期,如果是的話,則對該域名進(jìn)行解析,并將解析后的地址放入到hash鏈表中去;否則直接取出該域名的Internet地址;加快了DNS的解析速度。

2、本發(fā)明采用異步下載技術(shù),充分利用計算機(jī)資源,在操作系統(tǒng)最大打開文件數(shù)的情況下,保持每臺服務(wù)器日監(jiān)測5000站點的監(jiān)測能力??焖俚膆tml分析技術(shù)。一般的html分析一般是通過分析所有標(biāo)簽建立dom樹,既浪費內(nèi)存又耗費計算資源,而我們的實現(xiàn)方式是,采用快速的標(biāo)簽匹配技術(shù),過濾掉不需要分析的標(biāo)簽,既節(jié)省了內(nèi)存,又加快了html分析速度。準(zhǔn)確的html頁面編碼分析判斷能力,一般的html頁面編碼僅僅是通過頁面中的meta標(biāo)簽或者服務(wù)器返回的頁面編碼,這樣是完全不準(zhǔn)確的;我們的實現(xiàn)方式是,采用meta標(biāo)簽、服務(wù)器編碼返回值、以及本地編碼判斷程序進(jìn)行判斷,極大的提高了頁面編碼識別準(zhǔn)確率。強(qiáng)大的中文分詞技術(shù)。一般的中文分詞都是僅僅分析已知的中文詞匯,而對于未知的詞匯,如日期、英文單詞等分析的情況并不理想,我們的實現(xiàn)方式是,對于已知的中文詞匯,我們能在正確區(qū)分的基礎(chǔ)上,對于不能識別的詞匯,如日期等等,則把這些未知詞匯組合到一塊,很好的解決了這個問題。

附圖說明

圖1為網(wǎng)站監(jiān)測方法流程示意圖;

圖2為服務(wù)器構(gòu)成示意圖;

圖3為任務(wù)檢測調(diào)度模塊整體流程示意圖;

圖4為內(nèi)部存儲管理模塊整體功能流程示意圖;

圖5為DNS緩存模塊整體流程示意圖;

圖6為WEB異步下載模塊整體流程示意圖;

圖7為暗鏈識別過程示意圖;

圖8為錯別字識別過程示意圖。

具體實施方式

實施例1:結(jié)合圖1-圖8,一種基于全站掃描的網(wǎng)站安全監(jiān)測方法,包括任務(wù)調(diào)度模塊、內(nèi)存管理模塊、DNS緩存模塊、WEB網(wǎng)頁異步下載模塊和內(nèi)容識別檢測模塊,包括以下步驟:步驟一:從監(jiān)測任務(wù)表中取出要檢測的任務(wù)網(wǎng)站屬性,包括url地址、調(diào)度頻率;步驟二:根據(jù)url中,利用DNS緩存技術(shù),取出url對應(yīng)的網(wǎng)絡(luò)地址;步驟三:構(gòu)造HTTP請求,向服務(wù)建立連接,并發(fā)送請求,獲取其狀態(tài);步驟四:如果狀態(tài)存在異常,則進(jìn)行報警;步驟五:向服務(wù)器構(gòu)造HTTP請求,并下載網(wǎng)頁頁面;步驟六:利用網(wǎng)頁快速分析算法,對網(wǎng)頁內(nèi)容進(jìn)行分析,并過濾掉不必要的標(biāo)簽和內(nèi)容;步驟七:利用內(nèi)容編碼識別算法,對網(wǎng)頁內(nèi)容進(jìn)行編碼識別,并對網(wǎng)頁內(nèi)容進(jìn)行轉(zhuǎn)碼;步驟八:利用中英文分詞識別算法,對轉(zhuǎn)碼后的內(nèi)容進(jìn)行中文分詞;步驟九:對于網(wǎng)頁分析結(jié)果,利用暗鏈識別技術(shù),對網(wǎng)頁中存在的超鏈接進(jìn)行分析,如果是暗鏈,則進(jìn)行報警;步驟十:對于網(wǎng)頁內(nèi)容,利用錯別字識別技術(shù),對網(wǎng)頁中的內(nèi)容進(jìn)行分析,如果存在錯別字,則進(jìn)行報警。

網(wǎng)頁快速分析算法的步驟為:步驟201:查看當(dāng)前字符,如果該字符屬于空格或者換行符,則跳過這些字符;步驟202:如果是轉(zhuǎn)義字符,則跳過這些轉(zhuǎn)義字符;步驟203:如果不是’<’符號,則將其當(dāng)做正文存入,否則轉(zhuǎn)到第四步;步驟204:如果是注釋,則跳過所有注釋,否則轉(zhuǎn)到步驟205步;步驟205:如果是a、link、base、frame、iframe、title、meta、img、style標(biāo)簽的任意一種,則對其標(biāo)簽的屬性進(jìn)行分析,如果是a標(biāo)簽,則采用Sunday算法取出a標(biāo)簽之間的內(nèi)容;步驟206:直接跳過其它標(biāo)簽;步驟207:如果已經(jīng)到文件結(jié)尾,則退出,否則回到步驟201。

編碼識別算法的具體步驟為:步驟301:獲取http回應(yīng)頭中的編碼;步驟302:獲取html頁面的編碼;步驟303:如果在步驟301和步驟302中獲取的編碼任意一個為空,則取非空的編碼集;如果兩者不同,則轉(zhuǎn)至第五步;步驟304:根據(jù)非空的編碼集,對html已經(jīng)獲取到的內(nèi)容做轉(zhuǎn)碼,如果轉(zhuǎn)碼成功,則結(jié)束否,則轉(zhuǎn)至步驟305;步驟305:清空編碼集,并調(diào)用自編寫的python編碼判斷模塊接口對該網(wǎng)頁內(nèi)容進(jìn)行判斷,獲取該內(nèi)容的編碼,并轉(zhuǎn)至步驟304,如果失敗,則編碼識別不成功。

中英文分詞算法的具體步驟為:步驟401:從要分詞的字符串最右邊匹配過的位置開始,判斷第一個字的長度(utf-8編碼);步驟402:如果該字符是英文字符或者asscii字符,則表明該字符串將是一個英文單詞;否則轉(zhuǎn)到步驟404;

步驟403:如果前面已經(jīng)有識別的英文字符,并且該字符是空格或者非ascii字符,則視為本次英文單詞的結(jié)束。否則繼續(xù)向后匹配;步驟404:從本字節(jié)開始向后回退一個字的長度,作為一個漢字,同時在詞庫中匹配以前已經(jīng)匹配成功的長度,如果匹配成功,則繼續(xù)向后回退,如果有未識別的字符,則將未識別的字符串放入到詞語隊列,否則視為不匹配,轉(zhuǎn)向步驟405;步驟406:如果匹配不成功,如果之前有英文字符,則視為該英文字符已經(jīng)結(jié)束;同時將該字加入未識別字符隊列;并將已識別的詞語放入到分詞隊列中;步驟407:更改分詞位置,如果已到開頭,則此次分詞結(jié)束,否則轉(zhuǎn)到步驟401。

DNS緩存技術(shù)的過程主要為:將域名進(jìn)行hash計算,并在hash鏈表中查找是否存在,如果存在,是否DNS解析失敗或者該DNS地址已經(jīng)過期,如果是的話,則對該域名進(jìn)行解析,并將解析后的地址放入到hash鏈表中去;否則直接取出該域名的Internet地址。

任務(wù)調(diào)度模塊,用于對狀態(tài)檢測和內(nèi)容檢測進(jìn)行任務(wù)調(diào)度,以便于網(wǎng)站監(jiān)測在特定的周期內(nèi)能夠完成。內(nèi)存管理模塊,對于所有的url掃描任務(wù)所需要的內(nèi)存進(jìn)行提前分配和序列化,以便于內(nèi)存的快速申請和統(tǒng)一管理。DNS緩存模塊,對于要請求的url進(jìn)行DNS地址緩存,提高其解析速度。WEB網(wǎng)頁異步下載模塊,對于各種不同傳輸方式的網(wǎng)頁進(jìn)行快速下載。內(nèi)容識別檢測模塊,主要包括網(wǎng)頁內(nèi)容編碼識別、中英文分詞、暗鏈識別、錯別字識別和敏感詞識別。

WEB異步下載模塊,主要包括基于事件通知的異步I/O技術(shù)和基于線程池的WEB頁面下載模塊。

基于事件通知的異步I/O技術(shù):很明顯,基于阻塞的I/O或者基于輪詢的I/O技術(shù)不能滿足該網(wǎng)站監(jiān)測方法的要求:盡可能快的完成I/O操作和任務(wù)調(diào)度工作,從而使每個工作機(jī)盡可能的任務(wù)最大化。

從linux2.6版本之后,linux引進(jìn)了基于事件通知的epoll,主要有以下三個優(yōu)點:

1、 支持一個進(jìn)程打開大數(shù)目的socket描述符(FD);

select 最不能忍受的是一個進(jìn)程所打開的FD是有一定限制的,由FD_SETSIZE設(shè)置,默認(rèn)值是2048。對于那些需要支持的上萬連接數(shù)目的IM服務(wù)器來說顯然太少了。這時候你一是可以選擇修改這個宏然后重新編譯內(nèi)核,不過資料也同時指出這樣會帶來網(wǎng)絡(luò)效率的下降,二是可以選擇多進(jìn)程的解決方案(傳統(tǒng)的 Apache方案),不過雖然linux上面創(chuàng)建進(jìn)程的代價比較小,但仍舊是不可忽視的,加上進(jìn)程間數(shù)據(jù)同步遠(yuǎn)比不上線程間同步的高效,所以也不是一種完美的方案。不過 epoll則沒有這個限制,它所支持的FD上限是最大可以打開文件的數(shù)目,這個數(shù)字一般遠(yuǎn)大于2048,舉個例子,在1GB內(nèi)存的機(jī)器上大約是10萬左右,具體數(shù)目可以cat /proc/sys/fs/file-max察看,一般來說這個數(shù)目和系統(tǒng)內(nèi)存關(guān)系很大。

2、IO效率不隨FD數(shù)目增加而線性下降;

傳統(tǒng)的select/poll另一個致命弱點就是當(dāng)你擁有一個很大的socket集合,不過由于網(wǎng)絡(luò)延時,任一時間只有部分的socket是"活躍"的,但是select/poll每次調(diào)用都會線性掃描全部的集合,導(dǎo)致效率呈現(xiàn)線性下降。但是epoll不存在這個問題,它只會對"活躍"的socket進(jìn)行操作---這是因為在內(nèi)核實現(xiàn)中epoll是根據(jù)每個fd上面的callback函數(shù)實現(xiàn)的。那么,只有"活躍"的socket才會主動的去調(diào)用 callback函數(shù),其他idle狀態(tài)socket則不會,在這點上,epoll實現(xiàn)了一個"偽"AIO,因為這時候推動力在os內(nèi)核。在一些 benchmark中,如果所有的socket基本上都是活躍的---比如一個高速LAN環(huán)境,epoll并不比select/poll有什么效率,相反,如果過多使用epoll_ctl,效率相比還有稍微的下降。但是一旦使用idle connections模擬WAN環(huán)境,epoll的效率就遠(yuǎn)在select/poll之上了。

3、使用mmap加速內(nèi)核與用戶空間的消息傳遞

這點實際上涉及到epoll的具體實現(xiàn)了。無論是select,poll還是epoll都需要內(nèi)核把FD消息通知給用戶空間,如何避免不必要的內(nèi)存拷貝就很重要,在這點上,epoll是通過內(nèi)核于用戶空間mmap同一塊內(nèi)存實現(xiàn)的。

由此可見,在該網(wǎng)站監(jiān)測方法中使用epoll接口是最好的結(jié)果。如何使用epoll也是一項很重要的工作。

在該網(wǎng)站監(jiān)測方法中,在建立連接之后,先構(gòu)建該站點需要的相關(guān)任務(wù)信息,并將該指針傳遞給epoll,然后等待事件通知,并根據(jù)通知類型和站點屬性進(jìn)行相應(yīng)的操作。

在多線程環(huán)境下,同時操作epoll會引起不可預(yù)知的錯誤。因此,在該網(wǎng)站監(jiān)測方法中的解決方法就是在每次加入epoll時,加入EPOLL_ONESHOT標(biāo)志,在epoll完成事件通知之后,自動從監(jiān)控隊列中刪除。

基于線程池的WEB頁面下載模塊:a)線程池技術(shù):數(shù)據(jù)傳統(tǒng)處理方式為每個任務(wù)創(chuàng)建一個獨立的工作者線程后臺處理數(shù)據(jù),當(dāng)數(shù)據(jù)處理結(jié)束后,該 工作者線程也隨即結(jié)束,而后該線程被系統(tǒng)銷毀。 而線程池模式則在第一次數(shù)據(jù)處理前一次性創(chuàng)建指定數(shù)目的線程,這些線程不斷地從數(shù)據(jù)列表(本例中可以看作任務(wù)列表)中讀取數(shù)據(jù)單元并處理,處理一個數(shù)據(jù)后接著讀取下一個數(shù)據(jù)再處理,直到系統(tǒng)退出或者數(shù)據(jù)處理過程全部結(jié) 束這些線程才被銷毀。為了驗證這兩種方式對性能的影響,現(xiàn)在假設(shè)數(shù)據(jù)處理 量為 N ,數(shù)據(jù)處理總耗時為T,單個數(shù)據(jù)處理時間為△tp (time process ),單個線程的創(chuàng)建和銷毀時間分別為△tc (time create )和△tt (time terminate), 線程池中的線程個數(shù)為 a,由此得出未采用數(shù)據(jù)池的傳統(tǒng)數(shù)據(jù)處理方式的總耗時為:

T(傳統(tǒng)模式) = N*(△tc+ △tp+ △tt)

而采用線程池的數(shù)據(jù)處理模型時,則數(shù)據(jù)處理的總耗時T為:

T(線程池模式)= a*△tc + N*△tp + a*△tt

假設(shè)采用線程池模式帶來的時間優(yōu)化度為△T,則:

△T = T(傳統(tǒng)模式)-T(線程池模式)

得出:

△T=(N-a)*(△tc + △tt)

由此可以看出,當(dāng) N>a 時,線程池模式提高系統(tǒng)性能,而當(dāng) N<a 時,線 程池模式降低系統(tǒng)性能。在實際情況中,由于受到 CPU 處理能力和系統(tǒng)資源 的制約,線程池中合理的線程數(shù)一般分布在 0-30 之間,我們設(shè)置該線程池的數(shù)目為物理機(jī)的CPU內(nèi)核數(shù)乘以2。

b)Web頁面下載技術(shù):WEB服務(wù)端傳送頁面有兩種方式:基于總大小和chunk方式的。

如何識別這兩種方式?在http回應(yīng)頭中會有transfer-encoding 和 content-length這兩個字段的標(biāo)志。我們根據(jù)這兩個標(biāo)志來判斷頁面的傳輸方式。同時將該信息存儲到epoll屬性結(jié)構(gòu)體中。

A.基于總大小的傳輸方式

在開始接受html頁面之前,會根據(jù)回應(yīng)頭存儲相應(yīng)的總大小,并將每次接受的字節(jié)數(shù)初始化。每次有數(shù)據(jù)到來時,接收相應(yīng)的數(shù)據(jù)并存儲到文件中去,并更新接受字節(jié)總數(shù),如果已經(jīng)達(dá)到總大小,則停止接收,并關(guān)閉socket。

B.基于chunked的傳輸方式

Chunked編碼是http協(xié)議的一種編碼方式,Chunked編碼使用若干個Chunk串連而成,由一個標(biāo)明長度為0的chunk標(biāo)示結(jié)束。每個Chunk分為頭部和正文兩部分,頭部內(nèi)容指定下一段正文的字符總數(shù)(十六進(jìn)制的數(shù)字)和數(shù)量單位(一般不寫),正文部分就是指定長度的實際內(nèi)容,兩部分之間用回車換行(CRLF)隔開。在最后一個長度為0的Chunk中的內(nèi)容是稱為footer的內(nèi)容,是一些附加的Header信息。

根據(jù)此協(xié)議,我們在每次傳輸前,先獲取該chunk的大小,然后從web服務(wù)器中獲取chunk大小的字節(jié)數(shù)即可。然而比較困難的是我們采用的的是epoll的異步方式傳輸,因此我們要應(yīng)對每次傳輸過程中該chunk大小的字節(jié)不能取完的狀況;為此我們提前申請一塊內(nèi)存對本次傳輸進(jìn)行關(guān)聯(lián),存儲該次的相關(guān)屬性。

分詞效果舉例:通過上述算法,對兩段文字(一個是新聞段落,一個是英文段落)進(jìn)行分詞,效果如下:

(一)中文新聞段落舉例:

這一刻,整個甲骨文球館都沉默了。要知道在這之前,騎士的三分球是24投5中糟糕的一塌糊涂,而厄文命中這個三分的方式,是運球之后直接出手,在庫里面前用庫里最擅長的一招殺死比賽,厄文證明了自己在關(guān)鍵時刻,絕不僅僅只當(dāng)一個看客,這個球命中過后,勇士全隊都崩潰了,勝負(fù)再也沒有產(chǎn)生懸念,騎士最終93-89贏得勝利,大比分4-3奪得總冠軍。

分詞結(jié)果:

這一刻/,/整個/甲骨文/球館/都/沉默了/。/要知道/在這之前/,/騎士/的/三分球/是/24/投/5/中/糟糕/的/一塌糊涂/,/而/厄文/命中/這個/三分/的/方式/,/是/運球/之后/直接/出手/,/在/庫里/面前/用/庫里/最擅長/的/一招/殺死/比賽/,/厄文/證明了/自己/在/關(guān)鍵時刻/,/絕/不僅僅/只當(dāng)/一個/看客/,/這個/球/命中/過后/,/勇士/全隊/都/崩潰了/,/勝負(fù)/再也沒有/產(chǎn)生/懸念/,/騎士/最終/93-89/贏得/勝利/,/大比分/4-3/奪得/總冠軍/。/

(二)英文段落舉例:

Dad loved to play the mandolin for his family he knew we enjoyed singing, and hearing him play. He was like that. If he could give pleasure to others, he would, especially his family. He was always there, sacrificing his time and efforts to see that his family had enough in their life. I had to mature into a man and have children of my own before I realized how much he had sacrificed.

分詞結(jié)果:

Dad/loved/to/play/the/mandolin/for/his/family/he/knew/we/enjoyed/singing/and/hearing/him/play/He/was/like/that/If/he/could/give/pleasure/to/others/he/would/especially/his/family/He/was/always/there/sacrificing/his/time/and/efforts/to/see/that/his/family/had/enough/in/their/life/I/had/to/mature/into/a/man/and/have/children/of/my/own/before/I/realized/how/much/he/had/sacrificed。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1