【第八周】性能优化(二)
文件与硬盘I/O
磁盘介质
机械硬盘
固态硬盘
数据存储结构
B+树
LSM树
文件控制块
RAID 队里磁盘冗余阵列
HDFS
数据结构与算法
算法衡量指标
时间复杂度
空间复杂度
数组
存储空间连续
数据类型一致
随机快速读写(追加写的写)
链表
存储空间可以不连续
存储内容包含下一个数据袁术的内存指针
Hash表
先hash再存入地址指针
栈
后进先出
线程调用栈
队列
先进先出
消息队列
树
二叉排序树
平衡二叉树
红黑树
跳表
常用算法
穷举
递归
贪心
动态规划
网络通信协议
网络通信历程
OSI七层模型和TCP/IP四层模型
网络数据包格式
http协议演进
1.0 每个请求响应都会建立TCP连接
1.1 允许客户端复用TCP连接, 但任意时间点上每个连接只能执行一次请求/响应交换
2.0 引入流的概念,允许不同的HTTP并发地复用到同一TCP连接上,但当多个HTTP请求复用一个TCP连接,如果前面的请求/响应没有处理完,后面的请求/响应也无法处理,也就是会出现队头堵塞现象。
3.0 不是使用 TCP 作为会话的传输层,而是使用 QUIC (一种新的互联网传输协议)。该协议在传输层将流作为一等公民引入。多个QUIC 流共享相同的 QUIC 连接,因此不需要额外的握手和慢启动来创建新的 QUIC 流。但 QUIC 流是独立的,因此在大多数情况下,只影响一个流的丢包不会影响其他流,这是因为 QUIC 数据包封装在 UDP数据包。
非阻塞网络I/O
非阻塞 I/O:I/O 操作立即返回,发起线程不会阻塞等待。
非阻塞 read 操作:
Socket 接收缓冲区有数据,读 n 个(不保证数据被读完整,因此有可能需要多次读)。
Socket 接收缓冲区没数据,则返回失败(不会等待)。
非阻塞write:
Socket 发送缓冲区满,返回失败(不会等待)。
Socket 发送缓冲区不满,写 n 个数据(不保证一次性全部写入,因此可能需要多次写)。
系统I/O复用方式
select
poll
epoll
评论