读《计算机是怎样跑起来的》体会
缘起
在几年的工作和学习中,发现计算机知识体系尤为重要,自己还有所欠缺,想要从头到尾好好的夯实一下计算整个体系的相关知识,搭建计算机知识体系架构。因此决定细致的重读阅读这些计算机经典书籍,该书面向初学者从原理开始娓娓道来,既可以对以往不稳固的根基夯实,还可以由这本小书缘起,正式进入 CS 的世界,为接下来的计组打基础,在此记录读书文摘。
个人总结感悟:
先说说看完全书的感受吧,这本书可以说用浅显易懂的语言加上生动的图解方法把计算机的流程从硬件到软件给大致全面解释,使初学者明白了自己要学什么,以后要做什么,可以说对初学者启发很多,是真真正正的入门书。
以下文字为阅读全书后各章节要点总结
1. 计算机的三大原则
计算机是执行
输入
、计算
、输出
的机器程序是
指令与数据
的集合计算的处理方式有时与人的思维习惯不同
对于计算来说什么都是
数字
0 和 1 ,
1.1 计算机的原理
通过简单的逻辑门路组合,集成封装成更大的集成电路,层层封装抽象,实现不同的功能,并且,所有数据都是靠电信号转换进行交互计算与表示(高电平与低电平,0,1),所以对计算机来说都是数字 0-1。数据通过时钟频率(时钟信号)振动发送的电信号 0 或者 1 传递给 cpu,cpu 根据这些 0 和 1 不同的组成方式长度,解析成不同的数据,并执行,最后返回重新封装成人可以识别的数据
2. 计算机的硬件组成
2.1 计算机核心硬件组成
CPU
计算机大脑,负责解释执行程序内存
负责存储程序与数据IO
输入输出设备,负责连接外围设备时钟信号:负责驱动 cpu 运转的电信号,输出该信号的元器件为
时钟发生器
,内部带有晶振
根据自身频率(振动的次数)产生时钟信号
,一般一秒可以振动多次,振动一次发送一次电信号(0 或者 1)
该振动频率可以衡量 cpu 的运行速度,一般为 Hz
2.2 计算机中进行数据操作的总线
计算机通过地址总线与数据总线, 使 cpu 可以与内存、IO 设备进行数据的输入输出
地址总线引脚: 用于指定输入输出数据时的源头或目标地址
有了存储数据的地址就可以开始数据的输入输出了
数据总线引脚: 通过该引脚使用地址总线引脚提供的地址进行数据的输入输出
控制引脚: 引脚上的输入输出电信号用来进行控制操作,主要控制IC(集成电路)
寄存器: 位于 CPU 与 IO 中的数据存储器,存储数据
DMA: 直接存储器访问,不通过 CPU 直接从外部设备读写内存(硬盘等设备读取内存时就是使用此种方式)
3. 汇编
机器语言: 由二进制数字构成的程序,CPU 可以直接对其进行解释执行,由 0 和 1 组成,每个组成的指令表示特定含义
汇编语言: 助记词,根据机器语言 0、1 所组合指令功能的英语单词名称取的相似昵称,并将这个昵称赋给 0、1 指令组合,编写时使用助记词编写,比直接使用 0、1 编写更容易,实现的功能逻辑与机器语言一致
CPU 中的标志寄存器: 存储进行过算数运算、逻辑运算、比较运算等指令后的状态,不直接存储数据,如运算结果是否为 0,是否有溢出,是否产生了负数。
4. 程序中的流程
主要有三种流程构成: 顺序
(低内存地址到高内存地址顺序执行,因为 pc 寄存器会自动加 1),分支
, 循环
(分支循环在底层都是 pc 寄存器的值设定为要跳转的目的地的内存地址来实现的)
CPU 中的程序计数器寄存器: 负责存储内存地址,该地址指向下一条即将执行的指令,每解释执行完一条,寄存器的值就会自动被更新为下一条指令的地址,大多数情况下该值一般只会增加
特殊流程: 中断处理、事件驱动
中断处理: 计算机具有硬件上处理中断的能力,不需要程序员编写实现,是指计算机使程序的流程突然跳转到程序中的特定地方,这样的地方成为,中断处理例程,通过 cpu 硬件功能实现,处理完在回到原来流程
事件驱动: 常用于 GUI 开发,直白点说就是 2 个程序进行通信,如,敲击鼠标的事件,系统监听到该动作做出响应
5. 算法
算法中解决问题的步骤是明确且有限的,计算机解决问题不是靠直觉,而是机械的执行(即所有的步骤不用动脑子,按照列出的步骤,机械的去一步步执行,一定可以做出来),程序员需要了解并熟悉经典算法
算法参考书: >算法技术手册 、 算法精讲:C 语言描述
主要典型算法:
善用计算机的处理速度:某些问题难以算法优化可以利用计算机的处理速度简单暴力穷举推算
善用编程技巧提升代码速度:如哨兵等
善于利用数字间的规律:因为所有的信息在计算中都可以使用数字表示
算法思考方法:
先在纸上用文字或者图表描述出解决问题的步骤,在编写代码
多绘制利用流程图分析
把数据代入流程,看是否能得到预期结果
代入流程验算时使用简单的数据
6. 数据结构
在一般计算机中,内存内部被分割成若干个数据存储单元,每个单元存储 8 比特的数据(8比特=1字节byte)
为了区分各个单元,每个单元被分配了一个编号,这个编号就是内存的地址
变量是程序中存储数据的最小单元,每个变量都对应着物理上的一块内存空间
数据结构的基础:数组
数组
是数据结构的基础,因为数组反应了内存的物理结构本身,在内存中存储的数据是连续空间分布的,其之所以方便,是因为可以将循环计数器的值与数组的索引对应起来使用
典型数据结构:
7. 面向对象
面向对象三大特征: 封装、继承、多态
不同角度理解:
面向对象编程通过把组件拼装到一起构建程序
面向对象编程能够提升程序的开发效率和可维护性
面向对象编程是适用于大型程序的开发方法
面向对象编程就是在为现实世界建模
面向对象编程可以借助
UML
设计程序面向对象编程通过在对象间传递消息驱动程序
总结: 面向对象编程就是通过把组件拼装到一起进行编程的方法
类与对象的区别: 类是对象的定义(对象的属性、方法)
,而对象是类的实例,只有使用实例化的对象才能调用类的属性方法
类的三种使用方法:
调用类中的个别方法(变量,方法)
在类的定义中包含其他的类,组合
通过继承已存在的类定义出新的类
UML 中规定的 9 种图
8. 数据库
数据库系统构成三要素: 数据文件、DBMS、应用程序
键: 用于设定表与表之间的关系
索引: 提升数据检索速度的机制,起到目录作用
用主键与外键在表间建立关系,可以把多对多关系分解成两个一对多关系,进行卸藕
索引
是数据检索与排序速度的内部机制
索引表
是一种数据结构,存储着字段的值以及字段所对应记录的位置
如:在顾客表的顾客姓名上设置了索引,DBMS 就会创建一张索引表,表中有 2 个字段、分别存储着顾客姓名和位置(所对应的记录在数据文件中的位置)
查询时: DBMS 先在索引表中进行数据的检索和排序,然后在根据位置信息从原来的数据表中把完整的记录取出来
提升数据检索和排序速度的代价:插入或更新速度的降低,因此需要合理使用索引
设计系统时: 优先设计数据库、然后在设计用户界面
9. 网络
9.1 以太网连接机制:
以太网中传输数据需要先确定在网线上是否有其它计算机正在传输电信号、其必须确保没有人占用网络,然后才能发送自己想传输的电信,谁先抢到网络的使用权谁就先使用。如果多台计算机同时都想发送,需让这些计算机等待一段长度随机的时间后在重新发送电信号
解决这个问题的机制是采用CSMA/CD带冲突检测的载波监听多路访问
9.2 CSMA/CD 带冲突检测的载波监听多路访问
载波监听: 这套机制会去监听表示网络是否正在使用的电信号
多路复用: 多个设备可以同时访问传输介质
带冲突检测: 这套机制会去检测因同一时刻的传输而导致的电信号冲突
9.3 MAC 地址
在以太网中,使用 MAC 地址来指定电信号的接收者,通过广播发送信号,每台计算机都能收到电信号,计算机收到后会进行判断(目标 mac 地址与自身 mac 对比匹配),如果是发送给自己的则接受,否则丢弃
MAC 地址是网卡物理地址: 每个地址都独一无二,使用12位16进制数表示
(每个数占 8 比特),前 6 位厂商编号
,后六位为产品编号
在 TCP/IP 网络中,传输的数据都会携带 MAC 地址与 IP 地址
9.4 IP 地址
IP地址
由 32 位二进制整数组成,每 8 位为一组,常用点分十进制表示,范围0.0.0.0-255.255.255.255
通常把 IP 地址中表示分组的地址称为网络地址
,表示各台计算的部分称为主机地址
子网掩码: 表示 IP 地址中从哪到哪是网络地址,哪到哪是主机地址,其展开为 32 位的二进制表示时,为 1 的是网络位,为 0 的是主机位
常见 IP 地址中的相关地址: 网络地址、广播地址、网关地址
路由器: 决定数据传输路径的设备,工作原理是查看数据包中的IP
地址中的网络地址部分,发现不是发送给 Lan 内计算机的,就把它发送到 Lan 外
路由器中的路由表:用来记录该把数据转发到哪里,下一跳地址是哪,路由器只会记录与之相邻的路由路径
路由器最短路径优先算法:如果有多条地址可达,使用最短路径地址转发(如经过的跳数)
不需要转发:如果需要发送的数据就在本地 Lan 中,则不需要转发,使用二层直接发送
ARP 协议:
在互联网中传输的数据都附加了 IP 地址,但是最终接收数据的还是 MAC 地址,因此出现了ARP
协议,将 IP 地址转换为 MAC 地址的协议
ARP 使用广播方式向 Lan 中的计算机发送请求,如告诉我谁的 IP 地址是 192.168.3.1,局域网中的计算机收到后进行判断,与自己的匹配则做出回应,否则丢弃,这样 MAC 地址与 IP 地址的绑定关系就清楚了,为了提高效率,ARP 中使用了 ARP 缓存表,不用每次都广播
TCP/IP
TCP/IP 表示在网络中同时使用了 TCP、IP 协议
IP协议
用于指定数据发送目的地的 IP 地址以及通过路由器转发数据
TCP协议
则用于通过数据发送者和接收者相互回应对方发来的确认信号可靠的传输
IP,区分网络主机
、TCP/UDP 区分主机上的不同应用
TCP 协议还规定,发送者需要将元素的数据分割成包为单位的数据单元
,然后在发送,接收者把收到的包拼接在一起后在还原数据
10. 数据加密
信息摘要: 指从数字签名对象的文件整体中计算出的数值,对比信息摘要可以证明文件是否被篡改,加密处理过的信息摘要就是数字签名
加密技术: 虽然存在各种加密技术,但其中的基本手段无外乎还是字符编码的变换,即将构成明文的每个字符的编码变换成其它的数值,通过反转变换过程就可以还原。
一般秘钥越长解密越困难
对称加密:加密和解密都使用同一种秘钥,(不安全,存在将秘钥传递给对方时泄露的风险),秘钥不公开
非对称加密:加密与解密不使用同一个秘钥,分别使用公钥与私钥两种秘钥,公钥公开,私钥保密(该加密常用实现方式是 RSA 加密技术)
数字签名: 非对称加密技术使用者,可以证明数据的发送者是谁
数字签名常见信息摘要算法:MD5
数字签名与 RSA 相反,使用私钥加密,公钥解密
接收者重新算出的信息摘要与发送者加密的信息摘要匹配,则证明文件传输过程中没被修改,因为数据是使用发送者的私钥加密的,所以接收者才能使用发送者的公钥解密
11. XML 标记语言,现在很少使用
12. SE 负责监管计算机系统的构建,类似产品经理
版权声明: 本文为 InfoQ 作者【听风】的原创文章。
原文链接:【http://xie.infoq.cn/article/59b1b42d85c7a87a5e776c6ee】。文章转载请联系作者。
评论