不得不说,这一部分内容通常很无趣,但我们向你保证,就像电影《公主新娘》中的原作者及编剧William Goldman那样,我们只向你展示干货。因此,虽然我们要求你不要跳过第2章,但你完全可以跳过这个概要。你可以通过浏览目录来了解整本书的内容,或者既然你已经拿起本书,那就干脆直接读下去。但如果你想在实际阅读前了解一下各章的内容,这里会给你一些提示。

第1章,并非无趣的一章

如果你没有时间阅读整本书的话,那么阅读第1章就可以了,这里有你需要知道的所有内容。压缩算法可以分为5类:变长编码、统计压缩、字典编码、上下文模型和多上下文模型。香农发明了一种度量消息中所包含信息内容的方法,并称之为信息熵。压缩的关键在于使用尽可能少的符号对数据进行编码,以使其占用的二进制位数尽可能地少。数据压缩是整个互联网的基础,我们应该对所有的数据进行压缩。这就是第1章的内容,如果你愿意,现在就可以合上这本书了。

第2章,不容错过的一章

这一章之所以不容错过,是因为它奠定了全书的基础,比如如何用0和1来表示整个世界,同时还介绍了信息论和熵的概念(即表示一个数所需要的最小二进制位数)。

第3章,突破熵

根据香农的理论,熵就是一组数据在理论上所能达到的最小大小,而数据压缩则通过利用真实数据的两个性质,即符号之间的顺序与相互关系,打破了这个限制。

第4章,VLC

在这一章中,你会学习如何将0和1串在一起,构造唯一的、长度可变的码字,然后再将最短的码字分配给数据集中最可能出现的符号。此外,你还会遇见Peter Elias。

第5章,统计编码

不存在适用于所有场合的万能方法,而统计编码算法能根据特定的数据集进行优化,生成个性化的变长编码。在这一章中,你将使用便签构建哈夫曼树,并学习算术编码,还会遇见Jarek Duda,他通过引进算术数字系统取代了前两者。

第6章,自适应统计编码

真实的数据流时刻在变化,而自适应编码器能根据正在处理的数据的局部特性对编码进行优化。

第7章,字典转换

如果不能进一步压缩数据,可以考虑在应用统计压缩之前,以“单词”为单位,对其在数据集中的重复方式进行编码,从而将数据预处理为更可压缩的形式。

第8章,上下文数据转换

有多少数据集,就有多少不同的转换,但下面两种转换是现代计算中最为重要的:行程编码和增量编码。这两种方法的共同之处在于,它们会根据前面已经出现过的内容来决定后面会出现的内容。

第9章,数据建模

多上下文编码算法为了识别编码当前符号的理想的二进制位数,会考虑最后见到的几个符号。你可以将它看成每读取一个新的符号就去创建一棵新的哈夫曼树。在这一章,你会遇到如下术语:马尔可夫链、部分匹配预测算法和单词查找树。如果想给朋友留下深刻印象,不妨用用上面这些术语。

第10章,换个话题

这一章简单介绍多媒体数据压缩,并为数据的实际使用打开方便之门。

第11章,评价数据压缩

针对不同的数据流有不同的数据压缩算法。使用场景不同,使用的压缩算法也会不同。在这一章中,你会学习为了选择最符合当前需要的压缩算法需要考虑哪些方面。

第12章,压缩图像数据

如果你是一名应用程序开发人员,那么需要处理的绝大多数数据会是图像。我们可以利用规律并巧妙地忽略那些人类大脑注意不到的信息,来节省图像需要的二进制位数。在这一章中,你将学习PNG、JPG、GIF和WebP等图像压缩格式。

第13章,序列化数据

在网络应用程序中,序列化的内容可以说是第二常见的数据传输格式。我们可以用二进制序列化格式来代替JSON和XML格式。

第14章,有损数据压缩

实际上,如果深入讨论这个话题的话,可以写成另外一本书。

第15章,让世界变得更小

这一章会回答,为了让客户更多、事业更兴、利润更高,你必须关注数据压缩的原因。