### Buffer缓冲区
Buffer是一个对象,包含一些要写入或者要读出的数据;NIO库中所有数据都是用缓冲区处理;
缓冲区实际上是一个数组\(通常是一个字节数组ByteBuffer\);
ByteBuffer缺点
![](https://img.kancloud.cn/02/dd/02dd7827a21e547c9b7990934bb7788b_642x171.png)
Buffer是所有具体缓存区的基类,是一个抽象类,它的实现类有很多,包含各种类型数据的缓存
* ByteBuffer
* CharBuffer
* ShortBuffer
* IntBuffer
* LongBuffer
* FloatBuffer
* DoubleBuffer
* MappedByteBuffer
### Channel通道
channel是全双工的;
![](https://img.kancloud.cn/1b/3f/1b3f7f2f546dc639e902a43dfd3eef6d_721x111.png)
类图:
![](https://img.kancloud.cn/8f/6d/8f6db5ae060c9982249344d051db9e66_671x462.png)
基本的通道类型有如下一些:
* FileChannel
* DatagramChannel
* SocketChannel
* ServerSocketChannel
FileChannel 是基于文件的通道,SocketChannel 和 ServerSocketChannel 用于网络 TCP 套接字数据报读写,DatagramChannel 是用于网络 UDP 套接字数据报读写;
通道不能单独存在,它永远需要绑定一个缓存区,所有的数据只会存在于缓存区中,无论你是写或是读,必然是缓存区通过通道到达磁盘文件,或是磁盘文件通过通道到达缓存区;
### Selector多路复用器
![](https://img.kancloud.cn/b8/e3/b8e30f132229dddbc9b44571cdd6981f_666x80.png)
![](https://img.kancloud.cn/97/59/975924f2c1ef47d6cfab2ad409b7472b_673x115.png)
- 概述
- Netty&Tomcat的区别
- NIO基础知识
- 同步阻塞式IO
- 伪异步IO编程
- 同步IO之IO-multiplexing
- NIO基础概念
- NIO服务流程
- Netty基础知识
- NettyServer开发示例
- 零拷贝
- TCP粘包和拆包问题
- LineBasedFrameDecoder&StringDecoder
- 应用层消息处理方式
- ByteBuf
- ChannelHandler
- Netty核心组件
- Channel接口
- ChannelHandler
- ChannelInboundHandlerAdapter
- SimpleChannelInboundHandler
- SimpleChannelInboundHandler && ChannelInboundHandler
- ChannelInitializer
- EventLoop接口
- ChannelFuture接口
- ChannelPipeline接口
- 序列化
- JAVA序列化