一种哈希表元素失效删除方法

文档序号:6526222阅读:1683来源:国知局
一种哈希表元素失效删除方法
【专利摘要】本发明提供了一种哈希表元素失效删除方法,解决哈希表失效元素及时删除的问题。该方法通过为每个哈希桶提供超时时间Tbucket,为每个关键码提供超时时间Tkey,两个时间粒度进行不同元素插入、查询时,更新每个关键码值Tkey,并将最新访问的关键码值放置到哈希桶最优先访问的位置上,在此过程中,根据哈希桶超时时间Tbucket设定,检查哈希桶上具有相同哈希值的关键码,如果元素超时,即删除失效元素,同时根据哈希桶扫描策略,检查哈希表其他哈希桶元素上的其他关键码值,并删除因超时失效的元素。
【专利说明】一种哈希表元素失效删除方法

【技术领域】
[0001]本发明涉及计算机算法领域,涉及一种哈希表元素失效删除方法。

【背景技术】
[0002]随着网络信息化在世界范围内不断提高,Internet上的网络节点数以亿计,导致各种网络节点之间的交互关系剧增。而在网络节点行为实时分析时,需要一种快速的定位和操作节点交互行为的方法,同时,由于计算节点的RAM存储量比较小,需要及时删除失效的网络节点交互行为。因此,在分析网络节点行为时,需要一种高效的失效元素删除方法。
[0003]哈希表又叫散列表,它通过把关键码值映射到表中一个位置来访问记录,以加快查找速度,其中映射函数叫做哈希函数。当不同的关键码值映射到同一个地址时,就存在碰撞,而解决碰撞的一个基本方法是采用链表法。对哈希表有三个操作:插入、查询、删除。目前存在的哈希表元素失效(超时)删除方法可以有如下几种:(I)、基于元素生命周期完结触发超时删除方法;(2)、基于优先级队列的超时方法;(3)、基于哈希表元素轮询的超时方法。
[0004]其中第一种方法由于假设元素具有完整生命周期的特点,导致当元素无失效条件时,将永远无法被删除,第二种方法基于哈希表元素相对较少,优先级队列所占内存相对较少。第三种方法基于对哈希表元素扫描所占时间不足以影响其他操作的实时性。


【发明内容】

[0005]为了解决哈希表失效元素及时删除功能,本发明提供了一种哈希表元素失效删除方法。
[0006]一种哈希表元素失效删除方法,通过为每个哈希桶提供超时时间Tbudtrt,为每个关键码提供超时时间Tlrey,两个时间粒度进行不同元素插入、查询时,更新每个关键码值Tlrey,并将最新访问的关键码值放置到哈希桶最优先访问的位置上,在此过程中,根据哈希桶超时时间Tbudtrt设定,检查哈希桶上具有相同哈希值的关键码,如果元素超时,即删除失效元素,同时根据哈希桶扫描策略,检查哈希表其他哈希桶元素上的其他关键码值,并删除因超时失效的元素。
[0007]本发明的有益效果:本发明通过为桶和关键码值增加超时失效时间,判定关键码值何时可以被删除。同时对相同桶上的关键码值排序,让最新访问的关键码值放置到最新位置,最旧的关键码值放置到末尾,当删除元素时,快速定位该删除的元素。同时,采用扫描的方法,及时删除其他未访问的桶上的元素,保证哈希表中元素最新,提高存储效率。

