专利名称:基于哈希表的表项处理方法及其装置的制作方法
技术领域:
本发明涉及到通信技术领域,特别涉及到基于哈希表的表项处理方法及其装置。
背景技术:
在通信技术领域中,常常采用哈希算法进行业务表项的精确匹配查询。采用哈希函数对业务表项条目的键值进行哈希运算,得到的计算结果值与哈希表中的存储空间相对应,即通过哈希运算结果寻址,以实现对表项的存储与查询。目前的哈希存储与查询方法中,普遍存在的问题是性能与容量之间的矛盾。在哈希运算时,虽然各个表项的键值不同,但是经哈希函数计算获得的运算结果却可能相同,这将导致存储空间发生冲突。一方面,为了尽量减少冲突,保证查询性能,即一次命中率,传统 哈希表结构在表项存储时采用哈希方式排布,即通过哈希函数获得的存储地址往往不是连续的,因而哈希表的空间利用率不高,在表项存储时会造成非常大的存储空间浪费,所能存储的表项条目不多,容量指标无法满足。另一方面,为了提高查找速度,传统的哈希表结构大多通过一次哈希计算结果来索引到哈希索引表进行查找,但这将大大增加冲突的概率。
发明内容
本发明的主要目的为提供一种提高存储容量、减少冲突概率的基于哈希表的表项处理方法及其装置。本发明提出一种基于哈希表的表项处理方法,包括步骤在表项存储时,将待存储表项按照顺序排布方式,存储于结果表中;利用索引表的两重哈希函数,计算所述待存储表项的键值的哈希值;将所述哈希值和所述待存储表项所在结果表的地址指针存储于所述索引表中空闲的位置。优选地,所述利用索引表的两重哈希函数,计算所述待存储表项的键值哈希值;将所述哈希值和所述待存储表项所在结果表的地址指针存储于所述索引表中空闲的位置的步骤具体包括利用当前索引表的两重哈希函数,计算所述待存储表项的键值的当前哈希值;在当前哈希值无冲突时,将当前哈希值和所述待存储表项所在结果表的地址指针存储于当前索引表中空闲的位置;在当前哈希值有冲突时,利用下一索引表的两重哈希函数,计算所述待存储表项的键值的下一哈希值;在下一哈希值无冲突时,将下一哈希值和所述待存储表项所在结果表的地址指针存储于下一索引表中空闲的位置。优选地,所述利用当前索引表的两重哈希函数,计算所述待存储表项的键值的当前哈希值;在当前哈希值无冲突时,将当前哈希值和所述待存储表项所在结果表的地址指针存储于当前索引表中空闲的位置的步骤具体包括
利用当前索引表的第一重哈希函数,对所述待存储表项的键值进行哈希计算,在当iu索引表中获得对应的索引;利用当前索引表的第二重哈希函数,计算所述待存储表项的键值的当前哈希值;在当前哈希值与对应的索引中各槽位存储的哈希值无冲突时,将当前哈希值和所述待存储表项所在结果表的地址指针,存储于对应的索引中空闲的槽位。优选地, 所述在当前哈希值有冲突时,利用下一索引表的两重哈希函数,计算所述待存储表项的键值的下一哈希值;在下一哈希值无冲突时,将下一哈希值和所述待存储表项所在结果表的地址指针存储于下一索引表中空闲的位置的步骤具体包括在当前哈希值与对应的索引中一槽位存储的哈希值发生冲突时,将冲突槽位中存储的冲突表项所在结果表的地址指针取出,并在所述冲突槽位中设置冲突标识;利用下一索引表的第一重哈希函数,分别对所述待存储表项的键值和冲突表项的键值进行哈希计算,在下一索引表中分别获得对应的索引;利用下一索引表的第二重哈希函数,分别计算所述待存储表项的键值和冲突表项的键值的下一哈希值;在所述待存储表项的下一哈希值与对应的索引中各槽位存储的哈希值无冲突时,将所述待存储表项的下一哈希值和所在结果表的地址指针,存储于对应的索引中空闲的槽位;在所述冲突表项的下一哈希值与对应的索引中各槽位存储的哈希值无冲突时,将所述冲突表项的下一哈希值和所在结果表的地址指针,存储于对应的索引中空闲的槽位。优选地,所述在当前哈希值与对应的索引中一槽位存储的哈希值发生冲突时,将冲突槽位中存储的冲突表项所在结果表的地址指针取出,并在所述冲突槽位中设置冲突标识的步骤之后还包括在当前索引表为最后一张索引表时,将所述待存储表项和冲突表项所在结果表的地址指针分别存储于冲突链表中,并将冲突链表指针存储于最后一张索引表的冲突槽位中。优选地,所述将所述哈希值和所述待存储表项所在结果表的地址指针存储于所述索引表中空闲的位置的步骤之后还包括在表项查询时,利用索引表的两重哈希函数,计算待查询键值的哈希值;在所述索引表中,查找所述哈希值所在位置存储的地址指针;读取所述地址指针指向的结果表中存储的表项。优选地,所述在表项查询时,利用索引表的两重哈希函数,计算待查询键值的哈希值;在所述索引表中查找所述哈希值所在位置存储的地址指针;读取所述地址指针指向的结果表中存储的表项的步骤具体包括利用各索引表的第一重哈希函数,对所述待查询键值进行哈希计算,在所述索引表中查询对应的索引;利用各索引表的第二重哈希函数,计算所述待查询键值的哈希值,在所述索引中查询所述哈希值对应的槽位;当对应的槽位存储的地址指针有效时,读取所述地址指针指向的结果表中存储的表项;
当所有对应的槽位存储的地址指针均无效,且最后一张哈希表中对应的槽位中设置有冲突标记时,查询最后一张哈希表中对应的槽位存储的冲突链表指针;查询所述冲突链表指针指向的冲突链表中存储的地址指针;读取所述地址指针指向的结果表中存储的表项。优选地,所述当对应的槽位存储的地址指针有效时,读取所述地址指针指向的结果表中存储的表项的步骤具体包括
当存在多个有效的地址指针时,比较各有效的地址指针所在索引表的优先级;查询优先级最高的索引表存储的有效的地址指针;读取所述地址指针指向的结果表中存储的表项。本发明还提出一种基于哈希表的表项处理装置,包括存储模块,用于在表项存储时,将待存储表项按照顺序排布方式,存储于结果表中;利用索引表的两重哈希函数,计算所述待存储表项的键值的哈希值;将所述哈希值和所述待存储表项所在结果表的地址指针存储于所述索引表中空闲的位置。优选地,所述存储模块具体用于利用当前索引表的两重哈希函数,计算所述待存储表项的键值的当前哈希值;在当前哈希值无冲突时,将当前哈希值和所述待存储表项所在结果表的地址指针存储于当前索引表中空闲的位置;在当前哈希值有冲突时,利用下一索引表的两重哈希函数,计算所述待存储表项的键值的下一哈希值;在下一哈希值无冲突时,将下一哈希值和所述待存储表项所在结果表的地址指针存储于下一索引表中空闲的位置。优选地,所述存储模块具体包括第一哈希运算子模块,用于利用当前索引表的第一重哈希函数,对所述待存储表项的键值进行哈希计算,在当前索引表中获得对应的索引;第二哈希运算子模块,用于利用当前索引表的第二重哈希函数,计算所述待存储表项的键值的当前哈希值;地址指针存储子模块,用于在当前哈希值与对应的索引中各槽位存储的哈希值无冲突时,将当前哈希值和所述待存储表项所在结果表的地址指针,存储于对应的索引中空闲的槽位。优选地,所述存储模块具体还包括冲突处理子模块,用于在当前哈希值与对应的索引中一槽位存储的哈希值发生冲突时,将冲突槽位中存储的冲突表项所在结果表的地址指针取出,并在所述冲突槽位中设直冲关标识;所述第一哈希运算子模块还用于,利用下一索引表的第一重哈希函数,分别对所述待存储表项的键值和冲突表项的键值进行哈希计算,在下一索引表中分别获得对应的索弓I ;所述第二哈希运算子模块还用于,利用下一索引表的第二重哈希函数,分别计算所述待存储表项的键值和冲突表项的键值的下一哈希值;所述地址指针存储子模块还用于,在所述待存储表项的下一哈希值与对应的索引中各槽位存储的哈希值无冲突时,将所述待存储表项的下一哈希值和所在结果表的地址指针,存储于对应的索引中空闲的槽位;在所述冲突表项的下一哈希值与对应的索引中各槽位存储的哈希值无冲突时,将所述冲突表项的下一哈希值和所在结果表的地址指针,存储于对应的索引中空闲的槽位。优选地,所述存储模块具体还包括冲突链表存储子模块,用于在当前索引表为最后一张索引表时,将所述待存储表项和冲突表项所在结果表的地址指针分别存储于冲突链表中,并将冲突链表指针存储于最后一张索引表的冲突槽位中。优选地,所述基于哈希表的表项处理装置,还包括查询模块,用于在表项查询时,利用索引表的两重哈希函数,计算待查询键值在所述索引表中的哈希值;在所述索引表中,查找所述哈希值所在位置存储的地址指针;读取所述地址指针指向的结果表中存储的表 项。优选地,所述查询模块具体包括第一哈希查询子模块,用于利用各索引表的第一重哈希函数,对所述待查询键值进行哈希计算,在所述索引表中查询对应的索引;第二哈希查询子模块,用于利用所述索引表的第二重哈希函数,计算所述待查询键值的哈希值,在所述索引中查询所述哈希值对应的槽位;表项读取子模块,用于当对应的槽位存储的地址指针有效时,读取所述地址指针指向的结果表中存储的表项;冲突链表读取子模块,用于当所有对应的槽位存储的地址指针均无效,且最后一张哈希表中对应的槽位中设置有冲突标记时,查询最后一张哈希表中对应的槽位存储的冲突链表指针;查询所述冲突链表指针指向的冲突链表中存储的地址指针;读取所述地址指针指向的结果表中存储的表项。优选地,所述查询模块具体还包括优先级比较子模块,用于当存在多个有效的地址指针时,比较各有效的地址指针所在索引表的优先级;所述表项读取子模块还用于,根据优先级比较结果,查询优先级最高的索引表存储的有效的地址指针;读取所述地址指针指向的结果表中存储的表项。本发明在保证了较少的访问次数和较快的查询速度的同时,有效提高了业务表项条目存储量,增加了哈希表所能支持业务的容量,使哈希表的空间利用率高,并且还降低了冲突发生的概率,使哈希表的性能与容量之间达到平衡。
图I为本发明第一实施例的基于哈希表的表项处理方法中表项存储的步骤流程图;图2为本发明第二实施例的基于哈希表的表项处理方法中表项存储的步骤流程图;图3为本发明第三实施例的基于哈希表的表项处理方法中表项存储的步骤流程图4为本发明第四实施例的基于哈希表的表项处理方法中表项存储的步骤流程图;图5为本发明第五实施例的基于哈 希表的表项处理方法中表项存储的步骤流程图;图6为本发明第六实施例的基于哈希表的表项处理方法中表项查询的步骤流程图;图7为本发明第七实施例的基于哈希表的表项处理方法中表项查询的步骤流程图;图8为本发明第八实施例的基于哈希表的表项处理方法中表项查询的步骤流程图;图9为本发明第九实施例的基于哈希表的表项处理方法中表项查询的步骤流程图;图10为本发明第一实施例中基于哈希表的表项处理装置的结构示意图;图11为本发明第二实施例的基于哈希表的表项处理装置中存储模块的结构示意图;图12为本发明第三实施例的基于哈希表的表项处理装置中存储模块的结构示意图;图13为本发明第四实施例中基于哈希表的表项处理装置的结构示意图;图14为本发明第五实施例的基于哈希表的表项处理装置中查询模块的结构示意图;图15为本发明第六实施例的基于哈希表的表项处理装置中查询模块的结构示意图;图16为本发明第七实施例的基于哈希表的表项处理装置中查询模块的结构示意图。本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施例方式应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。如图I所不,图I为本发明第一实施例的基于哈希表的表项处理方法中表项存储的步骤流程图,该实施例提到的基于哈希表的表项处理方法,包括步骤S101,在表项存储时,将待存储表项按照顺序排布方式,存储于结果表中;步骤S102,利用索引表的两重哈希函数,计算待存储表项的键值的哈希值;步骤S103,将哈希值和待存储表项所在结果表的地址指针存储于索引表中空闲的位置。本实施例将索引表与结果表独立开来,索引表的结构采用哈希方式排布,结果表的结构采用顺序排布方式,大大提高了哈希表所能支持业务的容量。同时,本实施例采用了多张索引表进行索引地址存储,针对每一张索引表,采用两重哈希函数,第一重为m级哈希运算,用来对索引表的各项索引进行地址索引,第二重为η级哈希运算,用来对各项索引中包含的若干个地址指针存储位置进行区分。键值在经过第一重哈希运算后,冲突概率为P1,经过第二重哈希运算后,冲突概率为P2,键值在同时经过双重的哈希运算后,冲突的概率为P1 Xp2,由于冲突概率P1和P2均小于1,因此双重哈希运算后的冲突概率将大大降低。本实施例在保证了较少的访问次数和较快的查询速度的同时,有效提高了业务表项条目存储量,增加了哈希表所能支持业务的容量,使哈希表的空间利用率高,并且还降低了冲突发生的概率,使哈希表的性能与容量之间达到平衡。如图2所示,图2为本发明第二实施例的基于哈希表的表项处理方法中表项存储的步骤流程图。步骤S201,利用第i张索引表的两重哈希函数,计算待存储表项的键值K的第i个哈希值;本实施例利用当前索引表的两重哈希函数,计算待存储表项的键值的当前哈希值,可有效降低冲突发生概率。步骤S202,判断第i个哈希值是否有冲突,如果否,则执行步骤S203 ;如果是,则执行步骤S204 ;步骤S203,将第i个哈希值和待存储表项所在结果表的地址指针存储于第i张索引表中空闲的位置;本实施例在当前哈希值无冲突时,将当前哈希值和待存储表项所在结果表的地址指针存储于当前索引表中空闲的位置。由于索引表与结果表结构不同,索引表的结构采用哈希排布方式存储结果表的地址指针,结果表的结构采用顺序排布方式存储表项,采用顺序排布方式可保证每一个存储空间均被利用,避免存储空间浪费,同时也提高了哈希表所能支持业务的容量。步骤S204,i加1,返回步骤S201。本实施例在当前哈希值有冲突时,利用下一索引表的两重哈希函数,计算待存储表项的键值的下一哈希值;在下一哈希值无冲突时,将下一哈希值和待存储表项所在结果表的地址指针存储于下一索引表中空闲的位置。由于本实施例采用了多张索引表进行地址指针存储,并利用哈希值作为地址指针在索引表中存储位置的标识ID。当第i个哈希值有重复,即说明标识ID有冲突,在第i+Ι张索引表中为地址指针寻找空闲的存储位置,以实现对冲突的合理处理,为每一个业务表项条目所在结果表的地址指针都分配到合适的存储空间。其中,由于发生冲突的比例明显小于未发生冲突的比例,因此,第一张索引表的容量通常较大,即越靠前的索引表容量越大。如图3所不,图3为本发明第三实施例的基于哈希表的表项处理方法中表项存储的步骤流程图。步骤S301,利用第i张索引表的第一重哈希函数Fi(X),对待存储表项的键值K进行哈希计算,在第i张索引表中获得Fi (K)对应的索引;步骤S302,利用第i张索引表的第二重哈希函数Hi(X),计算待存储表项的键值K的第i个哈希值Hi (K);本实施例利用当前索引表的第一重哈希函数,对待存储表项的键值进行哈希计算,在当前索引表中获得对应的索引;利用当前索引表的第二重哈希函数,计算待存储表项的键值的当前哈希值。每张索引表对应于各自的两重哈希函数;每张索引表中包含有多条索引,通过第一重哈希函数对键值进行哈希运算,获得的运算结果对应于一条索引;每条索引又包含多个槽位,通过第二重哈希函数对键值进行哈希运算,获得的运算结果可作为用于存储地址指针的槽位的标识ID。本实施例通过两重哈希函数运算,使发生冲突的概率将远小于通过一次哈希函数运算获得的地址。步骤S303,判断Hi (K)与对应的索引中各槽位存储的哈希值是否有冲突,如果否,则执行步骤S304 ;如果是,则执行步骤S305 ;本实施例的每个槽位中包含有多个需要信息,例如,包括槽位有效指示标记,当槽位有效指示标记为I时,表示该槽位指向的数据表中已存储有业务表项条目;槽位标识ID,对应于哈希值,即采用第二重哈希函数对键值进行哈希运算后的结果值;指针信息,用于存储结果表的地址指针,指向结果表中对应的存储位置;冲突指示标记,当冲突指示标记为I时,表示该槽位存在冲突,本实施例的指针信息的最后一个比特位可以复用为冲突指/J人柄^ T己O
步骤S304,将Hi (K)和待存储表项所在结果表的地址指针,存储于第i张索引表对应的索引中空闲的槽位。步骤S305,将冲突槽位中存储的冲突表项所在结果表的地址指针取出,并在冲突槽位中设置冲突标识;本实施例在当前哈希值与对应的索引中各槽位存储的哈希值无冲突时,将当前哈希值和待存储表项所在结果表的地址指针,存储于对应的索引中空闲的槽位;在当前哈希值与对应的索引中一槽位存储的哈希值发生冲突时,将冲突槽位中存储的冲突表项所在结果表的地址指针取出,并在冲突槽位中设置冲突标识。本实施例在冲突的情况发生时,为避免在表项查询时查询到错误的表项结果,置冲突的槽位的地址信息为空,将冲突槽位存储的地址指针取出后,重新寻找空闲的存储空间,同时还将该槽位的冲突指示标记置为1,以供表项查询时直接跳过该槽位指向的结果表,减少存储器访问次数,提高查找时间和效率。此外,由于本实施例对冲突的槽位均设置有冲突标记,为了避免过多槽位被置为冲突不可用而造成大量废弃空间,本实施例在删除表项时,需要进行相应的空间回溯操作,即对所删除的表项对应的冲突槽位回收,重置冲突标记,以免造成大量空间浪费。步骤S306,利用第i+Ι张索引表的第一重哈希函数Fi+1 (X),分别对待存储表项的键值K和冲突表项的键值K’进行哈希计算,在第i+Ι张索引表中分别获得Fi+1 (K)和Fi+1(K’)对应的索引;步骤S307,利用第i+Ι张索引表的第二重哈希函数Hi+1 (X),分别计算待存储表项的键值K的第i+Ι个哈希值Hi+1 (K)和冲突表项的键值K’的第i+Ι个哈希值Hi+1 (K’);本实施例利用下一索引表的第一重哈希函数,分别对待存储表项的键值和冲突表项的键值进行哈希计算,在下一索引表中分别获得对应的索引;利用下一索引表的第二重哈希函数,分别计算待存储表项的键值和冲突表项的键值的下一哈希值。步骤S308,分别判断Hi+1 (K)和Hi+1 (K’)与对应的索引中各槽位存储的哈希值是否有冲突,如果否,则执行步骤S309 ;如果是,则执行步骤S310 ;步骤S309,将Hi+1 (K)和待存储表项所在结果表的地址指针,存储于第i+Ι张索引表中对应的索引中空闲的槽位;将^+1 (K’)和冲突表项所在结果表的地址指针,存储于第i+Ι张索引表中对应的索引中空闲的槽位;步骤S310,i加1,返回步骤S305。
本实施例在待存储表项的下一哈希值与对应的索引中各槽位存储的哈希值无冲突时,将待存储表项的下一哈希值和所在结果表的地址指针,存储于对应的索引中空闲的槽位;在冲突表项的下一哈希值与对应的索引中各槽位存储的哈希值无冲突时,将冲突表项的下一哈希值和所在结果表的地址指针,存储于对应的索引中空闲的槽位。当第i+Ι个哈希值仍有冲突时,取出第i+Ι张索引表对应的冲突槽位存储的地址指针,重新判断第i+2个哈希值是否有冲突,以此循环,直至找到无冲突的哈希值。本实施例采用多张索引表进行地址存储,合理处理冲突状况,为每一个业务表项条目所在结果表的地址指针都分配到合适的索引表存储空间,有效保证了表项及其地址指针存储的完备性。如图4所不,图4为本发明第四实施例的基于哈希表的表项处理方法中表项存储的步骤流程图。步骤S305之后还包括步骤S311,判断第i张索引表是否为最后一张索引表,如果是,则执行步骤S312 ;如果否,则执行步骤306; 步骤S312,将冲突链表指针存储于最后一张索引表的冲突槽位中;步骤S313,将待存储表项和冲突表项所在结果表的地址指针分别存储于冲突链表中。 本实施例对于在所有索引表中都无法找到合适存储位置的地址指针,将其存放在冲突链表中,保证了所有表项所在结果表的地址指针都可分配到合适的存储空间,有效提高了表项及其地址指针存储的完备性。如图5所不,图5为本发明第五实施例的基于哈希表的表项处理方法中表项存储的步骤流程图。步骤S301之后还包括步骤S314,判断第i张索引表的对应索引中是否有空闲的槽位,如果是,则执行步骤S302 ;如果否,则执行步骤311。本实施例的冲突状况还包括槽位是否全满,对于当前索引表中的槽位指向的结果表已全部装满的情况,不在进行第二重哈希函数运算,直接跳到下一索引表,有效提高了存储速度和存储效率。如图6所不,图6为本发明第六实施例的基于哈希表的表项处理方法中表项查询的步骤流程图。步骤S103之后还包括步骤S104,在表项查询时,利用索引表的两重哈希函数,计算待查询键值的哈希值;步骤S105,在索引表中,查找哈希值所在位置存储的地址指针;步骤S106,读取地址指针指向的结果表中存储的表项。本实施例仅采用两重哈希函数运算,即可找到匹配的表项存储位置,减少了访问存储器的次数,有效保证了较快的表项查询速度。如图7所示,图7为本发明第七实施例的基于哈希表的表项处理方法中表项查询的步骤流程图。步骤S401,利用各索引表的第一重哈希函数,对待查询键值进行哈希计算,在索引表中查询对应的索引;步骤S402,利用各索引表的第二重哈希函数,计算待查询键值的哈希值,在索引中查询哈希值对应的槽位;步骤S403,判断对应的槽位存储的地址指针是否有效,如果是,则执行步骤S404 ;如果否,则执行步骤S405 ;步骤S404,读取地址指针指向的结果表中存储的表项;步骤S405,在最后一张哈希表中对应的槽位中设置有冲突标记时,查询最后一张哈希表中对应的槽位存储的冲突链表指针;步骤S406,查询冲突链表指针指向的冲突链表中存储的地址指针;步骤S407,读取地址指针指向的结果表中存储的表项。本实施例通过两重哈希函数查找匹配的表项,减少了访问存储器的次数,提高了查询速度与效率,便于硬件与存储器之间接口的实现。本实施例可以采用所有索引表的哈希函数运算同时进行的方式查找匹配表项,以节省查找时间,提高查找效率。此外,本实施例在表项查询时,可按照顺序查找方式,即首先对第一张索引表进行查找,如果找到有效的地址指针,则不再进行后续索引表的哈希函数运算,减少了运算量,同样能够实现提高查询速度与效率的目的。为确保表项查找的完备性,当各索引表中均找不到有效的地址指针时,则在冲突链表中进行查询,避免了表项查询的遗漏。如图8所示,图8为本发明第八实施例的基于哈希表的表项处理方法中表项查询的步骤流程图。步骤S501,利用各索引表的第一重哈希函数,对待查询键值进行哈希计算,在索引表中查询对应的索引;步骤S502,利用各索引表的第二重哈希函数,计算待查询键值的哈希值,在索引中查询哈希值对应的槽位;步骤S503,判断对应的槽位存储的地址指针是否有效,如果否,则执行步骤S504 ;如果是,则执行步骤S507 ;步骤S504,在最后一张哈希表中对应的槽位中设置有冲突标记时,查询最后一张哈希表中对应的槽位存储的冲突链表指针;步骤S505,查询冲突链表指针指向的冲突链表中存储的地址指针;步骤S506,读取地址指针指向的结果表中存储的表项。步骤S507,判断是否只存在一个有效的地址指针,如果是,则执行步骤S508 ;如果否,则执行步骤S509 ;步骤S508,读取地址指针指向的结果表中存储的表项;步骤S509,比较各匹配的表项对应的索引表的优先级;步骤S510,查询优先级最高的索引表存储的有效的地址指针;步骤S511,读取地址指针指向的结果表中存储的表项。。本实施例的索引表存在明显的优先级顺序,由于在对表项所在结果表的地址指针存储时,首先在第一张索引表中查找空闲的存储位置,当第一张索引表中无空闲存储空间,或发生哈希值冲突,即标识ID冲突时,才在下一张索引表中查找空闲的存储位置,因此,第一张索引表的优先级最高,且通常情况下,大多数表项所在结果表的地址指针均存储在第、一张索引表中,越往后的索引表优先级越低。本实施例通过对索引表优先级的比较,读取优先级最高的索引表对应的地址指针指向的结果表存储的表项,确保了业务表项条目查询的准确性和可靠性,保证了表项查询的一次命中率。如图9所示,图9为本发明第九实施例的基于哈希表的表项处理方法中表项查询的步骤流程图。步骤S601,利用各索引表的第一重哈希函数,对待查询键值进行哈希计算,在索引表中查询对应的索引;步骤S602,利用各索引表的第二重哈希函数,计算待查询键值的哈希值,在索引中查询哈希值对应的槽位;步骤S603,判断对应的槽位存储的地址指针是否有效,如果是,则执行步骤S604 ;如果否,则执行步骤S605 ; 步骤S604,读取地址指针指向的结果表中存储的表项;步骤S605,判断最后一张哈希表中对应的槽位中是否设置有冲突标记,如果是,则执行步骤S606 ;如果否,则执行步骤S609 ;步骤S606,查询最后一张哈希表中对应的槽位存储的冲突链表指针;步骤S607,查询冲突链表指针指向的冲突链表中存储的地址指针;步骤S608,读取地址指针指向的结果表中存储的表项。步骤S609,读取结果表中指定位存储的无结果反馈信息。本实施例中,由于在对表项所在结果表的地址指针存储时,对于在所有索引表中都无法找到合适存储位置的地址指针,则存储在冲突链表中,同时还在最后一张索引表的冲突槽位中标记冲突链表指针,因此,在表项查询时,通过判断最后一张索引表的冲突槽位中是否设置有冲突链表指针,来判断本次表项查询是否有结果。例如,当最后一张索引表的冲突槽位中设置有冲突链表指针,则说明本次表项查询有结果表项,且该结果表项所在结果表的地址指针因找不到合适的存储位置,而被存储在冲突链表中;否则,本次表项查询没有结果,反馈查询无结果的信息。本实施例通过对冲突链表进行读取,避免在表项查询时漏掉表项,确保表项查询的完备性;同时,在无结果的情况下,通过反馈无结果信息,避免了将下一次查询结果当作本次查询结果而发生错误的情况发生,确保了表项查询的可靠性。如图10所示,图10为本发明第一实施例中基于哈希表的表项处理装置的结构示意图,该实施例提到的基于哈希表的表项处理装置,包括存储模块10,用于在表项存储时,将待存储表项按照顺序排布方式,存储于结果表中;利用索引表的两重哈希函数,计算待存储表项的键值的哈希值;将哈希值和待存储表项所在结果表的地址指针存储于索引表中空闲的位置。本实施例将索引表与结果表独立开来,索引表的结构米用哈希方式排布,结果表的结构采用顺序排布方式,大大提高了哈希表所能支持业务的容量。同时,本实施例存储模块10采用了多张索引表进行索引地址存储,针对每一张索引表,采用两重哈希函数,第一重为m级哈希运算,用来对索引表的各项索引进行地址索引,第二重为η级哈希运算,用来对各项索引中包含的若干个地址指针存储位置进行区分。键值在经过第一重哈希运算后,冲突概率为P1,经过第二重哈希运算后,冲突概率为P2,键值在同时经过双重的哈希运算后,冲突的概率为P1XP2,由于冲突概率P1和P2均小于1,因此双重哈希运算后的冲突概率将大大降低。本实施例在保证了较少的访问次数和较快的查询速度的同时,有效提高了业务表项条目存储量,增加了哈希表所能支持业务的容量,使哈希表的空间利用率高,并且还降低了冲突发生的概率,使哈希表的性能与容量之间达到平衡。本发明实施例中,存储模块10具体用于利用当前索引表的两重哈希函数,计算待存储表项的键值的当前哈希值;在当前哈希值无冲突时,将当前哈希值和待存储表项所在结果表的地址指针存储于当前索引表中空闲的位置;在当前哈希值有冲突时,利用下一索引表的两重哈希函数,计算待存储表项的键值的下一哈希值;
在下一哈希值无冲突时,将下一哈希值和待存储表项所在结果表的地址指针存储于下一索引表中空闲的位置。本实施例中由于索引表与结果表结构不同,索引表的结构米用哈希排布方式存储结果表的地址指针,结果表的结构采用顺序排布方式存储表项,存储模块10采用顺序排布方式存储表项,可保证每一个存储空间均被利用,避免存储空间浪费,同时也提高了哈希表所能支持业务的容量。此外,由于存储模块10采用了多张索引表进行地址指针存储,并利用哈希值作为地址指针在索引表中存储位置的标识ID。当第i个哈希值有重复,即说明标识ID有冲突,在第i+Ι张索引表中为地址指针寻找空闲的存储位置,以实现对冲突的合理处理,为每一个业务表项条目所在结果表的地址指针都分配到合适的存储空间。其中,由于发生冲突的比例明显小于未发生冲突的比例,因此,第一张索引表的容量通常较大,即越靠前的索引表容量越大。如图11所示,图11为本发明第二实施例的基于哈希表的表项处理装置中存储模块的结构示意图,存储模块10具体包括第一哈希运算子模块11,用于利用当前索引表的第一重哈希函数,对待存储表项的键值进行哈希计算,在当前索引表中获得对应的索引;第二哈希运算子模块12,用于利用当前索引表的第二重哈希函数,计算待存储表项的键值的当前哈希值;地址指针存储子模块13,用于在当前哈希值与对应的索引中各槽位存储的哈希值无冲突时,将当前哈希值和待存储表项所在结果表的地址指针,存储于对应的索引中空闲的槽位。冲突处理子模块14,用于在当前哈希值与对应的索引中一槽位存储的哈希值发生冲突时,将冲突槽位中存储的冲突表项所在结果表的地址指针取出,并在冲突槽位中设置冲突标识;第一哈希运算子模块11还用于,利用下一索引表的第一重哈希函数,分别对待存储表项的键值和冲突表项的键值进行哈希计算,在下一索引表中分别获得对应的索引;第二哈希运算子模块12还用于,利用下一索引表的第二重哈希函数,分别计算待存储表项的键值和冲突表项的键值的下一哈希值;地址指针存储子模块13还用于,在待存储表项的下一哈希值与对应的索引中各槽位存储的哈希值无冲突时,将待存储表项的下一哈希值和所在结果表的地址指针,存储于对应的索引中空闲的槽位;在冲突表项的下一哈希值与对应的索引中各槽位存储的哈希值无冲突时,将冲突表项的下一哈希值和所在结果表的地址指针,存储于对应的索引中空闲的槽位。本实施例的索引表包括多条索引,第一哈希运算子模块11通过第一重哈希函数对键值进行哈希运算,获得的运算结果对应于一条索引;每条索引又包含多个槽位,第二哈希运算子模块12通过第二重哈希函数对键值进行哈希运算,获得的运算结果可作为用于存储地址指针的槽位的标识ID。本实施例通过两重哈希函数运算,使发生冲突的概率将远小于通过一次哈希函数运算获得的地址。每个槽位中包含有多个需要信息,例如,包括槽位有效指示标记,当槽位有效指示标记为I时,表示该槽位指向的数据表中已存储有业务表项条目;槽位标识ID,对应于哈希值,即采用第二重哈希函数对键值进行哈希运算后的结果值;指针信息,用于存储结果表的地址指针,指向结果表中对应的存储位置;冲突指示标记,当冲突指示标记为I时,表示该槽位存在冲突,本实施例的指针信息的最后一个比特位可以复用为冲突指示标记。在冲突的情况发生时,为避免在表项查询时查询到错误的表项结果,冲突处理子模块14置冲突的槽位的地址信息为空,即将冲突槽位存储的地址指针取出后,通过第一哈希运算子模块11和第二哈希运算子模块12,重新寻找空闲的存储空间。同时,冲突处理子模块14还将该槽位的冲突指示标记置为1,以供表项查询时直接跳过该槽位指向的结果表,减少存储器访问次数,提高查找时间和效率。此外,由于本实施例对冲突的槽位均设置有冲突标记,为了避免过多槽位被置为冲突不可用而造成大量废弃空间,本实施例在删除表项时,需要进行相应的空间回溯操作,即对所删除的表项对应的冲突槽位回收,重置冲突标记,以免造成大量空间浪费。当第i+Ι个哈希值仍有冲突时,冲突处理子模块14取出第i+Ι张索引表对应的冲突槽位存储的地址指针,通过第一哈希运算子模块11和第二哈希运算子模块12,重新判断第i+2个哈希值是否有冲突,以此循环,直至找到无冲突的哈希值。本实施例采用多张索引表进行地址存储,合理处理冲突状况,为每一个业务表项条目所在结果表的地址指针都分配到合适的索引表存储空间,有效保证了表项及其地址指针存储的完备性。本发明实施例中,冲突处理子模块14还用于,在当前索引表的对应索引中无空闲的槽位时,输出当前索引表槽位满的信息至第一哈希运算子模块11,供第一哈希运算子模块11利用下一索引表的第一重哈希函数,对待存储表项的键值进行哈希计算,在下一索引表中获得对应的索引。即对于当前索引表中的槽位已全部装满的情况,不再进行第二重哈希函数运算,直接跳到下一索引表,有效提高了存储速度和存储效率。如图12所示,图12为本发明第三实施例的基于哈希表的表项处理装置中存储模块的结构示意图,存储模块10具体还包括冲突链表存储子模块15,用于在当前索引表为最后一张索引表时,将待存储表项和冲突表项所在结果表的地址指针分别存储于冲突链表中,并将冲突链表指针存储于最后一张索引表的冲突槽位中。本实施例对于在所有索引表中都无法找到合适存储位置的地址指针,通过冲突链表存储子模块15将其存放在冲突链表中,保证了所有表项所在结果表的地址指针都可分配到合适的存储空间,有效提高了表项及其地址指针存储的完备性。 如图13所示,图13为本发明第四实施例中基于哈希表的表项处理装置的结构示意图,该实施例提到的基于哈希表的表项处理装置,还包括
查询模块20,用于在表项查询时,利用索引表的两重哈希函数,计算待查询键值在索引表中的哈希值;在索引表中,查找哈希值所在位置存储的地址指针;读取地址指针指向的结果表中存储的表项。本实施例的查询模块20仅采用两重哈希函数运算,即可找到匹配的表项存储位置,减少了访问存储器的次数,有效保证了较快的表项查询速度。如图14所示,图14为本发明第五实施例的基于哈希表的表项处理装置中查询模块的结构示意图,查询模块20具体包括
行哈希计算,在索引表中查询对应的索引;第二哈希查询子模块22,用于利用各索引表的第二重哈希函数,计算待查询键值的哈希值,在索引中查询哈希值对应的槽位;表项读取子模块23,用于当对应的槽位存储的地址指针有效时,读取地址指针指向的结果表中存储的表项;冲突链表读取子模块24,用于当所有对应的槽位存储的地址指针均无效,且最后一张哈希表中对应的槽位中设置有冲突标记时,查询最后一张哈希表中对应的槽位存储的冲突链表指针;查询冲突链表指针指向的冲突链表中存储的地址指针;读取地址指针指向的结果表中存储的表项。本实施例通过第一哈希查询子模块21和第二哈希查询子模块22进行两重哈希函数查找匹配的表项,减少了访问存储器的次数,提高了查询速度与效率,便于硬件与存储器之间接口的实现。本实施例可以采用所有索引表的哈希函数运算同时进行的方式查找匹配表项,以节省查找时间,提高查找效率。此外,本实施例在表项查询时,可按照顺序查找方式,即首先对第一张索引表进行查找,如果找到有效的地址指针,则不再进行后续索引表的哈希函数运算,减少了运算量,同样能够实现提高查询速度与效率的目的。为确保表项查找的完备性,当各索引表中均找不到有效的地址指针时,则通过冲突链表读取子模块24在冲突链表中进行查询,避免了表项查询的遗漏。如图15所示,图15为本发明第六实施例的基于哈希表的表项处理装置中查询模块的结构示意图,查询模块20具体还包括优先级比较子模块25,用于当存在多个有效的地址指针时,比较各有效的地址指针所在索引表的优先级;表项读取子模块23还用于,根据优先级比较结果,查询优先级最高的索引表存储的有效的地址指针;读取地址指针指向的结果表中存储的表项。本实施例的索引表存在明显的优先级顺序,由于在对表项所在结果表的地址指针存储时,首先在第一张索引表中查找空闲的存储位置,当第一张索引表中无空闲存储空间,或发生哈希值冲突时,即标识ID冲突,才在下一张索引表中查找空闲的存储位置,因此,第一张索引表的优先级最高,且通常情况下,大多数表项所在结果表的地址指针均存储在第一张索引表中,越往后的索引表优先级越低。本实施例通过优先级比较子模块25对索引表优先级的比较,表项读取子模块23根据优先级比较结果,读取优先级最高的索引表对应的地址指针指向的结果表存储的表项,确保了业务表项条目查询的准确性和可靠性,保证了表项查询的一次命中率。
如图16所示,图16为本发明第七实施例的基于哈希表的表项处理装置中查询模块的结构示意图,查询模块20具体还包括无结果反馈子模块26,用于在最后一张索引表的特定槽位中没有冲突链表指针时,读取结果表中指定位存储的无结果反馈信息。本实施例中,由于在对表项所在结果表的地址指针存储时,对于在所有索引表中都无法找到合适存储位置的地址指针,则存储在冲突链表中,同时还在最后一张索引表的冲突槽位中标记冲突链表指针,因此,在表项查询时,通过判断最后一张索引表的冲突槽位中是否设置有冲突链表指针,来判断本次表项查询是否有结果。例如,当最后一张索引表的冲突槽位中设置有冲突链表指针,则说明本次表项查询有结果表项,且该结果表项所在结果表的地址指针因找不到合适的存储位置,而被存储在冲突链表中;否则,本次表项查询没有结果,无结果反馈子模块26反馈查询无结果的信息。本实施例通过对冲突链表进行读取,避免在表项查询时漏掉表项,确保表项查询的完备性;同时,在无结果的情况下,通过反 馈无结果信息,避免了将下一次查询结果当作本次查询结果而发生错误的情况发生,确保了表项查询的可靠性。以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
权利要求
1.一种基于哈希表的表项处理方法,其特征在于,包括步骤 在表项存储时,将待存储表项按照顺序排布方式,存储于结果表中; 利用索引表的两重哈希函数,计算所述待存储表项的键值的哈希值; 将所述哈希值和所述待存储表项所在结果表的地址指针存储于所述索引表中空闲的位置。
2.根据权利要求I所述的基于哈希表的表项处理方法,其特征在于,所述利用索引表的两重哈希函数,计算所述待存储表项的键值哈希值;将所述哈希值和所述待存储表项所在结果表的地址指针存储于所述索引表中空闲的位置的步骤具体包括 利用当前索引表的两重哈希函数,计算所述待存储表项的键值的当前哈希值; 在当前哈希值无冲突时,将当前哈希值和所述待存储表项所在结果表的地址指针存储于当前索引表中空闲的位置; 在当前哈希值有冲突时,利用下一索引表的两重哈希函数,计算所述待存储表项的键值的下一哈希值; 在下ー哈希值无冲突时,将下一哈希值和所述待存储表项所在结果表的地址指针存储于下一索引表中空闲的位置。
3.根据权利要求2所述的基于哈希表的表项处理方法,其特征在干,所述利用当前索引表的两重哈希函数,计算所述待存储表项的键值的当前哈希值;在当前哈希值无冲突时,将当前哈希值和所述待存储表项所在结果表的地址指针存储于当前索引表中空闲的位置的步骤具体包括 利用当前索引表的第一重哈希函数,对所述待存储表项的键值进行哈希计算,在当前索引表中获得对应的索引; 利用当前索引表的第二重哈希函数,计算所述待存储表项的键值的当前哈希值; 在当前哈希值与对应的索引中各槽位存储的哈希值无冲突时,将当前哈希值和所述待存储表项所在结果表的地址指针,存储于对应的索引中空闲的槽位。
4.根据权利要求3所述的基于哈希表的表项处理方法,其特征在于,所述在当前哈希值有冲突时,利用下一索引表的两重哈希函数,计算所述待存储表项的键值的下ー哈希值;在下ー哈希值无冲突时,将下一哈希值和所述待存储表项所在结果表的地址指针存储于下一索引表中空闲的位置的步骤具体包括 在当前哈希值与对应的索引中一槽位存储的哈希值发生冲突时,将冲突槽位中存储的冲突表项所在结果表的地址指针取出,并在所述冲突槽位中设置冲突标识; 利用下一索引表的第一重哈希函数,分别对所述待存储表项的键值和冲突表项的键值进行哈希计算,在下一索引表中分别获得对应的索引; 利用下一索引表的第二重哈希函数,分别计算所述待存储表项的键值和冲突表项的键值的下一哈希值; 在所述待存储表项的下一哈希值与对应的索引中各槽位存储的哈希值无冲突时,将所述待存储表项的下一哈希值和所在结果表的地址指针,存储于对应的索引中空闲的槽位;在所述冲突表项的下一哈希值与对应的索引中各槽位存储的哈希值无冲突吋,将所述冲突表项的下一哈希值和所在结果表的地址指针,存储于对应的索引中空闲的槽位。
5.根据权利要求4所述的基于哈希表的表项处理方法,其特征在于,所述在当前哈希值与对应的索引中一槽位存储的哈希值发生冲突时,将冲突槽位中存储的冲突表项所在结果表的地址指针取出,并在所述冲突槽位中设置冲突标识的步骤之后还包括 在当前索引表为最后ー张索引表吋,将所述待存储表项和冲突表项所在结果表的地址指针分别存储于冲突链表中,并将冲突链表指针存储于最后ー张索引表的冲突槽位中。
6.根据权利要求5所述的基于哈希表的表项处理方法,其特征在于,所述将所述哈希值和所述待存储表项所在结果表的地址指针存储于所述索引表中空闲的位置的步骤之后还包括 在表项查询时,利用索引表的两重哈希函数,计算待查询键值的哈希值; 在所述索引表中,查找所述哈希值所在位置存储的地址指针; 读取所述地址指针指向的结果表中存储的表项。
7.根据权利要求6所述的基于哈希表的表项处理方法,其特征在干,所述在表项查询时,利用索引表的两重哈希函数,计算待查询键值的哈希值;在所述索引表中查找所述哈希值所在位置存储的地址指针;读取所述地址指针指向的结果表中存储的表项的步骤具体包括 利用各索引表的第一重哈希函数,对所述待查询键值进行哈希计算,在所述索引表中查询对应的索引; 利用各索引表的第二重哈希函数,计算所述待查询键值的哈希值,在所述索引中查询所述哈希值对应的槽位; 当对应的槽位存储的地址指针有效时,读取所述地址指针指向的结果表中存储的表项; 当所有对应的槽位存储的地址指针均无效,且最后一张哈希表中对应的槽位中设置有冲突标记时,查询最后一张哈希表中对应的槽位存储的冲突链表指针; 查询所述冲突链表指针指向的冲突链表中存储的地址指针; 读取所述地址指针指向的结果表中存储的表项。
8.根据权利要求7所述的基于哈希表的表项处理方法,其特征在于,所述当对应的槽位存储的地址指针有效时,读取所述地址指针指向的结果表中存储的表项的步骤具体包括 当存在多个有效的地址指针吋,比较各有效的地址指针所在索引表的优先级; 查询优先级最高的索引表存储的有效的地址指针; 读取所述地址指针指向的结果表中存储的表项。
9.一种基于哈希表的表项处理装置,其特征在于,包括 存储模块,用于在表项存储吋,将待存储表项按照顺序排布方式,存储于结果表中;利用索引表的两重哈希函数,计算所述待存储表项的键值的哈希值;将所述哈希值和所述待存储表项所在结果表的地址指针存储于所述索引表中空闲的位置。
10.根据权利要求9所述的基于哈希表的表项处理装置,其特征在于,所述存储模块具体用干 利用当前索引表的两重哈希函数,计算所述待存储表项的键值的当前哈希值; 在当前哈希值无冲突时,将当前哈希值和所述待存储表项所在结果表的地址指针存储于当前索引表中空闲的位置;在当前哈希值有冲突时,利用下一索引表的两重哈希函数,计算所述待存储表项的键值的下一哈希值; 在下ー哈希值无冲突时,将下一哈希值和所述待存储表项所在结果表的地址指针存储于下一索引表中空闲的位置。
11.根据权利要求10所述的基于哈希表的表项处理装置,其特征在于,所述存储模块具体包括 第一哈希运算子模块,用于利用当前索引表的第一重哈希函数,对所述待存储表项的键值进行哈希计算,在当前索引表中获得对应的索引; 第二哈希运算子模块,用于利用当前索引表的第二重哈希函数,计算所述待存储表项的键值的当前哈希值; 地址指针存储子模块,用于在当前哈希值与对应的索引中各槽位存储的哈希值无冲突时,将当前哈希值和所述待存储表项所在结果表的地址指针,存储于对应的索引中空闲的槽位。
12.根据权利要求11所述的基于哈希表的表项处理装置,其特征在于,所述存储模块具体还包括 冲突处理子模块,用于在当前哈希值与对应的索引中一槽位存储的哈希值发生冲突时,将冲突槽位中存储的冲突表项所在结果表的地址指针取出,并在所述冲突槽位中设置冲突标识; 所述第一哈希运算子模块还用于,利用下一索引表的第一重哈希函数,分别对所述待存储表项的键值和冲突表项的键值进行哈希计算,在下一索引表中分别获得对应的索引; 所述第二哈希运算子模块还用于,利用下一索引表的第二重哈希函数,分别计算所述待存储表项的键值和冲突表项的键值的下一哈希值; 所述地址指针存储子模块还用于,在所述待存储表项的下一哈希值与对应的索引中各槽位存储的哈希值无冲突时,将所述待存储表项的下一哈希值和所在结果表的地址指针,存储于对应的索引中空闲的槽位;在所述冲突表项的下一哈希值与对应的索引中各槽位存储的哈希值无冲突时,将所述冲突表项的下一哈希值和所在结果表的地址指针,存储于对应的索引中空闲的槽位。
13.根据权利要求12所述的基于哈希表的表项处理装置,其特征在于,所述存储模块具体还包括 冲突链表存储子模块,用于在当前索引表为最后ー张索引表时,将所述待存储表项和冲突表项所在结果表的地址指针分别存储于冲突链表中,并将冲突链表指针存储于最后一张索引表的冲突槽位中。
14.根据权利要求13所述的基于哈希表的表项处理装置,其特征在于,还包括查询模块,用于在表项查询时,利用索引表的两重哈希函数,计算待查询键值在所述索引表中的哈希值;在所述索引表中,查找所述哈希值所在位置存储的地址指针;读取所述地址指针指向的结果表中存储的表项。
15.根据权利要求14所述的基于哈希表的表项处理装置,其特征在于,所述查询模块具体包括 第一哈希查询子模块,用于利用各索引表的第一重哈希函数,对所述待查询键值进行哈希计算,在所述索引表中查询对应的索引; 第二哈希查询子模块,用于利用各索引表的第二重哈希函数,计算所述待查询键值的哈希值,在所述索引中查询所述哈希值对应的槽位; 表项读取子模块,用于当对应的槽位存储的地址指针有效时,读取所述地址指针指向的结果表中存储的表项; 冲突链表读取子模块,用于当所有对应的槽位存储的地址指针均无效,且最后ー张哈希表中对应的槽位中设置有冲突标记时,查询最后ー张哈希表中对应的槽位存储的冲突链表指针;查询所述冲突链表指针指向的冲突链表中存储的地址指针;读取所述地址指针指向的结果表中存储的表项。
16.根据权利要求15所述的基于哈希表的表项处理装置,其特征在于,所述查询模块具体还包括 优先级比较子模块,用于当存在多个有效的地址指针时,比较各有效的地址指针所在索引表的优先级; 所述表项读取子模块还用于,根据优先级比较结果,查询优先级最高的索引表存储的有效的地址指针;读取所述地址指针指向的结果表中存储的表项。
全文摘要
本发明公开了一种基于哈希表的表项处理方法及其装置,其方法包括步骤在表项存储时,将待存储表项按照顺序排布方式,存储于结果表中;利用索引表的两重哈希函数,计算所述待存储表项的键值的哈希值;将所述哈希值和所述待存储表项所在结果表的地址指针存储于所述索引表中空闲的位置。本发明在保证了较少的访问次数和较快的查询速度的同时,有效提高了业务表项条目存储量,增加了哈希表所能支持业务的容量,使哈希表的空间利用率高,并且还降低了冲突发生的概率,使哈希表的性能与容量之间达到平衡。
文档编号G06F17/30GK102682116SQ20121014724
公开日2012年9月19日 申请日期2012年5月14日 优先权日2012年5月14日
发明者史顺达, 孙远航, 张炜, 陈伟 申请人:中兴通讯股份有限公司