00:00
那么将来呢,咱们就开始这个策划n na的这个课程,那么我说实升课N啊,它早在最低课一百四的时候就已经有了,我们说只不过那个时候呢,N刚出的时候呢,可能那个时候对于高并发的那个需求量还没有那么大,甚至于我们说这个n na对吧,它相对于NAO,首先我们是不是能清楚啊,对吧,就是输入输出,那么这个n na相较于我们传统的这个IO啊,它实际上改动的地方呢,比较的大,包括使用方式,包括它的原理方面,对吧,所以说在那个时候呢,它并没有被广泛的另另造,那么在现在呢,我们说对这种高并发的需求越来越大,甚至于我们说在这个1.7的时候,我们说对这个NIO进行了一定的改进,所以说现在的这个NIO,它已经成为我们这个程序员的必备技能之一,对吧,或者说成为我们障碍程序员的必备技能之一,那么以是。
01:00
我们说在这里个1.7,我们把这个IO,我们对NIO的这个改动称之为叫做NIOO2,那么所以说呢,现在呢,我们要对这个NIO的一个要好好的学一下,因为现在企业当中用的还是比较的多的,那么所以no这于说我们主要讲什么内容呢?对吧,我们说AIO它主要提出了这么几个概念,一个呢叫做缓冲区,一个叫做通道,那么另外一个比较核心的概念呢,就是这个选择题,那么到后边呢,咱们都会详细的讲到,那你说说no说半天对吧,如果说A它到底与传统IO有什么区别,我们说IO呢,就是输输出对吧,说no,那我们说它是new IO的一个缩写,是不是新IO啊对吧?我们说甚至于呢,你也可以把它理解为叫做慢,叫做loingloing,哎,有什么意思呢,叫做分组算式哎。
02:00
对吧?当然我们说官方给它的翻译,那是不是叫做谬L啊对吧?我们说我们可以把它理解为叫做分组算式L,那说它在这个1.4的时候是不是就已经有了呀?它可以代替原来标准的这种IOAPI对吧?No,原来的IO有同样的作用,但是呢,方式完全不同,对吧?然后呢,AO可以以更加高效的方式进行读写操作,那么我们说NIO和这种传统的IO到底又有什么区别呢?那么主要的区别就这么几个,对吧?那首先看第一点,我们用的传统的IO,那叫做面向流的,而现在的NNAO它是面向缓冲区,那我们到底什么叫做面向流,什么叫做面向缓冲区呢?咱们过来进一步的理解它一下,比如说我们先说这个传统的IO对吧?传统的IO,那么我们说只要是IO。
03:00
A指的是什么呢?是不是就input呀?O指的是output IO指的是不是就是输入输出啊,对吧?输入输出我们说只要是IO啊,都是用于传输数据的,这个时题呢,对吧?IO就是用于传输数据,那么但是说呢,我们说IO我们比较好理解,但是对于这个流,它是不就是比较抽象的一个概念呢?第二我们说流还是比较抽象的概念,但是我们说IO它就是用于数据传输,我们说什么数据传输呢?比如说这是我们的那个叫做数据文件,当然我们说这个文件它可以是叫做磁盘,对吧?磁盘中的一个文件可以是磁盘,也可以是网络中呢,我们是不是可以通过网络传输一些数据啊,对吧?我们说可以是磁盘,可以是网络,然后比如说这边呢,是我们的这个叫做程序,我们的程程序,那我们说苏A指的是输输出这个没问题,我们这个流的概念呢,相对来说它叫比较的抽象,于是呢,当时我们说。
04:00
讲IO的时候,我们说把那个流理解为什么呀,是不是水流啊,我说把那个流是不是理解为现实生活当中的水流啊,我们说当时举个例子,就是说我们生活中的自来水它是从哪来的呀?哎,我们说是从自来水哪来的,我们就用我们自来水中的水引入我们的家中,我们是不是首先得建立一根用于传输水流的水管,建立一根用于传输水流啊水管,这样的话才能把自来水厂的水是不是通过水管引入到我们家中啊,那么说那根水管实际上直接面对的说,就里边的那个水流,是不是就是面对那个水流啊,那相应的原来我的IO也是一样的,说我们要把原节点的这些数据读取到我们程序中来,我们是不是也得建立一个用于传输数据的管道啊,对吧,也得用于建立一个用于传输数据的管道,那么也就说这个管道原来我们传。
05:00
数据那时候直接面对的就是这里边的字节数据的一个流动,原来咱们在操作IO的时候是不直接面对的,就是这里边的一个自学数据流动啊,咱们搞了个贝数组,然后来回的传,是不是这么做的,所以说原来的流论呢,它直接面对的就是这里边的数据流动,所以说我们称原来的IO是面向流的。第二我们说你要完成数据的传输,先得建立一个录音传输数据的管道,然后呢,建立好了这个管道直接面对的就是这里边的一个数据流动。然后呢,我说传统的IO还有一个什么大的特点呢?我们说传统的O它是单向的,说什么叫做单向的呢?我们说如果说我想把目标地点的数据读取到城序中来,我们是不是得迁移个管道啊,那么这根管道啊,称它为正确啊输入流对吧?我们说要把这个目标地点的数据呢读取到程序中来,我们得建立一个用于传输数据的管道,那么这些管道我们称之为叫做输入流,那么相应的反过来,我们程序中要是有一些数据想要写到目标地点器,我们是不是也得再建立一个用于传输数据管道呢?那么这根管道我们就称之为输出流知吧输出流,所以说我们说原来的这个流它是单向的,这没问题吧,对吧,它是单向的,然后它里边面对的就是直接这里边自。
06:40
结束句的一个流动,所以说我们称传统的这个L,它是面向流的,那么再说我们说,再说我们的这个叫做L。那么NNAO又有什么特点呢?还是我们说只要是IO,那是不就是完成数据的传输的呀,对吧?说IO呢,就是完成数据的传输,比如说这是我们目标文件对吧?当然我们说目标文件它可以是叫做磁盘中,也可以是网络中的,那么相应的这一边呢,还是我们的应用程序对吧?这边是我们的程序,我们说即便是你用NL,它是不是也是数据传输啊,所以那么你要想完成一个数据的传输,你也得建立一个用于传输数据的,但是这个时候我们称它为什么呢?叫做通道,通道,我们说使用A的话,你要想完成数据的传输,你是不是也得建立一个用于传输数据的呀,但是我们是不是称之为通道啊,学生是通道,你完全可以把它理解为原来的那个。
07:51
零,但是呢,虽然说你可以这样理解,但是呢,它也有很大的不同之处,比如说什么不同之处呢?举个例子,我们说这一次啊,我们这个通道你就不能把它理解为生活当中的水流了,我们说你不能把这个通道理解为生活当中的水流,但是你可以把它理解,为什么呢?你可以把这个通道理解为铁路。
08:17
知道啥是铁路吗?是铁路啊,铁路的问题吧,对吧,所以用于也是金融传输的呀,对吧?用用于交通运输的一种一种工具,铁路,那么接下来我问,我们说铁路它本身能完成传输吗?或者能完成运输吗?铁路本身它是不能完成运输的吗?我们铁路要想完成运输,它必须依赖什么东西,那是必须得有火车啊,所以说这个通道你就可以把它理解为铁路,说白了它是不是就是用于与目标地点,原原地点和目标地点的一个连机山啊,就像比如说我们说北京到我们哈尔滨,它是一定会有一条铁路啊,它是从北京通向我们哈尔滨的吧,对吧,那它有个铁路,我们说铁路它只是用一个连接,但是你实际上路上完成运输,你得有火车到这个例子当中一回事,我们说这个通道。
09:18
它仅仅是用于连接的,但是通过本身它没有任何的数据,它传输互联网数据,我们说要想传输传输数据必须依赖什么呢?我们说这里边呢,得有一个叫做缓冲区,叫做缓缓冲区。这位同学啊,这个缓冲期你就可以完全的把它理解为火车,那么火车代表意味着什么呢?比如说这是我们的起点,你缓车,你在这里准备出来的时候,你得先干嘛,是装人啊,对吧,我们说那人是不是得从这里都上去啊,当缓冲区装到一定程度的时候,对吧,是不是开过去就开不去啊,开过去你还得怎么样,是卸卸人对吧?这人是不是就得下来呀,当然你要是有需要,你是不是还可以再抓这来抓出还是怎么样就还回来呀,所以说原来的零他是不是单向的对吧?一个输入一个输出,现在的缓冲区它是,哎,它是双向的。
10:25
这能听懂吗?对吧,这是双向的,看懂了对吧,它不能不仅能过去,他从然能回来啊,对吧,也就意味着我们说你在一个比如说起点的地方,对吧,在这里你首先第一件事儿,你是得装数据啊,把数据装到了一定程度以后,然后缓冲区是通过通道发过去啊,发过去你再把数据是不该取的就取出来呀,当然你有需要,你是不是还可以再往里装,装完了之后沿着通道就再给我回来,那这个就叫做面向缓冲区。所以说显然言究生我说通道,它实际上讲的是什么呀,通道主要负责干嘛的呀,所以通道主要负责连接啊,说白了通道它就是负责连接的,而真正数据的存储那得靠谁?是不是缓冲区啊,所以说通道本身是没数据,那数据得靠缓冲区中存,所以说通道是或者说n nio是不是面向这个缓冲区完成一个数据的传输啊,通道只是负责连接缓冲区才负责数据的存入储。
11:34
那这就是面向流和面向缓冲区的区别。对吧,我们说原来的流就直接面对里边的那些数据流动,对吧,直接是自己的数据流动,而现在缓冲区是把数据是不是都得存到缓冲区中了了,然后利用管道完成一个数据的传输,然后呢,利用缓冲区是不是进行数据的存或者是取啊,这就叫做面向流和面向缓冲区,也就是IO和NIO的一个区别,第一个区别说把互通道就完全可以理解为铁路啊,那么这样的话呢,这个就是IA和NNAO的第一个区别,那么相应的除了这个以外,他说还有这么几个区别呀,我们说原来的ina是不是叫阻塞式的呀,是不是叫非阻塞式的对吧?甚至于我说NNAO是不是还多了一个叫做select,是不是选择器啊,那么这几个区别,几个区别实际上是针对于网络编程而言的,网络IO也是谁呀,是socket呀,透明处啊,对吧,那这几个区别是针对网。
12:41
或通信而言的,那么这个区别当咱们一会儿讲了那个网络通信的时候,再去收他们的区别好搞定,那么通过这个我们是不是就能对通道和缓冲区有一个理解了,对吧?通道缓冲区来一个理解,那接下来再看看说什么是通道缓冲区小通道与缓冲区no系统的核心在于一个是通道,是不是一个是缓冲区啊对吧?说通道表示打开到IO设备,比如说是文件呢,或者套窃字,说白了就是网络嘛,对吧?通道用水是打开他们的连接,然后需要使用NIO系统,对吧?需要获取连接IO的通道以及用于容纳数据的缓冲区,对吧?然后操作缓冲区对数据进行处理,简而言之,通道负责传输八份,也是缓冲区的负责数据的存储,这就是通道和缓冲区的区别。
13:36
那么接下来那咱们要想对他们来一个应用,这两个我说的一个个学呀,对吧,一个一个的学是吧,反正是怎么数据存储,然后通道怎么用于原接目标地点和原地点对吧,原节点和目标节点,那么一个人来先说缓冲区,缓冲区出来了,是不是就是个容器用于存数据了呀,那接下来咱们就对这个缓冲区进行一个学习。
我来说两句