当前位置:首页 > 网络黑客 > 正文内容

cron表达式详解(定时任务cron表达式)

访客3年前 (2022-03-13)网络黑客606

最近在忙一个风控项目,其中有一个需求是定时巡检业务中产生的审计数据,寻找其中可能存在的风险数据,以便对对应的违规操作进行管控,避免潜在的资损。我们可爱又牛掰的TL看我最近的绩效在团队中垫底了,为了让我的绩效好看点,于是就把这个任务指派给了我,真是太感动了,感动到流泪~~

好了,背景的确很感动,但是感动之后,我开始搬砖了,不然楼主要卷铺盖走人了。楼主的项目是基于 springboot搭建的, 为了快速实现功能同时减少其他依赖的引入,楼主采用了spring自带的定时任务框架,通过@Scheduled定义具体的定时任务。@Scheduled注解包含一个cron属性,用来指定具体的cron表达式。为了顺利地完成工作,保住饭碗,楼主认真学习总结了cron表达式,其结构如下:

second minute hour dayOfMonth month dayOfWeek year

字段

取值

特殊值

second (秒)

0~59的整数

%2c – * /

minute (分)

0~59的整数

%2c – * /

hour (时)

0~23的整数

%2c – * /

dayOfMonth (日期)

1~31的整数(需要考虑实际的天数)

%2c – * ? / L W C

month (月)

1~12的整数或JAN-DEC

%2c – * /

dayOfWeek (星期)

1~7的整数或SUN-SAT (1=SUN)

%2c – * ? / L C #

year (年,可选的)

1970~2099

%2c – * /

如上图所示,每个域都使用数字,但也可以使用一些特殊字符,其含义如下:

* 匹配该字段域任意值,比如minute域使用*,表示每分钟都会触发事件。

? 只能用在dayOfMonth和dayOfWeek两个域,表示该域匹配任意值或不设置值,且当其中一个域为确定值时,另一个域必须为?(表示另一个域不设置值)。

%2c 表示列举枚举值,比如minute域设为5%2c10%2c15 ,表示在第5、10、15分每分钟执行一次

/ 表示第一次延迟指定时间触发,然后每隔一定时间触发一次(上一次结束与下一次开始之间的时间间隔),比如second域设为0/5,表示0秒触发一次,每次执行完成之后隔5秒再触发下一次

L 表示最后(last简写),只能用在dayOfMonth和dayOfWeek两个域,用在dayOfMonth域(前面不需要加数字)表示一个月的最后一天,用在dayOfWeek域,如果前面没有数字,表示7(星期六),如果前面有数字,表示一个月的最后一个星期几。比如6L,表示一个月的最后一个星期五。

W 表示当月(最近寻找不会跨过月份)离指定日期最近的那个工作日(weekday简写),只能用在dayOfMonth域。比如6W,如果6号是星期六,则最近的工作日为5号(即星期五),如果6号是星期日,则最近的工作日为7号(即下个星期一),否则就表示6号本身。再比如31W,如果31W是星期六或星期日,则最近的工作日都是之前的星期五,不会跨月份。

LW 一个月的最后一个工作日。

# 表示一个月中第几个星期几,前面的数字表示星期几,后面的数字表示第几个,只能用在dayOfWeek域,比如7#2,表示一个月中第二个星期六。

C 这个字符楼主实在没搞清楚是干啥的,基本也很少用到,就没去深究了。

常用表达式举例

0 0 0 1 * ? 每个月1号凌晨零点整
* 0/5 * * * ?  每5分钟触发一次
0 30 7 * * ?  每天早上七点半
0 30 7 * * 2-6  工作日(周一到周五)早上七点半
0 0 8 L * ?  每个月最后一天早上八点整
0 0 8 L-1 * ?  每个月倒数第二天早上八点整
0 0 8 LW * ?  每个月最后一个工作日早上八点整
0 0/30 9-17 * * ?  朝九晚五每半小时触发
0 0/5 14%2c18 * * ?  每天下午2:00~2:55和6:00~6:55之间每5分钟触发一次
0 0 8 ? * 6#3  每个月第三个星期五早上八点整
0 0 8 ? * 6L  每个月最后一个星期五早上八点整

由于月份和星期域可以用英文简称代替,楼主为了方便使用,收集整理了月份与星期的简写,如下

一月         January      Jan
二月         February     Feb
三月         March        Mar
四月         April        Apr
五月         May          May
六月         June         Jun
七月         July         Jul
八月         August       Aug
九月         Septemper    Sep
十月         October      Oct
十一月        November     Nov
十二月        December     Dec

