写点什么

架构师训练营 - 第八周 - 总结

用户头像
桔子
关注
发布于: 2020 年 07 月 29 日

一、数据结构与算法

时间复杂度与空间复杂度

  • 时间复杂度:算法执行语句的次数

  • 空间复杂度:临时占用存储空间的大小

数组

  • 特点:

  • 必须要内存中一块连续的空间

  • 数组中的数据都具有相同的数据类型

  • 访问数据时间复杂度 O(1)

链表

  • 特点:

  • 不需要连续的空间存储

  • 查找元素只能遍历链表

  • 增删数据快

  • 查找数据时间复杂度:O(N)

Hash 表

  • 特点:可快速访问数据、快速增删数据

  • key 可能发生冲突

  • 特点:后进先出

队列

  • 特点:先进先出

  • 如:生产者消费者

  • 二叉排序树

  • 左子树上所有节点的值均小于或等于它的根节点的值

  • 右子树上所有节点的值均大于或等于它的根节点的值

  • 左右子树也分别为二叉排序树

  • 平衡二叉树

  • 从任何一个节点处罚,左右子树深度只差的绝对值不超过 1

  • 左右子树也分别为平衡二叉树

  • 红黑树

  • 每个节点只有 2 种颜色:红、黑

  • 根节点是黑色的

  • 每个叶子节点都是黑色的空节点

  • 从根节点到叶子结点,不会出现两个连续的红色节点

  • 从任何一个节点出发,到叶子结点,这条路径上都有相同数目的黑色节点

  • 增删节点时,红黑树通过染色和旋转,保持红黑树满足定义

  • 红黑树与平衡二叉树的比较

  • 红黑树最多只需 3 次就会重新达到红黑平衡,时间复杂度 O(1)

  • 在大量增删的情况下,红黑树的效率更高

  • 红黑树的平衡性不如平衡二叉树

  • 红黑树的查找效率要差一些

跳表

  • 链表 + 多级索引

  • 空间换时间

  • 时间复杂度:O(logn)

  • redis 使用跳表

常用算法

  • 穷举算法

  • 递归算法

  • 贪心算法

  • 动态规划

二、网络通信协议

OSI 七层模型

  • 应用层

  • 表示层

  • 会话层

  • 传输层

  • 网络层

  • 物理层

TCP/IP 四层模型

  • 应用层

  • 传输层

  • 网络互联层

  • 网络访问(链路)层

非阻塞 IO

  • IO 操作立即返回,发起县城不会阻塞等待

三、数据库架构原理与性能优化

数据库架构

  • 连接器

  • 语法分析器

  • 语义分析与优化器

  • 执行引擎

索引

  • 聚簇索引

  • 聚簇索引的数据库记录和索引存储在一起

  • MySQL 的主键就是聚簇索引,主键 ID 和所在的记录行存储在一个 B+树中

  • 非聚簇索引

  • 非聚簇索引在叶子结点记录的就不是数据行记录,而是聚簇索引,也就是主键

  • 回表:通过非聚簇索引找到主键索引,再通过主键索引找到行记录

  • 注:

  • 不要盲目添加索引

  • 删除不用的索引,避免不必要的增删开销

  • 使用更小的数据类型创建索引

数据库事务

  • 事务特性 ACID

  • 原子性

  • 隔离性

  • 持久性

  • 一致性


用户头像

桔子

关注

还未添加个人签名 2018.11.15 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 - 第八周 - 总结