[发明专利]一种哈希表动态适应数据的方法及装置有效
申请号: | 200910108308.7 | 申请日: | 2009-06-16 |
公开(公告)号: | CN101582082A | 公开(公告)日: | 2009-11-18 |
发明(设计)人: | 徐佳宏;程伯钦;蒋颁 | 申请(专利权)人: | 深圳市茁壮网络股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 深圳中一专利商标事务所 | 代理人: | 张全文 |
地址: | 518002广东省深圳市罗湖区沿河*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 哈希表 动态 适应 数据 方法 装置 | ||
技术领域
本发明属于数据存储领域,尤其涉及一种哈希表动态适应数据的方法及装置。
背景技术
在一般的线性表或树等数据结构中,在将数据存储至数据结构时,数据在数据结构中的相对位置是随机的,与数据的关键字之间不存在确定的关系。在数据结构中查找数据时,需将数据的关键字与数据结构中记录的关键字进行一系列的比较,才能查找到数据,查找的效率与比较次数密切相关,很多情况下,数据查找效率低。为了避免这种问题,现有技术一般采用哈希函数对需要存储的数据进行处理,得到哈希表,使数据的关键字与数据结构中的唯一的存储位置相对应,从而在查找数据时,不需要进行比较便可直接取得所查数据。
现有的哈希表存储区一般是定长的,即哈希表存储区的大小(Hash Base值)是固定的,预先根据数据的存储需求来设定合适的Hash Base值。当需要存储的数据增大时,则由于这种哈希表存储区太小导致产生较多的冲突,降低了哈希算法的效率。如果预先设置足够大的哈希表存储区,则当数据量较小时,将导致内存的浪费。
发明内容
本发明实施例的目的在于提供一种哈希表动态适应数据的方法,旨在解决现有的哈希表不能动态适应数据而造成的内存浪费或内存不足的问题。
本发明实施例是这样实现的,一种哈希表动态适应数据的方法,所述方法包括下述步骤:
A、将内存初始化为哈希表存储区、哈希项存储区和哈希关键值存储区,所述哈希表存储区用于存储哈希项的索引值,所述哈希项存储区用于存储数据的信息,所述数据的信息包括数据的真实地址和长度,所述哈希关键值存储区用于存储数据;
B、当检测到哈希表不能满足数据的存储需求时,保持哈希项存储区和哈希关键值存储区的数据不变,释放哈希表存储区,并重新分配能满足数据存储需求的新的哈希表存储区,采用重新分配哈希表存储区之前采用的哈希函数对哈希关键值存储区中存储的数据重新进行计算,得到新的哈希表存储区中的数据。
本发明实施例的另一目的在于提供一种哈希表动态适应数据的装置,所述装置包括:
内存初始化单元,用于将内存初始化为哈希表存储区、哈希项存储区和哈希关键值存储区,所述哈希表存储区用于存储哈希项的索引值,所述哈希项存储区用于存储数据的信息,所述数据的信息包括数据的真实地址和长度,所述哈希关键值存储区用于存储数据;
哈希表判断单元,用于判断哈希表是否满足数据存储需求;
存储区保持单元,用于在所述哈希表判断单元的结果为否时,保持哈希项存储区和哈希关键值存储区的数据不变;
哈希表重新分配单元,用于在所述哈希表判断单元的结果为否时,释放哈希表存储区,并重新分配能满足数据存储需求的新的哈希表存储区;
数据重计算单元,用于在所述哈希表判断单元的结果为否时,采用重新分配哈希表存储区之前采用的哈希函数对哈希关键值存储区中存储的数据重新进行计算,得到新的哈希表存储区中的数据。
在本发明实施例中,当检测到哈希表不能满足数据的存储需求时,先保持哈希项存储区和哈希关键值存储区的数据不变,再释放哈希表存储区,并重新分配能满足数据存储需求的新的哈希表存储区,采用相同的哈希函数对哈希关键值存储区中存储的数据重新进行计算,得到新的哈希表存储区的数据,从而使哈希表可以动态的适应任意数据,避免了由于哈希表存储区过大造成的内存浪费问题,由于哈希表存储区过小造成的哈希表存储区不能满足任意数据需求,从而导致冲突较多、降低哈希函数的效率的问题。
附图说明
图1是本发明实施例提供的哈希表动态适应数据的方法的实现流程图;
图2是本发明实施例提供的哈希表动态扩展前的内存的数据结构图;
图3是本发明实施例提供的哈希表动态扩展后的内存的数据结构图;
图4是本发明实施例提供的哈希表动态适应数据的装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,当检测到哈希表不能满足数据的存储需求时,先保持哈希项存储区和哈希关键值存储区的数据不变,再释放哈希表存储区,并重新分配能满足数据存储需求的新的哈希表存储区,采用相同的哈希函数对哈希关键值存储区中存储的数据重新进行计算,得到新的哈希表存储区的数据,从而使哈希表可以动态的适应任意数据,避免了由于哈希表存储区过大造成的内存浪费和哈希表存储区过小造成的哈希表存储区不能满足任意数据需求的问题。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市茁壮网络股份有限公司,未经深圳市茁壮网络股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910108308.7/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置