IO
- 什么是IO,IO其实是input (输入),output (输出)两词的缩写。
- IO指的是数据交互 的动作,是计算机系统 与外部设备 之间的数据传输过程,
是计算机与外界交换信息的唯一途径 。- 输入input :外部 数据传入计算机,如键盘打字,硬盘读取数据到内存
- 输出output :计算机 数据传出外部,如内存数据写入硬盘,显示器显示图像
- 如果一个程序说在等待IO 其实本质上 就是在等待输入或者输出
- IO的定义也不局限于 上述的设备IO,还有字符IO,块IO,文件IO,再或者是网络传输中的IO
这里先挖一个坑,关于IO的具体内容,我会在后续博客中填补
存储
- 用于存放数据 的硬件 ,核心作用是长久 保存数据或临时保存数据
- 我们常见 的计算机存储部件 一般就三个 ---> CPU(寄存器,内置缓存) ,内存 ,硬盘
- ⚠️ 这里有个常见的误区 ,很多人喜欢把硬盘的空间叫做 内存,这样是民间的错误说法,内存 只能代指运行内存 (RAM ),而硬盘 这种我们通常称其为外存/存储空间
- 说完注意事项,再来说说他们三者的区别⬇
- 关于CPU,如果你没学过相关的内容不知道寄存器和缓存是什么也没关系,你只需要知道,我们CPU在计算数据的时候,需要容器来存放数据,这就是为什么需要有寄存器,寄存器本质上就是一个处理完数据之后的临时缓冲空间,注意措辞,是临时,所以不可能用来长时间存放数据,速度方面,CPU的构造比后两者都要更加精密,而且CPU的主要用途是作为计算机系统的 "运算与控制中枢"
| 计算机中存储数据的设备 | 处理数据的速度 | 空间大小 | 价格 | 是否会丢失 |
|---|---|---|---|---|
| CPU(寄存器,缓存) | 最快 | 最小 | 最贵 | 丢失 |
| 内存 | 其次 | 其次 | 其次 | 丢失 |
| 硬盘 | 最慢 | 最大 | 最便宜 | 不丢失 |
-
++硬盘的种类++

-
机械硬盘HDD ➡ 机械硬盘的特点 就是便宜 ,主打一个"量大管饱",它的核心部件就是盘片 和磁头
-
当操作系统在读取 数据时磁头 会不断地在盘片上移动 ,正是因为机械硬盘这样的内部构造 和运行原理 ,所以他的性能就会受到磁头重量 ,盘片的惯性 等诸多因素影响。进而导致 机械硬盘++只擅长顺序读写++ ,++不擅长随机读写++ 。⚠️此外机械硬盘 内部是无尘的,如果拆开就 意味着报废(我小时候干过)
-
固态硬盘SSD ➡ 固态硬盘对比机械硬盘就是一个字++"快"++ ,因为固态硬盘无机械运动部件 ,所以没有噪音 ,功耗更低,响应速度 也更快,缺点也明显,那就是贵!还有一个理论上比机械硬盘寿命短,但是在日常使用的强度下,寿命也不见得会短。
文件
- 文件 对于计算机来说,"文件"是一个广义 的概念,可以指 硬盘上的普通文件 ,硬盘上的目录(文件夹)
- 除了目录和普通文件之外,还有很多硬件设备 ,也会被操作系统抽象成 了文件,比如键盘,鼠标,显示器,声卡网卡等(这里和开头提到的IO有联系)
路径关系
- 在windows操作系统中,以此电脑 为根目录 ,按照树 的结构来组织文件 (不是二叉树)

- 像在树形结构 里面一样,每个新的"根"下都可以有很多个"结点",每个文件下 可以有很多文件 ,为了应对这样庞大 的结构体系,操作系统进而衍生出了"路径"这样的概念来描述文件的具体位置
- 举个例子:我们要把Windows目录下文件名字为System32目录的具体位置记录下来,试想一下该如何记录呢?
- 如果按照------先打开xx,再打开xx ...,这样的方式来记录很麻烦,而且并不简洁
- 于是乎人们就开始制定规则


- 想要描述上述文件的位置应该这样表达 ➡
C:\Windows\System32和D:\Hello\1\text.txt - 用斜杠或者反斜杠来分割,如果要找到这个文件,就可以顺着此电脑(根),一步一步的往下走,走到目标文件
路径的不同风格
- 绝对路径 ➡指的是从根出发(Windows是盘符)一层一层最终到达目标文件
- 相对路径 ➡先指定一个"当前目录"/"基准目录" 然后从当前目录出发,找到目标文件
- 如果当前目录是
D:\Hello\1此时相对路径是.\text.txt - 如果当前目录是
D:\Hello此时相对路径是.\1\text.txt - 在实际开发中更多使用的是相对目录
一些文件常识
- 即使是普通文件,根据其保存数据的不同,也经常被分为不同的类型,我们一般简单的划分为文本文件
和二进制文件,分别指代保存被字符集编码的文本和按照标准格式保存的非被字符集编码过的文件。 - 如果你有喜欢打开看游戏或者某些软件的目录里的文件的习惯,你就会发现有些文件通过txt文本打开查看会全是乱码

- 这里的文件是二进制文件,所以会全是乱码
- 如果一个文件中存储的数据都是在指定码表(编码方式)上有据可查,是合法字符,此时这个文件就是文本文件
- 我们常见的编码方式一般是utf8 ,乱码本质 是编码和解码用了不同规则,比如前面我们用utf8的规则打开了二进制文件,就会有乱码,同理如果用utf8的形式打开gbk文件,一样也会出现乱码,所以我们在编写文本或者代码的时候要注意编码方式,避免我们的内容被其他人引用时出现乱码的情况。
- Windows 操作系统上,还有一类文件比较特殊,就是平时我们看到的快捷方式 (shortcut ),这种文
件只是对真实文件的一种引用而已。 - 很多操作系统为了实现接口的统一性,将所有的IO设备都抽象成了文件的概念