00:01
的介绍。我们先对Nike做基本的介绍。Ni是由j boss提供的一个Java开源项目,这个就不用多说哈,现在呢是get ho上独立项目,那么也有很多人,包括也有很多中国人加入到对这个Nike的一个维护和开发上面去。Na呢,它是一个异步的基于事件驱动的网络应用框架,那首先基于事件驱动这一块,同学们在做一些开发的时候,其实已经接触过了,对不对?举个最简单的例子,比如说我们这有个网页,网页上面有一个按钮。当我们点击这个按钮过后呢,就会触发一个事件,比如说触发一个点击事件。那么这个事件呢,会驱动或者是呃,调用一个方法或者是函数这种呢,就是这一,这就是一个事件驱动的一个模型。在我们ni里面呢,它也是基于实验驱动的,它是怎么做的呢?简单的讲就是我们ni呢,它会根据你你的你的这个客户端的一些行为,或者是呃,读写的一些行为来产生相应事件驱动,比如说我发现你有一个客户端来了。
01:18
对,比如说我这是server。你发出了一个连接的请求,我怎么去处理,或者说我找哪一个呃函数去处理,然后呢,如果你有一个读写事件来了,我又怎么去处理,其实跟我们事件驱动是非常相似的,就说你有一个事件指这个事件呢,可能不是按钮点击,而是连接,或者是断开,或者是读或者是写这样的事件。来驱动我们的一个一个编程。那么异步模型是什么呢?这点我简单说两句哈。一步其实是相对于同步而言的,我举一个最简单例子。
02:00
比如说在我们传统的BS开发里边,大家还记不记得?在没有阿贾克斯之前,我们是怎么来处理这个请求的?还有印象吧,举个例子,比方说这里是我们的一个服务器。这里是我们的一个服务器。服务器。好的。那现在呢,下面是我们的一个客户端,或者叫浏览器吧,我们就叫浏览器。对。那么浏览器如果在传统的这种BS开发里边没有阿贾克斯的时候呢,我们一个请求发过去,比如这是发出了一个请求。那么我们的服务器会响应对不对,对你这个请求做出一个处理,那么看,假如我们把这个编号为一,把这一个编号为二。把这个编号为二,好,同学们看,对于这种同步模型而言,它是怎么样子的呢?就是你这个请求发过去以后。
03:08
我要等待你的这个响应或者返回的结果,我才能去做其他的工作,也就是说我的第一个请求发出去,第二个响应回来了以后呢,我的我才可以去做其他相应工作,比如说我这用这个箭头表示顺序是123,比方说我们把这个标志三就是123,就是你的一个请求发过去,响应回来了,然后呢,我在这个浏览器才不会在这里等待,你才可以做下面的工作,是这样子的吧。这就叫同步。那对于伊布而言,它会有什么改变呢?伊布而言,就是说他不一定要等到你这个响应回来,就是我的,我的处理不一定要等到你这个情这个响应回来,我才可以干别的事,还是以这个为例。
04:02
假如现在呢,我们浏览器在发出请求的时候,用的是阿贾克斯引擎,或者说用的是阿贾克斯技术,他会怎么做呢?大家看一下。阿贾克斯。阿贾克斯,OK?那么阿贾克斯,我们通过阿贾克斯发出一个请求以后,服务器这边会做一个响应,那么这个二号什么时候回来,我已经不用再等待了。就说你因为你你这个二号,因为你服务器肯定要处理一段时间嘛,你才会回复这一个结果,那对于这个二号什么二号线什么时候回到我们浏览器,我这个地方不用等待,我会干什么呢?我会这样去处理,就是对于一步而言的话呢,它在阿贾克斯里边呢,它有一个回调函数。回调好,我就简修回调好吧。就说你一号发过去过后,二号回来以后呢,他已经知道我回复的这个结果会有哪一个指定的回调函数来处理。
05:05
就完事了。那你的第一个,你第一个线,第二个线也第二项线没有回来,我这个也是可以走的,那么这个顺序就可能是132。明白这意思吧,当然了,如果要正式的解决这个异步呢,其实应该再多说一句,因为这个地方很容易让大家感觉到,好像这个是非阻塞的,如果说的概再明显一点,我们可以这样讲。我们还以这个阿贾克斯做请求啊,比如说我把我把这个换条线。把这个往这边拉一点好,还是武器,那么那如果说我一个请求过去了再回来,那如果我没有等到你这个回来过后呢,我其实就可以再次向我们的服务器发另外一个请求。好,同样这边呢,也有一个响应,是这样子吧,同学们。好的,那这边呢,有个三。
06:00
这边有一个是。好,同样的道理,你回复这个结果呢,我也可以去指定某一个回调来进行处理。就是说这样子呢,它就产生一种异步模型啊,一不但这个下面这个流程呢,我就在这个就写个问号了,因为他并不受你的回复。回复的这个的影响好,大概就是这样意思,就是说我们发出一个请求,即使你这个二号线没有回来,我可以继续往下走。我的代码,我我的代码,我的这个,呃,程序是可以往下走的,同时呢,我也可以再次再次发出一个请求,然后再。让这个进行一个回复,就是说他们之间完全是异步的。它是异步的,OK。好,就是这这就是异步,你这个就是同步,你你也可以这样简单的理解,所以同步就是一个请求过去了,我要等待你一个回复。一个请求一个响应,我才能干别的事,而一步呢?我发出一个请求过后,我不依赖于你的这一个回复,我就可以干别的事情,我既可以发出新的请求,我也可以让我代码继续往下执行。
07:10
好,这就是我们所说的异步好。的异步和同步的一个概念,好,我们继续往下来讲解。Nike呢,它主要是用于开发高性能的可靠的网络IO,所以说Nike其实它的本质是对我们原生的这个Java的IO进行的一个优化和一个优化和一个重写。Ni呢,主要是针对TCP协议下的,面对connects,就是客户端的高并发应用,或者是p to PL的一个场景下大量数据持续传输的应用。我这里再说一下Nike,它是一个怎样的框架啊,大家看这里。Ni的底层呢,因为它是基于网络的嘛,所以它底层呢,仍然是我们TC pip协议,作为这个网络通讯的一个基石,这是它的底层,在他这个底层上边呢,上面包了一个JDK的,就是我们Java的原生。
08:12
哦,他的原生的这个IO或者是网络就包了一个JDK原生的IO和网络开发,然后在这个JDK上面呢,又包了一个。IO的。一个IO和网络开发,然后在这个NIO的基础上呢,才是我们的na。这这个图虽然很简单哈,但是呢,他嗯,他就把我们的这一个TCP协议,还有我们原生的Java IO,还有NIO与net之间的关系搞清楚了。所以说我们要如果要想把Nike学明白呢,这就是为什么大家一定要本身要对Java,就你对Java的IO和网络开发是有一个基本认识的。你至少要知道一个请求,我们这边会服务器客户端,它是一个最基本的一个请求回应的这个模式,你是要知道的,对吧,只是NIO呢,对我们JDK原生的这些IO或者是网络进行了一个封装和优化,而ni呢,又在NIO的基础上进行了封装和优化。
09:17
而他这个就叫做,而这个ni呢,就是我们的一个框架了,它是这样一个关系哈,后面我们还会讲到,大家不用担心,紧接着再往下面讲。嗯,刚才那个图画完了过后呢,这这句话就很好理解了,Ni本质是一个NIO的一个框架,适用于服务器、通讯相关的各种应用场景,至于是哪些场景,后面我们再一一讲到。要透彻的理解ni呢?我们首先要学习NIO,这样我们才能学理解或者是阅读ni的源码。同学们关于ni提的最基本的介绍大家清楚了吗?就是这里面最重要的要理解这句话,Nity他是一个异步的。
10:00
而且是基于事件驱动的这么一种网络,还它是一个网络啊。应用框架,而异步和基于事件呢,这块老师不会再再去反复的说了,因为这是一个基础,第二个呢,要明白刚才画我画的这刚才画的这条图,这这个图,我把这个图呢,在。说下好。待会儿呢,我们还要整理一个是TCP,它上面下最底层是TC pip。在这一层,在这一层上边。然后是我们原生的JDK。就是我们原生的JDK的IO和网络。原声哈。原生的。好,原生。的JDK。的IO。哦,我就简写简写IO,那当然也就包括了网络了,对不对,包括了网络了,好,这是又一层,然后在这一层上边呢。
11:03
在这一层上面呢,是我们NIO。NIO这一层我就先写好NIO这里面呢,也会对我们的IO和网络进行这个处理。好,这是我们NIO这一层,然后继续往上再来走,上面这一层才是我们的ni,它就称之为一个框架了。Ninety。所以说我们经常说ni呢,它实际上是基于NIO的这么一个网络框架,就是这么来的,好吧,这个基本的图大家要知道,这一块就是同学们学的Java的核心编程。Java Java。Java的什么呢?Java的IO编程和网络编程。这块是它的基础。网络编程。好,就是。一个。就是他的一个体系图吧,一个简非常简单的一个体系图。
12:01
好,同学们,那关于Nike最基本最基本的介绍呢,先聊到这儿。嗯,先到这儿。
我来说两句