# 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——限制容量,指针类型,不断在变化