文档章节

quartz 计算上次触发时间

len
 len
发布于 2014/06/06 18:32
字数 5074
阅读 156
收藏 0
点赞 0
评论 0

产品需求周期任务,但定义的是任务的结束时间,如每天18点完成,但任务的生成时间会是每天8点,如果一个用户在11点新建了这么一个任务,已经过了当天的触发时间,但又没有到任务结束时间,所以产品认为有必要为用户添加一个今天8点到18点的任务,这就涉及到要计算上次触发时间了。因为quartz 提供了从某一个时间计算下次执行时间的接口,一开的设计是在当前时间上往前减一月再以这个时间计算下次执行时间,直到下次执行时间比当次大。平时这个逻辑没发现问题,但有一天为了测试提交了一个每2分钟的任务,结果发现服务没有响应,调试时发现这个计算是很耗时的。于是有发下面的这个方案,原理是认为下次执行时间和上次执行的时间差应该是差不多的,注意是差不多,不是相等,以这个差去计算一个大致的上交执行时间,再以这个时间进行计算。

    public static Date getNextFireTime(String cronExpression) throws Exception {
        return getNextFireTime(new Date(), cronExpression);
    }

    public static Date getNextFireTime(Date date, String cronExpression) throws Exception {
        if (StringUtils.isBlank(cronExpression)) {
            return null;
        }
        CronExpression cron = new CronExpression(cronExpression);
        Date nextFireDate = cron.getNextValidTimeAfter(date);
        return nextFireDate;
    }

    private static Date getPreFireDate(Date pre, Date now, String cronExpression) throws Exception {
        if (pre.after(now)) {
            return null;
        }
        Date next = getNextFireTime(pre, cronExpression);
        if (next.after(now)) {
            return null;
        }
        while (next != null && next.before(now)) {
            pre = next;
            next = getPreFireDate(next, now, cronExpression);
        }
        return pre;
    }

    public static Date getPreFireDate(String cronExpression) throws Exception {
        int i = 0;
        Date now = new Date();
        Date next = now;
        while (true) {
            i++;
            next = getNextFireTime(next, cronExpression);
            long interval = next.getTime() - now.getTime();
            Date pre = new Date(now.getTime() - interval);
            Date result = getPreFireDate(pre, now, cronExpression);//            System.out.println((result == null) + "\t下次执行时间:" + dsf.format(next) + "\t" + dsf.format(pre));
            if (i > 31 || result != null) {
                if (result != null) {
                    System.out.println("最终结果:计算了" + i + "次,|" + "|" + cronExpression + "|,当前时间" + dsf.format(now) + "\t上次应该执行时间:" + dsf.format(result));
                    return result;
                } else {
                    System.err.println("最终结果:计算了" + i + "次,|" + "|" + cronExpression + "|,当前时间" + dsf.format(now) + "\t上次应该执行时间:未知");
                }
                break;
            }
        }
        return null;
    }

以下是测试结果

