[发明专利]一种字符串散列表实现方法和系统有效
申请号: | 201910450998.8 | 申请日: | 2019-05-28 |
公开(公告)号: | CN110321346B | 公开(公告)日: | 2021-09-21 |
发明(设计)人: | 郑天祺;程学旗;李冰;王征;张志斌;刘悦;赵鹏;郭嘉丰 | 申请(专利权)人: | 中国科学院计算技术研究所 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 北京律诚同业知识产权代理有限公司 11006 | 代理人: | 祁建国;梁挥 |
地址: | 100080 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 字符串 列表 实现 方法 系统 | ||
1.一种字符串散列表实现方法,其特征在于,包括:
根据字符串长度,将该字符串分发至对应的散列表;该散列表包括数组散列表、数值型散列表和字符型双散列表;
其中,当该字符串的长度大于或等于第二长度阈值时,将该字符串分发至字符型双散列表,该字符型双散列表包括一级散列和二级散列,该一级散列的散列槽存储该字符串的前缀散列值或完全散列值,以及记录当前散列槽的存储状态的标签;若该一级散列的散列槽为空,则标识该标签为空;若该字符串的完全散列值小于或等于该一级散列的散列槽,则将该完全散列值存储于该一级散列的散列槽,标识该标签为满,并使用该字符串的完全散列值进行索引;若该完全散列值大于该一级散列的散列槽,则将该字符串的前缀散列值存储于该一级散列的散列槽,标识该标签为溢出,将该完全散列值存储于该二级散列的散列槽,并使用该前缀散列值和完全散列值进行索引。
2.如权利要求1所述的字符串散列表实现方法,其特征在于,当该字符串的长度小于或等于第一长度阈值时,将该字符串分发至数组散列表,使用数组进行索引,并将该字符串转为数值型作为索引数组的下标。
3.如权利要求1所述的字符串散列表实现方法,其特征在于,当该字符串的长度大于第一长度阈值且小于该第二长度阈值时,将该字符串分发至数值型散列表,使用该字符串的散列值进行索引,并在该数值型散列表的散列槽末尾字节记录该字符串到对应槽位的距离。
4.一种字符串散列表实现系统,其特征在于,包括:
字符串分发模块,用于根据该字符串的长度,将该字符串分发至对应的散列表;该散列表包括数组散列表、数值型散列表和字符型双散列表;
该字符串分发模块具体包括:
长字符串散列模块,用于长字符串散列表实现;其中当该字符串的长度大于或等于第二长度阈值时,将该字符串分发至字符型双散列表,该字符型双散列表包括一级散列和二级散列,该一级散列的散列槽存储该字符串的前缀散列值或完全散列值,以及记录当前散列槽的存储状态的标签;若该一级散列的散列槽为空,则标识该标签为空;若该字符串的完全散列值小于或等于该一级散列的散列槽,则将该完全散列值存储于该一级散列的散列槽,标识该标签为满,并使用该字符串的完全散列值进行索引;若该完全散列值大于该一级散列的散列槽,则将该字符串的前缀散列值存储于该一级散列的散列槽,标识该标签为溢出,将该完全散列值存储于该二级散列的散列槽,并使用该前缀散列值和完全散列值进行索引。
5.如权利要求4所述的字符串散列表实现系统,其特征在于,该字符串分发模块还包括:
极短字符串散列模块,用于极短字符串散列表实现;其中当该字符串的长度小于或等于第一长度阈值时,将该字符串分发至数组散列表,使用数组进行索引,并将该字符串转为数值型作为索引数组的下标。
6.如权利要求4所述的字符串散列表实现系统,其特征在于,该字符串分发模块还包括:
短字符串散列模块,用于短字符串散列表实现;其中当该字符串的长度大于第一长度阈值且小于该第二长度阈值时,将该字符串分发至数值型散列表,使用该字符串的散列值进行索引,并在该数值型散列表的散列槽末尾字节记录该字符串到对应槽位的距离。
7.一种可读存储介质,存储有可执行指令,该可执行指令用于执行如权利要求1~3任一项所述的字符串散列表实现方法。
8.一种数据处理装置,其特征在于,包括:
如权利要求7所述的可读存储介质;
处理器,用于调取并执行该可读存储介质中的可执行指令,以实现字符串散列表。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910450998.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种数据加密储存方法
- 下一篇:数据匹配方法及装置、存储介质、终端