bio是什么 anm是什么意思

童年裸奔中年裸婚
精选回答

bio是什么 anm是什么意思在高性能的IO体系设计中,BIO、NIO、AIO的概念,常常会让我们感到困惑不解。在Java面试中,我们也经常会被问到这个问题。譬如:BIO、NIO、AIO 的概念同步/异步、阻塞/非阻塞的区别NIO 如何实现

在高性能的IO体系设计中,BIO、NIO、AIO的概念,常常会让我们感到困惑不解。在Java面试中,我们也经常会被问到这个问题。譬如:

BIO、NIO、AIO 的概念

同步/异步、阻塞/非阻塞的区别

NIO 如何实现多路复用功能

AIO、BIO、NIO的适用场景

NIO的核心概念、应用和框架等等

这块内容本身比较复杂,很难用三言两语说明白,而书上的定义不太容易理解。本篇内容按照我的理解,以尽可能简单、易懂的语言进行组织,希望能够帮助到大家快速理解这些概念。

AIO、BIO、NIO的区别

在弄清楚上面的几个问题之前,我们首先得明白什么是同步,异步,阻塞,非阻塞,只有这几个单个概念理解清楚了,然后在组合理解起来,就相对比较容易了。

IO模型主要分类:

同步(synchronous) IO和异步(asynchronous) IO阻塞(blocking) IO和非阻塞(non-blocking)IO同步阻塞(blocking-IO)简称BIO同步非阻塞(non-blocking-IO)简称NIO异步非阻塞(synchronous-non-blocking-IO)简称AIO

1.BIO (同步阻塞I/O模式)

数据的读取写入必须阻塞在一个线程内等待其完成。

这里使用那个经典的烧开水例子,这里假设一个烧开水的场景,有一排水壶在烧开水,BIO的工作模式就是, 叫一个线程停留在一个水壶那,直到这个水壶烧开,才去处理下一个水壶。但是实际上线程在等待水壶烧开的时间段什么都没有做。

2.NIO(同步非阻塞)

同时支持阻塞与非阻塞模式,但这里我们以其同步非阻塞I/O模式来说明,那么什么叫做同步非阻塞?如果还拿烧开水来说,NIO的做法是叫一个线程不断的轮询每个水壶的状态,看看是否有水壶的状态发生了改变,从而进行下一步的操作。

3.AIO (异步非阻塞I/O模型)

异步非阻塞与同步非阻塞的区别在哪里?异步非阻塞无需一个线程去轮询所有IO操作的状态改变,在相应的状态改变后,系统会通知对应的线程来处理。对应到烧开水中就是,为每个水壶上面装了一个开关,水烧开之后,水壶会自动通知我水烧开了。

4.IO与NIO区别

5.同步与异步的区别

同步

发送一个请求,等待返回,再发送下一个请求,同步可以避免出现死锁,脏读的发生。

异步

发送一个请求,不等待返回,随时可以再发送下一个请求,可以提高效率,保证并发。

6.阻塞和非阻塞

阻塞

传统的IO流都是阻塞式的。也就是说,当一个线程调用read()或者write()方法时,该线程将被阻塞,直到有一些数据读读取或者被写入,在此期间,该线程不能执行其他任何任务。在完成网络通信进行IO操作时,由于线程会阻塞,所以服务器端必须为每个客户端都提供一个独立的线程进行处理,当服务器端需要处理大量的客户端时,性能急剧下降。

非阻塞

JavaNIO是非阻塞式的。当线程从某通道进行读写数据时,若没有数据可用时,该线程会去执行其他任务。线程通常将非阻塞IO的空闲时间用于在其他通道上执行IO操作,所以单独的线程可以管理多个输入和输出通道。因此NIO可以让服务器端使用一个或有限几个线程来同时处理连接到服务器端的所有客户端。

7.BIO、NIO、AIO适用场景

BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择。NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂。AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。

NIO的3个核心概念

NIO重点是把Channel(通道),Buffer(缓冲区),Selector(选择器)三个类之间的关系弄清楚。

1.缓冲区Buffer

Buffer是一个对象。它包含一些要写入或者读出的数据。在面向流的I/O中,可以将数据写入或者将数据直接读到Stream对象中。

在NIO中,所有的数据都是用缓冲区处理。这也就本文上面谈到的IO是面向流的,NIO是面向缓冲区的。

缓冲区实质是一个数组,通常它是一个字节数组(ByteBuffer),也可以使用其他类的数组。但是一个缓冲区不仅仅是一个数组,缓冲区提供了对数据的结构化访问以及维护读写位置(limit)等信息。

最常用的缓冲区是ByteBuffer,一个ByteBuffer提供了一组功能于操作byte数组。除了ByteBuffer,还有其他的一些缓冲区,事实上,每一种Java基本类型(除了Boolean)都对应一种缓冲区,具体如下:

ByteBuffer:字节缓冲区CharBuffer:字符缓冲区ShortBuffer:短整型缓冲区IntBuffer:整型缓冲区LongBuffer:长整型缓冲区FloatBuffer:浮点型缓冲区DoubleBuffer:双精度浮点型缓冲区

2.通道Channel

Channel是一个通道,可以通过它读取和写入数据,他就像自来水管一样,网络数据通过Channel读取和写入。

通道和流不同之处在于通道是双向的,流只是在一个方向移动,而且通道可以用于读,写或者同时用于读写。

因为Channel是全双工的,所以它比流更好地映射底层操作系统的API,特别是在UNIX网络编程中,底层操作系统的通道都是全双工的,同时支持读和写。

Channel有四种实现:

FileChannel:是从文件中读取数据。DatagramChannel:从UDP网络中读取或者写入数据。SocketChannel:从TCP网络中读取或者写入数据。ServerSocketChannel:允许你监听来自TCP的连接,就像服务器一样。每一个连接都会有一个SocketChannel产生。

3.多路复用器Selector

Selector选择器可以监听多个Channel通道感兴趣的事情(read、write、accept(服务端接收)、connect,实现一个线程管理多个Channel,节省线程切换上下文的资源消耗。Selector只能管理非阻塞的通道,FileChannel是阻塞的,无法管理。

关键对象

Selector:选择器对象,通道注册、通道监听对象和Selector相关。SelectorKey:通道监听关键字,通过它来监听通道状态。

监听注册

监听注册在Selector

socketChannel.register(selector, SelectionKey.OP_READ);

监听的事件有

OP_ACCEPT: 接收就绪,serviceSocketChannel使用的OP_READ: 读取就绪,socketChannel使用OP_WRITE: 写入就绪,socketChannel使用OP_CONNECT: 连接就绪,socketChannel使用

NIO的应用和框架

1.NIO的应用

Java NIO成功的应用在了各种分布式、即时通信和中间件Java系统中,充分的证明了基于NIO构建的通信基础,是一种高效,且扩展性很强的通信架构。

例如:Dubbo(服务框架),就默认使用Netty作为基础通信组件,用于实现各进程节点之间的内部通信。

Jetty、Mina、Netty、Dubbo、ZooKeeper等都是基于NIO方式实现。

Mina出身于开源界的大牛Apache组织Netty出身于商业开源大亨JbossDubbo阿里分布式服务框架

2.NIO框架

特别是Netty是目前最流行的一个Java开源框架NIO框架,Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

相比JDK原生NIO,Netty提供了相对十分简单易用的API,非常适合网络编程。

Mina和Netty这两个NIO框架的创作者是同一个人Trustin Lee 。Netty从某种程度上讲是Mina的延伸和扩展,解决了一些Mina上的设计缺陷,也优化了一下Mina上面的设计理念。

另一方面Netty相比较Mina的优势:更容易学习API更简单详细的范例源码和API文档更活跃的论坛和社区更高的代码更新维护速度

Netty无疑是NIO框架的首选,它的健壮性、功能、性能、可定制性和可扩展性在同类框架都是首屈一指的,后续将重点详细谈Netty的实现原理以及实战场景。

开错季节的玫瑰 2024-02-15 22:24:31

相关推荐

tvb古装戏 tvb古装戏演员表

tvb古装戏相信很多小伙伴还不知道,现在让我们一起来看看吧!1、1《孤星剑》《孤星剑》是由香港电视广播有限公司于1993年出品的的爱情古装武侠剧,由郑伊健、梁小冰、魏骏杰、何婉盈、陈嘉辉等主演,共15集。2、该...
展开详情

相宜本草属于什么档次(相宜本草属于什么档次的化妆品)

怡怡给大家谈谈相宜本草属于什么档次,以及相宜本草属于什么档次的化妆品应用的知识点,希望对你所遇到的问题有所帮助。相宜本草属于什么档次(相宜本草属于什么档次的化妆品)1、相宜本草是国产的护肤品品牌,而且相宜本草有...
展开详情

红心猕猴桃几月成熟 红心猕猴桃好吃吗

小乐给大家谈谈红心猕猴桃几月成熟,以及红心猕猴桃好吃吗应用的知识点,希望对你所遇到的问题有所帮助。红心猕猴桃几月成熟红心猕猴桃好吃吗1、猕猴桃一般八月到十一月份成熟上市。2、猕猴桃也称奇异果,质地柔软,口感酸甜...
展开详情

梦见棺材和办丧事的场面 梦见棺材盖子打开是什么征兆

源源今天给分享梦见棺材和办丧事的场面的知识,其中也会对梦见棺材盖子打开是什么征兆进行解释,希望能解决你的问题,请看下面的文章阅读吧!梦见棺材和办丧事的场面梦见棺材盖子打开是什么征兆1、梦见出殡的场面和棺材预示什...
展开详情

电子小报模板 电子小报模板word版可编辑

小天给大家谈谈电子小报模板,以及电子小报模板word版可编辑应用的知识点,希望对你所遇到的问题有所帮助。1、求军训电子小报模板军训必需品:1电风扇(一定要带,千万要带,不带必死---热死的,民生之所需)2毛巾杯...
展开详情

精选推荐更多>

同茫茫宇宙相比地球是渺小的说明方法

同茫茫宇宙相比地球是渺小的说明方法是作比较。
作比较是将两种类别相同或不同的事物、现象加以比较来说明事物特征的说明方法。说明某些抽象的或者是人们比较陌生的事物,可以用具体的或者大家已经熟悉的事物和它比较,使读者通过比较得到具体而鲜明的印象。事物的特征也往往在比较中显现出来。在作比较的时候,可以是同类相比,也可以是异类相比,可以对事物进行“横比”,也可以对事物进行“纵比”。
作用:把……与……进行比较,突出强调了说明对象的特点。
例句:永定河发水时,来势很猛,以前两岸河堤常被冲毁,但是这座桥却从没出过事,足见它的坚固。——《中国石拱桥》

秋赏菊的前一句是什么

“秋赏菊”的全句是“踏秋赏菊去登高”,上一句是“重阳节,要敬老”。
出自人教版部编本二年级下册课文识字2《传统节日》:春节到,人欢笑,贴窗花,放鞭炮。元宵节,看花灯,大街小巷人如潮。清明节,雨纷纷,先人墓前去祭扫。过端午,赛龙舟,粽子艾香满堂飘。七月七,来乞巧,牛郎织女会鹊桥。过中秋,吃月饼,十五圆月当空照。重阳节,要敬老,踏秋赏菊去登高。转眼又是新春到,全家团圆真热闹。
中国传统节日,是中华民族悠久历史文化的重要组成部分,形式多样、内容丰富。传统节日的形成,是一个民族或国家的历史文化长期积淀凝聚的过程。中华民族的古老传统节日,涵盖了原始信仰、祭祀文化、天文历法、易理术数等人文与自然文化内容,蕴含着深邃丰厚的文化内涵。从远古先民时期发展而来的中华传统节日,不仅清晰地记录着中华民族先民丰富而多彩的社会生活文化内容,也积淀着博大精深的历史文化内涵。

酯化反应可逆吗

酯化都是可逆反应,酯化在浓硫酸中进行,同时生成的酯在酸性条件下会发生水解,所以是可逆反应。酯化反应,是一类有机化学反应,是醇跟羧酸或含氧无机酸生成酯和水的反应。分为羧酸跟醇反应和无机含氧酸跟醇反应和无机强酸跟醇的反应三类。
有机化学又称为碳化合物的化学,是研究有机化合物的组成、结构、性质、制备方法与应用的科学,是化学中极重要的一个分支。含碳化合物被称为有机化合物是因为以往的化学家们认为这样的物质一定要由生物(有机体)才能制造;然而在1828年的时候,德国化学家弗里德里希·维勒,在实验室中首次成功合成尿素(一种生物分子),自此以后有机化学便脱离传统所定义的范围,扩大为烃及其衍生物的化学。

精卫填海是民间故事吗

《精卫填海》是民间故事。
《精卫填海》是中国上古神话传说之一。相传精卫本是炎帝神农氏的小女儿,名唤女娃,一日女娃到东海游玩,溺于水中。死后的女娃化作花脑袋、白嘴壳、红色爪子的一种神鸟,每天从山上衔来石头和草木,投入东海,然后发出“精卫、精卫”的悲鸣,好像在呼唤着自己。
基于不同的研究视角,人们把“精卫填海”神话归于不同的神话类型。“精卫填海”神话属于典型的变形神话,且属于变形神话中的“死后托生”神话,即将灵魂托付给现实存在的一种物质。不仅如此,“精卫填海”还属于复仇神话,女娃生前与大海无冤无仇,但是却不慎溺水身亡,如此与大海结下仇恨,化身为鸟终身进行填海的复仇事业。
中国上古神话中记录了很多典型的非自然死亡,其中的意外让人看到了先人在自然面前的弱小和无能为力,同时也透出了生命的脆弱。女娃的死就是一种因事故而亡,展现出生命的脆弱和大海的强大。
著名作家茅盾则认为:精卫与刑天是属于同型的神话,都是描写百折不回的毅力和意志的,这是属于道德意识的鸟兽神话。
常见热点问答
热点搜索
1-20
21-40
41-60
61-80
81-100
101-120
121-140
141-160
161-180
181-200
作文大全
1-20
21-40
41-60
61-80
81-100
101-120
121-140
141-160
161-180
181-200