CN109947776B - 一种数据压缩、解压方法及装置 - Google Patents

一种数据压缩、解压方法及装置 Download PDF

Info

Publication number
CN109947776B
CN109947776B CN201910196114.0A CN201910196114A CN109947776B CN 109947776 B CN109947776 B CN 109947776B CN 201910196114 A CN201910196114 A CN 201910196114A CN 109947776 B CN109947776 B CN 109947776B
Authority
CN
China
Prior art keywords
data
data blocks
hash
data block
hash table
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
Application number
CN201910196114.0A
Other languages
English (en)
Other versions
CN109947776A (zh
Inventor
郭磊
黄何
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hengyang Huolian Technology Co ltd
Original Assignee
Hainan Fire Chain Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hainan Fire Chain Technology Co ltd filed Critical Hainan Fire Chain Technology Co ltd
Priority to CN201910196114.0A priority Critical patent/CN109947776B/zh
Publication of CN109947776A publication Critical patent/CN109947776A/zh
Application granted granted Critical
Publication of CN109947776B publication Critical patent/CN109947776B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本申请公开了一种数据压缩、解压方法及装置,在数据压缩方法中,通过对第一数据数据分割得到若干数据块,对数据块压缩得到压缩后数据和标记位,同时对数据块转化后做hash操作最终得到hashtable。在数据解压的方法中,对压缩后数据解压的同时,对数据块进行校验。这样在平衡速度与压缩率的同时,通过数据块与hashtable中hash值进行对比,确认最后数据的准确无误,实现数据的完整性与不可篡改性。

Description

一种数据压缩、解压方法及装置
技术领域
本申请涉及数据处理领域,尤其涉及一种数据压缩、解压方法及装置。
背景技术
区块链的概念早已深入人心,其本质是一个去中心化的交易支付系统。在区块链中,存储数据的数据库是重要的组成部分。而随着时间的积累,用户在区块链上持续不断的交易必将导致数据量的不断增大。
一般来说,采用两种方法来处理数据量暴涨的问题,一种是增加公司硬盘的容量,另一种租赁云服务器。然而,不管采用哪种方法都将带来成本的持续增加,所以要想从根本上解决该问题,需要优化数据压缩和解压算法。
目前,最常用的数据压缩算法主要有GZIP,LZO和Snappy算法。三者比较而言,GZIP算法的优势在于其压缩率是三者中最高的,但是由于压缩算法是压缩密集型的,所面临的问题是对消耗CPU极大,随之而来的就是压缩和解压速度比较缓慢。LZO算法的压缩和解压速度比GZIP算法快很多,但是其压缩率比GZIP算法要低一些,Snappy算法的压缩和解压速度是三者中最快的但同时压缩率又是三者中最低的。综上所述,以上三种算法均有较大的缺陷。
所以,如何能快速的对数据进行压缩和解压成为本领域技术人员亟待解决的问题。
发明内容
本申请提供了一种数据压缩、解压方法及装置,以解决现有技术中不能对数据快速的压缩和解压的问题。
第一方面,本申请提供一种数据压缩方法,所述方法包括:
获取第一输入数据,分割成预设规格的所述第一输入数据,得到若干数据块;
将每个所述数据块压缩,得到若干压缩后数据和标记位,同时对每个所述数据块进行unit64转化后做hash操作,得到hash值和对应的偏移量;
将所述hash值和对应的偏移量存入hashtable中,并在所述hashtable中的最后一行对所有所述数据块对应的hash值进行拼接。
结合第一方面,在第一方面的第一种可实现方式中,所述将每个数据块进行压缩,得到压缩后的数据和标记位采用的方法为霍夫曼编码方法。
结合第一方面,在第一方面的第二种可实现方式中,所述在hashtable中的最后一行对所有所述数据块对应的hash值进行拼接的方法包括:
对所有所述数据块对应的hash值进行hash操作,偏移量设置为-1。
第二方面,本申请提供一种数据解压方法,所述方法包括:
获取第二输入数据,所述第二输入数据包括若干压缩后数据、标记位和hashtable;
获取一个压缩后数据,根据所述标记位,将所述压缩后数据还原,得到数据块;
统计数据块的数量;
判断所述数据块的数量是否大于预设数据块数量;
如果所述数据块的数量不大于预设数据块数量,则获取下一个压缩后数据,重复执行根据标记位,将所述压缩后数据还原,得到数据块的步骤;
如果所述数据块的数量大于预设数据块数量,则将按照还原顺序得到的所述数据块,与在所述hashtable中的hash值比较,判断hashtable中是否存在与所述数据块对应的hash值;
如果存在与所述数据块对应的hash值,则将所述数据块写入内存,统计所述内存中数据块的数量,判断所述内存中数据块的数量是否等于所述hashtable中的hash值的数量;
如果所述内存中数据块的数量不等于所述hashtable中的hash值的数量,则获取下一个数据块,重复执行hashtable中是否存在与所述数据块对应的hash值的步骤;
如果所述内存中数据块的数量等于所述hashtable中的hash值的数量,则判断所述内存中数据块是否和hashtable中最后一行的所有hash值拼接得到的拼接内容相匹配;
如果与拼接内容相匹配,则解压成功,将所述内存中的数据块返回。
结合第二方面,在第二方面的第一种可实现方式中,所述方法还包括:如果不存在与所述数据块对应的hash值,则返回所述数据块对应的偏移量,并将与所述数据块放入第一进程,判断是否存在与所述数据块对应的hashtable中的hash值;
如果存在与所述数据块对应的hashtable中的hash值,则根据偏移量,将所述数据块写入内存。
结合第二方面的第二种可实现方式,在第二方面的第三种可实现方式中,所述方法还包括:
如果不存在与所述数据块对应的hashtable中的hash值,则统计重新匹配次数,判断重新匹配次数是否大于预设重新匹配次数;
如果大于预设重新匹配次数,则解压失败;
如果不大于预设重新匹配次数,则重复执行判断是否存在与所述数据块对应的hashtable中的hash值的步骤。
结合第二方面,在第二方面的第四种可实现方式中,所述方法还包括:判断所述数据块的数据大小是否等于预设规格;如果不等于预设规格,则解压失败。
第三方面,本申请提供一种数据压缩装置,所述装置包括:
第一获取单元,用于获取第一输入数据,分割成预设规格的所述第一输入数据,得到若干数据块;
压缩单元,用于将每个所述数据块压缩,得到若干压缩后数据和标记位,同时对每个所述数据块进行unit64转化后做hash操作,得到hash值和对应的偏移量;
存入单元,用于将所述hash值和对应的偏移量存入hashtable中,并在所述hashtable中的最后一行对所有所述数据块对应的hash值进行拼接。
第四方面,本申请提供一种数据解压装置,所述装置包括:
第二获取单元,用于获取第二输入数据,所述第二输入数据包括若干压缩后数据、标记位和hashtable;
第三获取单元,用于获取一个压缩后数据,根据所述标记位,将所述压缩后数据还原,得到数据块;
第一统计单元,用于统计数据块的数量;
第一判断单元,用于判断所述数据块的数量是否大于预设数据块数量;
第四获取单元,用于如果所述数据块的数量不大于预设数据块数量,则获取下一个压缩后数据,重复执行根据标记位,将所述压缩后数据还原,得到数据块的步骤;
第二判断单元,用于如果所述数据块的数量大于预设数据块数量,则将按照还原顺序得到的所述数据块,与在所述hashtable中的hash值比较,判断hashtable中是否存在与所述数据块对应的hash值;
第二统计单元,用于如果存在与所述数据块对应的hash值,则将所述数据块写入内存,统计所述内存中数据块的数量,判断所述内存中数据块的数量是否等于所述hashtable中的hash值的数量;
第五获取单元,用于如果所述内存中数据块的数量不等于所述hashtable中的hash值的数量,则获取下一个数据块,重复执行hashtable中是否存在与所述数据块对应的hash值的步骤;
第三判断单元,用于如果所述内存中数据块的数量等于所述hashtable中的hash值的数量,则判断所述内存中数据块是否和hashtable中最后一行的所有hash值拼接得到的拼接内容相匹配;
返回单元,用于如果与拼接内容相匹配,则解压成功,将所述内存中的数据块返回。
由以上技术方案可知,本申请的一种数据压缩、解压方法及装置,在数据压缩方法中,通过对第一数据数据分割得到若干数据块,对数据块压缩得到压缩后数据和标记位,同时对数据块转化后做hash操作最终得到hashtable。在数据解压的方法中,对压缩后数据解压的同时,对数据块进行校验。这样在平衡速度与压缩率的同时,通过数据块与hashtable中hash值进行对比,确认最后数据的准确无误,实现数据的完整性与不可篡改性。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种数据压缩方法第一实施例的流程图;
图2为本申请提供的一种数据解压方法第一实施例的流程图;
图3为本申请提供的一种数据解压方法第二实施例的流程图;
图4为本申请提供的一种数据解压方法第三实施例的流程图;
图5为本申请提供的一种数据压缩装置的结构示意图;
图6为本申请提供的一种数据解压装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。以下结合附图,详细说明本申请各实施例提供的技术方案。
现有技术中,最常用的数据压缩算法主要有GZIP,LZO和Snappy算法,但是三者均有较大的缺陷,均不能具有高压缩率的同时,具有较快的压缩和解压数据。
请参阅图1,为本申请提供的一种数据压缩方法第一实施例的流程图,所述方法包括:
步骤S101、获取第一输入数据,分割成预设规格的所述第一输入数据,得到若干数据块;
需要说明的是,本申请实施例将所述第一输入数据分块,这样比直接对整体的第一输入数据进行压缩的方法效率更高,缩短了压缩时间。
另外,本申请实施例中的预设规格可以为64k。
步骤S102、将每个所述数据块压缩,得到若干压缩后数据和标记位,同时对每个所述数据块进行unit64转化后做hash操作,得到hash值和对应的偏移量;
步骤S103、将所述hash值和对应的偏移量存入hashtable(中文:hash表)中,并在所述hashtable中的最后一行对所有所述数据块对应的hash值进行拼接。
具体的,所述数据块逐个字节向后压缩,得到压缩后数据和标记位。同时,每个数据块先进行unit64转化后做hash操作,随后每个数据块均得到对应的hash值和偏移量,将hash值和偏移量存入hashtable。在对压缩后数据解压的过程中对解压得到的数据块需要与hashtable中的hash值比较,这样可以保证解压得到的数据块与压缩前的数据块相同,实现数据校验的目的。另外,在hashtable中的最后一行对所有数据块对应的hash值拼接,可以在解压的过程中验证数据是否被篡改。
由以上实施例可知,本申请的一种数据压缩方法第一实施例,所述方法包括:步骤S101、获取第一输入数据,分割成预设规格的所述第一输入数据,得到若干数据块;步骤S102、将每个所述数据块压缩,得到若干压缩后数据和标记位,同时对每个所述数据块进行unit64转化后做hash操作,得到hash值和对应的偏移量;步骤S103、将所述hash值和对应的偏移量存入hashtable中,并在所述hashtable中的最后一行对所有所述数据块对应的hash值进行拼接。本申请实施例中hashtable中存有若干hash值和偏移量,同时在hashtable中的最后一行对所有hash值拼接,可以方便在解压时对数据的验证。
本申请提供的一种数据压缩方法第二实施例,所述将每个数据块进行压缩,得到压缩后的数据和标记位采用的方法为霍夫曼编码方法。
霍夫曼编码,又称哈夫曼编码,是一种编码方式,霍夫曼编码是可变字长编码(VLC)的一种。该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码。
本申请提供的一种数据压缩方法第三实施例,所述在hashtable中的最后一行对所有所述数据块对应的hash值进行拼接的方法包括:
对所有所述数据块对应的hash值进行hash操作,偏移量设置为-1。
具体的,本申请实施例在hashtable中的最后一行对所有hash值拼接,使用的拼接方法为对所有hash值进行hash操作,并将偏移量设置为-1,拼接后得到的内容可以便于对解压后得到的数据块进行验证,确认数据块是否被篡改。
由以上实施例可知,本申请的一种数据压缩方法第三实施例,所述在hashtable中的最后一行对所有所述数据块对应的hash值进行拼接的方法包括:对所有所述数据块对应的hash值进行hash操作,偏移量设置为-1。拼接后的内容可以验证数据块内容是否被篡改,可以提高解压的准确性。
参阅图2,为本申请提供的一种数据解压方法第一实施例的流程图,所述方法包括:
步骤S104、获取第二输入数据,所述第二输入数据包括若干压缩后数据、标记位和hashtable;
步骤S105、获取一个压缩后数据,根据所述标记位,将所述压缩后数据还原,得到数据块;
步骤S106、统计数据块的数量;
步骤S107、判断所述数据块的数量是否大于预设数据块数量;
步骤S108、如果所述数据块的数量不大于预设数据块数量,则获取下一个压缩后数据,重复执行根据标记位,将所述压缩后数据还原,得到数据块的步骤;
步骤S109、如果所述数据块的数量大于预设数据块数量,则将按照还原顺序得到的所述数据块,与在所述hashtable中的hash值比较,判断hashtable中是否存在与所述数据块对应的hash值;
具体的,解压时利用标记位,将压缩后数据还原。本申请实施例,为了保证鲁棒性,在恢复了预设数据块数量后,对数据块进行校验。本申请中,所述预设数据块数量可以为3个。校验时获取按照标记位还原顺序得到的首个数据块,判断hashtable中是否存在与校验的数据块对应的hash值。本申请实施例中的数据块在压缩后得到的压缩后数据即为hash值,所以在判断数据块是否与hashtable中hash值对应时,直接比较数据块对应的压缩后数据与hashtable中的hash值即可。
步骤S110、如果存在与所述数据块对应的hash值,则将所述数据块写入内存,统计所述内存中数据块的数量,判断所述内存中数据块的数量是否等于所述hashtable中的hash值的数量;
步骤S111、如果所述内存中数据块的数量不等于所述hashtable中的hash值的数量,则获取下一个数据块,重复执行hashtable中是否存在与所述数据块对应的hash值的步骤;
步骤S112、如果所述内存中数据块的数量等于所述hashtable中的hash值的数量,则判断所述内存中数据块是否和hashtable中最后一行的所有hash值拼接得到的拼接内容相匹配;
具体的,本申请实施例按照标记位还原顺序,获取下一个数据块,然后重复执行hashtable中是否存在与所述数据块对应的hash值的步骤,如果内存中数据块的数量等于hashtable中的hash值的数量,也就是将所有数据块全部执行过hashtable中是否存在与所述数据块对应的hash值的步骤,此时,将内存中数据块与hashtable中最后一行的拼接内容相匹配。
步骤S113、如果与拼接内容相匹配,则解压成功,将所述内存中的数据块返回。
需要说明的是,在所有数据块全部与hashtable中的hash值比较后,且全部比较成功,则数据块均转入内存中,此时,再次将内存中全部数据块对应的hash值与hashtable中最后一行的所有hash值拼接得到的拼接内容相匹配,如果内存中数据块对应的hash值与拼接内容匹配成功,说明数据块内容没有被篡改,数据是安全的。
本申请实施例整体采用流水线技术,在将压缩后数据还原的同时,完成数据块的校验,实现多条指令并行处理,极大的加快了解压的速度。
由以上实施例可知,本申请的一种数据解压方法第一实施例,将压缩后数据还原,得到数据块后,对数据块进行校验,首先通过数据块与所述hashtable中的hash值比较,如果数据块全部校验成功,将数据块转入内存。随后将内存中的数据块与hashtable中的最后一行的所有hash值拼接得到的拼接内容匹配,如果匹配成功,则解压成功。本申请实施例在对压缩后数据解压的同时,完成校验工作,这样提高了数据解压的准确率和安全性。
请参阅图3,为本申请提供的一种数据解压方法第二实施例的流程图,所述方法还包括:
步骤S114、如果不存在与所述数据块对应的hash值,则返回所述数据块对应的偏移量,并将与所述数据块放入第一进程,判断是否存在与所述数据块对应的hashtable中的hash值;
步骤S115、如果存在与所述数据块对应的hashtable中的hash值,则根据偏移量,将所述数据块写入内存。
具体的,步骤S109中判断hashtable中是否存在与所述数据块对应的hash值,如果不存在于所述数据块对应的hash值,则返回所述数据块对应的偏移量,并将数据块放入第一进程中,继续判断是否存在与数据块对应的hashtable中的hash值,如果存在与数据块对应的hashtable中的hash值,则根据偏移量,将所述数据块写入内存。
参阅图4,为本申请提供的一种数据解压方法第三实施例的流程图,所述方法还包括:
步骤S116、如果不存在与所述数据块对应的hashtable中的hash值,则统计重新匹配次数,判断重新匹配次数是否大于预设重新匹配次数;
步骤S117、如果大于预设重新匹配次数,则解压失败;
步骤S118、如果不大于预设重新匹配次数,则重复执行判断是否存在与所述数据块对应的hashtable中的hash值的步骤。
具体的,判断第一进程中的数据块是否存在与所述数据块对应的hashtable中的hash值时,不存在与所述数据块对应的hashtable中hash值,还可以持续的判断是否存在与数据块对应的hashtable中的hash值,如果多次判断后,还未找到对应的hash值,则解压失败。
本申请提供的一种数据解压方法第四实施例,所述方法还包括:判断所述数据块的数据大小是否等于预设规格;
如果不等于预设规格,则解压失败。
需要说明的是,由于压缩时是按照预设规格压缩的,如果将压缩后数据解压后得到的数据块不等于预设规格,则说明解压失败。
参阅图5,为本申请提供的一种数据压缩装置的结构示意图,所述装置包括:
第一获取单元101,用于获取第一输入数据,分割成预设规格的所述第一输入数据,得到若干数据块;
压缩单元102,用于将每个所述数据块压缩,得到若干压缩后数据和标记位,同时对每个所述数据块进行unit64转化后做hash操作,得到hash值和对应的偏移量;
存入单元103,用于将所述hash值和对应的偏移量存入hashtable中,并在所述hashtable中的最后一行对所有所述数据块对应的hash值进行拼接。
在本申请提供的一种数据压缩装置的另一实施例中,所述将每个数据块进行压缩,得到压缩后的数据和标记位采用的方法为霍夫曼编码方法。
在本申请提供的一种数据压缩装置的另一实施例中,所述存入单元包括:用于对所有所述数据块对应的hash值进行hash操作,偏移量设置为-1。
参阅图6,为本申请提供的一种数据解压装置的结构示意图,所述装置包括:
第二获取单元104,用于获取第二输入数据,所述第二输入数据包括若干压缩后数据、标记位和hashtable;
第三获取单元105,用于获取一个压缩后数据,根据所述标记位,将所述压缩后数据还原,得到数据块;
第一统计单元106,用于统计数据块的数量;
第一判断单元107,用于判断所述数据块的数量是否大于预设数据块数量;
第四获取单元108,用于如果所述数据块的数量不大于预设数据块数量,则获取下一个压缩后数据,重复执行根据标记位,将所述压缩后数据还原,得到数据块的步骤;
第二判断单元109,用于如果所述数据块的数量大于预设数据块数量,则将按照还原顺序得到的所述数据块,与在所述hashtable中的hash值比较,判断hashtable中是否存在与所述数据块对应的hash值;
第二统计单元110,用于如果存在与所述数据块对应的hash值,则将所述数据块写入内存,统计所述内存中数据块的数量,判断所述内存中数据块的数量是否等于所述hashtable中的hash值的数量;
第五获取单元111,用于如果所述内存中数据块的数量不等于所述hashtable中的hash值的数量,则获取下一个数据块,重复执行hashtable中是否存在与所述数据块对应的hash值的步骤;
第三判断单元112,用于如果所述内存中数据块的数量等于所述hashtable中的hash值的数量,则判断所述内存中数据块是否和hashtable中最后一行的所有hash值拼接得到的拼接内容相匹配;
返回单元113,用于如果与拼接内容相匹配,则解压成功,将所述内存中的数据块返回。
在本申请提供的一种数据解压装置的另一实施例中,所述装置还包括:第四判断单元,用于如果不存在与所述数据块对应的hash值,则返回所述数据块对应的偏移量,并将与所述数据块放入第一进程,判断是否存在与所述数据块对应的hashtable中的hash值;如果存在与所述数据块对应的hashtable中的hash值,则根据偏移量,将所述数据块写入内存。
在本申请提供的一种数据解压装置的另一实施例中,所述装置还包括:第三统计单元,用于如果不存在与所述数据块对应的hashtable中的hash值,则统计重新匹配次数,判断重新匹配次数是否大于预设重新匹配次数;如果大于预设重新匹配次数,则解压失败;如果不大于预设重新匹配次数,则重复执行判断是否存在与所述数据块对应的hashtable中的hash值的步骤。
在本申请提供的一种数据解压装置的另一实施例中,所述装置还包括:第五判断单元,用于判断所述数据块的数据大小是否等于预设规格;如果不等于预设规格,则解压失败。
在本申请提供的一种数据解压装置的另一实施例中,所述装置还包括:解压单元,用于如果与拼接内容不匹配,则解压失败。
具体实现中,本申请还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的数据压缩和解压的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:Read-Only Memory,简称:ROM)或随机存储记忆体(英文:Random Access Memory,简称:RAM)等。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于用于身份认证的安全网络中间件及其实现方法和装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
以上所述的本申请实施方式并不构成对本申请保护范围的限定。

Claims (9)

1.一种数据压缩方法,其特征在于,所述方法包括:
获取第一输入数据,分割成预设规格的所述第一输入数据,得到若干数据块;
将每个所述数据块压缩,得到若干压缩后数据和标记位,同时对每个所述数据块进行unit64转化后做hash操作,得到hash值和对应的偏移量;
将所述hash值和对应的偏移量存入hashtable中,并在所述hashtable中的最后一行对所有所述数据块对应的hash值进行拼接,得到拼接数据;
所述拼接数据通过数据解压方法解压,所述数据解压方法包括:
获取第二输入数据,所述第二输入数据包括若干压缩后数据、标记位和hashtable;
获取一个压缩后数据,根据所述标记位,将所述压缩后数据还原,得到数据块;
统计数据块的数量;
判断所述数据块的数量是否大于预设数据块数量;
如果所述数据块的数量不大于预设数据块数量,则获取下一个压缩后数据,重复执行根据标记位,将所述压缩后数据还原,得到数据块的步骤;
如果所述数据块的数量大于预设数据块数量,则将按照还原顺序得到的所述数据块,与在所述hashtable中的hash值比较,判断hashtable中是否存在与所述数据块对应的hash值;
如果存在与所述数据块对应的hash值,则将所述数据块写入内存,统计所述内存中数据块的数量,判断所述内存中数据块的数量是否等于所述hashtable中的hash值的数量;
如果所述内存中数据块的数量不等于所述hashtable中的hash值的数量,则获取下一个数据块,重复执行hashtable中是否存在与所述数据块对应的hash值的步骤;
如果所述内存中数据块的数量等于所述hashtable中的hash值的数量,则判断所述内存中数据块是否和hashtable中最后一行的所有hash值拼接得到的拼接内容相匹配;
如果与拼接内容相匹配,则解压成功,将所述内存中的数据块返回。
2.根据权利要求1所述的一种数据压缩方法,其特征在于,所述将每个数据块进行压缩,得到压缩后的数据和标记位采用的方法为霍夫曼编码方法。
3.根据权利要求1所述的一种数据压缩方法,其特征在于,所述在hashtable中的最后一行对所有所述数据块对应的hash值进行拼接的方法包括:
对所有所述数据块对应的hash值进行hash操作,偏移量设置为-1。
4.一种数据解压方法,其特征在于,所述方法包括:
获取第二输入数据,所述第二输入数据包括若干压缩后数据、标记位和hashtable;
获取一个压缩后数据,根据所述标记位,将所述压缩后数据还原,得到数据块;
统计数据块的数量;
判断所述数据块的数量是否大于预设数据块数量;
如果所述数据块的数量不大于预设数据块数量,则获取下一个压缩后数据,重复执行根据标记位,将所述压缩后数据还原,得到数据块的步骤;
如果所述数据块的数量大于预设数据块数量,则将按照还原顺序得到的所述数据块,与在所述hashtable中的hash值比较,判断hashtable中是否存在与所述数据块对应的hash值;
如果存在与所述数据块对应的hash值,则将所述数据块写入内存,统计所述内存中数据块的数量,判断所述内存中数据块的数量是否等于所述hashtable中的hash值的数量;
如果所述内存中数据块的数量不等于所述hashtable中的hash值的数量,则获取下一个数据块,重复执行hashtable中是否存在与所述数据块对应的hash值的步骤;
如果所述内存中数据块的数量等于所述hashtable中的hash值的数量,则判断所述内存中数据块是否和hashtable中最后一行的所有hash值拼接得到的拼接内容相匹配;
如果与拼接内容相匹配,则解压成功,将所述内存中的数据块返回。
5.根据权利要求4所述的一种数据解压方法,其特征在于,所述方法还包括:如果不存在与所述数据块对应的hash值,则返回所述数据块对应的偏移量,并将与所述数据块放入第一进程,判断是否存在与所述数据块对应的hashtable中的hash值;
如果存在与所述数据块对应的hashtable中的hash值,则根据偏移量,将所述数据块写入内存。
6.根据权利要求5所述的一种数据解压方法,其特征在于,所述方法还包括:
如果不存在与所述数据块对应的hashtable中的hash值,则统计重新匹配次数,判断重新匹配次数是否大于预设重新匹配次数;
如果大于预设重新匹配次数,则解压失败;
如果不大于预设重新匹配次数,则重复执行判断是否存在与所述数据块对应的hashtable中的hash值的步骤。
7.根据权利要求4所述的一种数据解压方法,其特征在于,所述方法还包括:判断所述数据块的数据大小是否等于预设规格;
如果不等于预设规格,则解压失败。
8.一种数据压缩装置,其特征在于,所述装置包括:
第一获取单元,用于获取第一输入数据,分割成预设规格的所述第一输入数据,得到若干数据块;
压缩单元,用于将每个所述数据块压缩,得到若干压缩后数据和标记位,同时对每个所述数据块进行unit64转化后做hash操作,得到hash值和对应的偏移量;
存入单元,用于将所述hash值和对应的偏移量存入hashtable中,并在所述hashtable中的最后一行对所有所述数据块对应的hash值进行拼接,得到拼接数据;
所述拼接数据通过数据解压方法解压,所述数据解压方法包括:
获取第二输入数据,所述第二输入数据包括若干压缩后数据、标记位和hashtable;
获取一个压缩后数据,根据所述标记位,将所述压缩后数据还原,得到数据块;
统计数据块的数量;
判断所述数据块的数量是否大于预设数据块数量;
如果所述数据块的数量不大于预设数据块数量,则获取下一个压缩后数据,重复执行根据标记位,将所述压缩后数据还原,得到数据块的步骤;
如果所述数据块的数量大于预设数据块数量,则将按照还原顺序得到的所述数据块,与在所述hashtable中的hash值比较,判断hashtable中是否存在与所述数据块对应的hash值;
如果存在与所述数据块对应的hash值,则将所述数据块写入内存,统计所述内存中数据块的数量,判断所述内存中数据块的数量是否等于所述hashtable中的hash值的数量;
如果所述内存中数据块的数量不等于所述hashtable中的hash值的数量,则获取下一个数据块,重复执行hashtable中是否存在与所述数据块对应的hash值的步骤;
如果所述内存中数据块的数量等于所述hashtable中的hash值的数量,则判断所述内存中数据块是否和hashtable中最后一行的所有hash值拼接得到的拼接内容相匹配;
如果与拼接内容相匹配,则解压成功,将所述内存中的数据块返回。
9.一种数据解压装置,其特征在于,所述装置包括:
第二获取单元,用于获取第二输入数据,所述第二输入数据包括若干压缩后数据、标记位和hashtable;
第三获取单元,用于获取一个压缩后数据,根据所述标记位,将所述压缩后数据还原,得到数据块;
第一统计单元,用于统计数据块的数量;
第一判断单元,用于判断所述数据块的数量是否大于预设数据块数量;
第四获取单元,用于如果所述数据块的数量不大于预设数据块数量,则获取下一个压缩后数据,重复执行根据标记位,将所述压缩后数据还原,得到数据块的步骤;
第二判断单元,用于如果所述数据块的数量大于预设数据块数量,则将按照还原顺序得到的所述数据块,与在所述hashtable中的hash值比较,判断hashtable中是否存在与所述数据块对应的hash值;
第二统计单元,用于如果存在与所述数据块对应的hash值,则将所述数据块写入内存,统计所述内存中数据块的数量,判断所述内存中数据块的数量是否等于所述hashtable中的hash值的数量;
第五获取单元,用于如果所述内存中数据块的数量不等于所述hashtable中的hash值的数量,则获取下一个数据块,重复执行hashtable中是否存在与所述数据块对应的hash值的步骤;
第三判断单元,用于如果所述内存中数据块的数量等于所述hashtable中的hash值的数量,则判断所述内存中数据块是否和hashtable中最后一行的所有hash值拼接得到的拼接内容相匹配;
返回单元,用于如果与拼接内容相匹配,则解压成功,将所述内存中的数据块返回。
CN201910196114.0A 2019-03-15 2019-03-15 一种数据压缩、解压方法及装置 Active CN109947776B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910196114.0A CN109947776B (zh) 2019-03-15 2019-03-15 一种数据压缩、解压方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910196114.0A CN109947776B (zh) 2019-03-15 2019-03-15 一种数据压缩、解压方法及装置

Publications (2)

Publication Number Publication Date
CN109947776A CN109947776A (zh) 2019-06-28
CN109947776B true CN109947776B (zh) 2021-05-28

Family

ID=67010146

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910196114.0A Active CN109947776B (zh) 2019-03-15 2019-03-15 一种数据压缩、解压方法及装置

Country Status (1)

Country Link
CN (1) CN109947776B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112665886B (zh) * 2020-12-11 2023-06-27 浙江中控技术股份有限公司 一种大型旋转机械振动测量高频原始数据的数据转换方法
CN115396518B (zh) * 2022-10-31 2023-04-11 广东睿江云计算股份有限公司 一种自适应的数据同步方法以及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107888197A (zh) * 2017-10-31 2018-04-06 华为技术有限公司 一种数据压缩方法和装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3810425B2 (ja) * 2004-12-16 2006-08-16 松下電器産業株式会社 改竄検出用データ生成方法、および改竄検出方法及び装置
CN102065098A (zh) * 2010-12-31 2011-05-18 网宿科技股份有限公司 网络节点之间数据同步的方法和系统
CN103020317A (zh) * 2013-01-10 2013-04-03 曙光信息产业(北京)有限公司 基于重复数据删除的数据压缩方法和装置
CN106294585B (zh) * 2016-07-28 2019-10-18 上海倍增智能科技有限公司 一种云计算平台下的存储方法
CN108243146B (zh) * 2016-12-23 2020-01-24 中科星图股份有限公司 一种信息提交方法
CN109428899A (zh) * 2017-08-21 2019-03-05 中国石油化工股份有限公司 文件安全传输管理方法及系统
CN108958966A (zh) * 2018-09-27 2018-12-07 合肥达博科技有限公司 一种无损数据压缩的数据保护方法和装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107888197A (zh) * 2017-10-31 2018-04-06 华为技术有限公司 一种数据压缩方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Key-Value型NoSQL本地存储系统研究";马文龙 等;《计算机学报》;20170601;第41卷(第8期);1721-1751 *

