Java面试全收集
java基础
Java中的集合,List和HashMap
Java多线程
线程池
线程的五个状态,其中阻塞状态分为blocked和waiting,有什么区别
Java虚拟机
JVM内存,无限递归时会发生什么
Redis
Redis的持久化机制
MySQL
MySQL的事务机制
事务是一组逻辑操作,要么全都执行,要么全都不执行.
事务特性ACID
- Atomi
计算机网络
TCP建立连接三次握手
- 主机A发送SYN=1 seq=x的数据包到服务器B, 主机B由syn=1知道, A要求建立联机
- 服务器B收到请求后,要求确认联机, 向A发送SYN=1 ACK=1 seq=y ack number = x + 1
- 主机A收到报文段,检查ack number是否正确 是否x+1 已经ACK是否为1;正确的话主机发送ACK = 1,seq=x+1,ack number = y + 1.
原因:防止已经失效的请求连接突然又传送到了B因而产生错误,两次握手服务器可能在客户端没有同意的情况下建立连接,浪费资源.
输入网址到浏览器,中间发生什么
- url解析,判断是否合法的url
- DNS解析:确定域名对应的IP地址, UDP查询
- 检查缓存: 浏览器缓存,操作系统缓存hosts文件,路由器缓存,ISP DNS缓存,根域名服务器
- 递归查询IP地址: 根服务器, com服务器, cn服务器, google.com DNS服务器
- DNS 负载均衡 根据服务器的负载量,该机器距离的用户的地理位置返回一个合适的IP给用户
- TCP连接
- TCP对HTTP请求进行封装,加入端口号,加密方式等信息
- 三次握手
- 客户端发送HTTP请求
- 浏览器会构建HTTP报文并通过TCP协议发送到服务器的指定端口80/8080 HTTPS443
- 报文主要由三部分组成请求行, 请求首部, 请求实体
- 请求经过负载均衡和重定向
- 服务器处理请求并返回响应HTTP报文
- 从固定端口接受到TCP报文,根据HTTP协议解析
- 封装响应报文: 响应行(状态码), 响应首部(参数), 响应实体(资源)
- 浏览器解析渲染画面
- 解析HTML文件, CSS文件
- 连接结束
- TCP断开连接:四次挥手