亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于JMS的一種消息過(guò)濾改進(jìn)算法

        2012-08-06 12:51:16巫湘林
        關(guān)鍵詞:分類(lèi)

        巫湘林

        桂林理工大學(xué)信息科學(xué)與工程學(xué)院 廣西 541004

        0 前言

        隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,軟件也逐漸向分布式,多平臺(tái)下應(yīng)用,而消息中間件為解決這類(lèi)軟件間通信提供了便捷。消息中間件的發(fā)布/訂閱模式得到了廣泛應(yīng)用,主要是通過(guò)消息代理使消息在提供者與消費(fèi)者間可以實(shí)現(xiàn)靈活的傳遞。JMS(Java message service)是Sun公司提出的一種統(tǒng)一消息中間件系統(tǒng)接口的規(guī)范,給出了消息中間件互相訪問(wèn)的標(biāo)準(zhǔn)方法,支持同步與異步的兩種通信方式。JMS解決了企業(yè)級(jí)軟件開(kāi)發(fā)過(guò)程中的資源分配,組件重用等問(wèn)題,有效提高了軟件的健壯性。

        1 JMS發(fā)布與訂閱模式

        JMS定義了點(diǎn)對(duì)點(diǎn)、發(fā)布/訂閱兩種消息傳遞模式。點(diǎn)對(duì)點(diǎn)模式中,每個(gè)創(chuàng)建的消息先保留在隊(duì)列中,并且發(fā)送者知道惟一的接收者地址,等待恰當(dāng)?shù)臅r(shí)候才將消息發(fā)送給接收者。在發(fā)布/訂閱模式中,發(fā)布者將消息發(fā)送到一個(gè)主題,系統(tǒng)負(fù)責(zé)將消息發(fā)送給所有對(duì)該主題感興趣的訂閱者。其優(yōu)勢(shì)是同一時(shí)間可能多個(gè)訂閱者接收同一個(gè)消息,不必多次建立連接,節(jié)省了網(wǎng)絡(luò)資源,同時(shí)提高了消息傳遞的靈活性。

        2 JMS傳統(tǒng)的消息過(guò)濾方式

        消息在JMS的整個(gè)消息傳遞過(guò)程中作為媒介連接著發(fā)送者與接收者。消息包含消息頭,消息屬性和消息體。消息頭包含了消息標(biāo)識(shí)與路由的值;消息體包含了消息的實(shí)際內(nèi)容。消息屬性包含了一些特定的應(yīng)用程序?qū)傩?、JMS定義的屬性和用戶自定義的屬性,通過(guò)這些屬性為消息過(guò)濾提供了保障。消息消費(fèi)者通過(guò)對(duì)消息頭字段和屬性指定感興趣的內(nèi)容,并以字符串的形式將過(guò)濾條件送至消息選擇器,這樣保證了消息消費(fèi)者只會(huì)接受到自己指定的消息。

        3 改進(jìn)的消息過(guò)濾算法

        傳統(tǒng)的消息選擇方式下,訂閱列表中每個(gè)消息選擇器都會(huì)被JMS提供者進(jìn)行匹配處理,當(dāng)滿足條件時(shí)才會(huì)將這個(gè)消息發(fā)送給訂閱者。對(duì)于消息發(fā)布與訂閱者數(shù)量比較多時(shí)會(huì)存在許多相同或相似的訂閱條件,傳統(tǒng)的做法并沒(méi)有考慮利用這些共同點(diǎn)來(lái)提高消息匹配效率。文獻(xiàn)3中提出的算法主要解決了相同屬性而值不同的多個(gè)訂閱條件的消息過(guò)濾情況。文獻(xiàn)4中提出的算法主要解決了單個(gè)訂閱條件下各個(gè)屬性間的邏輯關(guān)系不同的消息過(guò)濾情況。本文將以上兩種算法思想結(jié)合得到一種新的消息過(guò)濾算法。

        首先準(zhǔn)備前期工作,對(duì)訂閱條件進(jìn)行部分調(diào)整:

        (1) 對(duì)所有的消息選擇器進(jìn)行預(yù)處理,調(diào)整所有邏輯操作符and連接的屬性使之排在選擇器前面。以下是消息選擇器的條件表達(dá)式示例:

        (a) S1=(BookName =’java basis’) or(NumberOfBuys >50)and (Price<20);

        (b) S2=(BookName=’c++ basis’) and (NumberOfBuys>40)or (author =’simth’);

        (c) S3=(BookName=’ java basis’) or (NumberOfBuys>40)or (author =’simth’);

        第一個(gè)消息選擇器的條件表達(dá)式調(diào)整為:S1=(NumberOf Buys >50) and (Price<20)or (BookName =’java basis’);其它兩個(gè)消息選擇器不需要調(diào)整。

        (2) 將調(diào)整好的訂閱條件建立一個(gè)訂閱條件列表Subs_list。

        (3) 建立一個(gè)保存所有訂閱條件的屬性列表Pro_list。并將每個(gè)訂閱條件的屬性分解后按邏輯符=,>,<分成三類(lèi)并按值從小到大的順序存入屬性分類(lèi)列表。屬性分類(lèi)列表結(jié)構(gòu)如圖1所示。

        圖1 屬性分類(lèi)列表

        (4) 建立一個(gè)包含兩個(gè)分支的訂閱條件雙向鏈表Double_list,左端表示訂閱條件屬性間的邏輯關(guān)系,右端表示一個(gè)訂閱條件屬性所在Pro_list中索引位置。其結(jié)構(gòu)如圖2所示。

        圖2 訂閱條件雙向鏈表

        改進(jìn)的消息過(guò)濾算法如下:

        (1) 遍歷訂閱列表,如果訂閱條件在Double_list中不存在,則將該訂閱條件添加到Double_list的鏈表中。

        (2) 對(duì)于訂閱條件的每一個(gè)屬性分支,查找Pro_list,若屬性分支在Pro_list中存在,則將它在pro_list中的索引位置保存在Double_list的右端鏈表中;如果屬性在Pro_list中不存在,將該屬性添加到pro_list中,同時(shí)將其索引位置保存在Double_list的右端鏈表中。最后將屬性間的邏輯關(guān)系保存在Double_list的左端鏈表中。

        (3) 將發(fā)送過(guò)來(lái)的事件進(jìn)行解析,依次按照事件包含的各個(gè)屬性做出不同的操作:遇到屬性使用“=”運(yùn)算符時(shí),在屬性分類(lèi)列表中使用二分查找算法查找與事件相同的那個(gè)屬性進(jìn)行匹配。遇到屬性使用“<”運(yùn)算符時(shí),在屬性分類(lèi)列表中使用二分查找算法查找與包含小于該事件屬性值的最大相同屬性P及P左端的屬性進(jìn)行匹配,遇到屬性使用“>”運(yùn)算符時(shí),在屬性分類(lèi)列表中使用二分查找算法查找與包含大于該事件屬性值的最小相同屬性P及P右端的屬性進(jìn)行匹配。最后將匹配了的屬性存入匹配列表match_subs。

        (4) 遍歷Double_list的左端,以下分三種情況:

        ① 如果訂閱條件邏輯符全部是and,則依次將Double_list右端的屬性索引所指的Pro_list的屬性與match_subs比較,其中出現(xiàn)一個(gè)false值,不再考慮其后的屬性索引所指的值,直接標(biāo)記此訂閱條件匹配值為false,否則置為true。

        ② 如果訂閱條件邏輯符全部為or,則依次將Double_list右端的屬性索引所指的Pro_list的屬性與match_subs比較,其中出現(xiàn)一個(gè)true值,不再考慮其后的屬性索引所指的值,直接標(biāo)記此訂閱條件匹配值為true,否則置為flase。

        ③ 如果訂閱條件邏輯符包含and 與or,則依次將Double_list右端的屬性索引所指的Pro_list的屬性與match_subs比較。對(duì)于and連接的屬性數(shù)量為and的數(shù)量加1,如果匹配結(jié)果全為true,則標(biāo)記訂閱條件匹配值為true,否則跳過(guò)and連接的屬性,接下來(lái)or連接的屬性按b的情況進(jìn)行判斷。

        (5) 將完全匹配的結(jié)果保存在訂閱列表中。

        4 算法性能分析

        JMS傳統(tǒng)的消息過(guò)濾算法沒(méi)有考慮到每個(gè)訂閱條件內(nèi)部的關(guān)系,缺乏消息匹配的靈活性。而改進(jìn)的消息過(guò)濾算法中,每個(gè)訂閱條件屬性按邏輯操作符的優(yōu)先順序進(jìn)行了位置的調(diào)整,然后再拆分了訂閱條件的屬性,按照屬性名的不同進(jìn)行分類(lèi),減少了JMS提供者對(duì)重復(fù)消息匹配次數(shù)。但改進(jìn)后的消息過(guò)濾算法要消耗訂閱條件屬性調(diào)整、分解時(shí)間以及對(duì)匹配了的屬性列表查找時(shí)間。

        在比較傳統(tǒng)的消息過(guò)濾算法與改進(jìn)的消息過(guò)濾算法的基礎(chǔ)上可知,在訂閱者數(shù)量不多情況下兩種算法的匹配時(shí)間差不多。但是對(duì)于訂閱者數(shù)量多并且有多數(shù)訂閱條件相似度很高的情況下,改進(jìn)后的過(guò)濾算法可大大減少重復(fù)信息的匹配時(shí)間,從而提高對(duì)整個(gè)系統(tǒng)的消息處理效率。

        5 小結(jié)

        對(duì)傳統(tǒng)的消息過(guò)濾機(jī)制,不能快速處理大量相同或相似消息,通過(guò)運(yùn)用改進(jìn)的算法,消息處理效率將大幅度提升,也為運(yùn)用這種消息處理機(jī)制的系統(tǒng)開(kāi)發(fā)提供了一定的借鑒作用。

        [1] Mark Richards, Richard Monson-haefel, David A.Chapppell.JAVA Message Service(閆懷志)譯.北京.電子工業(yè)出版社.2010.

        [2] 王偉卿,孫莉.基于Java消息服務(wù)的消息中間件的應(yīng)用研究[J].計(jì)算機(jī)技術(shù)與發(fā)展.2009.

        [3] 鄭偉,寇應(yīng)展,陳財(cái)林,徐士超.基于公平謂詞法的JMS消息過(guò)濾改進(jìn)算法[J].軍械工程學(xué)院學(xué)報(bào).2008.

        [4] 張彩云,康亞男,成汝震.基于內(nèi)容的發(fā)布/訂閱模型中高效的匹配算法[J].河北師范大學(xué)學(xué)報(bào).2009.

        猜你喜歡
        分類(lèi)
        2021年本刊分類(lèi)總目錄
        分類(lèi)算一算
        垃圾分類(lèi)的困惑你有嗎
        大眾健康(2021年6期)2021-06-08 19:30:06
        星星的分類(lèi)
        我給資源分分類(lèi)
        垃圾分類(lèi),你準(zhǔn)備好了嗎
        分類(lèi)討論求坐標(biāo)
        數(shù)據(jù)分析中的分類(lèi)討論
        按需分類(lèi)
        教你一招:數(shù)的分類(lèi)
        亚洲a∨天堂男人无码| 又大又长粗又爽又黄少妇视频| 女人被狂躁高潮啊的视频在线看| 日韩精品大片在线观看| 久久久久久人妻一区二区无码Av | 男女性杂交内射女bbwxz| 精品午夜福利无人区乱码一区| 国产丝袜精品不卡| 国产成人av一区二区三| 国产性自爱拍偷在在线播放| 天天弄天天模| 色www亚洲| 水蜜桃在线观看一区二区国产| 无人区乱码一区二区三区| 怡红院免费的全部视频| 2021年最新久久久视精品爱| 国产精品成年人毛片毛片| 中文有码无码人妻在线| 性一交一乱一伦a片| 亚洲精品自拍视频在线观看| 国产日产亚洲系列首页| 专干老熟女视频在线观看| 在线观看免费a∨网站| 免费人成视频网站在线观看不卡| 国产影片一区二区三区| 97精品超碰一区二区三区| 久久精品无码一区二区乱片子| 青青草在线成人免费视频| 亚洲精品国产精品乱码视色| 中文字幕久无码免费久久| 激情中文丁香激情综合| 久久精品亚洲94久久精品| 久久亚洲av无码西西人体 | 国产精品免费精品自在线观看| 中文字幕无码日韩欧毛| 日本国产一区二区在线观看| 无码熟妇人妻av影音先锋| 国产高潮刺激叫喊视频| 国产黑色丝袜在线观看网站91| 国产成人精品无码免费看| 朝鲜女子内射杂交bbw|