目录
一.计算机五大部件
电脑之父——冯·诺伊曼提出了计算机的五大部件:输入设备、输出设备、存储器、运算器和控制器。
我们把键盘和鼠标叫输入设备。
输入设备: 向电脑输入数据和信息的设备。除了键盘。除了键盘鼠标,其他输入设备还包括触摸板、麦克风、摄像头,游戏手柄、扫描仪等。
显示器用来向我们展示画面,显示内容,音箱则播放音乐给我们听,我们管他们叫输出设备。
输出设备: 将电脑中的信息输出给用户的设备。常用的输入设备有:显示器、音箱、打印机、投影仪等。
主板:连接所有其他设备的设备,是其他设备的载体,主板主要是为CPU、内存、显卡、硬盘等提供平台,相当于人体的躯干,关联着各个器官。
CPU:中央处理单元(Cntral Pocessing Uit)的缩写,也叫处理器,是计算机的运算核心和控制核心。人靠大脑思考,电脑靠CPU来运算、控制。让电脑的各个部件顺利工作,起到协调和控制作用。
硬盘:存储资料和软件等数据的设备,有容量大,断电数据不丢失的特点。也被人们称之为“数据仓库”。
内存:1. 负责硬盘等硬件上的数据与CPU之间数据交换处理;2. 缓存系统中的临时数据。3. 断电后数据丢失。
显卡:显示器想要呈现画面,显卡是关键。简单来说,就是负责在显示屏上显示一切信息。打个比方,它就像是人的眼睛,没有了它,电脑就无法驱动形成图像了。显卡性能好,电脑的图形处理能力就高,尤其在玩游戏时更能发现这个(所以很多游戏会要求显卡性能)。对玩家而言,最好选择独立显卡。不过,如果不玩大型游戏,CPU内置核心显卡也基本能满足要求。缺点: 系统功耗有所加大,发热量也较大,额外购买。
电源:将电压220伏的市电转换为低等电压,然后送到主板及各个硬件!供电!电脑运行需要电力,而电源就是为此供电的,也可以说它在为电脑提供一切动力。电源决定了电脑的稳定性。它和人体心脏功能类似,都是提供动力的核心。
CPU:是计算机的运算核心和控制核心,让电脑的各个部件顺利工作,起到协调和控制作用。
硬盘:存储资料和软件等数据的设备,有容量大,断电数据不丢失的特点。也被人们称之为“数据仓库”。
内存:1. 负责硬盘等硬件上的数据与CPU之间数据交换处理;2. 缓存系统中的临时数据。3. 断电后数据丢失。
二.程序是如何执行起来的?
当我们在电脑上打开QQ时(右键-打开 或者双击QQ图标),其实是通过鼠标(输入设备)向CPU发送了一条命令,CPU接收到这条命令后,QQ程序就从硬盘里被加载到内存(加载时不通过处理器,直接从硬盘加载程序到内存里),加载完成后,CPU就开始执行QQ程序。程序执行起来后,CPU可以让QQ程序显示在我们的在显示器上。也就是你看到了QQ 程序运行起来了。如果这个时候,你用QQ截取了一张屏幕的图片,那么这张图片会首先保存到内存,在没有退出截屏状态时,你可以在这张图片上写字、画线条,等你右键保存这张图片的时候,这张图片就会保存到硬盘里。
内存存取数据的速度比硬盘的存取速度快了10倍, 在某些环境里,硬盘和内存之间的速度差距可能会更大。
而CPU的速度比内存不知还要快多少倍。当我们把程序从硬盘放到内存以后,CPU就直接在内存运行程序,这样比CPU直接在硬盘运行程序就要快很多。
内存解决了一部分CPU运行过快,而硬盘数据存取太慢的问题。 提高了我们的电脑的运行速度。
内存就如同一条“高速车道”一般,数据由传输速度较慢的硬盘通过这条高速车道传送至CPU进行处理!
但内存是带电存储的(一旦断电数据就会消失),而且容量有限,所以要长时间储存程序或数据就需要使用硬盘。
三者之间的关系:
简单来说,硬盘用来存储我们的程序和数据,当我们运行程序的时候,CPU首先接受到我们的命令,之后CPU是告诉硬盘,我要运行你存储的程序A,你把程序A送到内存去。CPU对内存说,我让硬盘把程序A送到你这里来了,你保存一下。 等程序A被完整的送到内存之后。CPU就开始执行程序A。
过程就像上面说的,我们在举一个接近我们生活的例子。
如果说把硬盘比喻成一个大仓库,CPU比喻成加工车间,那么内存就是一个临时的小仓库。从距离上来说, 相比内存到CPU的距离和硬盘到内存的距离,内存和CPU的距离更短。
硬盘(大仓库)用来保存车间需要用的原料和最终生产出来的商品。仓库太大,取出原料和存储商品太慢,耗时间。
内存(临时小仓库):原料会先放到这里,小仓库,可以很快的找到需要的原料或商品。
CPU(车间):从内存(小仓库)里拿到原料,生产商品。中间会有半成品,半成品可以放在内存(小仓库)里。
三.Arp协议
发包分三步:
1.计算是否在同一个广播域
2.利用arp协议获取mac地址
3.发包
1.如果在同一个广播域:
例如pc1要向pc3发包,流程如下:
(1.首先计算pc1和pc3在同一个广播域(利用ip进行计算)
(2.arp协议获取pc3的mac地址
格式:原mac 目标mac 原ip 目标ip
具体:pc1mac FF:FF:FF:FF:FF:FF 192.168.11.10 192.168.11.11
(在同一个广播域所有机器都可以收到这个数据包,然后开始解包,发现ip地址不是自己的就丢弃,发现ip是自己的就返回自己的mac地址)
返回格式:自己的mac 目标mac 自己的ip 目标ip
具体:pc3mac pc1mac 192.168.11.11 192.168.11.10
这样pc1就受到了pc3的mac地址
(3.开始发包
发包格式:原mac 目标mac 原ip 目标ip 数据部分
具体:pc1mac pc3mac 192.168.11.10 192.168.11.11 数据
2.如果不在同一个广播域:
例如pc1要向pc4发包,流程如下:
(1.首先计算pc1和pc3不在同一个广播域
(2.arp协议获取pc1所在广播域的网关1的mac地址
格式:自己的mac 目标mac 自己的ip 目标ip
具体:pc1mac 网关1mac 192.168.11.10 网关ip
网关1解包发现是要自己的mac地址后,网关就会响应,把自己的mac地址返回给pc1
返回格式:网关1的mac 目标mac 网关1的ip 目标ip
具体:网关1mac pc1mac 网关1ip 192.168.11.10
Pc1获取到网关1mac地址后开始发包
(3.pc1开始给pc4发包:
发包格式:原mac 目标mac 原ip 目标ip 数据部分
具体:pc1mac 网关1mac 192.168.11.10 172.16.45.10 数据
Pc4返回数据流程一样,这里不做赘述。
四.单位转换:
1GB=1024MB
1MB=1024KB
1KB=1024B (Byte == 字节,简写B)
1B=8b (bit == 二进制位,计算机数据最小的单位,简写b)
五、数据类型:字节bytes
表现形式:name = b”baby”
内部原理
Utf-8编码下:
01100010 b
01100001 a
01111001 y
如果是字符串类型的baby,那默认是Unicode,一字符占4个字节
如果有中文:
表现形式:b'\xe5\xa4\xa9\xe4\xb8\x8b'(“天下“的表现形式)
\x表示16进制
Utf-8编码下:
例如:\xe5表示00100101,其中e前四位,5后四位
因为是前四位,一共16中变换形式,所以用16进制刚好可以表现(\x)
所以\xe5 正确的表现形式是 1110 0101(就是十六进制和二进制的转换)
六、字符串和字节的关系
内存:
00000000 00000000 00000000 01010100 unicode A
01010100 utf-8 A
01010100 01010100 gbk A
01010000 00000100 gb2312 A
... …
硬盘:
01010100 utf-8 A
01010100 utf-8 A
01010100 gbk A
01010100 gb2312 A
... ...
本质上,内存中都是010101,具体是什么样子的010101,需要根据编码来决定。不同编码的010101,互相不认识。
在python3里:
默认解释器的编码:utf-8 -> 010101010101
特殊的:
字符串(str):
表现: a = "alex"
本质: 01010101,unicode
字节(bytes):
表现: a = b"alex"
本质: 01010101,某种编码: utf-8,gbk,.....
总结:
python3:
str --> uniocde
bytes --> gbk,utf-8.....
字符串类型的表现形式是 name = “baby” 默认是用Unicode编码的,当字符串需要网络传输或者硬盘储存时,需要将Unicode编码的str准换为其他编码的bytes,以节省空间。