00:00
好了,同学们,这节课给大家来讲解一下jackins的。com表达式,Jackins的表达式啊,它比较特殊啊,如果你之前在项目里边用过com表达式的话,应该了解这是拿五个或者六个型号来表示的这个时间范围或者区间,或者具体的某一个时间,那么在jackins的空表达式里边呢,它只有五个型号啊,它不支持第六个星号,那首先这几个星号都是干啥的?我们先看一下标准的空表达式。这有一个,呃,国外的这么一个站点,我们看一下。这个是个抗表达式的模拟器啊,在这个模拟器里边呢,我们能够让它,呃,我们输入这个表达式之后来给我们出来这个效果,我们先把它恢复成初始值,大家看这啊,现在这是123455个星号,那我们要做定时任务的话呢,就从这五个星号上呃去做这个修改,然第一个星号呢,它代表是呃分钟啊,第二个是小时,第三个是day啊,这个哪一天,第四个是月,第五个是一个礼拜当中的第几天,那么详细给大家解释一下,这这个a minute,这个分钟指的是在一个小时之内的第几分钟,那么它的取值范围应该是零到59,哎,大家看这啊,零到59。
01:22
啊,第零如果填零的话,就是整点,比如说我们下午四点啊,这就是整点,我们填零,59呢,就是在第五十九五,第59分钟这个空表达是不支持秒级的单位,比如说想在第59分钟,第20秒这个是不支持的,它只有一个模糊的范围,这是在分钟,那么我们想要在第五分钟。让他去呃,执行任务的话,由于我们后边所有都没有配置,比如在星号表示的就是任意的啊,这个或者是要所有的就是在每一个小时的每一这这这么看啊,每一个月的每一天的每一个小时的第五分钟都会帮我们去构建,在这儿呢,我们能看到你看at minute5,然后这有next,你看我们现在是7月28号9.05,然后10.05 11.05是第每个小时的第五分钟,并不是每隔五分钟,它是详细到。
02:24
我们具体的小时就是后边的条件,然后具体的呃,第几分钟开始。那么在这个表达式的基础之上,如果你能理解的话啊,那么接下来我们再研究一下,稍微的呃深入一点,我们现在呢,是在每个小时的第五分钟让他去呃触发执行,那么我们想要在一个小时,每个小时的每隔五分钟,比如现在呃,9.05,然后09:10 09:15,然后在十点的时候呢,啊,十点十点零五,10:10,每隔五分钟呢去执行一次,那么在这呢,可以这么写,前面加一个星号,然后加一个除号啊或者叫反斜线,这样就是在我当前的。
03:09
任意的,呃这个呃分钟里边后边呢,不进每五分钟去执行一次,星号代表任意啊,就是任意所有的这个分钟里边每隔五分钟执行一次,大么在这儿看,这就是7月28号的08:45 08:5515 9.9.05啊,他说时间变了对吧,然后九点零五九点十分。啊,这是每隔五分钟可以让他去执行一次,那如果你记住这个的话,那么后边的呢,它也就不难了,在这儿呢,你可以稍微的加加强一下,深入一下理解在这儿。这一步一旦我要记住了,后边呢啊,我们再看啊,第二个,第二个就是小时啊。小时,我们现在是没有限制,所以是在每一个小时,那如果我们现在平时工作对吧,希望让他在呃,凌晨的时候,比如凌晨两点开始构建,那在这二。
04:05
这就是每天的,因为前边我们没有这个呃限制对吧,这具体哪一天没限制,只是在小时上限制了,这个的取值范围呢,是零到23,零就是零点,23就是23点,晚上的11点,23点之后的24点就是零点。啊,在两点的时候,每隔五分钟构建一次。它在三点的时候,它就不再构建了,可以在这儿呢,我们给它搞得稍微长一点,就是每隔30分钟构建一次,从两点开始啊,每隔30分钟构建一次,你看两点两点半,那这会儿就两点半之后是不是就三点了,三点就不在这个两点的范围内了,所以他到了7月30号,7月30号的两点,7月30号的两点半。这个大家能理解吗?对吧,因为前面如果要理解,后边呢就好理解一些了,这是具体哪个小时啊,如果是星的话呢,就是任意的小时啊,如果想要每隔几个小时,比如说。
05:04
每隔两小时让他来一次。哎,在这儿星号除以二啊,这就不叫除以二,斜斜杠二就是每隔两个小时来一次,大家看7月28号的。啊,这个22点就是十点钟啊来一次,十点半来一次啊,因为每隔两小时的啊,每半个小时对吧?啊这是第一个第一第一个这个起始时间,然后隔了半个小时来了一次,然后需要再隔两个小时,所以到了零点,然后零点执行完之后呢,执行完两次之后呢,到两点又开始执行了。啊,然后这个D啊,它取值范围是一到31,我们每个月最多有31天啊,这个用法和前面呢,也是基本一样的,然后这个month月啊,我们一到这个12月啊,我们第几月让他去执行,比如说我们讲12月呢,我们放寒假,然后呢,六七月份呢放暑假,对吧,那我们就可以排除这几个月份。
06:07
啊,那么这会儿我如这会儿我如果想要把这个暑假日期给它给呃略过的话,我应该怎么写呢?在这还可以取范围,比如说一到六,这表示的就是第这个一月到六月啊,当然前面这个我们把它呃稍微的改一改,呃这是。两点啊,一到六月份的。呃,其中的一号的两点,你看1月1号的两点两点半对吧,2月1号的两点两点半,那么这个一到六一到六月,呃一月,那么这如果改一下,你看一一月份二月份,比如五月,五月份到六月份,那么一月份二月份呢,就给排除掉了,如果去掉寒暑假,比如一到六月份,然后呃。嗯,从十月份吧,多放几个月,从十月份到12月份。
07:03
我举个例子啊,加个逗号,从十月份到12月份。啊,这是两个范围,一到六月份开会执行,十到12月也会执行,不在这两个月份的范围内呢,它就不执行。这是范围取值,然后还有这个,最后这个呃,立在。一周之内的第几天,这特别适用于我们在呃,这个定时的时候,然后排开这个工作日和休息日,比如我们在这儿呢,可以定义一下,嗯,周一到周六,因为我们都是996嘛,对吧,比如周一。到周六的时候执行,周日呢,就不要再执行了啊,就每个每个这个。每个月的第。每个月里边这个周一到周六啊,周日不执行啊,就是这么个意思,这个网站呢,比较有意思,就是在这上面它会有解释,你看我点到这儿之后呢,在上面会高亮,就是弯。
08:05
啊,对,不是when on everyday day of week from Monday,呃。啊。就是从周一到周六啊,这个周日呃和这个呃,这这就周日啊,不在我们的这个时间范围内,我们在这儿呢,填七和零都表示周日,比如说零啊周日到周六。啊,这是三对吧,然后如果填七。啊,七到六不行啊,得六到七是吧。六到七,那要是七到六的话,就是一到六对吧,周日那起始起始这个起始的时间是起始的时间是周一,对吧?啊就是六到七啊,周六到周日和周六到,嗯,这个这个这这个零,这个零和这个七其实是表示的是一个这个这这这这这个这个日期啊,都是这个周日,那么这是最基本的呃口表达式,那么刚才说了我们的这个。
09:07
呃,Jackins的CH表达式并不是标准的框表达式,它在这里边呢,多了这么一个东西叫H,现在这个阵点呢,它是不支持这种H范围取值的啊,H是啥意思呢?H指的是哈希散列,我给大家举一个例子啊,在这。比如说我们现在呢。呃,去定义这个时间,我们现在有这么五个星号。啊,这五个星号里边呢,表这个每一个星号都表示的一个日期,刚才我们给大家来讲的对吧,在这个H的这个范围取值,它是可以用在每一个我们的这个星号的取值上的,H的取值呢,表示一个哈希散列取一个尾的随机值。它所取的值,它它所取的值主要是依托于我们的这个job name。
10:01
Job name就是我们创建的这个项目名称,现在这个项目名称呢叫first啊,学这个用过哈希的这个同学应该知道,相同的值取出来的值它也是一样的,经过哈希去取值图,用这个job name去取一个值,就能取出来一个尾的一个随机数,其实就是一个固定的哈希值。这个哈气值呢,需要和我们真正所填入的这个时间呢去做运算,比如我在这儿。啊,取了一个H斜杠啊十,如果要是星号斜杠十,这表示每隔十分钟对吧,如果要是H斜杠十的话。就会把这个十十分钟呢,和我们这个哈希值做一次相加,这个哈希值啊,它取出来之后呢,会取一个最小值,让它这个范围呢,并不会偏差的特别大,这个哈希值加十之后呢,所等于的这个绝对值。
11:01
这绝对时间的这个值,这个值才是真正的运行时间。啊,那么我们这么做他的目的是啥?那么如果要是写了这么一个表达式,比如说H啊,不是这个星号斜杠十,那么我这个任务啊,它会在呃,我们系统时间的第十分钟去启动,那如果有相同的任务,有很多都是在第十分钟。去启动的。那么这会儿同时并发去需要执行的任务呢,就比较多了,在这取一个H啊,加一个这个尾的随机数,尾的随机时间,就可以让我们这些相同的这个空的这个配置的这个任务啊,让他能够错开时间来执行啊,这样就避免掉了这个峰值的这个呃,这个这个时间这种这这这种这种比较高的这种并发任务的这种出现了,在这个。嗯,配置页面里边我们呢,也能看到他给我们的提示,我们看一下,比如我们现在呢,填了六个芯,这表示呢,任意分钟的,任意分钟,任意小时,任意的呃天,任意的月,然后任意每任意的这个周几,那么任意每分钟,这表示就是每一个每一分钟都会去触发,那我们先试一下啊,你看我们保存一下。
12:25
来我们看看我们当前的这个任务列表,稍微等一等,我们因为我们填的是星号嘛,第一个在分钟上呢,每一分钟呢,都会给我们去这个这个触发啊,任意的一分钟。如果那填二的话呢,就是具体的这个第几分钟了啊。来稍微等这么一分钟,我们看这这个任务列表。在这儿。啊,再稍微我们稍微等这么几十秒,我我们现在配置好了这个定时任务之后呢,你看它会每隔一分钟会启它这个这个它会启动一次,启动一次这个这这个构建对吧,这是自动启动的,那我们再等一会儿,它一分钟之后,现在是。
13:12
呃,08:55对吧,那在到08:56的时候,它还会再启动构建一次。来,我们再稍微等一等,再等这么几十秒。嗯,应该差不多了啊,就是每分钟构建一次嘛,如果我们想要每隔几秒钟构建一次的话,这个框表达式它是不支持的啊。应该快了,再等几秒钟。哎,大家看啊,差不多吧,每每隔一分钟会构建一次,那么想停止这构建的,直接点这叉给它停止一下就行了,然后我们把这个构建的这个时间呢,先给它给改了。
14:07
把这个先给勾先给去掉,避免他咱们讲课的时候,他在这儿玩命的去做构建每分钟嘛,对吧,这每分钟构建这肯定是不合理的。嗯,构建触发器在这儿这儿,那咱们再接着讲,呃,刚才呢,我们给大家举例子讲了这个最基本的这个构建对吧,那么H这个概念呢,呃,大致就是它会取一个随机的这么一个,呃,这个这个哈奇值嘛,对吧,它会以项目名称去取一个哈希值,你看我们在这填了星号,星号五个星号。之后它会提示我们,你输入这个东西的意思是每分钟都要来一次吗?对吧,这个其实是有点儿太频繁了,比较浪费我们的资源。也许你希望H。啊,加1H,然后每小时来一次,每小时去轮巡对吧?啊,其实每小时去轮询去构建一次呢,就已经算是比较这个呃频繁的了,你看啊,在这下边它还有具体的例子,比如说我们这个last half run就是最后一次run,如果要是在7月28号的08:32:55构建的话呢。
15:18
那么下一次转呢啊,还是32分55秒,这个他不准确啊,这个不准确,大多数呢,他他还是能够给我们一些建议的啊,如果填这个它是应该是呃,每分钟都来一次,这应该是30,这不是30,呃,最后一次是32,下一次应该是33,对吧,这个是不准确的。啊,那么如果用H来参与的话,你看加一个H。H呢,就会取随机数了啊八这个是啊,下午08:33,呃,零一秒,这很这这个也不这这个也不准确啊,在这儿我们填的这个H也好,还有这个星号也好,大家可以看到在这个他所提示的这个呃时间里边呢,其实它是不准确的,那其他的呢倒还好,那么这个H啊,它还可以取范围的值啊。
16:10
啊,这个H取范围的值怎么取呢?我们先写一个大H,在这加一括号,比如说第一到30。这个的意思是我给大家记一下啊,这个的意思是。从第一分钟到第30分钟当中去取一个随机的这个时间出来,然后每次都是这么,比如说他取出来是20,也就是呃,每个小时的第20分钟啊,他会给我们去运行任务,那么在下一小时还是这个时间,你看这个就比较准了,它是比如08:04,这是一到30之间取出来的值,它取出来了一个,呃,四分钟,那么下次呢,还是这个四分钟,就是这个八点。的第四分钟,然后下一次运行的是九点的第四这个第四分钟。
17:00
啊,这是每个小时的第几分钟,那么你看啊,我们如果20~30。他会他就会我们取出来在20~30之间的这么一个时间啊,八点啊,这个08:20,然后下一个还是08:20,对吧,比如25~30分钟。啊28它并不是25,也不是30是区间范围啊,这个用了H之后呢,就能避免掉这个啊,这个这个这个并发的去执行啊,然后再有就是这个加加这个斜线。呢,后边还可以再加斜线,加一个斜线表示的是,呃,每隔多长时间啊,刚才我们这个是。每这个这个每个小,每个固定每小时的第几分钟,那么想每间隔15分钟。去执行一次,那么就可以用H,然后间隔15分钟,大家看H斜斜杠15这个表示的是,你看08:33啊,这个7月28号没问题啊,08:33,然后08:48,这是不是间隔了15分钟。
18:09
对吧,但是起止时间不是这个这个起,这个起始的时间是经过哈希运算的,如果要是星号。这里边儿就没有哈希运算的这个参与了,就没有随机数的参与了,你看如果要是星号的话。他会在08:30的时候,就具体的这个一个时间啊,然后开始,然后每隔15分钟来一次。啊啊,或者是这个,比如说嗯。零点啊,这个这个零点刚开始就是这那个今天凌晨的零点刚开始会执行一次,然后呃,零点12:15执行一次,12:30执行一次,如果换成了H呢。他起的一个这这个时间就不是这个零点了,有可能是三,有可能是六,但是每一次去取这个值的时候,它是它都是一样的,因为哈奇算法输入值是一样,那么最后取出来的值它也是一样的啊呃,就是根根据这个我们的job name取出来的。
19:12
这是H的用法,那么用了型号之后呢,你看这系统它会提示我们叫分散负载,应应该用什么叫分散负载,所谓的分散负载就是我刚才说的不应该在同一时间内,呃,拉起呃特别多的任务,因为我具体到这个15分钟了,这个就特别容易让别的这个啊job吧,也在这第15分钟内,呃,这这第15分钟呢,它也启动了啊。这是H的意思和这个斜这个斜线的意思,斜线是呃,在当前的这个时间范围内,每隔多长时间,这个是可以用在我们任意的呃时间范围的,比如说现在是用在分钟上,也可以用在小时上啊,比如说我每隔两个小时来一次。啊,在这儿斜线除以二。啊,然后每隔几天来一次,然后斜线除以三,每隔三天来一次,是这个意思。
20:06
啊,当然这种写法呢,呃,你写过一两次之后,也就差不多也就比较熟悉了,那咱们再看。现在是呃,最基本的这个这个这个时间对吧?啊,每每分钟轮,那么我给大家写一些稍微复杂一点的例子啊,让加下这个印象啊,首先呢,我们先写这么写,我先这么写H,然后后边加所有的星号,这个所表示的是给大家记,给大家记一下啊。H加所有的星号,这个所表示的是在任意周,任意月,任意的每一天的其中的任意的一个时间,啊,这是任意时间。任意时间里边的这个任意分钟,任意小时不叫任意啊,每个。
21:01
呃,小时的具体。这个这个时间,那这个具体时间呢,是H,这个H就代表了。我们零到60啊,这个这个这个分钟之间取随机值。就零到60分钟之间的一个随机值,也不是随机值啊,就哈希值。这个H的值哈奇值,那么这次取出来是15,下次还是15啊,这是H的这种最基本的用法,那它主要表示的就是在一小时之内的,呃,可能任意出来的这么一个时间,这个可能的时间呢,比如说有有可能是45分钟啊,就每个小时的第45分钟,然后他去执行一次,那第一次如果出来这个值是45,那么下次他还是45啊,这是H后边全都跟型号,那么再再来一个。
22:00
这个,呃,我们这么来,比如说星号。啊,然后斜线十。这个表示的是每隔十分钟。他他会执行一次。啊,那么再来一个稍微复杂一点的。H。斜这个这个斜杠十,这表示有可能,呃,是这个这个这个。第三分钟有可能是第五分钟,然后每次步进是十分钟,间隔十分钟执行一次就起始时间。这个取哈奇值就是不固定。然后不长固定。十分钟。啊,然后执行一次。这起始时间啊,是也是根据我们那个呃,Job name取出来的啊,然后起始时间呢,有可能是第三分钟开始,然后下一次呢,就有可能是这样的,有可能是比如说第呃三分钟执行了一次,那么下一次呢,是第13分钟执次,这执行再下一次是二分啊不长的都是十啊,然后但是它这个起止时间,它肯定不是这个从零点开始啊,第一这这个第零分钟开始啊呃,那么通常呢,我们在真正去构建项目的时候呢,啊,一般的也就是在凌晨让他去构建一次,那么这会儿呢,我们可以这么写。
23:37
啊,比如说啊这呢,我们可以写一个这个呃,H,然后括号。啊,一到30。然后后边跟一个星啊,这是第,就前面这个H1~30,这是第一分钟到第30分钟之内取一个值,然后在后边的根,我们凌晨两点。
24:02
开始去执行,然后再后边呢,周一到周六的凌晨两点。呃,两点多少呢?02:01或者是02:08,或者是02:30,这里边取一个固定的值出来。啊,在这个范围之内取出来一个值,然后然后让他去这个执行一次任务,这是执行一次。这是周一。智。周六。然后每天两点凌晨。两点。零点多少呢,零点啊,这个一到30。分钟之内取一个,取哈希值。然后执行一次,那么这个呢,比较可能对吧,比如说可能每天的。凌晨02:45。
25:04
啊,这这是不可能的,对吧,00:25对吧,或者零点00:18啊,反而在一到30之间啊,第一次执行出来,比如说是00:25,那么明天还是这个02:25,这取每次取这个值,只要是我们的job name没变,那么它都会是固定的这么一个时间啊。那么这个如果我们觉得这个构建的还不够的话,那么可以在我们这个具体的时间小时这块呢,还可以再加范围,比如说两点到五点。这个范围内啊,不是一个具体的值了,就是两点到五点之间,每个小时来一次。到五点之间,每个小时啊一次。这两点到五点之间,每小时一次,就2.1次,3.1次,4.1次,5.1次啊,包括五点啊二到五之间。
26:01
啊。呃,然后我们还可以再给它复杂一点,这样。两点到五点,比如说两点到六点,呃,零点到六点,然后斜杠。二这个表示在凌晨的,呃,这个这个开始每隔两小时执行一次,然后时间范围是零点到六点啊,那么这个就有可能是啊,12.1次,然后啊,这个两两点一次,4.1次,6.1次啊一共执行三次,这是每隔。每隔两小时。执行一次。啊呃,学到这儿的话呢,呃,如果你把前面这些呢都能理解,那基本上也能呃配出来我们最期望的这个这这这个时间范围了啊给大家总结一下这个ins的框表达式啊,它稍微复杂那么一点点啊,如果把之前这个框表达式你能玩明白的话,那么它最大的区别就是。
27:09
这个多了一个H,比如说这是你看,比如你这个学完了这个表达式,我们看一下这个表达式,它它代表了啥?这是五点,这是凌晨啊,不是这是第五分钟,这是凌晨对吧,0.0.05啊,就是这个12.05,不不不是12.0晨的第五分钟,然后每个。呃,这是这是每天的凌晨五点,呃,不不不是五点凌晨的这个第五分钟,零点的第五分钟,然后去执行,然后这是每月的八号,对吧,这其他就不限制,然后再re一下,我们再解这个这个解读一下,这是嗯。这么看每个月的啊,第一第一天每个月的一号啊,然后他的这个下午02:14点14:15,然后去执行一次。
28:05
啊,然后再来,你看周一到周五,然后呃,每天的22点整,然后执行一次啊,周一到周五,然后再看。啊,这个这是零到,呃,这个20点斜杠二是每间隔呃两个小时,这是小时hour,零的20点,每间隔两个小时执行一次,在啊比如00:23 1.2322.23间隔两个小时呢,就是00:23执行一次,然后呃一点02:23执行一次,04:23,然后06:23执行一次啊呃,希望同学们把这个框表达式呢,呃抽时间稍微的消化消化,因为这个不只是在我们的jacks的定时任务里边,可能会用到有很多的其他的技术框架,也都用了这个框表达式来做这个时间和定时的这种解析。总之呢,大家记住一点,它对比就ins的框表达式对比这个啊,我们的这个普通标准的框表达式呢,就多了一个H,那么在这记的时候,除了记这个分钟小时,呃,天,这个月,还有这个一周里边的第几天之外呢,还需要记一个是斜线,一个是H,斜线呢就代表间隔啊,间隔两个小时,那么在前面呢,我们这也可以加斜线啊,就是间隔。
29:28
这是间隔,每每隔两分钟啊,也可以前面不不写星号,写具体的值啊,范围值,比如零到20啊,也可以就是零到20之间,每隔两,每隔二,这是任意任意的时间范围,每隔二加1H呢啊就是呃,稍微的让它随机一点,别去这么并发的去执行啊,这就是给大家讲的这个空表达式,那么这个空表达式呢,我们写好之后就可以给它填到我们这个build啊pro呃,Prior呃啊在这里边呢,这叫日程表嘛,对吧?然点开呢,这里边也有解释。
30:07
啊,大概怎么写啊,这是英文版的,刚才呢给大家讲了一讲啊,具体怎么写啊,然后这里边呢,也有解释,它是叫什么呢?Corn like啊,就类似于cor表达式的,不是标准。com表达式,好那么这节课呢,我们就先讲到这。
我来说两句