由spring定时任务@Scheduled(cron = “0 0 0/1 * * ?“)引起的坑

news2024/10/6 2:31:02

这两天做到的一个功能,定时任务每整点生成一条记录,然后使用的cron表达式是:

@Scheduled(cron = "0 0 0/1 * * ?")意为每整点执行一次。

定时任务执行之后使用new Date() 拿到当前本机时间,作为记录的创建时间,使用时间格式化(yyyy-MM-dd HH:mm:00) 将秒钟设置成0。

 存入数据库之后发现创建时间正常是整点,但是记录时间(格式化之后的时间)少了一分钟。

原因分析

最终发现 @Scheduled(cron = "0 0 0/1 * * ?")可能会存在毫秒级别的误差,例如此时是2023-06-27 06:59:59.688  ,这时候虽然还没到七点,但是scheduled会检测到最近的时间(精确到秒) 是七点钟,就会开始执行定时任务,而此时new Date() 得到的实际是

2023-06-27 06:59:59.688 (作为创建时间)

格式化之后就是

2023-06-27 06:59:00.000(作为记录时间)

存入数据库之后 

2023-06-27 06:59:59.688 也会mysql四舍五入变成 2023-06-27 07:00:00.000

所以就出现了明明是用同一个时间进行处理操作,为什么记录时间会慢一分钟的现象。

处理方案

可以把定时任务的启动秒钟增加一点,这样无论怎么样都会在那一分钟触发

@Scheduled(cron = "2 0 0/1 * * ?")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/695169.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Jmeter完成数据库造数

1.添加驱动 如果使用jmeter连接数据库,需要在jmeter的lib下添加对应的数据库驱动 MySQL: mysql-connector-jar Oracle: ojdbc6-11.2.0.3.jar ps:找到自己对应的驱动版本 2.bin目录启动 localhost bin % sh jmeter.sh ps: Jmeter版本:5.6 mysq…

在windows同时安装两个idea的方法教程

因为近期使用jdk17,所以需要升级Idea的版本,但是我电脑之前用的Idea2018,我又不想卸载,所以想同时装两个版本的。 安装教程如下: IDea官网:https://www.jetbrains.com.cn/idea/download/?sectionwindows 在官网下载.…

从文本、图像到音视频,AIGC技术将如何重构我们的数字世界?

引言 1950 年,艾伦图灵提出著名的「图灵测试」,给出判定机器是否具有智能的试验方法。16 年后,世界上第一款可人机对话的机器人“Eliza”问世,这是 AI 技术最早期的萌芽阶段。但由于当时的科技水平限制,AIGC 仅限于小…

【MySql】C语言连接mysql|图形化工具

文章目录 Connector/C 使用mysql接口介绍Navicat远程连接数据库 Connector/C 使用 说完了mysql的基础,后面我们只关心使用,要使用C语言连接mysql,需要使用mysql官网提供的库,前往官网下载即可。 但是实际上我们并不需要这样去做,…

Feign、Ribbon、Hystrix(铁三角)以及三者超时时间配置

在微服务架构中很多功能都需要调用多个服务才能完成某一项功能,一个成熟的微服务集群,内部调用必然依赖一个好的 RPC 框架,比如:基于 Http 协议的 Feign,基于私有 tcp 协议的 Dubbo 1. Feign 是什么 Feign 是Spring …

Consul 理解

Consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。服务部署简单,只有一…

SpringBoot实现自定义配置属性提示

前言 我们在使用SpringBoot开发项目时,常常需要编写一些属性配置类,用来完成自定义或特定的属性配置。在配置文件application.yml中,IDEA会自动提示官方默认的相关配置且可以点击属性自动跳转到属性对应的配置类中,实现快速查看属…

力扣387:字符串中的第一个唯一字符

题目描述:给定一个字符串s,找到它的第一个不重复字符,并返回索引,如果不存在,则返回-1. 提示:s 不为空且 s 只包含小写字母 思路: 将字符串中的每个字符遍历一次,将其中每个字符以…

基于Java斗车交易系统设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

centos下的Nginx, tar安装不能使用systemctl启动问题

1.systemctl start nginx启动报错 2.报错原因 解压方式nginx,系统服务内没有nginx的服务,所以报错 3.配置nginx系统服务 1)/etc/init.d/目录下创建nginx 2)nginx文件内容 #!/bin/sh # nginx - this script starts and stops the nginx daemin # # c…

【漏洞案例】云上攻防之云主机中web应用自身漏洞

0x00 前言 最近在做项目的时候,测到了一个部署在云上的存在 Laravel UEditor SSRF 漏洞的站点,并且发现这个 SSRF 漏洞可以读取到临时凭证,这不巧了,正好最近写了一个云环境利用的工具。 开始之前这里先简单介绍一下这个工具&am…

(三)R-studio调度

1、准备测试脚本 from datetime import datetime print(111) print(datetime.now()) 2、设置定时调度 如果crontab没有安装,需要在root用户下安装,并启动,可参考:Ubuntu下crontab的安装和使用 (base) rstudio5abc0fae5cff:~/p…

JVM的OOM问题定位解决

1、生成dump文件(错误日志文件),MAT可以进行解读 (1)参数 -XX:HeapDumpOnOutOfMemoryErrorOOM时导出堆到文件。 -Xms1m -Xmx8m -XX:HeapDumpOnOutOfMemoryError(2)设置参数 -Xms1m -Xmx8m -…

【Python】 Windows上通过git bash执行python卡住的解决方法

解决方法 编辑 C:\Program Files\Git\etc\profile.d\aliases.sh,将python2.7改成python 编辑完成后,重启git bash, 输入python即可 参考 https://blog.csdn.net/ofreelander/article/details/112058975

Linux网络环境配置

第一种方式(自动获取): 说明:登陆后,通过界面的来设置自动获取IP 特点:Linux启动后会自动获取IP 缺点:是每次自动获取的IP地址可能不一样 第二种方法(指定IP): 1、说明…

kettle文件资源库之Show hidden folders

版本7.1 在创建文件资源库时&#xff0c;有一个选项“show hidden folders”。从字面上理解&#xff0c;是“显示隐藏文件夹”的意思&#xff0c;其实不然。 通过repositories.xml文件我们可以看到&#xff0c;其实这个选项在配置文件中对应的标签是&#xff1a;<hides_hi…

计算机视觉:3*3卷积核的优势

本文重点 如果你了解卷积神经网络,那么你一定会注意到大多数卷积神经网络模型经常使用3*3的卷积核,甚至是1*1的,而5*5的都少用,这是为什么呢?本文对3*3的卷积神经网络的好处进行总结。 参数量少 在卷积神经网络中,卷积核的大小决定了模型的参数量。3*3的卷积核比5*5…

leetcode 102. 二叉树的层序遍历

2023.6.28 二叉树的层序遍历&#xff0c;需要用到的数据结构是队列。有几个核心点&#xff1a; 初始化变量 size&#xff0c;用于记录每层节点的数量。不能直接用que.size()&#xff0c;因为队列的大小是会随时变化的。在内层while循环中&#xff0c;每次先将队头节点的值保存…

HDLbits--Bugs mux4

用二选一多路选择器创建4选一多路选择器 说先修改编译问题&#xff1a;mux0&#xff0c;mux1变量重复使用&#xff0c;并且位宽只有一位&#xff0c;修改后编译 结果&#xff1a; 可知&#xff1a;00-a&#xff0c;01-b,10-c,11-d 可知sel[0]区分a和b&#xff0c;c和d &…

vue2项目Vant组件Dialog 弹出框异步关闭的坑

vue2项目使用vant&#xff0c;我这边是全局引入的&#xff0c;引入插件官方文档中有&#xff0c;这边就不介绍了。 安装&#xff1a;Vant 2 - Mobile UI Components built on Vue 话不多说直接说坑&#xff0c;当时写这个的时候真的给我气到了~~~ 先看一下官方文档&#xff1…