这是你没见过的不一样的redis

文件硬盘I/O

存储金字塔

在这里插入图片描述

寄存器 CPU 中的Regs速度与CPU同步

SRAM 通电状态的话数据一直保持,断电数据丢失

DRAM需要不断刷新但是实现复杂,导致访问效率低于SRAM

SSD 固态硬盘

HDD 硬盘,指传统的机械硬盘

硬盘

HDD :
在这里插入图片描述
【文章福利】小编推荐自己的linuxC/C++语言交流群:832218493!整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!~

机械硬盘组成及细分

盘片

磁头

悬臂

磁道:

磁道分成扇区,盘面上同一扇区组成柱面

几何扇区与扇区

在这里插入图片描述

蓝色部分式扇区,几何扇区时到

指标参数

转速单位 RPM:每分钟旋转圈数

平均时延 把几何扇区对准悬臂的时间

7200转磁盘 每秒 120圈, 240个半圈 1/240 = 4.17ms

5400转磁盘 每秒 90圈, 180个半圈 1/180 = 5.55ms

平均寻道时间 :HDD平均寻道时间在 4-10ms

一个7200转的磁盘找到一个数据需要 8-14ms 5400转的需要9-15ms, 对应的

7200转的IOPS 1/8ms = 125IOPS 到 1/14ms =70IOPS

5400转的IOPS 1/9ms = 111IOPS 到 1/15ms = 66IOPS

SSD

SSD实现

SDD使用了类似SRAM,电容电压模式存放数据 , SDD速度比传统磁盘速度快,但是耐用性差。

按照最小存储单位分为四类:

SLC

MLC

TLC

QLC

同样的存储单位上要存的数据位逐渐增大,内部操作复杂 速度也是逐步减慢。

SSD就是一块电路板子,像下面这样。

在这里插入图片描述

  SSD单位是Page, 删除单位Block, SLC 的芯片,可以擦除的次数大概在 10 万次,MLC 就在 1 万次左右,而 TLC 和 QLC 在几千次左右。 这直接影响了其价格

SSD优化

磨损均衡-FTL:通过引入中间层处理来自操作系统的请求,均衡各个磁盘块的读写请求。 如果一个物理块上数据擦写次数多, 可以将其移动到擦写请求少的物理块上。

TRIM标识数据是否失效, 防止移动已经失效的数据

留存足够的空余空间,防止写入放大(为了写入一个数据要移动更多的数据)

存储数据结构

B+ 树

 排序树,一个块存储多个数据,非叶子节点还存放指针,使用指针完成索引, 通过4级结构能访问几千万记录。 问题在于 数据块离散存储, 每次根据索引进行查找还是要进行多次读写。 性能较差。 

在这里插入图片描述

一个简单的B +树示例,将键1–7链接到数据值d1-d7。 链接列表(红色)允许快速有序遍历

LSM 树

数据连续存储, 内存中构建树, 合并时以日志方式进行逐级合并。

在这里插入图片描述

存储管理
文件控制块 :

     Linux inode/ windows FAT ,通过控制块记录数据元数据, 通过控制块获取数据块最终获取数据

     通过多级索引可以访问更多的数据块。

RAID:

磁盘阵列:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

HDFS

在这里插入图片描述

类比linux文件系统 NameNode 类似iNode节点 DataNode类似Blocks

数据结构算法

相关概念

时间复杂度

空间复杂度

NP问题

P 问题:能在多项式时间复杂度内解决的问题。

NP 问题:能在多项式时间复杂度内验证答案正确与否的问题

 数独和最短路径查找属于NP问题

数据结构
数组

链表

hash表

队列

二叉树

二叉排序树

平衡二叉树

旋转二叉树

红黑树

跳表

常用算法

穷举

递归

贪心 :改进:迪杰斯特拉算法

动态规划

遗传算法

网络通讯

通讯模型

OSI模型:

应用层: Application Layer

表示层: Presentaion Layer

会话层: Session Layer

传输层: Transport Layer

网络层: Network Layer

数据链路层: Data Link Layer

物理层: Physical Layer

TCP/IP

应用层: Application Layer

传输层: Transport Layer

网络互联层: Internet Layer

网络访问层: Network Access(Link ) Layer

数据包格式 :

物理层:二进制数据

链路层:帧 数据链路层负载

网络层;IP IP负责均衡

传输层:TCP协议 三次握手, 四次挥手

应用层:

HTTP 1.0.

HTTP 1.1 复用链接 keepalve

HTTP 2 引入"流"

HTTP3 使用QUIC协议

通讯方式:
socket,端口

服务器-客户端

服务器多线程-客户端

服务器线程池-客户端

内核处理:

Socket linux内核处理过

网络数据到达网卡

通过中断通知cpu

拷贝数据到Socket接收缓冲

拷贝完成,唤醒线程A

阻塞I/O:
BIO Blocking I/O 一直等到操作完成。

非阻塞I/O :
Java NIO

多路复用 select poll epoll

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值