架构师训练营 - 第八周 - 本周总结
数据结构与算法-2020年7月23日(此部分内容还没有看呢?!)
红黑树
遗传算法
网络与数据库-2020年7月25日
多个负载均衡点的作用是什么呢?
粘包
no_deplay
建立连接,3次握手
客户端主动发送两次,服务端发送一次;
断开连接,四次挥手;
服务端两次,客户端两次;
应用层HTTP协议
格式
如何查看呢?!
七种方法
Get
Head
Post
Put
Delete
Trace
Options
请求服务器支持的所有协议
数据流?!
HTTP响应的5种状态
HTTP协议版本
HTTP/1.0: 1996
每次请求会创建一个新的TCP连接;
每次请求之前都要进行TCP握手连接;
HTTP/1.1
允许客户端复用TCP连接;
每个连接只能执行一次的请求/响应,所以并发性不好;
虽然允许TCP连接的复用,但是考虑到并发性,会创建多个连接
HTTP/2.0:解决单个连接效率低的问题
HTTP流,字节流
允许将不同的HTTP并发复用到同一个TCP连接上;
同一个时刻,只能有一个请求;
队头堵塞
HTTP/3 HTTP Request Over QUIC
不使用TCP作为会话的传输层,而是使用QUIC;
一个连接里包含多个QUIC流;
QUIC数据包封装在UDP数据包的;
自定义协议,如Dubbo
TCP半包?!可以参考Netty中的相关内容;
非阻塞网络I/O
服务端-客户端
Socket数目 = 连接数目+1
单线程容易阻塞?!采用多线程的办法可以避免阻塞(每次执行.accept()操作时,都创建一个Socket)?!
多线程服务器-客户端
一个连接、一个Socket、一个线程;
可以使用共用缓冲区替换线程?!
线程池服务器
使用线程池(ThreadPool),如Tomcat
BIO - 阻塞式IO
Socket的read请求只需要处理TCP数据部分
非阻塞是指不阻塞线程;
阻塞点 ?
read
write
accept
非阻塞I/O
Java NIO(New I/O)
Selector
SelectionKey
ServerSocketChannel
SocketChannel
NIO中的Buffer与Socket是一样的,前者由应用管理,后者由操作系统管理;
阻塞和非阻塞的区别是什么呢?主要针对什么来说的?read/write/accept
阻塞与非阻塞主要针对的是应用是否会被阻塞;
应用线程通过读取buffer,而不是直接与网络通信进行交互,来避免阻塞;
阻塞只会阻塞线程;
同步与异步针对执行状态,
系统I/O复用方式:select/poll/epoll
select(poll)
会阻塞在所有的Socket上的;
select需要遍历所有的socket,poll不需要;
epoll: eventpoll,由操作系统维护
数据库
数据库架构
连接器
语法分析器
语法抽象树
语义分析与优化器
什么是执行计划?!
执行引擎
为什么PrepareStatement更好?
MySQL缓存在版本8中被取消掉了?!
B+树:文件系统
M-叉树
每一个节点记录一些数据;
用于构建索引的;
B+数据的复合索引是怎么实现的呢?!
聚簇索引
MySQL的主键就是聚簇索引;
非聚簇索引
聚簇索引与非聚簇索引的区别是什么呢?主要针对的场景是什么呢?!
索引为什么会失效呢?!
like '%ab'
映射函数转换
字段加函数
数据库事务
数据库事务日志
LSN
版权声明: 本文为 InfoQ 作者【sljoai】的原创文章。
原文链接:【http://xie.infoq.cn/article/6cdad495f69752d3669c06c68】。文章转载请联系作者。
评论