[发明专利]一种哈希表管理的方法和装置有效
申请号: | 201611102346.8 | 申请日: | 2016-12-02 |
公开(公告)号: | CN108153757B | 公开(公告)日: | 2020-04-03 |
发明(设计)人: | 王晓泾;陈西;刘振伟;包闯;闫振林 | 申请(专利权)人: | 深圳市中兴微电子技术有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 北京天昊联合知识产权代理有限公司 11112 | 代理人: | 吴俣;姜春咸 |
地址: | 518055 广东省深*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 哈希表 管理 方法 装置 | ||
本发明实施例公开了一种哈希表管理的方法,所述方法包括:使用链表存储发生哈希冲突的哈希键值对应的哈希表项,使用根表存储各个哈希键值对应的哈希表项、以及链表信息项,所述链表信息项用于指示链表中是否存在每个哈希键值对应的哈希表项;获取哈希键值以及待存储的哈希表项;依据所获取的哈希键值读取根表中的存储数据;在读取的存储数据中不包括链表信息项时,将所述待存储的哈希表项存储至根表中;在读取的存储数据中包括链表信息项时,将所述待存储的哈希表项存储至链表中。本发明实施例还公开了一种哈希表管理的装置。
技术领域
本发明涉及通信技术领域,尤其涉及一种哈希表管理的方法和装置。
背景技术
网络处理器是网络应用领域涉及的专用指令处理器,它专为网络分组处理而设计,可以使得网络系统具备高性能和高灵活性等特点。
网络处理器在进行信息查找时多使用哈希表来建立信息的索引关系,从而实现信息的快速查找。这里,哈希表中使用哈希(Hash)算法来建立索引关系,这种方法的基本思想是:在查找键值k和对应信息的存储位置p之间建立一个对应关系f,使得p=f(k),f即为一种哈希算法。在使用网络处理器进行信息查询时,利用哈希算法计算键值对应的哈希表项信息的存储地址,这样便可以直接通过存储地址查找到键值对应的哈希表项信息。
但是在使用哈希表进行信息查询时,不同的键值可能会映射到哈希表中同一存储地址上,即k1≠k2,但f(k1)=f(k2),这种现象称为哈希冲突,如何解决哈希冲突已经成为提高网络处理器性能的关键问题。
发明内容
为解决上述技术问题,本发明实施例期望提供一种哈希表管理的方法和装置,提高哈希冲突容纳的数量。
本发明的技术方案是这样实现的:
本发明实施例提供了一种哈希表管理的方法,包括:
使用链表存储发生哈希冲突的哈希键值对应的哈希表项,使用根表存储各个哈希键值对应的哈希表项、以及链表信息项,所述链表信息项用于指示链表中是否存在每个哈希键值对应的哈希表项;
获取哈希键值以及待存储的哈希表项;
依据所获取的哈希键值读取根表中的存储数据;在读取的存储数据中不包括链表信息项时,将所述待存储的哈希表项存储至根表中;在读取的存储数据中包括链表信息项时,将所述待存储的哈希表项存储至链表中。
上述方案中,在获取哈希键值后,所述方法还包括:根据所述根表对应的哈希函数,对所获取的哈希键值进行哈希计算,得到第一哈希值;
所述将所述待存储的哈希表项存储至根表中,包括:
所述根表中存在第一哈希值对应的哈希表项,在所述根表中根据第一哈希值读取哈希表项,在所获取的哈希键值与根表中读取出的哈希表项中的哈希键值匹配时,将所述根表中第一哈希值对应的哈希表项更新为待存储的哈希表项;在所获取的哈希键值与根表中读取出的哈希表项中的哈希键值不匹配,且所述根表中还存在哈希表项的存储位置时,在所述根表中插入待存储的哈希表项;
所述根表中不存在第一哈希值对应的哈希表项时,在所述根表中插入待存储的哈希表项。
上述方案中,所述使用链表存储发生哈希冲突的哈希键值对应的哈希表项,包括:
在读取的存储数据中不包括链表信息项,且所获取的哈希键值与根表中读取出的哈希表项中的哈希键值不匹配,且所述根表中不存在哈希表项的存储位置时,建立链表,在建立的链表中插入待存储的哈希表项。
上述方案中,在所述链表中插入待存储的哈希表项后,所述方法还包括:基于链表中插入的哈希表项,在所述根表中更新链表信息项。
上述方案中,所述链表信息项还用于指示链表中存在的哈希表项的地址信息;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市中兴微电子技术有限公司,未经深圳市中兴微电子技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611102346.8/2.html,转载请声明来源钻瓜专利网。