本發明涉及計算機
技術領域:
:,尤其涉及一種多模式字符串匹配方法和裝置。
背景技術:
::在計算機領域,字符串匹配是研究熱點之一,比如在搜索操作、敏感詞過濾等應用中,都會涉及到字符串匹配的問題。一個好的字符串匹配的方式,能夠幫助應用減少cpu(centralprocessingunit,中央處理器)占用時間,提高應用的響應時間。多模式字符串匹配就是匹配的模式串不止一個,多模式串的匹配方法為:有n個模式串p1、p2、...、pn和一個文本主串t,在t中尋找n個模式串中的任一個是否在t中出現,是則匹配成功。在網絡安全、信息檢索、生物信息學等領域為了實現模式串的快速識別及定位,常采用多模式匹配算法。目前的多模式匹配算法主要是為模式集(模式集中包括n個模式串)預先構造各種數據結構,如ac(aho-corasickautomaton)自動機、二叉查找樹、決策樹等,然后再將文本串作為輸入來實現多模式匹配。目前的多模式字符串匹配算法中,例如基于流水線二叉搜索樹的大規模字符串匹配方法masm,該算法首先使用前綴樹對模式集中具有前綴包含關系的模式串進行壓縮,然后對壓縮后的模式集構建二叉搜索樹,最后在文本串中不斷地截取文本來遍歷二叉搜索樹實現匹配。然而,masn算法在進行模式集壓縮時,需要對整個模式集構建前綴樹,對海量模式串的壓縮需要消耗大量內存,容易引起內存耗盡從而導致無法完成壓縮過程;此外,在匹配過程中需要對整個二叉搜索樹進行遍歷,當模式集規模較大時容易導致二叉搜索樹深度較大, 從而降低查找效率。技術實現要素:本發明實施例提供一種多模式字符串匹配方法和裝置,用以提高多模式字符串匹配的匹配效率和匹配速度。本發明實施例提供一種多模式字符串匹配方法,將模式串中具有前綴包含關系的模式串壓縮到一個模式串中得到壓縮模式集;針對所述壓縮模式集中的每一模式串,如果其字符長度不超過預設長度,則將該模式串添加至前綴集中,如果其字符長度超過所述預設長度,則根據所述預設長度,截取該模式串中相應長度的字符子串,并將截取的字符子串添加至所述前綴集中;根據預設算法為所述前綴集構造ac自動機;以及所述方法,包括:針對待匹配的文本串,將當前滑動窗口所包含的字符依次輸入所述ac自動機中得到至少一個初次匹配位置;針對得到的每一初次匹配位置,如果該初次匹配位置匹配的字符串長度小于所述預設長度,則將該初次匹配位置和匹配的字符串添加至匹配結果集中;如果該初次匹配位置匹配的字符串長度等于所述預設長度,則將該初次匹配位置加入到二次匹配入口集合中;以及針對二次匹配入口集合中包含的每一入口位置分別進行二次匹配,并將進行二次匹配的入口位置和匹配的字符串添加至所述匹配結果集中。本發明實施例提供一種多模式字符串匹配裝置,包括:模式串預處理單元,用于將模式串中具有前綴包含關系的模式串壓縮到一個模式串中得到壓縮模式集;針對所述壓縮模式集中的每一模式串,如果其字符長度不超過預設長度,則將該模式串添加至前綴集中,如果其字符長度超過所述預設長度,則根據所述預設長度,截取該模式串中相應長度的字符子串,并將截取的字符子串添加至所述前綴集中;根據預設算法為所述前綴集構造 ac自動機;初次匹配位置確定單元,用于針對待匹配的文本串,將當前滑動窗口所包含的字符依次輸入所述ac自動機中得到至少一個初次匹配位置;第一匹配單元,用于針對得到的每一初次匹配位置,如果該初次匹配位置匹配的字符串長度小于所述預設長度,則將該初次匹配位置和匹配的字符串添加至匹配結果集中;二次匹配位置確定單元,用于針對得到的每一初次匹配位置,如果該初次匹配位置匹配的字符串長度等于所述預設長度,則將該初次匹配位置加入到二次匹配入口集合中;第二匹配單元,針對二次匹配入口集合中包含的每一入口位置分別進行二次匹配,并將進行二次匹配的入口位置和匹配的字符串添加至所述匹配結果集中。本發明實施例提供的多模式字符串匹配方法和裝置,使用由模式串前綴所構造的ac自動機對文本串的匹配入口進行快速篩選,過濾掉文本串中那些不可能匹配任何模式串的位置,與現有技術中需要將文本串中的每個字符都作為匹配入口進行匹配方法相比,提高了匹配效率;同時,所有較短的模式串都將在初次匹配階段中被匹配,進一步提升了匹配速度。本發明的其它特征和優點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發明而了解。本發明的目的和其他優點可通過在所寫的說明書、權利要求書、以及附圖中所特別指出的結構來實現和獲得。附圖說明此處所說明的附圖用來提供對本發明的進一步理解,構成本發明的一部分,本發明的示意性實施例及其說明用于解釋本發明,并不構成對本發明的不當限定。在附圖中:圖1為本發明實施例中,多模式字符串匹配方法的實施流程示意圖;圖2為本發明實施例中,多模式字符串匹配裝置的結構示意圖。具體實施方式為了提高多模式字符串匹配效率和匹配速度,本發明實施例提供了一種多模式字符串匹配方法和裝置。以下結合說明書附圖對本發明的優選實施例進行說明,應當理解,此處所描述的優選實施例僅用于說明和解釋本發明,并不用于限定本發明,并且在不沖突的情況下,本發明中的實施例及實施例中的特征可以相互組合。本發明實施例針對現有的多模式字符串匹配方法在處理海量模式串時的不足,提出了一種多模式字符串匹配方法。通過將模式串按首字符進行分類壓縮、提取模式串前綴構造ac自動機對文本串匹配入口進行篩選、以及對平衡二叉搜索樹進行分組查找等方法來實現模式串的高效匹配,以解決現有多模式字符串匹配方法內存消耗高、預處理時間長和匹配效率低等缺點。如圖1所示,為本發明實施例提供的多模式字符串匹配方法的實施流程示意圖,可以包括以下步驟:s11、對模式串進行預處理。將模式串中具有前綴包含關系的模式串壓縮到一個模式串中得到壓縮模式集;針對所述壓縮模式集中的每一模式串,如果其字符長度不超過預設長度,則將該模式串添加至前綴集中,如果其字符長度超過所述預設長度,則根據所述預設長度,截取該模式串中相應長度的字符子串,并將截取的字符子串添加至所述前綴集中;根據預設算法為所述前綴集構造ac自動機。s12、針對待匹配的文本串,將當前滑動窗口所包含的字符依次輸入所述ac自動機中得到至少一個初次匹配位置。初始時,可以預先設置滑動窗口的大小,較佳的,滑動窗口可以設置為最長模式串包含的字符數量的整數倍,例如,滑動窗口長度(即滑動窗口包含的字符數量)可以為最長模式串長度(即最長模式串包含字符數量)的20倍。s13、針對得到的每一初次匹配位置,如果該初次匹配位置匹配的字符串長度小于所述預設長度,則將該初次匹配位置和匹配的字符串添加至匹配結果集中;如果該初次匹配位置匹配的字符串長度等于所述預設長度,則將該初次匹配位置加入到二次匹配入口集合中。s14、針對二次匹配入口集合中包含的每一入口位置分別進行二次匹配,并將進行二次匹配的入口位置和匹配的字符串添加至所述匹配結果集中。應當理解,在執行步驟s11之前,還需要輸入數據,具體的,可以將模式集文件和待處理文本串文件讀取到計算機硬盤中,并將模式集文件從計算機硬盤讀取到計算機內存中。較佳的,模式集中的模式串可以按行存儲,以換行符為分隔符,每行代表一個模式串。基于此,較佳的,在步驟11中,在對模式串進行預處理時,可以按照字典序,對讀取的模式集文件中的所有模式串排序;逐個讀取排序后的模式串,為具有相同首字符的模式串構造前綴樹,然后根據構造的前綴樹,將其中具有前綴包含關系的模式串壓縮到一個模式串得到壓縮模式集。更佳的,每當具有相同首字符的模式串完成壓縮后,即可釋放掉其所使用的前綴樹。完成模式串的壓縮后,需要構造初次匹配所用的前綴ac自動機。首先構造前綴集:對壓縮模式集中的每一個模式串p,若|p|<l,則將p加入前綴集中,同時從壓縮模式集中刪除p;否則,將p的長為l的前綴加入到前綴集中。其中|p|表示模式串p所包含的字符數量,本發明中還可稱之為模式串p的長度,其中,l為預設長度,其取值為整數,較佳的,具體實施時,l可以取5到8之間的整數。在構造出前綴集之后,可以為構造的前綴集使用aho-corasick算法構造ac自動機。至此,完成了模式串中長度不大于l的模式串的ac自動機的構造。利用構造的ac自動機,可以完成長度小于l的模式串的匹配。具體的,可以將當前滑動窗口內所包含的字符依次輸入所構造的ac自動機中,檢查ac自動機產生的每一個初次匹配位置,若該初次匹配位置匹配的是長度小于l的字符串,則將該初次匹配位置和匹配的字符串加入到最終的輸出結果 集中;若該初次匹配位置匹配的是長度等于l的字符串,則將該初次匹配位置加入到二次匹配入口位置集合中,為了便于描述,本發明實施例中將二次匹配入口位置集合中包含的初次匹配位置稱為入口位置。至此,針對當前滑動窗口,完成了長度小于l的模式串的匹配。對于長度大于l的模式串,本發明實施例中,基于初次匹配得到的二次匹配入口位置集合,可以按照以下方法進行二次匹配:使用平衡二叉搜索樹哈希表實現平衡二叉搜索樹拆分。具體的,創建長度為預設長度的哈希表,例如,創建長度為10000的哈希表。通過特定的哈希函數,計算模式串壓縮得到的壓縮模式集中每一個模式串的哈希值;將具有相同哈希值的模式串按照字典序關系構造平衡二叉搜索樹,并與哈希表中下標為對應哈希值的項關聯。較佳的,本發明實施例中使用的哈希函數可以為:其中:hash(s)表示字符串s對應的哈希值;|s|表示字符串s包含的字符數量;s[i]表示字符串s的第i個字符,i=1,2,3…,n-1;l為預設值;r1,r2,…,rn-1為預設的散列值;k為哈希表的長度。以l取值為4,k為1000為例,則哈希函數可以為:需要說明的是,具體實施時,散列值r1,r2,…,rn-1可以為隨機值,較佳的,相鄰兩個散列值之間可以間隔一定的距離值,該距離值可以根據經驗值進行設定,可以通過一定的計算函數計算得到,本發明實施例對此不進行限定。較佳的,具體實施時,上述的平衡二叉搜索樹可以使用數組實現。基于此,步驟s14中,可以按照以下步驟進行二次匹配:步驟一、針對二次匹配入口集合中包含的每一入口位置,在待處理的文本串中截取以該入口位置為起點,以最長模式串包含的字符數量為長度的文本子串。步驟二、利用上述的特定哈希函數確定截取的文本子串的哈希值。步驟三、從哈希表中查找截取的文本子串的哈希值對應的平衡二叉搜索樹。步驟四、利用截取的文本子串遍歷查找到的平衡二叉搜索樹,如果截取的文本子串成功匹配到任一模式串,則將該入口位置和匹配到的模式串加入到匹配結果集中。至此,完成了當前滑動窗口對于長度大于等于l的模式串的匹配。具體實施時,若滑動窗口已經移動至文本串的末尾,則算法結束;否則,根據匹配情況將滑動窗口向后移動適當距離,開始進行初次匹配的步驟。為了更好的理解本發明實施例,以下結合具體的實施例對本發明實施例的實施過程進行詳細說明,可以包括以下步驟:步驟1、數據輸入,具體包括:步驟1a)將待匹配的文本文件和模式集文件輸入到計算機硬盤;步驟1b)將模式集文件從計算機硬盤讀取到計算機內存中。步驟2、對模式集進行壓縮,具體包括:步驟2a)對模式集中的模式串按照“字典序”從小到大進行排序;步驟2b)按順序遍歷未處理的模式串,讀取出具有相同首字符的模式串生成模式串(子)集合subset;步驟2c)基于subset構造前綴樹,定義前綴樹的每個節點包括3個域:①char:保存對應字符;②tag:標記該節點是否對應于某個模式串的末尾字符。若tag=1,則表示該節點對應某個模式串的末尾字符;若tag=0,則不是;③指向孩子節點的指針。基于此,步驟2c)可以按照以下過程實施:步驟2c1)創建根節點,創建指向前綴樹節點的指針node,創建索引變量i。步驟2c2)若subset中還有未處理的模式串,則讀取subset中下一個未處理的模式串p,令node指向前綴樹的根節點,令i為0;否則,結束過程。步驟2c3)若存在node的孩子節點,其char=p[i],則將node指向該孩子節點;否則,為node創建一個新的孩子節點,將其char設為p[i],tag設為0,然后將node指向該孩子節點。步驟2c4)將i增加1。若i≠|p|,則轉到步驟2c3);否則,將node所指節點的tag設為1,轉到步驟2c2)。步驟2d)遍歷步驟2c)所構造的前綴樹,實現對subset的壓縮。具體實施時,步驟2d)可以按照以下過程實施:步驟2d1)創建二進制標記向量vector,初始為空。創建字符串base_pattern,初始為空。(通過向vector和base_pattern的末尾添加元素,vector和base_pattern會不斷的增長。)創建指向前綴樹節點的指針node,初始指向前綴樹的根節點。步驟2d2)若node所指節點是葉子節點,則向vector末尾添加1,并將node節點中的char字符添加到base_pattern的末尾,然后將二元組(base_pattern,vector)作為元素,加入到壓縮模式集中,結束本次遞歸調用;否則,進入步驟2d3)。步驟2d3)若node所指節點的tag=1,則將1添加到vector末尾,同時將tag置為0;否則,將0添加到vector的末尾。將node節點中的char字符添加到base_pattern的末尾。步驟2d4)依次對node的孩子節點,遞歸調用步驟2d2)。調用時的參數為:node指向待處理的孩子節點,vector和base_pattern分別為當前的vector和base_pattern的一份副本。步驟2e)釋放步驟步驟2c)所構造前綴樹所占用的內存空間。步驟2f)若模式集中還有未處理的模式串,則轉到步驟2b);否則,步驟2結束。步驟3,構造前綴集,并為前綴集構造前綴ac自動機。具體的,步驟3可以按照以下過程實施:步驟3a)令l取5到8之間的整數。檢查步驟2中所產生的壓縮模式集中的每一個(base_pattern,vector)二元組,若|base_pattern|<l,則將base_pattern加入壓縮前綴集prefix_set中,同時從壓縮模式集中刪除(base_pattern,vector);否則,提取base_pattern長為l的前綴,將其加入到prefix_set中。步驟3b)使用aho-corasick算法為prefix_set構造相應的ac自動機。步驟4,基于壓縮模式集構造平衡二叉樹哈希表。較佳的,步驟4可以按照以下過程實施:步驟4a)創建長度為10000的數組:hash_table_1,其元素為(base_pattern,vector)二元組的集合,每個元素初始化為空集。遍歷壓縮模式集,對其中每一個二元組,使用如下哈希函數計算其base_pattern的哈希值:其中s為base_pattern。若hash(base_pattern)=value,則將該二元組放入hash_table_1[value]項中。步驟4b)創建長度為10000的數組:hash_table_2,其元素為平衡二叉搜索樹,每個元素初始化為空。創建索引變量i,令i取0~9999,依次遍歷hash_table_1[i]。若hash_table_1[i]非空,則按如下步驟構建平衡二叉搜索樹,平衡二叉搜索樹由數組tree實現,具體包括:步驟4b1)假設hash_table_1[i]中包含n個二元組,對這n個二元組,根據其base_pattern的字典序大小,由小到大進行排序。步驟4b2)創建長為n的數組tuples,其元素為二元組,將步驟4b1)中的排好序的二元組依次放入tuples的對應項中。創建數組tuples的索引變量 tuple_index,初始為0。步驟4b3)創建長為n+1的數組tree,其元素為(base_pattern,vector)二元組;創建數組tree的索引變量tree_index,tree_index指向二叉樹的當前節點,初始為1。創建指向左右孩子的索引l_child,r_child。步驟4b4)以(tuples,tuples_index,tree,tree_index)為輸入參數,設置當前節點的左孩子節點的索引l_child為2*tree_index;設置當前節點的右孩子節點的索引r_child為2*tree_index+1。步驟4b5)若l_child<n,則以(tuples,tuples_index,tree,l_child,tuples_index)為參數,遞歸調用步驟4b4);否則,執行步驟4b6);步驟4b6)將tuples[tuple_index]賦值給tree[tree_index],并將tuple_index增加1;步驟4b7)若r_child<n,則以(tuples,tuples_index,tree,r_child)為輸入參數,遞歸調用步驟4b4);否則,將tree關聯到hash_table_2[i]然后退出;步驟5、使用前綴ac自動機和平衡二叉搜索樹哈希表進行文本串匹配。具體的,可以包括以下步驟:步驟5a)假設文本串長度為m,在文本串上創建大小為window_size字節的虛擬滑動窗口,其window_size=20*max_pat_len中,max_pat_len為模式集中最長模式串長度。用區間[left,right]表示該滑動窗口,left表示窗口的左端點,right是窗口的右端點,初始時left=1,right=window_size。步驟5b)使用步驟3中構造的前綴ac自動機進行初次匹配。將[left,right]內所包含的字符依次輸入步驟3中所構造的前綴ac自動機,檢查ac自動機產生的每一個初次匹配位置,若該初次匹配位置匹配的是長度小于l的字符串,則將該初次匹配位置和匹配的字符串加入到最終的輸出結果集合results中;若該初次匹配位置匹配的是長度等于l的字符串,則將該初次匹配位置加入到二次匹配入口集合entrances中。令變量last_pos表示entrances中最大的位置。步驟5c)使用步驟4構造的平衡二叉搜索樹哈希表進行二次匹配。具體的,可以按照以下過程實施:創建變量last_match_pos記錄所有匹配成功的位置中最后的一處。對entrances中的每一個入口位置pos,執行以下步驟:步驟5c1)在文本串中截取以pos為起始位置,以min(max_pat_len,buf_size-pos+1)為長度的子串s,并計算s的哈希值:hash[s]。其中,buffer_size是指子串s的長度,即子串s包含的字符數量。步驟5c2)創建指向平衡二叉搜索樹節點的指針node,node初始指向hash_table_2[hash[s]]所關聯的平衡二叉搜索樹的根節點。步驟5c3)設node節點包含的二元組為(base_pattern,vector),創建索引變量i,用于遍歷vector中的每一位:若vector[i]=1,則從base_patttern中截取長度為i+1的前綴。若該前綴和s匹配,則將(pos,s)加入到最終結果集results中,將last_match_pos設為pos。步驟5c4)如果s的字典序小于base_pattern,則將node指向其左孩子節點;否則,將node指向其右孩子節點。步驟5c5)如果node節點為空,則結束;否則,轉到步驟5c3);步驟5d)若results中有新的元素加入,則令left為left+buffer_size–max_pat_len;否則,若last_match_pos=last_pos,則令left為m+1;若last_match_pos≠last_pos,則令left為m,最后令right為min(m,left+window_size)。其中,m是指子串s匹配完的最后的位置,即最后一個字符的位置。步驟5e)清空entrances集合。若right<m,則轉到步驟5b);否則,將[left,right]中的每個位置都加入到entrances集合,執行步驟5c)后退出。本發明實施例提供的多模式字符串匹配方法,在對模式集進行預處理時,按照首字符對模式串進行分類,每次僅對具有相同首字符的模式串進行預處理,克服了現有技術需要對整個模式集進行預處理從而造成內存占用量過大的缺陷,使得預處理過程的內存消耗明顯降低;其次,本發明實施例中使用由模 式串前綴所構造的ac自動機對文本串的匹配入口進行快速篩選,過濾掉文本串中那些不可能匹配任何模式串的位置,克服了現有方法需要將文本串的中每個字符都作為匹配入口進行匹配缺陷,提高了匹配效率。同時,所有較短的模式串都將在初次匹配階段中被匹配,進一步提升了匹配速度;再次,本發明實施例中,在預處理步驟中,對模式串集合按照哈希值進行分組,并對每個分組構造平衡二叉搜索樹,縮小了平衡二叉搜索樹的規模。在匹配階段,僅需要根據待匹配字符串的哈希值從哈希表中找到對應的平衡二叉搜索樹進行搜索,克服了現有方法需要遍歷由整個模式集所構建的平衡二叉搜索樹的缺陷,使得匹配速度得以提升。基于同一發明構思,本發明實施例中還提供了一種多模式字符串匹配裝置,由于該裝置解決問題的原理與多模式字符串匹配方法相似,因此該裝置的實施可以參見方法的實施,重復之處不再贅述。如圖2所示,為本發明實施例提供的多模式字符串匹配裝置的結構示意圖,可以包括:模式串預處理單元21,用于將模式串中具有前綴包含關系的模式串壓縮到一個模式串中得到壓縮模式集;針對所述壓縮模式集中的每一模式串,如果其字符長度不超過預設長度,則將該模式串添加至前綴集中,如果其字符長度超過所述預設長度,則根據所述預設長度,截取該模式串中相應長度的字符子串,并將截取的字符子串添加至所述前綴集中;根據預設算法為所述前綴集構造ac自動機;初次匹配位置確定單元22,用于針對待匹配的文本串,將當前滑動窗口所包含的字符依次輸入所述ac自動機中得到至少一個初次匹配位置;第一匹配單元23,用于針對得到的每一初次匹配位置,如果該初次匹配位置匹配的字符串長度小于所述預設長度,則將該初次匹配位置和匹配的字符串添加至匹配結果集中;二次匹配位置確定單元24,用于針對得到的每一初次匹配位置,如果該初 次匹配位置匹配的字符串長度等于所述預設長度,則將該初次匹配位置加入到二次匹配入口集合中;第二匹配單元25,針對二次匹配入口集合中包含的每一入口位置分別進行二次匹配,并將進行二次匹配的入口位置和匹配的字符串添加至所述匹配結果集中。較佳的,本發明實施例提供的多模式字符串匹配裝置,還可以包括第一確定單元和關聯單元,其中:所述第一確定單元,用于利用預設的哈希函數確定所述壓縮模式集中包含的每一模式串對應的第一哈希值;所述關聯單元,用于將具有相同哈希值的模式串按照字典序關系,構造平衡二叉搜索樹,并與哈希表中對應哈希值的項關聯;所述第二匹配單元25,具體用于針對二次匹配入口集合中包含的每一入口位置,在所述文本串中截取以該入口位置為起點,以最長模式串包含的字符數量為長度的文本子串;利用所述哈希函數確定所述文本子串的第二哈希值;從所述哈希表中查找所述第二哈希值對應的平衡二叉搜索樹;利用所述文本子串遍歷查找到的平衡二叉搜索樹,如果所述文本子串成功匹配到任一模式串,則將該入口位置和匹配到的模式串加入到所述匹配結果集中。較佳的本發明實施例使用的哈希函數可以為:其中:hash(s)表示字符串s對應的哈希值;|s|表示字符串s包含的字符數量;s[i]表示字符串s的第i個字符,i=1,2,3…,n-1;l為預設值;r1,r2,…,rn-1為預設的散列值;k為哈希表的長度。可選的,本發明實施例提供的多模式字符串匹配裝置,還包括排序單元,其中:所述排序單元,用于在所述模式串預處理單元將模式串中具有前綴包含關 系的模式串壓縮到一個模式串中得到壓縮模式集之前,將所有模式串按照字典序進行排序;所述模式串預處理單元21,具體用于為具有相同首字符的模式串構造前綴樹;根據構造的前綴樹,將具有前綴包含關系的模式串壓縮到一個模式串中得到壓縮模式集。可選的,本發明實施例提供的多模式字符串匹配裝置,還包括:釋放單元,用于在所述模式串預處理單元根據構造的前綴樹,將具有前綴包含關系的模式串壓縮到一個模式串中之后,釋放所述壓縮模式集包含的模式串所使用的前綴樹。為了描述的方便,以上各部分按照功能劃分為各模塊(或單元)分別描述。當然,在實施本發明時可以把各模塊(或單元)的功能在同一個或多個軟件或硬件中實現。本領域內的技術人員應明白,本發明的實施例可提供為方法、系統、或計算機程序產品。因此,本發明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產品的形式。本發明是參照根據本發明實施例的方法、設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中 的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。盡管已描述了本發明的優選實施例,但本領域內的技術人員一旦得知了基本創造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權利要求意欲解釋為包括優選實施例以及落入本發明范圍的所有變更和修改。顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和范圍。這樣,倘若本發明的這些修改和變型屬于本發明權利要求及其等同技術的范圍之內,則本發明也意圖包含這些改動和變型在內。當前第1頁12當前第1頁12