最终结果:计算了2次,||0 0 0 */1 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-21 00:00:00
cost:10ms
最终结果:计算了2次,||0 0 0 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-21 00:00:00
cost:4ms
最终结果:计算了1次,||0 0 10 3/1 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-21 10:00:00
cost:2ms
最终结果:计算了2次,||0 0 10 ? * 1,3,5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 10:00:00
cost:2ms
最终结果:计算了1次,||0 0 10 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-21 10:00:00
cost:1ms
最终结果:计算了2次,||0 0 10 L * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-04-30 10:00:00
cost:2ms
最终结果:计算了5次,||0 0 11 25/2 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-04-29 11:00:00
cost:6ms
最终结果:计算了2次,||0 0 11 25/7 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-04-25 11:00:00
cost:2ms
最终结果:计算了1次,||0 0 12 */1 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-21 12:00:00
cost:0ms
最终结果:计算了1次,||0 0 12 */1 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-21 12:00:00
cost:1ms
最终结果:计算了1次,||0 0 12 */1 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-21 12:00:00
cost:1ms
最终结果:计算了1次,||0 0 12 */1 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-21 12:00:00
cost:1ms
最终结果:计算了1次,||0 0 12 */1 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-21 12:00:00
cost:1ms
最终结果:计算了2次,||0 0 12 */7 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 12:00:00
cost:1ms
最终结果:计算了2次,||0 0 12 */7 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 12:00:00
cost:1ms
最终结果:计算了2次,||0 0 12 */7 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 12:00:00
cost:1ms
最终结果:计算了2次,||0 0 12 */7 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 12:00:00
cost:1ms
最终结果:计算了1次,||0 0 12 ? * 1,2,3,4,5/7|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-21 12:00:00
cost:1ms
最终结果:计算了1次,||0 0 12 ? * 2,4|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-21 12:00:00
cost:2ms
最终结果:计算了2次,||0 0 14 ? * 5/14|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 14:00:00
cost:1ms
最终结果:计算了2次,||0 0 17 ? * 5/7|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 17:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 */1 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 */5 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-16 18:00:00
cost:1ms
最终结果:计算了1次,||0 0 18 14 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-14 18:00:00
cost:1ms
最终结果:计算了1次,||0 0 18 17 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-17 18:00:00
cost:1ms
最终结果:计算了1次,||0 0 18 20 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:0ms
最终结果:计算了2次,||0 0 18 24 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-04-24 18:00:00
cost:2ms
最终结果:计算了2次,||0 0 18 3/1 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 3/1 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 3/1 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:0ms
最终结果:计算了1次,||0 0 18 ? * 1|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-18 18:00:00
cost:1ms
最终结果:计算了1次,||0 0 18 ? * 1|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-18 18:00:00
cost:0ms
最终结果:计算了1次,||0 0 18 ? * 1|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-18 18:00:00
cost:1ms
最终结果:计算了1次,||0 0 18 ? * 1|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-18 18:00:00
cost:0ms
最终结果:计算了1次,||0 0 18 ? * 1|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-18 18:00:00
cost:0ms
最终结果:计算了2次,||0 0 18 ? * 1,2,3,4,5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 1,2,3,4,5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 1,2,3,4,5,6,7|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 1,2,5,6/21|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-19 18:00:00
cost:1ms
最终结果:计算了1次,||0 0 18 ? * 1,3,5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:0ms
最终结果:计算了2次,||0 0 18 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:0ms
最终结果:计算了2次,||0 0 18 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:0ms
最终结果:计算了2次,||0 0 18 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:0ms
最终结果:计算了2次,||0 0 18 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:0ms
最终结果:计算了2次,||0 0 18 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:0ms
最终结果:计算了2次,||0 0 18 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了1次,||0 0 18 ? * 1/7|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-18 18:00:00
cost:0ms
最终结果:计算了1次,||0 0 18 ? * 2|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-19 18:00:00
cost:0ms
最终结果:计算了1次,||0 0 18 ? * 2|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-19 18:00:00
cost:1ms
最终结果:计算了1次,||0 0 18 ? * 2|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-19 18:00:00
cost:0ms
最终结果:计算了1次,||0 0 18 ? * 2/7|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-19 18:00:00
cost:0ms
最终结果:计算了1次,||0 0 18 ? * 3|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:0ms
最终结果:计算了1次,||0 0 18 ? * 3|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:0ms
最终结果:计算了1次,||0 0 18 ? * 3|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了1次,||0 0 18 ? * 3|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:0ms
最终结果:计算了1次,||0 0 18 ? * 3|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:0ms
最终结果:计算了1次,||0 0 18 ? * 3|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了1次,||0 0 18 ? * 3|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:0ms
最终结果:计算了1次,||0 0 18 ? * 3|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:0ms
最终结果:计算了1次,||0 0 18 ? * 3,5/21|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 4|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-14 18:00:00
cost:0ms
最终结果:计算了3次,||0 0 18 ? * 4,5/21|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 18:00:00
cost:2ms
最终结果:计算了2次,||0 0 18 ? * 5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 18:00:00
cost:0ms
最终结果:计算了2次,||0 0 18 ? * 5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 18:00:00
cost:0ms
最终结果:计算了2次,||0 0 18 ? * 5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 18:00:00
cost:0ms
最终结果:计算了2次,||0 0 18 ? * 5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 18:00:00
cost:0ms
最终结果:计算了2次,||0 0 18 ? * 5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 5/7|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 ? * 5/7|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 18:00:00
cost:0ms
最终结果:计算了2次,||0 0 18 ? * 5/7|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-15 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 18 L * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-04-30 18:00:00
cost:0ms
最终结果:计算了2次,||0 0 18 L * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-04-30 18:00:00
cost:1ms
最终结果:计算了2次,||0 0 19 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 19:00:00
cost:0ms
最终结果:计算了1次,||0 0 8 21/1 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-21 08:00:00
cost:1ms
最终结果:计算了1次,||0 0 9 */2 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-21 09:00:00
cost:0ms
最终结果:计算了1次,||0 0 9 */2 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-21 09:00:00
cost:0ms
最终结果:计算了8次,||0 0 9 25/1 * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-04-30 09:00:00
cost:3ms
最终结果:计算了2次,||0 0/2 * * * ?|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-21 13:22:00
cost:0ms
最终结果:计算了4次,||0 30 10 ? * 1,5/1|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-18 10:30:00
cost:1ms
最终结果:计算了1次,||0 30 10 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-21 10:30:00
cost:0ms
最终结果:计算了2次,||0 30 18 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:30:00
cost:1ms
最终结果:计算了2次,||0 30 18 ? * 1-5|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-20 18:30:00
cost:0ms
最终结果:计算了1次,||0 30 9 ? * 1|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-18 09:30:00
cost:1ms
最终结果:计算了1次,||0 30 9 ? * 1|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-18 09:30:00
cost:0ms
最终结果:计算了1次,||0 30 9 ? * 1|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-18 09:30:00
cost:0ms
最终结果:计算了1次,||0 30 9 ? * 1|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-18 09:30:00
cost:1ms
最终结果:计算了1次,||0 30 9 ? * 1|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-18 09:30:00
cost:0ms
最终结果:计算了1次,||0 30 9 ? * 1|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-18 09:30:00
cost:0ms
最终结果:计算了1次,||0 30 9 ? * 1|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-18 09:30:00
cost:1ms
最终结果:计算了1次,||0 30 9 ? * 1|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-18 09:30:00
cost:0ms
最终结果:计算了1次,||0 30 9 ? * 1|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-18 09:30:00
cost:0ms
最终结果:计算了1次,||0 30 9 ? * 2,4,5/7|,当前时间2014-05-21 13:23:08	上次应该执行时间:2014-05-21 09:30:00
cost:1ms


© 著作权归作者所有

共有 人打赏支持
len

len

粉丝 3
博文 3
码字总数 7984
作品 0
西城
项目经理
一个简单的使用Quartz和Oozie调度作业给大数据计算平台执行

一,介绍 Oozie是一个基于Hadoop的工作流调度器,它可以通过Oozie Client 以编程的形式提交不同类型的作业,如MapReduce作业和Spark作业给底层的计算平台(如 Cloudera Hadoop)执行。 Quartz...

Zero零_度
2016/09/22
14
0
Spring+Quartz(一)

Quartz是一个非常优秀的任务调度引擎,详情请见官网:http://www.quartz-scheduler.org/ 而Spring很好地集成了Quartz,为企业级的任务调度提供了方便。 下面先看一个实现了Job接口的任务Hello...

YaZi-Liu
2016/06/13
34
0
基于 Quartz 开发企业级任务调度应用

简介: Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现。作为一个优秀的开源调度框架,Quartz 具有功能强大,应用灵活,易于集成的特点。本文剖析了 Qu...

IBMdW
2013/05/19
12.9K
29
Quartz实践--misfire错过触发时机的处理

引言 要弄清楚作业的misfire,首先需要了解几个重要的概念: 触发器超时 : 举个例子说明这个概念。比如调度引擎中有5个线程,然后在某天的下午2点 有6个任务需要执行,那么由于调度引擎中只...

spinachgit
05/23
0
0
Quartz2.2.1配置文件

# Default Properties file for use by StdSchedulerFactory to create a Quartz Scheduler Instance, if a different properties file is not explicitly specified. 集群配置 org.quartz.s......

Mr_Tank_
2014/01/02
0
0
作业调度框架 Quartz 学习笔记(五) -- 错过的任务怎么办?

不知道大家在用Quartz的时候 有没有遇到这样一种情况: 触发器设定每3秒钟触发一次 ,但是工作需要10秒钟的执行时间.因此,在一次任务结束执行前,触发器已经错失触发 当这种情况下我们怎么处理...

