本發明專利技術公開了一種用于訪問關鍵字的方法和裝置,其中,該方法包括:獲取關鍵字對應的存儲位置,其中,所述該關鍵字對應的存儲位置是:在首次訪問該關鍵字時,根據該關鍵字從哈希表獲得、并記錄的該關鍵字的鍵值的存儲位置;根據獲取的存儲位置訪問該關鍵字的鍵值。本發明專利技術實施例通過查找哈希表獲得關鍵字的鍵值的存儲位置后,將該存儲位置記錄下來,隨后再次訪問該關鍵字時只需根據記錄的該存儲位置即可獲取或設置鍵值。減少了重復的計算過程,節省了時間,提高了效率。
【技術實現步驟摘要】
本專利技術涉及信息處理領域,更具體地,涉及一種用于訪問關鍵字的方法及裝置。
技術介紹
目前,哈希表廣泛應用于網絡數據包處理領域,如IP路由查找、數據包分類、負載均衡和網絡安全系統等。在這些應用中,哈希表通常用于管理網絡中的并發連接會話,以支持進一步的流粒度分析與處理。在高速網絡環境下,并發連接數量龐大,可達數十萬之多。有時需要利用哈希表訪問關鍵字,即將關鍵字(key)通過哈希表映射到鍵值(value),如圖I所示為現有哈希表的映射關系圖,訪問(包括查詢get O和賦值set O)關鍵字時需要將關鍵字通過哈希函數映射到鍵值。然而,從關鍵字到鍵值的映射需要經過復雜的計算,因此,在經常訪問關鍵字,特別是頻繁訪問關鍵字時的情形下,將嚴重影響性能,降低工作效率,并造成資源浪費。
技術實現思路
有鑒于此,本專利技術實施例的目的是提出一種用于訪問關鍵字的方法和裝置,其能夠便捷地存取關鍵字的鍵值。為了達到上述目的,本專利技術實施例提出一種用于訪問關鍵字的方法,包括以下步驟獲取關鍵字對應的存儲位置;其中,所述關鍵字對應的存儲位置是在首次訪問該關鍵字時,根據該關鍵字從哈希表獲得、并記錄的該關鍵字的鍵值的存儲位置;根據獲取的存儲位置訪問該關鍵字的鍵值。本專利技術實施例是根據保存有關鍵字到關鍵字的鍵值的存儲位置的映射關系的哈希表,來獲得并記錄某個關鍵字的鍵值的存儲位置,隨后再次訪問該關鍵字時只需根據記錄的該存儲位置就可以獲取或設置鍵值。因此,減少了重復的計算過程,節省了時間,提高了效率,并且使用頻繁時還可以提高系統的性能,顯著提高了用戶體驗。作為上述技術方案的優選,在首次訪問該關鍵字時,無法從哈希表獲得該關鍵字的鍵值的存儲位置時,在哈希表中建立關鍵字到該關鍵字的鍵值的存儲位置的映射關系。作為上述技術方案的優選,在哈希表中建立關鍵字到該關鍵字的鍵值的存儲位置的映射關系的步驟包括為關鍵字新建鍵值并存儲;獲得鍵值的存儲位置;將所述關鍵字到所述鍵值的存儲位置的映射關系存儲至哈希表。本方案給出了對關鍵字的訪問進行封裝的方法。作為上述技術方案的優選,所述為關鍵字新建鍵值并存儲的步驟包括為關鍵字新建鍵值并存儲至預先建立的數據存儲結構中。作為上述技術方案的優選,所述預先建立的數據存儲結構包括數組或鏈表。當所述數據存儲結構為數組時,鍵值的存儲位置為數組下標;當所述數據存儲結構為鏈表時,鍵值的存儲位置為鏈表的節點序號。本方案給出了優選的兩種數據存儲結構。作為上述技術方案的優選,當使用訪問器訪問關鍵字時,所述方法還包括將獲得的存儲位置輸入訪問器。本專利技術實施例還提出一種用于訪問關鍵字的裝置,包括獲取模塊,用于獲取關鍵字對應的存儲位置;其中,所述關鍵字對應的存儲位置是在首次訪問該關鍵字時,根據該關鍵字從哈希表獲得、并記錄的該關鍵字的鍵值的存儲位置;訪問模塊,用于根據獲取的存儲位置訪問該關鍵字的鍵值。作為上述技術方案的優選,所述裝置還包括注冊模塊,用于在首次訪問該關鍵字時,無法從哈希表獲得該關鍵字的鍵值的存儲位置時,在哈希表中建立關鍵字到該關鍵字的鍵值的存儲位置的映射關系。作為上述技術方案的優選,所述注冊模塊用于為關鍵字新建鍵值并存儲;獲得鍵值的存儲位置;將所述關鍵字到所述鍵值的存儲位置的映射關系存儲至哈希表。作為上述技術方案的優選,所述注冊模塊用于為關鍵字新建鍵值并存儲預先建立的數據存儲結構中。作為上述技術方案的優選,所述預先建立的數據存儲結構包括數組或鏈表。當所述數據存儲結構為數組時,鍵值的存儲位置為數組下標;當所述數據存儲結構為鏈表時,鍵值的存儲位置為鏈表的節點序號。本專利技術的其它特征和優點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本專利技術而了解。本專利技術的目的和其他優點可通過在所寫的說明書、權利要求書、以及附圖中所特別指出的結構來實現和獲得。下面通過附圖和實施例,對本專利技術實施例的技術方案做進一步的詳細描述。附圖說明附圖用來提供對本專利技術實施例的進一步理解,并且構成說明書的一部分,與本專利技術的實施例一起用于解釋本專利技術,并不構成對本專利技術實施例的限制。在附圖中圖I是目前關鍵字通過哈希表映射到鍵值的示意圖;圖2是本專利技術優選實施例提出的訪問關鍵字的方法的流程圖;圖3是本專利技術一具體實施例提出的訪問關鍵字的方法的流程圖;圖4是本專利技術另一具體實施例提出的訪問關鍵字的方法的示意圖;圖5是本專利技術優選實施例提出的訪問關鍵字的裝置的結構示意圖;圖6是本專利技術一具體實施例提出的訪問關鍵字的裝置的結構示意圖。具體實施例方式以下結合附圖對本專利技術的優選實施例進行說明,應當理解,此處所描述的優選實施例僅用于說明和解釋本專利技術實施例,并不用于限定本專利技術實施例。如圖2所示為本專利技術優選實施例提出的一種用于訪問關鍵字的方法,包括步驟S21 :獲取關鍵字對應的存儲位置;其中,所述關鍵字對應的存儲位置是在首次訪問該關鍵字時,根據該關鍵字從哈希表獲得、并記錄的該關鍵字的鍵值的存儲位置;步驟S22 :根據獲取的存儲位置訪問該關鍵字的鍵值;本專利技術實施例是根據保存有關鍵字到關鍵字的鍵值的存儲位置的映射關系的哈希表,來獲得并記錄某個關鍵字的鍵值的存儲位置,隨后再次訪問該關鍵字時只需根據記錄的該存儲位置就可以獲取或設置鍵值。因此,減少了重復的計算過程,節省了時間,提高了效率,并且使用頻繁時還可以提高系統的性能,顯著提高了用戶體驗。下面通過其他具體實施例來對本專利技術實施例提出的用于訪問關鍵字的方法進行詳細說明。如圖3所示為本專利技術提出的一種用于訪問關鍵字的方法的具體實施例,在本實施例中,關鍵字的鍵值存儲在預先建立的數組中。具體地,該方法包括以下步驟步驟S31 :首次對關鍵字Keyl進行訪問時,在哈希表中查找是否存在關鍵字Keyl對應的數組下標;若是,執行步驟S34 ;若否,執行步驟S32。步驟S32 :為關鍵字Keyl新建鍵值valuel存儲到預先建立的數組中。其中,數組為較佳的數據存儲結構。因為數組是將元素在內存中連續存放,由于每個元素占用內存相同,因此通過數組下標就可以迅速訪問數組中任何元素,適用于需要快速訪問數據的情形。優選地,數據存儲結構還可以為鏈表。步驟S33 :將鍵值valuel在數組中的存儲位置即數組下標和關鍵字Keyl的映射關系存儲至哈希表中。若數據存儲結構為鏈表,鍵值在數據存儲結構中的存儲位置為鏈表的節點序號。上述步驟S32和步驟S33可以稱為注冊步驟(register())。步驟S34 :根據從哈希表獲得的關鍵字Keyl對應的數組下標訪問數組以獲取或設置關鍵字Keyl的鍵值valuel。步驟S35 :記錄關鍵字Keyl對應的數組下標。該步驟是本方案中的關鍵步驟,優選地,該步驟中所指的記錄是臨時存儲,只在固定訪問關鍵字Keyl的范圍內有效。這樣不會增加額外的存儲負擔。應當注意的是,上述步驟S34和步驟S35的執行順序可以互換,也可以同時執行。此后,若再次訪問關鍵字Keyl,則可以根據記錄的數組下標訪問數組以獲取或設置關鍵字Keyl的鍵值。而無需再根據關鍵字Keyl去查找哈希表。本實施例是在根據哈希表從關鍵字映射到鍵值的基礎上新增了數組,將原本關鍵字通過哈希表映射的鍵值存儲到新增的數組中,而將數組下標放入哈希表中。如此,僅在第一次訪問該關鍵字時需要將該關鍵字通過哈希表映射得到數組本文檔來自技高網...
【技術保護點】
一種用于訪問關鍵字的方法,其特征在于,包括以下步驟:獲取關鍵字對應的存儲位置,其中,所述關鍵字對應的存儲位置是:在首次訪問該關鍵字時,根據該關鍵字從哈希表獲得、并記錄的該關鍵字的鍵值的存儲位置;根據獲取的存儲位置訪問該關鍵字的鍵值。
【技術特征摘要】
【專利技術屬性】
技術研發人員:許瑞軍,王亞輝,孫大慶,
申請(專利權)人:北京小米科技有限責任公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。