【数据存储】数据压缩算法DEFLATE

2024-01-25 15:20

本文主要是介绍【数据存储】数据压缩算法DEFLATE,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.数据压缩算法DEFLATE

当前数据压缩领域流行的无损压缩算法有很多,如DEFLATE、BZIP2、LZMA、LZMA2等等,其中压缩速度最快的是DEFLATE压缩算法。根据对DEFLATE算法性能的实际测试,发现DEFLATE算法在大数据文件压缩方面的性能表现,并不如预期那样令人满意。

Deflate是同时使用了LZ77算法与哈夫曼编码(Huffman Coding)的一个无损数据压缩算法1。

Deflate压缩与解压代码可以在自由、通用的压缩库zlib上找到。常见的压缩算法如下:

  • zlib(RFC1950):一种格式,是对deflate进行了简单的封装,zlib=zlib头+deflate编码的实际内容+zlib尾。
  • gzip(RFC1952):一种格式,也是对deflate进行的封装,gzip=gzip头+deflate编码的实际内容+gzip尾。

LZ77算法是采用字典做数据压缩的算法,由以色列的两位大神Jacob Ziv与Abraham Lempel在1977年发表的论文《A Universal Algorithm for Sequential Data Compression》中提出。基于统计的数据压缩编码,比如Huffman编码,需要得到先验知识,即信源的字符频率,然后进行压缩。但是在大多数情况下,这种先验知识是很难预先获得。因此,设计一种更为通用的数据压缩编码显得尤为重要。LZ77数据压缩算法应运而生,其核心思想是利用数据的重复结构信息来进行数据压缩。

two types of compression methodologies:

  • Stateless - data associated with a compression operation is compressed without any reference to another compression operation.
  • Stateful - data in each compression operation is compressed with reference to previous compression operations in the same data stream i.e. history of data is maintained between the operations.

stateful inflate

  • Inflate: 这是一个算法,通常用于数据压缩和解压缩。它是DEFLATE算法的一部分,DEFLATE是一个广泛使用的无损数据压缩算法。
  • Stateful (有状态的): 在计算中,一个算法或过程如果依赖于其之前的状态或历史,我们说它是“有状态的”。与“无状态的”算法或过程相反,后者不依赖于任何之前的状态。

在解压缩过程中使用某种状态的系统或算法。这通常涉及到以下内容:

上下文敏感: 有状态的解压缩算法可能需要对之前的上下文进行敏感分析,以便更好地理解并解压缩数据。

历史记录: 这些算法可能会跟踪之前处理过的数据或模式,以优化解压缩过程。

动态调整: 算法可能会根据它之前遇到的数据动态地改变其行为或参数。

stateless inflate

Here is a simplified explanation of how stateless inflate works:

  1. Block Independence: In a stateless inflate process, compressed data is divided into blocks, and each block is compressed independently. This means that the decompression of one block doesn’t rely on the decompression state of previous blocks.
  2. Decompression Algorithm: The stateless inflate algorithm reads a compressed block of data and uses the information within that block to decompress it. This typically involves reconstructing the original data from the compressed form using the Huffman codes and LZ77 compression techniques.
  3. No Persistent State: After decompressing a block, there is no need to maintain persistent state information for the next block. Each block is treated as an independent unit, making it easier to parallelize or distribute the decompression process.
  4. Efficiency: Stateless inflate can be more efficient in certain scenarios, especially when dealing with streaming data or in parallel processing environments. It allows for a simpler and faster implementation because there is no need to manage state information across blocks.

Stateless inflate is commonly used in scenarios where data can be processed in a streaming fashion, and each compressed block is relatively small and independent. This approach is well-suited for certain applications, such as network protocols, file compression formats, and other situations where data arrives in chunks that can be processed independently.

这篇关于【数据存储】数据压缩算法DEFLATE的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/643684

相关文章

【服务器运维】MySQL数据存储至数据盘

查看磁盘及分区 [root@MySQL tmp]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical)

