Cron表达式X分钟执行一次的设计缺陷。SQL JOIN的设计缺陷。在线Cron表达式网站的缺陷。Spring 定时任务的年问题。

Cron

  • Cron表达式
    • 定时任务
    • 计划任务
Chronological

英
/ˌkrɒnəˈlɒdʒɪk(ə)l/

adj.
按发生时间顺序排列的;(年龄)按时间计算的

1. 月 周设计精妙吗?

  • 学习
0/5 * * * * ? *
秒 分 时 日 月 周 年

1. 年一般省略。为:0/5 * * * * ?

2. 日:可以叫做天都行。总之就是:天月,如:1-31。1月中最多31天。

3. 日 和 周 是冲突的。必然有一个设置为 ?
因为现实世界,如:本月1号,又是周一,非常不可能。
反之也是:周一,又要本月1号,也不可能
  • 秒分时 日月,为从小到大。
  • 周年,就当周年庆送的吧。

2. 百度搜索 在线Cron表达式网站的问题

  • 周页面 运行结果,应该都有Bug

排行第一的:https://cron.qqe2.com/

  • 分钟—从X分钟开始,每X分钟执行一次,存在Bug (下面的例子是正确的)
    • 生成的错误:Cron表达式为:* 1/5 * * * ? *
    • 所以:最新10次运行结果,也是错误 (变成每秒执行一次)
    • 排行第五的:http://c.jsrun.net/app/cron,同样的Bug
      在这里插入图片描述

排行第二的:https://www.pppet.net/

  • X分钟执行一次逻辑正确:0 0/2 * * * ?

  • https://www.itgongju.com/cron 排行第三的,X分钟执行一次逻辑正确

排行第四的:https://tools.kalvinbg.cn/dev/cron

  • 只点击:分钟页面,存在各种Bug

3. 关于 X分钟执行一次 * 开头

  • 两种正确写法:
    • 只要是0开头的,都是正确的吧
0 0/3 * * * ?
0 */4 * * * ?
  • *开头都是错误的。 尽管这是:Cron表达式网站 生成的

  • *是任意秒,叠加分钟的限制,本身就是个悖论?还是Java的spring @Scheduled(cron = “”)的问题

    • 想要X分钟执行一次,结果是1秒执行一次。错其一。

    • 1秒执行一次,是不确定性的,

      • 比如:* 0/6,就是 5以上,就会一次都不执行。

      • 即:设置 大的数后,也不会一秒执行一次。

        • * 1/2 * * * ? 设置这样比较小的数,可以1秒执行一次
          
* 0/4 * * * ?
* */33 * * * ?
* 1/12 * * * ?

4. Spring 定时任务的年问题

  • Java的spring @Scheduled(cron = “”)的 存在,不支持年的问题

    • 即随意一个 cron表达式,带年的 都会造成 整个程序无法启动
    0/55 * * * * ? *
    
    //秒 分 时 日 月 周 年
    //必须是 6个字段。
    Cron expression must consist of 6 fields (found 7 in "0/55 * * * * ? *")
    

sql JOIN连接只支持最近的表的连接

  • s2 距离 s3 最近,可以使用。
SELECT
	* 
FROM
	student s1,
	student s2
	LEFT JOIN student s3 ON s2.id = s3.id
-- WHERE s1.id = s2.id
  • s1 不是离 s3最近的表,不能使用
	LEFT JOIN student s3 ON s1.id = s3.id
	
	报错:
	> 1054 - Unknown column 's1.id' in 'on clause'

1. 只支持最近的表 不包括 前面的JOIN

SELECT
	* 
FROM
	student s1
	LEFT JOIN student s2 ON s1.id= s2.id -- 这里 s2,不能使用s3连接。ON s3.id= s2.id
	LEFT JOIN student s3 ON s1.id = s3.id -- S3 依然可以使用 S1

如果是内连接,还是使用 where条件连接吧,随意使用 表都能连接

SELECT
	* 
FROM
	student s1,
	student s2,
	student s3 
WHERE
	s3.id = s1.id
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值