哲别0
2017/10/24
0
0
Quartz将Job保存在数据库中所需表的说明

QRTZ_CALENDARS 以 Blob 类型存储 Quartz 的 Calendar 信息 QRTZCRONTRIGGERS 存储 Cron Trigger,包括 Cron表达式和时区信息 QRTZFIREDTRIGGERS 存储与已触发的 Trigger 相关的状态信息,以...

Leons
2015/08/04
0
0
定时器(Quartz)快速入门

Quartz概述 Quartz中的触发器 Quartz中提供了两种触发器,分别是CronTrigger和SimpleTrigger。 SimpleTrigger 每 隔若干毫秒来触发纳入进度的任务。因此,对于夏令时来说,根本不需要做任何特...

Barudisshu
2014/07/23
26.7K
6
Quartz的misfire特性

只有一个线程、多个job 第一个job产生misfire(executeTime>Interval) 且是repeatForever 那么只会运行第一个job,后面所有job都无法运行 第一个job产生misfire(executeTime>Interval) 且是w...

天外飞鱼
2014/07/13
0
0
​Quartz 触发器(SimpleTrigger&CronTrigger )配置说明

Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz 允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把...

VincentJiang
2013/03/25
0
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

javascript前端AES加密解密

参考了一下网上的代码加上自已的一些想法,修改,key也可以是中文, 要引入一个aes.js的js文件。 html代码 <html> <head> <title>AES加解密</title> <meta http-equiv="Content-Type"......

oisan_
5分钟前
0
0
MacOS和Linux内核的区别

有些人可能认为MacOS和Linux内核有相似之处,因为它们可以处理类似的命令和类似的软件。甚至有人认为苹果的MacOS是基于linux的。事实上,这两个内核的历史和特性是非常不同的。今天,我们来看...

六库科技
9分钟前
0
0
Vue.js-自定义事件例子

自定义组件的 v-model 2.2.0+ 新增 一个组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件,但是像单选框、复选框等类型的输入控件可能会将 value 特性用于不同的目的。m...

tianyawhl
12分钟前
0
0
mybatis中获取sqlSession的源码分析

0 SqlSessionFactoryBuilder类 SqlSessionFactoryBuilder sqlSessionFacotory=SqlSessionFactoryBuilder().build(reader) public SqlSessionFactory build(Reader reader) { return build(re......

writeademo
13分钟前
0
0
RobotThread.cpp

#include "RobotThread.h"RobotThread::RobotThread(int argc, char** pArgv, const char * topic) :m_Init_argc(argc), m_pInit_argv(pArgv), m_topic(topic){/** ......

itfanr
15分钟前
0
0
防御ddos攻击的常见方法

DDoS攻击是一种特殊形式的拒绝服务攻击。它利用多台已经被攻击者所控制的机器对某一台单机发起攻击,在带宽相对的情况下,被攻击的主机很容易失去反应能力。分布式拒绝服务攻击(DDoS) 是一种...

上树的熊
16分钟前
0
0
Vue全家桶问题合集(很多eslint规范问题)

自己使用Vue全家桶问题合集(很多eslint规范问题) 遇到很多问题一一道来。 1.vue报错 Do not use built-in or reserved HTML elements as component id:header 组件,不能和html标签重复 he...

kisshua
18分钟前
0
0
Spring框架中的设计模式(四)​

Spring框架中的设计模式(四) 本文是Spring框架中使用的设计模式第四篇。本文将在此呈现出新的3种模式。一开始,我们会讨论2种结构模式:适配器和装饰器。在第三部分和最后一部分,我们将讨...

瑞查德-Jack
22分钟前
0
0
如何玩转小程序+公众号?手把手教你JeeWx小程序CMS与公众号关联

随着微信小程序新功能、新入口的不断更新,小程序的商业价值逐步增强,特别是小程序与公众号的深度融合,已经让小程序成为各行业新的营销渠道。Jeewx平台专注小程序的开发,逐步完善小程序生...

Jeecg
28分钟前
0
0
IDEA开发vue.js卡顿

由于新项目使用了vue.js。在执行cnpm install后会在node_modules这个文件下面生成vue的相关依赖文件,这个时候当执行npm run dev命令时,会导致IDEA出现卡死的问题。 解决办法:在idea中设置...

落雪飞声
30分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部