netty
生成NioEventLoopGroup两个实例:bossGroup接收客户端传过来的请求,workerGroup处理后续操作
bootstrap为netty程序启动添加组件
nioserversocketchannel管理serversocketchannel实例
channelhander:设置业务职责链,通过多个channelhander串联而成(业务处理
自定义一个类 HttpServerInitializer 继承 ChannelInitializer 并实现其中的 initChannel方法
ChannelPipeline pipeline = sc.pipeline();
ChannelPipeline:新的连接被接受后创建的channel分配处
)
buffer
本质读写的内存,三个属性:capacity、position和limit
capacity:容器大小
position:读写的起始位置
limit:能用的空间大小
buffer分配:allocate方法分配初始值
写数据到buffer的两种方式
1、int bytes = channel.read(buf);从channel中的数据读取到buf中
2、buf.put(byte);将数据通过put方法写入到buf
读数据
1、int bytes = channel.write(buf); 将buffer中的数据读取到channel
2、byte bt = buf.get() 冲buf中读取一个byte
读写模式的切换
flip方法:调用flip方法后写模式切换成读模式,position=0,limit为原来的position
rewind:Buffer.rewind()吧position=0,limit不变
clear:position=0 limit=capacity但是buff并未清
compact:将所有未读数据拷贝到起始处,position设置成未读元素的后边,limit=capacity
selector(多路复用器)
selector,channel相互配合使用。channel注册在selector上
selector监听channel四种状态
connect:某个客户端连接成功
accept:准备好进行连接
read:可读
write:可写
------------恢复内容结束------------