00:00
各位同学,我们来把赫夫曼编码的。这这些内容做一个小结。那么我们来看一下赫夫曼编码压缩和解压文件有哪些需要注意的地方。第一个啊,如果文件本身它就经过压缩处理了,那么再用赫夫曼编码。再压缩,那么效率不会有明显的提升,比如说呃,你去压一个视频文件,就是你用刚才我们写的。这个压缩算法。去压一个视频,或者压一个PPT,或者压其他文件,你会发现呢,压缩率并不高,我举个例子,在这里呢,我有一个PPT。大家可以看到这儿有一个。资料叫这资料是PPT,因为PPT这个文件呢,它本身呢,就经经过了一个压缩的处理,就它本身其实就已经做过压缩算法了,所以说如果你把这个文件进行压缩,你会发现呢,它并没有什么明显的这个压缩的效果,你看这是一点。
01:04
PPTX,我们来试一下同学们。那这里呢,我就跟大家试一下压缩解压我就不试了,好吧。我把这个解压这块先注销,同学们看一下就行。现在呢,在D盘有一个1.pptx文件好吧,一点。PPTPPTX文件,那么这边呢,我们叫一。呃,这取个名字叫EZ吧。一点。一一点就就叫1.z好吧,一一.z我们运行一下同学们。我们运行一下好,运行完了过后压缩一下就OK了,我们找一下这个文件,大家有可以看到,这确实有个压缩文件,你看原先是1049,现在是1048,没有什么明显的提升,几乎一样。为什么呢?大家有没有发现,当你打开PPTX的,它本身会有一个过程,你们有没有发现打开一个文件,它往往会停顿一段或者延时一段时间。其实那个过程就是。
02:10
我们的这个word这个PPPT这个这个程序,它在进行一个解压。也就是说这样的文件其实你你压效果不是特别明显,因为它本身就处理过了。那这个说一下,说一下第二个赫夫曼编码呢,是按照字节来处理的,所以说他可以处理所有的文件,包括二进制文件,文本文件都可以,那刚才我们进行压缩的是图片文件,图片文件其实就是个二零文件,那么现在呢,我们再举一个文本文件,它也是可以压缩的,我在这里呢,也有一个资料来我们验证一下,打开我们的资料压缩测试文件里面有个XM文件,这个文件呢,大大家可以看到呢,它是一个文本的,一打开直接可以看到,试一试吧,好,现在呢,我把这个文件给各位同学演示一下。
03:00
On in store.xl我们也来压缩一把,同学们看一下,好,我就直接这样改啊。那这边就是XL,然后我直接写成。On z。我们试一下,看看压缩是否能成功。同学们可以看到压缩也是成功的,那压缩也是成功,我们可以看到现在情况怎么样呢?这个还是有一些变化的,它原先是59个KB,压完了过后呢,变成了40个KB。对不对,那你当然也可以解压,我可以试一下解压,好吧,解压呢,我们也玩一把。好,现在解压的话呢,这边就应该是on install z。是吧,加加完了功呢,我让它变成这个文件,看看打开会不会有什么,呃,问题叫onstore2.x文件没有没有毛病吧,我们运行一下,运行完了过后,我发现它提示解压成功打开下。打开。呃,看看这两个文件有没有发现,这是59个KD,这边呢也是59个KB,我们打开看看有没有问题。
04:05
好,当我们打开后发发现没有任何问题,是不是还是一样的,因此呢,我们总结第二点就是后方面编码,它是按字节来进行处理的,因此呢可以处理所有文件,二进制文本文件都OK。还有第三个,如果一个文件中内容重复的数据量不多,压缩效果也不明显。你比如说我们打个比方吧,我们写的这个那句话叫I like。那个假设我们。我们都字母都不一样,就对ABCDEFG。ABCDEFGFGABCDEFG,假设你这几个字母都是不同的,那么压缩效果也不明显。因为他没有重复的东西,对吧,你无法压缩了,说这三点呢,请大家注意一下,第三点注意一下,好,那我们现在呢,就把前面讲的赫夫曼编码的这块内容呢,给大家简单的板述一下捋捋。
05:01
前面我们的笔记已经捋到,呃,讲到这了,是不是现在呢,我们把这块捋一下,那么在讲赫夫曼编码的原理,讲完以后呢,我们就给大家来讲了赫夫曼编码的一些时间操作。第一个先给。啊,这个不对,应该是一个先给同学们演示的数据压缩,数据压缩的第一个步骤呢,是先创建我们的赫夫曼数,具体步骤老师在这里也做了一个说明。对不对。这是他的要求,然后呢,步骤一,我们先要完成一个根据赫夫曼编码原理,其实是先将这一个语句对应的赫夫曼数创建起来。那具体代码呢,我就给大家写到。这个。呃。这个eclipse的这个文件里面,因为这个文件很多,大家看我们一共写了将近有400多行,那我也就不一个一个的一个一个的给大家截了,那要截也可以,好吧,要结的话我们也可以给他截一下。
06:04
那这块创建后慢速的这个方法呢,给大家拿过来叫create。对不对,是这段代码吧,最后我们再汇总给他,给大家截一个视频啊截截一个文件不就完了吗?好,这是它的核心代码。这是创建。创建我们赫夫曼数的核核心代码,这个先说完了。嗯,那这这个创建赫夫曼数说完了过后呢,我们又给他讲了生成赫夫曼编码和赫和使用赫夫曼编码得到压缩后的这一个字节数组,也就是压缩后的数据,这个呢,也是给大家讲了一下,是不是我给大家呢也反述一下。对,叶板说一下,捋捋思路好吧。嗯,那这个步骤应该是第一步。第一步。是不是首先你要生成后面编码第二步。对,第二步呢,根据这个编码来生成对应的这一个二进制的走串思路,这是我们思路,思路其实也做了代码演示呢,也是现场给他敲的,具体来说是哪两个方法呢?给大家捋一下。
07:13
嗯,生成赫夫曼编码其实是。我看一下第一个是先生成赫夫曼的编码,然后在生成数据,那应该是这样子的,赫曼编码是用这个来生成的get。扣子是这个方法和下面这个方法是不是?好,我把这一段代码呢给各位朋友板书到笔记中。你的思路嘛。是这样子的吧。好,就是这两个方法就可以搞定这个东西,那后面编码是最后调的时候就像这样,这样调就可以了,是吧,后面编码。好,呃,然后呢,我们紧接着又给同学们讲了什么东西呢?给同学们讲了数据的解压,你有压缩当然就会有解压。
08:02
那解压的流程是怎么样子的呢?来看一下。解压的流程。解压的流程呢,首先各位你要先把用后方编码来得到。他这个。呃,使用前面的后面编码得到对应的对应的这个BA数组,然后呢,再用这个BAT数组来得到原始的这个字符串,是这样子的吧,好,我把这个呢给同学们摆出到这里来。旅思路第一步是这样子的,是不是?第二步,第二步做这个工作。是不是这样这样子的同学们好,最后呢,这个思路做了一个解释,解释,然后呢,代码呢,做了一个实现。这个地方其实说白了,整个这个这个工作就是一个抵扣的。叫低扣的,但在de扣的之前呢,咱们有个bit to a bit string,这个呢,还是比较重要的一个方法,我给大家列到这来。这个方法我们当时是给大家做了一个解解释的,里面涉及到一些二进制的内容,对不对,还有一个D扣的。
09:09
低扣的方法我也给大家拿过来。这个低各种方法呢,内容比较多一点。是这样的吧。同学们给大家拿到这。好,这个讲完了以后呢,我们又给同学们讲了,就是文件压缩,也就是说我们不但可以对字符串进行压缩,也可以对一个文件直接进行压缩,也是OK的。是这样子的,我把代码呢,也给大家列举到我们的笔记中,对不对,它也是一个实际实际操作。那么思路。这是我们压缩文件的一个事物,这是代码的实现,那代码实现呢,主要是一个方法,这个方法我们找一下是哪一个呀。实际上是。实际上是Z。世界攻击对不对?把这个文件呢也给同学们,把这个方法也给同学们放到这里来。
10:01
好的,那紧接着讲完这个文件的压缩过后呢,又给同学们讲了一下文件的恢复,因为你压缩完了过后,肯定涉及到一个恢复问题,好,这是文件的恢复。因为你这个完全有可能是分开操作的,对吧,你有可能是有有一个人他是压缩了,你就直接解压也是有可能的。那代码实现呢,其实就靠的哪个方法,同学们,我们靠的是。这个叫做on zip这个方法是不是on zip这个方法,我把这个方法呢,也给同学们阐述到这里。好。这是最后一。这是好,那整个这个方法说完了过后呢,我们最后在会议汇总,把所有的代码汇总放在一个地方。这这我就写到这啊,就是汇总的代码。代码汇总,代码汇总呢,就是把所把前面前面前面所有的方法放在一起了,放在一起。那同学们可以去到时间参考一下,我给大家一个标题。
11:03
也就是说最终这个代码呢,我也给他放放一份,为什么分开放了一下呢?就是怕同学们看的时候太多了,代码看看不太明白。好,这个方法就比较多了,放到这了,最后我们还给大家讲了一下,就是什么呀,就是我们赫夫曼编码压缩文件的一些注意事项和他的需要同学们注意的地方。也就是说后分编码呢,他不是说你在任何情况下都是那么有效的。对不对,你看刚才我们压一个文件590多K变成了啊,好像50多K还是70多K忘了啊,打开可以看一下,对吧,你这个原先那个文件是一个压完了之后变成了这个5076K,但是不是每次都这样子,因为我们这个文件比较特别,它的重复的点很多。当你一个文件重复点没有什么的情况下,那就没有这么好的效率,第二个有些文件本身就是压缩过的。那你再去压缩,其实效果不是特别明显,明白吧,好,这点大家注意一下就可以了,好一共三点,一共三点。
12:05
OK。好,那各位同学,关于我们赫夫曼编码的一个呃,实际的应用就给同学们介绍到这里,那么同学们把它消化一下。OK,这讲说到这儿。
我来说两句