CN104283567B - 一种名称数据的压缩、解压缩方法及设备 - Google Patents
一种名称数据的压缩、解压缩方法及设备 Download PDFInfo
- Publication number
- CN104283567B CN104283567B CN201310273457.5A CN201310273457A CN104283567B CN 104283567 B CN104283567 B CN 104283567B CN 201310273457 A CN201310273457 A CN 201310273457A CN 104283567 B CN104283567 B CN 104283567B
- Authority
- CN
- China
- Prior art keywords
- character string
- name data
- compressed encoding
- strings
- state
- 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
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供了一种名称数据的压缩、解压缩方法及设备。其中所述方法包括:针对包含有多个名称数据的预设名称数据库,生成覆盖所述名称数据库中所有名称数据的压缩字符串集合,所述压缩字符串集合中的字符串是基于各个名称数据的全部或部分字符生成的;根据所述压缩字符串集合中字符串的频率,创建所述压缩字符串集合对应的哈夫曼二叉树,并生成一包括有所述压缩字符串集合中所有字符串的压缩编码的压缩编码表;在对一名称数据进行压缩编码时,根据该名称数据所包含的字符串,从压缩编码表中获得各个字符串对应的压缩编码,组合得到该名称数据的压缩编码。本发明能够提高名称数据的压缩/解压缩效率。
Description
技术领域
本发明涉及数据压缩和解压缩技术领域,具体涉及一种名称数据的压缩、解压缩方法及设备。
背景技术
市场上存在着众多的车载导航产品,导航数据也呈几何级增长之势。为了让导航设备的存储容量能够跟上数据增长的步伐,对数据进行压缩及解压缩处理成为了不可避免的一项策略。针对不同的数据类型,分别开发出不同的高效率压缩算法,比如形状数据有形状数据的压缩算法,二进制流数据有二进制流的压缩算法。在导航领域的最终产品数据中,一种占用相当大比例的数据类型为兴趣点(POI,Point of Interest)的名称以及标注文字注释信息的名称数据。
名称数据的存储有以下几个特点:1)由于各条名称要求能随机读取,因此各条名称需要分开存储,通常不能把这些名称作为一个整体文本压缩存储;2)名称数据的长度一般都不长,通常最长的在256个字节以内,平均在30字节左右;3)大部分名称数据都有一些固定格式或规则;4)每条名称数据都有语种属性。
目前的压缩基础算法有很多,比如哈夫曼编码、字典编码、算数编码等等,但针对不同的应用场景,如何高效地发挥这些压缩算法的优势,则留给这些算法的实现很大的自由空间。
现有技术的压缩方法有1)应用公开库zlib对文本进行压缩;2)用一种类似字典编码的压缩方法进行压缩;3)字符串顺序压缩;4)对单个字母或汉字的哈夫曼编码。包括以上方法在内的现有技术的压缩方案,在应用于名称数据时,由于缺少针对像名称数据这种较短的文本的高效压缩机制,通常并不能获得较高的压缩率,并且有些方案不能满足随机读取的要求,有些方案则在车载设备上将占用较大的内存,这会对产品的整体性能造成影响。
发明内容
有鉴于此,本发明实施例的目的是提供一种具有高压缩率的名称数据的压缩方法及设备。
为解决上述技术问题,本发明提供方案如下:
本发明实施例提供了一种名称数据的压缩方法,应用于服务器侧,包括:
针对包含有多个名称数据的预设名称数据库,生成覆盖所述名称数据库中所有名称数据的压缩字符串集合,所述压缩字符串集合中的字符串是基于各个名称数据的全部或部分字符生成的;
根据所述压缩字符串集合中字符串的频率,创建所述压缩字符串集合对应的哈夫曼二叉树,并生成一包括有所述压缩字符串集合中所有字符串的压缩编码的压缩编码表;
在对一名称数据进行压缩编码时,根据该名称数据所包含的字符串,从压缩编码表中获得各个字符串对应的压缩编码,组合得到该名称数据的压缩编码。
进一步地,上述方案中,在生成所述压缩编码表时,进一步根据所获得的哈夫曼二叉树,生成一对应的状态转移表并发送给终端设备,该二叉树中的每个节点对应于一个状态,从根节点转移到叶子节点的连接上的编码,与该叶子节点的字符串相对应。
进一步地,上述方案中,所述生成覆盖所述名称数据库中所有名称数据的压缩字符串集合,包括:
步骤A,统计出现在名称数据中的所有字符串的出现频率;
步骤B,按照预定算法,计算每个字符串的价值,其中,所述预定算法使得计算得到的该字符串的价值,与该字符串的实际长度和出现频率正相关,与该字符串的编码后的预期长度负相关;
步骤C,从剩余字符串中选取价值最高的预设数量的字符串,未被选择的字符串构成当前的剩余字符串,所述剩余字符串的初始值为名称数据中出现的所有字符串;
步骤D,针对选择出的字符串,计算每一对组合之间共存概率,若共存概率低于预设门限,则将该对组合中价值较小的字符串删除;
步骤E,确定步骤D中的字符串的删除数量;
步骤F,判断选择次数是否大于预设次数门限,若大于,则进入步骤H,否则进入步骤E;
步骤G,从当前剩余字符串中选取所述删除数量的价值最高的字符串,返回步骤D;
步骤H,将选择出的、且未被删除的字符串,作为压缩字符串集合。
进一步地,上述方案中,在对名称数据进行压缩编码时,若组合得到该名称数据的压缩编码不是字节的整数倍,则:
在压缩字符串集合存在有压缩编码长度大于8比特的字符串时,从该字符串的压缩编码的最高比特位开始,截取一定长度的编码,将该名称数据的压缩编码补足为字节的整数倍;
在压缩字符串集合不存在压缩编码长度大于8比特的字符串时,通过增加哑元字符串,利用哑元字符串的编码,将该名称数据的压缩编码补足为字节的整数倍。
本发明实施例还提供了一种名称数据的解压缩方法,应用于终端设备上,包括:
获得压缩字符串集合对应的哈夫曼二叉树转换得到的状态转移表,所述压缩字符串集合覆盖预设名称数据库中的所有名称数据,且是基于名称数据的全部或部分字符生成的;
获得名称数据的压缩编码;
利用所述状态转移表,对所述名称数据的压缩编码进行解码,得到压缩前的名称数据。
进一步地,上述方案中,所述状态转移表包括多个单元,每个单元对应于一个状态下的一种输入,且每个单元中存储有转移后的转移状态和输出的字符串内容;
所述对所述名称数据的压缩编码进行解码,包括:
根据所述状态转移表,确定在输入所述名称数据的压缩编码后的转移状态及输出的字符串内容,得到输入的压缩编码对应的字符串内容。
进一步地,上述方案中,所述状态转移表包括多个单元,每个单元对应于一个状态下的一种输入,且每个单元中存储有转移后的转移状态和用于指示字符串内容存放地址的字符串指针;
所述对所述名称数据的压缩编码进行解码,包括:
根据所述状态转移表,确定在输入所述名称数据的压缩编码后的转移状态及字符串指针,根据字符串指针在对应的地址处读取到输入的压缩编码对应的字符串内容。
本发明实施例还提供了一种服务器,包括:
集合生成单元,用于针对包含有多个名称数据的预设名称数据库,生成覆盖所述名称数据库中所有名称数据的压缩字符串集合,所述压缩字符串集合中的字符串是基于各个名称数据的全部或部分字符生成的;
编码表生成单元,用于根据所述压缩字符串集合中字符串的频率,创建所述压缩字符串集合对应的哈夫曼二叉树,并生成一包括有所述压缩字符串集合中所有字符串的压缩编码的压缩编码表;
压缩单元,用于在对一名称数据进行压缩编码时,根据该名称数据所包含的字符串,从压缩编码表中获得各个字符串对应的压缩编码,组合得到该名称数据的压缩编码。
进一步地,上述方案中,所述编码表生成单元,进一步用于在生成所述压缩编码表时,根据所获得的哈夫曼二叉树,生成一对应的状态转移表并发送给终端设备,该二叉树中的每个节点对应于一个状态,从根节点转移到叶子节点的连接上的编码,与该叶子节点的字符串相对应。
进一步地,上述方案中,所述集合生成单元,具体用于执行以下步骤以生成压缩字符串集合:
步骤A,统计出现在名称数据中的所有字符串的出现频率;
步骤B,按照预定算法,计算每个字符串的价值,其中,所述预定算法使得计算得到的该字符串的价值,与该字符串的实际长度和出现频率正相关,与该字符串的编码后的预期长度负相关;
步骤C,从剩余字符串中选取价值最高的预设数量的字符串,未被选择的字符串构成当前的剩余字符串,所述剩余字符串的初始值为名称数据中出现的所有字符串;
步骤D,针对选择出的字符串,计算每一对组合之间共存概率,若共存概率低于预设门限,则将该对组合中价值较小的字符串删除;
步骤E,确定步骤D中的字符串的删除数量;
步骤F,判断选择次数是否大于预设次数门限,若大于,则进入步骤H,否则进入步骤E;
步骤G,从当前剩余字符串中选取所述删除数量的价值最高的字符串,返回步骤D;
步骤H,将选择出的、且未被删除的字符串,作为压缩字符串集合。
进一步地,上述方案中,所述压缩单元,进一步用于在对名称数据进行压缩编码时,若组合得到该名称数据的压缩编码不是字节的整数倍,则:
在压缩字符串集合存在有压缩编码长度大于8比特的字符串时,从该字符串的压缩编码的最高比特位开始,截取一定长度的编码,将该名称数据的压缩编码补足为字节的整数倍;
在压缩字符串集合不存在压缩编码长度大于8比特的字符串时,通过增加哑元字符串,利用哑元字符串的编码,将该名称数据的压缩编码补足为字节的整数倍。
本发明实施例还提供了一种终端设备,包括:
第一获得单元,用于获得压缩字符串集合对应的哈夫曼二叉树转换得到的状态转移表,所述压缩字符串集合覆盖预设名称数据库中的所有名称数据,且是基于名称数据的全部或部分字符生成的;
第二获得单元,用于获得名称数据的压缩编码;
解码单元,用于利用所述状态转移表,对所述名称数据的压缩编码进行解码,得到压缩前的名称数据。
进一步地,上述方案中,所述状态转移表包括多个单元,每个单元对应于一个状态下的一种输入,且每个单元中存储有转移后的转移状态和输出的字符串内容;
所述解码单元,进一步用于根据所述状态转移表,确定在输入所述名称数据的压缩编码后的转移状态及输出的字符串内容,得到输入的压缩编码对应的字符串内容。
进一步地,上述方案中,所述状态转移表包括多个单元,每个单元对应于一个状态下的一种输入,且每个单元中存储有转移后的转移状态和用于指示字符串内容存放地址的字符串指针;
所述解码单元,进一步用于根据所述状态转移表,确定在输入所述名称数据的压缩编码后的转移状态及字符串指针,根据字符串指针在对应的地址处读取到输入的压缩编码对应的字符串内容。
从以上所述可以看出,本发明提供的名称数据的压缩/解压缩方法及设备,能够提高名称数据的压缩率,并且,通过采用本发明实施例提供的状态转移表的数据结构,可以提高解压缩的效率。
附图说明
图1为本发明实施例提供的名称数据压缩及解压缩的整体流程示意图;
图2为本发明实施例在对名称数据进行压缩处理时的流程示意图;
图3为本发明实施例在对名称数据进行解压缩处理时的流程示意图;
图4为本发明实施例生成的一种二叉树的结构示意图;
图5为本发明实施例生成的另一种二叉树的结构示意图;
图6为本发明实施例在解码时所用到的二叉树的结构示意图;
图7为本发明实施例中状态转移表的一种的数据格式示意图;
图8为本发明实施例提供的服务器的结构示意图;
图9为本发明实施例提供的终端设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明进行详细描述。
本发明实施例提供的名称数据压缩方法,采用哈夫曼编码方式,以常用词组(而不是单字)作为压缩单元,能够优化数据压缩率,并有自适应能力,随数据的情况而调整,且能够在名称数据采用不同语种的文本情况下都能适用;支持每一条名称数据的随机读取,解压只需占用较小的***资源,可以获得较高的解压速度。
本发明实施例提供的一种名称数据的压缩及解压缩方法,应用于对导航电子地图中的名称数据进行数据压缩及解压缩处理。本实施例的整体流程如图1所示,其中压缩方法通常应用于服务器处,解压缩方法通常应用于用户的终端设备处。这里,所述的名称数据包括指电子地图中POI的名称以及标注文字注释信息。
请参照图2,本发明实施例所述方法在对名称数据进行压缩处理时,包括以下步骤:
步骤21,针对包含有多个名称数据的预设名称数据库,生成覆盖所述名称数据库中所有名称数据的压缩字符串集合,所述压缩字符串集合中的字符串是基于各个名称数据的全部或部分字符生成的。
这里,预设名称数据库可以是从导航电子地图获取的所有名称数据。在生成所述压缩字符串集合时,可以扫描整个名称数据库中的名称数据,从中统计出出现频率达到预定阈值的字符串,而后从这些字符串中选择出一个相容集合作为所述压缩字符串集合。
步骤22,根据所述压缩字符串集合中字符串的频率,创建所述压缩字符串集合对应的哈夫曼二叉树,并生成一包括有所述压缩字符串集合中所有字符串的压缩编码的压缩编码表。
在本步骤中,采用哈夫曼(Huffman)编码,以所述压缩字符串集合中字符串作为叶子节点、各个字符串的频率作为对应的权值,构造一个最优二叉树,即哈夫曼二叉树(Huffman tree),根据生成的哈夫曼二叉树上的叶子节点所经过的路径,得到字符串对应的压缩编码,并将所有叶子节点的压缩编码保存为所述压缩编码表。
这里,构造得到所述哈夫曼二叉树时,本实施例还可以进一步将该树上的各个节点作为一个状态,从而可以将所述哈夫曼二叉树转换得到一个状态转移表。服务器可以将该状态转移表发送给用户的终端设备,由终端设备将该状态转移表保存在内存中,以便于终端设备利用该状态转移表对压缩后的名称数据进行解压缩处理。
步骤23,根据名称数据所包含的字符串,从压缩编码表中获得各个字符串对应的压缩编码,组合得到名称数据的压缩编码。
本步骤中,在需要对某个名称数据进行压缩编码时,可以通过分析该名称数据由所述压缩字符串集合中的哪些字符串所组成,然后,利用步骤22中生成的压缩编码表,确定各个字符串对应的压缩编码,即可组合得到该名称数据对应的压缩编码。
上述步骤21~23通常在服务器处执行,服务器在步骤23中获得某个名称数据的压缩编码以后,服务器还可以进一步将该压缩编码发送给终端设备,由终端设备对该压缩编码进行解压缩,获得压缩前的名称数据。下面将进一步说明本发明实施例的解压缩方法。
本实施例提供一种名称数据的解压缩方法,对通过上述名称数据的压缩方法得到的压缩后的名称数据进行解压缩,以获得压缩前的名称数据,请参照图3,该方法包括以下步骤:
步骤31,获得压缩字符串集合对应的哈夫曼二叉树转换得到的状态转移表,所述压缩字符串集合覆盖预设名称数据库中的所有名称数据,且是基于名称数据的全部或部分字符生成的。
这里,所述状态转移表是服务器在构造得到所述哈夫曼二叉树时,通过将该树上的各个节点作为一个状态,从而将所述哈夫曼二叉树转换得到的。服务器可以将该状态转移表发送给用户的终端设备,终端设备接收到后,则将该状态转移表常驻在内存中,以便于解压缩处理。
步骤32,获得某个名称数据的压缩编码。
步骤33,利用所述状态转移表,对所述名称数据的压缩编码进行解码,得到压缩前的名称数据。
通过以上流程,本发明实施例实现了完整的名称数据压缩及解压缩处理。下面将进一步对压缩及解压缩过程进行详细说明。
以图1为例,本实施例的整个数据处理流程分为编译阶段(发生在服务器上,以生成压缩后的名称数据为最终目标)和应用阶段(发生在终端设备上,从终端读取压缩后的名称数据,并通过解压缩还原至压缩前的名称数据)。
编译阶段中,首先会通过一个称为“字符串集生成”的过程生成一个压缩字符串集合,该集合由出现频率较高的词组字符串组成,在压缩和解压过程中都会涉及到该集合,同时还生成分别适用两个过程的数据表,即压缩编码表和状态转移表。接着,就是压缩过程,压缩算法采用哈夫曼编码方式,会用到之前生成的压缩数据表,最终的压缩后名称数据可以存放在PSF(便携式数据格式)中。在应用阶段,解压数据表常驻在内存中,然后终端根据需要从PSF中取得相应的压缩后名称,通过哈夫曼解压算法最终得到还原的名称。
在字符串集生成过程,可以通过服务器扫描整个名称数据集合(例如,导航电子地图所包括的所有名称数据),从中统计出出现频率达到预定阈值的字符串,而后根据预先确定的优化算法选出一个较优的相容集合以保证高压缩率。哈夫曼编码和解码过程沿则用经典的哈夫曼算法,但有几点不同:1)与传统的哈夫曼不同的是,压缩的单元除了单个的字(即单字,例如,单个字母、单个汉字)外,还包括由两个以上单个的字组成的单词和两个以上单词组成的词组;2)压缩和解压算法都采用独创的数据结构以提高处理速度。下文中将分别进行说明。
一、压缩字符串集合生成
压缩的原理是将最常见的字符串替换为压缩编码,因此在开始压缩之前,需要先收集最常见的字符串以及创建相应的压缩编码。
压缩字符串集合通过对原始导航电子地图中出现的所有文字进行统计分析并选取出现频率达到预定阈值的词条(包括单字、单词和词组),然后以哈夫曼树的方式进行编码,最后得到一张能够覆盖所有输入文字的字符串集。下面给出一种构建压缩字符串集合的具体方式,本发明实施例并不局限于此:
步骤A,统计出现在名称数据中的所有字符串的出现频率,生成一张统计总表。比如有一个名称数据是“四维图新”,那么出现在该名称数据中的各种字符串包括:“四”、“维”、“图”、“新”、“四维”、“维图”、“维图”、“图新”、“四维图”、“维图新”和“四维图新”一共10种字符串,在所有的名称数据中,分别统计每种组合出现的频率。
步骤B,按照预定算法,计算每个字符串的价值,其中,所述预定算法使得计算得到的该字符串的价值,与该字符串的实际长度和出现频率正相关,与该字符串的编码后的预期长度负相关。编码后的预期长度可以采用斐波那契(fibonacci)级数计算而得)。一种可能的算法如下:
Value=(L-E)*Freq
其中L为字符串的实际长度,E为其编码后的预期长度,Freq为其在所有名称数据中的出现频率。
步骤C,从剩余字符串中选取价值最高的预设数量(例如,n个)的字符串,未被选择的字符串构成当前的剩余字符串,所述剩余字符串的初始值为名称数据中出现的所有字符串;
步骤D,针对选择出的字符串,计算每一对组合之间共存概率,若共存概率低于预设门限,则将该对组合中价值较小的字符串删除;
步骤E,确定步骤D中的字符串的删除数量;
步骤F,判断选择次数是否大于预设次数门限,若大于,则进入步骤H,否则进入步骤E;
步骤G,从当前剩余字符串中选取所述删除数量的价值最高的字符串,返回步骤D;
步骤H,将选择出的、且未被删除的字符串,作为压缩字符串集合。
上述步骤,在选择出价值最高的n个字符串后,对这些字符串做排斥性检测,因为某些字符串的value虽然很高,但不能共存,比如拿上面的例子来说,比如“四维图新”这个字符串的价值很高,那么“维图新”这个字符串的价值很可能也比较高,因此很容易同时被选择出来。但既然有了“四维图新”这个字符串,那么“维图新”的实际价值就可能下降,只需要收录一条相关的字符串就已经完全足够。排斥性检测计算每一对字符串之间共存的可能性,然后将共存可能性低于某指定值的字符串从最高n条中剔除。接着从剩下的字符串中选出和剔除数目相等的最高价值的字符串,重新进行排斥性检测。这样反复做若干次(如3次)后得到最终优化的压缩字符串集合。
以四维图新信息技术有限公司近年来的3个版本的导航电子地图数据为例,其中出现的文字字符(包括所有出现的汉字、字母、ASCII表中的可见字符)进行统计,10冬数据共出现7654个互不相同的汉字、11夏共出现8114个互不相同的汉字,11冬共出现了8105个互不相同的汉字。因此,可以将压缩字符串集合的字符串总数限制在16384条。即使压缩字符串集合中的词条只是这些单个字符组成,也能有12.5%的压缩率,因为一个UNICODE编码的字符占16bit,由于压缩字符串集合的字符串限制在16384条内这样可以用14bit的编码对词条进行编码。
本发明实施例中,对于压缩字符串集合中的字符串,可以根据预先设定的优先级进行过排序,优先级越高的字符串越先出现在压缩字符串集合中。其中,字符串的优先级是根据出现的频率和长度综合进行考虑。一般出现的频率越高优先级越高、长度越长优先级越高。本发明实施例中字符串优先排序对数据的压缩率没有影响。
需要指出的是,本发明实施例中字符串不是根据语意生成的(与语意无关),而是根据字符串出现的频率和长度对压缩率的影响度进行的。例如,在输入数据中有如下POI的名称数据:
上海图盟矿业有限公司
新利盟置业有限公司
上海新利影业有限公司
按照本发明实施例中根据字符串出现的频率和长度对压缩率影响的考量,可能会生成像“业有限公司”这样的字符串,这样的字符串从语义角度来讲是没有意义的。
在获得压缩字符串集合之后,可以根据其所包括的字符串的频率,创建哈夫曼二叉树并且生成压缩编码,下面将详细说明。
二、压缩编码
本发明实施例采用哈夫曼编码的经典压缩算法,其原理简述如下:
(1)对于压缩字符串集合S(由前文生成),按频率的升序排列;
(2)从S中取出频率最小的两个字符串,在它们之上增加一个虚构字符串(简称为虚构串),构成一棵单层二叉树,在它们之上的虚构串的频率为它们频率之和,并将虚构串放回原集合中;
(3)重复步骤(1)和(2),直到S只剩一个字符串为止;
(4)如此剩下的唯一字符串及其子串构成一棵多层二叉树,从根节点开始编号:与左子树的连接编为0,与右子树的连接编为1,这样从根节点到叶子节点就构成一个二进制编码流,而叶子节点也就是被压缩的字符串,其对应的编码即为在压缩过程中被替代的编码。
下面通过举出一个实例来说明。
假设目前有这样一个压缩字符串集合:{“上海”,“四维”,“图新”,“信息技术”,“有限公司”}
其中的每个字符串x的频率f(x)如下:
f(“上海”)=20;
f(“四维”)=5;
f(“图新”)=5;
f(“信息技术”)=6;
f(“有限公司”)=7;
根据上述过程生成的二叉树如图4所示。图4中,圆圈表示节点,圆圈中的数字表示节点对应的字符串的概率,连线旁的0或1表示连接的编码,可以看出,图4中叶子节点对应的字符串的频率有5、5、6、7,虚构串的频率则有6、10、13、23、43。根据图4,可以得到每个字符串x的哈夫曼编码Enc(x)分别为
Enc(“上海”)=0;
Enc(“四维”)=100;
Enc(“图新”)=101;
Enc(“信息技术”)=110;
Enc(“有限公司”)=111;
那么对于“上海四维图新信息技术有限公司”这一名称数据进行压缩编码后生成的二进制流则为0100101110111。
在实际应用中,存储二进制流通常以字节对齐(即长度为字节的整数倍),以上得到的二进制流只有13比特位(bits),可以通过补齐3bits以便于存储。本实施例采用的解决方案如下:如果字符串的编码中有超过8bits的,那么不足部分由任意一个超过8bits的编码取前若干位补足;如果字符串编码中不存在超过8bits的编码,则可以增加一个哑元字符串,当输出这个字符串时,解码也就结束了,因此不足部分通过哑元编码补足,如果仍然无法补足的话,在哑元之后可以补充任意内容以补足。
针对图4的情况,没有一个编码的长度超过8,因此采用哑元,重新编号的二叉树如图5所示,注意其中频率为1的叶子节点就是哑元节点。可以得到每个字符串x的哈夫曼编码Enc(x)分别为:
Enc(“上海”)=0;
Enc(“四维”)=100;
Enc(“图新”)=1011;
Enc(哑元)=1010;
Enc(“信息技术”)=110;
Enc(“有限公司”)=111;
“上海四维图新信息技术有限公司”压缩后的二进制流为01001011110111,一共14bits,为了按byte对齐,还需要补足2bits,这里可以使用哑元编码的前2位补充,最终为0100101111011110。源字符串长度为28bytes,压缩后2bytes,压缩率为2/28*100%=7.1%。
在获得压缩编码表后,若需要对某个名称数据进行压缩,即可以根据该名称数据所包括的字符串,在压缩编码表中查找各个字符串对应的编码,即可组合得到该名称数据的压缩编码。
本实施例中,服务器在生成压缩编码表时,进一步根据所获得的哈夫曼二叉树,生成一对应的状态转移表,该二叉树中的每个节点对应于一个状态,从根节点转移到叶子节点的连接上的编码,与该叶子节点的字符串相对应。服务器将上述状态转移表发送给用户的终端设备,终端设备将该状态表常驻在内存中,以便于对压缩后的名称数据进行解压。下文中将说明具体的解压过程。
三、名称数据的解压缩
终端设备获得服务器生成的上述状态转移表,由前文可知,所述状态转移表是将生成压缩编码的哈夫曼二叉树转换成的一张状态转移表。下面仍然以图5为例,来说明实现哈夫曼解码过程和本实施例在其中所采用的特殊数据结构。
解码的算法类似于状态机,首先对哈夫曼二叉树的非叶子节点进行编号,如图6所示。由于有5个非叶子节点,因此编号0到4,编号的方式并不受到限制,除图中所示的编号外,其它编号方式也是允许的。
解码的方式类似状态机,也就是从根节点的状态0开始,根据输入(也就是连接边的编码值),实行状态的转移,当状态转移至叶子节点时,输出叶子节点的字符串并且状态自动回复到根节点的状态0,这样可以得到如下表1的状态转移表:
输入0 | 输入1 | |
状态0 | 状态0/输出“上海” | 状态1/空输出 |
状态1 | 状态2/空输出 | 状态3/空输出 |
状态2 | 状态0/输出“四维” | 状态4/空输出 |
状态3 | 状态0/输出“信息技术” | 状态0/输出“有限公司” |
状态4 | 状态0/输出哑元 | 状态0/输出“图新” |
表1
上表中的左边的一列表示当前状态,中间的一列以及右边的一列表示在当前状态输入分别为0和1时,转移后的状态以及对应输出的字符串。例如,在当前状态为0时,若输入0,则当前状态转移至状态0并输出字符串“上海”,若输入1,则当前状态转移至状态1但不输出任何字符串。在解码过程中,若输出哑元,则解码过程结束。以前文生成的二进制流0100101111011110进行解码,对照上面的状态转移表,最终得到“上海四维图新信息技术有限公司”,状态停留在状态2上。
上面的状态转移表只采用1比特(bit)的输入,实际应用中取得1bit的数据要执行至少2次位移,为了增加解码效率,可以增加输入的bit数,较优的,输入比特位数为4。限于篇幅,下表2中给出了输入2bits的状态转移表。
表2
需要注意的是,一旦输出了哑元,之后无论碰到任何叶子节点都不再输出,因此在状态4下,无论是输入00还是01都只输出哑元不输出字符串。此外,表2中某些状态转移会输出不只一个叶子节点的内容,比如状态2在输入00时会输出两个叶子节点的内容(即“四维”和“上海”)。上面的二进制流0100101111011110,根据新状态转移表2,仍旧可解码得到“上海四维图新信息技术有限公司”这一解压缩后的名称数据。
作为本实施例的一种可选实施方式,状态转移表的数据结构要存储两方面内容:转移后的状态(下文中简称为转移状态)和输出的字符串内容。这样,在输入名称数据的压缩编码后,可以根据所述状态转移表,确定在输入压缩编码后的转移状态及字符串内容,从而得到输入的压缩编码对应的字符串内容。
作为本实施例的另一种可选实施方式,为了便于快速查找转移状态,状态转移表可采用如图7所示的数据格式。图7所示的状态转移表有多个单元(Array),每个单元对应于一个状态下的一种输入。假设状态转移表状态0~m共m+1个状态,输入有0~n共n+1种输入,则状态转移表一共有(m+1)*(n+1)个单元,其中状态t下输入v对应的单元,在转移状态表中的相对位置(偏移量)则是[t*(n+1)+v]。
图7中,数据结构采取输出字符串单独分离出去的形式,状态转移表中的每个元素仅存储转移状态(即转移后的状态)和用于指示字符串内容存放地址的字符串指针。若状态总数控制在10000以下,输入比特位数限制在4bits,则转移状态只需要2字节即可表示出所有状态,字符串指针通常需要2或4字节,一个单元至少4字节,那么状态转移表一共将用去:10,000*24*4=640,000bytes的存储空间。这对于现有终端设备的内存容量来说是完全可以接受的。
在上述数据结构下,在输入压缩编码后,能够非常方便地取得转移状态和字符串指针,进而根据字符串指针在对应的地址处读取到输出的字符串。图7中,字符串指针所指示的地址,包括有用于指示字符串内容长度的长度字段和存储有字符串内容的字符串内容字段。长度字段的比特位数为预设固定长度,因此首先从字符串指针所指示的地址处,读取出预设固定长度的长度字段的值,确定字符串内容的长度,进而读取长度字段后对应长度的字符串内容并输出,由此即可实现对名称数据的解压缩处理,输出压缩前的名称数据。
以上方法能够提高名称数据的压缩效率。具体的,从目前验证的压缩效率方面看,中文压缩能够控制在25%~40%之间,英文和拼音数据压缩则在15%~30%之间。而解压速度在终端设备上可以满足苛刻的要求(由于终端设备彼此之间在性能上存在很大差异,因此这里无法给出具有参考价值的数据)。除此之外,在对源数据进行扫描以生成压缩字符串集合的过程中,大约会用去数小时的时间,这个过程已进过优化而大大缩短了,而目前的名称数据总量已经达到5000万的级别。在终端设备上,压缩算法需要一部分数据常驻内存,常驻的数据总量约为1M左右,这已经包括4个语种,单个语种的解压数据量在256K左右,而且***可以选择只加载单语种的模式以节省常驻消耗,这在内存容量大幅增长的今天已不再是一个问题。针对不同的名称数据,本发明实施例能自如地调节以维持压缩率不致下降,比如说,针对全国的名称数据生成的压缩字符串集合,在针对单个单独地区的名称数据进行压缩时,不会有像对全国那样的效率,但如果只对这个单独地区生成压缩数据表,那就会得到和全国一样的压缩效率。
基于以上提供的方法,本发明实施例进一步提供了一种服务器和一种终端设备,分别用于实现上述的压缩方法及解压缩方法。
其中,如图8所示,本发明实施例提供的服务器,包括:
集合生成单元,用于针对包含有多个名称数据的预设名称数据库,生成覆盖所述名称数据库中所有名称数据的压缩字符串集合,所述压缩字符串集合中的字符串是基于各个名称数据的全部或部分字符生成的;
编码表生成单元,用于根据所述压缩字符串集合中字符串的频率,创建所述压缩字符串集合对应的哈夫曼二叉树,并生成一包括有所述压缩字符串集合中所有字符串的压缩编码的压缩编码表;
压缩单元,用于在对一名称数据进行压缩编码时,根据该名称数据所包含的字符串,从压缩编码表中获得各个字符串对应的压缩编码,组合得到该名称数据的压缩编码。
其中,所述编码表生成单元,进一步用于在生成所述压缩编码表时,根据所获得的哈夫曼二叉树,生成一对应的状态转移表并发送给终端设备,该二叉树中的每个节点对应于一个状态,从根节点转移到叶子节点的连接上的编码,与该叶子节点的字符串相对应。
其中,所述集合生成单元,具体用于执行以下步骤以生成压缩字符串集合:
步骤A,统计出现在名称数据中的所有字符串的出现频率;
步骤B,按照预定算法,计算每个字符串的价值,其中,所述预定算法使得计算得到的该字符串的价值,与该字符串的实际长度和出现频率正相关,与该字符串的编码后的预期长度负相关;
步骤C,从剩余字符串中选取价值最高的预设数量的字符串,未被选择的字符串构成当前的剩余字符串,所述剩余字符串的初始值为名称数据中出现的所有字符串;
步骤D,针对选择出的字符串,计算每一对组合之间共存概率,若共存概率低于预设门限,则将该对组合中价值较小的字符串删除;
步骤E,确定步骤D中的字符串的删除数量;
步骤F,判断选择次数是否大于预设次数门限,若大于,则进入步骤H,否则进入步骤E;
步骤G,从当前剩余字符串中选取所述删除数量的价值最高的字符串,返回步骤D;
步骤H,将选择出的、且未被删除的字符串,作为压缩字符串集合。
其中,所述压缩单元,进一步用于在对名称数据进行压缩编码时,若组合得到该名称数据的压缩编码不是字节的整数倍,则:
在压缩字符串集合存在有压缩编码长度大于8比特的字符串时,从该字符串的压缩编码的最高比特位开始,截取一定长度的编码,将该名称数据的压缩编码补足为字节的整数倍;
在压缩字符串集合不存在压缩编码长度大于8比特的字符串时,通过增加哑元字符串,利用哑元字符串的编码,将该名称数据的压缩编码补足为字节的整数倍。
本发明实施例提供的终端设备,如图9所示,包括:
第一获得单元,用于获得压缩字符串集合对应的哈夫曼二叉树转换得到的状态转移表,所述压缩字符串集合覆盖预设名称数据库中的所有名称数据,且是基于名称数据的全部或部分字符生成的;
第二获得单元,用于获得名称数据的压缩编码;
解码单元,用于利用所述状态转移表,对所述名称数据的压缩编码进行解码,得到压缩前的名称数据。
作为一种优选实施方式,所述状态转移表包括多个单元,每个单元对应于一个状态下的一种输入,且每个单元中存储有转移后的转移状态和输出的字符串内容;所述解码单元,进一步用于根据所述状态转移表,确定在输入所述名称数据的压缩编码后的转移状态及输出的字符串内容,得到输入的压缩编码对应的字符串内容。
作为另一种优选实施方式,所述状态转移表包括多个单元,每个单元对应于一个状态下的一种输入,且每个单元中存储有转移后的转移状态和用于指示字符串内容存放地址的字符串指针;所述解码单元,进一步用于根据所述状态转移表,确定在输入所述名称数据的压缩编码后的转移状态及字符串指针,根据字符串指针在对应的地址处读取到输入的压缩编码对应的字符串内容。
此说明书中所描述的许多功能部件都被称为单元,以便更加特别地强调其实现方式的独立性。
本发明实施例中,单元可以用软件实现,以便由各种类型的处理器执行。举例来说,一个标识的可执行代码单元可以包括计算机指令的一个或多个物理或者逻辑块,举例来说,其可以被构建为对象、过程或函数。尽管如此,所标识单元的可执行代码无需物理地位于一起,而是可以包括存储在不同位里上的不同的指令,当这些指令逻辑上结合在一起时,其构成单元并且实现该单元的规定目的。
实际上,可执行代码单元可以是单条指令或者是许多条指令,并且甚至可以分布在多个不同的代码段上,分布在不同程序当中,以及跨越多个存储器设备分布。同样地,操作数据可以在单元内被识别,并且可以依照任何适当的形式实现并且被组织在任何适当类型的数据结构内。所述操作数据可以作为单个数据集被收集,或者可以分布在不同位置上(包括在不同存储设备上),并且至少部分地可以仅作为电子信号存在于***或网络上。
在单元可以利用软件实现时,考虑到现有硬件工艺的水平,所以可以以软件实现的单元,在不考虑成本的情况下,本领域技术人员都可以搭建对应的硬件电路来实现对应的功能,所述硬件电路包括常规的超大规模集成(VLSI)电路或者门阵列以及诸如逻辑芯片、晶体管之类的现有半导体或者是其它分立的元件。单元还可以用可编程硬件设备,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等实现。
以上所述仅是本发明的实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (14)
1.一种名称数据的压缩方法,应用于服务器侧,其特征在于,包括:
针对包含有多个名称数据的预设名称数据库,生成覆盖所述名称数据库中所有名称数据的压缩字符串集合,所述压缩字符串集合中的字符串是基于各个名称数据的全部或部分字符生成的;
根据所述压缩字符串集合中字符串的频率,创建所述压缩字符串集合对应的哈夫曼二叉树,并生成一包括有所述压缩字符串集合中所有字符串的压缩编码的压缩编码表;
在对一名称数据进行压缩编码时,根据该名称数据所包含的字符串,从压缩编码表中获得各个字符串对应的压缩编码,组合得到该名称数据的压缩编码;
其中,所述压缩字符串集合为扫描整个名称数据库中的名称数据,从中统计出出现频率达到预定阈值的字符串,从所述字符串中选择出一个相容集合后得到。
2.如权利要求1所述的方法,其特征在于,
在生成所述压缩编码表时,进一步根据所获得的哈夫曼二叉树,生成一对应的状态转移表并发送给终端设备,该二叉树中的每个节点对应于一个状态,从根节点转移到叶子节点的连接上的编码,与该叶子节点的字符串相对应。
3.如权利要求1所述的方法,其特征在于,
所述生成覆盖所述名称数据库中所有名称数据的压缩字符串集合,包括:
步骤A,统计出现在名称数据中的所有字符串的出现频率;
步骤B,按照预定算法,计算每个字符串的价值,其中,所述预定算法使得计算得到的该字符串的价值,与该字符串的实际长度和出现频率正相关,与该字符串的编码后的预期长度负相关;
步骤C,从剩余字符串中选取价值最高的预设数量的字符串,未被选择的字符串构成当前的剩余字符串,所述剩余字符串的初始值为名称数据中出现的所有字符串;
步骤D,针对选择出的字符串,计算每一对组合之间共存概率,若共存概率低于预设门限,则将该对组合中价值较小的字符串删除;
步骤E,确定步骤D中的字符串的删除数量;
步骤F,判断选择次数是否大于预设次数门限,若大于,则进入步骤H,否则进入步骤E;
步骤G,从当前剩余字符串中选取所述删除数量的价值最高的字符串,返回步骤D;
步骤H,将选择出的、且未被删除的字符串,作为压缩字符串集合。
4.如权利要求1所述的方法,其特征在于,在对名称数据进行压缩编码时,若组合得到该名称数据的压缩编码不是字节的整数倍,则:
在压缩字符串集合存在有压缩编码长度大于8比特的字符串时,从该字符串的压缩编码的最高比特位开始,截取一定长度的编码,将该名称数据的压缩编码补足为字节的整数倍;
在压缩字符串集合不存在压缩编码长度大于8比特的字符串时,通过增加哑元字符串,利用哑元字符串的编码,将该名称数据的压缩编码补足为字节的整数倍。
5.一种名称数据的解压缩方法,应用于终端设备上,其特征在于,包括:
获得压缩字符串集合对应的哈夫曼二叉树转换得到的状态转移表,所述压缩字符串集合覆盖预设名称数据库中的所有名称数据,且是基于名称数据的全部或部分字符生成的;
获得名称数据的压缩编码;
利用所述状态转移表,对所述名称数据的压缩编码进行解码,得到压缩前的名称数据;
其中,所述压缩字符串集合为扫描整个名称数据库中的名称数据,从中统计出出现频率达到预定阈值的字符串,从所述字符串中选择出一个相容集合后得到。
6.如权利要求5所述的方法,其特征在于,
所述状态转移表包括多个单元,每个单元对应于一个状态下的一种输入,且每个单元中存储有转移后的转移状态和输出的字符串内容;
所述对所述名称数据的压缩编码进行解码,包括:
根据所述状态转移表,确定在输入所述名称数据的压缩编码后的转移状态及输出的字符串内容,得到输入的压缩编码对应的字符串内容。
7.如权利要求5所述的方法,其特征在于,
所述状态转移表包括多个单元,每个单元对应于一个状态下的一种输入,且每个单元中存储有转移后的转移状态和用于指示字符串内容存放地址的字符串指针;
所述对所述名称数据的压缩编码进行解码,包括:
根据所述状态转移表,确定在输入所述名称数据的压缩编码后的转移状态及字符串指针,根据字符串指针在对应的地址处读取到输入的压缩编码对应的字符串内容。
8.一种服务器,其特征在于,包括:
集合生成单元,用于针对包含有多个名称数据的预设名称数据库,生成覆盖所述名称数据库中所有名称数据的压缩字符串集合,所述压缩字符串集合中的字符串是基于各个名称数据的全部或部分字符生成的;
编码表生成单元,用于根据所述压缩字符串集合中字符串的频率,创建所述压缩字符串集合对应的哈夫曼二叉树,并生成一包括有所述压缩字符串集合中所有字符串的压缩编码的压缩编码表;
压缩单元,用于在对一名称数据进行压缩编码时,根据该名称数据所包含的字符串,从压缩编码表中获得各个字符串对应的压缩编码,组合得到该名称数据的压缩编码;
其中,所述压缩字符串集合为扫描整个名称数据库中的名称数据,从中统计出出现频率达到预定阈值的字符串,从所述字符串中选择出一个相容集合后得到。
9.如权利要求8所述的服务器,其特征在于,
所述编码表生成单元,进一步用于在生成所述压缩编码表时,根据所获得的哈夫曼二叉树,生成一对应的状态转移表并发送给终端设备,该二叉树中的每个节点对应于一个状态,从根节点转移到叶子节点的连接上的编码,与该叶子节点的字符串相对应。
10.如权利要求8所述的服务器,其特征在于,
所述集合生成单元,具体用于执行以下步骤以生成压缩字符串集合:
步骤A,统计出现在名称数据中的所有字符串的出现频率;
步骤B,按照预定算法,计算每个字符串的价值,其中,所述预定算法使得计算得到的该字符串的价值,与该字符串的实际长度和出现频率正相关,与该字符串的编码后的预期长度负相关;
步骤C,从剩余字符串中选取价值最高的预设数量的字符串,未被选择的字符串构成当前的剩余字符串,所述剩余字符串的初始值为名称数据中出现的所有字符串;
步骤D,针对选择出的字符串,计算每一对组合之间共存概率,若共存概率低于预设门限,则将该对组合中价值较小的字符串删除;
步骤E,确定步骤D中的字符串的删除数量;
步骤F,判断选择次数是否大于预设次数门限,若大于,则进入步骤H,否则进入步骤E;
步骤G,从当前剩余字符串中选取所述删除数量的价值最高的字符串,返回步骤D;
步骤H,将选择出的、且未被删除的字符串,作为压缩字符串集合。
11.如权利要求8所述的服务器,其特征在于,所述压缩单元,进一步用于在对名称数据进行压缩编码时,若组合得到该名称数据的压缩编码不是字节的整数倍,则:
在压缩字符串集合存在有压缩编码长度大于8比特的字符串时,从该字符串的压缩编码的最高比特位开始,截取一定长度的编码,将该名称数据的压缩编码补足为字节的整数倍;
在压缩字符串集合不存在压缩编码长度大于8比特的字符串时,通过增加哑元字符串,利用哑元字符串的编码,将该名称数据的压缩编码补足为字节的整数倍。
12.一种终端设备,其特征在于,包括:
第一获得单元,用于获得压缩字符串集合对应的哈夫曼二叉树转换得到的状态转移表,所述压缩字符串集合覆盖预设名称数据库中的所有名称数据,且是基于名称数据的全部或部分字符生成的;
第二获得单元,用于获得名称数据的压缩编码;
解码单元,用于利用所述状态转移表,对所述名称数据的压缩编码进行解码,得到压缩前的名称数据;
其中,所述压缩字符串集合为扫描整个名称数据库中的名称数据,从中统计出出现频率达到预定阈值的字符串,从所述字符串中选择出一个相容集合后得到。
13.如权利要求12所述的终端设备,其特征在于,
所述状态转移表包括多个单元,每个单元对应于一个状态下的一种输入,且每个单元中存储有转移后的转移状态和输出的字符串内容;
所述解码单元,进一步用于根据所述状态转移表,确定在输入所述名称数据的压缩编码后的转移状态及输出的字符串内容,得到输入的压缩编码对应的字符串内容。
14.如权利要求12所述的终端设备,其特征在于,
所述状态转移表包括多个单元,每个单元对应于一个状态下的一种输入,且每个单元中存储有转移后的转移状态和用于指示字符串内容存放地址的字符串指针;
所述解码单元,进一步用于根据所述状态转移表,确定在输入所述名称数据的压缩编码后的转移状态及字符串指针,根据字符串指针在对应的地址处读取到输入的压缩编码对应的字符串内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310273457.5A CN104283567B (zh) | 2013-07-02 | 2013-07-02 | 一种名称数据的压缩、解压缩方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310273457.5A CN104283567B (zh) | 2013-07-02 | 2013-07-02 | 一种名称数据的压缩、解压缩方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104283567A CN104283567A (zh) | 2015-01-14 |
CN104283567B true CN104283567B (zh) | 2018-07-03 |
Family
ID=52258111
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310273457.5A Active CN104283567B (zh) | 2013-07-02 | 2013-07-02 | 一种名称数据的压缩、解压缩方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104283567B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109831544A (zh) * | 2019-01-30 | 2019-05-31 | 重庆农村商业银行股份有限公司 | 一种应用于电子邮箱地址的编码存储方法及*** |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10223399B2 (en) | 2015-11-03 | 2019-03-05 | International Business Machines Corporation | Global filter factor estimation |
CN105677809B (zh) * | 2015-12-31 | 2019-06-28 | 广州华多网络科技有限公司 | 一种基于移动终端的中文词条索引压缩方法及移动终端 |
CN107153647B (zh) * | 2016-03-02 | 2021-12-07 | 北京字节跳动网络技术有限公司 | 进行数据压缩的方法、装置、***和计算机程序产品 |
CN107786712A (zh) * | 2016-08-30 | 2018-03-09 | 北京神州泰岳软件股份有限公司 | 一种通讯录中联系人信息的压缩存储方法和装置 |
CN106253910A (zh) * | 2016-09-22 | 2016-12-21 | 山东华旗新能源科技有限公司 | 一种压缩编码方法 |
CN107682016B (zh) * | 2017-09-26 | 2021-09-17 | 深信服科技股份有限公司 | 一种数据压缩方法、数据解压方法及相关*** |
CN108829872B (zh) * | 2018-06-22 | 2021-03-09 | 武汉轻工大学 | 无损压缩文件的快速处理方法、设备、***及存储介质 |
CN109829328A (zh) * | 2018-12-19 | 2019-05-31 | 上海晶赞融宣科技有限公司 | 数据脱敏、逆脱敏方法及装置、存储介质、终端 |
CN109660262A (zh) * | 2019-01-30 | 2019-04-19 | 重庆农村商业银行股份有限公司 | 一种应用于电子邮箱地址的字符编码方法及*** |
CN109959401B (zh) * | 2019-03-26 | 2022-01-11 | 中国科学院光电技术研究所 | 一种光电轴角编码器的快速编码方法 |
CN110995753A (zh) * | 2019-12-19 | 2020-04-10 | 中国电力科学研究院有限公司 | 用电信息采集***中远程通信报文的组合压缩方法 |
CN111431537A (zh) * | 2020-03-06 | 2020-07-17 | 平安科技(深圳)有限公司 | 数据压缩方法、装置及计算机可读存储介质 |
CN111506781A (zh) * | 2020-04-21 | 2020-08-07 | 四川创智联恒科技有限公司 | 一种大幅压缩数据库体积的方法、***、终端设备和可读存储介质 |
CN111600610B (zh) * | 2020-05-26 | 2023-04-28 | 北京思特奇信息技术股份有限公司 | 一种变长整数的通用编码方法、***及电子设备 |
CN112101548A (zh) * | 2020-09-22 | 2020-12-18 | 珠海格力电器股份有限公司 | 数据压缩方法及装置、数据解压方法及装置、电子设备 |
CN114614829A (zh) * | 2020-12-09 | 2022-06-10 | 千寻位置网络有限公司 | 卫星数据帧的处理方法、装置、电子设备和可读存储介质 |
CN113794724B (zh) * | 2021-09-15 | 2022-05-24 | 中国科学院计算机网络信息中心 | 一种路由起源授权压缩的编码和解码方法及*** |
CN114124411B (zh) * | 2021-12-07 | 2024-01-09 | 牙木科技股份有限公司 | 信息注册方法、信息认证方法、dns服务器及存储介质 |
CN114665887B (zh) * | 2022-05-24 | 2022-09-06 | 成都索贝视频云计算有限公司 | 一种基于整体压缩的json字符串数据压缩方法 |
CN116865768B (zh) * | 2023-08-31 | 2023-11-21 | 临沂安迪电气有限公司 | 一种plc设备数据优化存储方法 |
CN117278056B (zh) * | 2023-11-22 | 2024-01-30 | 湖南立人科技有限公司 | 一种社保信息处理方法及*** |
CN117651076B (zh) * | 2023-11-29 | 2024-07-12 | 哈尔滨工程大学 | 适配跨域多信道保密信源编码压缩解压方法 |
CN118101137B (zh) * | 2024-04-26 | 2024-06-25 | 西安电子科技大学 | 一种针对多跳网络的数据传输方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0730434A (ja) * | 1993-07-12 | 1995-01-31 | Fujitsu Ltd | 可変長符号の復号器 |
JPH07212244A (ja) * | 1993-12-27 | 1995-08-11 | Texas Instr Inc <Ti> | 可変長デコーダ |
CN1441555A (zh) * | 2002-02-28 | 2003-09-10 | 三星电子株式会社 | 改进的哈夫曼译码方法和装置 |
CN1701517A (zh) * | 2003-08-28 | 2005-11-23 | 索尼株式会社 | 译码装置和方法、程序存储媒体和程序 |
CN102244518A (zh) * | 2010-05-10 | 2011-11-16 | 百度在线网络技术(北京)有限公司 | 并行解压缩的硬件实现的***及方法 |
WO2012139885A1 (en) * | 2011-04-11 | 2012-10-18 | Alcatel Lucent | Method of encoding a data identifier |
-
2013
- 2013-07-02 CN CN201310273457.5A patent/CN104283567B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0730434A (ja) * | 1993-07-12 | 1995-01-31 | Fujitsu Ltd | 可変長符号の復号器 |
JPH07212244A (ja) * | 1993-12-27 | 1995-08-11 | Texas Instr Inc <Ti> | 可変長デコーダ |
CN1441555A (zh) * | 2002-02-28 | 2003-09-10 | 三星电子株式会社 | 改进的哈夫曼译码方法和装置 |
CN1701517A (zh) * | 2003-08-28 | 2005-11-23 | 索尼株式会社 | 译码装置和方法、程序存储媒体和程序 |
CN102244518A (zh) * | 2010-05-10 | 2011-11-16 | 百度在线网络技术(北京)有限公司 | 并行解压缩的硬件实现的***及方法 |
WO2012139885A1 (en) * | 2011-04-11 | 2012-10-18 | Alcatel Lucent | Method of encoding a data identifier |
Non-Patent Citations (1)
Title |
---|
An efficient finite-state machine implementation of Huffman decoders;Vikram Iyengar et al.;《Information Processing Letters》;19971229;第64卷(第6期);第271-275页 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109831544A (zh) * | 2019-01-30 | 2019-05-31 | 重庆农村商业银行股份有限公司 | 一种应用于电子邮箱地址的编码存储方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN104283567A (zh) | 2015-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104283567B (zh) | 一种名称数据的压缩、解压缩方法及设备 | |
CN104040542B (zh) | 用于在易失性存储器内保持关系型数据的列向量的技术 | |
CN104380267B (zh) | 数据解压/压缩装置 | |
CN100576753C (zh) | 静态赫夫曼解码的***和方法 | |
CN104737165B (zh) | 用于内存数据库查询处理的最优数据表示和辅助结构 | |
KR101049699B1 (ko) | 데이터의 압축방법 | |
JP3778087B2 (ja) | データ符号化装置及びデータ復号装置 | |
CN101286744B (zh) | 自动生成压缩码表的方法和装置 | |
CN101937448A (zh) | 用于主存储器列存储装置的基于字典的保持顺序的串压缩 | |
CN104331269A (zh) | 一种嵌入式***可执行代码压缩方法及代码解压缩*** | |
CN102122960A (zh) | 一种针对二进制数据的多字符组合无损数据压缩方法 | |
CN101783788A (zh) | 文件压缩、解压缩方法、装置及压缩文件搜索方法、装置 | |
RU2633178C2 (ru) | Способ и система базы данных для индексирования ссылок на документы базы данных | |
CN109428602A (zh) | 一种数据编码方法、装置以及存储介质 | |
CN103701470B (zh) | 一种流智能预测差异压缩算法及相应的控制装置 | |
CN107025212A (zh) | 编码方法、编码装置、解码方法和解码装置 | |
CN108475508A (zh) | 音频数据和保存在块处理存储***中的数据的简化 | |
JPH10261969A (ja) | データ圧縮方法および装置 | |
US12001237B2 (en) | Pattern-based cache block compression | |
WO2009001174A1 (en) | System and method for data compression and storage allowing fast retrieval | |
CN114297046A (zh) | 基于日志的事件获取方法、装置、设备及介质 | |
US7612692B2 (en) | Bidirectional context model for adaptive compression | |
CN107797973A (zh) | 一种面向硬件实现的gbdt分类模型压缩方法 | |
Adiego et al. | Mapping words into codewords on PPM | |
Fredriksson et al. | Efficient string matching in Huffman compressed texts |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |