00:01
各位上硅谷的朋友们大家好,欢迎继续收看上硅谷Java n IO课程,下面呢,咱们来学习里边的第二章,关于NIO中第一个重要的概念China China呢,首先咱们先做一个总体上的一个介绍,China是一个什么?它翻译过来叫通道,通过它能进行这个读取和写入操作,大家可以理解为啊,China就像一个水管网络数据通过China能进行读取和写入。而这个水管这个通道跟咱说的流它是不一样的,流各位知道要么有输入流,要么有输出流,它是单向性操作的,但是咱说里通道既能用于读,也能用于写,或者同时进行读写操作,因为它是全双攻的,所以说它可以更好的比流更好的跟底层的操作系统进行映射。而ni IO中呢,就是通过这个channel封装了对数据源的这个操作,所以它肯定是更加的高效。另外这个channel呢,它里边可以操作数据源是有多种的,比如说我们的文件。
01:15
我们的网络sok用它都可以进行操作,而China大家可以理解为它是用于在这个字节缓冲区和位于通道的另侧的实体之间有效的充数据。那这句话什么意思呢?说的通俗点,拆操作要依赖于这个缓冲区进行的这么一个实现,咱们一会儿会详细说明。然后下面呢,我们看一下在channel里边有一段源码,咱就直接看我课件中,首先大家看到啊,China是个什么?是不是一个interface,然后在它的interfe中有两个方法,一个叫e open,一个叫close open表示什么意思?说你这个通道是否打开,这里写到如果它的指示处,那表示通道是打开的,还有一个叫close,那就表示关闭通道,这是关于它的这么一个定义。
02:12
而这个通道呢,与缓冲区是不同的,通道A片是由这个接口进行指定的,就是咱们刚才看到的,而不同操作系统中的通道实现是有本质上的不同的,那这里边大家注意啊,就是咱们这个channel呢,它也是一个对象,用它能进行读取和写操作,当然各比要明确啊,这里边的所有数据操作都是通过什么来处理的,就这个buffer,也就是说我们的China要源于buffer镜实现,Channel本身并不直接写入和读取这个数据,而它都是通过什么缓冲区进行的,也就是各位看到啊这张图上画的过程。那我们看一下啊,比如现在我这channel要读取数据,那怎么做呢?比如说大家可以理解管道中的数据总要先读取一个buffer,从buffer中进行读取,如果说你要写数据怎么做,那从管道中读取数据到缓冲区,然后从缓冲区中再写入数据到咱的通道,所以它里面是这个过程,比如我这里写到的啊,从管道中读取数据到缓冲区,就这个检测效果。
03:28
然后咱们从缓冲区写入数据,再到咱的通道,所以这是关于里面这个特点啊,注意是通道啊,不是管道,管道是另外一个特点。然后这里边我也写到啊,Java中的这个。NIO的通道类似于流,但是他们又不一样,咱说这个通道既能读又能写,但是流却是单向的。另外通道还可以异步并行读写,通道中的数据总是先读到一个buff,或者说从一个八块中进行写入操作。
04:02
所以这就是关于咱们说的channel的一个基本介绍,各位把它的特点给他知道,也是NIO中第一个重要的概念,Channel通道。然后这个channel呢,大家往下看啊,就是下面这里边列出来了,Channel里边重要的有这么四个实现,那四个实现咱看一下啊,第一个叫fair channel,什么意思啊,就表示啊,咱从文件中进行读写数据,第二个叫date gra channel,表示通过udp读写网络中数据,Udp,我们应该知道是一个无状态,所以咱通过它能实现。第三个叫做soet channel,就是读取这个TCP里边网络中的数据。第四个叫server soet channel,这很好理解,Server是服务器啊,它就像外有服务器那样,然后进行监听新进来的TVP连接,然后对每个信息连接都会建一个so channel啊,所以正如咱们看到的啊,这里边的几个实线,它就涵盖了什么。
05:09
Udp。TCP往外O以及文件的IO操作,所以这些就是关于咱们说的的一个总体的一个介绍,那下面呢,给各位要说的就是里边的这个四种实现,咱们一会会相应介绍,所以通过我刚才的说明,大家现在这个China有一个总体上的这么一个认识。
我来说两句