当前位置: 首页 > news >正文

NIO讲解

一:什么是NIO?

二:NIO三大组件

1. channel
channel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入,要么是输出,channel 比 stream 更为底层

2. Buffer
2.1 ByteBuffer 正确使用姿势:
(1)向 buffer 写入数据,例如调用 channel.read(buffer)
(2)调用 flip() 切换至读模式
(3)从 buffer 读取数据,例如调用 buffer.get()
(4)调用 clear() 或 compact() 切换至写模式
(5)重复 1~4 步骤

2.2 ByteBuffer 结构
capacity
position
limit
在这里插入图片描述
写模式下,position 是写入位置,limit 等于容量,下图表示写入了 4 个字节后的状态
在这里插入图片描述
读模式下,position 切换为读取位置,limit 切换为读取限制
在这里插入图片描述

3. Selector
selector 的作用就是配合一个线程来管理多个 channel,获取这些 channel 上发生的事件,这些 channel 工作在非阻塞模式下,不会让线程吊死在一个 channel 上。适合连接数特别多,但流量低的场景(low traffic)

三:channel与selector的关系

selector 就可以监控多个 channel 的事件

http://www.lryc.cn/news/223001.html

相关文章:

  • react中jest配置,解决node_modules报错esm无法解析的问题
  • Qt6,使用 UI 界面完成命令执行自动化的设计
  • Apache Maven;会话技术
  • Azure - 机器学习:使用自动化机器学习训练计算机视觉模型的数据架构
  • 【C++】stack | queue | priority_queue | deque
  • 华为gre带验证key案例
  • Java算法(三): 判断两个数组是否为相等 → (要求:长度、顺序、元素)相等
  • 基于STM32的设计智慧超市管理系统(带收银系统+物联网环境监测)
  • 深入浅出理解ResNet网络模型+PyTorch实现
  • 【C++】万字一文全解【继承】及其特性__[剖析底层化繁为简](20)
  • 微信小程序之自定义组件开发
  • MCU系统的调试技巧
  • 【机器学习基础】机器学习概述
  • Python Selenium 执行 JavaScript
  • HTML的表单标签和无语义标签的讲解
  • 8.spark自适应查询-AQE之自适应调整Shuffle分区数量
  • 【Java 进阶篇】Java Filter 快速入门
  • Pytorch R-CNN目标检测-汽车car
  • 【PG】PostgreSQL13主从流复制部署(详细可用)
  • 学习pytorch15 优化器
  • [算法日志]图论刷题 沉岛思想的运用
  • Web服务器的搭建
  • 如何使用 GTX750 或 1050 显卡安装 CUDA11+
  • 跟着森老师学React Hooks(1)——使用Vite构建React项目
  • 强力解决使用node版本管理工具 NVM 出现的问题(找不到 node,或者找不到 npm)
  • Docker指定容器使用内存
  • 做什么数据表格啊,要做就做数据可视化
  • CSS特效003:太阳、地球、月球的旋转
  • 云计算的大模型之争,亚马逊云科技落后了?
  • 【form校验】3.0项目多层list嵌套