SpringBoot之定时任务详解
SpringBoot之定时任务详解阅读目录:
序言
一、静态:基于注解
二、动态:基于接口
三、多线程定时任务
阅读正文:
回到顶部
序言使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式:
一、基于注解(@Scheduled)
二、基于接口(SchedulingConfigurer) 前者相信大家都很熟悉,但是实际使用中我们往往想从数据库中读取指定时间来动态执行定时任务,这时候基于接口的定时任务就派上用场了。
三、基于注解设定多线程定时任务
回到顶部
一、静态:基于注解基于注解@Scheduled默认为单线程,开启多个任务时,任务的执行时机会受上一个任务执行时间的影响。
1、创建定时器使用SpringBoot基于注解来创建定时任务非常简单,只需几行代码便可完成。 代码如下:
@Configuration //1.主要用于标记配置类,兼备Component的效果。@EnableScheduling // 2.开启定时任务public class SaticScheduleTask { ...
SpringBoot项目启动时如何执行特定方法
Spring Boot:项目启动时如何执行特定方法1. @PostConstruct应该也是最简单的方式
直接在方式上面注入,但是会影响服务提供,比如这个方法要执行五分钟 这五分钟之内是无法提供服务的,这个方法是在服务初始化后之前运行, 所以 此方法运行不结束,服务就无法初始化, 在这过程路也无法提供服务
@PostConstruct public void pingStart(){ System.out.println(" ping start:"); getPingip(); System.out.println(" ping end: ");}
2. 使用ApplicationListener是通过监听接口方式启动,服务已经初始化过,不影响 服务启动,并且启动之后可以正常提供服务
@Componentpublic class ApplicationStartQuartzJobListener implements ApplicationListener<ContextRefreshedEven ...
VIM使用教程
简明VIM练级攻略vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。
——————————正文开始——————————
你想以最快的速度学习人类史上最好的文本编辑器VIM吗?你先得懂得如何在VIM幸存下来,然后一点一点地学习各种戏法。
Vim the Six Billion Dollar editor
Better, Stronger, Faster.
学习 vim 并且其会成为你最后一个使用的文本编辑器。没有比这个更好的文本编辑器了,非常地难学,但是却不可思议地好用。
我建议下面这四个步骤:
存活
感觉良好
觉得更好,更强,更快
使用VIM的超能力
当你走完这篇文章,你会成为一个vim的 superstar。
在开始学习以前,我需要给你一些警告:
学习vim在开始时是痛苦的。
需要时间
需要不断地练习,就像你学习一个乐器 ...
Linux安全之SSH 密钥创建及密钥登录
Linux安全之SSH 密钥创建及密钥登录在我们平时使用Linux系统时候,通常使用的Linux SSH登录方式是用户名加密码的登录方式,今天来探讨另外的一种相对安全的登录方式——密钥登录。
我们知道SSH登录是用的RSA非对称加密的,所以我们在SSH登录的时候就可以使用RSA密钥登录,SSH有专门创建SSH密钥的工具ssh-keygen,下面就来一睹风采。
创建密钥首先进入Linux系统的用户目录下的.ssh目录下,root用户是/root/.ssh,普通用户是/home/您的用户名/.ssh,我们以root用户为例:
cd /root/.ssh
可以先看看目录下,如果没有进行过ssh密钥创建是长这样子的:
执行ssh-keygen命令创建密钥对,
ssh-keygen -t rsa -b 4096
这里笔者加了-b 参数,指定了长度,也可以不加-b参数,直接使用ssh-keygen -t rsa,ssh-keygen命令的参数后文再介绍。
执行密钥生成命令,基本上是一路回车既可以了,但是需要注意的是:执行命令的过程中是会提示呢输入密钥的密码的(如下图中红色箭头处,输入两次 ...
Linux使用yum安装JDK
linux使用yum安装jdk1. 看Linux系统是否有自带的jdk:1、输入:java -version2、发现有输入:rpm -qa | grep java 检测jdk的安装包,(注意:rpm命令符没有时记得下载一个输入:apt-get install +命令名称)3、接着进行一个个删除包,输入:rpm -e –nodeps +包名4、最后再次:rpm -qa | grep java检查是否删除完即可
2、查询要安装jdk的版本命令:yum -y list java*
3、安装所需版本命令:yum install -y java-1.8.0-openjdk.devel.x86_64
注意这里一定要安装devel版本, 否则会出现只安装了jre的情况导致无法使用javac命令
4. 查看是否安装成功javac, java -version
javac命令报错bash:javac:command not found | yum provide javac问题分析:自带的jdk默认只安装了运行环境(找到jdk的安装目录下,发现 ...
SpringBoot 文件上传 通过Content-Type和文件头判断文件类型
SpringBoot 文件上传 通过Content-Type和文件头判断文件类型关于MIMEMIME的全称是Multipurpose Internet Mail Extensions,即多用途互联网邮件扩展,尽管读起来有些拗口,但大多数人可能都知道,这是HTTP协议中用来定义文档性质及格式的标准。IETF RFC 6838,对HTTP传输内容类型进行了全面定义。而IANA(互联网号码分配机构)是负责管理所有标准MIME类型的官方机构。可以在这里)找到所有的标准MIME
服务器通过MIME告知响应内容类型,而浏览器则通过MIME类型来确定如何处理文档;因此为传输内容(文档、图片等)设置正确的MIME非常重要。
通常Server会在HTTP响应中设置Content-Type,如下面的响应:
HTTP/1.1 200 OKServer: Golfe2 Content-Length: 233Content-Type: application/htmlDate: Sun, 28 Dec 2018 02:55:19 GMT12345
这表示服务端将返回html格式的文档 ...
Mysql事件
1、事件概述在MySQL 5.1中新增了一个特色功能事件调度器(Event Scheduler),简称事件。它可以作为定时任务调度器,取代部分原来只能用操作系统的计划任务才能执行的工作。另外,更值得一提的是,MySQL的事件可以实现每秒钟执行一个任务,这在一些对实时性要求较高的环境下是非常实用的。
事件调度器是定时触发执行的,从这个角度上看也可以称作是“临时触发器”。但是它与触发器又有所区别,触发器只针对某个表产生的事件执行一些语句,而事件调度器则是在某一段(间隔)时间执行一些语句。
1.1 查看事件调度器是否开启事件由一个特定的线程来管理。启用事件调度器后,拥有SUPER权限的账户执行SHOW PROCESSLIST就可以看到这个线程了。
示例:查看事件是否开启。
SHOW VARIABLES LIKE 'event_scheduler';SELECT @@event_scheduler;SHOW PROCESSLIST;
1.2 开启或关闭事件调度器通过设定全局变量event_scheduler的值即可动态的控制事件调度器是否启用。开启MySQL的事件调度器, ...
转载---ThreadLocal的原理
一针见血理解ThreadLocal类ThreadLocal类具有两个维度:线程维度和变量维度。扔掉线程维度,保留并放大变量维度,虽然思想片面,但是给人的印象却是极深,才能用之出神入化。
ThreadLocal类是修饰变量的,重点是在控制变量的作用域,初衷可不是为了解决线程并发和线程冲突的,而是为了让变量的种类变的更多更丰富,方便人们使用罢了。很多开发语言在语言级别都提供这种作用域的变量类型。
根据变量的作用域,可以将变量分为全局变量,局部变量。简单的说,类里面定义的变量是全局变量,函数里面定义的变量是局部变量。
还有一种作用域是线程作用域,线程一般是跨越几个函数的。为了在几个函数之间共用一个变量,所以才出现:线程变量,这种变量在Java中就是ThreadLocal变量。
全局变量,范围很大;局部变量,范围很小。无论是大还是小,其实都是定死的。而线程变量,调用几个函数,则决定了它的作用域有多大。
ThreadLocal是跨函数的,虽然全局变量也是跨函数的,但是跨所有的函数,而且不是动态的。
ThreadLocal是跨函数的,但是跨哪些函数呢,由线程来定,更灵活。
一针见血理解Threa ...
PostMan的使用方法
请求区域介绍
1 Authorization:身份验证,主要用来填写用户名密码,以及一些验签字段,postman有一个helpers可以帮助我们简化一些重复和复杂的任务。当前的一套helpers可以帮助你解决一些authentication protocols的问题。;
2 Headers:请求的头部信息
3 Body:post请求时必须要带的参数,里面放一些key-value键值对
4 **Pre-requerst Script:**可以让你在 请求之前自定义请求数据,这个运行在请求之前,语法使用JavaScript语句。
5 tests:tests标签功能比较强大,通常用来写测试,它是运行在请求之后。支持JavaScript语法。postman每次执行request的时候,会执行tests。测试结果会在tests的tab上面显示一个通过的数量以及对错情况。这个后面会进行详解,它也可以用来设计用例,比如要测试返回结果是否含有某一字符串
6 form-data:,它将表单数据处理为一条消息,以标签为单元,用分隔符分开。既可以单独上传键值对,也可以直接上传文件(当上传字段是文 ...