【具体实施方式】
[0008]本发明通过为每个哈希桶提供超时时间Tbudtrt,为每个关键码提供超时时间Tlrey,两个时间粒度可不同元素插入、查询时,更新每个关键码值Tkey,并将最新访问的关键码值放置到桶最优先访问的位置上,在此过程中,根据桶超时时间Tbudtrt设定,检查桶上具有相同哈希值的关键码,如果元素超时,即删除失效元素,同时根据桶扫描策略,检查哈希表其他桶元素上的其他关键码值,并删除因超时失效的元素。
[0009]下面使用具体实施例对本发明提供哈希表插入、查询、删除进行详细描述。
[0010]哈希表插入操作如下:
[0011](I)根据关键码计算哈希值,从而得到哈希桶位置。
[0012](2)遍历哈希桶上具有相同哈希值的关键码。对于每个关键码值:
[0013]①检查关键码值是否超时失效,如果失效,执行②。否则执行③。
[0014]②删除该关键码值,并更新之后关键码值的关系,继续执行③。
[0015]③判定当前关键码值和即将插入的关键码值是否相同。如果相同,返回插入失败,结束。如果不同,继续执行①。
[0016](3)将即将插入的关键码值放置到该桶的最优先访问位置,并设置关键码值的超时时间。
[0017](4)执行哈希表扫描操作。
[0018]哈希表查询操作如下:
[0019](I)根据关键码计算哈希值,从而得到哈希桶位置。
[0020](2)遍历哈希桶上具有相同哈希值的关键码。对于每个关键码值:
[0021]①检查关键码值是否超时失效,如果失效,执行②。否则执行③。
[0022]②删除该关键码值,并更新之后关键码值的关系,继续执行③。
[0023]③判定当前关键码值和查询的关键码值是否相同。如果相同,返回关键码值对应的信息,结束。如果不同,继续执行①。
[0024](3)将查询的关键码值放置到该桶的最优先访问位置,并更新关键码值的超时时间。
[0025](4)执行哈希表扫描操作。
[0026]哈希表删除操作如下:
[0027](I)根据关键码计算哈希值,从而得到哈希桶位置。
[0028](2)遍历哈希桶上具有相同哈希值的关键码。对于每个关键码值:
[0029]①检查关键码值是否超时失效,如果失效,执行②。否则执行③。
[0030]②删除该关键码值,并更新之后关键码值的关系,继续执行③。
[0031]③判定当前关键码值和即将插入的关键码值是否相同。如果相同,删除该元素,并更新具有相同哈希值的关键码的相对关系。如果不同,继续执行①。
[0032](3)执行哈希表扫描操作。
[0033]哈希表超时扫描操作:
[0034](I)获取上次哈希失效扫描的下一个桶位置,桶计数设定为零。
[0035](2)如果当前桶还未失效,继续(I ),否则执行(3)。
[0036](3)遍历当前桶上所有关键码值。
[0037]①检查关键码值是否超时失效,如果失效,执行②。否则执行③。
[0038]②删除该关键码值,并更新之后关键码值的关系,继续执行③。
[0039]③获取下一个关键码值。
[0040](4)桶计数加一。
[0041] (5)如果桶计数超过某个阈值,结束。否则,继续执行(I)。
【权利要求】
1.一种哈希表元素失效删除方法,其特征在于:通过为每个哈希桶提供超时时间Tbudtrt,为每个关键码提供超时时间Tkey,两个时间粒度进行不同元素插入、查询时,更新每个关键码值Tkey,并将最新访问的关键码值放置到哈希桶最优先访问的位置上,在此过程中,根据哈希桶超时时间Tbudtrt设定,检查哈希桶上具有相同哈希值的关键码,如果元素超时,即删除失效元素,同时根据哈希桶扫描策略,检查哈希表其他哈希桶元素上的其他关键码值,并删除因超时失效的元素。
2.如权利要求1所述的一种哈希表元素失效删除方法,其特征在于:所述的哈希表插入包括如下步骤: (1)根据关键码计算哈希值得到哈希桶位置; (2)遍历哈希桶上具有相同哈希值的关键码,对于每个关键码值: ①检查关键码值是否超时失效,如果失效,执行②,否则执行③; ②删除该关键码值,并更新之后关键码值的关系,继续执行③; ③判定当前关键码值和即将插入的关键码值是否相同;如果相同,返回插入失败,结束;如果不同,继续执行①; (3)将即将插入的关键码值放置到该桶的最优先访问位置,并设置关键码值的超时时间; (4)执行哈希表扫描操作。
3.如权利要求1或2所述的一种哈希表元素失效删除方法,其特征在于:所述的哈希表查询操作包括如下步骤: (1)根据关键码计算哈希值得到哈希桶位置; (2)遍历哈希桶上具有相同哈希值的关键码,对于每个关键码值: ①检查关键码值是否超时失效,如果失效,执行②,否则执行③; ②删除该关键码值,并更新之后关键码值的关系,继续执行③; ③判定当前关键码值和查询的关键码值是否相同,如果相同,返回关键码值对应的信息,结束;如果不同,继续执行①; (3)将查询的关键码值放置到该桶的最优先访问位置,并更新关键码值的超时时间; (4)执行哈希表扫描操作。
4.如权利要求1或2所述的一种哈希表元素失效删除方法,其特征在于:所述的哈希表删除失效元素操作包括如下步骤: (1)根据关键码计算哈希值,从而得到哈希桶位置; (2)遍历哈希桶上具有相同哈希值的关键码,对于每个关键码值: ①检查关键码值是否超时失效,如果失效,执行②,否则执行③; ②删除该关键码值,并更新之后关键码值的关系,继续执行③; ③判定当前关键码值和即将插入的关键码值是否相同;如果相同,删除该元素,并更新具有相同哈希值的关键码的相对关系,如果不同,继续执行①; (3)执行哈希表扫描操作。
5.如权利要求1或2所述的一种哈希表元素失效删除方法,其特征在于:所述的哈希表超时扫描操作包括如下步骤: (O获取上次哈希失效扫描的下一个桶位置,桶计数设定为零;(2)如果当前桶还未失效,继续(1),否则执行(3);(3)遍历当前桶上所有关键码值;①检查关键码值是否超时失效,如果失效,执行②,否则执行③;②删除该关键码值,并更新之后关键码值的关系,继续执行③;③获取下一个关键码值;(4)桶计数加一;(5)如果桶计数超过某个 阈值,结束;否则,继续执行(I)。
【文档编号】G06F17/30GK104077343SQ201310739486
【公开日】2014年10月1日 申请日期:2013年12月26日 优先权日:2013年12月26日
【发明者】张慧, 贺龙涛, 李镇, 李城龙, 王秀文, 熊刚, 李静, 曹首峰, 于贺威, 王大伟, 金暐, 李真真 申请人:国家计算机网络与信息安全管理中心, 中国科学院信息工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1