架构师训练营 - 第⑧周总结
数据结构与算法
时间复杂度:算法语句执行的次数
空间复杂度:运行中临时占用的空间大小
NP问题:
P:能在多项式时间复杂度内解决的问题
NP:能在多项式时间复杂度内验证答案正确与否的问题
NP-hard:比NP问题更难的问题
NP完全问题
数组:存储在连续的内存空间,查询快捷,插入较慢。按下标查询时间复杂度O(1)
链表:可以使用零散的内存空间,查询较慢,插入较快。查找时间复杂度O(n)
数组与链表结合,实现快速查找与快速增删
Hash表:数组加链表
栈:后进先出
线程调用栈
队列:先进先出
平衡二叉树:通过旋转保持平衡,时间复杂度O(logN),查找较快
红黑树:最多3次旋转就会达成平衡,时间复杂度O(1),适合增删较多场景,查找效率略差
跳表:通过多级索引提高查询效率
常用算法:
穷举算法
递归算法(快速排序):时间复杂度,n * log(n),可能导致栈溢出
贪心算法(改进-迪杰斯特拉算法-最快路径)
动态规划
遗传算法
网络通信协议
OSI七层模型和TCP/IP四层模型
物理层:在物理媒介上传输二进制格式数据
数据链路层:传输有地址的帧及错误监测功能
链路层负载均衡
网络层(IP):为数据包选择路由
IP负载均衡
传输层(TCP):提供端对端接口
TCP3次握手,4次挥手
会话层:管理网络中计算机之间的通讯,提供传输层不具备的连接相关功能
表示层:转化数据格式,并处理数据加密与数据压缩
应用层:为用户的应用提供服务并支持网络访问
HTTP协议
非阻塞网络I/O
BIO 阻塞I/O
非阻塞I/O
Java NIO
Selector
SelectableChannel
SelectionKey
Buffer
系统I/O复用方式:select、poll、epoll(event poll)
数据库原理与性能优化
数据库架构:
连接器(连接池)
语法分析器(校验错误)
语义分析与优化器(语句等价转化、利用索引优化)
执行引擎(执行计划、分析性能)
prepareStatement预处理,效率更好
B-树与B+树
聚簇索引:索引和数据存储在一起
非聚簇索引:叶子节点存储的是主键,通过主键索引找到记录
添加必要的索引优化SQL查询性能
谨慎使用索引
数据库事务ACID
数据库事务日志
评论