# Netty-Demo **Repository Path**: stefanie-zy/netty-demo ## Basic Information - **Project Name**: Netty-Demo - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: stefanie-zy - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-12-03 - **Last Updated**: 2023-12-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Netty-Demo ## 1、NIO > NIO定义:非阻塞IO。 *Netty和Java NIO比较* | | Netty | NIO | |----|----------------------------------------------------------------------------------------------------|-------------------------------| | 优点 | 1-提供简单易用的接口,隐藏底层复杂性,提高开发效率
2-采用异步非阻塞IO模型,减少CPU和内存资源的消耗
3-易拓展,支持多种主流协议,安全传输
4-支持更大的吞吐量 | | | 缺点 | | 1-开发较为复杂
2-容易出错
3-效率低 | #### 三大组件: > Channel——数据的传输通道。双向通道 > > - 常见的Channel > - FileChannel > - DatagramChannel [UDP] > - SocketChannel > - ServerSocketChannel > Buffer——暂存数据的内存缓冲区,暂存从Channel的数据 > > - 常见的Buffer > - ByteBuffer > - MappedByteBuffer > - DirectByteBuffer > - HeapByteBuffer > - ShortBuffer > Selector——管理多个channel,获取channel上的发生事件 > > - 适合场景: > - 适合连接数特别多的 > - 流量较低的场景 > - 多线程版本的缺点: > - 内存占用过高 > - 线程上下文切换成本太高 > - 只适合于连接数较少的场景 > - 线程池版本的缺点: > - 阻塞模式下,只能处理一个socket > - 只适合短链接场景 ## 2、ByteBuffer > 属性说明: > > - capacity > - position——写入位置,指针类型,不断在变化 > - limit——限制容量,指针类型,不断在变化