星期一        Monday       Mon
星期二        Tuesday      Tue
星期三        Wednesday    Wed 
星期四        Thursday     Thu
星期五        Friday       Fri
星期六        Saturday     Sat
星期日				 Sun          Sun

总结

通过完成TL给的这个需求,楼主对cron表达式有了一个深入的了解,感觉还蛮有成就感的,心中更是暗暗窃喜,今年的绩效栏又可以多加一笔了。当然,作为一名码农,最重要的还是要不断地尝试,只有多练、多看、多学、多想,编程才能更进一步。

扫描二维码推送至手机访问。

版权声明:本文由专业黑客技术知识发布,如需转载请注明出处。

本文链接:https://hkjdpt.com/26278.html

标签: 阅历杂谈
分享给朋友:

“cron表达式详解(定时任务cron表达式)” 的相关文章

网秦手机卫士怎么样(网秦手机卫士)

  网秦手机卫士在Google商店下载量突破50万   http://www.cww.net.cn 2011年4月20日 11:30 通信世界网   近日,记者通过美国Google官方应用商店(Google Android Market)中了解到,来自中国的移动安全产品——网秦手机卫士(中...

比亚迪宋suv价格,吉利宋报价及图片

价格能suv相差1万多的话,你最好下载安装易车网,元的价格69999—2389,比亚迪suv旗下包括,镍镉电池、其中区分燃油和混合动力车型,自动智联越动型。 对S6是否具有持续竞争力报以怀疑态度。即自动智联越进型,即手动智联越尚型、自动智联越享型,比亚迪宋补贴钱价格25万元人民币,配置上来说也是相当...

北京冬奥花样滑冰表演滑 北京冬奥花滑有表演滑吗

滑冰项目所有获奖选手以及东道主的2对选手参加 现在说晚不晚?分为雪上项目和冰上项目,有单板竞速,双板竞速,单板障碍,双板障碍,单板U形池,冰上竞速,花样滑冰,轨道雪橇 第24届奥林匹克冬季运动会开幕式...

梦幻西游开区表查询 「梦幻西游2021年哪个新区火爆」

青山绿水,既有希腊和罗马式风格,装备特别好,这一年火爆里我们驻足青丘观赏绚丽的烟火,缺点是升级慢。周五,为大家准备了暑期盛宴,那经济不2021就垮.梦幻西游。 相互间开放服务器角色转移功能。到底会不会最后确定 下来还不清楚。梦幻西游广西区最近开的是什么区,西游开区时间表,月22日参考资料:http/...

上一届冬奥会中国金牌 索契冬奥会中国金牌

3金4银2铜. 第24届:1988年,汉城(韩国),5枚金牌、11枚银牌、12枚铜牌,共28枚奖牌.第25届:1992年,巴塞罗那(西班牙),16枚金牌、22枚银牌、16枚铜牌,共54枚奖牌. 是杨扬...

web服务器是什么(nat转换的三种方式)

NAT 网络地址转换(NAT)技术的理论部分可以看博客——网络层——NAT。NAT 的功能大致为:在局域网中组织会为内部主机分配私有地址,当内部主机发送数据包到外部网络时私有地址就会自动转换为公有 IP 地址,公有 IP 地址返回的流量的目的地址也会自动转换为内部私有地址。NAT 通常工作在末节网...

评论列表

末屿卿绡
3年前 (2022-06-13)

April Apr五月 May May六月 June Jun七月 Ju

晴枙时窥
3年前 (2022-06-13)

ary Feb三月 March Mar四月 April Apr五月 May May六月

寻妄傻梦
3年前 (2022-06-13)

最近在忙一个风控项目,其中有一个需求是定时巡检业务中产生的审计数据,寻找其中可能存在的风险数据,以便对对应的违规操作进行管控,避免潜在的资损。我们可爱又牛掰的TL看我最近的绩效在团队中垫底了,为了让我的绩效好看点,于是就把这个任务指派给了我,真是太感动了,感动到流泪~~好了,背景的确很感动

萌懂戈亓
3年前 (2022-06-13)

? 每个月1号凌晨零点整* 0/5 * * * ? 每5分钟触发一次0 30 7 * * ? 每天早上七点半0 30 7 * * 2-6 工作日(周一到周五)早上七点半0 0 8 L * ? 每个月最后一天早上八点整0 0 8 L-1 * ?

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。