文档章节

quartz 计算上次触发时间

len
 len
发布于 2014/06/06 18:32
字数 5074
阅读 164
收藏 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
作业调度框架 Quartz 学习笔记(五) -- 错过的任务怎么办?

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

哲别0
2017/10/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Kali Linux Docker 練習

docker pull kalilinux/kali-linux-docker docker run -t -i kalilinux/kali-linux-docker /bin/bash apt-get update apt-get install htop apt-get install nmap apt-get install wpscan ap......

BaiyuanLab
21分钟前
0
0
通俗大白话来理解TCP协议的三次握手和四次分手

最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机网络,加深自己的CS功底,就...

onedotdot
26分钟前
1
0
TiDB 在爱奇艺的应用及实践

爱奇艺,中国高品质视频娱乐服务提供者,2010 年 4 月 22 日正式上线,推崇品质、青春、时尚的品牌内涵如今已深入人心,网罗了全球广大的年轻用户群体,积极推动产品、技术、内容、营销等全方...

TiDB
30分钟前
0
0
Web系统大规模并发:电商秒杀与抢购

一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战。如果Web系统不做针对性的优化,会轻而易举地陷入到异常...

xtof
今天
3
0
代码质量管理平台-sonarqube

在工作中,往往开发的时候会不怎么注重代码质量的人很多,存在着很多的漏洞和隐患等问题,sonarqube可以进行代码质量的审核,而且十分的残酷。。。。。接下来我们说下怎么安装 进入官网下载:...

落叶清风
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部