Netty in action 学习笔记 (前篇)

异步设计

CallBack

Futures

 

NIO JDK1.4

NIO2 JDK1.7

 

标准的IO:基于字节流和字符流,面向数据流

NIO:基于通道(Channel)和缓冲区(Buffer),面向缓冲区

读操作:通道 -- 数据 --> 缓冲区

写操作:缓冲区 -- 数据 --> 通道

NIO核心:

Buffer 

Channel

Selector

 

Buffer 本质是内存片段,Buffer有三个属性:capacity,position,limit

capacity读写模式中都表示容量,capacity和position的含义与Buffer的读写模式有关

Buffer的写模式

默认初始化时position=0,position最大=capacity-1

limit能写入的最大数据量=buffer的容量capacity

Buffer的读模式

position=0,每次读取,position向后移动

limit=写模式时的position

 

Buffer的成员变量

capacity:int

limit:int

mark:int

position:int

Buffer的方法:

clear():Buffer

flip():Buffer

Buffer的实现类

ByteBuffer,CharBuffer等

 

IO Model:

blocking IO

nonBlocking IO

IO multiplexing

asynchronous IO 

与network IO相关的两个对象:process(OR thread)和kernel

Selector 调度多个nonblocking IO,检查一个或多个NIO Channel的状态是否处于可读、可写。

Selector实现单线程管理多个Channels,即管理多个网络连接。

Selector属于IO multiplexing的情况

Selector.select() 轮询查找

 

Channels的四种状态:

Connect

Accept

Read

Write

对应SelectionKey的四种状态:

SelectionKey.OP_CONNECT

SelectionKey.OP_ACCEPT

SelectionKey.OP_READ

SelectionKey.OP_WRITE

 

Java IO

字符流的本质:字节流读取+查码表(根据码表映射字符)

处理流和节点流的关系:处理流包装节点流,使用到装饰器设计模式,消除节点流的差异。

 

编码和解码

编码:明文的字符序列 ----> 二进制的字节序列

解码:二进制的字节序列 ----> 明文的字符序列

 

Netty中:

编码:Java对象 ----> 字节

解码:字节 ----> Java对象

 

网络数据是一系列字节。 

 

普通字符串和application/x-www-form-urlencoded MIME字符串

URLDecoder

URLEncoder

转载于:https://www.cnblogs.com/mrray1105/p/10810009.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值