侧边栏壁纸
博主头像
小吴同学博主等级

去学习,去读书,去受教育,去看山川河流,去远方!!!

  • 累计撰写 15 篇文章
  • 累计创建 9 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

读书笔记-《计算机是怎样跑起来的》

小吴同学
2022-11-10 / 0 评论 / 13 点赞 / 168 阅读 / 3,385 字

简介:本书倡导在计算机迅速发展、技术不断革新的今天,回归到计算机的基础知识上。通过探究计算机的本质,提升工程师对计算机的兴趣,在面对复杂的最新技术时,能够迅速掌握其要点并灵活运用。

第一章 计算机的三大原则

计算机三大原则:计算机是程序输入、计算和输出的机器;程序是指令和数据的集合;计算机的处理方式有时候和人不同。

数据分为两类:一类是作为指令执行对象的输入数据,另一类是从指令的执行结果得到的输出数据。在编程时称为“变量”。

计算机进化的目的只有一个——与人类更加相近。要想贴近人类,就必须从计算机的处理方式中摒弃不符合人们思维习惯的部分。

若与十几年前相比,诸位身边的个人计算机也在逐渐贴近人类。计算机进化的最终形态就是机器人了,有着与人类一样的外表,可以使用人类的语言。


第二章 尝试着制造一台计算机吧

制作微型计算机所需的基础元件只有3个,CPU、内存和I/O。

CPU是计算机的大脑,负责解释、执行程序;内存负责存储程序和数据;I/O是Input和Output(输入、输出)的缩写,负责将计算机和外部设备(周边设备)连接在一起。

作为计算机大脑的CPU只能解释执行一种编程语言,那就是靠罗列二进制数构成的机器代码(原声代码)。


第三章 体验一次手工汇编

比起C语言或BASIC等高级语言,汇编语言的语法简单、指令数少,说不定更加容易学习,可如今使用汇编语言的人却是凤毛麟角,使用汇编语言编程时,要事无巨细地列出计算机的行为,所以程序会变得冗长繁复。


第四章 程序像河水一样流动着

PC又称程序计数器,负责存储内存地址,该地址指向下一条即将执行的指令。每解释执行完一条指令,PC寄存器的值就会自动被更新为下一条指令的地址。

程序流程总共有三种。顺序执行、条件分支和循环。

顺序执行是按照指令记录在内存中的先后顺序依次执行的一种流程;循环则是在程序的特定范围内反复执行若干次的一种流程;条件分支是根据若干个条件的成立与否,在程序的流程中产生若干个分支的一种流程。无论规模多么大复杂的程序,都是通过以上三种流程组合起来实现的。

流程图是表示程序流程(Flow)的图(Chart)。流程图不依赖于特定的编程语言,可以认为编程语言是将流程图上的流程用文字(程序)重现出来。

编程语言的差异正如一种自然语言中各地方言的差异一样。只要给出详细的流程图,就可以编写出基本相同的程序。

几乎所有的程序从整体来看都具有一个一成不变的流程,那就是“初始化处理”—>“循环处理”—>“收尾处理”。


第五章 与算法成为好朋友的七个要点

算法的定义是"被明确定义的有限个规则的集合,用于解决有限的步骤问题"。

计算机不能自发地思考。因此计算机所执行的由程序表示的算法必须是某机械的步骤构成。所谓”机械的步骤“,就是不用动任何脑筋,只要按照这个步骤就一定能完成的意思。

思考算法的时候,要先在纸上用文字或图表描述出解决问题的步骤,而不要立刻开始编写代码。


第7章 成为会使用面向对象编程的程序员吧

所谓企业级的程序,指的是对可维护性有较高要求的程序。可维护性体现在当程序投入使用后对已有功能的修改和新功能的扩充上。如果所维护的程序是用一组类组装起来的话,那么维护工作就轻松了。之所以这样说,是因为作为维护对象的函数和变量,已经被汇聚到名为类的各个组中了。

在面向对象编程中,类和对象被看作是不同的概念而予以区别对待。类是对象的定义,而对象是类的实例(Instance)。

在面向对象编程中程序员可以分工,有的人负责创建类,有的人负责使用类。创建类的程序员需要考虑类的复用性、可维护性、如何对现实世界建模以及易用性等,而且还要把相关的函数和变量汇集到类中。这样的工作称为“定义类”。


第八章 一用就会的数据库

适合存储大规模数据的是关系型数据库(Relational Database)。在关系型数据库中,数据被拆分整理到多张表中,同时表与表之间的关系也可以被记录下来。

据库系统的构成要素包括“数据文件”“DBMS”“应用程序”三部分。

