定时任务相当于闹钟,在规定的时间做规定的事情(执行脚本或者命令)
之前用SpringMVC简单体系开发项目的时候,需要手动引入Quantz依赖jar包,项目升级到Springboot,发现Springboot已经集成并实现了Quantz体系,无需二次引入,只需要通过注解的形式启用接口。需要用到的注解,主要如下:
@EnableScheduling
@EnableScheduling 注解需要配置在启动类上,旨在告诉Springboot启用时间调度服务模块,否则不生效。这里感觉有点坑,如果启动类不加@EnableScheduling 注解,项目中也可以正常配置定时任务时间表达式,但不会执行,大意的开发者可能需要花费更多的调试时间和查询资料。
@Scheduled
@Scheduled 注解为时间表达式属性配置,告诉Quantz时间调度,我需要在什么时间定时执行这个方法,用白话说就是这么简单。
为了直观的理解,附上实现代码。启动类代码如下:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
* @desc 预泊任务调度平台启动类
* @author HuangLongPu
* @date 2020-10-27 11:58:52
*/
@SpringBootApplication
@EnableScheduling
public class QuantzApplication {
public static void main(String[] args) {
SpringApplication.run(QuantzApplication.class, args);
}
}
新建一个Job任务处理实现类,需要加 @Component 注解,否则不能加载为 Spring Bean 实例,切记!
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
/**
* @Author: HuangLongPu
* @Date: 2020/11/17 14:24
*/
@Component
public class InfoHandleTask {
/**
* 每2分钟一次
*/
@Scheduled(cron = "0 */2 * * * ?")
private void remind() {
System.out.println("每2分钟调用一次,当前时间为:" + LocalDateTime.now());
}
}
执行结果如下:
每2分钟调用一次,当前时间为:2020-11-19T13:40:00.004
每2分钟调用一次,当前时间为:2020-11-19T13:42:00.002
每2分钟调用一次,当前时间为:2020-11-19T13:44:00.002
每2分钟调用一次,当前时间为:2020-11-19T13:46:00.001
下面内容为开发者注意的点,需理解
细心的开发者应该会发现,设置的定时任务是每2分钟执行一次,打印出来的结果确实是2分钟,但是没有秒!经过大量测试发现,任务是在时间基础上每2分钟的整数倍基点0秒时准时执行,包括小时、秒也是一样的原来(如果只是配置每多少小时或者每多少秒执行一次的任务),这个点需要开发者掌握并理解,以免发生业务上的BUG。
@Scheduled 注解提供了好几个注入时间表达式的属性,建议用 cron 属性,毕竟 cron 支持的时间表达式和类 Linux 服务器定时任务的表达式是兼容共通的。下面附上相应的 cron 表达式,供参考:
0 * * * * ? 每一分钟触发一次 0 0 * * * ? 每一小时触发一次 0 0 10 * * ? 每10点触发一次 0 * 14 * * ?每天下午2点到2点59分期间,每一分钟触发 0 30 9 1 * ? 每月一号上午9点30分触发 0 15 10 15 * ?每月15号上午10点15分触发 */5 * * * * ? 每隔5秒执行一次 0 */1 * * * ? 每隔1分钟执行一次 0 0 5-15 * * ? 每天5-15点整点触发 0 0/3 * * * ? 每三分钟触发一次 0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发 0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发 0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时 0 0 10,14,16 * * ? 每天上午10点,下午2点,4点 0 0 12 ? * WED 表示每个星期三中午12点 0 0 17 ? * TUES,THUR,SAT 每周二、四、六下午五点 0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发 0 15 10 ? * MON-FRI 周一至周五的上午10:15触发 0 0 23 L * ? 每月最后一天23点执行一次 0 15 10 L * ? 每月最后一日的上午10:15触发 0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发 0 15 10 * * ? 2005 2005年的每天上午10:15触发 0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发 0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发
0 0/5 10-22 * * ? 每天从早上10点晚上22点,每5分钟执行一次
上面列举出来的 cron 时间表达式已经涵盖了大多数场景,基本满足日常开发需要,特殊场景时间表达式需额外查阅资料。
一、默认线程 当我们开启一个SpringBoot的项目,我们并未设置任何和线程相关的操作,但是我们的程序还是可以执行多个请求。可以看到它默认是有10个线程去执行我们的任务的。
很多项目也使用了 mybatis 持久层,默认的配置下,是不会打印 SQL 日志的,对于开发环境不太友好。
如今的Java项目开发,Springboot/Springcloud、Swagger已经成为了标配,下面我们来说说如何在项目中引入Swagger…… 引入Swagger只需要以下3步,即可使用Swagger
安装cargo-generate如果没有openssl则使用用例:cargo generate --git https://github.git 安装wasm-pack cargo install wasm-pack 安装wasm-bindgen cargo install wasm-bindgen-cli --force 生成模板 cargo generate --git https://git
安装Erlang 注:如果在编译时出现 ”configure: error: No curses library functions found“ 错误,参考解决文章:Linux CentOS 7.2、配置
X 以上,则会有横杆提示已废弃,并提示:正确的配置:缘由ES官方建议使用rest方式, transport 将计划在后面的版本中废弃。
2 安装步骤 防火墙配置 nginx默认监听80端口,如果未关闭防火墙需要配置iptables规则开放80端口(以centos6为例)。
Elasticsearch 安装启动依托于Java 环境,首先得确保已正确安装了Java,并配置好环境变量,要求java 7或以上或最新的版本。
见下图:client_max_body_size 1024M; 上传文件大小限制sendfile on;设置为on表示启动高效传输文件的模式keepalive_timeout 1800;保持连接的时间,默认65s
目录301跳转 比如之前 Obatis 技术社区的文章链接为:/show/blog/detail/2020091000024181101172459033.Nginx 配置拓展资料: = 精准匹配,不是以指定模式开头
1、查看本地属性 2、查看用户名和地址 3、修改用户名和地址 配置用户名 git配置有两个常用的作用域参数local和global,前者只对当前仓库有效,后者则对当前用户的所有仓库都有效。
el7_4 将被 安装--> 正在处理依赖关系 subversion-libs(x86-64) = 1.x86_64 需要--> 正在处理依赖关系 libsvn_wc-1.x86_64 需要--> 正在处理依赖关系 libsvn_subr-1.x86_64 需要--> 正在处理依赖关系 libsvn_repos-1.x86_64 需要--> 正在处理依赖关系 libsvn_ra_svn-1.x86
注意事项 如果环境变量没有配置 git,可能需要到 git 的安装目录 bin 文件夹下执行。
IntelliJ IDEA配置Java文件自动生成注释描述文件, 在IDEA环境中,打开File->Settings ,弹出对话框依次选择:Editor>File and Code Templates
1、查看各软件运行硬件占比2、内存使用情况3、内存使用统计4、查看系统内核版本5、查看系统版本6、查看 CPU 信息7、查看磁盘使用情况8、查看硬盘数量及详情
目前 node 相关开发,由于国外的npm服务器下载太慢了,很多开发者为了提高插件的安装速度,一般首选都会将 npm 源配置为淘宝镜像。
1、解压 2、移动到 /usr/local 目录下 3、进入并查看Java Jdk 目录 4、配置Java环境变量 编辑/etc/profile 文件 如果提示 vim 命令未安装,执行 yum -y