9.13学习记录
TCP报文结构
源端口、目标端口
序列号、确认号
数据偏移、保留、标志位、滑动窗口大小、校验和、紧急指针、选项、数据
java六大原则
单一职责、开闭、接口隔离、迪米特、依赖倒置、里氏替换
Java创建对象的方式
New、反射、克隆、静态工厂方法、单例模式
怎么把对象从一个jvm转移到另一个jvm?
- Rmi
- socket编程
- https/http
- Rpc
- 消息队列
- 分布式缓存系统
怎么实现序列号和反序列化?
可以用json来实现,json是一种轻量级数据交换格式,而且易于读取
怎么将对象转换成二进制字节流?
- 实现serializable接口
- 使用objectoutputstream来进行序列化
I/O多路复用使用场景
- 监听日志系统
- 分布式系统心跳监测
- 文件的上传和下载
- 网络服务器
- 高并发聊天室
服务端正常启动了,客户端请求不到有哪些原因?如何排查?
- 被防火墙阻拦了
- 检查防火墙规则
- 端口未绑定或者监听错误
- 查看服务端日志
- 使用命令行查看端口是否被占用
- 网络问题
- Ping
- 检查DNS配置
- 检查路由表
- 客户端配置问题
- 检查URL等等
- 中间件出问题了
- 检查中间件日志
- 检查中间件配置
- 协议问题
- 检查证书有效性
会出现ping不通但是http能请求成功的情况吗
- ICMP协议被禁用
- HTTP请求走的是其他端口
- DNS解析问题
- 防火墙可能会阻止ICMP流量
- ping命令软件本身问题
redis数据类型有哪些?
String、list、set、zset、bitmap、hyperloglog、geo、hash、bitfield、stream
zset应用场景
排行榜、评分系统、推荐系统
redis持久化机制
RDB:快照持久化
AOF:日志文件增量持久化
从他们的优势劣势、文件保存、触发机制、启用禁用方面来回答
Mysql ACID特性
原子性:事务是最小单位不允许分割,要么同时成功,要么同时失败
一致性:事务执行前后数据保持一致
隔离性:并发访问数据库时一个事务不会对其他事务产生干扰
持久性:事务提交之后,对数据库的改变是永久的
TCP断开连接
四次挥手
- 客户端向服务端发出数据包,请求断开连接 FIN-SEQ = X, FIN-WAIT-1状态
- 服务端向客户端发送,表示接收到请求 ACK = X + 1,FIN-WAIT-2状态
- 服务端再向客户端发送,表示数据传输完毕 FIN-SEQ = Y,LAST-ACK
- 客户端向服务端发送请求,表示接收完毕 ACK=Y + 1,TIME-WAIT
线程池的优点
- 降低资源消耗:线程的创建和销毁都要耗费资源
- 提高响应速度
- 提高线程的可管理性
线程安全问题怎么解决?
- 加锁
- 原子类
- volitile变量
- 不可变对象
- 并发集合类