1. 第八章 数据压缩与归档
在计算机算法中,经常会有以空间换时间的做法;而无损压缩算法以压缩或解压缩数据花费的时间来换取存储空间。除此之外,压缩还有另外一个重要用途,那就是减少网络传输的数据量,进而减少网络传输的时间。
Go 标准库实现了一些最流行的压缩标准。zlib 和 gzip 提供了 GNU zip 库,bzip2 用于读写 bzip2 格式。这些格式都可以处理数据流而不考虑输入格式,并且提供了接口可以透明地读写压缩文件。除此之外,标准库还提供了 DEFLATE 压缩算法的实现,gzip 和 zlib 可以读取基于 DEFLATE 的文件格式。
标准库提供了 LZW 压缩算法(串表压缩算法)的实现,该算法常用的文件格式:GIF 和 PDF。另外,TIFF 文件格式使用和该算法类似,但和目前 LZW 算法版本不兼容。
标准库还提供一些包管理归档(archive)格式,将多个文件合并到一个文件,从而将其作为一个单元管理。archive/tar
读写 UNIX 磁带归档格式,这是一种老标准,但由于其灵活性,当前仍得到广泛使用。archive/zip
根据 zip 格式来处理归档,这种格式因 PC 程序 PKZIP 得以普及,原先在 MS-DOS 和 Windows 下使用,不过由于其 API 的简单性以及这种格式的可移植性,现在也用于其他平台。