1. IO模型
2. 网络编程
IO调用分2个阶段:数据准备、数据copy.
- BIO:同步阻塞,一个连接一个线程,第一阶段等待,直到有数据了,该线程copy并返回,等到的过程一直浪费资源,优化:用连接池多线程,不用新建、销毁线程,直接拿池子里现成的。
- NIO: 同步非阻塞,多个连接注册到多路复用器Selector上通过一个线程管理,Selector轮询还有没有别的请求,有的创建新的线程处理
- AIO: 异步非阻塞,read调用直接返回,通知回调
·NIO:将多个Channel事件注册到Selector中,通过Selector去监听Channel中的事件状态,就不需要阻塞等待客户端的连接,从主动等待客户端的连接,变成了通过事件驱动。
缓冲区Buffer:存储数据 read/write 数据类型ByteBuffer
通道Channel:传输数据
选择器Selector:多路复用 网络IO需要 文件IO不需要
·Netty应用场景
1.即时通讯系统
2.RPC框架的网络通信工具
3.http服务器
内存零拷贝
TCP长连接、心跳
TCP粘包/拆包