• python电脑结构、ARP协议、单位转换、字节bytes、字符串与字节关系等知识总结


    目录

    一、计算机五大部件

    二、程序运行的过程

    三、ARP协议

    四、单位转换

    五、数据类型:字节bytes

    六、字符串和字节的关系

    一.计算机五大部件

    电脑之父——冯·诺伊曼提出了计算机的五大部件:输入设备、输出设备、存储器、运算器和控制器。

    我们把键盘和鼠标叫输入设备。

    输入设备: 向电脑输入数据和信息的设备。除了键盘。除了键盘鼠标,其他输入设备还包括触摸板、麦克风、摄像头,游戏手柄、扫描仪等。

    显示器用来向我们展示画面,显示内容,音箱则播放音乐给我们听,我们管他们叫输出设备。

    输出设备: 将电脑中的信息输出给用户的设备。常用的输入设备有:显示器、音箱、打印机、投影仪等。

    主板:连接所有其他设备的设备,是其他设备的载体,主板主要是为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,以节省空间。

  • 相关阅读:
    AES密码算法详解(转自https://www.cnblogs.com/luop/p/4334160.html)
    快速排序和插入排序——我的代码
    北京大学1001ACM——高精度类型题总结
    C语言数组不知道输入几个整数以及输入一直到为0
    C语言并查集例子——图问题巧用parent[]数组
    C语言快速判断素数——不超时
    C语言如何才能使用bool类型
    C语言两个特别大的整数类型相加超出范围使用两个技巧
    C语言存30位数字长的十进制方法
    dockerfile相关命令
  • 原文地址:https://www.cnblogs.com/zrh918/p/11216259.html
Copyright © 2020-2023  润新知