当前位置:文档之家› 数据压缩算法

数据压缩算法


参考:/77247/
3.常见压缩算法比较

QuickLZ: is the world's fastest compression library, reaching 308 Mbyte/s per core. Snappy: is a compression/decompression library. It does not aim for maximum compression, or compatibility with any other compression library; instead, it aims for very high speeds and reasonable compression. For instance, compared to the fastest mode of zlib, Snappy is an order of magnitude faster for most inputs, but the resulting compressed files are anywhere from 20% to 100% bigger. On a single core of a Core i7 processor in 64-bit mode, Snappy compresses at about 250 MB/sec or more and decompresses at about 500 MB/sec or more. LZ4号称速度快,压缩比高。 JAVA实现:https:///jpount:结合了PPM和LZSS算法 GZIP:DEFLATE,gzipped "inflate" data is prefixed with a two-byte header, and suffixed with a four-byte checksum。 ZIP:/76676/
分类:即时压缩和非即时压缩、数据压缩和文件压缩、无损压缩与有损压缩。数据是专指一些具有时间性的数据 ,这些数据常常是即时采集、即时处理或传输的。而文件压缩就是专指对将要保存在磁盘等物理介质的数据进行 压缩,如一篇文章。 发展:Shannon,任何信息都存在冗余,冗余大小与信息中每个符号(数字、字母或单词)的出现概率或者说不 确定性有关。他借鉴了热力学的概念,把信息中排除了冗余后的平均信息量称为“信息熵”,并给出了计算信息 熵的数学表达式。信息熵也奠定了所有数据压缩算法的理论基础。 Huffman编码是信息压缩编码,统计原始数据中各字符出现的频率;所有字符按频率降序排列;建立哈夫曼树: 将哈夫曼树存入结果数据;重新编码原始数据到结果数据。之后又出现了进化和发展。 为了获得一种兼顾运行速度和压缩效果的“完美”编码的时候,两个犹太人 J. Ziv 和 A. Lempel 独辟蹊径,完全 脱离 Huffman 及算术编码的设计思路,创造出了一系列比 Huffman 编码更有效,比算术编码更快捷的压缩算法 。我们通常用这两个犹太人姓氏的缩写,将这些算法统称为 LZ 系列算法。LZ77,LZ78,LZW。(效率和压缩比 ) 再之后出现了各种适合文本压缩(无损)、图像压缩(有损)、音频压缩、视频压缩等等的算法。每个领域,思 想的深度都在不断进步。就像发现引力波一样。

6.结语

综合考虑:
1、使用Gzip,这个压缩算法被广泛支持,浏览器或APP基本都支持。可以兼容终端类型更广泛,稳定。
不足:压缩比和压缩效率一般
2、Snappy:注重压缩比和压缩效率平衡,技术活跃。 3、LZ4,QuickLZ:追求最大化效率,压缩比也比较优秀。不足:应用范围不广泛,可靠性或者优势还待更大范围和实 践考验。

数据压缩衡量:压缩效率和压缩比 传输数据类型:Json,String 常用的:


JSONC(JS),JSONPACK(JS), json-lzw,QuickLZ(java),LZ4 (java),Gzip(java),snappy(java) Snappy(注重平衡,用于BigTable and MapReduce to our internal RPC systems)





2.常见压缩算法

Wiki罗列了近100种算法,目的都是降低信息冗余度。
压缩算法思想 Entropy Encoding:最少bit数编码,Shannon,Huffman

字典算法:它是把文本中出现频率比较多的单词或词汇组合做成一个对应的字典列表,并用特殊代码来表示 这个单词或词汇。 Sliding Window:滑动窗口 LZ77,如: DEFLATE(先用LZ77,然后用Huffman编码) 非字典算法:(Non-dictionary Algorithms)使用输入中的一部分数据,来预测后续的符号将会是什么,通过 这种算法来减少输出数据的熵,PPM,BZIP



Difference between gzip, zip, deflate 参见:/Archive/Comp/pression/200707/msg00011.html 总结:目前压缩算法在日益更新,很难有最好的。但当前互联网领域广泛被使用,比如浏览器普遍支持的: gzip,deflate,compress等 ,或者一些大公司内部使用的如google的Snappy等。 因为被使用广泛且占有率高,因此可以达到兼容性好,解压方便的效果。
数据压缩分享
目录
数据压缩概念 常用压缩算法 压缩算法实践 结语
1.数据压缩概念

据压缩是指在不丢失有用信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率,或按照 一定的算法对数据进行重新组织,减少数据的冗余和存储的空间的一种技术方法。数据压缩包括有损压缩和无损 压缩。
数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里 ,一般称为数据压缩

Gzip,The deflation algorithm used by gzip (also zip and zlib) is a variation of LZ77 。

zip扮演着归档和压缩两个角色;gzip并不将文件归档,仅只是对单个文件进行压缩
5.实践2

使用Gzip对Json进行压缩,Ajax请求数据后,浏览器识别压缩格式后解压。 使用简单。demo如下:

Phil Katz

7ZIP:这种格式并不仅限于使用一种压缩算法,而是可以在bzip2, LZMA, LZMA2, 和 PPMd算法之间任意选择 The deflation algorithm used by gzip (also zip and zlib) is a variation of LZ77 (Lempel-Ziv 1977).

compress, gzip * compress;q=0.5, gzip;q=1.0 gzip;q=1.0, identity; q=0.5, *;q=0
5.实践
场景分析: 应用系统没有多点部署,不能就近访问。公网访问、或者终端访问,相同带宽条件,通 过无损压缩数据,提高传输效率。 业务场景: 1)客户端和服务端语言环境?2)服务端发送大数据? 3)客户端发送大数据?
谢谢

4.HTTP规范

/rfc/rfc2616.txt HTTP(Hypertext Transfer Protocol,1999)规范 描述了Http头信息定义 。其中Accept-Encoding 和Content-Encoding涉及到压缩。
各种浏览器不同: 如: Accept-Encoding: Accept-Encoding: Accept-Encoding: Accept-Encoding: Accept-Encoding:
相关主题