Buffer缓冲区
网易云课堂学习- NIO非阻塞网络编程的三大核心概念
使用Buffer进行数据写入与获取,需要进行如下四个步骤:

  1. 将数据写入缓存
  2. 调用buffer.flip(),转换为读取模式
  3. 缓冲区读取数据
  4. 调用buffer.clear()或buffer.compact()清除缓存。

Buffer工作原理
buffer的三个重要属性

  1. capacity:作为一个内存块,buffer具有固定的大小,也称为“容量”。
  2. position位置:写入模式时代表写数据的位置,读取模式时代表读取数据的位置。
  3. limit限制:写入模式,限制等于buffer的容量。读取模式下,limit等于写入的数据量。

网易云课堂学习- NIO非阻塞网络编程的三大核心概念
ByteBuffer内存类型
网易云课堂学习- NIO非阻塞网络编程的三大核心概念
建议:

  1. 性能确实客观的时候才去使用;分配给大型、长寿命;(网络传输、文件读写场景)
  2. 通过虚拟机参数MaxDirectoryMemorySize限制大小,防止耗尽整个机器的内存。

Channel
网易云课堂学习- NIO非阻塞网络编程的三大核心概念
SocketChannel
网易云课堂学习- NIO非阻塞网络编程的三大核心概念
ServerSocketChannel
网易云课堂学习- NIO非阻塞网络编程的三大核心概念
Selector选择器
网易云课堂学习- NIO非阻塞网络编程的三大核心概念
实现一个线程处理多个通道的核心概念理解:事件驱动机制。
非阻塞的网络通道下,开发者通过Selector注册对通道感兴趣的我事件类型,线程通过监听事件来触发相应的代码执行。(更底层是操作系统的多路复用机制)
网易云课堂学习- NIO非阻塞网络编程的三大核心概念
NIO对比BIO
网易云课堂学习- NIO非阻塞网络编程的三大核心概念
NIO与多线程结合的改进方案
网易云课堂学习- NIO非阻塞网络编程的三大核心概念
小结
网易云课堂学习- NIO非阻塞网络编程的三大核心概念

相关文章:

  • 2021-09-01
  • 2021-06-25
  • 2021-09-21
  • 2022-02-16
  • 2021-04-24
  • 2021-08-18
  • 2021-07-12
  • 2021-12-22
猜你喜欢
  • 2021-08-21
  • 2021-06-26
  • 2021-10-23
  • 2021-08-07
  • 2022-12-23
  • 2021-11-10
  • 2021-11-04
相关资源
相似解决方案