00:00
数据接口,那么这个发布数据接口呢,大概它的一个流程什么样的,说我们现在啊,要想去做我们日活的需求,那目前呢,咱们现在已经把我们的数据啊,对吧,给他对吧,拿出来了,对,咱们现在呢,可以把这个数据对吧拿过来。然后接下来呢,那么拿到数据之后呢,大家看我们现在呢,是对做去重,然后保存到ES里面啊,保存ES里边对吧?那么在咱们去除完毕之后呢,那这里其实啊还有一个啊,还有一个我们的优化,这个优化是什么呀?就是我们这个精准一次性消费啊,就我们现在在处理的时候,它还有一个精准一次性的消费这个问题对吧?那其实算是我们对我们这个程序啊它的优化,然后接下来那么咱把这数据呢,保存到我们这个ES中啊,保到ES里边,那么咱们现在保的ES里边呢,那我要对它做一个可视化,这个可视化的方式啊,那有两个短,这格式化方式有有两个,一个呢,是我们直接利用平班的。
01:02
啊,在这里如果想做可视化的话,那么第一个呢,你在这里利用我们这班的。可以直接呃,实现一个我们这可视化的功能啊,可以直接实现一个可视化的功能,然后接下来那么除了我们这可这批盘的之外呢,那还有可能是什么呢?就是你现在啊,在这里把我们这数据呢啊从ES里边查询出来,然后发布成我们的数据接口啊,发布我们这数据接口啊发布数据接口,那么我们现在呢,如果发布数据接口的话,让大家想想这个数据呢这里。对吧,那一月开始数据在ES中,然后接下来那么你把它发出数据接口对吧,然后呢,咱们发放数据接口之后呢,那也会利用一些可视化工具对吧,在这里啊,也是利用一些可视化工具对吧来对它呢进行一些我们的一个展示,比如说对吧,那我们对吧比较常见的比如说像百度的对吧这个1CHAR对吧,像你们在做我们这个离线的时候,你们使用的什么。
02:07
Superide对吧?哎,包括咱们现在这K班的,对,有可能我现在直接从这查出来对吧,但是如果说这个ES的话,这就比较少了,对吧,什么superide呀对吧,什么咱们现在对吧,这个我们这个啊,They char呀,或者说我date v对吧等等对吧等等对吧,像这些呢,就是我们一些处理的方式对吧?那么上午咱们把这块啊处理完了,那把这个处理完了,那么接下来咱们现在呢,就来看我们现在下边这块东西怎么来实现,那么发布数据接口啊,那你想人家肯定是从你这接口来啊,源源不断的获取数据啊,从你的接口来获取数据对吧?哎,那么如果从你接入获取数据的话,那你是不是得提供一个web服务,让人家通过地址可以访问啊,所以说呢,那么这个时候对吧,那我肯定在想,哎,Web服务那用什么呢?那用我们spring boot对吧,然后呢,用我们Java去开发一个我们这个web项目出来啊,那么如果用Java开发的话呀,那么这里设的一个分层对吧,那么咱们现在呢,说一。
03:08
动我们来分三层啊,一个是表示层,一个呢是业务层,还有一个呢是持久层啊分成三层对吧?那么第一次咱们接触的这个spring的项目的时候,我们是给大家啊加了这一个表示层啊,就是controller层,他主要负责什么呢?接收我们用户的请求,然后呢,给用户啊响应啊,那么这块是表示层,然后现在呢,我们再加一层啊,这个业务层,业务层是干什么的,专门去处理一些我们的业务啊,专门处理业务,然后借着持久层呢,咱们后边对再加啊咱们现在呢,先把这两层加进来,那么同时呢,咱们把这个整个啊,我这结构把那个定下来,什么结构呢?说如果你要想去开发一个我们这个数据接口的话,发布数据接口的话,那么你现在呢这块对吧,你除了可视化工具之外,那也有可能对吧,是前端的人对吧,他要调你的接口,谁来调你的接口,那么你们两个呀,要协商好。
04:07
啊,要协商好对吧,比如说你通过什么方式去访问我的数据啊,这个地址,这个路径应该是什么,那么咱们现在呢,在这里协商好了,你要想去获取数据的话,那么咱们现在呢,这个路径啊,你这个啊两个路径,这个呢是访问总数的,这个总数呢,就咱们看到的这个内容啊,看到这个内容,然后另外一个呢,也可以通过这个地址来获取啊我们这个分时统计,对那这块呢,其实就是我现在这个数据,具体的数据怎么展示这个样子的,你不需要关心。啊,具体这个数据怎么样去展示成这个样子的。你不需要关心注意啊,别学偏了,对,就说老师这个东西怎么去展示呢?对,这不是你干的事啊,这不是你干的事对吧?好了,然后接下来那么如果人家访问,那么数据格式长什么样对吧?那么咱们现在呢,来给他返回这样的一格式啊,给他返回一个这样的一格式对吧?路径格式对吧,都有了,那么接下来咱们来搭建我们这个开发环境啊,大概搭建我的开发环境,呃,首先呢,Spring部的项目啊,Spring的项目在这呢,我把这些都关掉对吧?把该关的给关一下啊然后接下来那么在这呢,我去新创建一个模块对吧,那这两天呢,我发现有同学啊,它这个出这个这这这个整个这个项目在创建model的时候呀,出问题对吧?这个出问题什么呢?就是我在一开始创建的时候,我当前这个parent,它是不是一个空的我project呀,对吧,那么如果空的project和就是老师,我现在没有创建空project对吧,或者说还有一些有些不小心。
05:43
比如说啊同学们,我现在每次在创建的时候呢,我一般是这样,我把我当前这个鼠标呢,我选中它,然后接下来我现在呢,New,然后去创建一个我们的model,对吧?我一般的这种方式,比如说我创建没啊,我这么来创建,那么如果这么创建的话,大家看我当前这两个选项,它其实是空的对吧,你看我这两个是不是空的呀,对吧?那么有可能你们在创建的时候,可能选中的是某一个对吧,或者说你们直接一开始建立起我们一些什么关系,然后这个时候呢,你如果要是去创建的话,你要是创建的话,比如说还是去创建我们的没项目,那么这个时候呢,你这两个东西是,呃不是空的,什么意思呢?我现在创建model,然后告诉你,那它的parent是谁对吧,你看你是不是选的是咱们这个real time呀,它会认为你当前创建这个模块啊,是我们这个real time它的一个子模块。
06:36
对吧,然后接下来那么咱们现在呢,会把咱们这个父子关系建立起来,那么怎么建立呢?就是你在创建模块的时候,它不有po文件吗?在po文件里边它会多一个PAR的属性,然后来继承我们现在定time。对吧,然后在real time里边呢,它也会有一个models来包含你当前新创建的这个模块,对吧,其实没必要建立的关系啊,对吧,但如果说咱们这个在开发的时候,对吧,你们的项目呢,可能是模块式开发,然后呢,在我们这个PI里边,它有一些对吧共同的东西,那么这个时候你把他的上下级关系给建立起来,对吧,这是没问题的,不是说我那种关系不好,就我们现在不需要,对吧,假如说我们在做学校的时候,对吧,在做学校像的时候,那么有一个叫什么呀?叫base对吧,或者叫common对吧,叫common就有一些基础依赖,对吧,那么这个时候呢,我可以把它放在我们这个parent里面来啊,放到PAR里来啊,这会需要注意一下,你们应该在接触我们这个啊,像这个属于什么依赖和继承,那么你们应该在讲妹妹的时候,应该接触过这个概念,然后一接触概念好了,那咱们现在呢,在这里,我呢去新创建一个我们这个模块啊,新创业模块,然后接下来。
07:52
那spring项目,Spring的项目,那我在这里选spring部的工程,然后下一步。
08:09
好了,那么这块呢,指定我们的group以及artif,那com爱的硅谷啊,接下来举贸publisher啊,Publisher这个是我们现在的发布查询接口啊,然后这个呢,是我们的J贸0523,然后接下来这叫publisher。然后版本呢,改一下啊,版本改一下,然后生成的我们的package呢,改一改啊这到publisher就OK了啊,然后接下来呃,勾选一下咱们常用的一些我们这个工具啊,比如说这个呢,这个logb给我们勾上,然后这个呢,我们spring web我们就勾上,对吧?然后现在在往下的话,那我现在是不是要从我们这个elect search里面来查数据呀,对吧?所以说呢,在这里你可以弄circle口,然后呢,把我们这那search呢也勾上,但是实这会你不做也可以,对,因为我们最终呢,我要把这个东西替换一下,你勾掉的目的是什么呀,同学们是不是就在咱们泡文店里面添加相关的依赖呀,对吧?但是有一个问题什么呢?就是我们现在呢,这个使用的我们这啊这个elect search它的客户端工具是不是叫做我们这个je对吧,Je club对吧,但是呢,在咱spring高版本的时候呢,它其实对我们这个je club支持的不太好,对吧,它本身又有一个新的club。
09:33
对吧,那所以说呢,那么咱们在这里,我们啊这个不能用太早太高的版本,对,就他对我们的六对吧,他如果是高版本的话,它的集成的不太好对吧,所以说呢,我们选一个低点的版本对吧?那么如果选低点版本,其实你这种功不功能那无所谓对吧,那大家注意啊,就说我们现在说老师那我这里边对吧,再再再添加这依赖的时候,对吧,哎,那么这都怎么选对吧,其实没有什么特别好的办法,就是在我这个里边给你对吧,给给给你这些东西,这都是我一个个测出来的。
10:03
啊,就我现在这这这个里边,对说老师这个东西你怎么加啊,突然加了一个对这这样的一个东西对吧,加了一个这个东西对比如说加了一个这个对吧,你看这个东西是不是一开始没加的时候,咱们有个日志的一个错误提示啊,对吧?哎,那么对吧,这个看少啥加啥,少啥加啥,所以说啊同学们,那么咱们现在呢,再加依赖的时候呢,你可以不选对吧,你可以不选,然后到时候呢,咱们把它整体替换一下啊,反正这个操作我肯定要做的,对吧?来在这里我们现在啊下一步对吧,那么这个它会在我们当前这个空的功能下面,然后创建一个新的我们这个模块啊,然后finish的finish,那么他创建完之后呢,那么你把这个东西打开啊,打开打开它的POM这个文件啊,打开po文件,那么在咱们这个POM这个文件里边,像这些东西,那么你啊对吧,不用改,然后这块呢,它依赖的我们现在版本,像这个版本,我说它更新特别快,而且呢,有些太高的版本它。
11:03
对我的程序的那就不兼容,所以说呢,那这块呢,我就不用的,我直接呢,这这这里边你虽然说加了一些东西,Book呀或什么web呀,这些东西我就不用了,我直接把这干掉啊,我这干掉,然后呢,我现在在我这里给大家提供了,我现在依赖直接把我这个拿过去呀,因为他原来这个太太高了,就是上个班是二点三点几到23.2对吧,那个呢就不兼容,所以说呢,我们现在是23.4就更不兼容了,所以说咱们还是用我们现在这2.1.5啊用2.1.5对吧,然后接下来把这些东西呢,CTRLC啊复制一下。复制一下对吧,那咱们现在呢,把这个对吧,复制完之后对吧,那这里需要改一些地方,那什么呢?一个是这个,因为你把它整体拿过来,那咱们这个名字是不是可能不一致啊对吧?那这块再稍微改一改寂贸0523,然后呢,Publish啊,然后这块呢,也是什们这0523啊,其实这个你以不用也行啊,像咱们内啊,还有咱们这个discre这个东西是不可以不用啊,其实这个可以不用的啊,那把这两个呢去改一下,其他的没有什么了,其实主要就是咱们这个版本啊,其实主要咱们这个版本对吧?好了,那咱们现在呢,把这个完事之后呢,那接下来咱们就开始搭建我们现在的它的一个架构啊,搭建架构,那么搭建架构的话,那么来到这里注意看啊,本身这个是我程序的一个启动或执行这个入口吧,然后接下来在这里呢,我去新创建一个package,这叫什么呢?Controller啊controller这个呢是我表示层,然后接下来在这里再去创建。
12:41
这一个pack,这个叫service,这个呢是我们业务层对吧,那么和我log相比,同学们打开咱们原来处理日志业务的这个log,那么这里是不是只有一个controller呀,对吧,比原来呢,我要稍微的再复杂一点,对吧,就逐步的给大家呢,去把这个架构的完善一下,对吧,我在这里又加了一个啊the对吧,然后接下来那么在咱们control里边有什么呢?我在这里创建一个类,对吧,比如说叫他a Le controller。
13:12
啊,在这里来一个类对吧,那么它呢,是专门去发布我们这个啊,这个数据接口的主意啊在这里这个它的作用发布咱们这个数据接口对吧,发布出去接口对吧?那么其实它本身是controller controller这一层,这个表示层,它的作用干什么呢?会接触请求,然后呢,把这个响应,把数据呢,给咱们请求的用户响应回去,对吧,这是第一个第一层,然后接下来,那么除了这个CTR之外,在这里呢,还有service,那么service呀,那你想一想,我这里我接入请求之后,我要想处理请求,那我是不是得调咱们这个业务呀,对吧?那所以说呢,在咱们调的时候呢,那我们说有一个开发原则叫什么呢?叫面向抽象编程啊,面向接口编程,不要面向具体以说咱标准做法在这里,那应该什么呢?在这里我去创建一个啊这个接口的,这个接口叫什么呢?比如说我现在操作的是elect search,那叫DS service。
14:13
啊,这是一个接口,然后接下来在咱们当前service下面,我呢再去创建一个子的package,叫ipl,然后在ipl这个子包下面,我呢去新创建一个类,这个叫ES service IL,对吧,然后呢,在这里啊,去改一下这个式类啊。在咱当前这里边呢,我去新创建一个类,这个叫ES service I m PL对吧,创建个类,然后这个类呢,去实现我们现在这个接口是吧?让它去实现我们现在这个ES service啊,ES service这个接口是吧?来大家看一看目前呢,咱们现在这个结构啊,目前咱现这结构对吧?如果说咱们业再复杂的话,这里还会有什么呢?还会有我们这个持久层对吧,还有持久层,比如说叫DA,对,然后呢,还会有一些工具类,比如utu,还会有一些咱们基本的抛轴对吧,比如说B或者叫do啊,或者叫do对吧,或者叫enity对吧,那么以后呢,大家一去啊,一看到这结构啊,这应该是对,一看这里面放的对,应该是我们这个表志层的对吧,技术请求的,然后这块呢,应该是业务层对吧,处理业务的对吧,还有一些比如do对吧,那么专门的做持久化的,比如说还有叫什么B对吧,然后叫。
15:37
什么读问的对这个呢,应该是放的一些实体类啊,然后还有叫什么呢?它叫YouTube,对,那这个呢,可能是放的是我们相关的一些工具啊,这块呢,是整体的一个结构啊,这块整体结构对吧?如果是做开发的话,那你应该对这个结构感觉应该还是比较亲切的。啊要清眼不是这什么呀,不是规则对吧?但是呢,算是规范对吧,但是算规范,你不管做什么项目,不管在哪个公司,那么基本上呢,这个都是差不多的啊都差不多的好了,那咱们现在把这个搭建完之后呢,那么提前呢,也要改一些东西,对吧?那么改什么呢?那么首先啊首先对吧,那么这里我们现在导完之后呢,其实这里有一个问题,有什么问题呢?就是从我们spring BOO呀,2.3之后,那么它的单元测试这个加包呢,它发生变化了,对吧?你看这里有一个test对吧?那么咱们这个里边呢,我们单元测试一般用的是什么,一般是不是用的给unit呀,对吧?给unit做单元测试,但是呢,这个的包的位置呀,发生变化了,对吧?包位置发生变化了,那怎么办呢?重新导一下包就可以对吧,原来在我们这里对吧,但是呢,在咱们高版本中,对吧,它单色的包发生变化了对吧,你把这个改一改,对,要不然呢,它编译不过去。
16:55
啊,这第一个啊,第一个,那么第二个呢,那么咱们呀,把这个架子搭起来了,那么另外我现在呢,需要做一些配置,那么这配置呢,我主要有两个东西需要去改,来到我们现在resources,来到我们springb它的一个的配置文件中,然后接下来在这里呢,啊,我改两个地方,一个什么,一个是端口号,那么另外一个呢,是我们对吧,这个来设置服务器的地址对吧?那么注意啊,这块比较容易犯错的地方,那么我现在呢,要想去指定elect search地址的话,大家看这里是不是有一个elect search,然后进来一看是不是有URL啊,对吧?那么这里有两个长得比较像的东西。
17:39
一个G一个rest对不对,那么咱们现在是六对吧,而且呢是我们spring的D版本,那么这块呢,他用的什么呀?G对,如果说以后啊,你们对用的是我们的七,然后呢,它spring布的版本要高一点的话,那有可能呢,这块他改了啊,其实个rest客户端就相当于咱们这账客户端呢,他换了一个啊,现在换了一个啊这块呢,大家注意别写错了啊,然后接下来那么这块呢,那指定我们这个地址的时候呢,可以指定多个对吧,也可以指定一个对吧,那么也可以都拿过来对吧,我写两个呢,就是告诉你对吧,可以写多个对吧,可以写多个啊然后接下来那么咱们现在呢,把这个结构整体对吧,完事了,我稍微停一下啊。
我来说两句