粉丝1002获赞3324

b l n i o 啊,这个是很多小伙伴在网络编程中经常会遇到的概念啊,如果你没有涉及到网络编程或者是做架构,基本上呢也不会接触的到,但是呢只要谈到 i o 啊,大家就比较熟悉了, 总的来说呢,就是说说出啊,你的 api 的请求啊啊,组建之间的通信啊啊,你访问的应用程序啊,应用程序访问数据库啊,缓存啊啊全是 io, 在整个的服务端请求的过程中 io 呢可以说啊,每个地方都有。 那么说到 i o 呢,就不得不说两个常见的 i o 模型了啊,一个是 b i o, 一个就是这个 n i o, 当然后面还有这个 a i o 啊啊,这个呢其实也是属于 n i o 的一个范畴啊,它是基于 n i o 做了一个升级,那么 b i o 呢是阻塞 i o 啊,是比较传统的网络 i o 模型,在 b i o 中呢,服务器跟客户端呢都会阻塞 啊,我们早期的像这个他们开的中啊,当接收到啊,比如说外部浏览期发生的请求啊,那么他就会在外部服务器呢就会另一个现场来处理这个请求。 那为什么说他会阻塞呢?因为他在这个请求的整个这个过程中呢啊,服务器还是客户端,他就会一直等待整个一个请求,他完成之后 啊,才能够继续执行下一步的这个操作,所以呢他在这个整个这个过程中,他就是一个左侧的状态,这样的话呢就会引来一系列的问题啊啊,比如说我啊,请求越多啊,服务端那边启用 这个县城也会越来越多,那么很多的县城呢,如果有病发的状态下面,那么他就会处于一种阻塞的状态,那么如果超过一定的这个预值啊,可能就会导致啊,整个的这个服务端请求超时,或者是整个应用的卡死。 最后了呢,在 gdk 一点四呢,就引入了 nio, 那么 nio 呢,他是通过引入了像这个 selector 啊,什么 channel 啊, buffer 啊哈一些新的概念来改善传统的 io 的工作模式。 那么在 nio 中解决最大的一个问题呢,就是他的一个阻塞问题啊,服务端,客户端啊,他是通过一个等待 io 事件的发生,而不是像 bio 那样直接阻塞,对吧?当然我们请求进来的时候呢,他是先会让这个请求进入一个叫做八分的一个缓冲区, 然后呢,通过啊十来个腿来判断你应该服用哪个县城啊,有需要处理的事件发生时呢,服务器或者客户端才会进行相应的处理,而不是每次请求进来我都先去拗一个县城。 那么这种用化呢,更多的是依赖于多洛夫用的方式来提高了他的一个并发处理的能力。 那么 aio 呢,就是啊,一部 io 了啊,这个是在我们 gdk 一点七引入的一个新特性,那么 aio 相较于 nio 来讲呢,它更加强调了 io 在一部处理的能力。 服务端和客户端发送了 i o 请求后啊,不需要等待结果的返回,而是继续进行其他的操作,当 i o 操作完成之后呢,系统会通知用户进行后续的处理啊,这个就是相当于一种回调的处 处理方式,那么这种地步的处理方式呢,当然性能也是最好的,因为他不需要等待你的处理结果,而直接去进行了一个处理的一个返回。 那么我们在实际的应用场景中怎么去选择 io 模型呢? bio 呢,开销太大了,所以呢,它其实用的并不是很多,当然早期的有一些啊,应用程序啊啊,也可以结合这个新增时来做些优化啊,其实也是可以的, 目前呢,大部分的场景呢,还是用的 nio 啊,可以处理大量的并发请求啊,常见的就是各种这个 im 螺旋组件啊,基于内体对吧啊,其实本质上也是基于 nio, 还有呢,像这个 tomcat 默认的也都是采用了 nio 的这种 io 模式。好了,本期的视频就是这些了,如果您对本期的内容有任何疑问,欢迎大家在评论区给我留言,谢谢大家!

今晚面试摆板砖第十四天, iobiolo 的区别及各自的应用场景要回答这个问题,首先我们得了解 io 模型的分类,他们主要有同步 io 和 ebool 主色 lio 和非主色 io 同步主色简称 bio, 同步非主色简称 aio, 异步非主色简称 ao。 他们之间的区别第一个 bio 同步主色 io 模式数据的读取和写入必须主设在一个县城内,等待其完成。 这里使用那个经典的烧开水的例子,这里假设一个烧开水的场景,有一排水壶在烧开水,变欧的工作模式就是叫一个县城停留在一个水壶,那直到这个水壶烧开才去处理 下一个水壶,但是实际上现成在等待水壶烧开的时间段什么都没有做,加一个 nio 同步非主色, 同时支持主色和非主色模式,但这里我们从其同步非主色 l 模式来说明。 那什么叫做同步非主色呢?如果还拿烧开水来说, ao 的做法是将一个现成不停的淋循每一个水壶的状态,看看是否有水壶的状态发生了变化,从而进行下一步的操作。第三,一个 aoe 部非主色还有抹湿。 一步非主色与同步非主色的区别在哪里呢?一步非主色无需一个县城去人群所有的 l 操作的状态改变,在相应的状态改变以后,系统会通知对应的现场 来处理,对应到烧开水中,就是为每一个水壶上面装了一个开关,水烧开之后,水壶会自动通知我们水烧开了。第四,一个同步和异步的区别。 同步发送一个请求,等待返回再发送下一个请求,同步可以避免出现失失所张读的发生异步。发送一个请求,不等待返回,随时可以再发送下一个请求,可以提高效率,保证并发。第五,一个主色与非主色。 主色传统的 l 都是主色的,也就是说,当一个县城要用 read 和 red 方法时,该县城将被主色,直到有一些数据读取或被写入。在此期间,该县城不能执行其他任何任务。在完成网络通讯进行 ios, 由于县城会主设,所以服务端必须为每一个客户端都提供一个独立的县城进行处理。当服务器,当服务端需要处理大量的客户端的时候,性能急剧下降。非主设 加瓦 ao 是非主社的,当县城城某个通道进行读取数据的时候,若没有数据可用,该县城会去执行其他的任务。县城通常将非主社 io 的空闲时间用于在其他通道上执行 ao 操作,所以单独的县城可以 管理多个输入和输出。因此 nio 可以让服务器使用一个或者有限几个现成来同时处理连接到服务器上的所有的客户的。最后就是 bionioaio 的适应场景。 bio 方式适用于连接数目比较小且固定的价格。这种方式对 福气的资源要求比较高。并发局限在应用中。一点四以前的唯一选择。爱哦方式,适用于连接数量多且连接比较短的价格,比如聊天服务器。并发局限于应用中,编程比较复杂。 al 方式,适用于数据连接数多且连接比较长的架构,比如相册服务器,充分调用 os 参与并发操作,编程比较复杂,一点七以后开始支持。以上就是我对这个你的回答, 如果对你的工作和面试有帮助,请点赞加关注,谢谢大家!

bio、 nioaio 的区别是什么? bio 同步并阻塞在服务器中实现的模式为一个连接一个线程。也就是说客户端有连接请求的时候, 服务器就需要启动一个县城进行处理,如果这个连接不做任何事情,会造成不必要的县城开销。当然这也可以通过县城池机制改善。 bio 一般适用于连接数目小且固定的架构,这种方式对于服务器资源要求比较高, 而且并发局限于应用中,编程比较简单。 n i o 同步并非组色。在服务器中实现的模式为一个请求一个线程, 也就是说客户端发送的连接请求都会注册到多路复用器上,多路复用器轮寻到有连接受请求时,才会启动一个现成进行处理。电脑 io 一般是 用于连接数目多且连接比较短的架构,并发局限于应用中,编程比较复杂。 aioe 不并非阻塞在服务器中实现的模式为一个有效请求一个线程, 也就是说客户端的 io 请求都是通过操作系统先完成,之后再通知服务器应用去启动县城进行处理。 aio 一般适用于连接数目多且连接比较长的架构,充分调用操作系统参与并发操作,编程比较复杂。

b i o n i o a i o 分别是什么?好, 大家可以看一下啊。首先 bio 是同步主色 io, 使用 bio 读取数据的时候,现成会主色,并且需要现成主动的去查询是否有数据可读啊。注意啊,就是现成你需要主动的去调用 呃 io 相关的一些 api 去查询是否有数据可读,并且需要处理完一个说给的之后才能处理下一个说给的啊。这是 b ion io 呢?他是同步非主色 io 啊, 使用 n i o 独角数据的时候,现成不会阻塞,但仍然需要现成主动的去查询是否有 io 事件,是否有数据可读啊,这是 n i o。 然后还有 a i o a l 其实也是也可以叫做 n i o 的二点零版本,他是异步的非主色 io, 那么使用 aio 读取数据的时候,现成他不会主色啊,像这个像 n i o。 对,而且他就是 他不需要主动的去查询是不是有 io 事件,而是操作系统,他的底层会呃去单,如果说有数据可读的时候,会一步的去通知我们的现成, 就说这是 al, 所以他是异步的非主色 io 啊,所以总的总而言之,那么我们的 aio 他的效率肯定是更高一点的,他的性能啊,所以一步一步的来,好吧。

哈喽,大家好,我是 java 架构师奶爸。我们分别说一下什么是 byo、 neo io。 byo neo io 是 java 中处理 io 的三种方式。他们的全称分别为一、 blocking io byo 组色是 io。 当一个县城调用 read 或 read 时, 该县城会被阻塞,直到有一些数据被读取或写入,然后该县城才会继续执行。在拜欧中,县城需要主动去查询是否有数据可读,并且在处理完一个 socket 之后才能处理下一个 socket。 二、 now blocking i o nio 非阻塞是 i o。 使用 neo 读取数据时,县城不会阻塞,但需要县城主动地去查询是否有 i o 事件。如果没有数据可读,县城不会被阻塞,而是 立即返回。三、 a synchronous m o l 亦不是 i o。 使用 i o 读取数据时,线程不会阻塞,并且当有数据可读时会被通知到。 这种方式不需要现场主动去查询,而是通过回调函数来实现异步处理。总的来说, bio 是阻塞的 io 模型, neo 是非组色的 i o 模型, i o 是异部的 i o 模型。想学习更多 java 知识,请关注我,共同筑基,成为 java 架构师。


各位铁铁今天吃了吗? bio blocking io、 neo number king、 jio 可爱 o is in chronosy you 都是 java 中用于网络编程的 io 模型。 bio 是传统的 io 模型, 是基于流 three。 你的阻塞模式即一个县城处理一个连接,当一个连接没有数据时,县城就会一直阻塞,直到有新数据到来。 new 是基于通道 channel 和缓冲区 buffer 的 i o 模型,支持非阻塞模式,通过一个线程可以处理多个连接。另 又使用选择器 selector 来监听多个通道的事件,当某个通道有数据可读或可写时,才进行数据的读写操作,避免了阻塞。 io 是最新的 io 模型,也是非阻塞模 模式。但与你有不同的是, i o 不需要用户现成等待或阻塞,而是使用一步回调的方式 通知用户现成数据已就绪,用户现成只需要处理数据即可。选择哪种该 模型取决于应用程序的特征和性能要求。 bio 适合于连接数比较小的情况下,应有适合于连接数多且连接比较短的情况下。二有适合于连接数多且连接比较长的情况下。点赞关注不迷路哦!

主流的呢,大概就是呃,这五大,但不局限于此啊,因为关键是在你的应用层怎么去实现。好吧,来,我们可以先简单的过一下。像我们以尼尼克斯为例啊,尼尼克斯的内核模型这五大啊, 从我们的一个艾欧模型来讲,阻塞艾欧,非阻塞欧,还有一个艾欧夺卢夫用。其实在这块,同学们通过致命的意思啊,其实你可以大概的去找到一些对应关系对吧?比方说我们不是说要讲 bio 吗? 玻璃可能 io 是不是阻塞 io 应应该就是我们的 bio 呢,对吧?这就是一个对应关系吗?你你再往后走,非阻塞 io, 你看 nobook 的 io, 哎,这个 nl 好像就对应的是这个东西啊,对不对? 那你讲两个就行了。那为什么还有个 io 多录复用呢?对吧,那包括还有像信号驱动一部 io 呢?因为用的不多。我今天先不讲了。好吧, 时间也有限。 ok, 那我们今天为什么要去讲三个呢?其实对于这款呢,安老师要重点的讲一下,这款 就大家去理解 n i o 啊,很多的同学可能就通过这样的一个啊,致命意思,你看 n i o 对吧?所以这块呢,也会让很多人进入到一个误区,我们今天也要把这块去做一个区分好吧,因为我们的 n i o 说白了是基于我们的 io 多录复用去实现的好吧, 那包括我们啊。从一些其他的角度讲,就我们现在通过这样图呢,其实我们可以反映出两个两个维度。第一个维度呢,你的 io 模型是主色的还是非主色的?包括我们 io 多了,复用他也是一种 所谓的非主色的艾欧。好吧。好,这是第一个维度,然后第二个维度呢?你的一个艾欧模型是同步的还是一步的?你看同步跟一步,所以说这 这里我们两个维度。那刚刚说了对吧?那这两个维度然后呢?有点有点模糊的同学,可以给安老师扣一个零试一下好吗?就什么叫同步一步?什么叫主色非主色?哎,你说主色非主色,是我们说的这种现成的一个主色跟非主色吗?对不对?可能有这样一些问题的同学都可以先扣个零。 好。当然,如果说你在脑海里面有那么一瞬间,是根据我刚刚的一个思路去做一个思考的话,哎,很好很好。但是在这块呢,我需要告诉你, 在我们很多这种 io 的一个接口里面,可能会造成你的一个现成的阻塞。但是呢,我们这个所谓阻塞啊,非阻塞啊,他的概念是完全完全不一样的哇, 他抢的那个点不一样。那在这块呢,按老师呢做一个呃,简单而又形象的一个讲解好吧。啊,在我们 io 中,所谓的同步啊,异步啊,主色非主色,他到底是什么概念? ok, 我们先从第一个维度讲,比较好理解的一个维度啊,就我们这个所谓同步跟异步,因为大家去做这种系统开发啊,你去跟一些系统交互,其实我们也经常存在这种同步跟异步的一个概念,对不对?那你系统的交互跟我们交换的也是一样,就同步异步,他强调的是什么? 我想要同学们去思考一个问题,所谓的同步跟异步,他强调的是什么?强调的是不是我们这种结果返回的一个形式啊,对不对?来我我再举个例子啊。比方说我们用生活中的一个例子去做一个讲解。比方说我们今天呢,有个 moncy 老师, 芒果老师,他很有钱,然后呢,我们 fox 老师,他想去找我们芒果老师啊,啊,就借这么一百块钱对吧?那如果说我们芒果老师哎,进到了我们啊,不,我们 fox 老师啊,我们霍老师进到了我们芒果老师家里跟跟他说哎,芒果老师借我一百块钱好吧。好,那这个时候如果我们芒果老师 直接当场把这个钱给到我们冯老师,然后他再拿着这个钱哎回去,这这不就是一个结果吗?那这种不不就是我们所谓的同步吗,对不对?那什么叫一步呢?那 第一步说白了就是哎,我先给给我们孟老师说我要借钱,但钱还没有给我的时候,那我就先退出了当前的一个啊,就已经离开他家了,对不对?然后再用,再由我们孟老师哎,他可能主动找上去,可能找到的是 fox, 或者找到他老婆对吧?给了他一百块钱, 这不就是一步吗,对不对?没有问题吧,同学们,有问题的同学都可以及时的反馈一下你的问题。好吧。好,那我们再讲什么叫主色跟非主色? 那我们刚刚说到有个现成的主色对吧?但是呢,在这里我们 io 的主色跟非主色,他是强调了这么个东西,强调的是对调用端的一个影响。那如果说我们盲考 只是一个服务端的话,我们一系列的客户端是不是就是我们的一个调用端对吧?我们同样拿我们刚刚这样的一个借钱的例子,还是我们孟老师。 如果说哎,我们风老师这个时候要去找我们蒙老师借钱,当前这样的一个请求还没有得到一个响应的话,那这个时候比如说我们今天啊,小宁老师啊也来了,说想找蒙老师借钱,那他呢?当前门都进不去,好吧,门都进不去,只有说风老师退出了 ok, 他才能进来,这就叫阻塞。 那什么叫非主色呢?那直接很好去理解了,你还没有戒完, ok, 我同事也可以进来,只是你最后看你到底先处理谁的请求,不就完事了吗, 对吧?来,同学们。在这块老师讲到这样的一个例子之后,对于我们 io 里面的同步一步,主色跟非主色没有问题。同学,来鲜花走一波好吗?非常形象了吧。 啊,所以说这个东西,我们的主色跟非主色还不能够跟我们的现成主色去进行一个等价吧。 主色不就是多县城吗?也不太一样啊,不太一样,他的概念上是不一样的。但是呢,我们在主色的情况下,我们是可以通过多县城一些方案去做一些解决。我们待会再去讲。好吧, 好,会不太一样。我们继续往下走,懂了吧?好,继续往下走。我们就开始要真正的去讲到我们的呃,三个模型。好吧。好,我先去讲我们的一个所谓的主色,艾欧波力平波流。平艾欧也是我们的一个 bio。 好吧,来,我,我同样的进入一个动画,给大家去做一个讲解 啊。我们这边呢,有几个重要的概念,像我们刚刚去梳理的一个网络 io 模型里面我们的应用对吧?我们的内核包括我们的网卡,还有包括我们一系列 网络上的一些数据,以及呢我们内存中的用户空间跟内核空间对不对?那如果说我们的应用要去实现一个 blo 的服务啊,那我呢应用里面我至少得有一个现成,对吧?我们说去啊,一个现成要去开启一些监听吗?对不对? 来。在在这里的话,我们如果说对于我们这种服务端,我们第一步我们现在里面要去做一个事情,那肯定是去接收一系列这种连接吗? 对吧?这个应该没问题吧。其实对于我们这种接收连接呢,我们刚刚说了这种也是去进行一些网络 io, 我要去调用内核的一些函数,对不对?那这一块 blo 里面调用的一个函数呢?是一个 reco fm 教你一个函数。那如果说在这个时候我去做一些个调动之后,没有一些这种数据进来,没有一些 这种网络上的数据进来,我当前现场呢,也确实会进入到一个主色的状态,好吧,好,只有说某一天呢,有一个搜给他连接了, ok, 那我内核去找找,我的网卡里面有数据了, ok, 对不对?再经过我们刚刚说的两个步骤吗?哪两个步骤?我们的一个数据准备跟我们的一个 数据拷贝,那这个时候呢,我当前连接才能真正去建立。那对于我服务端,我去建立连接之后要干嘛呢?我要再去读了吗?对吧?再去读, ok, 我就调一个 red, 那我的 red 一个,实际上说白了,他去调用我们内核函数是哪个呢?还是这么一个?还是这么一个?函数? rese f 好吧,狙掉他。那这个时候我们我们的数据才啊,又在经过我们的数据准备啊,数据拷贝被我们去读到。好吧好。那我想问一下同学们,虽然我们在这块刚刚说有进入 到一个现场阻塞对吧?但如果说结合我们刚刚对于一个同步一步非阻塞的一个理解,我想问一下同学们,如果当前这样一个 sorry 他没有关闭连接我,我网络里面再出再来了一个 sorry, 在这块再来一个 sorry 我能够去接你连接我能够去读吗? 我能够去读吗?来。觉得可以的同学可以扣一个一,觉得不可以的同学扣个零。哎,特别是我们这个呃幼同学好吧, 觉得可以吗?觉得可以读吗?那这样如果说我刚刚是说的一是觉得可以读吧,对吧?我应该是这么说的吧。 啊那如果说啊幼同学回答是一的话,那你确实还不太理解啊。其实在这块虽然说我们你你想想我们刚刚哎说的 那个非主帅啊,他这块我当前这个县城跟我们这边建立个联系,他只能够去接受他的一个连接,我并没有去退出我家里吗?对吧?就进到我们啊,我们小林老师也进到我们芒,就还没有进到我们芒果老师房里吗?对不对? 所以说这个年纪他无法,至少在我们当前,如果你是一个县城的话,我就会无法去服务于我这样的一个客户端的好吧好。那这个时候我们又同学理解没有 啊,不流行 q 还还不行你你现在只有一个县城,那如果说我当前这个县城,我去读。我我刚刚不是说了吗,再读我也会让我县城进入一个主色,对不对?你在你第二个年纪进来了,我 当前现场会去执行这一步,去建立一个锁客的连接吗?建立不了呀,对不对?你用菠萝也也没用哈。对好,我们再往下走。那这里呢?就是 说我们这个主赛啊,说白了啊,也比较简单对吧?如果说我们基于他一个基础的模型,你要去适应我们那些应用场景,因为我们普遍的应用场景是什么方式啊?我我们应该是这种很多的这种客户端的对不对?就是高高高兵法马多连接吗? 对吧。所以这种情况你基于基础的模型,他肯定是不行的。那如果我们能不能去做一些改造,让他也支持呢?啊?当然是有。但是呢,这个问题我们先暂时保留,我们待会通过我们的一个标的编程,通过代码,我们再去做一个分析。好吧, 那包括像啊,他们看到早期那些版本,他其实都是基于我们这个所谓的 bl 去实现的,对不对?那当时的 b a, 他们看到他又怎么做的呢? 好吧好,这个问题我们同学先保留。 ok 啊,我们再先往下走。说我们的一个非组赛。哦,那其实刚刚呢,对于我们这个主色 io, 他最核心的一个问题 在哪?那是不是我们刚刚去探讨了,你不能够同时服务于多个收口的一个年级啊,对不对?那其实对于我们这种非主帅哥呢,他其实可以去, 至少从功能上就可以去解决这个问题了。他怎么去解决呢?来我我我在这块的话,我就稍微快速的一点。好吧,因为 bl 大家大概理解的话,这个东西就没有太多的问题。那我呢?先有一个应用,我有个现成,我要去 sf 接受连接,但我这块调用我们的内核函数发生一些变化。我调用的是什么呢?调用的一个 瑞瑟还是瑞瑟弗尔姆。但是我在这块我传入的数据推门看是一个 noblok, 就非主色,我告诉他是非主色,那这个非主色有什么用呢?他不会让我们当前现场进入主色,就即使你网络里面没有一些连接。 ok, 我这个现场可以无限的往下走,无限的往下走。那假如说我们一般啊, 我们一般这种网络监听,我们肯定会有个微。要循环嘛,这个应该没有问题吧?对,就就一直循环,一直循环就就完事了哇。好。那如果说 ctrl 做完之后,即使你没有数据,我们下一步干嘛?同学们,我们下一步干嘛?我们是不是要去读呀, 对吧,读。同样的也是调动这个借口,也是调动他。那我之后在应用层面我要去做一些什么事情呢?那如果说我某一次循环到这边有个赛普的,那说白了我就把我这样的一个 sokit, 那你 sorry 的我,我们用加网里面我们的这种客户端,他其实你抽象成一个对象就叫 sokit, 对不对?我们家里面是有这个东西的。那我就把这样对象就维护到我的一个应用程序里面的一个链表,你看来一个我就维护一个,来一个就维护一个。那之后我要干嘛呢?在这个循环里面,每次第每次循环到他哦,如果有连接。 ok, 我放到这个链 里面,循环到他里面的时候干嘛呢?把整个列表去做一个编列,看他有没有数据能够读到,能够读到哇?我我整个现实是一个循环的,不会进入一个阻塞。那这样的话,那我们我我想问下同学们,那结合我们刚刚这样的问题,我网络里面如果说再来了一个 往网络里面如果说再来了一个 solk 的,这个时候我一个县城能不能去读到两个 soke 的一个数据,同学们能读到的扣个一,不能读到的扣个零, 如果说有两个了,能对吧?肯定是没问题。 ok? 好。所以说我们哎,好像这么一看,这个飞组赛哦,好像符合我们的应用场景。 对,但为什么说说安老师,你刚刚说这个恩爱,我没有去使用他呀,那他的问题在哪?那我想要同学们你去思考下,如果说在你的应用 程序里面,你去写这么一个 vl 循环,然后呢?他还不是不会让我们县城金融阻塞,一直这样循环,一直循环,一直循环,他会带来什么问题啊,对吗?你你在你在你开发过程中能够去写这样一些操作吗? 啊, cs 还没法去解决这个问题,如果你用 cs 的话,其实没有,没必要急于我们一个飞速赛。欧了, 对,一个号能可能直接会引起你 cpu 的一个异常,对不对?好,所以说为什么说啊?安老师说这个东西他也没有说经常去使用,可以说任何的应用程序,他这东西理论上存在,没人会去用。 好。所以今天也是要大家有,一定要有所区别。我们的 n i o 根本不是所谓的 novok i o。 为什么?因为我们的 nl 他其实真正的名字更加贴切的名字应该叫六 io。 好吧,那什么叫六 io 呢?其实他的一个实现其实基于我们的。我们今天一个重点是一个 io 夺录服用。


bionioaio 有什么区别? bio 同步主赛是 io, 就是我们平常使用的传统 io。 它的特点是模式简单,使用方便,并发处理能力低。 nio 同步非主赛是 io, 是全统的 io 升级,客户端和服务端通过 china 通道通讯实现多录复用。 aio 是 nio 的升级,也叫 nio two, 实现了一部非独裁式 io。 一部 io 的操作基于事件和回调机制。