SQL Server中,查询数据库中有多少个表,以及数据库其余类型数据统计查询

sqlserver查询数据库中有多少个表 sql server 数表:select count(1) from sysobjects where xtype='U'数视图:select count(1) from sysobjects where xtype='V'数存储过程select count(1) from sysobjects where xtype='P' SE

数据时代的数字企业

1.写在前面 讨论数据治理在数字企业中的影响和必要性,并介绍数据治理的核心内容和实践方法。作者强调了数据质量、数据安全、数据隐私和数据合规等方面是数据治理的核心内容,并介绍了具体的实践措施和案例分析。企业需要重视这些方面以实现数字化转型和业务增长。 数字化转型行业小伙伴可以加入我的星球,初衷成为各位数字化转型参考库,星球内容每周更新 个人工作经验资料全部放在这里,包含数据治理、数据要

如何在Java中处理JSON数据?

如何在Java中处理JSON数据? 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨在Java中如何处理JSON数据。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,在现代应用程序中被广泛使用。Java通过多种库和API提供了处理JSON的能力,我们将深入了解其用法和最佳

两个基因相关性CPTAC蛋白组数据

目录 蛋白数据下载 ①蛋白数据下载 1,TCGA-选择泛癌数据  2,TCGA-TCPA 3,CPTAC(非TCGA) ②蛋白相关性分析 1,数据整理 2,蛋白相关性分析 PCAS在线分析 蛋白数据下载 CPTAC蛋白组学数据库介绍及数据下载分析 – 王进的个人网站 (jingege.wang) ①蛋白数据下载 可以下载泛癌蛋白数据:UCSC Xena (xena

中国341城市生态系统服务价值数据集(2000-2020年)

生态系统服务反映了人类直接或者间接从自然生态系统中获得的各种惠益,对支撑和维持人类生存和福祉起着重要基础作用。目前针对全国城市尺度的生态系统服务价值的长期评估还相对较少。我们在Xie等(2017)的静态生态系统服务当量因子表基础上,选取净初级生产力,降水量,生物迁移阻力,土壤侵蚀度和道路密度五个变量,对生态系统供给服务、调节服务、支持服务和文化服务共4大类和11小类的当量因子进行了时空调整,计算了

mysql中存储过过程和游标的联合使用

1.SQL如下: DELIMITER //DROP PROCEDURE IF EXISTS PrintAllEmployeeNames5;CREATE PROCEDURE PrintAllEmployeeNames5()BEGINDECLARE error_count INT DEFAULT 0;DECLARE num INT ;DECLARE done INT DEFAULT

【计算机网络篇】数据链路层(12)交换机式以太网___以太网交换机

文章目录 🍔交换式以太网🛸以太网交换机 🍔交换式以太网 仅使用交换机(不使用集线器)的以太网就是交换式以太网 🛸以太网交换机 以太网交换机本质上就是一个多接口的网桥: 交换机的每个接口考研连接计算机,也可以理解集线器或另一个交换机 当交换机的接口与计算机或交换机连接时,可以工作在全双工方式,并能在自身内部同时连通多对接口,使每一对相互通信的计算机都能像

使用Jsoup抓取数据

问题 最近公司的市场部分布了一个问题,到一个网站截取一下医院的数据。刚好我也被安排做。后来,我发现为何不用脚本去抓取呢? 抓取的数据如下: Jsoup的使用实战代码 结构 Created with Raphaël 2.1.0 开始 创建线程池 jsoup读取网页 解析Element 写入sqlite 结束

Excel实用技巧——二级下拉菜单、数据验证

EXCEL系列文章目录   Excel系列文章是本人亲身经历职场之后萌发的想法,为什么Excel覆盖如此之广,几乎每个公司、学校、家庭都在使用,但是它深藏的宝藏功能却很少被人使用,PQ、BI这些功能同样适用于数据分析;并且在一些需要简单及时的数据分析项目前,Excel是完胜python、R、SPSS这些科学专业的软件的。因此决心开启Excel篇章。 数据分析为什么要学Excel Excel图表