没有合适的资源?快使用搜索试试~ 我知道了~
1.BIO概述 BIO ==> Basic IO(基本IO),Block IO(阻塞IO) Scanner操作,文件读写操作,Socket数据传输操作…都是BIO 比如TCP群聊,私聊聊天室 Socket涉及到的IO,也是BIO 资源浪费: 1.多线程,每一个Socket会对应一个线程,如果用户量巨大,会导致线程过多,资源处理过多 2.采用阻塞状态,一旦进入阻塞,代码无法执行其他操作。
资源推荐
资源详情
资源评论
NIO、、BIO
1.BIO概述概述
BIO ==> Basic IO(基本IO),Block IO(阻塞IO)
Scanner操作,文件读写操作,Socket数据传输操作…都是BIO
比如TCP群聊,私聊聊天室
Socket涉及到的IO,也是BIO
资源浪费:
1.多线程,每一个Socket会对应一个线程,如果用户量巨大,会导致线程过多,资源处理过多
2.采用阻塞状态,一旦进入阻塞,代码无法执行其他操作。
3.承载量一般,吞吐量比较小,同时可靠性不佳
2.NIO概述概述
NIO ==> New IO(新IO)、Non-Block IO(非阻塞IO)
NIO非阻塞IO,当前运行程序在处理IO事务时,不会影响其他进程的运行,可以在不使用多线程的情况下,满足IO操作要求
【三大核心部分】:
通道通道
Channel
文件操作,网络数据传递使用的通道
缓冲缓冲
Buffer
缓冲使用可以提高操作效率,减少不必要的读写次数
选择器选择器
Selector
核心
3.Buffer Channel完成文件操作完成文件操作
3.1 常用常用API
java.nio.Buffer
【Buffer缓冲区缓冲区】
ByteBuffer 字节缓冲 常用
ShortBuffer
IntBuffer
LongBuffer
CharBuffer 字节缓冲 常用
FloatBuffer
DoubleBuffer
【常用方法常用方法】::
public static ByteBuffer allocate(int capacity);
按照指定的字节数分配对应的缓冲区空间,保存字节数据
public byte get();
从字节缓冲区对象中读取一个byte类型数组
public final Buffer flip();
翻转缓冲区,回到缓冲区的开始位置。
public static ByteBuffer wrap(byte[] arr);
存入一个byte类型数组到缓冲区,会得到一个新的ByteBuffer
public static ByteBuffer put(byte[] b);
将字节数组存入缓冲区
Channel接口,通道接口接口,通道接口
FileChannel 文件操作通道
DatagramChannel UDP协议数据包操作的Channel
ServerSocketChannel TCP服务端ServerSocket对应Channel
SocketChannel TCP客户端Socket对应Channel
首先操作文件,以首先操作文件,以FileChannel为例为例
public long read(ByteBuffer buffer);
从通道中读取数据到ByteBuffer中
public long write(ByteBuffer buffer);
从Buffer中写数据到通道中
public long transferFrom(ReadableByteChannel src, long position, long count)
从指定srcChannel中,指定位置position开始,读取count个元素,到当前通道中
文件复制操作。
public long transferTo(long position, long count, WritableByteChannel target)
将当前通道中的数据写入到target中,从当前通道的position位置开始,计数count
3.2 操作文件数据操作文件数据
资源评论
weixin_38621150
- 粉丝: 3
- 资源: 880
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功