基于Deflate的压缩数据块输出方法及装置制造方法及图纸

技术编号:17055595 阅读:38 留言:0更新日期:2018-01-17 20:03
本发明专利技术公开一种基于Deflate的压缩数据块输出方法及装置,其中,该基于Deflate的压缩数据块输出方法包括:在容器的剩余空间小于设定阈值时,确定原文缓冲计数器及静态Huffman缓冲计算器的上限为剩余空间大小;继续向容器的剩余空间中添加符号数据,在原文缓冲计数器和静态Huffman缓冲计数器都发生溢出的时刻或根据两者中后一个发生溢出的时刻,确定产生新的压缩数据块的时间节点;以及在保证压缩数据块不溢出容器的前提下,选择压缩比最大的编码输出新的压缩数据块。本发明专利技术的技术方案能够在容器边界上截断输出时,尽量把更多的内容存在当前容器里,从而尽可能不浪费当前容器的空间,提高容器空间的有效利用率。

The method and device for the output of compressed data block based on Deflate

The invention discloses a data compression block output method and device, which based on Deflate, the Deflate data compression method based on block output includes the remaining space in the vessel is below a threshold, determining the original buffer counter and static Huffman buffer of the upper limit of the remaining space size calculator; continue to add data to the remaining container space symbol in the overflow occurred in the buffer and Huffman buffer counter counter static moment or two after a according to the overflow time, determine the new compressed data blocks of time node; and compressed data blocks not overflow container in ensuring the maximum compression ratio, choose new data compression encoding output block. When the technical scheme of the invention can cut off output on the container boundary, try to put more contents in the current container, so as not to waste the current container space as much as possible, and improve the effective utilization of container space.

【技术实现步骤摘要】
基于Deflate的压缩数据块输出方法及装置
本专利技术涉及数据处理
,尤其涉及一种基于Deflate的压缩数据块输出方法及装置。
技术介绍
无损压缩算法是利用数据的统计冗余进行压缩,原始数据可完全恢复而不引起任何失真。由于不同数据的冗余程度不一,压缩后的数据长度是不一样的。目前,很多存储设备一般使用固定长度的存储空间来存储数据。我们统一把固定长度的存储空间称作容器。容器的长度在不同的存储设备中可以是不同,比如有的存储设备选择4K字节,有的选择1M字节。当原始数据压缩后比允许的容器长度更大的时候,能够在当前容器边界上截断输出,把后半部分原始数据存到下一个容器中去。Deflate压缩算法广泛应用于gzip,zlib文件格式中,是目前应用最广泛的无损压缩算法之一,经其压缩后的文件大小可以变长,如此造成压缩数据块的输出长度与容器的大小和边界不一致,容器的最后一部分可能是空白的,导致容器的空间利用率较低的问题。有鉴于此,有必要提出对目前的基于Deflate的固定长度压缩数据块输出方法进行进一步的改进。
技术实现思路
为解决上述至少一技术问题,本专利技术的主要目的是提供一种基于Deflate的压缩数据块输出方法。为实现上述目的,本专利技术采用的一个技术方案为:提供一种基于Deflate的压缩数据块输出方法,包括:在容器的剩余空间小于设定阈值时,确定当前压缩数据块的上限为剩余空间大小;继续向容器的剩余空间中添加符号数据,在原文缓冲计数器和静态Huffman缓冲计数器都发生溢出的时刻或根据两者中后一个发生溢出的时刻,确定产生新的压缩数据块的时间节点;以及在保证压缩数据块不溢出容器的前提下,选择压缩比最大的编码输出新的压缩数据块,所述编码为静态Huffman编码、动态Huffman编码以及原文件编码中任意一种。在一具体的实施例中,所述确定当前压缩数据块的上限为剩余空间大小的步骤之前还包括:预先分配一统计容器中符号数据个数的原文缓冲计数器及静态Huffman缓冲计数器,其中,所述原文缓冲计数器及静态Huffman缓冲计数器的上限可调整。在一具体的实施例中,所述选择压缩比最大的编码输出新的压缩数据块的步骤具体包括:选择静态Huffman编码与原文件编码中压缩比较大的编码输出新的压缩数据块。在一具体的实施例中,所述选择压缩比最大的编码输出新的压缩数据块的步骤为:选择动态Huffman编码作为压缩比最大的编码输出新的压缩数据块,具体包括:如果动态Huffman编码小于容器的剩余空间,则得到一可继续添加符号数据的填充空间;如果动态Huffman编码等于容器的剩余空间,则以新的压缩数据块作为输出块;如果动态Huffman编码大于容器的剩余空间,则选取原文缓冲计数器和静态Huffman缓冲计数器中后溢出的那个所对应的编码作为输出块。在一具体的实施例中,在所述容器得到一可继续添加符号数据的填充空间的步骤后,还包括:继续向容器的填充空间中添加符号数据,以最大压缩比编码输出填充块,其中,所述填充块为静态Huffman编码、动态Huffman编码以及原文件编码中任意一种。为实现上述目的,本专利技术采用的另一个技术方案为:提供一种基于Deflate的压缩数据块输出装置,包括:第一确定模块,在容器的剩余空间小于设定阈值时,确定当前压缩数据块的上限为剩余空间大小;第二确定模块,继续向容器的剩余空间中添加符号数据,在原文缓冲计数器和静态Huffman缓冲计数器都发生溢出的时刻或根据两者中后一个发生溢出的时刻,用于确定产生新的压缩数据块的时间节点;以及选择输出模块,在保证压缩数据块不溢出容器的前提下,用以选择压缩比最大的编码输出新的压缩数据块,所述编码为静态Huffman编码、动态Huffman编码以及原文件编码中任意一种。在一具体的实施例中,所述基于Deflate的压缩数据块输出装置还包括:预分配模块,用于预先分配一统计容器中符号数据个数的原文缓冲计数器及静态Huffman缓冲计数器,其中,所述原文缓冲计数器及静态Huffman缓冲计数器的上限可调整。在一具体的实施例中,所述选择输出模块具体用于:选择静态Huffman编码与原文件编码中压缩比最大的编码输出新的压缩数据块。在一具体的实施例中,所述选择输出模块具体用于:选择动态Huffman编码作为压缩比最大的编码输出新的压缩数据块,具体包括:如果动态Huffman编码小于容器的剩余空间,则得到一可继续添加符号数据的填充空间;如果动态Huffman编码等于容器的剩余空间,则以新的压缩数据块作为输出块;如果动态Huffman编码大于容器的剩余空间,则选取原文缓冲计数器和静态Huffman缓冲计数器中后溢出的那个所对应的编码作为输出块。在一具体的实施例中,所述选出输出模块,用于继续向容器的填充空间中添加符号数据,以最大压缩比编码输出填充块,其中,所述填充块为静态Huffman编码、动态Huffman编码以及原文件编码中任意一种。本专利技术的技术方案主要采用在容器的剩余空间小于设定阈值时,确定当前压缩数据块的上限为剩余空间大小,然后继续向容器的剩余空间中添加符号数据,在原文缓冲计数器和静态Huffman缓冲计数器都发生溢出的时刻或根据两者中后一个发生溢出的时刻,确定产生新的压缩数据块的时间节点;最后在保证压缩数据块不溢出容器的前提下,选择压缩比最大的编码输出新的压缩数据块,能够在容器边界上截断输出时,尽量把较多的内容存在当前的容器,从而可以提高当前容器空间的有效利用率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。图1为本专利技术一实施例基于Deflate的压缩数据块输出方法的方法流程图;图2为本专利技术另一实施例基于Deflate的压缩数据块输出方法的方法流程图;图3为本专利技术又一实施例基于Deflate的压缩数据块输出方法的方法流程图;图4为本专利技术一实施例基于Deflate的压缩数据块输出装置的模块方框图;图5为本专利技术另一实施例基于Deflate的压缩数据块输出装置的模块方框图;图6为本专利技术容器的存储数据的示例图。本专利技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术的一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。需要说明,本专利技术中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本专利技术要求的保护范围之内。为了更好地的理解本专利技术的技术方案,下面对Def本文档来自技高网...
基于Deflate的压缩数据块输出方法及装置

【技术保护点】
一种基于Deflate的压缩数据块输出方法,其特征在于,所述基于Deflate的压缩数据块输出方法包括:在容器的剩余空间小于设定阈值时,确定当前压缩数据块的上限为剩余空间大小;继续向容器的剩余空间中添加符号数据,在原文缓冲计数器和静态Huffman缓冲计数器都发生溢出的时刻或根据两者中后一个发生溢出的时刻,确定产生新的压缩数据块的时间节点;以及在保证压缩数据块不溢出容器的前提下,选择压缩比最大的编码输出新的压缩数据块,所述编码为静态Huffman编码、动态Huffman编码以及原文件编码中任意一种。

【技术特征摘要】
1.一种基于Deflate的压缩数据块输出方法,其特征在于,所述基于Deflate的压缩数据块输出方法包括:在容器的剩余空间小于设定阈值时,确定当前压缩数据块的上限为剩余空间大小;继续向容器的剩余空间中添加符号数据,在原文缓冲计数器和静态Huffman缓冲计数器都发生溢出的时刻或根据两者中后一个发生溢出的时刻,确定产生新的压缩数据块的时间节点;以及在保证压缩数据块不溢出容器的前提下,选择压缩比最大的编码输出新的压缩数据块,所述编码为静态Huffman编码、动态Huffman编码以及原文件编码中任意一种。2.如权利要求1所述的基于Deflate的压缩数据块输出方法,其特征在于,所述确定当前压缩数据块的上限为剩余空间大小的步骤之前还包括:预先分配一统计容器中符号数据个数的原文缓冲计数器及静态Huffman缓冲计数器,其中,所述原文缓冲计数器及静态Huffman缓冲计数器的上限可调整。3.如权利要求1或2所述的基于Deflate的压缩数据块输出方法,其特征在于,所述选择压缩比最大的编码输出新的压缩数据块的步骤具体包括:选择静态Huffman编码与原文件编码中压缩比最大的编码输出新的压缩数据块。4.如权利要求1所述的基于Deflate的压缩数据块输出方法,其特征在于,所述选择压缩比最大的编码输出新的压缩数据块的步骤为:选择动态Huffman编码作为压缩比最大的编码输出新的压缩数据块,具体包括:如果动态Huffman编码小于容器的剩余空间,则得到一可继续添加符号数据的填充空间;如果动态Huffman编码等于容器的剩余空间,则以新的压缩数据块作为输出块;如果动态Huffman编码大于容器的剩余空间,则选取原文缓冲计数器和静态Huffman缓冲计数器中后溢出的那个所对应的编码作为输出块。5.如权利要求1或4所述的基于Deflate的压缩数据块输出方法,其特征在于,在所述容器得到一可继续添加符号数据的填充空间的步骤后,还包括:继续向容器的填充空间中添加符号数据,以最大压缩比编码输出填充块,其中,所述填充块为静态Huffman编码、动态Huffman编码以及...

【专利技术属性】
技术研发人员:张宇弘王界兵张伟董迪马耿涛黄嘉乐
申请(专利权)人:深圳前海信息技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1