00:00
好,刚才呢,我们把这个配置文件已经分析完了啊,分析完之后呢,我们先把这个配置文件呢啊,先放到我们这个集群上,在我们集群的102上。CD from进来,那这些文件正常,咱们之前是不是建了一个造文件呢?啊造文件夹,然后往里面放一些配置文件了,我这里面是比较少啊,我直接就放到这个。区建一个文件VM,那这个配置文件看一下左侧是fire吧,对吧,右侧是卡不卡,那这个文件的名称你要取的键名之意,比如说fire杠,From杠,KFK。好好这样去起这个名字啊,现在来说就好一些,OK,那这个文件呢,像这种东西啊,我们就直接拿回来了啊,其实都是从那个官网上。
01:04
拿过来的。OK。啊。配置完成,同时要分发SMC分发。那这样这个文件就要搞定了,但是这个文件当中还有两个东西没有配这两个啊,它的两个拦截器需要我们自己去定义啊,自定义一个是EDL,一个是分类型,那我们一个一去写,之前咱们自定义过拦截器吧,啊那自定义拦截器的步骤。面试官艾伦的大厅。定义一个类,实现intercept接口重写里面四个方法啊,分别是初始化和。关闭啊close啊,还有一个是单event处理,一个是event集合的一个处理啊,而且最后要创建一个静态内部类build啊,然后方便我们日后的一个调用啊这么几步哈,好,那么接下来创建一个工程。
02:18
打开。来这干这。创建。看看我这个之前那个功能删没删啊,没删的话会容易冲突啊,删掉了啊。Next com点艾特微博。Next。
03:04
你先存在是吗?存在的话我们就去把它删除一下啊。晚点。你们一定不会存在的,为什么?因为你们就没写过是吧,你们的代码都只只敲一遍是吧。嗯,你像说实话这些文档这些代码。每次上课之前啊,至少要敲两遍啊,晚上敲一遍,早上敲一遍啊,两遍啊,前两次都敲过了多少遍了,几十遍了啊,个别代码敲排除过都超过上百遍,上百遍啊,至少在100遍以上。你说你能忘吗?但是我告诉你,该忘的时候你要忘。嗯。
04:01
正常啊,但是要这个学会这个方法。代码忘很正常啊,就像你在企业当中遇到bug,这是很正常的一件事啊,那接下来就是遇到bug之后怎么解决,这是很关键的一个问题哈,光不光。不慌了。昨天那个像那个那个你们认为比较大神那个比班长还累,那个刚才我发群里那个面试机会看了吗。没看有各位看了啊啊发群里了啊还不错,他约了约了两家啊,约了两天,现在已经17家了啊,17家啊,而且里面世杰呀,华为呀啊,顺丰刚啊,对啊,都是一些比较比较稠的东西。但是目前是面了五家啊,五家全拿下。
05:00
目前是这样。他觉得没什么难度。诶,我看我这刚才定义位置么,光年上看。另报名,然后呢,在里面定一个把这框文件放回去,这个跨文件里面啊,只有两两部分,这一部分呢,就是添加这个依赖啊,另一部分呢,就是这个插件对吧?啊打包插件跟我们以前的没啥区别啊。一个是一个是插件儿。打一下。好,然后呢,接下来呢,我们就开始写这个拦截器,我们第一个先写的就是这个。ETL拦截器,那现在大家思考一个问题,让你去写这个ETL拦截器,你要在这个拦截器里面写什么东西?好,我们先把这个首先实现接口。
06:05
那导班别搞错了,倒第二个的。总结里面四个方法。OK。分别是初始化关闭啊,中间这个是单event处理,这个是event集合处理,那我们在先处理单,那在这里面要进行etm。那ETL。我整了一天了吗?要做什么事?它这里面的数据格式是什么样的,看见吗?数据接身呢啊接那接身的特点就是大括号开头,大括号结尾啊结尾,那这里面有一个大家需要注意的地方。它的这个启动日志和事件日志,它的接身格式一样吗?不一样啊,一个呢是外层一个。
07:05
一个是这种嵌套的,也就是说前面加上了服务器时间戳啊竖线,然后接森字段,另一个数就直接就是一个接省能啊,就是一个精神就没了啊,这是两块,那你在ETL过程当中就不一样了。啊,因为这个启动日志,那你这块只需要去判断它的开头是大括号,结尾是大号就OK了,那么如果是这个事件日志的话,你要判断一下它你的服务器时间是否是OK的,因为你要把它截取出去,你不截取出去的话,你是放看不到这个这个括号,嗯,好,那我先判断啊,就在这里。那来到这,那首先你得获取这个浮里的数据,In文点get body body里面是这里面的数据啊。
08:05
先获取数据。啊,会出去。好,那拿到它之后,然后另一个将这个直接数组变成实例。使劲啊,然后呃,防止这个它是其他这种。类型,我给它放成一个UDL杠八。UTF杠八这几码。啊,知道吗?好,那这个呢,是love这个数据,就获取到的这个包底里面的数据,那获取到这个数据之后,我就要对它进行调研。啊,这那教验的话啊,那它是两类日志,一类是启动日志,一类是质检日志,它不行不一样启动日志。
09:05
还是?是前日。事件日志,那事件日志呢,它的格式呢,是服务器事件。竖线,谢谢。那么启动日志的格式,它就是一个现象对吧?啊,那这块你要判断if。那点CONTAINS10大。哎,那为什么这么去判断呢?你看我们之前定义的这个启动日志的类型。其中有一项。它的日志类型是start start,那这里面要有一个注意的地方,也就说你其他日志里面绝对不能出现。大。
10:01
如果出现大了,是不是给你划到这个启动值里面去了,哎,对,那这里面你上面要回避这些知道,要回避这个知道啊,OK啊,一定要回避,如果说你上边实在回避不了,那你这块这个启动日志你可以放一个特殊的。标记标记它是启动日志也是OK的OK吧,啊啊,那就是细节上一处理,那回来那这个是启动日志。那下面是世界人士的一个判断处理,那无论是哪一种啊,记住一般情况下,这种判断规则或者清晰都会额外的再放在一个类似于这种工具类啊,或者方法里面去判断啊,不要在这里面去写大量的这个业务逻辑代码。啊,给它抽取出来啊,那怎么抽取呢?看if love u。Ti。
11:02
点验证V忘点嗯,Start。是这样的啊,是这样的,是这样,然后把这个log串起来啊,看这个是那它这那同学说你这个灯这个累也没有,这个方法也没有。啊,没有没关系,可以生成这对不对好。那这里面如果校验成功的话,我可以先给他返回一个。啊,直接返回一本,如果校验成功的话,我就把你传进来,这个给返回去,如果不成功的话,我给你返回一个捺啊火去了啊,那先创建二加,就是创建一个类。OK,那这样呢,就有这么一个类了,有这么累还不够继续再回来,他接下来让你判断这个方法。
12:10
是记错了,应该是。啊,瞬间方法啊。好,那这样呢,这个就创建一个方法,你看至少这边数就搞定了啊,那这块呢,是这个校验启动日志。好,那将来起积动日志还不行,那你还有一个是这个事件日志啊,那这块继续写EL。6.2对L,那这个呢是一条事件。那里面仍然传一个老。好,那圈这个方法,那就创建这方法二加回车。啊依然OK,那再回来,那这里面就是特,如果调验成功的话,返回一本不成功失败返回一趟。
13:08
那剩下的事就是在具体的方法里面去实现对应的业务逻辑,那我们先实现这个启动日志的过去。啊,那启动日志证里面,它其实就是一个阶啊,本质就是一个阶,那阶的话我去判断E。如果传进来的它等于等于空。嗯,他是空。行。如果他没空,我就啊,直接返回去,失败了不要。好,那如果。啊,如果这个log点我先一下是干啥的。去空格啊,加空格好点,它的start的位置如果是啊。
14:04
因为这个街上的格式它就是这样,大框开头,大框结尾,那如果开头是它。啊。其实是开头,不是他。不是它我就把它干掉,这地方我得改一下。什么感觉?啊,你这块改成错的话,那前面只要它不是这个开头,我就把它干掉。啊。那还有一种可能,或者like there,这there and start with,如果不是这个,那你就需要在前面加一个看。啊,那这里面判断的其实是什么呢?如果它的开始不是这个,或者结束不是这个括号就干掉,其他的通通放行。
15:01
啊,这就是一个简单的一个信息,判断这个数据的完整性啊,比如说这种数据。那肯定就干掉了,那比如说这种。也干掉了啊,最简单最粗略的一个清洗啊,绝对不能在这里面做特别复杂的清洗。啊,因为它会影响后面的这个业务,OK,那这一块,那下面那继续验证事件日志的一个校验,那同样进来。If,如果拉等于等于空,那方OK。啊。那这个判导完之后,那其实这个日志它是什么样的结构呢?它是接啊,不是前面时间串啊,时间竖线接它这种格式,那既然是这种格式,我就要对这个格式进行切割对吧?啊切割。
16:10
切割,那切割的话就是那点怎那斯布利的时候要注意我这里面是不是要竖线呢?那你觉得这样它能切开来吗。那你给我理由,为什么?那这里面就涉及到一个正则的一个转移特殊字符啊,我们来看一下对应的这个帖子啊。嗯,在资料里面。资料包扩展资料啊,扩展资料里面有正德表达式,帮我找正德表达式最后一个对吧?哎打开。正则表达式表啊,找到斜杠竖线,诶这个。
17:00
这个,那这个竖线呢,它是正常表达式啊,其中的一个特殊字符,它指明了两项之间的一个选择,要想匹配这个竖线,请使用。这啊,这他认为是一个竖线,那它既然是这是一个特殊字符,你需要对它进行一个转移,那这块的话,你就需要。正杠啊,两个斜杠,这个呢,表示是竖线前面加了一个斜杠,是把它变成特殊字符啊,特殊字符的一个处理啊,变成真正的这个竖线啊,属于一个转移啊,这块注意二。那拿来,那这呢是love c。拉式,那这个拉框式里面就有两个值,一个是时间比是它,那首先你还是要调验一下。就各种教练啊。那这是什么呢?它的长度是否等于2IF?
18:03
看点认识它不等于二。Return first再给大家好,那如果它长度等于二了之后,下面我们就开始先判断,先判断它的服务器时间,再判断这是。能判断夫妻之间吗?那段时间,那时间怎么判断if?首先你要取出这里面的值log。Count,那第一个值就是零吧,啊0.2。是零吗?啊,这个零它的值。这个时间它的长度。等于等于13,第二,那它的长度如果不等于13,那我就要把它干掉。
19:02
那你看一下这个服务器时间是不是13号找一个。这。你数一下这位数二四六八十,13位啊,它的时间标准长度都是13位,这是一个时间的一个判断啊,那后来那首先判断时间长度不OK,如果不OK return false啊这box。那下边继续,或者它这里面全部都是数字吧,你看是不是全是数字,有一个不是数字都得把它干掉,那这块判断拉有。啊number.is Di啊,这里面是判断它是否是全是是不是。零,那如果这是判断,它全是数值加一个反啊,只要它不是全是数,这就返回fo啊,再把它干掉,那就是时间内判断,那时间判断一个是判断的长度是否等于13,另一个判断这里面是否全部是数值打号,那下来最后一项判断判断。
20:25
健身啊健身,那健身这块跟我们上面判断其他启动日志是不是就类似了,它必须都是。大括号开头啊,大括号结束,好那就简单了啊。一。Like,看是取出里面的值,那是几啊一啊,一点要退一下,然后点start位置它,如果是它取法啊,那就是如果不是它。
21:04
那就Bo OK,那接下来还有一个获的条件,那获得条件就是啊,然后这是一。点trip啊,还是要trip一下,点and的位置啊,那and的位置啊,再加了一个计算啊,那后面这地方要注意要改成,那这就是整体的一个判断啊,那我们稍微回顾一下啊,稍微回顾一下,那回顾一下就是进来这个时间人事,你要判断它是否为空啊,否则的话容易放控制帧之后切割,切割成两块,因为它本身是时间一块切成一块,那切割完之后,整体上判断它的长度是否等于二,如果不等于二就说明它不完整,直接把它干掉之后判断时间,时间的判断标准长度是否等于13,然后是否是全部是数字啊,那接下来呢,是判断这个杰森,杰森就是最粗略的判断它的开头是否是左大括号啊,结束是否是右大号。
22:21
啊,就结论啊,如果这些都能啊顺利通过能返回出。啊,这就是整个一个校验啊,好,校验完之后我们还没完啊,这只是单个事件的一个处理,你看我们回到了这个类里面啊,回到这里面之后。啊,只是把这两个校验规则写完了。而且你也只是处理完了单个疑问的处理,下面还有一个。集合处理。因为塔斯。因为那是。那因为上面这个校验如果成功的话是返回,如果失败了,返回的是那啊空啊空的话我就要把它干掉,那在哪干掉了呢?在这里面啊,在这里面,那在这里面啊。
23:12
那首先这里面包含了一个一个event,也就传到弗米的事件,那之后I啊。循环遍历每一个事件,那这里面的每一个事件都要经过这个方法的调用,这个方法输入一个英文的串,输一个英文的拿过来。传进去。100呢?那只要传进去,就会经过这里面的校验,判断是返回还是返回库。那。那是他返回了一个赞。那返回来之后啊,来个一吧,嗯。那如果。In the,它不等于空,不等于空,我们是要留下等于空的,是要干掉啊,那不等于空的内容我要放到一个集合里面。
24:09
作为返回值。因为他返回是一个力的集合啊,所以说进来的是他经过中间的这个校验,把张淑俊围空的干掉,然后返回一个干技能。那这个过程当中就需要一个集合,那你就创建一个另一个list啊这个。好,那答到它。你上是。拿到它之后。点啊,往里面添加in the。啊,只要符合要求的通通都添加进去,那最终在返回的时候,这地方返回的就是新的这个集合了啊,新的那个集合。
25:01
这样就OK了啊,那这里面的原则就是进来一堆数据,有可能有好的有章的,那经过这里面,尤其是它的一个判断。啊,不合我们要求的已经被过滤掉了,那剩下的返回的就是我们正常用,OK,那这块完成之后,那下面还剩最后一步,在这里面建一个静态的内部类啊。他这个。That啊,然后class build build啊,然后这里面是实现in。三点。好,那这里面实现它的两个方法。那这两个方法在这里面,其中是啊,对的,那就拗一个。E。
26:03
那大家有好多这个同学疑问说为什么要建这个静态电流的丁?那你想想,你创建完这个类之后,你怎么让用户去调呢?你得有这个对象啊,那你要另一个对象,那你也没有机会去用这个对象,因为你看我这个服务配合键。嗯,在。这里面服中排摄文件这块,它只是告诉你全类名加上一个Dollar builder。你根本就没有机会去碰这个代码去改,说我要创建一个这个对象,那我就通过静态内部类的方式,其实调了一个比对象啊,静态内部对象。啊,就这种方式,这是他们的一个要求啊,按照速配的要求去做啊,那好,那这个build段呢,我们就写完了,就这么简单,这也是ETL清洗的,一会我们来验证。
我来说两句