写点什么

【第八周】性能优化(二)

用户头像
云龙
关注
发布于: 2020 年 11 月 15 日

文件与硬盘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

  • 



用户头像

云龙

关注

还未添加个人签名 2018.03.30 加入

还未添加个人简介

评论

发布
暂无评论
【第八周】性能优化(二)