00:00
我们现在来开发ni。打开idea,我们继续来开发。走起来。取个名字叫client。呃呃,Ninety,这就是我们真正的消费者,呃,消费者了,Ninety。在这里呢,我们首先先创建一个线程池,好先创建一个线程池,因为待会儿呢,我们在执行的时候是以线程池的方式来完成的,创建线一个线程池。那就六了哈,那么怎么写呢,Private。Static静态的,静态的,然后exe。Or service?那这边我们取个名字。好,就用这个名字吧,六,这不用六了啊,X q xecuts exec CU。
01:02
对,就他他这里面呢,提供了一个方法。这个包好像没有引对哈,没有引对,看看是在哪个包包里面,这个包不对,先把这个拿掉。先拿掉,哎哟,他怎么又进去这个东西了呢。我们S点好没问题,这样就对了,另一个什么呢,同学们,咱们六。对,New。Affected。Po呃th po线程池吗?我就创建这个,那是我们创建多少个呢?我就我就用这个方法,我们跟我们机器的核数,就是我们有效的CPU核跟他关联起来。Runtime runtime get。Run time。点嘛呢。Valuable就是valuable process,就这个数就行了。
02:04
拿到这个东西过后,我们还要干什么呢?我们再定一个属性,就是哪一个呢,后面我们要用的。这一个client。对,Client handler。Ninety。Ninety client。好,我们取个名字叫client客端。拿到了,拿到以后呢,下面呢,我们就来开始做相关的一个初始化的工作。我来做出。初始化。初始化我们的客户端。客户端。好的。那下面我们就写一个方法了,Private static it void没有返回词对吧,Void。么玩意,这是voit。把相关的数字化工作提完。那怎么做呢?首先我们把这个科南特先拿到六一个。
03:03
又一个naty client c handle拿到了,拿到以后我们创建什么呀,创建我们的这个nio event的lo group,这个是不是还有印象啊,就创建我们的event eventt event lo group。那但同学们还记不记得,在客户端这边,只需要创建一组就可以了。那就event lo。生成变量。名字呢,咱们取个名,咱们取名字就叫group。老规矩。拿到拿到过后,下面呢,我们是不是又要去创建一个bootrip,注意不是server boostrap是bootstrap。Boot。Strip。这个包相应的。好,VR拿到了。拿到一个boop过后呢,我们做相应的一个处理,Rip点什么呢?Group。
04:04
把我们创建的这一个group放进去。下面呢,继续编程就行了,是不是该是China呢?China这边的时限内指IO IO soed。Sha China class。继续点什么呢?设置一个参数。我们以前讲过用China。China China option点这次呢,我设置这样一个东西,就是TCP,我不让他做一个DNA,就是没有延时的。好,这边呢,不眼屎,我做一个错。不延实,紧接着继续handleler,加我们的handle,诶,同学们还记不记得再加这个handle的时候,我们是有,呃,是可以直接六一个Cha。Initial对不对,这边应该写的是socket。
05:01
是不是用的是so so so China。对不对。下面呢,要去实现它的一个方法。老规矩。在这里面我们要加入相关的这个handler,比如说呃,当然我第一步呢,应该拿到他的pipeline。拿排盘,拿到排盘了过后我们按顺序来加就行了,是不是对于我们客户端这边来讲,同学们对于我们。呃,客户端这边而言,是不是也有编码和解码的问题,是不是,所以说我要按照这个方式来加进去,那我们聊一个string。实现什么呢?我们先是decoder,先是decoder。按顺序再加一个pipeline the last61个string。什么呀,咱们的。Nco加进去,加进去过后,同学们是不是应该加我们的哪一个了?同学们是不是应该加我们自己的这个业务。
06:06
Handler就是我们的client。代码写完。写完过后呢,下面继续不要忘了接着往下走,下面呢,我们要有一个连接的动作,Connect。啊,不是这个是boot。Strap connect。写上我们要连接的主机127。127.0.0.1没问题吧,端口7000。对同样做异步处理。那这个地方呢,它会有一个异常抛出,所以说简单一点,我们就踹一下。Catch。对,如果有异常的话呢,我们把异常补回一下。对,把异常补回一下,就把异常输出有什么异常打出来就可以了,好我们就先写到这,因为我这个是非延时的,所以说这个地方呢,我们就连接上就可以了,连接上以后呢,同学们,下面这个代码就是client这块写完了,还有一个特别重要的东东西是什么呢?就是要创建我们的代理对象。
07:14
这个方法呢,理解起来就有一点难度了啊,我所以把最后最难的放在最后写的,那这边呢,我们要编写一个方法。编写方法,使用代理。代理模式干什么呢?获取,获取一个。呃,获取代理对象。我们编写方法所代理模式获取代理对象,那获取代理对象的基本的规则我刚才已经讲了,如果这一块同学们有不理解什么叫代理模式的自己。根据我刚才提示,找相关的资料去学习就可以了,好吧,那现在我开始写这个写这个东西了,Public。Object get the b。那这里面我们就写相关的。
08:00
参数第一个参数,首先呢,我加这样一个东西,Finally加一个什么呢?Class。哎,Class这边来一个问号。这些我就不解释了啊,同学们这边首先我将来要去。要去创建的service类。这是参数,待会儿要传进来的,就是你实际上说白了就是这个嘛。就是我们的这个,呃,就是某一个具体的你要创建是哪一个,呃,Service类。然后接着继续翻了。反正呢,我们还要传入。一个什么呀,传入一个信息就是你,你将来在跟服务器端进行通讯的时候,这一个协议头是什么。就这个东西。我们前面在讲服务器端的时候,我说的这个玩意。这个图,那这个图呢,我们以一个变量的形式来体现,就是我取个名字叫provider。
09:00
Pro。OK。继续往下写。往下写呢,我们就直接return proxy。Proxy。OK proxy。一个反射的啊,点六一个proxy instance,现在这里面我们传入相关的参数,第一个是什么呀类的加载器。我用当前线程去获取点什么呢?Get context。Class no。好就行了,继续往下编写,再传入一个什么呢?传入咱们的一个实例class。有,这个是class。问号。然后呢,我们这边有一个中括号后边好。使使用我们一个相关的方法,大括号包起来。这边有个什么呢,就是要传的是service。啊,就是这个service传过来,紧接着呢,我们写上将来你要用。
10:04
这个代理对象调用的这个方法会得到东西,第一个呢,就是我们代理对象本身,第二个呢,就是这个方法。这个method就是你将来这个方法了,还有呢,就是你将来传递参数。这几个我要拿到,拿到以后我们用纳达表达式进行一个调用。怎么调用呢?非常的简单,往下写就行。啊,这边我们是不是应该有一个分号,不然代码过不去。好,继续往下写。呃,那么往下写的过程中呢,我们首先判断,如果这个client它等于no,就如果说它等于no就调,因为你在调用的时候呢,你是通过这个class去调用,如果它等于空怎么办呢?我们就初始化,第一是肯定要执行的,对。如果它嗯不等于空,那就往下走,往下走的话呢,我们这地方就设置参数。对,注意听啊,这是设置要。
11:00
要发给。发给服务器端的信息,那怎么做的呢?显然就是client。点set这个方法,我们是不是说第一个叫这个设置参数是这来的吗?那这个地方就应该使用你的协议头,加上你这个方法,将来调这个方法候传进来的,呃,信息这个我不知道讲清楚,待会我给你打一下啊,就这个地方是你的协议头,这个是你在调方法的时候传进来的那一个参数,比如说你调那个哈,你传了一个,呃,你你在给服务器传传信息的时候可以通知这个。ARGS进行获取,那我们这个地方呢,就零获取,因为它本身是个数组。好,拿到了。那这地方我解释一下啊,这个这个就是你的协议头。这就是协议头前面的部分。而ARGS0呢?ARGS0就是。
12:00
就就是客户端,客户端调用APIAPI说白了就是那个hello传进去的这个参数,就你这调这个方法肯定有要传的东西嘛,就这个参数啊,还有这个参数。OK。好,咱继续往下编写,最后有个return,因为你这地方呢,它需要有个返回值的,有个返回,呃,有个返回值,那这个返回值,因为这个方法会有返回值,如果有返回值,我们应该是怎么做的呢?这是一个重要动作啊,待会我还要解释呢,点submit,大家看submit其实就可以提交一个COP,实现Co接口的一个对象,其实它是一个任务。也就是说我们在前面讲了这么多,一个执行器是可以提交一个任务的,当然他接受的是什么呢?是一个实现了Co接口的这么一个对象,好,刚好就是我们client。诶,大家看可是不是。本身就实现了这个。我为什么做的,是不是就是这样做的好,然后呢,点get它的结果。
13:05
好,代码写。好,有人是不是很绕啊,这这段代码有点绕吧,嗯,我再给大家梳理一下啊,待会呢,我还要调试这段代码是返回一个代理对象。返回一个代理对象呢,在这里面我指定的一个内加载器,一个实例,然后呢,这边大家看这是个number达表达式的形式来调用我们的这个方法,这是代理对象,这个是调的是哪个方法,这个是参数调方法是传进来参数调的时候呢,这个这段代码会反复执行,就是说你每调一次,这段代码都会被执行一次,你明白我的意思吧。就这段代码是要被反复执行的,我这会可以给他说一下这段代码就是现在这个中括号部分。部分的代码。代码是代码。是每调用一次客户端,客户端。
14:00
每调用一次这个哈,啊,就是我们这个哈。就会就会啊,就会。就会调用,就会使用这次代码啊,就会进入到进入到该代码。该代码块。啊,那所以说我要判断,如果你等于空,我就去试刷,如果不等于空就不要做了,就设置你这次传进去的这个值,呃,然后呢,再把这个connect传到我们这个HQ做一个任务提交过去,提交完了这个get是干什么的呢?各位同学,这个get就是把你这个可connect这个结果。调的时候把这个结果给你拿去,到明白我意思了吧,好,大致就这么一个流程,大致就这么一个,待会呢,我们在呃。再根据运行的时候再来调试好。这个参数好,同学们,嗯,那现在呢,我们就可以来写最后一个方法,就是哪一个呢?是不是不strip了,这些都做好了,那现在呢,我们就留下了最后一个方法来,我们把它写一下。
15:04
对,那这个地方呢,我们我们再新建一个包包,新建一个包包,这个包我们就叫customer。消费者啊,客户。那这里面呢,我们刚才也已经把这个名字想好了,叫这个名字叫。KT是应该叫boot stripp。OK啊。来吧同学们,那显然这里面我是要写个主方,呃,主方法在这里面呢,我们写相关的东西,第一个。嗯,刚才我们讲过协议,协议这个头呢,咱们就干脆就在这指定好不好,就在这指定,就不要说东整一下西整一下,我们就这统一指定,这里我们定义协议头。把单写到这儿,当然我用一个public。Public static。好,Final。
16:00
然后呢,使这个地方我们就叫provide。呃,提供者的一个名字对不对,我们就写上在服务器端老师这应写的部分哪一个呢。这部分我们一起肯定是不好使的,对将来我们要处理一下。写到这来明白。那也就是说将来只要涉及到provider呢,你直接用c BOO strip去调查,使用它这个静态属性就可以了,好。那接着我们继续往往下面写,这里面应该干什么呢?首先创建一个消费者。对不对,那这个消费者是谁呀,其实就是我们这一个。Ninety没问题吧,那就一个ninety ninety.v拿到ninety。Ninety。这个这个其实其实叫名字叫叫这个也更好一点,叫customer。呃,他是个消费者。Cost。
17:01
是不是更形象一点好消费者,拿到这个消费者过后呢,各位不要着急创建代理对象。代理对象有点绕啊,同学们说我说了客户端有点绕,那你创建一个代理对象,当然很简单,Customer点吗?他不是有该定吗?那你把相关信息传进去,你要拿到谁的一个,通过反射拿到谁的一个一个代理对象啊,肯定是hello service。对不对,然后传providers,诶大家回忆下我们在get b的时候,是不是我在这个地方。在我们客户端这边是不是要传一个传两个参数进去,一个是这个,一个是provider。对不对,好,这就匹配上了,比方说以后呢,朋友们,我们进行一个接收。接收的时候,我就用hello service来接收,这边我们就叫ser v等于它。因为他返回的是一个对象。因此呢,我们需要强转。
18:03
卡一下拿到这个东西过后,我们现在呢,就可以发送什么呀,发送这样子啊,通过什么呢?通过我们的这一个代理对象,代理对象调用嘛呢,调用这一个服务服务。提供者。的。方法或者服务。OK,那非常简单,老师呢,就这样用了,怎么写呢?我们就这样子,用一个字符上先接收它返回的值没问题吧,那就用service。点哈,好,我传一个信息,比如说我取一个取个名字叫做。呃,你好。你好慢呢,就叫double。Du dub Bo一个。波浪号。那这边是不是他调用完了,这边会返回一个结果,返回一个结果呢,我在这里把这个结果也说一下,我说服务器端回回来的结果啊,就是调用的结果。
19:09
Res,等于这个。好,为了好看呢,打一个空格。好代码我们就写完了,代码写完我们再检查一下。再检测一下。哦,这边呢,Customer有了这边connect。代码应该也没有大的问题哈,这边client也写完了。Sir,这边也写完了,我们现在呢,可以来进行一个简单的测试。
我来说两句