zoukankan      html  css  js  c++  java
  • 读《程序是怎样跑起来的》第六章有感

    没读这一章之前我也压缩过文件,用的是ZIP压缩软件,目的就是为了让文件变小一点,少占点内存,因为文件是以字节为单位的,一个字符占用一个字节的长度,文件也分好几种类型,里面的数据是文字,就是文本文件,里面是图形就是图像文件。

    这一章作者讲了两个压缩技巧,第一个讲了RLE算法的机制即“数据x重复次数”,接着又讲了它的缺点,就是只适合连续出现的图像和文件,并不太适合文本文件的压缩。我感觉也是,因为只有少数文件内容是连续出现的,大多数都不是重复的。

    第二个压缩技巧就是哈夫曼算法,它的关键在于“多次出现的数据用小于8位的字节数表示,不常用的数据则可以用超过8位的字节数来表示”。不过不管数据够不够8位还是超出8位最终都要以8位为单位保存到文件中,因为磁盘是以字节为单位保存数据的。这个是比较准确的,不过要进行一些计算,我感觉它跟莫尔斯编码比较像,都是根据数据出现的频率来计算长度。

    接着作者讲了莫尔斯编码,“根据日常文本中各字符出现的频率来决定表示各字符的编码的数据长度。”但并不适合特殊的文本。而哈夫曼算法是按照“出现频率高的字符用尽量少的位数编码来表示”这一原则整理字符。然后作者教我们如何制作哈夫曼树,其实这部分内容我没有仔细看,因为他举的那个例子没看太懂,树的前面懂了,第四步和压缩比例得多看两遍。最后一节作者讲了可逆压缩和非可逆压缩,还讲了四种图像数据格式有BMP、JPEG、TIFF、GIF接着又对这四种格式逐一进行了介绍,学了这一章发现压缩也没我想象的简单,里面介绍的算法我都没听过,只会用压缩软件压缩文件,并不知道它里面怎样运行和转换的。不过学了这一章对压缩更加理解了,以后可以尝试用其它方法自己压缩程序文件了。

  • 相关阅读:
    可视化工具D3.js教程 入门 (第三章)—— 理解 Update Enter Exit
    可视化工具D3.js教程 入门 (第二章)—— 选择元素与数据绑定
    可视化工具D3.js教程 入门 (第一章)—— hello world
    可视化工具D3.js教程 入门 (V5版)
    [译]C语言实现一个简易的Hash table(3)
    [译]C语言实现一个简易的Hash table(2)
    [译]C语言实现一个简易的Hash table(1)
    C/C++中的malloc、calloc和realloc
    数据结构--单向链表
    使用Screen管理远程会话
  • 原文地址:https://www.cnblogs.com/wangli155167/p/10345435.html
Copyright © 2011-2022 走看看