Netty学习(一)---NIO学习

  • Buffer针对原生八大类型除了boolean没有对应的buffer,其他的有七种buffer,如下:

 

 

 

  • 传统的IO流是单向的,要么是输入流,要么是输出流,这是基于java单继承特性决定的,InputStream和OutputStream都是抽象类,只能继承一个;而nio有三个核心概念:Selector、Channel与Buffer,Channel是双向的,可以从读也可以写,但是与程序的交互必须每次都从Buffer经过,永远不会出现直接向Channel写入数据的情况,或是从Channel读取数据的情况。

  

  • Buffer的基本属性:
    • 容量(Capacity):缓冲区大小,一旦设定不可变;
    • 上限(Limit):缓冲区可用边界,越过上界的区域不可读写;
    • 位置(Position):下一个读写的索引,随着读写递增;
    • 标记(Mark):Mark一个位置,reset会将position重新设置到mark的位置

    • 通常 mark <= position <= limit <= capacity
  • Buffer的clear()方法:position=0,limit=capacity,mark丢弃置位-1
  • Buffer的flip()方法:limit=position,position=0,mark=-1(通常在读完进行写,或者写完进行读操作,中间要进行一次flip)
  • Buffer的rewind()方法:position=0,mark=-1

 

posted @ 2021-02-07 23:44  feibazhf  阅读(79)  评论(0)    收藏  举报