CN102937993A - 一种用于访问关键字的方法及装置 - Google Patents
一种用于访问关键字的方法及装置 Download PDFInfo
- Publication number
- CN102937993A CN102937993A CN2012104483365A CN201210448336A CN102937993A CN 102937993 A CN102937993 A CN 102937993A CN 2012104483365 A CN2012104483365 A CN 2012104483365A CN 201210448336 A CN201210448336 A CN 201210448336A CN 102937993 A CN102937993 A CN 102937993A
- Authority
- CN
- China
- Prior art keywords
- key
- key word
- memory location
- assignments
- key assignments
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种用于访问关键字的方法和装置,其中,该方法包括:获取关键字对应的存储位置,其中,所述该关键字对应的存储位置是:在首次访问该关键字时,根据该关键字从哈希表获得、并记录的该关键字的键值的存储位置;根据获取的存储位置访问该关键字的键值。本发明实施例通过查找哈希表获得关键字的键值的存储位置后,将该存储位置记录下来,随后再次访问该关键字时只需根据记录的该存储位置即可获取或设置键值。减少了重复的计算过程,节省了时间,提高了效率。
Description
技术领域
本发明涉及信息处理领域,更具体地,涉及一种用于访问关键字的方法及装置。
背景技术
目前,哈希表广泛应用于网络数据包处理领域,如IP路由查找、数据包分类、负载均衡和网络安全系统等。在这些应用中,哈希表通常用于管理网络中的并发连接会话,以支持进一步的流粒度分析与处理。在高速网络环境下,并发连接数量庞大,可达数十万之多。
有时需要利用哈希表访问关键字,即将关键字(key)通过哈希表映射到键值(value),如图1所示为现有哈希表的映射关系图,访问(包括查询get()和赋值set())关键字时需要将关键字通过哈希函数映射到键值。
然而,从关键字到键值的映射需要经过复杂的计算,因此,在经常访问关键字,特别是频繁访问关键字时的情形下,将严重影响性能,降低工作效率,并造成资源浪费。
发明内容
有鉴于此,本发明实施例的目的是提出一种用于访问关键字的方法和装置,其能够便捷地存取关键字的键值。
为了达到上述目的,本发明实施例提出一种用于访问关键字的方法,包括以下步骤:
获取关键字对应的存储位置;其中,所述关键字对应的存储位置是:在首次访问该关键字时,根据该关键字从哈希表获得、并记录的该关键字的键值的存储位置;
根据获取的存储位置访问该关键字的键值。
本发明实施例是根据保存有关键字到关键字的键值的存储位置的映射关系的哈希表,来获得并记录某个关键字的键值的存储位置,随后再次访问该关键字时只需根据记录的该存储位置就可以获取或设置键值。因此,减少了重复的计算过程,节省了时间,提高了效率,并且使用频繁时还可以提高系统的性能,显著提高了用户体验。
作为上述技术方案的优选,在首次访问该关键字时,无法从哈希表获得该关键字的键值的存储位置时,在哈希表中建立关键字到该关键字的键值的存储位置的映射关系。
作为上述技术方案的优选,在哈希表中建立关键字到该关键字的键值的存储位置的映射关系的步骤包括:
为关键字新建键值并存储;
获得键值的存储位置;
将所述关键字到所述键值的存储位置的映射关系存储至哈希表。
本方案给出了对关键字的访问进行封装的方法。
作为上述技术方案的优选,所述为关键字新建键值并存储的步骤包括:
为关键字新建键值并存储至预先建立的数据存储结构中。
作为上述技术方案的优选,所述预先建立的数据存储结构包括数组或链表。当所述数据存储结构为数组时,键值的存储位置为数组下标;当所述数据存储结构为链表时,键值的存储位置为链表的节点序号。本方案给出了优选的两种数据存储结构。
作为上述技术方案的优选,当使用访问器访问关键字时,所述方法还包括:将获得的存储位置输入访问器。
本发明实施例还提出一种用于访问关键字的装置,包括:
获取模块,用于获取关键字对应的存储位置;其中,所述关键字对应的存储位置是:在首次访问该关键字时,根据该关键字从哈希表获得、并记录的该关键字的键值的存储位置;
访问模块,用于根据获取的存储位置访问该关键字的键值。
作为上述技术方案的优选,所述装置还包括:
注册模块,用于在首次访问该关键字时,无法从哈希表获得该关键字的键值的存储位置时,在哈希表中建立关键字到该关键字的键值的存储位置的映射关系。
作为上述技术方案的优选,所述注册模块用于:
为关键字新建键值并存储;
获得键值的存储位置;
将所述关键字到所述键值的存储位置的映射关系存储至哈希表。
作为上述技术方案的优选,所述注册模块用于:
为关键字新建键值并存储预先建立的数据存储结构中。
作为上述技术方案的优选,所述预先建立的数据存储结构包括数组或链表。当所述数据存储结构为数组时,键值的存储位置为数组下标;当所述数据存储结构为链表时,键值的存储位置为链表的节点序号。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明实施例的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明实施例的限制。在附图中:
图1是目前关键字通过哈希表映射到键值的示意图;
图2是本发明优选实施例提出的访问关键字的方法的流程图;
图3是本发明一具体实施例提出的访问关键字的方法的流程图;
图4是本发明另一具体实施例提出的访问关键字的方法的示意图;
图5是本发明优选实施例提出的访问关键字的装置的结构示意图;
图6是本发明一具体实施例提出的访问关键字的装置的结构示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明实施例,并不用于限定本发明实施例。
如图2所示为本发明优选实施例提出的一种用于访问关键字的方法,包括:
步骤S21:获取关键字对应的存储位置;其中,所述关键字对应的存储位置是:在首次访问该关键字时,根据该关键字从哈希表获得、并记录的该关键字的键值的存储位置;
步骤S22:根据获取的存储位置访问该关键字的键值;
本发明实施例是根据保存有关键字到关键字的键值的存储位置的映射关系的哈希表,来获得并记录某个关键字的键值的存储位置,随后再次访问该关键字时只需根据记录的该存储位置就可以获取或设置键值。因此,减少了重复的计算过程,节省了时间,提高了效率,并且使用频繁时还可以提高系统的性能,显著提高了用户体验。
下面通过其他具体实施例来对本发明实施例提出的用于访问关键字的方法进行详细说明。
如图3所示为本发明提出的一种用于访问关键字的方法的具体实施例,在本实施例中,关键字的键值存储在预先建立的数组中。具体地,该方法包括以下步骤:
步骤S31:首次对关键字Key1进行访问时,在哈希表中查找是否存在关键字Key1对应的数组下标;若是,执行步骤S34;若否,执行步骤S32。
步骤S32:为关键字Key1新建键值value1存储到预先建立的数组中。
其中,数组为较佳的数据存储结构。因为数组是将元素在内存中连续存放,由于每个元素占用内存相同,因此通过数组下标就可以迅速访问数组中任何元素,适用于需要快速访问数据的情形。
优选地,数据存储结构还可以为链表。
步骤S33:将键值value1在数组中的存储位置即数组下标和关键字Key1的映射关系存储至哈希表中。
若数据存储结构为链表,键值在数据存储结构中的存储位置为链表的节点序号。
上述步骤S32和步骤S33可以称为注册步骤(register())。
步骤S34:根据从哈希表获得的关键字Key1对应的数组下标访问数组以获取或设置关键字Key1的键值value1。
步骤S35:记录关键字Key1对应的数组下标。
该步骤是本方案中的关键步骤,优选地,该步骤中所指的记录是临时存储,只在固定访问关键字Key1的范围内有效。这样不会增加额外的存储负担。
应当注意的是,上述步骤S34和步骤S35的执行顺序可以互换,也可以同时执行。
此后,若再次访问关键字Key1,则可以根据记录的数组下标访问数组以获取或设置关键字Key1的键值。而无需再根据关键字Key1去查找哈希表。
本实施例是在根据哈希表从关键字映射到键值的基础上新增了数组,将原本关键字通过哈希表映射的键值存储到新增的数组中,而将数组下标放入哈希表中。如此,仅在第一次访问该关键字时需要将该关键字通过哈希表映射得到数组下标,并记录该数组下标,之后的访问都无需进行哈希映射,只需通过记录的数组下标直接访问数组。本发明实施例结合了哈希表的动态映射和数组访问的高效率,对于固定范围内关键字频繁访问的情形能带来很大的改善和提高。
在本发明的另一具体实施例中,在实施对关键字的访问时,优选地,使用访问器访问关键字,即实现对关键字的使用的封装,以后对该关键字的访问(即获取键值或设置键值)都通过该访问器来操作。
为关键字创建的访问器包括以下要素:关键字对应的存储位置,获取键值访问器和/或设置键值访问器。其中,获取键值访问器为get访问器,其功能是获取键值,设置键值访问器为set访问器,其功能是设置键值。
如图4所示的使用访问器访问关键字的示意图,访问器具体实现了:
1)关键字在全局第一次被访问时,发现在哈希表中没有找到对应的存储位置(即图中的数组下标)时,将关键字进行注册(register()),即在数组中创建键值,以及获得该键值的数组下标,并将该关键字和数组下标的映射关系存储至哈希表;
2)关键字在此访问器第一次被访问时查找哈希表获得该关键字对应的数组下标;
3)关键字在此访问器第二次及以后被访问时使用记录的数组下标获取或设置键值。
相应地,如图5所示,本发明实施例还提出一种用于访问关键字的装置,包括:
获取模块501,用于获取关键字对应的存储位置;其中,所述关键字对应的存储位置是:在首次访问该关键字时,根据该关键字从哈希表获得、并记录的该关键字的键值的存储位置;
访问模块502,用于根据获取的存储位置访问该关键字的键值;
优选地,所述装置还可以包括:
注册模块503,用于在首次访问该关键字时,无法从哈希表获得该关键字的键值的存储位置时,在哈希表中建立关键字到该关键字的键值的存储位置的映射关系。
注册模块503具体用于:
为关键字新建键值并存储;
获得键值的存储位置;
将所述关键字到所述键值的存储位置的映射关系存储至哈希表。
优选地,注册模块503用于:
为关键字新建键值并存储预先建立的数据存储结构中。
其中,所述预先建立的数据存储结构包括数组或链表。
当所述数据存储结构为数组时,键值的存储位置为数组下标;当所述数据存储结构为链表时,键值的存储位置为链表的节点序号。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (11)
1.一种用于访问关键字的方法,其特征在于,包括以下步骤:
获取关键字对应的存储位置,其中,所述关键字对应的存储位置是:在首次访问该关键字时,根据该关键字从哈希表获得、并记录的该关键字的键值的存储位置;
根据获取的存储位置访问该关键字的键值。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在首次访问该关键字时,无法从哈希表获得该关键字的键值的存储位置时,在哈希表中建立关键字到该关键字的键值的存储位置的映射关系。
3.根据权利要求2所述的方法,其特征在于,在哈希表中建立关键字到该关键字的键值的存储位置的映射关系的步骤包括:
为关键字新建键值并存储;
获得键值的存储位置;
将所述关键字到所述键值的存储位置的映射关系存储至哈希表。
4.根据权利要求3所述的方法,其特征在于,所述为关键字新建键值并存储的步骤包括:
为关键字新建键值并存储至预先建立的数据存储结构中。
5.根据权利要求4所述的方法,其特征在于,所述预先建立的数据存储结构包括数组或链表;
当所述数据存储结构为数组时,键值的存储位置为数组下标;当所述数据存储结构为链表时,键值的存储位置为链表的节点序号。
6.根据权利要求1所述的方法,其特征在于,当使用访问器访问关键字时,所述方法还包括:
将获得的存储位置输入访问器。
7.一种用于访问关键字的装置,其特征在于,包括:
获取模块,用于获取关键字对应的存储位置;其中,所述关键字对应的存储位置是:在首次访问该关键字时,根据该关键字从哈希表获得、并记录的该关键字的键值的存储位置;
访问模块,用于根据获取的存储位置访问该关键字的键值。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
注册模块,用于在首次访问该关键字时,从哈希表无法获得该关键字的键值的存储位置时,在哈希表中建立关键字到该关键字的键值的存储位置的映射关系。
9.根据权利要求8所述的装置,其特征在于,所述注册模块用于:
为关键字新建键值并存储;
获得键值的存储位置;
将所述关键字到所述键值的存储位置的映射关系存储至哈希表。
10.根据权利要求9所述的装置,其特征在于,所述注册模块用于:
为关键字新建键值并存储至预先建立的数据存储结构中。
11.根据权利要求10所述的装置,其特征在于,所述预先建立的数据存储结构包括数组或链表;当所述数据存储结构为数组时,键值的存储位置为数组下标;当所述数据存储结构为链表时,键值的存储位置为链表的节点序号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210448336.5A CN102937993B (zh) | 2012-11-09 | 2012-11-09 | 一种用于访问关键字的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210448336.5A CN102937993B (zh) | 2012-11-09 | 2012-11-09 | 一种用于访问关键字的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102937993A true CN102937993A (zh) | 2013-02-20 |
CN102937993B CN102937993B (zh) | 2016-01-06 |
Family
ID=47696890
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210448336.5A Active CN102937993B (zh) | 2012-11-09 | 2012-11-09 | 一种用于访问关键字的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102937993B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103226591A (zh) * | 2013-04-15 | 2013-07-31 | 厦门亿联网络技术股份有限公司 | 一种支持多关键字快速访问方法和装置 |
CN104182393A (zh) * | 2013-05-21 | 2014-12-03 | 中兴通讯股份有限公司 | 基于hash表的关键字映射处理方法和装置 |
CN104462549A (zh) * | 2014-12-25 | 2015-03-25 | 瑞斯康达科技发展股份有限公司 | 一种数据处理方法和装置 |
CN107025300A (zh) * | 2017-04-24 | 2017-08-08 | 杭州迪普科技股份有限公司 | 一种数据查询的方法及装置 |
CN109542612A (zh) * | 2017-09-22 | 2019-03-29 | 阿里巴巴集团控股有限公司 | 一种热点关键字获取方法、装置及服务器 |
CN109684335A (zh) * | 2018-12-26 | 2019-04-26 | 百度在线网络技术(北京)有限公司 | 基于键值对的数据结构实现方法、装置、设备和存储介质 |
CN111930313A (zh) * | 2020-08-12 | 2020-11-13 | 中国银行股份有限公司 | 主机中数据关联访问的方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101452486A (zh) * | 2008-12-31 | 2009-06-10 | 中国建设银行股份有限公司 | 一种甲骨文系统数据管理方法及其装置 |
CN101582082A (zh) * | 2009-06-16 | 2009-11-18 | 深圳市茁壮网络股份有限公司 | 一种哈希表动态适应数据的方法及装置 |
CN101604337A (zh) * | 2009-07-13 | 2009-12-16 | 中兴通讯股份有限公司 | 一种哈希表项存储、查找装置及方法 |
CN101770485A (zh) * | 2008-12-31 | 2010-07-07 | 华为技术有限公司 | 表项添加方法及装置和表项处理方法、装置及系统 |
CN102194002A (zh) * | 2011-05-25 | 2011-09-21 | 中兴通讯股份有限公司 | 哈希表的表项添加、删除、查找方法及哈希表存储装置 |
CN102682116A (zh) * | 2012-05-14 | 2012-09-19 | 中兴通讯股份有限公司 | 基于哈希表的表项处理方法及其装置 |
-
2012
- 2012-11-09 CN CN201210448336.5A patent/CN102937993B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101452486A (zh) * | 2008-12-31 | 2009-06-10 | 中国建设银行股份有限公司 | 一种甲骨文系统数据管理方法及其装置 |
CN101770485A (zh) * | 2008-12-31 | 2010-07-07 | 华为技术有限公司 | 表项添加方法及装置和表项处理方法、装置及系统 |
CN101582082A (zh) * | 2009-06-16 | 2009-11-18 | 深圳市茁壮网络股份有限公司 | 一种哈希表动态适应数据的方法及装置 |
CN101604337A (zh) * | 2009-07-13 | 2009-12-16 | 中兴通讯股份有限公司 | 一种哈希表项存储、查找装置及方法 |
CN102194002A (zh) * | 2011-05-25 | 2011-09-21 | 中兴通讯股份有限公司 | 哈希表的表项添加、删除、查找方法及哈希表存储装置 |
CN102682116A (zh) * | 2012-05-14 | 2012-09-19 | 中兴通讯股份有限公司 | 基于哈希表的表项处理方法及其装置 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103226591A (zh) * | 2013-04-15 | 2013-07-31 | 厦门亿联网络技术股份有限公司 | 一种支持多关键字快速访问方法和装置 |
CN104182393A (zh) * | 2013-05-21 | 2014-12-03 | 中兴通讯股份有限公司 | 基于hash表的关键字映射处理方法和装置 |
CN104462549A (zh) * | 2014-12-25 | 2015-03-25 | 瑞斯康达科技发展股份有限公司 | 一种数据处理方法和装置 |
CN104462549B (zh) * | 2014-12-25 | 2018-03-23 | 瑞斯康达科技发展股份有限公司 | 一种数据处理方法和装置 |
CN107025300A (zh) * | 2017-04-24 | 2017-08-08 | 杭州迪普科技股份有限公司 | 一种数据查询的方法及装置 |
CN107025300B (zh) * | 2017-04-24 | 2021-05-28 | 杭州迪普科技股份有限公司 | 一种数据查询的方法及装置 |
CN109542612A (zh) * | 2017-09-22 | 2019-03-29 | 阿里巴巴集团控股有限公司 | 一种热点关键字获取方法、装置及服务器 |
CN109684335A (zh) * | 2018-12-26 | 2019-04-26 | 百度在线网络技术(北京)有限公司 | 基于键值对的数据结构实现方法、装置、设备和存储介质 |
CN111930313A (zh) * | 2020-08-12 | 2020-11-13 | 中国银行股份有限公司 | 主机中数据关联访问的方法和装置 |
CN111930313B (zh) * | 2020-08-12 | 2023-12-22 | 中国银行股份有限公司 | 主机中数据关联访问的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102937993B (zh) | 2016-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102937993B (zh) | 一种用于访问关键字的方法及装置 | |
JP5576455B2 (ja) | Bimデータファイルに含まれたデータを提供する方法、それを記録した記録媒体、およびそれを含むシステム | |
CN109815283B (zh) | 一种异构数据源可视化查询方法 | |
CN108664516A (zh) | 查询优化方法及相关装置 | |
US8868576B1 (en) | Storing files in a parallel computing system based on user-specified parser function | |
CN103902593A (zh) | 一种数据迁移的方法和装置 | |
CN103810219B (zh) | 一种基于行存储数据库的数据处理方法及装置 | |
CN105843879B (zh) | 基于光盘的异构类型数据库存储系统及利用该系统的方法 | |
CN102799624B (zh) | 基于Datalog的分布式环境下大图数据查询方法 | |
CN105677904B (zh) | 基于分布式文件系统的小文件存储方法及装置 | |
CN107784108A (zh) | 一种数据存储管理方法、装置及设备 | |
CN104915717A (zh) | 数据处理方法、知识库推理方法及相关装置 | |
CN111258978A (zh) | 一种数据存储的方法 | |
CN104239377A (zh) | 跨平台的数据检索方法及装置 | |
CN103077197A (zh) | 一种数据存储方法装置 | |
CN113313247B (zh) | 基于数据流架构的稀疏神经网络的运算方法 | |
CN104657435A (zh) | 一种应用数据的存储管理方法和网络管理系统 | |
CN104537012B (zh) | 数据处理方法和装置 | |
CN103365923A (zh) | 用于评估数据库的分区方案的方法和装置 | |
CN107766503A (zh) | 基于redis的数据快速查询方法及装置 | |
Li et al. | Survey of recent research progress and issues in big data | |
Fahmy et al. | CoS-HDFS: Co-locating geo-distributed spatial data in hadoop distributed file system | |
US10572477B2 (en) | Selection of implementation for query execution | |
CN112558858B (zh) | 基于动态io感知的超大规模应用外存访问特征获取方法 | |
CN103678545A (zh) | 进行网络资源聚类的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C53 | Correction of patent of invention or patent application | ||
CB02 | Change of applicant information |
Address after: 100085 Beijing city Haidian District Qinghe Street No. 68 Huarun colorful city shopping center two floor 13 Applicant after: Xiaomi Technology Co., Ltd. Address before: 100102, No. 50, block A, building No. 12, winding stone world building, Wangjing West Road, Beijing, Chaoyang District Applicant before: Beijing Xiaomi Technology Co., Ltd. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |