BIO, NIO, AIO 大白话 - 澄澈大学生也能搞懂
最近天天吃沙县, 就拿沙县分析
BIO
Block I/O

- 沙县分析
相近时间来了4个顾客
| 顾客 | 菜品 | 时间 |
|---|---|---|
| A | 筒骨饭 | 5min |
| B | 茄子肉丝盖饭 | 7min |
| C | 猪脚饭 | 3min |
| D | 茄子肉丝盖饭 | 7min |
老板只能按照顺序 5+7+3+7 = 22分钟完工
每次做完一个菜, 还要问下一个顾客点的是什么(一心不能二用, 记不住<顾客, 菜品>键值对)
NIO
non-blocking I/O
服务端运行多个客户端发送消息, 不会阻塞

- 沙县分析
相近时间来了4个顾客
| 顾客 | 菜品 | 时间 |
|---|---|---|
| A | 筒骨饭 | 5min |
| B | 茄子肉丝盖饭 | 7min |
| C | 猪脚饭 | 3min |
| D | 茄子肉丝盖饭 | 7min |
每一个handler(锅)只能处理一个菜品(可能要求比较高的饭店, 怕串味)
时间为 7+7 = 14分钟完工
多路复用
每个handler(锅)可以处理任何菜品(高效出餐)
时间为 Math.min(5, 7 ,3) + 7 = 10分钟完工
单线程+队列下的<伪>NIO
没有block的IO就是NIO
我们学校附近的沙县属于小本生意, 只有老板和和老板娘
人多的时候老板娘负责记菜, 老板负责炒菜

- 沙县分析
每次顾客等的有点急了, 老板娘都安慰说<在炒了>
那我们也不知道在没在炒, 万一真在炒了,还是等一下吧
如果是BIO, 那有没有炒就一目了然了
AIO
Asynchronous I/O 异步IO
我们在NIO中引入了分发器和处理器的关系
而AIO就是优化了分发器和处理器

- 沙县分析
后厨对应内核区, 老板娘对应分发器, 我们对应处理器(处理食物)
那我们天天去吃, 跟老板娘也熟了,跟老板娘要了电话号码
我们要吃的时候, 跟老板娘说要两份, 放在3号桌
老板娘说做好了, 我们马上跑到3号桌, 处理食物
BIO, NIO, AIO 大白话 - 澄澈大学生也能搞懂的更多相关文章
- (转)也谈BIO | NIO | AIO (Java版)
原文地址: https://my.oschina.net/bluesky0leon/blog/132361 关于BIO | NIO | AIO的讨论一直存在,有时候也很容易让人混淆,就我的理解,给出一 ...
- 拿搬东西来解释udp tcpip bio nio aio aio异步
[群主]雷欧纳德简单理解 tcpip是有通信确认的面对面通信 有打招呼的过程 有建立通道的过程 有保持通道的确认 有具体传输udp是看到对面的人好像在对面等你 就往对面扔东西[群主]雷欧 ...
- 也谈BIO | NIO | AIO (Java版--转)
关于BIO | NIO | AIO的讨论一直存在,有时候也很容易让人混淆,就我的理解,给出一个解释: BIO | NIO | AIO,本身的描述都是在Java语言的基础上的.而描述IO,我们需要从两个 ...
- IO回忆录之怎样过目不忘(BIO/NIO/AIO/Netty)
有热心的网友加我微信,时不时问我一些技术的或者学习技术的问题.有时候我回微信的时候都是半夜了.但是我很乐意解答他们的问题.因为这些年轻人都是很有上进心的,所以在我心里他们就是很优秀的,我愿意多和努力的 ...
- Netty5序章之BIO NIO AIO演变
Netty5序章之BIO NIO AIO演变 Netty是一个提供异步事件驱动的网络应用框架,用以快速开发高性能.高可靠的网络服务器和客户端程序.Netty简化了网络程序的开发,是很多框架和公司都在使 ...
- I/O模型系列之三:IO通信模型BIO NIO AIO
一.传统的BIO 网络编程的基本模型是Client/Server模型,也就是两个进程之间进行相互通信,其中服务端提供位置信息(绑定的IP地址和监听端口),客户端通过连接操作向服务端监听的地址发起连接请 ...
- 【netty】(1)---BIO NIO AIO演变
BIO NIO AIO演变 Netty是一个提供异步事件驱动的网络应用框架,用以快速开发高性能.高可靠的网络服务器和客户端程序.Netty简化了网络程序的开发,是很多框架和公司都在使用的技术. Net ...
- Netty序章之BIO NIO AIO演变
Netty序章之BIO NIO AIO演变 Netty是一个提供异步事件驱动的网络应用框架,用以快速开发高性能.高可靠的网络服务器和客户端程序.Netty简化了网络程序的开发,是很多框架和公司都在使用 ...
- java BIO/NIO/AIO 学习
一.了解Unix网络编程5种I/O模型 1.1.阻塞式I/O模型 阻塞I/O(blocking I/O)模型,进程调用recvfrom,其系统调用直到数据报到达且被拷贝到应用进程的缓冲区中或者发生错误 ...
- BIO | NIO | AIO (Java版)
几篇解释的不错的文章: BIO NIO AIO NIO.2 入门,第 1 部分: 异步通道 API 使用异步 I/O 大大提高应用程序的性能
随机推荐
- 从零开始开发一个 MCP Server!
大家好!我是韩老师. 最近,在 AI 开发领域,MCP (Model Context Protocol) 是越来越火了! 前几天,我我也开发了一款 Code Runner MCP Server: Co ...
- .NET Cas 认证(基于Cookie)
项目需求:开发系统A 对接客户公司的cas 认证系统 B,实现单点登录 业务场景描述:打开A 系统地址,判断Cookie 是否登录状态,如果未登录,跳转B登录界面:如果已登录,直接获取到cookie ...
- PHP 读取csv中的指定某些列的值
封装一个方法,用于从CSV文件中读取指定的某些列的值时,可以使用以下示例代码: <?php class CSVReader { private $filename; private $delim ...
- 【Java】关键字的使用
java中有很多的关键字,他们的使用让Java语言变得更加灵活.易用,下面将介绍Java中最常用的几个关键字并说明其用法. 一.关键字:return--跳出 使用在方法体中,用于:① 结束方法② 针对 ...
- 探秘Transformer系列之(23)--- 长度外推
探秘Transformer系列之(23)--- 长度外推 目录 探秘Transformer系列之(23)--- 长度外推 0x00 概述 0x01 背景 1.1 问题 1.2 解决思路 1.3 微调的 ...
- 0x01 基础算法
目录 基础算法 排序 快速排序 归并排序 二分 整数二分 浮点数二分 高精度 输入输出 高精度加法 高精度减法 高精度乘法 高精度除法 前缀和 差分 双指针算法 位运算 离散化 区间合并 基础算法 排 ...
- Java8 Lambda Collection 的常见用法
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; import cn.huto ...
- 使用Python可视化潮汐力
引言 潮汐力,简单来说,就是天体间由于引力差异而产生的力量.这种力在地球上最显著的表现就是潮汐现象,即海水的涨落.潮汐力是由月球和太阳的引力作用引起的,它对地球的影响非常深远,除了海洋潮汐外,还能影响 ...
- idea的配置优化
一.显示工具条 二.设置鼠标悬浮提示 三.显示方法分隔符 四.忽略大小写提示 五.主题设置 如果需要很好看的编码风格,这里有很多主题 http://color-themes.com/?view=ind ...
- 网鼎杯-nmap
Web 0x01 nmap 查看源码提示: 研究了半天分隔符绕过,后来放弃了,根据题目提示(127.0.01,不用扫外网),尝试扫描/flag并尝试将其输出到1.txt中 -iL /flag -oN ...