00:00
好,呃,这些重要类我们说过了啊,下边我们还是。再返回我们刚才那个代码。我我我们刚才。啊,重新关了吧。嗯。我来看啊,就这我们跟你来啊,然后跟你来。然后现在跟这个。这首先。这是获取。啊,当前时间点所在的。样本窗口你看这边。Window rap嘛是吧,这是我们的样本窗口。
01:03
我们获取到这个样本窗口。当前时间,比如当前时间,现在就在这个位置,我就获取到这个样本窗口。然后。呃,将当前。请求的。嗯。技术量吧。添加到当前。样本。窗口的。统计数据。这不是窗口吗?窗口的value就是它的统计数据,我把它添加到这个统计数据里边。我们先来看它。那这里边儿这不是当前时间是吧?啊,获取当前时间。还。被谈判。
02:00
就这个意思是吧,然后继续跟,而且现在这个时间,我们当前时间啊,那你如果这当前时间小于零,那肯定是不对的是吧,然后在这诶这这这个就这个代码,这核心代码,这有意思的代码啊,这我们大家需要需要注意的,这首先是计算。Ul time I DX肯定是在计算,计算什么,计算当前时间所在的样本窗口。ID,哎呀。这这个什么意思呢。它是这样一个意思啊,大家看。我们这个啊,他整个把这个时间。从你那个计数的零点开始,把所有的时间我给你分划分成什么?啊,一个是一个样本窗口一段,一个样本窗口一段,一个样本窗口一段,我全部给你按样本窗口划分的。那我划分出来很多的样本窗口,从第一个样本窗口开始计数,第一个是零,那ID是零,那第二个就是一,第三个就是二,第四个就是三。
03:08
他是这样挨着计数的,也就是说这个。这。在呃。嗯,计量。呃,在。计算啊。数组。Leap。中的。索引是不是就算这个索引。我们一会儿跟他啊。然后这个呢,这不计算当前bucket time,这个很简单,那不是。计算,嗯,当前,嗯。样本。样本窗口。呃的开始时间。
04:01
时间点啊,你你开始时间点是什么。哎,我给你算出来。咱们先看一下它啊,咱们看一下它计算。计算这个样本窗口的ID,我们跟进来。原来大家看这是我们当前时间的。这不是我们那个实验窗,不是样样本窗口的,呃,长度吗。我们当前时间除以样本窗口的长度,那大家看一下这是什么意思,这当前时间假设啊,当前时间在这。来把下边这些东西先删,先不要等假设啊,这单体实验在这儿。你说你在。我先先用这个时间假设啊,这个是啊,二百二百一十五行吧,这这这是225,这215,你215在哪个。
05:00
实验窗呢,在哪个样本窗口呢?我就用215。我除以25。是不是215除以25。那你算开的。它就是它所在的实验床。那是几啊?那就。是不是215除以25,那就是八。那假设你这样算啊。跳是15 15除以25是几零啊,他肯定是在最开始的。那在在这头最开始的时候是吧,零。然后那你要是30呢,30除以25,那就是一。是不是它是从零开始计数的,所以你215这一除。在建国时期,把。实际上这是在第八个是吧,就就算开他的这个ID了。是吧,那算这这他的。
06:00
嗯。计算出。嗯,当前时间在。哪个?样本。窗口。是吧,啊,这才是那个真正的那个那个ID是吧,然后你看他。他是什么,这个ID除这这这个这个是谁。这个这个就是它呀,我们刚才说了,就这个100除以25等于几四,就你那个数组。也就是说相当于这就是他那个四就那个。我让他除以。那什么意思?我让它除以四假设啊,你这个算开的是几是五,假设算开的是五啊,第五个你想它不是除呀,和和和和四求求于几模结果是几是一。
07:04
那是什么意思啊,这就是这样一个意思。加看啊嗯。反正咱假设这儿。嗯,假设这是。零吧。嗯。加是二零。那。这个实体。这20题。30题是吧,假设啊,然后呢。我把它拷过来。把他考过来,你最开始肯定是他。是吧?最开始啊,肯定。你看最开始,呃,你你你你这里边啊,你不是五嘛,它已经满了一个了,五五和四取所以。
08:08
它就相当于。五和四曲。这又走一个。是不是这个东西。就相当于他现在在哪五克斯区域是一。一是哪个?是A1。是在这儿呢?五啊,你注意五哪个是五。012345,它是不是应该在这个里边。是不是应该在A1。这个数组吧,是不是就算出来,所以这个实际上我我们。这说了干什么?计算数组瑞在在数组。
09:01
Le a里边的索引。计算这个索引,它现在就是。五的话算开来就是一一就是在ae里边的不错吧。是不是,然后。计算开始时间点就开始时间点是怎么算的,也比较简单。就我当前时间。和你这个时间这个是多少,25啊。假设这这这不是25吗?啊,长度是25,呃,这个是多少,这个是假设啊当前时间。假设我们当前时间是。不是在这儿呢吗?嗯,简简单一些吧,啊,这个是多少,这是25,这是30吧,假设现在是30啊。现在30那30。你说你说你现在所在的这个,它的起始时间点是多少。那就这样算的,我让30和25取,取是几是五。
10:05
然后呢,五我让这个是。三十三十减五是多少?25。这什么意思啊,30和25取余,余数肯定是这啊,大家看就这段的长度。这段长度肯定是五对吧。然后再让它减去这段长度,那不就是这儿吗?是不是大了起始时间点,那你想想,如果你这个在这儿也一样。这段十啊。啊,这是二二十五啊,这假设是100的啊,这都是100的啊,啊,然后这是100啊,这是125是吧?啊,这是150,假设这是140。那140。如果这是一百四的话,140。你说它所在的这个时间窗口起始点是多少?140和。
11:05
25取。师姐。15吧。是不是15,你你去掉相当于你去掉125嘛,不是15嘛。15就意味着什么,这段是15。那它的起始时间是多少?是不是一百四减去15。是不是125。不错吧,所以这就算出来什么,就算出来这个起始时间点了,嗯,对不对啊,OK,这个也计算出来了,再往后我们来看。嗯,这是核心了啊。就是获取。我去。你注意这是IDX啊,IDX是它吧,是不是,那不就获取到这个,呃,当前。嗯,获取到当前时间所在的。
12:03
样本。样本窗口回到当前时间所在的样本窗口,对吧?啊OLD2先接了个old啊,老的,如果这个old是空。那意味着什么?因为这这个这个窗口就没有,原来那时候还没创建这个窗口呢,那你是不是是不是就需要创建一个呀。对不对,所以你在这就利用了这样一个实验窗口。你没有吗?你就好像我时间啊,假设我时间现在走到到这儿了。在这儿的时候有这个时间窗口是吧,当在这个时间点的时候,来了个请求。他来了个请求,你就要计算他在哪个啊实验窗。一算在哪,在这这个时间长。现在有没有这个窗口,没有没有,你是不是就得需要创建一个。所以他在这儿是不是就创建了一个。对吧。
13:03
嗯,我写到哪儿。嗯。当前时间。当前时间。所在样本窗口。喂。No。说明。嗯。That。样本。窗口。还不存在。嗯。创建对吧。就是在这儿创建了一个时间窗。对吧,创建一个时间窗。创建时间窗,这通过CAS的方式,是不是把这个,这不是他now吗?如果它是nowrra,它是now,就把这个是不是给它放进去,对吧。所以就是,呃。通过CAS。
14:06
啊,将新建。窗口啊。对吧。那那这这这指的什么,它是空啊,那不空的。如果不空不空,哎,你发现当前你的起始时间和你计算这个起始之间啊。还是是是同一个。他不一样。呃,当前当前当前什么东西啊。呃,当前样本。窗口。呃,当前样本窗口的。起始时间。嗯。
15:00
与。那。与。计算出的吧。你计算出的样本窗口。啊,起始时间点相同。则说明这是。这样两个。是。200。对吧。所以我就直接不是获取到了就就直接返回它就行了。对不对。没问题吧,这个时间窗,我不是获取这个时间窗嘛,我者获取这个,你记上这个就行了。那那那再否则。
16:01
若。拷贝啊。若当前样本。嗯,时间窗的起始点。呃,起始时间点。大于计算出的样本窗口起始时间点。说明什么?说明。计算出的样本窗口已经是吧。过时了。就你你计算出来的啊,哎。你计算出来的,实际上是这儿的。而现在时间已经到这儿了,你这个已经过时了。过时了,那需要怎么样?啊。需要。讲。嗯。
17:00
像,嗯,原来的。嗯,样的窗口。哎。你这样说啊,我给大家这样说,这样大家更容易理解了,这是这个数组啊,因为这个数组一共就四个元素。你注意它一共就四个元素。它一共就四个元素,所以我算开它以后,我从这里边获一套。会到你。嗯,他是这样的。点了。他是这样的啊。我们看到这它是转圈的。你注意啊,它是这样的转圈的。就是。你你像这样啊,就是162177,你看啊,11757677。
18:00
嗯。你像你像这这是不是应该七八。这应该七八,这是162,这确是162,为什么?他这是转圈代代记的,你你以前获取那个老的啊。以前或许那个老的,它是上一轮的时候,上一圈的时候那个值,所以所以我得比较一下,在这比较一下,哎,如果你的这个我当前这个时间比你原来那个老的那个时间。比你大,说明你的这个里边存放的统计数据是什么,这你上一圈的。在需要将原来样本窗口。哦。这个替换。替换。是不是?你是商业圈的,所以为什么他这画这样一个图转圈的。边就在这儿。
19:01
反正。这这多啊,好理解一些,这个四个是不是有点不好理解是吧,嗯,比如说弄弄那个,呃十个啊从零啊。零诶。嗯。这样给大家说吧。假设啊,咱们就以它为例,我这挨着数啊,啊我我我零零号零号这个窗口啊,啊,放的这是零号窗口啊。呃,样本草稿一二三四五六七八九十,11,十二十三十四。15、16。16是吧。啊,那时间当时间到这儿的时候再转。时间又走走到这儿了,你是不是还需要再统计?那你上一轮这里边儿是不是原来就放的有数据啊。你现在获取到这个哦,一看啊,这个时间起点是多少。
20:01
那肯定是上一轮的,你现在这个时间起点是新的,这个时间点肯定比上一轮这个大。所以你需要让新的样本窗口把它替换掉。对不对。然后你又又转到这儿了。他是不是也记得上一轮的一个样本窗口,但你现在时间是不是又转回来了,转了一圈又回来的,所以这个新的比他原来这个老的一个起点。肯定要。那给他替换掉。这个心态就就明白这个意思了,对吧。那所以在这做的什么,做点替换。做替换。嗯。替换。老的。样的。
21:01
是吧?你再给他来小于的小的这种情况啊,一般不会出现。这种情况,该情况。就是当前样本窗口的起始点小于。小于啊,计算出的这个起始点。这种情况一般不会出现。因为是时间不可能倒流啊。因为时间。不会啊,到。道理。除非。除非。是吗?人。嗯。修改了系统。除非这种情况。
22:00
那。这就不说了啊,然后我们现在看一下它替换老的窗口怎么替换,其实很简单。你看。哎。其实很简单。这做了一个这什么。更新他的时间。更新。更新啊这个。Chun。呃,起始时间。这是起始事件吗?跟你来。是不是复制给他就是。他这个对象本身其实没动。这这个W这个对象。它所谓的所谓的替换,其实并没有把对象替换了,仅仅是把数据给它更新了,就是它的统计数据值是吧,Reset一下,所谓的reset是什么。给他的统计数据,每一个维度的统计数据干嘛清零?
23:03
在这做了一个reset,你看reset全部复制为零了。看到了吧。是不是这是对美讲讲讲讲。将嗯,每个。维度的。数据。清零。是吧,然后还最小的啊,它就赋值,赋值给它这样一个一个一个一个常量值啊,它所需要的这个值是吧?常量值嘛,这里边各种常量值给它赋值就行了。所以。所以这这清零啊,将统计数据。了。百度。统计数据。所以这是什么?这就是做的替换。这就是做的替换。
24:02
啊。那这是什么,这就是我们说的统计啊,你看嗯,这个。还没有说完的啊。再进行获取到是不是当前窗口啊,获取到当前窗口了,然后把数据往里边放。放到窗口的数据,这个相对就简单了。你看。往里边放,这是放的谁呀?哪个维度的通过的呀。是放在通过这个维度的,嗯。对不对,你看。是不是这个维度就通过这个维度往里边给它加了一个N,是不是就这。是不是?嗯。Pass。
25:00
维度中。呃,增加。是不是这就OK了?那这样的话啊,又又回到又回到哪,又回到这儿了。然后就又回到。快到了。是不是这是我们完成了,也就是说我们现在就完成了什么数据统计源码的解析。当然这个流程啊,整个这个流程大家如果呃思上不清晰,你可以看一下。这个图。你看完来给大家也把这个图画出来了,你也可以一步一步挨着看啊。好。
我来说两句