Also Published As

Publication number Publication date
CN109947776A (zh) 2019-06-28

Similar Documents

Publication Publication Date Title
WO2012033498A1 (en) Systems and methods for data compression
CN107229420A (zh) 数据存储方法、读取方法、删除方法和数据操作系统
CN109947776B (zh) 一种数据压缩、解压方法及装置
CN108108394B (zh) Apfs文件系统的压缩文件恢复方法及存储介质
CN111262868B (zh) 一种基于智能网卡的消息发送方法以及接收方法
CN112116436A (zh) 一种智能推荐方法、装置、计算机设备及可读存储介质
WO2020034116A1 (zh) 一种ai运算结果的验证方法及相关产品
WO2019061667A1 (zh) 电子装置、数据处理方法、系统及计算机可读存储介质
CN116192154B (zh) 数据压缩及数据解压方法、装置、电子设备、芯片
CN112506869A (zh) 文件处理方法、装置及系统
CN115858396B (zh) 用于芯片验证的方法及装置、电子设备、存储介质
US20130226941A1 (en) System and method for classifying signals using the bloom filter
CN107783904B (zh) 单元测试桩去重方法、装置、计算机可读存储介质及设备
US11411577B2 (en) Data compression method, data decompression method, and related apparatus
KR102497634B1 (ko) 문자 빈도 기반 서열 재정렬을 통한 fastq 데이터 압축 방법 및 장치
CN114297193A (zh) 一种基于hash的数据比对方法及装置
CN112711525A (zh) Ui测试与接口测试的协同测试方法、装置及计算设备
CN112733210B (zh) 一种设备标识获取方法、装置和计算机可读存储介质
CN115225725B (zh) 数据压缩存储方法、装置、车辆及存储介质
US20230113436A1 (en) Selective data compression based on data similarity
CN114138552B (zh) 数据动态重删方法、系统、终端及存储介质
CN112632059B (zh) 数据核对方法、装置、电子设备及机器可读存储介质
CN116257267A (zh) 一种文件生成方法、装置、设备及存储介质
CN110945792A (zh) 压缩数据、解压缩数据的方法和相关装置
CN114598329A (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
TA01 Transfer of patent application right

Effective date of registration: 20201223

Address after: 571924 Hainan Ecological Software Park Walker Park 8830, high tech Industrial Demonstration Zone of Laocheng Town, Chengmai County, Haikou City, Hainan Province

Applicant after: Hainan fire Chain Technology Co.,Ltd.

Address before: 571924 building 8830, Walker Park, Hainan Ecological Software Park, Haikou old town high tech industry demonstration zone, Hainan Province

Applicant before: HAINAN XINRUAN SOFTWARE Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20230714

Address after: Office 0184, Xiangnan Xiangxi Blockchain Industrial Park, No. 2, Zhengshui Avenue, High tech Zone, Hengyang City, Hunan Province, 421099

Patentee after: Hengyang Huolian Technology Co.,Ltd.

Address before: 571924 Hainan Ecological Software Park Walker Park 8830, high tech Industrial Demonstration Zone of Laocheng Town, Chengmai County, Haikou City, Hainan Province

Patentee before: Hainan fire Chain Technology Co.,Ltd.

TR01 Transfer of patent right