00:00
呃,那接下来呢,我们要做这个新老访客标记校验,也就这一段逻辑,对吧,就是这段逻辑啊,呃,那我们想一下我们应该用什么。用哪个?算子呢?大家觉得我们应该用哪个算子呢?想一想啊,我们应该用哪个算子呢?啊,上来就process,你们真的用process上瘾是吗?就反正一问的用什么算子,反正用process肯定不会出错什么。对吧。
01:00
反正我我就说肯定不会出错。你就不带思考是吧,就不带思考的。你未来工作所有的都写process全都写是吧?Process里边的东西更多,对吧,他也就会更重。因为你你带的那些东西。虽然你没有去用它,那他说我没用它,没用它,它是不是也也给你有了呀。他都给你初始化出来了。对吧,他得给你把这些东西都准备好吧,那他怎么知道你不用呢?对吧,所以肯定就不能怎么着,就就上来就用process呀,对吧。啊,那么这个地方呢,我们做。新老访的标记对吧,那呃,有的数据呢不动,有的数据呢,里边的一要改为零。对吧,那每一行数据呢,都要做这个操作,要不然不变,要不然由一变为零,那其实用一个map吧。
02:08
大家想是是用一个map是不是就OK了啊啊,但是呢,由于我们用的状态边长,所以起码得是一个rich map对吧。好。呃,那输出数据呢,肯定还是这个介没什么好说的对吧。哎。好,那返回结果呢,其实还是他自己,那也就说你转化干嘛呀,对吧,当然在这个之前,我们要根据状态里边等等这些条件,有可能要把这里边儿的。Is把它变为零对吧,把一变为零,但是你不管是零不变,保持不变还是一保持不变对吧,还是一变成零还是怎么样对吧,最后肯定还是返回的这个数据。
03:04
无论哪一条这个数据都得返回,你不能说把这个数据干掉了,对吧,这个数据呢,我都得要,所以呢,我先把这个返回value,那中间要做转换,我们再聊呗,可能对这个Y里面值要做改变,对吧?啊啊,反正呢,都是返回Y6,我们把这个先写上啊啊,那接下来呢,用状态边程,那我们要定义一个这个状态对吧,在这边private。啊,然后呢,嗯,Value,因为我们存的是一个时间对吧,字符串string就够了,呃,这边呢,我们叫last。Visit。DT。啊,或者就要这个state啊,不搞那么不搞那么复杂了。呃,然后在open方法里边做它的一个初始化啊,这也就是我们写Java,如果说写的是SKY,你就完全不用在open方法里边,在前面加一个lazy关键字,懒加载就好了,对吧。
04:00
呃,那Java Java的话呢,我们就在这个open方法里边做它这个初始化啊。叫,然后呢,给一个名字叫last visit。然后three。Class对吧,啊class好,那咱们这个状态呢,就搞定了,这个状态呢,未来存的是一个访问的年月日对吧?好,那接下来呢,我们来写这个内容。首先我们要获取什么东西,我们要获取的是那个is new标记,对吧?标记在哪呢?一样的,跟m mid一样,在这个common磁段里边。在这对吧,叫标记,第二个我们必然还要取这个时间戳做判断。对吧,所以呢,我们把这两个都获取一下啊,因为接下来呢,你不光要判断它是一是零,对吧,还要跟这个时间。都要做比较,所以呢,我们去取一下这个时间啊。
05:03
在这边我们写一下。获取。叫一。六。标记。And ts对吧?这两个东西呢,咱们都是需要的啊,我们就把它提出来,那就value.get object对吧?先获取咱们的段,然后再去获取咱们的标记。六啊这块呢,注意啊,下划线啊,你还是一样的,如果你不太有确定对吧,你要从这去粘一下啊,你找到你的日志去拿一个就好了,OK了。好,那这个呢,咱们就搞定得到了一个is new对吧,接下来呢,value.get long啊,因为我们的时间呢,是跟common平级的。追赶啊。咱们的时间戳跟comment是平级的,对吧,所以直接去获取。
06:04
直接就获取啊啊,接下来呢,咱们要把这个东西转化为。年月日吧,对吧,啊转化为年月日啊将。时间戳。转换为。年月日。或者说这样吧,咱们这个。那我们咱们呢,用的是。咱们自己写的优点。哎,咱不要这个。这个是官方的,咱们叫什么YouTube对吧。呃,咱们要转成年月日对吧,那to date to date啊,这个是转成什么年月日,十分秒看见没。这不一样啊,这个是年月日date,这个是YMDHMS对吧?好,那我们只要年月日就它啊,TS乘进来。
07:05
好,那我们就得到了,叫current当前的。Date对吧?啊,Car dt或者叫date啊,写全一点叫当前的日期,这是当前这张数据的日期,好,那这些东西有了,接下来我们就可以写这个内容了,判断如果值为一对吧,然后else,好,那这边判断是否为一。判断。标记叫是否为?一对吧,那这边if。1.equals。咱们的IS6。对吧,好,那这边呢,L,那我就不写l if了,对吧,因为在我们数据里边其实只有两种啊,只有两种啊,那我们就呃判断为一就行了,那如果等于一。我们要怎么办?
08:02
呃,我们要看这个状态是否为呢,对吧?好等于零呢,也要看状态,诶两个都要看状态,那我呢,把状态在外面提取对吧?啊,那获取状态中的日期对吧?啊,那你写代码的时候,你稍微规划一下,咱们这儿要比较状态,这也要看状态啊那。你要是在这儿获取,那这是不是也获取一次对吧,没必要,我们可以写在外面啊,啊,那就是last visit states点。我们就得到了一个叫last。Date。对吧,好,这是当前日期,这是以前的日期,当然他有可能会闹,对吧?好,那我们就按照那个逻辑来啊if。啊,它等于。那。对吧,那等于,那那么你怎么做呢。If,这个last date,它等等于,那我们完全按照这个来啊,我就先不考虑合并了,其实这里边儿有一些步骤可以合并啊,那最后呢,我们可以看一下简单的能合并的我们就合并一下,对吧?呃,如果说。
09:09
能合并的,但是需要改更多的代码,我就不改了啊,就按照这个123这个步骤来可以吧,好,那如果等等于呢。状态等于呢,你数据等于一。说明你确实是第一个对吧,那我呢,把这个。日期更新一下啊,那就last visit点。Update。啊,更新更新成date啊,但数据不改,数据不改,因为你是一。对吧,你是一且你状态为呢,那确实我认为你就是一个新的访客,那我就不变,数据本身不变,但是我状态得变,所以这样对吧,好,那第二个else。If。对吧,好else呢,说明你不等于,那不等于now呢,我们要看这个数据它是否等于当天。
10:07
对吧,好,那怎么做呢?那就是拿着啊,Last。点equals,咱们呢叫C对吧,好,这是相等,那我们要的是什么不等。如果。你不懂?对吧,你首先。你呢,等于那不是这个逻辑,那能走到这儿说明。你就不等于,那你不等于那呢,所以我把它写在前面了,它就一定不会控制针对吧?啊所以要注意,就跟这个我们写一写在前面一样的,防止控制针一定不会出现控制帧对吧?好,那这个地方也一样,因为走的else逻辑,那拉data它一定不等于那那你拿着它去调方法,一定不会控制帧。啊好,那如果他跟今天不同。那什么意思,就是诶你三你的日期里边是38号,就是状态里边38号,你拿着一个5月4号的数据来了,但是呢,你带的是一,我是不是要把这个一改为零啊,大家想对吧,我们要改为零,好,那这边呢,我们要修改数据啊呃,那叫VALUE6点叫get。
11:13
接森object先获取common对吧,然后呢点一六,然后呢,我们把它更新为零。啊,更新数据对吧,这个就。搞定了,完全按照这个逻辑来的,好,那最后一步说什么说如果监控状态不为呢,且是当日,那如果说我们写出来,那就else if。啊,或者说直接就else就得了。对吧,直接要最后那什么都不做对吧,看啊这个叫不做操作第三步对吧,那既然不做操作这个分支,我要它干嘛。我要它何用?是不是就可以不写了,对吧,因为你不需要做任何操作,你看这个else现在给你标黄对吧,为什么吧,他说这里面是空的,空的呢,如果说你奥特加回车,它里面让你删掉。
12:09
不要这个分支对吧?啊,那确实,但是我们没写啊,就跟刚才一样,你不做任何操作,你就可以不写。啊,你就可以不写。对吧,好,那这边呢,我们来看啊。呃,那这个一的逻辑就写完了,那接下来到这儿,那就是零的逻辑,零的逻辑我们看一下啊,如果状态等于钠。那我就更新成昨日。对吧,好数据不变,根因的昨日如果状态不等于呢,那我就不做操作好不做操作呢,也就不用写,所以这一边呢,我这样我可以这样写。If。我会这样写对吧?啊,如果你这个就表示什么呢?你走到这个else,说明你的is new是零。同时它维纳指的就是这个分值。
13:00
对吧。B里边的第一个分支啊,那我就要把日期更新成这个。昨天。那昨天咱们怎么办呢?我们练啊,我们简单一点啊,呃,他过来那就拉。点update更新肯定对吧,呃,咱们这样写就是date。For ma to date对吧,然后呢,用当前的TS减去。啊,我减一个什么呢?呃,减一个一天的毫秒数,一天呢24小时对吧?呃,一个小时60分钟。一一分钟60秒,一秒钟呢。可以千毫秒对吧,我减一个24小时的一个毫秒数。啊,我就不用那个什么日历类去转换来转换去了,我直接这样写可以吧,啊但是数据呢。不做改变,我只是把时间改成昨天。啊,把时间改成昨天对吧,好,最后处理完之后,诶返回这个value,好,那么接下来呢,我们其实实际上都是按照这个来写的,对吧,整个的,因为有的东西你看啊,那应该说你这里面写了五个,你看A里边123对吧,B里边有一二,为什么你这只有if else if else if3个。
14:18
对吧,啊,为什么它只有三个,那很简单啊,因为这个。不作为。这个不作为,那不作为,你可以写LC。对吧,你可以写个else空着那没有意义啊,对吧,那你你在这写一个else,你写个else。ID要都让你把它删了对吧,你奥特加回车这个没了对吧?所以你看着是五个分支,但实际上我们写出来coding就三个,这是我们说的思路,跟最终落地是有一点差距的,对吧?但是你在讲思路的时候,这玩意儿你不能不说。你得有写代码的时候呢,可以不用,因为你啥也不做。
15:01
对吧。OK,这一块。能搞定吗?大家给点时间,大家可以想一想,捋一捋。这一块。OK吗?其他同学呢?对,就是你可以把你分析好的逻辑对吧,放在旁边,根据这个来写,你就不容易去出错。对吧,啊,如果说你不放在旁边,那就容易出错。是这意思吧,好。这个呢,咱们就。搞定啊。好,这个我们就做一个输出啊,做一个打印,CTRL加V得到的是,嗯,杰森。Object with new flag对吧?新的标签了啊,它有可能里边的一会被改为零对吧?啊,一改为零啊,所以呢,我们叫new flag啊,为new flag取个名字对吧?啊,当然这种名字我就随机取到,有可能跟文档当中不一样,反正变量名嘛,我早就解释过了啊。
我来说两句