压缩算法
文章平均质量分 75
通用压缩算法原理介绍
shuxiaohua
这个作者很懒,什么都没留下…
展开
-
ZipInputStream解压报错java.lang.IllegalArgumentException: MALFORMED
使用jdk自带的zip工具ZipInputStream,去读取使用winrar在中文windows制作出来的zip文件报错。从报错信息“MALFORMED”,第一反应就是文件名解码失败,因为使用winrar制作的zip肯定是符合zip标准格式的,唯一有疑点的就是文件名是中文,然后存储时的编码和解码是的编码不一致。查看ZipInputStream构造函数可以传编码,因此使用。原创 2023-11-07 20:33:38 · 2115 阅读 · 0 评论 -
lz4算法实现
概述lz4算法是lz77算法的一种实现,就是查找重复的字符串,重复的字符串使用(距离,长度)来表示。比如abcdefgabcdefg,被压缩后就表示成了:abcdefg,(1,7)距离有多重表示方法:重复的字符串尾部距离当前正在处理的字符的距离重复的字符串头部距离当前正在处理的字符的距离重复的字符串在输入字符串的位置重复字符串头部位置的内存地址lz77更详细的资料,可以查看其它博文,本文主要讲lz4中的实现。lz4的实现数据结构(hashchain)–未完待续...原创 2020-12-15 14:05:37 · 2588 阅读 · 0 评论 -
区间编码
概念信息熵信息熵是用来衡量事物的信息量的,度量公式为:H=∑i=1npilog1pi\sum_{i=1}^{n}{p_i}log{\frac{1}{p_i}}∑i=1npilogpi1n表示该事物有n中可能的情况,pip_ipi表示每种情况发生的概率。比如:某个人怀孕后,生的小孩是什么性别,这件事的信息熵是1.因为生男孩,还是女孩的概率都为0.5H = 0.5log2 + 0.5log2 = 1.如果一件事情发生的可能性越多,每种可能的概率越分散,则信息熵越大,即信息量越多。比如原创 2020-12-03 21:01:23 · 2753 阅读 · 0 评论 -
lz4压缩格式-block
概述lz4属于lz77系列的压缩算法,lz77系列压缩算法将重复的字符串(也称为匹配)表示成(offset、match length)来对数据进行压缩。lz77算法只是一种思想,寻找匹配的方式有很多中,常见的有hash chain、BST,这些算法会在介绍各个通用压缩算法的时候介绍。本文只介绍lz4的压缩格式,详细的算法实现会放在另外文章里面讲。lz4实现了两种格式,分别叫block、fra...原创 2020-04-16 09:12:53 · 4415 阅读 · 3 评论