CN112667636B - 索引建立方法、装置及存储介质 - Google Patents
索引建立方法、装置及存储介质 Download PDFInfo
- Publication number
- CN112667636B CN112667636B CN202011619917.1A CN202011619917A CN112667636B CN 112667636 B CN112667636 B CN 112667636B CN 202011619917 A CN202011619917 A CN 202011619917A CN 112667636 B CN112667636 B CN 112667636B
- Authority
- CN
- China
- Prior art keywords
- information
- index
- prefix information
- target
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种索引建立方法、装置及存储介质,该方法包括:获取交易数据对应的哈希值;识别哈希值中前预设数量位的第一前缀信息,预设数量少于哈希值的总位数;根据第一前缀信息在预先创建的字典树中查找字典树中是否存在第一匹配路径,字典树中包括根节点和叶子节点,第一匹配路径为从根节点出发且经过的叶子节点所组成的前缀信息与第一前缀信息相匹配的路径;若存在第一匹配路径,则识别哈希值中位于第一前缀信息之后第一预设位的第二前缀信息,得到与第二前缀信息对应的索引信息;根据索引信息,建立交易数据的索引。本申请利用全量哈希的部分数据来构建索引,减少内存消耗。
Description
技术领域
本申请涉及数据处理技术领域,具体涉及一种索引建立方法、装置及存储介质。
背景技术
当前区块链底层对于TxHash的索引的建立都是通过Key-Value数据库来建立,所用的索引都是用的全文索引,及把TxHash的全文作为索引,然后用类似B+树或者二分查找的方法在内存或者磁盘进行搜索。
然而,采用上述方式,其内存消耗大,索引效率低,因此,如何建立低内存消耗的索引,是现有数据处理领域亟需解决的问题。
发明内容
本申请提供一种索引建立方法、装置及存储介质,以解决如何建立低内存消耗的索引,是现有数据处理领域亟需解决的问题。
一方面,本申请提供一种索引建立方法,所述方法包括:
获取交易数据对应的哈希值;
识别所述哈希值中前预设数量位的第一前缀信息,所述预设数量少于所述哈希值的总位数;
根据所述第一前缀信息在预先创建的字典树中查找所述字典树中是否存在第一匹配路径,所述字典树中包括根节点和叶子节点,所述第一匹配路径为从根节点出发且经过的叶子节点所组成的前缀信息与所述第一前缀信息相匹配的路径;
若存在所述第一匹配路径,则识别所述哈希值中位于所述第一前缀信息之后第一预设位的第二前缀信息,得到与所述第二前缀信息对应的索引信息;
根据所述索引信息,建立所述交易数据的索引。
在本申请一种可能的实现方式中,所述索引信息为二元组信息,所述索引信息包括与所述第二前缀信息中第二预设位对应的实际字符串和后续连续查找长度初始值;
根据所述索引信息,建立所述交易数据的索引,包括:
判断所述第一匹配路径中最后一个叶子节点对应的目标叶子节点中是否存在与所述二元组信息对应的预先设置的三元组结构,所述三元组结构包括所述二元组信息和用于存储所述哈希值的物理地址;
若不存在所述三元组结构,则将所述二元组信息插入所述目标叶子节点中对应的目标三元组结构,以建立所述交易数据的索引。
在本申请一种可能的实现方式中,在将所述二元组信息插入所述目标叶子节点中对应的目标三元组结构之后,所述方法还包括:
获取所述哈希值对应的哈希映射内存消耗值和进制化数组内存消耗值;
比较所述哈希映射内存消耗值与所述进制化数组内存消耗值的大小;
若所述哈希映射内存消耗值比所述进制化数组内存消耗值小,则采用哈希映射存储结构存储所述二元组信息;
若所述进制化数组内存消耗值比所述哈希映射内存消耗值小,则采用进制化数组存储结构存储所述二元组信息。
在本申请一种可能的实现方式中,所述采用进制化数组存储结构存储所述二元组信息,包括:
将所述进制化数组初始化,得到与所述进制化数组对应的初始进制槽;
将所述二元组信息转化为十进制数据;
将所述十进制数据放入所述初始进制槽中,得到目标进制槽。
在本申请一种可能的实现方式中,所述判断所述第一匹配路径中最后一个叶子节点对应的目标叶子节点中是否存在与所述第二前缀信息对应的预先设置的三元组结构,包括:
根据所述第一前缀信息,遍历所述第一前缀信息至所述目标叶子节点;
判断所述目标叶子节点中是否存在预先设置的三元组结构。
在本申请一种可能的实现方式中,所述方法还包括:
若存在所述三元组结构,则按照预设顺序进行遍历,以获取所述物理地址,并根据所述物理地址查看存储在所述物理地址中的目标哈希值,所述预设顺序是按照与所述字符串长度值的大小从大致小的顺序;
识别所述目标哈希对应的目标前缀信息,并根据所述目标前缀信息更新所述后续连续查找长度初始值和与所述后续连续查找长度初始值对应的实际字符串,以更新二元组信息,得到目标二元组信息;
将所述目标二元组信息存入所述三元组结构中。
在本申请一种可能的实现方式中,所述方法还包括:
若不存在所述第一匹配路径,则确定所述字典树中与所述第一前缀信息中前预设数量位相同的第二匹配路径;
将所述哈希值插入所述第二匹配路径中最后一个叶子节点中。
在本申请一种可能的实现方式中,所述字典树的叶子节点包括当前叶子节点值、与所述当前叶子节点值对应的当前物理存储地址、以及所述三元组结构另一方面,本申请提供一种索引建立装置,所述装置包括:
第一获取单元,用于获取交易数据对应的哈希值;
第一识别单元,用于识别所述哈希值中前预设数量位的第一前缀信息,所述预设数量少于所述哈希值的总位数;
第一查找单元,用于根据所述第一前缀信息在预先创建的字典树中查找所述字典树中是否存在第一匹配路径,所述字典树中包括根节点和叶子节点,所述第一匹配路径为从根节点出发且经过的叶子节点所组成的前缀信息与所述第一前缀信息相匹配的路径;
第二识别单元,用于若存在所述第一匹配路径,则识别所述哈希值中位于所述第一前缀信息之后第一预设位的第二前缀信息,得到与所述第二前缀信息对应的索引信息;
第一建立单元,用于根据所述索引信息,建立所述交易数据的索引。
在本申请一种可能的实现方式中,所述索引信息为二元组信息,所述索引信息包括与所述第二前缀信息中第二预设位对应的实际字符串和后续连续查找长度初始值;
所述第一建立单元具体包括:
第一判断单元,用于判断所述第一匹配路径中最后一个叶子节点对应的目标叶子节点中是否存在与所述二元组信息对应的预先设置的三元组结构,所述三元组结构包括所述二元组信息和用于存储所述哈希值的物理地址;
第一插入单元,用于若不存在所述三元组结构,则将所述二元组信息插入所述目标叶子节点中对应的目标三元组结构,以建立所述交易数据的索引。
在本申请一种可能的实现方式中,在将所述二元组信息插入所述目标叶子节点中对应的目标三元组结构之后,所述装置还包括:
第二获取单元,用于获取所述哈希值对应的哈希映射内存消耗值和进制化数组内存消耗值;
第一比较单元,用于比较所述哈希映射内存消耗值与所述进制化数组内存消耗值的大小;
第一存储单元,用于若所述哈希映射内存消耗值比所述进制化数组内存消耗值小,则采用哈希映射存储结构存储所述二元组信息;
第二存储单元,用于若所述进制化数组内存消耗值比所述哈希映射内存消耗值小,则采用进制化数组存储结构存储所述二元组信息。
在本申请一种可能的实现方式中,所述第二存储单元具体用于:
将所述进制化数组初始化,得到与所述进制化数组对应的初始进制槽;
将所述二元组信息转化为十进制数据;
将所述十进制数据放入所述初始进制槽中,得到目标进制槽。
在本申请一种可能的实现方式中,所述第一判断单元,具体用于:
根据所述第一前缀信息,遍历所述第一前缀信息至所述目标叶子节点;
判断所述目标叶子节点中是否存在预先设置的三元组结构。
在本申请一种可能的实现方式中,所述装置还用于:
若存在所述三元组结构,则按照预设顺序进行遍历,以获取所述物理地址,并根据所述物理地址查看存储在所述物理地址中的目标哈希值,所述预设顺序是按照与所述字符串长度值的大小从大致小的顺序;
识别所述目标哈希对应的目标前缀信息,并根据所述目标前缀信息更新所述后续连续查找长度初始值和与所述后续连续查找长度初始值对应的实际字符串,以更新二元组信息,得到目标二元组信息;
将所述目标二元组信息存入所述三元组结构中。
在本申请一种可能的实现方式中,所述装置还用于:
若不存在所述第一匹配路径,则确定所述字典树中与所述第一前缀信息中前预设数量位相同的第二匹配路径;
将所述哈希值插入所述第二匹配路径中最后一个叶子节点中。
另一方面,本申请还提供一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储器;以及
一个或多个应用程序,其中所述一个或多个应用程序被存储于所述存储器中,并配置为由所述处理器执行以实现所述的索引建立方法。
另一方面,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器进行加载,以执行所述的索引建立方法中的步骤。
本申请通过获取交易数据对应的哈希值;识别哈希值中前预设数量位的第一前缀信息,预设数量少于哈希值的总位数;根据第一前缀信息在预先创建的字典树中查找字典树中是否存在第一匹配路径,字典树中包括根节点和叶子节点,第一匹配路径为从根节点出发且经过的叶子节点所组成的前缀信息与第一前缀信息相匹配的路径;若存在第一匹配路径,则识别哈希值中位于第一前缀信息之后第一预设位的第二前缀信息,得到与第二前缀信息对应的索引信息;根据索引信息,建立交易数据的索引,由此,由于用于构建索引时的第一前缀对应的前几个字符冲突率低的特点,利用全量哈希的部分数据来构建索引,减少内存消耗。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的索引建立系统的场景示意图;
图2是本申请实施例中提供的索引建立方法的一个实施例流程示意图;
图3为本申请实施例中步骤205的一个实施例流程示意图;
图4是本申请实施例中提供的索引建立方法的另一个实施例流程示意图;
图5是本申请实施例中提供的索引建立方法的另一个实施例流程示意图;
图6是本申请实施例中提供的索引建立方法的另一个实施例流程示意图;
图7是本申请实施例中提供的索引建立装置的一个实施例结构示意图;
图8是本申请实施例提供的计算机设备一个实施例结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本申请中,“示例性”一词用来表示“用作例子、例证或说明”。本申请中被描述为“示例性”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本申请,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本申请。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本申请的描述变得晦涩。因此,本申请并非旨在限于所示的实施例,而是与符合本申请所公开的原理和特征的最广范围相一致。
本申请实施例提供一种索引建立方法、装置及存储介质,以下分别进行详细说明。
如图1所示,图1是本申请实施例提供的索引建立系统的场景示意图,该索引建立系统可以包括多个终端100和服务器200,终端100和服务器200网络连接,服务器200中集成有索引建立装置,如图1中的服务器,终端100可以访问服务器200。
本申请实施例中服务器200主要用于获取交易数据对应的哈希值;识别哈希值中前预设数量位的第一前缀信息,预设数量少于哈希值的总位数;根据第一前缀信息在预先创建的字典树中查找字典树中是否存在第一匹配路径,字典树中包括根节点和叶子节点,第一匹配路径为从根节点出发且经过的叶子节点所组成的前缀信息与第一前缀信息相匹配的路径;若存在第一匹配路径,则识别哈希值中位于第一前缀信息之后第一预设位的第二前缀信息,得到与第二前缀信息对应的索引信息;根据索引信息,建立交易数据的索引。
本申请实施例中,该服务器200可以是独立的服务器,也可以是服务器组成的服务器网络或服务器集群,例如本申请实施例中所描述的服务器200,其包括但不限于计算机、网络终端、单个网络服务器、多个网络服务器集或多个服务器构成的云服务器。其中,云服务器由基于云计算(Cloud Computing)的大量计算机或网络服务器构成。本申请的实施例中,服务器与终端之间可通过任何通信方式实现通信,包括但不限于,基于第三代合作伙伴计划(3rd Generation Partnership Project,3GPP)、长期演进(Long Term Evolution,LTE)、全球互通微波访问(Worldwide Interoperability for Microwave Access,WiMAX)的移动通信,或基于TCP/IP协议族(TCP/IP Protocol Suite,TCP/IP)、用户数据报协议(User Datagram Protocol,UDP)的计算机网络通信等。
可以理解的是,本申请实施例中所使用的终端100可以是既包括接收和发射硬件的设备,既具有能够在双向通信链路上,执行双向通信的接收和发射硬件的设备。这种终端可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备。具体的终端100具体可以是台式终端或移动终端,终端100具体还可以是手机、平板电脑、笔记本电脑等中的一种。
本领域技术人员可以理解,图1中示出的应用环境,仅仅是与本申请方案的一种应用场景,并不构成对本申请方案应用场景的限定,其他的应用环境还可以包括比图1中所示更多或更少的终端,或者服务器网络连接关系,例如图1中仅示出1个服务器和2个终端。可以理解的,该索引建立系统还可以包括一个或多个其他服务器,或/且一个或多个与服务器网络连接的终端,具体此处不作限定。
另外,如图1所示,该索引建立系统还可以包括存储器300,用于存储数据,如存储用户交易数据和索引建立数据,例如索引建立系统运行时的索引建立数据。
需要说明的是,图1所示的索引建立系统的场景示意图仅仅是一个示例,本申请实施例描述的索引建立系统以及场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着索引建立系统的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
接下来,介绍本申请实施例提供的索引建立方法。
本申实施例索引建立方法的实施例中以索引建立装置作为执行主体,为了简化与便于描述,后续方法实施例中将省略该执行主体,该索引建立装置应用于计算机设备,该方法包括:获取交易数据对应的哈希值;识别哈希值中前预设数量位的第一前缀信息,预设数量少于哈希值的总位数;根据第一前缀信息在预先创建的字典树中查找字典树中是否存在第一匹配路径,字典树中包括根节点和叶子节点,第一匹配路径为从根节点出发且经过的叶子节点所组成的前缀信息与第一前缀信息相匹配的路径;若存在第一匹配路径,则识别哈希值中位于第一前缀信息之后第一预设位的第二前缀信息,得到与第二前缀信息对应的索引信息;根据索引信息,建立交易数据的索引。
请参阅图2至图8,图2是本申请实施例中提供的索引建立方法的一个实施例流程示意图,该索引建立方法包括步骤201至步骤205:
201、获取交易数据对应的哈希值。
在步骤201中,哈希值又称散列函数(或散列算法,又称哈希函数,英语:HashFunction)是一种从任何一种数据中创建小的数字"指纹"的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表,例如某个哈希值为:VZFEAGQwJ5Q2Q2XKfbytFzBvx2oWCEBwwo,好的散列函数在输入域中很少出现散列冲突。在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到。需要说明的是,本申请实施例是基于区块链的交易哈希的索引,其中,在区块链网络中,当两个共识节点之间产生交易时,则会在区块链网络中的所有共识节点同步产生交易数据,再将交易数据转化位对应的哈希值。该共识节点可以是终端,也可以是服务器。因此,在产生交易苏数据后,共识节点即可获取交易数据对应的哈希值。
202、识别哈希值中前预设数量位的第一前缀信息,预设数量少于哈希值的总位数。
在步骤202中,第一前缀信息包括预设数量位的字符,该预设数量可以根据实际需求进行调整,例如该预设数量为5或6位,在一个具体例子中,例如一个哈希值为:VZFEAGQwJ5Q2Q2XKfbytFzBvx2oWCEBwwo,其中,可以从左至右选取5至6位字符作为第一前缀信息,这里以选取6位进行举例说明,如第一前缀信息为VZFEAG,当获取哈希值后,可以识别该哈希值,以确定第一前缀信息。
203、根据第一前缀信息在预先创建的字典树中查找字典树中是否存在第一匹配路径。其中,字典树中包括根节点和叶子节点,第一匹配路径为从根节点出发且经过的叶子节点所组成的前缀信息与第一前缀信息相匹配的路径。
在步骤203中,字典树,又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。字典树的典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。字典树的优点在于:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。
具体的,根据第一前缀信息在预先创建的字典树中查找字典树中是否存在第一匹配路径,首先,将第一前缀信息拆分为对应的字符信息,例如字符信息为VZFEA,然后依据该字符信息,遍历该字典树,例如从根节点出发,遍历至第一个字符V,然后在寻找字符V下方对应的字符Z,以此类推至F至E再至A即可。
204、若存在第一匹配路径,则识别哈希值中位于第一前缀信息之后第一预设位的第二前缀信息,得到与第二前缀信息对应的索引信息。
在步骤204中,当存在第一匹配路径,则说明字典树中已经存在与第一前缀信息相冲突的其他前缀信息,由此确定存在冲突,当产生冲突后,则开始进行冲突处理。具体的,再识别哈希值中位于第一前缀信息之后第一预设位的第二前缀信息,需要说明的是,选取所述哈希值的前缀值对应的顺序可以为从左至右方向、也可以是从右至左,此处以从左至右方向进行举例说明,所述第二前缀信息位于所述第一前缀信息的右侧。
索引信息可以包括与第二前缀信息中第二预设位对应的实际字符串和后续连续查找长度初始值,第二预设位对应的实际字符串可以包括至少一位对应的实际字符串,例如可以是一位、两位或者两位以上,如一个哈希值为:VZFEAGQwJ5Q2Q2XKfbytFzBvx2oWCEBwwo,其第一前缀值为VZFEAG,那么第二前缀信息对应的第二前缀值可以为位于第一前缀值为VZFEAG之后的G或者DQ等
205、根据索引信息,建立交易数据的索引。
在步骤205中,具体如何根据索引信息,建立交易数据的索引,在下方进行了详细的阐述,在此不做赘述。
本申请通过获取交易数据对应的哈希值;识别哈希值中前预设数量位的第一前缀信息,预设数量少于哈希值的总位数;根据第一前缀信息在预先创建的字典树中查找字典树中是否存在第一匹配路径,字典树中包括根节点和叶子节点,第一匹配路径为从根节点出发且经过的叶子节点所组成的前缀信息与第一前缀信息相匹配的路径;若存在第一匹配路径,则识别哈希值中位于第一前缀信息之后第一预设位的第二前缀信息,得到与第二前缀信息对应的索引信息;根据索引信息,建立交易数据的索引,由此,由于用于构建索引时的第一前缀对应的前几个字符冲突率低的特点,利用全量哈希的部分数据来构建索引,减少内存消耗。
在本申请的一些实施例中,如图3所示,图3为本申请实施例中步骤205的一个实施例流程示意图,其中,索引信息为二元组信息,索引信息包括与第二前缀信息中第二预设位对应的实际字符串和后续连续查找长度初始值。所述根据索引信息,建立交易数据的索引,具体包括步骤301和步骤302:
301、判断第一匹配路径中最后一个叶子节点对应的目标叶子节点中是否存在与二元组信息对应的预先设置的三元组结构,三元组结构包括二元组信息和用于存储哈希值的物理地址。
在步骤301中,该三元组结构包括二元组信息和用于存储哈希值的物理地址,需要说明的是,该三元组结构可以看做[后续连续查找长度值,实际字符串,物理地址]一个三元组的存储,忽略物理地址,因为物理地址是要实际存储的。主要是通过[后续连续查找长度值,实际后续字符串]来看存在性。该二元组信息可以包括与第二前缀信息中第二预设位对应的实际字符串后续连续查找长度初始值,例如,一个哈希值为:VZFEAGQwJ5Q2Q2XKfbytFzBvx2oWCEBwwo,其第一前缀值为该哈希值的前五位字符VZFEAG,那么当后续查找长度初始值为2时,对应的第二前缀信息中第二预设位对应的实际字符串为w,则该二元组信息为[2,w]。具体的,可以查看第一匹配路径中最后一个叶子节点对应的目标叶子节点中是否存在与二元组信息对应的预先设置的三元组结构,例如目标叶子节点中只存在当前叶子节点值、与当前叶子节点值对应的物理存储地址,那么说明目标叶子节点中并不存在于二元组对应的预先设置的三元组结构。
需要说明的是,如果遍历完所有的后续字符串叶子节点都存在类似[k ch]的结构,其中k指的是起始字符串位置和ch指的是对比的字符串,则用两个字符进行保存。比如上一个哈希冲突,到最后一个字母’o’都依旧还是冲突,则查看[1‘Zw’]来保存,处理冲突方式和一个字符冲突一致。插入完成后,在三元组结构中指向磁盘物理位置用于存储读取。
在本申请的一些实施例中,判断第一匹配路径中最后一个叶子节点对应的目标叶子节点中是否存在与第二前缀信息对应的预先设置的三元组结构,包括一下两个步骤:
(一)根据第一前缀信息,遍历第一前缀信息至目标叶子节点。
(二)判断目标叶子节点中是否存在预先设置的三元组结构。
302、若不存在三元组结构,则将二元组信息插入目标叶子节点中对应的目标三元组结构,以建立交易数据的索引。
在步骤302中,当确定第一匹配路径中最后一个叶子节点对应的目标叶子节点中是不存在与二元组信息对应的预先设置的三元组结构,那么可以将该二元组信息插入目标叶子节点中对应的目标三元组结构。
在本申请的一些实施例中,字典树的叶子节点包括当前叶子节点值、与当前叶子节点值对应的当前物理存储地址、以及三元组结构。
在本申请的一些实施例中,如图4所示,图4是本申请实施例中提供的索引建立方法的另一个实施例流程示意图,在将二元组信息插入目标叶子节点中对应的目标三元组结构之后,所述方法还可以包括:
401、获取哈希值对应的哈希映射内存消耗值和进制化数组内存消耗值。
402、比较哈希映射内存消耗值与进制化数组内存消耗值的大小。
403、若哈希映射内存消耗值比进制化数组内存消耗值小,则采用哈希映射存储结构存储二元组信息。
404、若进制化数组内存消耗值比哈希映射内存消耗值小,则采用进制化数组存储结构存储二元组信息。
在上述步骤中,具体的,在存储的时候,可以通过计算内存的消耗来决定用什么结构计算三元组结构的存储。在刚开始的时候,数据结构可以用哈希映射(HashMap)的键值对<Int,String>来存储。内存消耗可以看作A=Σ(4Byte+字符串长度*1Byte)。再计算进制化数组的内存消耗,这里的内存消耗为B=数组单元内存消耗*(66^(最大后续连续查找长度)*向上取整(log2(最大后续连续查找长度)))bits。在A<B的时候可以用HashMap的存储,否则用进制化数组进行存储。进制化数组:可以定义数组的哈希值为H=s的66进制值*向上取整(log2(最大后续连续查找长度))+a,比如在最长连续查找长度为3(log223的向上取整为2)此时的时候[2,‘ac’]可以计算为H=(1*66^1+3*66^0)*2+2。此计算方法主要是为了避免冲突,同时引入数组主要是为了降低内存消耗。在最大连续查找长度的增大的时候,我们需要创建一个新的进制化数组,把旧的数据映射到新数组上,因为H的计算是一个可逆计算(即可以通过看数组里面那个槽为true逆转出原来形式),这里只有最大后续连续查找长度的变化。在增长的时候依旧要考虑A和B的大小变化进行存储结构的变化转换。
在步骤404中,采用进制化数组存储结构存储二元组信息,具体可以包括:将进制化数组初始化,得到与进制化数组对应的初始进制槽。将二元组信息转化为十进制数据。将十进制数据放入初始进制槽中,得到目标进制槽。可以理解的是,进制化数组就是对应c语言里面的证书数组;数组初始化为0。例如,如果此时插入ABCYYYYYY,ABC前缀冲突,则看Y,把(1,Y)转为10进制,放入进制化槽中,并在槽中放入物理地址,全量哈希则存储到对应物理地址中。如果ABCY还有冲突,即进制化数组Y槽不为0,那么则看下一位YY,那么把(2,YY)放入进制化数组中。
在本申请的一些实施例中,如图5所示,图5是本申请实施例中提供的索引建立方法的另一个实施例流程示意图,所述方法具体包括步骤501、步骤502以及步骤503:
501、若存在三元组结构,则按照预设顺序进行遍历,以获取物理地址,并根据物理地址查看存储在物理地址中的目标哈希值。
502、识别目标哈希对应的目标前缀信息,并根据目标前缀信息更新后续连续查找长度初始值和后续连续查找长度初始值对应的实际字符串,以更新二元组信息,得到目标二元组信息。
503、将目标二元组信息存入三元组结构中。
在步骤501中,该预设顺序是按照与字符串长度值的大小从大致小的顺序。
在本申请的一些实施例中,如图6所示,图6是本申请实施例中提供的索引建立方法的另一个实施例流程示意图,所述方法具体包括步骤601和步骤602:
601、若不存在第一匹配路径,则确定字典树中与第一前缀信息中前预设数量位相同的第二匹配路径。
602、将哈希值插入第二匹配路径中最后一个叶子节点中。
为了更好实施本申请实施例中索引建立方法,在索引建立方法基础之上,本申请实施例中还提供一种索引建立装置,如图7所示,图7是,所述装置700具体包括第一获取单元701、第一识别单元702、第一查找单元703、第二识别单元704以及第一建立单元705:
第一获取单元701,用于获取交易数据对应的哈希值.
第一识别单元702,用于识别所述哈希值中前预设数量位的第一前缀信息,所述预设数量少于所述哈希值的总位数。
第一查找单元703,用于根据所述第一前缀信息在预先创建的字典树中查找所述字典树中是否存在第一匹配路径,所述字典树中包括根节点和叶子节点,所述第一匹配路径为从根节点出发且经过的叶子节点所组成的前缀信息与所述第一前缀信息相匹配的路径。
第二识别单元704,用于若存在所述第一匹配路径,则识别所述哈希值中位于所述第一前缀信息之后第一预设位的第二前缀信息,得到与所述第二前缀信息对应的索引信息。
第一建立单元705,用于根据所述索引信息,建立所述交易数据的索引。
本申请通过获取交易数据对应的哈希值识别哈希值中前预设数量位的第一前缀信息,预设数量少于哈希值的总位数根据第一前缀信息在预先创建的字典树中查找字典树中是否存在第一匹配路径,字典树中包括根节点和叶子节点,第一匹配路径为从根节点出发且经过的叶子节点所组成的前缀信息与第一前缀信息相匹配的路径若存在第一匹配路径,则识别哈希值中位于第一前缀信息之后第一预设位的第二前缀信息,得到与第二前缀信息对应的索引信息根据索引信息,建立交易数据的索引,由此,由于用于构建索引时的第一前缀对应的前几个字符冲突率低的特点,利用全量哈希的部分数据来构建索引,减少内存消耗。
在本申请一种可能的实现方式中,所述索引信息为二元组信息,所述索引信息包括与所述第二前缀信息中第二预设位对应的实际字符串和后续连续查找长度初始值。
所述第一建立单元705具体包括:
第一判断单元,用于判断所述第一匹配路径中最后一个叶子节点对应的目标叶子节点中是否存在与所述二元组信息对应的预先设置的三元组结构,所述三元组结构包括所述二元组信息和用于存储所述哈希值的物理地址。
第一插入单元,用于若不存在所述三元组结构,则将所述二元组信息插入所述目标叶子节点中对应的目标三元组结构,以建立所述交易数据的索引。
在本申请一种可能的实现方式中,在将所述二元组信息插入所述目标叶子节点中对应的目标三元组结构之后,所述装置还包括:
第二获取单元,用于获取所述哈希值对应的哈希映射内存消耗值和进制化数组内存消耗值。
第一比较单元,用于比较所述哈希映射内存消耗值与所述进制化数组内存消耗值的大小。
第一存储单元,用于若所述哈希映射内存消耗值比所述进制化数组内存消耗值小,则采用哈希映射存储结构存储所述二元组信息。
第二存储单元,用于若所述进制化数组内存消耗值比所述哈希映射内存消耗值小,则采用进制化数组存储结构存储所述二元组信息。
在本申请一种可能的实现方式中,所述第二存储单元具体用于:
将所述进制化数组初始化,得到与所述进制化数组对应的初始进制槽。
将所述二元组信息转化为十进制数据。
将所述十进制数据放入所述初始进制槽中,得到目标进制槽。
在本申请一种可能的实现方式中,所述第一判断单元,具体用于:
根据所述第一前缀信息,遍历所述第一前缀信息至所述目标叶子节点
判断所述目标叶子节点中是否存在预先设置的三元组结构。
在本申请一种可能的实现方式中,所述装置还用于:
若存在所述三元组结构,则按照预设顺序进行遍历,以获取所述物理地址,并根据所述物理地址查看存储在所述物理地址中的目标哈希值,所述预设顺序是按照与所述字符串长度值的大小从大致小的顺序。
识别所述目标哈希对应的目标前缀信息,并根据所述目标前缀信息更新所述后续连续查找长度初始值和与所述后续连续查找长度初始值对应的实际字符串,以更新二元组信息,得到目标二元组信息。
将所述目标二元组信息存入所述三元组结构中。
在本申请一种可能的实现方式中,所述装置还用于:
若不存在所述第一匹配路径,则确定所述字典树中与所述第一前缀信息中前预设数量位相同的第二匹配路径。
将所述哈希值插入所述第二匹配路径中最后一个叶子节点中。
除了上述介绍用于索引建立方法与装置之外,本申请实施例还提供一种计算机设备,其集成了本申请实施例所提供的任一种索引建立装置,所述计算机设备包括:
一个或多个处理器;
存储器;以及
一个或多个应用程序,其中所述一个或多个应用程序被存储于所述存储器中,并配置为由所述处理器执行上述索引建立方法实施例中任一实施例中所述的任一方法的操作。
本申请实施例还提供一种计算机设备,其集成了本申请实施例所提供的任一种索引建立装置。参阅图8,图8是本申请实施例提供的计算机设备一个实施例结构示意图。
如图8所示,其示出了本申请实施例所设计的索引建立装置的结构示意图,具体来讲:
该索引建立装置可以包括一个或者一个以上处理核心的处理器801、一个或一个以上计算机可读存储介质的存储器802、电源803和输出单元804等部件。本领域技术人员可以理解,图8中示出的索引建立装置结构并不构成对索引建立装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器是该索引建立装置的控制中心,利用各种接口和线路连接整个索引建立装置的各个部分,通过运行或执行存储在存储器802内的软件程序和/或模块,以及调用存储在存储器802的数据,执行索引建立装置的各种功能和处理数据,从而对索引建立装置进行整体监控。可选的,处理器801可包括一个或多个处理核心;优选的,处理器801可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器801中。
存储器802可用于存储软件程序以及模块,处理器801通过运行存储在存储器802的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器802可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据索引建立装置的使用所创建的数据等。此外,存储器802可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器802还可以包括存储器控制器,以提供处理器801对存储器802的访问。
索引建立装置还包括给各个部件供电的电源803,优选的,电源803可以通过电源管理系统与处理器801逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源803还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该索引建立装置还可包括输入单元804,该输入单元804可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,索引建立装置还可以包括显示单元等,在此不再赘述。具体在本申请实施例中,索引建立装置中的处理器801会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器802中,并由处理器802来运行存储在存储器802中的应用程序,从而实现各种功能,如下:
获取交易数据对应的哈希值;识别哈希值中前预设数量位的第一前缀信息,预设数量少于哈希值的总位数;根据第一前缀信息在预先创建的字典树中查找字典树中是否存在第一匹配路径,字典树中包括根节点和叶子节点,第一匹配路径为从根节点出发且经过的叶子节点所组成的前缀信息与第一前缀信息相匹配的路径;若存在第一匹配路径,则识别哈希值中位于第一前缀信息之后第一预设位的第二前缀信息,得到与第二前缀信息对应的索引信息;根据索引信息,建立交易数据的索引。
本申请通过获取交易数据对应的哈希值;识别哈希值中前预设数量位的第一前缀信息,预设数量少于哈希值的总位数;根据第一前缀信息在预先创建的字典树中查找字典树中是否存在第一匹配路径,字典树中包括根节点和叶子节点,第一匹配路径为从根节点出发且经过的叶子节点所组成的前缀信息与第一前缀信息相匹配的路径;若存在第一匹配路径,则识别哈希值中位于第一前缀信息之后第一预设位的第二前缀信息,得到与第二前缀信息对应的索引信息;根据索引信息,建立交易数据的索引,由此,由于用于构建索引时的第一前缀对应的前几个字符冲突率低的特点,利用全量哈希的部分数据来构建索引,减少内存消耗。
为此,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random AccessMemory)、磁盘或光盘等。该计算机可读存储介质中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种索引建立方法中的步骤。例如,该指令可以执行如下步骤:
获取交易数据对应的哈希值;识别哈希值中前预设数量位的第一前缀信息,预设数量少于哈希值的总位数;根据第一前缀信息在预先创建的字典树中查找字典树中是否存在第一匹配路径,字典树中包括根节点和叶子节点,第一匹配路径为从根节点出发且经过的叶子节点所组成的前缀信息与第一前缀信息相匹配的路径;若存在第一匹配路径,则识别哈希值中位于第一前缀信息之后第一预设位的第二前缀信息,得到与第二前缀信息对应的索引信息;根据索引信息,建立交易数据的索引。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
以上对本申请实施例所提供的一种索引建立方法、装置及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (8)
1.一种索引建立方法,其特征在于,所述方法包括:
获取交易数据对应的哈希值;
识别所述哈希值中前预设数量位的第一前缀信息,所述预设数量少于所述哈希值的总位数;
根据所述第一前缀信息在预先创建的字典树中查找所述字典树中是否存在第一匹配路径,所述字典树中包括根节点和叶子节点,所述第一匹配路径为从根节点出发且经过的叶子节点所组成的前缀信息与所述第一前缀信息相匹配的路径;
若存在所述第一匹配路径,则识别所述哈希值中位于所述第一前缀信息之后第一预设位的第二前缀信息,得到与所述第二前缀信息对应的索引信息,其中,所述索引信息为二元组信息,所述索引信息包括与所述第二前缀信息中第二预设位对应的实际字符串和后续连续查找长度初始值;
根据所述索引信息,建立所述交易数据的索引;
其中,所述根据所述索引信息,建立所述交易数据的索引,包括:
判断所述第一匹配路径中最后一个叶子节点对应的目标叶子节点中是否存在与所述二元组信息对应的预先设置的三元组结构,所述三元组结构包括所述二元组信息和用于存储所述哈希值的物理地址;
若不存在所述三元组结构,则将所述二元组信息插入所述目标叶子节点中对应的目标三元组结构,以建立所述交易数据的索引;
其中,在将所述二元组信息插入所述目标叶子节点中对应的目标三元组结构之后,所述方法还包括:
获取所述哈希值对应的哈希映射内存消耗值和进制化数组内存消耗值;
比较所述哈希映射内存消耗值与所述进制化数组内存消耗值的大小;
若所述哈希映射内存消耗值比所述进制化数组内存消耗值小,则采用哈希映射存储结构存储所述二元组信息;
若所述进制化数组内存消耗值比所述哈希映射内存消耗值小,则采用进制化数组存储结构存储所述二元组信息。
2.根据权利要求1所述的索引建立方法,其特征在于,所述采用进制化数组存储结构存储所述二元组信息,包括:
将所述进制化数组初始化,得到与所述进制化数组对应的初始进制槽;
将所述二元组信息转化为十进制数据;
将所述十进制数据放入所述初始进制槽中,得到目标进制槽。
3.根据权利要求1所述的索引建立方法,其特征在于,所述判断所述第一匹配路径中最后一个叶子节点对应的目标叶子节点中是否存在与所述第二前缀信息对应的预先设置的三元组结构,包括:
根据所述第一前缀信息,遍历所述第一前缀信息至所述目标叶子节点;
判断所述目标叶子节点中是否存在预先设置的三元组结构。
4.根据权利要求1所述的索引建立方法,其特征在于,所述方法还包括:
若存在所述三元组结构,则按照预设顺序进行遍历,以获取所述物理地址,并根据所述物理地址查看存储在所述物理地址中的目标哈希值,所述预设顺序是按照与所述字符串长度值的大小从大致小的顺序;
识别所述目标哈希对应的目标前缀信息,并根据所述目标前缀信息更新所述后续连续查找长度初始值和与所述后续连续查找长度初始值对应的实际字符串,以更新二元组信息,得到目标二元组信息;
将所述目标二元组信息存入所述三元组结构中。
5.根据权利要求1所述的索引建立方法,其特征在于,所述方法还包括:
若不存在所述第一匹配路径,则确定所述字典树中与所述第一前缀信息中前预设数量位相同的第二匹配路径;
将所述哈希值插入所述第二匹配路径中最后一个叶子节点中。
6.一种针对交易哈希的索引建立装置,其特征在于,所述装置包括:
第一获取单元,用于获取交易数据对应的哈希值;
第一识别单元,用于识别所述哈希值中前预设数量位的第一前缀信息,所述预设数量少于所述哈希值的总位数;
第一查找单元,用于根据所述第一前缀信息在预先创建的字典树中查找所述字典树中是否存在第一匹配路径,所述字典树中包括根节点和叶子节点,所述第一匹配路径为从根节点出发且经过的叶子节点所组成的前缀信息与所述第一前缀信息相匹配的路径;
第二识别单元,用于若存在所述第一匹配路径,则识别所述哈希值中位于所述第一前缀信息之后第一预设位的第二前缀信息,得到与所述第二前缀信息对应的索引信息,其中,所述索引信息为二元组信息,所述索引信息包括与所述第二前缀信息中第二预设位对应的实际字符串和后续连续查找长度初始值;
第一建立单元,用于根据所述索引信息,建立所述交易数据的索引;
其中,所述根据所述索引信息,建立所述交易数据的索引,包括:
判断所述第一匹配路径中最后一个叶子节点对应的目标叶子节点中是否存在与所述二元组信息对应的预先设置的三元组结构,所述三元组结构包括所述二元组信息和用于存储所述哈希值的物理地址;
若不存在所述三元组结构,则将所述二元组信息插入所述目标叶子节点中对应的目标三元组结构,以建立所述交易数据的索引;
其中,在将所述二元组信息插入所述目标叶子节点中对应的目标三元组结构之后,所述装置还用于:
获取所述哈希值对应的哈希映射内存消耗值和进制化数组内存消耗值;
比较所述哈希映射内存消耗值与所述进制化数组内存消耗值的大小;
若所述哈希映射内存消耗值比所述进制化数组内存消耗值小,则采用哈希映射存储结构存储所述二元组信息;
若所述进制化数组内存消耗值比所述哈希映射内存消耗值小,则采用进制化数组存储结构存储所述二元组信息。
7.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
存储器;以及
一个或多个应用程序,其中所述一个或多个应用程序被存储于所述存储器中,并配置为由所述处理器执行以实现权利要求1至5中任一项所述的索引建立方法。
8.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器进行加载,以执行权利要求1至5任一项所述的索引建立方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011619917.1A CN112667636B (zh) | 2020-12-30 | 2020-12-30 | 索引建立方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011619917.1A CN112667636B (zh) | 2020-12-30 | 2020-12-30 | 索引建立方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112667636A CN112667636A (zh) | 2021-04-16 |
CN112667636B true CN112667636B (zh) | 2023-03-24 |
Family
ID=75412102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011619917.1A Active CN112667636B (zh) | 2020-12-30 | 2020-12-30 | 索引建立方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112667636B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4175233B1 (en) * | 2021-06-25 | 2024-05-08 | New H3C Technologies Co., Ltd. | Packet matching method and apparatus, network device, and medium |
CN114385628A (zh) * | 2021-12-15 | 2022-04-22 | 杭州趣链科技有限公司 | 数据处理方法和装置、电子设备、存储介质 |
CN115567444B (zh) * | 2022-09-23 | 2024-02-27 | 北京香哈网络股份有限公司 | 一种控制器路由地址查找调用方法及系统 |
CN117194440B (zh) * | 2023-11-08 | 2024-02-13 | 本原数据(北京)信息技术有限公司 | 数据库索引压缩方法、装置、电子设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10230639B1 (en) * | 2017-08-08 | 2019-03-12 | Innovium, Inc. | Enhanced prefix matching |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9172743B2 (en) * | 2012-12-31 | 2015-10-27 | Futurewei Technologies, Inc. | Scalable storage systems with longest prefix matching switches |
CN107967219B (zh) * | 2017-11-27 | 2021-08-06 | 北京理工大学 | 一种基于tcam的大规模字符串高速查找方法 |
CN110083601B (zh) * | 2019-04-04 | 2021-11-30 | 中国科学院计算技术研究所 | 面向键值存储系统的索引树构建方法及系统 |
CN111966654A (zh) * | 2020-08-18 | 2020-11-20 | 浪潮云信息技术股份公司 | 一种基于Trie字典树的混合过滤器 |
-
2020
- 2020-12-30 CN CN202011619917.1A patent/CN112667636B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10230639B1 (en) * | 2017-08-08 | 2019-03-12 | Innovium, Inc. | Enhanced prefix matching |
Also Published As
Publication number | Publication date |
---|---|
CN112667636A (zh) | 2021-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112667636B (zh) | 索引建立方法、装置及存储介质 | |
US11379422B2 (en) | Text deduplication method and apparatus, and storage medium | |
US9817858B2 (en) | Generating hash values | |
CN108769111A (zh) | 一种服务器连接方法、计算机可读存储介质及终端设备 | |
WO2022143540A1 (zh) | 区块链索引的存储方法、装置、计算机设备及介质 | |
CN107704202B (zh) | 一种数据快速读写的方法和装置 | |
CN111831785B (zh) | 敏感词检测方法、装置、计算机设备及存储介质 | |
CN113408660B (zh) | 图书聚类方法、装置、设备和存储介质 | |
CN112307062B (zh) | 数据库聚合查询方法、装置及系统 | |
CN109815240A (zh) | 用于管理索引的方法、装置、设备和存储介质 | |
CN110020272B (zh) | 缓存方法、装置以及计算机存储介质 | |
CN114817651A (zh) | 数据存储方法、数据查询方法、装置和设备 | |
US20230231808A1 (en) | Data flow table, method and device for processing data flow table, and storage medium | |
CN113220710A (zh) | 数据查询方法、装置、电子设备以及存储介质 | |
CN111414527A (zh) | 相似项目的查询方法、装置及存储介质 | |
CN110727666A (zh) | 面向工业互联网平台的缓存组件、方法、设备及存储介质 | |
CN114048206B (zh) | 一种大规模集群的配置一致性校验方法、系统及装置 | |
CN115408547A (zh) | 一种字典树构建方法、装置、设备及存储介质 | |
CN115525659A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN114048219A (zh) | 图数据库更新方法及装置 | |
CN107562553B (zh) | 数据中心管理方法和设备 | |
CN117610059B (zh) | 一种权限数据的存储方法、装置、设备及存储介质 | |
CN110866002A (zh) | 分表数据处理的方法和装置 | |
CN113609130B (zh) | 获取网关接入数据的方法、装置、电子设备及存储介质 | |
CN112989247B (zh) | 一种页面更新方法、装置和计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |