00:00
实际上,Nike提供了很多的解码器和编码器供程序员使用。其中有一个解码器叫playing decoder,大家看,这是他的一个声明。它是一个抽象的类,干什么呢?它继承了by to messageo,也就是说大家可以看到它是继承了。By to message deco在这个功能上做了一定扩展,看下面这句话,Deco扩展了by to message类,使用这个类呢,我们不不必再去调用readable BI方法。不用,也就是说不用再去判断你海有没有足够的数据来读取,它内部会进行一个判断。参数S,就这个参数S,它指定了用户状态管理的类型,我们用VO代表不需要状态管理,就是由我们的这个decoor自行管理就可以了,那么我们现在来使用一下repla decoor怎么使用呢?我们用这一个。
01:02
解码器来对前面的案例进行一个简化。对,就说我们改写成用PLA decoder来进行解码。来打开我们的案例,原先我们写的是BA。To decode,是不是我们现在写第二份?叫MY。Bite。Two nine。To know decoder。二对吧,以示区别。那这时呢,我们要继承来,我们继承哪一个呢?我们继承。The replay。Decoder。对,然后这边呢,我们加上一个VO。VO的,刚才我已经讲了,代表什么呢?代表用户状态管理,就是VO的代表,不需要不需要状态管理,那下面呢,有一个方法,我们必须要进行一个实现,哪一个方法呢,仍然是。
02:05
抵扣的方法。大家可以看到在这个方法里面呢,我们可以这样去使用了,原先我们是怎么用的,是不是有一个。判断呀,现在咱不需要了,你看我这样写,我把这句话先拿过来,好,拿过来了给大家做一个比较。这边呢,我们就改成my be to none2被调用这个地方无需判断了,无需判断就说在写句话。在哪里呢?在我们这一个。O不需要,不需要判断数据,数据是否足够读取。足够读取它内部会进行管理。内部会。进行进行处理和判断。对,那也就说这句话呢,我们可以拿掉了。拿掉来看一下。
03:01
那这就OK,看到没有,那大家可以看到,就是相对于out.ADD in啊,就用一个in.read呢就可以了,比原先要简单一些,那现在我们来用一下,看看好不好用,怎么怎么用呢。那首先我们在。嗯,服务器端进行一个改写,对吧,服务器端的server initializer,把这个改一下,把这边换。拍。At last,对,New,一个my bed。My bet。To not2。改写。没问题吧,同学们,同样客户端这边你也可以改写客户端,是不是,是不是我们也有一个解码器啊,是不是这边也也是用原先这个my to,我们也可以幻想。换成我们刚刚写的LAST6 my be。To not the code2一样的好,同学们,我们来用一下,看看是不是不是能够跟前面一样好用,好跑一个。
04:07
把这先关闭一下。关闭过后呢,我们运行server。运行设备。代码已经改了,看看代码能不能还像原先一样好用。跑起来再运行。可以的。好,同学们可以看到呢,没有任何问题一样的是吧?这边写的是MY。啊,你看看my not to my be to not decota2被调用,客户端这边呢,也是调用的这个my be to not2被调用吧,可以的。好,同学们,那关于这个这个案例我们就说到这,最后呢,还有其他的要说明的,我们也一并说了。Replay deo使用是很方便的,但是它有些局限性。
05:01
哪两个呢?第一个并不是所有的bad bber操作都支持,如果调用了一个不支持的方法,会抛出on support的operation exception,所以说这个地方还是要注意。第二个呢,Ing呢,在某些情况下可能稍慢于by to message,原因是。网络缓慢并且消息格式复杂时,消息会被拆成多个碎片,速度变慢。同时我们再来给大家介绍一下nit提供的其他编码器,还有很多,比如说后面同学们可能用到的像ne based的frame decoor,这个decoor是干什么呢?解码它是这样子的,它是个解码器,这个类在ni内部也有使用,它使用行尾控制字符。及一个斜杠N或者斜杠R,斜杠N,用这种分隔符来分析啊,分析数据,比如说你这数据很多,对吧,我在传的时候来了一个斜杠N或者干R型N,他就按这个进行一个分割和解析,还有一个de deter贝frame deco,这个呢,一听就知道是自定义的特殊字符来作为消息分割符,比如说你一个字符串内容很多。
06:16
那么我们可以自定义一个。分隔符来进行传送,这个decoder呢,就按你自定义的分隔符来进行数据的。那个解码还有http object decoder,其实这个前面我们已经用过了,对不对?Decoder在在编写相关程序的时候,我们用过htp object decoder和nco。那还有一个呢,就是Les fair base的base的frame deco,这是通过指定的长度来标识整个包的消息,这样就可以自动的处理粘包和半包的问题,什么意思?就是将来我们呢,可以去使用这个解码器。来指定长度标识这个包,就说在事先传给你的时候,我先传一个长度,告诉你我这个到底有多长,你按这个规则来进行数据的解码,比如我在传的时候,我告诉你我在传的就是120个字节,你就读120个字节。
07:11
啊,这样子呢,它就更方便一点了,就不会出现我们的粘包和半包的问题。另外呢,我还再说一下,有解码器,还有很多的编码器,你比如说。这些常见的从message toco里面还有object,还有SOS messageco,还有什么呢,这些。大家看这个能看懂是吗?Z leb nco是一个数据压缩的nco对不对,还有BZP2NCO,那大家想有这种ncoder是不是就应该有对应的dcoder呀,我们来看一下。数据进行压缩的,看有没有。Z leb。Z lib。诶,大家看已经看到了,看到没有,是不是有z lib d code解码的,同样就有一个z lib nco,如果说我们,嗯,在发送数据的时候,它这个知识很强大,因为如果我们按铭文,铭文发送呢,这个数据量很大,数据量很大,那我们也可以进行一个压缩,压呃先调用我们它,呃调用这个z lib nco的给它压缩了过后呢,再到我们服务器那端,再给大家加,给他加一个decoder就能拿到数据,而且这些呢,只需要你加一个handler就可以了。
08:28
这些他就帮你做完了,还是非常方便的,这样呢,我们的网络传输的数据量就会变小,速度当然也就变快了。各位,这就是他的方便之处,你想如果这些没有给你写好,是不是你自己写还是很麻烦的,因此ninety它这个最核心的就是我们刚才讲的这条线,其实大家是要好好的去理解一下,诶这个怎么回事?咋的诶。掉下去就说你要明白这里面我们的编码器,解码器其实很多,他帮我们完成了很多工作,明白吧。
09:03
各位。好的,那关于呃这块,嗯,其他的编解码器呢,就跟大家聊到这里,有兴趣的同学们把这用一下哈,都非常简单,OK,这讲就聊到这里。
我来说两句