本发明专利技术公开了一种用于访问关键字的方法和装置,其中,该方法包括:获取关键字对应的存储位置,其中,所述该关键字对应的存储位置是:在首次访问该关键字时,根据该关键字从哈希表获得、并记录的该关键字的键值的存储位置;根据获取的存储位置访问该关键字的键值。本发明专利技术实施例通过查找哈希表获得关键字的键值的存储位置后,将该存储位置记录下来,随后再次访问该关键字时只需根据记录的该存储位置即可获取或设置键值。减少了重复的计算过程,节省了时间,提高了效率。
【技术实现步骤摘要】
本专利技术涉及信息处理领域,更具体地,涉及一种用于访问关键字的方法及装置。
技术介绍
目前,哈希表广泛应用于网络数据包处理领域,如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去查找哈希表。本实施例是在根据哈希表从关键字映射到键值的基础上新增了数组,将原本关键字通过哈希表映射的键值存储到新增的数组中,而将数组下标放入哈希表中。如此,仅在第一次访问该关键字时需要将该关键字通过哈希表映射得到数组本文档来自技高网...
【技术保护点】
一种用于访问关键字的方法,其特征在于,包括以下步骤:获取关键字对应的存储位置,其中,所述关键字对应的存储位置是:在首次访问该关键字时,根据该关键字从哈希表获得、并记录的该关键字的键值的存储位置;根据获取的存储位置访问该关键字的键值。
【技术特征摘要】
【专利技术属性】
技术研发人员:许瑞军,王亚辉,孙大庆,
申请(专利权)人:北京小米科技有限责任公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。