00:00
呃,在base道当中,我们把我们的一些h base当中的一些东西啊,咱们做了封装,那么其中啊,涉及到一个分区键和一个我们分区的号码的一个问题啊,这个呢,在咱们之前呢,是没有讲过的啊,为什么呢?因为在之前呢,咱们只要把h base能用起来就可以了,但现在呢,是需要在我们的实际工作当中去用到它啊,那所以我们这里呢,就得把它用一下啊,那么首先第一个呢,就是那个分区键,那么之所以加分区键的目的是希望呢,不要产生我们的什么呢?诶数据热点不要导致呢,我的分区只有一个,那这样的话,数据不断的往里面增加,那我们的频繁的拆分就不是很好了,效率呢就会降低,所以啊,咱们用分区键的方式,把咱们的那个表嘛,给它建立多个分区啊,就是这样,那么这时候你就要明白了,我们如果要分六个分区的话,那么分区键只需要五个就可以,而且这五个分区键应该有顺序的概念啊,所以我们这里呢,有一个叫reading,它表述的呢,就是我们的分区的那。
01:00
那个什么数量,比方说六个五个四个,诶就这个意思,但是你这个是数量,可是我真正要的可不是这个东西,我要的是我们的那个分区的键的数量,所以应该用分区数量减一得到一个分区键的数量,然后呢,我们这里呢,要需要考虑的一件事情就是我们分区键怎么得到,我们说了咱们分区键的目的是为了划分分区,把我们的肉呢按照某个规则放在不同的那个分区当中,这个就类似于我们的哈希map,把数据放在某个小格子里面的效果是一样的,既然是一样的情况下,我们的分区键用的就是我们的那个索引号码,01234,诶咱们用的就是这样的号码就可以了,所以说如果你要增加分区键的话,那么分区键就应该类似于这个样子,在我们这里面有个负无穷,有个零,然后加个竖线,有个零,竖线一竖线一竖线正无穷啊分我们的三个分区,那么为什么加竖线这个。
02:00
这咱们也强调过,那是因为我们的竖线,它是我们阿斯克玛当中的什么第二大的值,那么比它小的值,它都什么能够进来,那这样的话呢,我们的范围是确定的还是可以的啊,能够确定我们的范围,这样我们把它加上还行的啊,所以呢,我们下面就有个负循环,负循环当中就可以把每一个分区键给它加上,反正你是个类似于索引的概念,那我I就等于零了,那么零加上竖线就没问题了,可是你只是把那个分区键准备好了,但是我真正去保存的时候,真正去操作的时候呢,应该是个字节数组,所以呢,我们就把它变成一个字节数组,而且还不是一个字节数组,是多个字节数组,那么这样的话就形成了一个集合,那么这个集合当中的每一个元素是我们的数组,哎,我们这样的话就把它封装好了,你封装好了以后,可是我们真正在用的时候不是这么用的,我们真正在用的时候是创建表的时候用的,而创建表呢,它需要的是二维数组,那我就得把这个。
03:00
数组的集合呢,把它转换成我们的二维数组,所以啊,咱们用了一个叫to r,这个to r的含义呢,就是把集合当中的数据放到这个数组当中,你的集合是我们的bad的数组,那么这个恰恰是二维数组,数组里面有数组,同样满足我们的需求,那这个功能呢就有了,有了它之后,那这个功能呢,在我们前面就可以去调用了,调用的时候呢,就可以把我们的分区键传到表格当中,那么表格里面有数据,其实我们的这边分区也就完成了啊这个呢,我们需要考虑一下,工作当中可能不见得说要要求什么012这种东西,但是你要考虑清楚啊,那么我们这里啊,因为是有一个索引的概念在里面呢,所以啊,我们这里呢,其实并没有排序,其实按理说我们这里应该是排序的。为什么呢?因为我们分区键也应该有一个顺序,咱们当时给你们演示过,我们abcd把那个D放在中间,放在前面,它也会自动排序,对不对,但是呢,是它自动的,我们这儿呢,需要你自己来操作一下,我们为什么这没有排序呢?是因为我们这里本身啊,我们这边就已经怎么了,就有顺序了,0123就有顺序,所以我这里并没有排序啊,其实我们要排序也可以啊,也可以,那么我们这边有一个什么呢?来我们的collection是点它这边有个什么东西啊,大概什么东西啊,叫sortt啊sort sort什么意思啊,不就排序的意思,对不对啊,排序,那这个排序呢,恰恰可以对某个集合排序,比方说来排序,排序以后,那我对它的肯肯定是对里面的直接数组排序对不对,这个排序算法呢,不用你写我们的h base实际是自带了的,所以点我们这边有一个叫什么东西啊,叫by r computer啊,就是一个我们的字节数组的比较器,那这个呢,你就不用管它,你直接写个new啊,直接。
04:48
这个new,然后呢,这边呢直接来就可以了啊,所以我们这边呢,直接来把这个点啊,我们写上它啊,写完以后其实它自动就可以排序了,还是非常不错的啊这啊这个呢,我们了解一下就行了啊,这个呢,我们不加也可以,加也可以啊,不加的原因呢,是因为我们这里本身就有顺序,你加呢,可以在以后去加上它啊好,这个呢,分区键咱们就说到这儿,接下来咱们再回过头来说那个分区号码的问题,那么为什么咱们要有分区号码呢?恰恰就是我们前面有分区键,它让我们的数据呢放到了不同的分区,可是按照什么规则来分区呢?那我们说啊,按照规则就是我们说要计算那个分区号,你的分区键啊,你的分区键有零有一有二,那么我的分区号也应该有零有一有二,所以我们的分区号其实是跟RO key相关的,因为我们比较的时候是按照rook key的顺序比较的,那么只要分区号码在我们的r key的前面,那么就能按照我们指定的分区呢去存储数据。
05:48
对吧,效率呢,就非常的快了,而且可以均匀分布啊,不会出现热点数据啊,也不会导致数据倾斜啊,这种方式还是非常不错的啊,那我们怎么来计算分区号呢?记住这个你可不要随便写,说老师啊,我我这么轮询吧,诶那不要这么做,咱们要根据业务来做啊,业务什么叫业务呢?就是说我想把关联的数据放在一起,我为了我的统计方便,为了我的查询方便,那我要把什么呢?相关的数据我放在一起的话,那我就要想想我业务当中哪些数据我应该放在一块儿,那我们给大家举的案例是什么呢?就是某一个用户,某一个主教用户在某个时间段啊,他打的电话我要放在一起,为什么呢?我要统计他们,所以在这种情况下,我们的某一个主教用户,比方说在2018年的十月份,他的所有电话我需要放在一起,那么他们就应该放在一个分区当中,他放在一个分区当中,那我统计起来就非常的快,所以啊,我们也就意味着一个电话号码在某个时间段。
06:48
它的分区号是一样的,那所以在这种情况下呢,就传了两个参数,这两个参数一个就是主教用户的电话号码,一个就是我们的时间,其实这个也不见得是主教,没准对焦也需要用呢,诶所以这就是个电话号码啊,但是呢,我们在这里呢,为了让它能够更加的均匀分布,我们这里呢,诶有一个叫做什么呢?U扣的,把那些有规律的东西都给它去掉啊,不要那些有规律的,就让它没有规律,所以我们这边啊,就涉及到一个什么转换的问题了,把电话号码的后四位给他拿到,你拿到了以后,那么这个时候我们用户的编码呢,是没有什么规律的,那么你把它拿到,还有一个就是我们当前的这个时间,这个时间你给他拿到,那拿到以后,2018年的十月份你就拿到了啊,这样的话也是可以的,拿到之后接下来呢,我们这边有个叫哈希扣的啊,哈希扣的得到它的两个哈希扣的值,接下来我们做了一个叫异货运算啊,异货运算呢,其实就是跟哈希差不多,就是给它。
07:48
打乱散裂啊,那这样的话呢,我们得到了一个值,这个值可能是个负数,所以呢,我们这里用到了一个ABS啊,给它变成绝对值啊,就是这样,接下来我们这里用的取模运算啊,按照我们的总共的分区数量呢,给它取个模,这样的话,保证我们的数据一定在它的某一个分区当中,这个号码咱们就有了,那当然了,我们这个比较简单了,你可以做的更加复杂一些,诶这都没有任何的问题啊,所以在当前的情况下,我们的数据呢,是已经什么呢?诶准备好了,分区号也都已经算出来了,那么有了分区号的话,那么这个时候在我们消费者这一边,我们的数据的封装就要考虑这个分区号,所以在我们程序当中啊,我们这边啊,咱们来找一下打开,打开以后我们现在的这个地方还在点,点完之后我们那个r key,诶我就需要给它准备好了,我们的r key,那么我们的r key,那么要把分区号给它加上,再加上一些别的字段,那我们说了这就涉及到一个r key的设计原则的问题那。
08:48
那所谓的设计原则呢?咱们有三大原则,第一个是长度原则,第二个是唯一性原则,第三个是散略原则,顺序不重要啊,顺顺序怎么说都行啊。那么我们的长度原则说的是它的大小的问题,不要太大,也不要太小,太小的话没有意义,为什么呢?不能快速查询,你太大的话会占用我的存储空间,会占用我的内存,那这样的话我的查询效率也会受到影响,所以我们最大能够64K,但是我们推荐长度是十到100个,而且最好是八的倍数,因为它是64位的机器,那么八的倍数会更加处理起来快一些啊。然后呢,能短则短,也就意味着不要太长,说是100个字节,但你要真存是吧,存成100的话,这样的资源也是比较大的啊,所以能短则短是什么意思呢?在满足业务需求的情况下,最短就行了啊,不要加那些额外的一些东西啊,所以啊,我们rookie如果太长的话会影响性能,一个是存储占用空间,第二个它会把一些数据呢,放在内存当中,你放到。
09:48
内存当中,你的r key也要占内存的,那你的r key越大,你占的内存越多,你能放的数据就越少啊,一定是这样,所以啊,我们这个长度的原则要考虑清楚啊,接下来呢,是唯一性原则,你要考虑我们rookie的唯一性啊,哪几个字段我放在一起是唯一的,要把这些字段给它加上啊,还有一个叫散列原则,散裂原则,其实就是为了让它均匀分布啊,不要让它有规律,那么散裂原则呢,有这么几个啊,第一个就是颜值散裂,增加随机数,增加颜值,这个咱们讲过,其实就是增加什么呢?诶一个我们的,嗯,跟调味品一样啊,给它增加随机数以后让它呢,没有规律,你没有规律的话,这样的话就可以均匀分布了啊,就这么个意思,所以我们也说了,最好不要加时间戳,你加时间戳的话,时间戳是有规律的,那你有规律的话,你不断增加时间,不断增加时间,那么数据总往最后一个分区里面放,性能是肯定不够高的,所以啊,如果你非得讲什么想加时间戳也可以,那么在时加时间戳的前面增加。
10:48
一些随机数啊,增加随机数的话,那么这样的话就会好一些啊,还有一个就是字符串的一个反转啊,反转你反转之后啊,我们说这样的话,我们的数据可能就没有规律了,比方说电话号码,你的电话号码呢,前几位都有规律,那这样的话,按照UK的排列顺序,有规律的数据就放在一起了,那这样的话,比方说北京的这个号段它多,那别的地方号段少,那你多的数据一起也会导致热点数据也不是很好,所以我们反转支付串以后,让那些没有规律的数据呢,放在前面也是可以的,时间戳前面有规律,后面可能就没什么规律,那这样的话反转我们的字符串也是可以的啊,所以这种字符串的反转呢,也是没有问题的啊,那说到字符串的反转的话,同学们想想用什么样的方法来实现它?
11:36
用什么样的方法来实现字符串的反转啊,就有是你我需要自己写一个反转呢,还是我们家务中就有这样的东西啊啊,咱们那个你build build里面是不是有啊,是不是啊,比如re吧,对不对,它就自动反转了,你只要把字符串放到这个视频build里面,你自动就什么反转了啊,所以都不需要自己写,当然自己写也可以是吧,但没有意义啊,嗯。
12:08
呃,下面呢,就是我们计算分区号了啊,你把分区号拿过来以后呢,相关的数据呢,放在我们同一一个分区当中啊,就跟我们这个有关系了,所以这就是我们R的一个设计原则啊,还有原则啊,那么这里呢,包括什么哈希算法呀,包括什么我们的抑货算法呀,包括什么CRC这种校验呢,这个呢要了解一下,最起码如果问你的话,你能说得出来啊,我们在项目当中我们是怎么用的,比方说我们就时间戳的什么反转的,电话号码的反转呢,还可以把它说一下,或者呢,你也可以什么呢?诶我们把它合在一块儿,比方说什么意思呢?我们有分区号,分区号的后面呢,是字符串反转的啊,它合在一块儿,这也都行啊,没有任何的问题,嗯,好了,那这个咱们说完以后呢,咱们昨天的这块的封装就算是完成了,但是同学们想想,我现在给你们介绍一个这样的业务,你们想想我们该怎么做,举个例子,还是这个电话号码啊,我们张三他在2018年的什么呢?三月份和八月份之间的电话号码,我想统计一下我该怎么做。
13:08
2018年三月份到八月份的之间的数据,我想统计一下,你之前咱们说了,咱们统计的结果很简单,是2018年十月份这一什么这一个月的统计,现在不是了,我想把一个范围,三月份到八月份之间的数据,我要统计一下,那这时候我该怎么做这个事情,就是这个八月份呢,就是这个也包含八月份啊,就包含三月份,包含八月份,三月份到八月份之间。我该怎么做这个事情,那就是是不是就扫描啊,是不是就扫描没错吧,那也就意味着我们现在如果数据库里面有个数据的话,我们是不是就干扫描啊,那扫描的话,这个范围我们应该怎么写呢?那我们比方说那个张三,电话号码就133吧,咱举个例子,133,那是不是我,我应该写201。八年的零三吧,对不对,然后到哪啊,是不是133,我们的2018,我们的零八呀,对不对,然后我加我得加这个东西吧,你家东西的话是不是比他小的就是都都动进来对不对啊,就这样只要以零八开头了吧,对吧,都能过得来,那这样的话,咱们数据能不能取到,能不能取到以后我们去统计行不行,可不可以啊。
14:22
做不到做不到,为什么,为什么做不到,就是因为咱们如果咱们这个扫描虽然肉去扫的,但咱们的肉是这个样子吗?不是这个样子,咱们前面是不是得加个叫分区号啊,对不对,你前面是不有个分区号啊那。诶,我们这么写,你这么写那么也没问题啊,对不对,可是你要记住,咱们是按照月份来做分区的,你能保证这个零八的它前面一定是零吗?他如果是个二呢。大家想想,他如果是个二呢,你这么写的话还对吗?不对了吧,为什么对不对,为什么呀,因为你不能保证他每个月份都在这个范围里面吧,有没有可能会出现这种情况,咱们比方说是什么呢?3133,然后呢,2018的零四有没有可能。
15:15
有可能吧,为什么呢?因为这个前面的分区号是不确定的吧,你不确定的情况下,如果按照这个规则来写的话,就导致这条数据根本就得不到吧,你得不到你怎么做统计呢,对不对,而且还有一个问题,咱们这么写看着其实也没什么问题,为什么呢?因为是零和二嘛,对不对,那万一巧了它是二呢,就这样是个二。那你就是个零,这是个零呢,你这么是问题就更大了,你可能一条数据都出不来了,对吗?为什么呢?又要满足比他大,要比他小,怎么可能出来呢?对不对啊,如果你是个零,是个二,最起码有的数据能出来,但你要如果是现在我现在这种情况的话,我们就不确定嘛,那不确定情况下可能是这种情况啊,那么这种情况下的话,你一条数据都出不来,那统计结果它怎么可能对呢?所以啊,如果没有前面的这个分区号的问题的话,我们这么写问题不大,那当然有分区号的话,你这么写就不对了,那我们该怎么办?同学们想想,那我们该怎么做,把把前面两个切掉,那还叫肉查询吗?我们的目的不就为了根据肉key查询对不对?那你根据肉key查询,你把肉的其中一部分给我去了,对不对,那这样的话就麻烦了啊,就麻烦了啊,所以那我们该怎么做呢?这个时候啊,我们就得换一种思路来做了,这么做就不太对了。
16:36
其实咱们换一个什么思路来做呢?我既然说了从我们的三月份到八月份,那我能不能这么做呢,叫345678呢。什么意思,因为你345678,你这么多个月份的数据没有放在一个分区里面,对不对,所以呢,我能怎么做啊,我做法就是分月查询。
17:00
什么叫分页查询,大家想想,那是不是,比方说我这是二,我133,然后2018的零三,然后呢,我们干嘛呢,写上我们的2133,我们2018的零三,我这么写,你这样子写完以后呢,那我下面这个地方应该就是什么呢?比方说一我不确定啊,我随便写一个,比方说这个是四吧,是不是这样的,哎,这写它,然后呢,同样道理,那我是不是应该再来一个,这边可能就是五了吧,哎,这就是五吧,那这个五的话可能是什么呢?可能是五,有没有可能是这样,那你想想我这么来去写的话,每个月的数据肯定是能得到的,对吧?诶那这样的话呢,我们说只要在一个分区是统一的数据能拿到,那这个呢,我们的数据呢,也在一个分区里面也能拿到,那这个数据也能拿到,那这样的话,345678的话,你只要分着查是不就可以了,所以把那个大肉和那个肉呢给他分开,不要用一个,用一个的话是有问题的,恰恰就。
18:00
跟那个分区有关系,所以在这种情况下呀,我们的查询呢,还需要考虑一下,所以我现在呢,把程序咱们写上啊,来我在咱们那个base store当中啊,来我们点一下,点一下以后我准备再封装一个啊封装一些我们常用的方法,嗯,这个呢,就跟我们的这个分区号码有关系了,所以呢,我这里写上啊,咱们叫做protected,那干嘛呢?我要获取一个叫list,要获取集合,什么集合呢?就是那个stop和的一个什么封装的一个集合会有多个,所以我写上一个叫做什么呢?String的一个数组。啊,然后呢,我写上叫get,叫获取,获取那个叫start,咱们叫stop啊,我们的rook key啊来S哎,就这样写好了,写完以后在这里呢,我们首先给它来啊,写上叫获取啊,我们查询时,查询时的那个start row啊和我们的那个stop肉的一个stop肉啊的一个集合记录,它不是一个啊,它不是一个,好了,那我这么写完以后,那我这里需不需要传参数呢?
19:11
需不需要传参数啊,首先你要计算分区号的话,你分区号你要是不是应该有那个电话号码之类的啊,所以我首先是不是应该是什么东西啊,是不是我的啊对不对,电话号码你得有啊,对不对,还有一个就是那个范围吧,那个范围呢,就是那个叫start,还有什么东西呢,叫end。啊,一个开始一个结束,比方说三月到八月份,诶把这个范围你先告诉我,我们这里就不考虑谁大谁小的问题了啊,就是我们就传正确的,你要说啊这个他们它比它大之类的是吧,这个咱就不考虑了,这样我们就认为你小它大,那这样的话是个范围,有了范围咱们往下做,那首先第一个你先把返回的结果先准备好,所以呢,在我们这里来,我们写上咱们就叫rookie啊,咱们就叫rookie,我加个S啊然后呢,在这里我我加两个S吧,啊表示多的意思啊,然后呢,接下来我们这里写上new,我们的list,嗯,咱们的r list啊好了,写完之后,那你直接返回呗,诶直接我们return,诶把这个呢给它放过去啊好了。
20:14
写完之后,那我接下来我该干什么呀。我接下来我是不是应该计算他的那个时间了,比方说你是三月份还是四月份还是五月份吧,对不对,所以我要把这个start呢给他拿到啊,拿到拿到以后,那么我们首先这里肯定也是一样的,来,我们写上咱们叫,因为我不知道你传的到底是什么,可能有年月日十分秒,可能比较全,所以我这里呢还要给它截取一下,所以呢,我们写上叫做start啊,我们的tap等于start,嗯,点我们这边sub string,然后呢,零到六啊,你穿的多也没事啊,只要别少于六个就可以了啊,然后呢,把这个呢,我们拿过来,把这个呢,我们写上角NT,嗯,好,然后呢,这边我们写是六啊好了,把这个N我们拿过来,OK,拿过来以后,那接下来我这个写上啊,Time,嗯,那我们接下来该该干嘛了,我是不是应该得到它的那个分区号啊,对不对,但那个分区号就在这儿嘛,所以我在这里呢,直接来我写上啊,咱们来咱们叫region number,它等于这个啊,然后呢。
21:19
点我们叫做什么呢?Tell,那么这个tell的话,把那个叫start time给它放进去,放进去以后那这个read number我们就知道了,好问问同学们,现在它的那个开始和结束应该是什么样子的,是不是应该是一个我们的start,我们的诶,咱们叫啊,对不对,它等于什么东西啊。它等于什么,咱们刚才说过了,如果是三月份的话,应该什么样子呢?三月份的话是不是应该是一下划线,我们的133电话号码,再加上2018的零三呢?然后再来一个是不是一下划线,1332018的零三的什么这个东西吧,应该是加个竖线吧,那所以我们的start肉恰恰是他吧,他应该是怎么拼,是不是我的reason,我们应该干嘛加上我们的下划线对不对,加上我们的下划线,再加上我们的电话号码,把这个电话号码给它加上,然后再来再加上我们的下划线,下划线当中应该把那个时间就是这个他吧加上啊,所以来给它加上,加上了以后你逛个开始还不行,它应该有什么东西啊,它应该有个结束啊,所以来我们写上一个叫做什么呢?Stop RO,嗯,好,那么stop肉你会发现跟这个star是不是类似呀,只不过后面加了这个东西吧,所以啊,就把它拿过来啊,拿过来,然后呢,放到这边,然后呢,给它写个价,给它这个竖线,嗯。
22:40
诶就行了,那你这么写完了以后,那我现在的这个地方,同学们想想,那我现在是不是给它封装到里面就行了啊,所以我们这里来,我们写上它点我们给它来啊,然后呢,我们这边加上那我这里呢,就是一个我们的star肉,然后呢,这里再拉一个我们的stop roll,嗯,给它放过去啊,放过去以后,那我这里呢,还不太对啊,来我们直接写吧,嗯,咱们叫做r key s啊,咱们叫r key s啊,等于把这个呢给它挪出去啊,嗯。
23:11
然后呢,把这个肉呢给它放进来,嗯,好了,那我这么放进去以后,我一返回是不就可以了,可不可以啊可以吧,对不对,但是可以是可以,但是你只有一个月份的数据。那我怎么能够让他有多个月份的数据呢?345678我应该都有吧,对不对,那我这个该怎么做。也就我现在写循环,怎么写循环。怎么写循环?那你是不得知道你当年月份呢,对不对,那你当年月份,然后呢,你还得什么呢,一个一个加吧,什么意思啊,345678对不对,还有一个问题,什么问题呢?万一我想取的是2018年的11月份到2019年的三月份呢。
24:00
我我这么取行不行也可以吧,对不对,因为反正是个时间嘛,只要我的这个时间结束比他大不就可以了啊,只要他比他时间大,这个就满足我的要求啊,2018年的十月份到2019年的三月份之间的电话号那个通讯信息啊,我想查到那不也可以吗?那这个时候你怎么做啊同学们。也就意味着你要是所谓的我们那种什么后循环来计算他们加一加一这种还行吗?不太合适了,对不对啊,当然也可以啊,就有点麻烦,是不是判断是不是12之类的对不对啊,然后再去什么呢?百年的加一,那就有点麻烦了,所以啊,咱们这里换一种做法,怎么换种做法呢?来咱们这么做。就首先呢,咱们这个地方呢,干嘛呢,把它转换成什么呢,把它转换成我们的日历。把它转换成日历啊,转换成我们的这个日历啊,就是它啊,咱们写一个叫做什么呢?叫start啊,我们的这个它等于什么呢?来咱们写上,嗯,咱们叫做它点,我们叫get instance。
25:06
啊,就这东西,然后呢,你这个有了以后呢,干嘛呢,我们写上叫site,它有个叫做什么呢?Time。啊,这个我们的time啊,那么这个time要把这个放前面去啊,把这个放前面去,放前面啊来好了,你放前面去以后,这个time呢,要把时间给它设定上,这个不就恰恰有吗?对不对,那有的情况下,我要把这个字符串给它格式化成我们的什么格式成我们的这个时间date吧,那我们之前好像恰恰有个工具类吧,叫做date u,这个里面有一个是什么呢?有一个叫做pass吧,这个pass是不是把一个字符串变成一个date啊,那所以呢,咱们就可以用它了啊,所以来咱们拷贝,拷贝以后我放过来,我们点我们有个叫pass啊,就是它了,那你的这个pass同学们看啊,我这么写完以后,我就要把这个start,诶我放过来,放过来以后,那么我们的格式是什么样子的,咱们这个格式是不是就是这个东西啊,是不是啊,我们只有年和月嘛,没有别的嘛,对不对,咱也不用考虑别的,所以这个呢,我们可以把这个加上啊,加上你加上了以。
26:13
那我再来一个咱们拷贝啊,咱们再来一个,因为除了我们的这个开始以外,还有个结束呢,所以呢,这边写上一个我们叫做end啊,一个结束,OK,然后呢,把这个呢,我们放过来,放过来以后呢,应该是我们的end time,诶好了,那这个时候呢,我们的end啊放到这里,嗯,OK,那我现在写完以后,两个日历的时间我们有了,那我们该如何来做呢?记住这个时候我们应该加个判断,叫做well,我加个判断,这个判断是什么呢?是我们的这个它咱们点点点什么呢?我们叫做点,叫get,我们的time in minutes。啊,它如果小于等于我们的这个N的,它咱们来点get碳我们的这个东西啊,它这个判断,这个循环的判断,同学们想想什么意思,如果你的这个时间比他小的情况下,咱们才做咱们的逻辑操作对吗?哎,所以这里做咱们的逻辑操作,这个逻辑操作不就是我们的这个吗?所以把这个咱们就拿过来,把刚才的这个逻辑操作就放这里就可以了啊好放这里以后,那么首先这个tell没有任何的问题,那这个是不是就不对了,为什么呢?因为这个是变化的对吗?你终点你点是不变的对吗?那么你这个是不是变化的,你这个是变化的,所以在这种情况下,同学们看啊,我就写上咱们叫什么呢?咱们叫做nor nor time就是当前啊,我就别考虑开始和结束了,就是当前,你当前的这个是哪来的,这个是不是就是它呀,诶所以呢,我们这里写。
27:53
咱们叫做,然后呢,我们点咱们这里有个叫form,这个form的呢,恰恰可以把他的时间拿过来,点我们的get time,然后呢,格式化也格式上化成我们这个东西啊,所以给它放过来。
28:09
好了,放过来以后,那这个就是当前时间啊,我们写上叫当前时间,我说当前时间说的不是说我开始和结束,而是你循环当前的那个月份啊,就是它了,好了,然后呢,它有的话,那么你的这个region number就是根据它来计算出来的,同样道理,我的这个no time应该也是放在了我的这个位置啊,那么有了它以后,这个stop肉就有了,然后呢,这个rook key,这个宿主呢就有了,有了宿主之后,那么这样的话放到集合当中就可以了,好了,那你放完以后,你当前的月份已经处理完了,你该怎么办?你是不是应该让月份加一呀,你再往下个月份对不对?记住我这里为什么用的是日历呢?我就不考虑年的问题了,那不考虑年的问题了,为什么呢?我只要加一的话,如果是跨年了,它会自动加,所以在这种情况下,我们这里呢,就写上啊来我们叫月份加一啊来咱们叫月份,嗯。
29:07
月份加一,哎就这个意思,那这种情况下我们就应该干嘛呢?叫做start,就是它这个就不是固定的了,所以我们点它有个方法,这个方法呢叫做ADD啊,这个ADD当中我要对月份加一,那么月份应该在我这个位置点有一个叫做month啊,咱们这个东西咱们称之为啊来比二我们的month,诶就是它了,然后呢,给它加上一个一啊就可以了,表示的是当前的这个时间,月份加一,你这么写完以后,大家想想是不是又该走V循环了,V循环以后又该判断你当前的这个时间和我们的结束时间是不是相等了,诶就是这样,那不相等的情况下,你月份加一了,OK,那是不是就走进去了,走进去以后,那么这个时间是不是就等于月份加一了,诶,比方说刚才三月份你加了个一是四月份,那么这边不就四月份的数据了嘛,然后呢,再去增加,再去增加数据就能够出来啊,所以啊,我们用这种方式来做,那么把日历类呢,咱们也可以看一看是吧?跟。
30:08
之间相关的啊好了,那这个呢,我们现在写完了,写完了以后呢,咱们再来测试一下,看看对还是不对啊,所以呢,我同样在这里呢,我们增加一个我们的main方法,嗯,好了,把这个呢,我加上一个我们的static啊给拿过来,拿过来以后现在呢,我们就直接放过来啊,放过来以后,然后呢,我这边传参数随便传,反正就想看一看嘛,所以我写直接写个133啊,然后呢,这个时间呢,我就写2018年的零三啊,然后写上一个二零啊2018年的零八,诶我就这么写,写完以后它里面是个集合对吗?所以呢,我这边点我们的负循环后,循环以后每一个数组呢就有了,那这里呢,我就可以打印了啊,打印打印以后呢,我们写上啊,咱们叫做string s,因为我们明确知道就是两个嘛,所以我就写上一个加啊,它等于或比较等于了一个波浪线,再加上我们的string s,然后呢,写上一个一,我就看一看我当前执行的结果满不满足我的要。
31:08
求咱们首先先分析一下,如果现在我们成功的话,打印的结果应该是什么样子的。就是我们后面什么样子,咱咱们的分区号不确定吗?分区号不确定,那么打印的结果应该什么样子呀,是不是应该是133_201803,然后写个波浪线133,我们下划线201803的竖线呢,对不对,我我刚才说过了,我们前面那个分区号先不考虑啊,因为它自动生成的多少我也不知道,所以呢,我们的规则是不是应该就这个样子,对吧?应该就这个样子,那这个地方应该是我们的456是吧?这个是七,这个是我们的八啊,应该就这个样子啊,然后呢,这边我们四啊,然后呢五,然后六,然后呢七,然后呢八大概呢,应该就是这个样子啊好了,那现在呢,我们做完之后呢,接下来呢,我们就来看一个啊来咱们运行一下,嗯,来我们现在呢,就来运行看看效果呢,跟我们刚才说的呢,是不是差不多啊。
32:06
哦,这个地方看看啊,咱们这里啊,我们这个地方啊,还有点麻烦啊,这还得再加一个啊,不用你了是吧,一会全删就完了啊好,那我现在呢再来啊,把它再点一下运行。运行之后看结果啊哦,我们这里出错了,他说了我们的153行的这个位置是哦,咱们电话号码太太短了是吧?啊太短了啊,咱们这里呢,给它多一点啊,咱们多一点啊嗯。哎,他是多少位,我们11位,他是哦,他觉啊看看三多了一位是吧,多了一位啊好了,嗯,行啊,咱们这里呢,来运行一下,嗯。咱们看看别咱们别的不用看啊,别的不用看这个,咱们前面分析号是不用看吧,咱们重点是不是看这个他呀,345678 345678是不都加上了,哎,所以啊这个就对了,也就是意味着你查询的时候要按照这个开始和结束的数据呢去查,否则呢,就会出现错误啊好了,咱们把这个呢就删掉了啊,我们的结果正确了,到时候你如果你有这样的业务的话,就可以把这个功能呢,直接就给它用起来了啊,所以把这个呢,我们就去掉,嗯。
33:20
啊。
我来说两句