CN112953550B - 数据压缩的方法、电子设备及存储介质 - Google Patents
数据压缩的方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112953550B CN112953550B CN202110309332.8A CN202110309332A CN112953550B CN 112953550 B CN112953550 B CN 112953550B CN 202110309332 A CN202110309332 A CN 202110309332A CN 112953550 B CN112953550 B CN 112953550B
- Authority
- CN
- China
- Prior art keywords
- data
- length
- scanning window
- compression
- compressed
- 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
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明实施例涉及数据处理领域,公开了一种数据压缩的方法、电子设备及存储介质。本发明中数据压缩的方法,包括:获取至少两个类别的初始数据,每类初始数据中各待压缩数据的长度均相同;根据每类初始数据中任意一条待压缩数据,调整字典编码中扫描窗口的长度直至所述扫描窗口的长度与当前类别匹配;按照匹配后扫描窗口的长度对当前类别的初始数据采用字典编码的方式进行压缩,获得初始数据的第一压缩结果。采用本发明的实施例,可以提高对数据的压缩速度和压缩比。
Description
技术领域
本发明实施例涉及数据处理领域,特别涉及一种数据压缩的方法、电子设备及存储介质。
背景技术
随着当今世界信息技术的发展,各行各业产生了越来越多的数据,已经远超常规数据处理手段的处理能力,其中海量数据的存储面临重大挑战。作为针对海量数据存储的有效手段,数据压缩技术发展已日趋成熟,并在生活服务的各个领域中广泛发展。
航空***本身具有海量数据,一架飞机一个架次的飞行就会产生数个TB与其相关联的数据,这给航空领域带来了巨大的数据管理、分析难题。但海量的数据既是挑战,也是机遇。数据压缩技术可以将海量的多源异构航空数据压缩,再借助数据传输、分布式存储等新兴手段,实现大规模航空数据的存储,便于之后针对解压缩的数据进行数据挖掘,更好地辅助航空***发展,提高飞机飞行安全性,辅助飞行品质评估,飞机维护保养等。
无损压缩技术是根据一定方法对大量数据进行编码处理以达到信息压缩存储的技术,在数据的压缩过程中不允许精度的损失,被压缩的数据能够通过解码恢复到压缩以前的原状态。无损压缩技术主要用于文本文件、数据库、程序数据和特殊应用场合的数据压缩。然而,目前的无损压缩方法的压缩比低,一般为1/2~1/5,不能满足对海量数据的压缩需求。
发明内容
本发明实施方式的目的在于提供一种数据压缩的方法、电子设备及存储介质,可以提高对数据的压缩速度和压缩比。
为解决上述技术问题,本发明的实施方式提供了一种数据压缩的方法,包括:获取至少两个类别的初始数据,每类初始数据中各待压缩数据的长度均相同;根据每类初始数据中任意一条待压缩数据,调整字典编码中扫描窗口的长度直至所述扫描窗口的长度与当前类别匹配;按照匹配后扫描窗口的长度对当前类别的初始数据采用字典编码的方式进行压缩,获得初始数据的第一压缩结果。
本发明的实施方式还提供了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使至少一个处理器能够执行上述的数据压缩的方法。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述的数据压缩的方法。
本发明的实施例中,采用字典编码的方式对初始数据进行压缩,针对不同长度的数据匹配对应的扫描窗口的长度,通过调整后的扫描窗口长度对该类别的数据压缩,由于当前类别对应的扫描窗口的长度固定,减少了扫描过程中因重复变换扫描窗口导致小窗口出现次数,提升了每次获取扫描数据的速度,进而提高了压缩速度,而由于扫描窗口的增大,使得查询的扫描数据的长度以也随之增加,压缩的数据也增大,从而增加了压缩比。由于可以根据待压缩数据的长度调整扫描窗口的长度,使得扫描窗口适用于不同的类别,提高压缩的适应性。
另外,在所述按照匹配后扫描窗口的长度对当前类别的所述初始数据采用所述字典编码的方式进行压缩,获得所述初始数据的第一压缩结果之后,所述方法还包括:将所述第一压缩结果作为压缩输入数据;采用有限状态熵编码方式对所述压缩输入数据进行编码,生成第二压缩结果。对第一压缩结果进行二次压缩,且采用了压缩速度快的有限状态熵编码方式进行压缩,进一步提高了压缩速度,同时再次压缩数据,提高了压缩比。
另外,在所述获取至少两个类别的初始数据之前,所述方法还包括:获取原始数据作为压缩输入数据;采用有限状态熵编码方式对所述压缩输入数据进行编码,生成第二压缩结果;将所述第二压缩结果作为所述初始数据。在进行字典编码前对原始数据进行有限状态熵编码方式编码,再进行字典编码,进一步提高对数据的压缩比。
另外,根据每类所述初始数据中任意一条待压缩数据,调整字典编码中扫描窗口的长度直至所述扫描窗口的长度与当前类别匹配,包括:从所述待压缩数据中获取位于前向缓存区的数据作为查询数据;从编码库中获取位于扫描窗口内的数据作为编码数据;判断编码数据中是否存在与所述查询数据匹配的数据,若不存在匹配的数据,则调整所述扫描窗口的长度,并将调整后的扫描窗口作为下一次获取编码数据的扫描窗口,直至所述待压缩数据完成匹配;若存在,则记录匹配的编码数据的位置,并以当前的扫描窗口作为下一次获取编码数据的扫描窗口;根据所述待压缩数据完成匹配时对应的所述扫描窗口的长度,确定当前类别匹配的扫描窗口的长度。通过对任一条待压缩数据进行编码处理,若不存在与查询数据匹配的数据时,调整扫描窗口的长度,而若存在与查询数据匹配的数据时,保持该扫描窗口的长度,从而不断优化当前类别对应的扫描窗口长度。
另外,若不存在匹配的数据,所述方法还包括:将所述查询数据存储至所述编码库中;获取所述查询数据的存储地址,并将所述存储地址作为下一次获取编码数据的基准地址。
另外,根据所述待压缩数据完成匹配时对应的所述扫描窗口的长度,确定当前类别匹配的扫描窗口的长度,包括:判断所述待压缩数据完成匹配时对应的所述扫描窗口的长度是否超过预设长度,若超过预设长度,则以预设长度作为当前类别匹配的扫描窗口的长度。扫描窗口的长度最大为处理器的位数,避免出现扫描窗口过长导致扫描速率降低的问题。
另外,所述字典编码为:LZ4编码;所述将所述查询数据存储至所述编码库中,包括:将所述查询数据进行哈希处理,得到哈希值;将所述哈希值以及所述哈希值对应的地址存储在所述哈希表中。LZ4编码的速度快,提高数据编码的速度。
另外,初始数据包括:航空数据或交通数据。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是根据本发明第一实施例中提供的一种数据压缩的方法的流程图;
图2是根据本发明第二实施例中提供的一种数据压缩的方法的流程图;
图3是根据本发明第三实施例中提供的一种数据压缩的方法的流程图;
图4是根据本发明第四实施例中提供的一种数据压缩的方法的流程图;
图5根据本发明第五实施例中提供的一种电子设备的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本发明的第一实施方式涉及一种数据压缩的方法。应用于电子设备,其流程如图1所示:
步骤101:获取至少两个类别的初始数据,每类初始数据中各待压缩数据的长度均相同。
步骤102:根据每类初始数据中任意一条待压缩数据,调整字典编码中扫描窗口的长度直至扫描窗口的长度与当前类别匹配。
步骤103:按照匹配后扫描窗口的长度对当前类别的初始数据采用字典编码的方式进行压缩,获得初始数据的第一压缩结果。
本发明的实施例中,采用字典编码的方式对初始数据进行压缩,针对不同长度的数据匹配对应的扫描窗口的长度,通过调整后的扫描窗口长度对该类别的数据压缩,由于当前类别对应的扫描窗口的长度固定,减少了扫描过程中因重复变换扫描窗口导致小窗口出现次数,提升了每次获取扫描数据的速度,进而提高了压缩速度,而由于扫描窗口的增大,使得查询的扫描数据的长度以也随之增加,压缩的数据也增大,从而增加了压缩比。由于可以根据待压缩数据的长度调整扫描窗口的长度,使得扫描窗口适用于不同的类别,提高压缩的适应性。
本发明的第二实施方式涉及一种数据压缩的方法。第二实施方式是对第一实施方式的进一步改进,主要改进之处在于:本实施方式中根据任一条待压缩数据完成匹配时对应的扫描窗口的长度,确定当前类别匹配的扫描窗口的长度。其流程如图2所示:
步骤201:获取至少两个类别的初始数据,每类初始数据中各待压缩数据的长度均相同。
具体地,获取至少两个类别的初始数据,每一类初始数据中各待压缩数据的长度均相同。例如,航空机载数据的长度包括:1位、2位、3位、12位、16位、18位、20位以及24位等。每个位数即可为一类别,如长度为1位的数据划分为同一类别。可以理解的是,每类的初始数据中包括至少2条待压缩数据。
在实际应用中,该初始数据可以是航空数据,也可以是交通数据。航空数据通常产生以TB为单位的海量数据,数据量大,同时航空数据通常包括至少两类不同长度的初始数据。
本实施方式中步骤202至步骤207是对步骤101的详细说明。通过任一条待压缩数据的长度,自适应确定该当前类别匹配的扫描窗口的长度。其中,压缩比等于源文件的大小/压缩后的文件大小。
步骤202:从待压缩数据中获取位于前向缓存区的数据作为查询数据。
具体地,本实施例中采用字典编码的方式对初始数据进行压缩。字典编码方法是指以查字典的方式对数据进行编码。该字典编码的原理是将较长的字符串或经常出现的字母组合构成字典中的各个词条,并用相对较短的数字或符号代替该字典中的词条,从而实现对数据的压缩。字典编码的压缩效果与重复数据的出现、字典的大小有关。主要包括:LZ77算法、LZSS算法、LZ78算法、LZW算法等。
字典编码方式包括前向缓存区和扫描窗口,通过移动前向缓存区获取查询数据,通过扫描窗口获取编码库中的编码数据,其中,编码数据包括:各个字典数据以及与该字典数据对应的编码,该编码可以是字符、地址等。
对该待压缩数据进行编码,得到的编码结果作为该对待压缩数据压缩的第一压缩结果。前向缓存区的长度可以是预先设置的固定长度,如3位。为提高编码效率,通过不断移动前向缓存区获取每次待查询的查询数据,首次查询时将待压缩数据和前向缓存区对齐,获取该前向缓存区中的数据作为查询数据。例如,一条待压缩数据为“abcccdefgfe”,前向缓存区的长度为3bit,将待压缩数据和前向缓存区对齐,第一次获取的查询数据为“abc”,移动该前向缓存区,第二次获取的查询数据为“bcc”,不断移动该前向缓存区,直至读取了所有的该待压缩数据。
步骤203:从编码库中获取位于扫描窗口内的数据作为编码数据。
具体地,通过移动扫描窗口不断获取编码数据。编码数据包括:各个字典数据以及与该字典数据对应的编码,该编码可以是字符、地址等。在一个例子中,字典编码为:LZ4编码;将查询数据存储至编码库中,包括:将查询数据进行哈希处理,得到哈希值;将该哈希值以及该哈希值对应的地址存储在哈希表中。
该LZ4编码中以哈希表存储每个字典,即将字符进行哈希运算,存储哈希值和该哈希值的对应的地址。哈希表的映射关系中包含键和键对应的键值,该映射关系表示为key:value:键表示为以字符“key”表示,该key为4个字节的二进制;value为键值,该value用于指示key中4个字节在哈希表中的位置。可以根据存储器的大小选择合适的哈希表大小。哈希表中存储的数据为“位置”,分三种情况:若输入尺寸小于64位,则使用命令:byU16,该命令表示16位的偏移值。若输入尺寸大于64位且指针大小为8字节,则使用命令byU32,该命令表示32位的偏移量。若输入尺寸大于64位且指针大小为4字节,则使用命令byPtr,该命令表示32位的指针。可以采用整数哈希算法计算哈希值,2654435761U是2到2^32的黄金分割素数,2654435761/4294967296=0.618033987。利用乘法计算哈希值。将地址和哈希值存入哈希表中。
具体应用中可以通过调用命令“LZ4_putPosition”计算第一个字节开头的哈希值,并保存该哈希值以及该哈希值的地址,调用命令“LZ4_hashPosition”可以查询数据的哈希值,调用命令“LZ4_putPositionOnHash”保存哈希值与地址的对应关系。。
步骤204:判断编码数据中是否存在与查询数据匹配的数据,若不存在匹配的数据,则执行步骤205;否则,执行步骤206。
具体地,若该编码数据中存在与查询数据匹配的数据,则可以获取与查询数据匹配的数据在哈希表中的位置。若不存在,则执行步骤205。
步骤205:调整扫描窗口的长度,并将调整后的扫描窗口作为下一次获取编码数据的扫描窗口,直至待压缩数据完成匹配。
具体地,若不存在匹配的数据,表明本次未在该编码数据中找到匹配的数据。可以增大该扫描窗口的长度,将调整后的扫描窗口作为下一次获取编码数据的扫描窗口。例如,初始的扫描窗口的长度为预设的10位,首次匹配时哈希表中并没有存储数据,没有位于扫描窗口内的数据,即不存在匹配的编码数据,将下一获取编码数据的扫描窗口的长度调整为11位。
可以理解的是,可以按照固定的长度增加扫描窗口的长度,例如,每次增加的长度固定为2位,也可以按照任意值增加,例如,第一次扫描窗口的长度为10,第二次扫描窗口的长度为12位,第三次扫描窗口的长度为16位,第四次扫描窗口的长度位20位。
进一步地,若不存在匹配的数据,还可以将查询数据存储至编码库中;获取查询数据的存储地址,并将存储地址作为下一次获取编码数据的基准地址。
具体地,若编码库中以字典形式存储,可以将该查询数据直接存储至编码库,同时存储该查询数据的存储地址。若以哈希表的方式存储编码数据,可以将查询数据进行哈希处理,将哈希处理后的查询数据存储至哈希表中,同时存储该哈希值对应的存储地址。
可以将本次的存储地址作为下一次获取编码数据的基准地址,以该基准地址为起点,按照调整长度后的扫描窗口获取下一次的编码数据,即返回执行步骤202。
步骤206:记录匹配的编码数据的位置,并以当前的扫描窗口作为下一次获取编码数据的扫描窗口。
具体地,若存在匹配的编码数据,则获取该编码数据的位置。若下一次的查询数据为空,即数据匹配完成时,则执行步骤207。
步骤207:在待压缩数据完成匹配之后,根据待压缩数据完成匹配时对应的扫描窗口的长度,确定当前类别匹配的扫描窗口的长度。
具体地,判断待压缩数据完成匹配时对应的扫描窗口的长度是否超过预设长度,若超过预设长度,则以预设长度作为当前类别匹配的扫描窗口的长度,预设长度为处理器的位数。预设长度可以是当前电子设备中处理器的位数,例如,处理器为32位,则预设长度为32位。若待压缩数据完成匹配时对应的扫描窗口的长度为33位,则选取33位作为当前类被匹配的扫描窗口的长度。
需要说明的是,首次扫描待压缩数据之前,可以预先设置扫描窗口的默认长度,该默认长度可以是10位。
步骤208:按照匹配后扫描窗口的长度对当前类别的初始数据采用字典编码的方式进行压缩,获得初始数据的第一压缩结果。
具体地,对当前类别中剩余的待压缩数据按照确定的扫描窗口的长度进行编码,生成初始数据的第一压缩结果。
本实施实施例中,任选一条待压缩数据进行压缩,在压缩过程中不断扩大扫描窗口的长度,直至待压缩数据完成匹配;通过搜寻的方式调整扫描窗口的大小,使得该确定的扫描扫描窗口的长度与当前类别的初始数据匹配,提高了压缩速度。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明第三实施方式涉及一种数据压缩的方法。本实施方式是对上述实施方式的进一步改进,主要改进在于:在获得初始数据的第一压缩结果之后,采用有限状态熵编码方式对压缩输入数据进行编码,生成第二压缩结果。其流程如图3所示。
步骤301:获取至少两个类别的初始数据,每类初始数据中各待压缩数据的长度均相同。
步骤302:根据每类初始数据中任意一条待压缩数据,调整字典编码中扫描窗口的长度直至扫描窗口的长度与当前类别匹配。
该步骤302的具体实施过程与第二实施方式中步骤202至步骤207大致相同,此处不再赘述。
步骤303:按照匹配后扫描窗口的长度对当前类别的初始数据采用字典编码的方式进行压缩,获得初始数据的第一压缩结果。
该步骤与第二实施方式中的步骤208大致相同,此处不再赘述。
步骤304:将第一压缩结果作为压缩输入数据。
具体地,第一压缩结果包括字典位置的序列。将该第一结果作为第二次压缩的压缩输入数据。
步骤305:采用有限状态熵编码方式对压缩输入数据进行编码,生成第二压缩结果。
具体地,熵编码的原理是统计字符的出现频率来对字符本身重新编码,熵编码与原始数据的排列次序无关而与字符出现的频率有关,主要的压缩算法有Shanno-Fano编码、游程长度编码、哈夫曼编码和算术编码等。本实施方式种采用有限状态熵编码(FiniteState Entropy,FSE),该编码方式也属于熵编码。
下面具体介绍FSE编码方式:
对压缩输入数据进行统计,根据统计的数据可以构建压缩查询表,通过压缩查询表对压缩输入数据进行压缩。该压缩查询表如表1所示:
状态/行号 | A | B | C |
1 | 2 | 3 | 5 |
2 | 4 | 6 | 10 |
3 | 7 | 8 | 10 |
4 | 9 | 11 | 20 |
5 | 12 | 14 | 25 |
6 | 13 | 17 | 30 |
7 | 16 | 21 | |
8 | 18 | 22 | |
9 | 19 | 26 | |
10 | 23 | 28 | |
11 | 24 | ||
12 | 27 | ||
13 | 29 | ||
14 | 31 |
表1
表1中第一行为各个样式的字符,第一列表示行号,行号和字符共同对应的值表示状态值,其中,每个字符所占的行数由初始状态值和概率共同确定,概率表征了字符出现的次数,如表1所示,A占了14行,B占了10行。
通过函数统计该压缩输入数据中出现不同字符的个数、每个字符出现的次数以及字符出现最多的次数。字符出现最多的次数用于判断该压缩输入数据是否可以进行FSE压缩,可以将字符出现最多的次数与预设的判断阈值进行比较,若该字符出现最多的次数小于该判断阈值,则不进行FSE压缩,例如本示例中设置判断阈值为1,若字符出现最多的次数小于1,表明当前压缩输入数据中没有一个重复出现的字符,则不进行压缩。
本示例中可以先统计压缩输入数据中出现不同样式的字符个数,也可以称为字符最大值,通过判断字符最大值与预先设置的最大值进行比较,根据比较结果选取与该压缩输入数据匹配的hist函数统计每个样式的字符出现的次数,例如,若预先设置的最大值是255,若字符最大值不等于255,则通过执行“HIST_count_parallel_wksp函数”统计压缩输入数据中各样式字符出现的次数;若字符最大值等于255且压缩输入数据的数据量下于1500位,则通过执行“HIST_countFast_wksp”函数统计压缩输入数据中各样式字符出现的次数;若字符最大值等于255且压缩输入数据的数据量大于1500位,则通过执行“HIST_count_parallel_wksp”函数统计压缩输入数据中各样式字符出现的次数。其中,“HIST_count_wksp”函数是通过四个中间数据统计出各样式符号出现的次数。
各样式符号出现的次数和压缩输入数据可以确定压缩查询表的大小。根据压缩输入数据的大小可以确定压缩查询表的最大值。将压缩输入数据与该字符最大值进行比较,可以确定压缩查询表的最大值,该压缩查询表的大小处于压缩查询表最小值与压缩查询表的最大值之间即可。进一步地,可以预先设置默认的压缩查询表的最大值为FSE_DEFAULT_TABLELOG,压缩输入数据的大小确定的压缩查询表的最大值为maxBitsSrc,若maxBitsSrc小于FSE_DEFAULT_TABLELOG,将默认的压缩查询表的最大值FSE_DEFAULT_TABLELOG更改为maxBitsSrc。
根据确定的压缩查询表的大小,为该压缩查询表分配对应的内存。通过字符最大值和各样式字符出现的次数最大值,执行FSE_optimalTableLog函数找到最优的行号(记为tablelog),即每各样式字符的最大行号。执行FSE_normalizeCount函数,对字符数组进行标准化处理形成进形成normalizedCounter,再执行FSE_writeNCount函数,将标准化处理后的数组写入normalizedCounter缓冲区。
执行FSE_buildCTable_wksp函数建立压缩查询表,再执行FSE_compress_usingCTable使用查询表进行压缩。FSE压缩的过程为:读取压缩输入数据中第一个字符和初始状态值,找找到该字符所在的行号,通过移位使状态值小于行号,并将移位结果以二进制的形式输出,将状态值移位后得到的状态值作为下一个状态值,在将状态值和下一个符号进行下一次查找,直至压缩输入数据全部查找完毕,将最后的状态值输出至二进制流中,生成的二进制流作为第二压缩结果,该第二压缩结果包括:每次查找移位的二进制流、最后得到的状态值的二进制以及该压缩查询表所占的二进制位数。
通过FSE压缩方式对第一压缩结果进行二次压缩,进一步提高了压缩比。下面为本实例中数据压缩方法与其它压缩算法的效果比较。
在实际应用中,运行环境可以为“Core i5 CPU 2.40MHz;8GB内存,MacOS 10.15.7操作***”。可以预先构建测试数据集,数据包括:Electricity consumption、TrafficUsage、SolarEnergy以及Exchange Rate等。Electricity consumption数据为记录的从2011年至2014年每15分钟记录的用电量,单位为kWh。本示例中获得到的数据包含了321个客户从2012年到2014年的用电消费。我们将数据转换为每小时的消耗量。Traffic Usage数据收集了加州交通部48个月(2015-2016年)的每小时数据。这些数据描述了旧金山湾区高速公路上不同传感器测量的道路占用率(0到1之间)。Solar Energy包含了2006年的太阳能生产记录,每10分钟采集一次阿拉巴马州137家光伏电站的数据。Exchange Rate收集1990年至2016年澳大利亚、英国、加拿大、瑞士、中国、日本、新西兰、新加坡等8个国家的日汇率。压缩性能如表2所示,压缩数据所耗时间如表3所示,其中,SA-LZFSE表示本实例中叠加FSE编码的压缩方式:
表2
表3
从表1中可以看出,SA-LZFSE比单编码模式具有更好的压缩效果。由于字典编码对冗余信息进行压缩,熵编码将字典编码后的信息进一步压缩得到较好的压缩比,使得该算法在GB以及TB上会拥有特别优秀的效果。
本发明第四实施方式涉及一种数据压缩的方法。本实施例与第三实施例大致相同,主要区别在于:本实施例中获取原始数据,对原始数据进行FSE压缩,得到第二压缩结果,将第二压缩结果作为字典编码的初始数据。其流程如图4所示:
步骤401:获取原始数据作为压缩输入数据。
具体地,原始数据可以包括:航空数据或交通数据。
步骤402:采用有限状态熵编码方式对压缩输入数据进行编码,生成第二压缩结果。
该步骤与第三实施方式中的步骤305大致相同,此处将不再赘述。
步骤403:将第二压缩结果作为初始数据。
具体地,第二压缩结果为二进制流。若原始数据中包括多个不同长度的数据,该步骤403将得到多个初始数据。
步骤404:获取至少两个类别的初始数据,每类初始数据中各待压缩数据的长度均相同。
步骤405:根据每类初始数据中任意一条待压缩数据,调整字典编码中扫描窗口的长度直至扫描窗口的长度与当前类别匹配。
步骤406:按照匹配后扫描窗口的长度对当前类别的所述初始数据采用字典编码的方式进行压缩,获得初始数据的第一压缩结果。
本实施方式中先通过FSE编码方式对原始数据进行压缩,得到第二压缩结果作为初始数据,对初始数据进行字典编码的方式再次进行压缩,进一步提高了压缩比和压缩速度。
本发明第五实施方式涉及一种电子设备,该电子设备的结构框图如5所示,包括:至少一个处理器501;以及,与至少一个处理器501通信连接的存储器;其中,存储器502存储有可被至少一个处理器501执行的指令,指令被至少一个处理器501执行,以使至少一个处理器能够执行上述的数据压缩的方法。
其中,存储器502和处理器501采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器501和存储器502电路链接在一起。总线还可以将诸如***设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器501处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器502。
处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,***接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
本发明第六实施方式涉及一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述的数据压缩的方法。
本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (9)
1.一种数据压缩的方法,其特征在于,包括:
获取至少两个类别的初始数据,每类所述初始数据中各待压缩数据的长度均相同;
根据每类所述初始数据中任意一条待压缩数据,调整字典编码中扫描窗口的长度直至所述扫描窗口的长度与当前类别匹配;
按照匹配后扫描窗口的长度对当前类别的所述初始数据采用所述字典编码的方式进行压缩,获得所述初始数据的第一压缩结果;
其中,所述根据每类所述初始数据中任意一条待压缩数据,调整字典编码中扫描窗口的长度直至所述扫描窗口的长度与当前类别匹配,包括:
从所述待压缩数据中获取位于前向缓存区的数据作为查询数据;
从编码库中获取位于扫描窗口内的数据作为编码数据;
判断编码数据中是否存在与所述查询数据匹配的数据,若不存在匹配的数据,则调整所述扫描窗口的长度,并将调整后的扫描窗口作为下一次获取编码数据的扫描窗口,直至所述待压缩数据完成匹配;若存在匹配的数据,则记录匹配的编码数据的位置,并以当前的扫描窗口作为下一次获取编码数据的扫描窗口;
在所述待压缩数据完成匹配之后,根据所述待压缩数据完成匹配时对应的所述扫描窗口的长度,确定当前类别匹配的扫描窗口的长度。
2.根据权利要求1所述的数据压缩的方法,其特征在于,在所述按照匹配后扫描窗口的长度对当前类别的所述初始数据采用所述字典编码的方式进行压缩,获得所述初始数据的第一压缩结果之后,所述方法还包括:
将所述第一压缩结果作为压缩输入数据;
采用有限状态熵编码方式对所述压缩输入数据进行编码,生成第二压缩结果。
3.根据权利要求1所述的数据压缩的方法,其特征在于,在所述获取至少两个类别的初始数据之前,所述方法还包括:
获取原始数据作为压缩输入数据;
采用有限状态熵编码方式对所述压缩输入数据进行编码,生成第二压缩结果;
将所述第二压缩结果作为所述初始数据。
4.根据权利要求1所述的数据压缩的方法,其特征在于,若不存在匹配的数据,所述方法还包括:
将所述查询数据存储至所述编码库中;
获取所述查询数据的存储地址,并将所述存储地址作为下一次获取编码数据的基准地址。
5.根据权利要求4所述的数据压缩的方法,其特征在于,所述根据所述待压缩数据完成匹配时对应的所述扫描窗口的长度,确定当前类别匹配的扫描窗口的长度,包括:
判断所述待压缩数据完成匹配时对应的所述扫描窗口的长度是否超过预设长度,若超过预设长度,则以预设长度作为当前类别匹配的扫描窗口的长度,所述预设长度为处理器的位数。
6.根据权利要求4所述的数据压缩的方法,其特征在于,所述字典编码为:LZ4编码;所述将所述查询数据存储至所述编码库中,包括:
将所述查询数据进行哈希处理,得到哈希值;
将所述哈希值以及所述哈希值对应的地址存储在哈希表中。
7.根据权利要求1所述的数据压缩的方法,其特征在于,所述初始数据包括:航空数据或交通数据。
8.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至7任一所述的数据压缩的方法。
9.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的数据压缩的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110309332.8A CN112953550B (zh) | 2021-03-23 | 2021-03-23 | 数据压缩的方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110309332.8A CN112953550B (zh) | 2021-03-23 | 2021-03-23 | 数据压缩的方法、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112953550A CN112953550A (zh) | 2021-06-11 |
CN112953550B true CN112953550B (zh) | 2023-01-31 |
Family
ID=76227984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110309332.8A Active CN112953550B (zh) | 2021-03-23 | 2021-03-23 | 数据压缩的方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112953550B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113572479B (zh) * | 2021-09-22 | 2021-12-21 | 苏州浪潮智能科技有限公司 | 一种有限状态熵编码表的生成方法及*** |
CN115988569B (zh) * | 2023-03-21 | 2023-06-30 | 浙江省疾病预防控制中心 | 一种蓝牙设备数据快速传输方法 |
CN116582133B (zh) * | 2023-07-12 | 2024-02-23 | 东莞市联睿光电科技有限公司 | 一种变压器生产过程数据智能管理*** |
CN116933734B (zh) * | 2023-09-15 | 2023-12-19 | 山东济矿鲁能煤电股份有限公司阳城煤矿 | 盾构机刀具故障智能诊断方法 |
CN116938256B (zh) * | 2023-09-18 | 2023-11-28 | 苏州科尔珀恩机械科技有限公司 | 基于大数据的回转炉运行参数智能管理方法 |
CN116980457B (zh) * | 2023-09-21 | 2023-12-08 | 江苏赛融科技股份有限公司 | 一种基于物联网的远程控制*** |
CN117273764B (zh) * | 2023-11-21 | 2024-03-08 | 威泰普科技(深圳)有限公司 | 一种电子雾化器防伪管理方法及*** |
CN117579078B (zh) * | 2024-01-11 | 2024-04-12 | 央视国际网络有限公司 | 数据编码方法、数据解码方法、装置及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014030189A1 (ja) * | 2012-08-23 | 2014-02-27 | 富士通株式会社 | 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム |
CN103236847B (zh) * | 2013-05-06 | 2016-04-27 | 西安电子科技大学 | 基于多层哈希结构与游程编码的数据无损压缩方法 |
CN105207678B (zh) * | 2015-09-29 | 2018-10-26 | 东南大学 | 一种改进型lz4压缩算法的硬件实现*** |
US20190377804A1 (en) * | 2018-06-06 | 2019-12-12 | Yingquan Wu | Data compression algorithm |
CN110868222B (zh) * | 2019-11-29 | 2023-12-15 | 中国人民解放军战略支援部队信息工程大学 | Lzss压缩数据误码检测方法及装置 |
CN112527754A (zh) * | 2020-12-23 | 2021-03-19 | 山东鲁能软件技术有限公司 | 基于按位变长存储的数值型数据压缩方法及*** |
-
2021
- 2021-03-23 CN CN202110309332.8A patent/CN112953550B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112953550A (zh) | 2021-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112953550B (zh) | 数据压缩的方法、电子设备及存储介质 | |
US8704685B2 (en) | Encoding method, encoding apparatus, decoding method, decoding apparatus, and system | |
Williams et al. | Compressing integers for fast file access | |
US10116325B2 (en) | Data compression/decompression device | |
US10268380B2 (en) | Methods, devices and systems for semantic-value data compression and decompression | |
US20120262314A1 (en) | System and Method of Compression and Decompression | |
CN107682016B (zh) | 一种数据压缩方法、数据解压方法及相关*** | |
CN102143039B (zh) | 数据压缩中数据分段方法及设备 | |
US20120130965A1 (en) | Data compression method | |
JPH07283739A (ja) | 短ブロックのデータを圧縮、伸長するための方法、及び装置 | |
US20200294629A1 (en) | Gene sequencing data compression method and decompression method, system and computer-readable medium | |
CN106202213B (zh) | 一种fpga二进制文件压缩、解压方法及压缩、解压装置 | |
US9900025B2 (en) | Efficient adaptive seismic data flow lossless compression and decompression method | |
CN101667843B (zh) | 嵌入式***的数据压缩、及解压缩方法与装置 | |
US20160233880A1 (en) | Data compression apparatus and data decompression apparatus | |
US20200185058A1 (en) | Gene sequencing data compression preprocessing, compression and decompression method, system, and computer-readable medium | |
CN101534124B (zh) | 一种用于短小自然语言的压缩算法 | |
CA2770348A1 (en) | Compression of bitmaps and values | |
CN113312325B (zh) | 轨迹数据传输方法、装置、设备及存储介质 | |
CN113078908B (zh) | 一种适用于时间序列数据库的简易编解码方法 | |
CN108880559B (zh) | 数据压缩方法、数据解压缩方法、压缩设备及解压缩设备 | |
CN116707532A (zh) | 一种压缩文本的解压方法、装置、存储介质及电子设备 | |
CN114466082B (zh) | 数据压缩、数据解压方法、***及人工智能ai芯片 | |
CN111832257B (zh) | 编码数据的条件转码 | |
CN111858391A (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 |