在小型系统中,把三个要素全部部署在一台计算机上,称作“独立型系统”。在中型系统中,把数据文件部署在一台计算机上,并且使数据文件被部署了DBMS和应用程序的多台计算机共享,这样的系统被称为“文件共享型系统”。在大型系统中,把数据文件和DBMS部署在一台(或者多台)计算机上,然后用户从另外一些部署着应用程序的计算机上访问,这样的系统被称作“客户端/服务器型系统”。

部署着数据文件和DBMS的计算机是服务器(Server),即服务的提供者;部署着应用程序的计算机是客户端(Client),即服务的使用者。如果把服务器和客户端之间用互联网联结起来,就形成了Web系统。在Web系统中,一般情况下应用程序也是部署在服务器中的,在客户端只部署Web浏览器

首先从设计数据库开始。而设计数据库的第一步是从“你想要了解什么”的视角出发找出需要的数据。如果是自己使用的数据库,那么就问问你自己想要了解什么。如果是为客户设计数据库,就要去询问对方想要了解什么。

在关系型数据库中,把录入到表中的每一行数据都称为记录,把构成一条记录中的各个数据项(在本例中是商品名称、单价等)所在的列都称作字段。记录有时也被称为行或元组(Tuple),字段有时也被称为列或属性(Attribute)。上面提到的属性(数据的类型)就是设置在字段上的。为了代表字段所存储数据的内容还要为每个字段起一个名字。

在设计关系型数据库时,还要进行“规范化”。所谓规范化,就是将一张大表分割成多张小表,然后再在小表之间建立关系,以此来达到整理数据库结构的目的。通过规范化,可以形成结构更加优良的数据库。

为了在表间建立关系,就必须加入能够反映表与表之间关系的字段,为此所添加的新字段就被称为键(Key)。首先要在各个表中添加一个名为主键(Primary Key)的字段,该字段的值能够唯一地标识表中的一条记录

表之间的关系使记录和记录关联了起来。记录之间虽然在逻辑上有一对一、多对多以及一对多(等同于多对一)三种关系,但是在关系型数据库中无法直接表示多对多关系。这是因为在多个字段中以顺藤摸瓜的方式查找数据并不是那么容易的。

当出现多对多关系时,可以在这两张表之间再加入一张表,把多对多关系分解成两个一对多关系。加入的这张表被称作连接表(Link Table)。

索引表是一种数据结构,存储着字段的值以及字段所对应记录的位置。

索引表中的字段数更少,所以可以更快地进行数据的检索和排序。当查询数据时,DBMS先在索引表中进行数据的检索和排序,然后再根据位置信息从原来的数据表中把完整的记录取出来。索引所起的就是“目录”的作用。与图书的目录一样,数据库的索引也是一种能够高效地查找目标数据的机制。

对数据库进行的操作的种类通常称为CRUD。CRUD由以下四种操作的英文名称的首字母组成,即记录的插入(CREATE)、获取(REFER)、更新(UPDATE)、删除(DELETE)。数据库应用程序只要能够对记录进行CRUD的操作就可以了。当然,为了满足用户的需求,为应用程序相应地增加统计、打印等功能的情况也是存在的。

事务由若干条SQL语句构成,表示对数据库一系列相关操作的集合。


第九章 通过七个简单的实验理解TCP/IP 网络

IP地址是一个32比特的整数,每8比特为一组,组间用“.”分隔,分成4段表示。8比特所表示的整数换算成十进制后范围是0~255,因此可用作IP地址的整数是0.0.0.0~255.255.255.255,共计4294967296个。

路由表由5列构成。Network Destination、Netmask、Gateway、Interface这四列记录着数据发送的目的地和路由器的IP地址等信息。Metric这一列记录着路径的权重,这个值由某种算法决定,比如数据传输过程中经过的路由器的数量。如果遇到有多条候选路径都可以通往目的地的情况,路由器就会选择Metric值较小的那条路径。

选择Metric值较小的那条路径。在路由表中还有如下的规则:如果数据的发送目的地就在本LAN中,则可以直接发送数据而无需经过路由器转发;反之如果在LAN外(或发送目的地的IP地址不在路由表中),则需要经过路由器转发。细节虽然有些复杂,但是只要了解了大体上的规则就可以了。


第十章 试着加密数据吧

数据一旦以明文的方式在网络中传输,就会有被盗取滥用的危险,因此要对明文进行加密,将它转换成为“密文”。当然密文也仅仅是一串数字,但是如果是把密文显示在屏幕上,那么在人类看来显示的也只不过是读不懂、没有意义的字符序列罢了。

虽然存在各种各样的加密技术,但是其中的基本手段无外乎还是字符编码的变换,即将构成明文的每个字符的编码分别变换成其他的数值。通过反转这种变换过程,加密后的文本数据就可以还原。通常把密文还原成明文的过程(即解读密码的过程)称为“解密”。


第十一章 XML究竟是什么

HTML是给人看的,而XML是给计算机看的


13

评论区