首页 > 编程语言 >程序是怎样跑起来的第六章读书笔记

程序是怎样跑起来的第六章读书笔记

时间:2024-03-01 14:46:06浏览次数:15  
标签:编码 字节 哈夫曼 读书笔记 压缩 程序 算法 第六章 数据

第六章的主题是文件的压缩通过询问读者为什么文件可以压缩来展开文件压缩机制的讲解6.1我们可以了解到,文件是以字节为单位的保存,每个字节可以表示一个字符、一个数字或其他类型的数据。在文件系统中,文件的大小通常以字节为单位来衡量。通过对字节的读取和写入计算机可以实现对文件的创建、修改、删除、打开和关闭等操作。第二小节则告诉我们RLE机制的算法和缺点RLE是行程长度编码。这种算法是一种简单的压缩算法,他把文件内容中连续重复的数据,和重复个数进行相结合来记录,来表示压缩数据。阅读其他文本我了解到RLE算法只针对连续的字节序列压缩效果比较好,并不适合文本文件的压缩
第三小节则讲了哈夫曼算法,哈夫曼算法是1952年提出的压缩算法,其基本思想是:多次出现的数据用语小于八位的字节数来表示,不常用的数据则可以用超过八位的字节来表示。这样可以有效的减少数据的存储空间,提高数据的传输效率。儿莫尔斯编码的基本思想是把一般文本中出现频率高的字符用短编码来表示。哈夫曼算法能够大幅提升压缩比率,它是一种基于统计的最优编码方法,哈夫曼算法的核心思想是,根据数据中字符出现的频率,构建一棵哈夫曼树。这棵树的每个叶子节点代表一个字符,而树的边表示字符的编码在用枝条连接数据时我们是从出现频率较低的数据开始的,这就意味着出现频率越低的数据,到达根部的枝条数就越多。枝条数越多,编码的位数也就随之增多了
最后一小节告诉我们可逆压缩和非可逆压缩查,可逆压缩式称为无损压缩,将数据压缩并还原为原始的完全相同的状态,不丢失任何信息。非可压缩称为有损压缩,在压缩过程中会丢失一些信息,无法完全还原为原始数据。

标签:编码,字节,哈夫曼,读书笔记,压缩,程序,算法,第六章,数据
From: https://www.cnblogs.com/2005520Yang/p/18047017

相关文章

  • 读书笔记3
    第三章软件工程师的成长这章主要讨论软件工程师个人能力衡量及发展,一些思维误区和以后的职业发展在团队工作中,稳定、一致的交付时间时衡量一个员工能力的重要方面初级软件工程师的成长包括以下几种:(1)积累软件开发相关的知识,提升技术技能(如对具体技术的掌握,动手能力)。例如:对JAV......
  • 读书笔记2
    1.1节通过三个简短的对话,启发我对什么是程序,什么是软件,什么是软件工程,也了解到了一个软件不是简简单单就能说写就写的,还需要考虑各种因素,如人们的需求,功能的可行性。1.2节详细的给软件工程下定义,介绍软件工程的特殊性,介绍软件工程中的“工程”的由来,讲述了软件工程与计算机科学的......
  • 程序是怎样跑起来的第三章读书笔记
    第三章主要讲了计算机进行小数运算时出错的原因包括3.1将0.1累加一百次也得不到十(首先书本中列举了一个计算机运算错误的例子,代码清单3-1的程序运行后显示器上显示的结果并不是10,程序没错计算器也没发生故障用这个角度展开了计算机是如何处理小数的)3.2用二进制表示小数(对整......
  • 读书笔记
    《程序员修炼之道》是由AndrewHunt和DavidThomas合著的一本经典编程书籍。这本书不仅仅关注编码技术,还强调软件开发中的实践、原则和技巧。以下是一些读者通常提到的主要观点:1.实用性强:书中提供了很多实用的建议,帮助程序员提高编程技能和职业素养。2.注重实践:作者强调实际编......
  • 读书笔记(1)
    第一章概论:1.“软件=程序+软件工程”问题:程序与软件的区别是什么?回答:以前我总是分不清何为程序,何为软件,一直以为比较完善的程序就是一个软件。于是,我上网查了资料,更加明确两者的区别:程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。为进行某......
  • 读书笔记(2)
    第二章个人技术与流程1.2.1.1用VSTS写单元测试在该部分,举的例子是用c#写的,因为之前并没有了解这部分的内容,所以,看起书来不是很懂。希望老师在上课时能用同学们学过的Java或者c语言举例给同学们讲解一下。2.“最好在设计的时候就写好单元测试,这样单元测试就能体现API的语义如......
  • 程序是怎样跑起来的
    读完《程序是怎样跑起来的》第一章后,我对程序的运行原理有了更深入的理解。第一章写了CPU的内部结构{程序流程的示例}{CPU的四个组成部分},CPU是寄存器的集合体{汇编语言,机器语言以及CPU的内部寄存器},决定程序流程的程序设计,条件分支和循环机制{顺序执行,条件分支和循环,CPU运行时标......
  • Go语言精进之路读书笔记第41条——有层次地组织测试代码
    聚焦位于测试包内的测试代码该如何组织41.1经典模式—平铺测试函数各自独立,测试函数之间没有层级关系,所有测试平铺在顶层41.2Unit家族模式测试套件(TestSuite)和测试用例(TestCase)41.3测试固件测试固件是一个人造的、确定性的缓解,在这个环境中进行测试,测试结果是可重复的......
  • 【STM32】使用Keil5加载程序时出现No Target Connected错误的解决办法
    错误情况加载程序时弹出Notargetconnected的Error框,随后弹出Flashdownloadfailed-TargetDLLhasbeencancelled。此时打开设置中Debug选项的Setting窗口,显示SWDIO中Notargetconnected解决办法检查设置里的Debug选项里的调试器型号有没有选对,如下图所示,我用的是S......
  • 使用ConfuserEx代码混淆工具保护你的.NET应用程序
    .NET反编译相关的文章4款免费且实用的.NET反编译工具.NET反编译神器ILSpy怎么用?ConfuserEx.NET混淆工具安装GitHub开源地址:https://github.com/mkaring/ConfuserEx下载地址:https://github.com/mkaring/ConfuserEx/releases ConfuserEx-GUI.zip包解压即可使用:使......