关于软件试用期功能实现-2018.1.24

思路:
(1)创建一个文件,在试用期开始的时候。文件中加密存储一个试用期时间,防止用户修改;
(2)定义一个定时器,用来对文件中的试用期时间进行操作,比如每天减去1;
(3)涉及到文件的加密解密和读写操作。
整体来讲就是:定时器对文件中的数字进行修改,等到其数字=0时,试用期结束,则删除文件,关闭系统服务器,用户不能再使用。除非使用注册码注册。[定时器读取文件并解密,对解密的数字进行操作之后,在加密文件内容,重新写入文件中。]

这里涉及到的技术:
(1)SpringBoot自带的定时器:

@Scheduled(cron = "0 0 1 * * ?")//每天凌晨1点的时候;
@Scheduled(fixedDelay = 2000)//用来测试:每隔两秒执行一次;

(2)文件的加密解密;
这里有一个比较舒服的关于加密解密介绍的网址
(3)文件的读写操作;

下面作详细的解释:

SpringBoot定时任务之 Scheduled Task

1 、简介

Scheduled task是Spring 内置的一个定时器

2、弊端

使用Scheduled Task的弊端就是不适用于分布式集群的操作,Scheduled Task是一种轻量级的任务定时调度器,相比于Quartz,减少了很多的配置信息,但是Scheduled Task不适用于服务器集群,因为在服务器集群下会出现任务被多次调度执行的情况,因为集群的节点之间是不会共享任务信息的,每个节点的定时任务都会定时执行。

3、我的代码:
//这里是主程序入口
@SpringBootApplication  //是一个组合注解 由@Configuration,@EnableAutoConfiguration和@ComponentScan组成
@EnableScheduling   //作为启动定时器的开关 注解
class Application

fun main(args: Array<String>) {
    val logger = LoggerFactory.getLogger(Application::class.java)  //类加载JVM
    ...
    }

总开关设置好之后,接下来只需要添加一个定时执行的方法即可。
这里最重要的使用则是:@Schedule以及它属性的使用。

    @Scheduled(cron = "0 0 1 * * ?")//每天凌晨1点的时候
//    @Scheduled(fixedDelay = 2000)//用来测试:每隔两秒执行一次
    fun probationSchedulerTask() {
        //这里是方法体
        //包含对试用期文件的 解密解密 读写 以及对文件中解密之后的数字进行处理的过程。
    }

关于@Schedule中的表达式规则,这里简单备注一些:
corn属性:

一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素 
从左往右依次代表 
1.Seconds Minutes Hours DayofMonth Month DayofWeek Year 
2.Seconds Minutes Hours DayofMonth Month DayofWeek

每个域中字符如下: 
Seconds: 可出现”, - * /”四个字符,有效范围为0-59的整数 
Minutes: 可出现”, - * /”四个字符,有效范围为0-59的整数 
Hours: 可出现”, - * /”四个字符,有效范围为0-23的整数 
DayofMonth :可出现”, - * / ? L W C”八个字符,有效范围为0-31的整数 
Month: 可出现”, - * /”四个字符,有效范围为1-12的整数或JAN-DEc 
DayofWeek: 可出现”, - * / ? L C #”四个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一, 依次类推 
Year: 可出现”, - * /”四个字符,有效范围为1970-2099年

举些例子:
每隔5秒执行一次:”/5 * * * ?”
每隔1分钟执行一次:”0 /1 * * ?”
每天23点执行一次:”0 0 23 * * ?”
每天凌晨1点执行一次:”0 0 1 * * ?”
每月1号凌晨1点执行一次:”0 0 1 1 * ?”
每月最后一天23点执行一次:”0 0 23 L * ?”
每周星期天凌晨1点实行一次:”0 0 1 ? * L”
在26分、29分、33分执行一次:”0 26,29,33 * * * ?”
每天的0点、13点、18点、21点都执行一次:”0 0 0,13,18,21 * * ?”
表示在每月的1日的凌晨2点调度任务:”0 0 2 1 * ? *”
表示周一到周五每天上午1015执行作业:”0 15 10 ? * MON-FRI”
表示2002-2006年的每个月的最后一个星期五上午10:15执行:”0 15 10 ? 6L 2002-2006

fixedRate属性:上一次 启动时间点之后 X秒执行一次 .该属性的含义是上一个调用开始后再次调用的延时(不用等待上一次调用完成),这样就会存在重复执行的问题,所以不是建议使用,但数据量如果不大时在配置的间隔时间内可以执行完也是可以使用的。

@Scheduled(fixedRate = 5000)

fixedDelay属性:上一次 结束时间点之后 每X秒执行一次 . 该属性的功效与上面的fixedRate则是相反的,配置了该属性后会等到方法执行完成后延迟配置的时间再次执行该方法。

@Scheduled(fixedDelay = 50000)

initialDelay属性:第一次延迟 X秒执行,之后按照fixedRate的规则每X秒执行 .

扫描二维码关注公众号,回复: 2145130 查看本文章
@Scheduled(initialDelay = 50000,fixedRate = 6000)

猜你喜欢

转载自blog.csdn.net/amethyst128/article/details/79474380
今日推荐