架构师训练营 - 第八周 - 总结
一、数据结构与算法
时间复杂度与空间复杂度
- 时间复杂度:算法执行语句的次数 
- 空间复杂度:临时占用存储空间的大小 
数组
- 特点: 
- 必须要内存中一块连续的空间 
- 数组中的数据都具有相同的数据类型 
- 访问数据时间复杂度 O(1) 
链表
- 特点: 
- 不需要连续的空间存储 
- 查找元素只能遍历链表 
- 增删数据快 
- 查找数据时间复杂度:O(N) 
Hash 表
- 特点:可快速访问数据、快速增删数据 
- key 可能发生冲突 
栈
- 特点:后进先出 
队列
- 特点:先进先出 
- 如:生产者消费者 
树
- 二叉排序树 
- 左子树上所有节点的值均小于或等于它的根节点的值 
- 右子树上所有节点的值均大于或等于它的根节点的值 
- 左右子树也分别为二叉排序树 
- 平衡二叉树 
- 从任何一个节点处罚,左右子树深度只差的绝对值不超过 1 
- 左右子树也分别为平衡二叉树 
- 红黑树 
- 每个节点只有 2 种颜色:红、黑 
- 根节点是黑色的 
- 每个叶子节点都是黑色的空节点 
- 从根节点到叶子结点,不会出现两个连续的红色节点 
- 从任何一个节点出发,到叶子结点,这条路径上都有相同数目的黑色节点 
- 增删节点时,红黑树通过染色和旋转,保持红黑树满足定义 
- 红黑树与平衡二叉树的比较 
- 红黑树最多只需 3 次就会重新达到红黑平衡,时间复杂度 O(1) 
- 在大量增删的情况下,红黑树的效率更高 
- 红黑树的平衡性不如平衡二叉树 
- 红黑树的查找效率要差一些 
跳表
- 链表 + 多级索引 
- 空间换时间 
- 时间复杂度:O(logn) 
- redis 使用跳表 
常用算法
- 穷举算法 
- 递归算法 
- 贪心算法 
- 动态规划 
二、网络通信协议
OSI 七层模型
- 应用层 
- 表示层 
- 会话层 
- 传输层 
- 网络层 
- 物理层 
TCP/IP 四层模型
- 应用层 
- 传输层 
- 网络互联层 
- 网络访问(链路)层 
非阻塞 IO
- IO 操作立即返回,发起县城不会阻塞等待 
三、数据库架构原理与性能优化
数据库架构
- 连接器 
- 语法分析器 
- 语义分析与优化器 
- 执行引擎 
索引
- 聚簇索引 
- 聚簇索引的数据库记录和索引存储在一起 
- MySQL 的主键就是聚簇索引,主键 ID 和所在的记录行存储在一个 B+树中 
- 非聚簇索引 
- 非聚簇索引在叶子结点记录的就不是数据行记录,而是聚簇索引,也就是主键 
- 回表:通过非聚簇索引找到主键索引,再通过主键索引找到行记录 
- 注: 
- 不要盲目添加索引 
- 删除不用的索引,避免不必要的增删开销 
- 使用更小的数据类型创建索引 
数据库事务
- 事务特性 ACID 
- 原子性 
- 隔离性 
- 持久性 
- 一致性 












 
    
评论