00:01
Select select对应的是哪一个呢?对应的就是我们原先讲的哈,来看这里。原先在讲Nike模型的这个部分select,其实这个在IO的时候,其实我们已经讲过了,对不对,来看一下再梳理梳理。那看这里吧,回到这边来看。Select呢,它是基于啊select啊,基于select对象实现IO多路复用,通过select一个线程可以监听什么呀,多个。连接China的事件没问题吧?这其实在前面讲no的时候就已经把这个事情说清楚了。当像一个select中注册China后。内部的机制就可以自动不断的看这里你把一个注册到select过后呢,Select内部机制可以自动不断的查询。这些注册的channel是否?
01:02
一啊,是否有已就绪的IO世界,比如说读啊,写啊,网络连接等等,那么这样这样程序就可以很简单通过一个线程高效的管理多圈了,那。换言之,就是select可以管理多个channel。而且它是基于时间驱动的。我们再来看China handler China handler其实在前面呢,我们已经用用过了,大家看这里。我们在这个代码里面把它收起来。大家可以看到。我们这边在simple,我们是不是写simple这个程序里面,我们写了一个server handler。哎,有些同学说老师不是handleler呀,你看你是China inbound handler adapter,那你往上面追一追看看是不是。追一下。追到这里面去,诶你看他呢,又继承了。这一个。对,而且呢,实现了这个接口,我们继续往上追这个China handle adapter。
02:02
继续追,诶大家看到这个抽象内是不是就实现了China handle?所以说我们这些写自定义的这些handle呢,它其实是呃,实现了China handle接口的。接着继续往下看。China是一个接口,处理IO事件或拦截IO事件,并将其转发到看清楚转发到其。转发到其China PI那业务处理链中的下一个程序。也就是他这个就说我们这一个,呃拍on nine呢,其实里面有多个handle德,它处理完了过后呢,他会把这个把这个数据交给下一个handle德ler继续处理。China handle呢,本身没有提供很多的方法,因为这个接口有许多方法需要实现,方便使用啊的时候,我们可以继承他的子类。那我们可以看到它的指令有多少啊,我们点一下你看下面啊,来看我们进到这里面去。
03:00
往这儿一点,你看。哇,你看他的字嘞。喔,往下看啦。多不多啊,很多很多,是不是很多,那么很多的情况下,我们就来看一看它的。整个这个China handle实现内的一览图,我们看一下。我们抓住关键,从这张图呢,我们可以看到它首先最上级呢有个China handler是个接口,下面呢有一个子接口就是China autobound handler,这个是这个是处理出站的,Handler inbound呢是处理入站的。这是出战的。就是在这个管道而言哈,就是一个是出站,一个是入站的,那这个还有一个China handler adapter,它呢,它直接去实现了China handleler在这个。China adapter呢,又出现了两个,一个是China outbound adapter和China inbound adapter。
04:00
对,除此,那我们来说一下他们要完成什么功能呢?China英镑handler,它用于是处理入战的IO事件。那有些同学说入战的时间是什么呢?打个比方啊,比如说。你这里有一个管道,这边是我的server啊,Server。那这个server的话呢,你你你这个管道的数据向这个server流过来,流过来,你在这里去读对吧,你是读这个东西。你读,那么这个我们就称之为入战。OK,就是你从这个管道里面读,我就入站,那那出站呢,就是用于处理出站的IO,出站的IO顺序就是相当于说你往这个里面写,对吧,你写写过来,比如说你数据往里面写,我们就叫一个出站的。好的,那接着继续往下看China,呃,还有一个识别器China inbound adapter呢,它是处理也是处理入,呃,处理入战的IO事件啊,英镑的就是入战嘛。
05:03
还有all found handle adapter是处理出战的,另外呢,还有一个特别的就是China,呃,Dupl handle,它是既可以处理。入站又可以处理出站,那一般情况下呢,我们尽量不要去使用这个东西,因为这个呢,嗯容易混淆对吧,他两个都能使用,两个都能处理,容易在编程的时候呢,容易混淆起来,那么我们再从再再从这个idea这个地方再来看一下它的关系吧。把它的这个继承图打出来看一下,大家可以看到China呢,下面有直接有两个子接口,还有一个实现子类。往下看是不是在这里面,在这个handler adapter里面有一个outbound hander adapter,还有一个inbounder adapter,对不啦,是这样子的吧。就是这个图体现出来,这是个子接口。而直接下面呢,有下面有很多很多类,很多很多的子类,这个英镑的呢,下面也有很多。
06:04
对吧,这英镑的也有很多,那你看这个英镑的英这个。这个地方有out bound handler。这边呢,有inbound in,呃,China inbound handler adapter,是不是说这边它是有一个关系的,那个在哪里呢?同学们看,这边还有一个China Du handle是在哪里呢?我们来找一下。来找一下。好,我觉得应该是在这关系,在这个地方看China,呃,Dupl handle,它为什么既可以处理入站,又可以处理出站呢?我们点开看一下。点进去呢,我们发现哈,它其实呃,继承了。Inbound adapter说他能够处理入站的这样的一些业务,同时呢,它又实现了这个China out。A handler说说他又可以处理什么呀?
07:03
出战的这种数据,当然我还是那句话,关于出站和入站呢,我在后面还有一个详细的章节来说,大家不用着急看这里我们还有一个章节哈,在哪里呢?给大家看一下。在这啊,Let编码解码器和handle德ler调用机制的时候呢,我们还会说这个出站和入站啊,出站和入站呢,我刚才不是已经简单说了一下吗?我在这再提一下。好,嗯,怎么理解,呃,这个出站和入站呢,China piline,它提供了China handler链的容器是吧,也就是这个China China pipeline里面呢,包含了很多很多的这个。这个,呃,Handler以客户端应用程序为例,如果看这句话,如果事件的运动方向是从客户端到服务器端,我们称之为出站。哎,你看假设是一个客户端呢,这是一个客户端。
08:02
这是我们的服务器端问题。那当然,他们之间呢,肯定会有一个管道嘛。肯定会有一个管道啊,或者说也有一个这个排烂都都都可以这样去理解,那么这个时候呢,我们就把这个事件存蕊出站,即客户端发送给服务器端的数据会通过papeon中一系列的这个channel outbound handler。而被这些哈尔处理,反之呢,则称之为入战。哦,反之这称之为入战,就是反过来的情况下呢,我们就称之为入战。呃,这个现在这样理解可能大家还是不是很清晰,后面呢,我们会举一个例子,就是利用这个编码解码器来再次说明出站和入站的概念啊,这个你现在理解起来还是有点绕啊,还是有点绕。你可以简单理解成这个数据往这个方向去,对吧,我们就称之为是一个啊出站,那么反过来呢,往这边对吧,我们就认为是一个啊入站的操作。
09:08
好简单这样先理解,但这样讲呢,肯定还不不够细致,后面呢,我们会有很多的这个案例来支撑去理解。好的,我们还回到前面讲的这个知识点。是不是讲到这儿了?China。那么关于这个China handle呢,其实它还有,呃,他这里面呢,会有很多的这些方法。那这里面有些方法呢,我们需要给他聊一下。比如说我找到自己写的,别在这儿哈。在这里我们不是有一个。自己写的,自定义的。自定义,我们自定义了一个handle吗?大家看。我往下面拉一下。我们看这里面还有很多方法,比如像这个register register。
10:01
Activeactive。还有这个什么呀。这个exception。那这些它有什么含义?还有这个handler added。它是干什么呢?我们来进行一个简单的说明来看这里。如果是在在这个继承一个handle过后呢,我们去重写了China。Active这个就代表通道就绪,事件就通道呢,属于一个呃活动的状态了。这个是属于什么呢?通道属于一个active,就是通道呢处于一个。非活动的状态。这个代表China read在代表通道读取啊通通道读取数据事件发生。这边呢是读取完毕,就是read complete,还有一个比较重要的就是except,就是通道,如果发生异常的话呢,它会去触发。该方法。
11:01
那现在另外几个也是一样的道理,像这个注册对不对。呃,因为你大家还记不记得我们说过,我们说过就是整个这个,呃,整个我们在进行处理的时候,我们China呢,就是我我们这个China会被注册嘛,会注册的话呢,它就会China一旦注册了会发生这个事件,如果这个China它这个unre。注销了,它也会发生,它会触发该方法,以此类推,以此类推。那如果说还有一个,刚才我们讲的就是handler added,就这个。诶,这看不到了啊。就是刚才在这儿。在这个地方来看一下,再看一下。就是看一下这边还有一个方法就是看这里。找Cha看一下啊,Handler。Added。往这儿走。是不是这个呀。
12:01
找一下。往下看啊。在这。Handler added,就是说如果我们这一个处理器。被加入了,ID的被加入了,被被加入的话呢,这个事件就会被发生,如果我们handleler remove掉了,就是他他从我们整整个这个管道给呃拍烂,给移移除掉的话,这个事件也会被发生。对吧,所以说呃,大家也可以看到整个这个handler呢,其实它是一个非常复杂的体系,光从这个地方你们就可以看到下面有很多很多啊,不是一丁半点的东西,太多了太多了,体系非常的庞大。体系非常棒,体系非常的庞大,所以说我们可以可以这样理解,就是说整个这个handler其实是构成了我们ni的一个非常核心的业务处理的。也一个知识点,那后面呢,我们在刚才我们说的讲。
13:04
编编码器解码器和handler机制的时候呢,我们还会来说这些内容。好的。这个说完了过后呢,我们再继续往下看啊,那这块我们先梳理到这吧。
我来说两句