00:00
各位,下面呢,我们继续来学习spring框架中的新的模块web flagx,刚才呢,咱把这个web flagx做了一个总体上的介绍,包括它里面一些相关特点,然后咱们下面继续往下来看,刚才内容中呢,我们介绍第一个重要概念叫做异步非阻塞因web flagx就是一种异步非组的框架,然后下面给各位解释第二个重要概念叫做响应式编程,把这个给各位做个说明,那首先我们先说一下就是。什么是响应式编程?就这个到底是什么意思,给各位先做一个总体介绍,然后咱们通过一段代码给各位来演示一下它的特点,那咱们看一下啊,什么叫讲示编程?首先我这里边通过百度百科给各位搜索一下,这是百度百科中对于想着编程中的这段话描述,然后把这段话给各位来拿过来。
01:04
像是编程叫reactive programming,简称RT,它是什么呢?这句话咱先复制,然后咱们看一下它的一个定义,这里写到我先调的大一点啊,然后咱们给他大概读一遍给各位,我会举个例子来说明,这里写到详式编程是一种什么?面向数据流和变化传播的编程范式,它意味着什么?可以在编程语言中很方便的表达静态或者动态的数据流,而相关的计算模型会自动变化的值通过数据流进行传播,这是他一个描述,但这句话我们读完一遍,大家会发现好像咱没读懂。这些中文的这些词咱都认识,但是把这词加一起,你看我们都没有读懂,大家这句话什么意思,其实咱们通过读完一遍,大家发现里边一直提到两个词,一个叫什么数据流,一个叫什么就是这个变化,包括这个传播,它是这几个词很好解释的,叫讲是编程,那什么意思,咱举几个现实例子,然后一会儿咱们写完代码。
02:17
那我们看一下啊,它这个解释这里写的。说在这里边呢,他说这个叫电子表格,就是一个想式的编程的例子,那什么叫电子表格,就是单元格可以包含字面值,或者类似于这种公式,而包含单元格的值会随着你其他单元格值的变化而发生变化,这种典型方式那什么意思?举个例子啊,给大家大概画一下啊。比如现在呢,我这里边有一个那个Excel表格,假设表格中呢,现在有三个表格。就是三个单元格,假如三个单元格中呢,我第一个格这叫比如叫be啊,比如这个叫CE,比如现在我这个单元格叫。
03:01
B1。这个单元格,假如说我叫CE,然后我现在比如我想实现CE加be的值,那我们现在在我们的这个里边,比如这个我叫de里边,咱是不是要用一个叫萨的这么一个函数做相加,然后加值就是这个be。加上这个C。这种效果也各位应该都见过,就是让两个值进行这么一个相加,比如我现在B中的值,假如说是1C中值,比如示二,然后这里边的,比如这个叫DE1,那第一中的值是不是变成了三,有是这个效果,比如我现在把这里边的第中的值,我给它改成了,这个叫做啊,比如说改个值,咱改成了五,那他一改之后,第一中的值变成是不是就是这个七了,这种方式就叫做小式编程,是一个典型例子,就咱举这个电子表格例子,而这里边提到我们刚才说这个词,第一个叫数据流,第二个叫变化传播,那什么意思呢?咱看这个图啊,比如现在你看这里边的B中的值,C中的值是不是有值啊,这个叫数据或者数据流,而这个值它现在两值加起是不构成这个de义啊,这个值叫传播,那这传播过程中,比如现在我。
04:25
这里边的B中的值由这个一变成了五,它是不是发生了变化,当它已发生变化,这值就传播给这个D1在D里边把两值做相加,这就叫小式边程,就是一个典型例子,就是咱说这个典子表格就是小式编程中一个典型的例子。我把这个啊给各位截过来,各位通过这个我觉得更好理解什么叫讲式编程啊,这是咱举的一个比较生活化的例子。给各位做了一个说明,然后这个写完之后,咱们下面呢,给各位啊,就来通过一段代码来写下这个具体操作,那代码怎么做,我来做个说明,首先我们看。
05:11
第二句话。因为咱们现在做这个想是编程,我们就是通过这个JAVA8的这种方式给大家演示,就是在JAVA8及其它的之前的版本中有一种做法,而你在JAVA9及其后续版本又有不同做法,咱重点看这个JAVA8中。给各位强调啊。其实这里边呢,咱说这个想是编程,你可以理解为它本质上用到了一种就是设计模式,这个模式叫什么?叫做观察者模式,而在我们的JAR8中,它有一个典型的例子,就是JAR8中提供了观察者模式的两个类,一个叫observe,一个叫observe able,用这两类能实现出这种叫观察模式,就咱说的讲着编程,那各位写一下啊,就这里边这句话。
06:08
在我们这个G28中,它的JDK中提供了这么就是这个。观察者。模式的。这么。两个类,它的类一个叫observe。还有一个叫obser。用这两类能做到观察者模式是他用到就是想是变成这种方式,那观察者模式什么意思,给各位说一下啊,就这个模式我觉得很好理解,它做的是什么,就你观察周边,你这个关心数据的变化,当一变化咱发生这种通知,最终完成你最终的响应啊,这是一个比较官方描述,说的通俗点,给各位还是举个例子啊,说下什么叫观赏模式。
07:00
比如我们举这个例子,假如现在大家知道一支部队,比如他要出发去打仗了,那部队他出发之后到一个地方,是不是他要安营扎寨呀,这次咱都听过,而安营扎寨之后,这部队要干什么?打车干什么啊,不是说马上吃饭去厕所啊,不是做这个事情,他是不是有这个,就是部队的主帅向周边要安排这些哨兵啊,不管你是明哨暗哨,流动哨,安排很多哨兵,而哨兵的职责是干什么?大家说干什么,是不是就观察我军营周边有没有敌人的变化呀,而他关心数据,只关心敌人变化,并不关心地上有几只蚂蚁,并不关心天上那鸟拉V拉屎,是不是关心这个,哎,说的比较通俗啊,但是这个意思,而这个时候,比如现在在军营周边突然出现了很多的敌人,那这哨兵要干什么,他们这情况是不是报告的这个主帅,要主帅根据这个敌人的变化是不是做出相反应,比如说是打还是跑,还是干什么事情。
08:03
这个过程就叫观赏模式,观察你关心的数据的变化,当数据变化咱发生通知,而通知之后我再做这样的反应,包括各位看里边这个过程,就刚才说那个电子表格的特点。当我现在第一数据发生变化,一变化同时给的第一,第一里边是不是重新发生计算,这过程就叫观赏模式,而想着编程,其实你理解为就是观赏模式中的一种。就是一种具体的实现,这个啊,我们做了一个说明,然后下面咱就通过JAVA8中的这两个类来实现出一种简单的观赏模式,让大家感受一下它的特点。那我们来看一下怎么来做啊。那现在给各位我就来写上这么一个类,然后通过这个类,那我们来做它的具体操作啊,咱们来做个实验啊。
09:00
那咱们现在呢,我就打开我们这个开发工具在里边呢,我就建个项目,为了方便呢,我就直接建个损部的项目,您刚才提到我们演示就是基于损部的做到啊,其实这个建普通项目也可以啊,咱为了方便我就直接建个损部的这么一个项目,就spring这个项目,咱直接下载这里边它的相关内容,然后给他。起个名字,比如叫com.at。硅谷,然后里边我给它起个名字,比如我叫这个DEMO。我们叫这个八啊,因为咱用JDK8做到的。把这个我们先做一个创业。包含这个特殊符号啊,给它改一下啊。我们先随便选个版本啊。这个词boot工程,我们给它快速创建了,然后创建之后在里边咱就来写一下这个,具体这个JAVA8做到这个讲是编程,就实验这个观察者,我是这个特点。
10:09
那我们给它创建啊,然后创建之后把这版本给它改一下啊,比如改那个二点。2.1这个版本啊,咱们这个版本。这个啊,我们就构建出来了,然后创建之后,咱下面我在这里边咱就建一个类,然后建完这个类之后,就给大家演示一下这种小式编程在JAVA8中该怎么做,那首先里边我先建个包,给这个包我就叫Java。Re。这个八。把这个包怎么创建啊,比如就叫REACTOR8了啊。然后创建之后,在里边呢,我们就创建一个类,然后做操作,比如这个类我就叫这个observe这个DEMO。就是做这个操作,然后这个类创建之后怎么做呢?让他来继承一个类,这个类咱刚才说的它叫observe able。
11:09
我们叫这个类给它做一个继承。啊,应该写错了,Ser v。把这个继承下啊,是Java u里边的,然后这个记完之后在里边呢,我们就写上这么一个main方法。在main方法中做我们的具体操作,那这操作怎么来做呢?给各位写一下啊,首先咱们把这个对象先溜一下,先溜一下它这个对象。为我们叫这个DEMO等于new上。这么一个对象啊,比如就叫observe,然后new完对象之后,下面怎么做呢?因为咱们现在要先出一个叫想是编程,或者说一种叫观察者方式,所以咱在里边呢,需要给他添加上这么一个观察者。
12:05
那观察者怎么添加呢?就是现在在这个observer able里边有这么一个方法,这方法我们来找一下啊,它就叫a observe,这就表示添加一个观察者,那我们下面向里边我们来做个添加,然后大家看在里边啊,有它这个具体操作,比如你这个传入这个对象是空,控制人异常,如不等于空,然后给它添加这么一个A的个element,就加上一个观察者,所以咱下面向里边来做一个添加。那我们来写一下啊,咱看怎么来操作,在里边我们写一个。好吧,扫把。点上这个A的这个observer,然后在里边咱为了方便,我就写上这么一个拉姆的表达式的形式,首先我来一个,比如起个名字叫。叫欧了啊,然后在里边加上它那个参数。在这位置,咱给它加上这么一个。
13:03
拉姆的表达式的这种方式。然后在里边我这个位置,我就把它,咱就直接做一个输出了啊,直接给它就输出一下。然后输出里边,比如给它加上这么一个值,我就随便写一个,比如就叫什么发生了变化。这个啊,是我们添加的这么一个观察者。啊,这里边报了一个错啊,参数重复了,给他换个名字这个啊,添加观察者,比如添加之后,因为现在我们观察者要知道它数据的变化,比如我们按照这种方式再给他加观察者,咱再加一个。然后交完之后,比如里边的这个数据给他。换给他换个提示啊,比如写一下我就叫做收到这个被。观察者的这个通知啊,然后准备。
14:02
它就是发生改变,这样的话啊,我们现在把这个代码结构完成了,然后大家看首先流利对象,然后在里边我们就是天涯观察者里边有个输出,然后这个位置我们又观察者里边数据发生变化,现在把这个结构我们做了一个编写,然后这个结构写完之后,比如现在我们把这个代码给它执行一下,咱给它做一个执行,咱看我们现在这么写,执行之后它有什么特点。咱等他执行啊,第一次卖点啊,咱们等一会儿,但是大家发现我执行之后,你发现没有任何效果,他是不是也没有做任何执行啊,那这是为什么?给各位说一下啊,因为现在你要注意我们要做这个观察者操作,而我接受到观察者发送信号的时候,是不是才会有响,比如说你现在要进行通知才有响应,你告诉他我这里边发生了变化,比如我现在这个数据流要进行这种变化,变化之后,然后给他做个通知,然后做操作,所以咱这代码中需要进一步完善,那怎么完善?首先咱们需要调用这个overso中一个方法,这方法就叫做set change。
15:20
什么意思?说的通俗点啊,就是现在我要监控一下你当前数据是否变成变化,因为咱们输出不一样,数据发生变化了,你要做这事情,然后当你数据变化之后,咱要干什么,是不是要通知啊,比如说现在我数据变化没有用,我要告诉他我数据变化了,然后你才能做其他事情,所以里边有个方法,这个方法叫noty派啊,咱为了方便就直接给他都通知了noty派。Of service给他进行通知所,我写一下啊,这里边就是。监控到或者知道你这个数据的变化,然后这里边就是进行我们这个通知,当你通知之后,然后他才能够知道里边数据的变化,所以咱现在把这个我们给他执行一下。
16:07
那我们看一下这个特点啊。你看我现在在执行,大家发现是不是输出了,就是你的这里边。啊,这个这个词写错了,那我们写一个被观察者通知,然后准备改变,然后他发生了改变,所以这样的话我们就完成了JAVA8中一种典型的观察的模式,当你数据变化,它里面会进行通知,而在这过程中就是提到了我们刚才说的几个词,包括变化,包括传播,然后这个点之后咱们再来看一下,我们刚才看到这句话里边提到了。是一种面向什么数据流变化和传播的这种编程方式,比如说你现在这数据发生变化,然后这里边需要进行通知,进行传播,才能进行掐操作,就好比说我们举那个哨兵那个例子,当军营周边发现了敌人,那他要把这事情告诉主帅,主帅知道之后再做出其他的反应,所以这过程就叫向式编程,咱用JAVA8里面这个类of serve able做了一个基本显示,通过这个。
17:16
让各位就是更好去理解一下什么叫想是编程,就是里边的一个特点提到了变化、传播,包括这个数据流的这么一个特点,就是数据流的变化和传播。这个啊,我们做了一个最基本的编写,各位把这个给他知道啊。然后这个说完之后呢,咱继续往下来说啊,因大家注意我们刚才介绍到了,在web flag的时候呢,它这里边呢,用到叫非阻塞的小是编程,就是它的核心是什么叫reactor,而reactor是一种基于叫reactive program中的一种框架,就是这个框架用的就是小是编程,而reri的底层其实它用到的并不是咱们JAVA8中的个特点,它用的是JAVA9及后续版本中内容就是。
18:08
想试编程中的一些相关操作,就是他把JAVA9中的一些相关的类或者些方法做了封装,最终养出了一个叫RI框架,这框架比JAVA9中这种相关操作更加的这种强大,那这里边我把JAVA9中的一些相关操法给各位也做个说明,这个各位做个了解。我在这个资料里边呢,给各位提供了两个类,然后两个类我们来看一下啊,咱看两个类的特点。我们看啊,首先我把第一个打开。因为咱们刚才提到在JAVA8中呢,做这种关模式两个类,一个observer,一个叫observer able,但是在JAVA9及以后版本之后,这两类就被取代了,就是它这两类就已经过时了,然后它有一个新的犬类,这个类。
19:00
大家看叫什么?Flow用这个类来取代直线类,而这个类才是一个真正意义上的想式编程类,钢材类只能算一种伪编程,伪想式编程,而flow这个类才是一个真正意义上的这种显式编程。这个啊是我们提到的,而我们用那个reactor,它的底层就是对它做了一个碰撞,那这个类我们来看一下啊,在这类中呢,有很多的方法里边做了定义,因为这个本身是一个final,一个class,里边有很多方法,然后方法中我们看到啊,里边有两个比较主要的方法。一个叫publish这个方法,还有一个叫sub这个,这是两个比较重要的方法,而两方法是什么,这个。Publish它表示就是发布,而这个subscript表示什么叫做订阅,就是现在你要进行通知,通知知给谁,那我需要进行订阅之后才能进行通知,就好比说我现在我这个军营周边出现的敌人,那我之前这个主帅是不是告诉哨兵,当你这边有敌人,你就告诉我这叫订阅,然后你这个publish叫发布。所以里边主要两个方法,一个publish,一个subscript,一个叫订阅,一个叫发布,这是里边的两个类。
20:22
然后这里边我还有一个代码,就就写这个操作,咱也大概看一下啊,代码比较简单。然后大家看怎么做啊,两种写法等看,第一种写法叫flow.publish比方说你要进行发布,而发布中这里边用到了方法,一个叫,还有一个叫sub subscribe sub subscribe就表示进行订阅。这个啊,我们强调就是你在publish呢,没有定位的时候,它不会触发任何的行为,而我们每次呢,调用part中那个叫on ne,它就好像是啊,你在发送信号,而这个定位者收到信号之后在执行我们向的内容,这就一种典型式。
21:09
这种想式编程的这么一个具体案例,这个啊各位给他就给他知道,我再说一遍啊,Publish表示你进行这种发布,而subri表示进行订阅,而我这里边的on ne,就好比说我现在得到你发过来这信号之后,我在做相对处理,比如我现在做了什么信号发布,然后这里边做你的对应的处理,这个啊是我们提到的这么一种想是编程,在我们的JAVA9中这种方式更加的典型,但是这里边呢,它的功能其实并不是很强大,所以后台出现咱们这个whilelo中这个框架叫reactor reactor比它的功能更加强大,但是它的本质上就是基于这个JAVA9中这种想是编程做法做的一个完善,做的一个封装,这个啊是我们做的这么一个说明。
22:01
给各位做这么一个说明,所以这是关于咱们通过JAVA8和JAVA9给大家说明什么叫小式编程,把这个各位给头知道啊。我们说的第二部分,所以通过这里呢,咱就介绍完成了,我们说这个Y法中的第二概念叫小式编程,然后这个说完之后呢,咱们的下一部分呢,给大家就来说明我们通过rerior该怎么实现想编程这个做法,给各位会演示几段代码,来讲解一下reactor里边的核心编程部分,现在各位把这概念先做一个。这么一个标记。
我来说两句