quartz详解1-初探概念

海康工业相机SDK+OpenCV实战:图像采集与Mat格式转换优化指南 本文深入探讨了如何高效利用海康工业相机SDK与OpenCV进行图像采集与处理。重点解析了从相机RawData到OpenCV Mat格式转换的核心优化技巧,包括像素格式匹配、内存零拷贝管理以及彩色图像BGR/RGB转换,旨在解决工业应用中常见的性能瓶颈与内存问题,构建稳定高效的图像处理流程。 阅读详情

1. quartz

Quartz框架是一个全功能、开源的任务调度服务,可以集成几乎任何的java应用程序—从小的单片机系统到大型的电子商务系统。Quartz可以执行上千上万的任务调度。

Builder模式
Factory模式
组件模式
链式写法

1.1 核心概念

调度器
任务
触发器

即:scheduler任务调度、Job任务、Trigger触发器、JobDetail任务细节

1.2 结构体系

JobDetail    trigger(SimpleTrigger和CronTrigger)
    |           |
       |     |
          |
       scheduler
          |
       |     |
start/stop/pause/resume

2. quartz示例

1.新建maven项目,选maven quick-start即可(不选任何框架也行)。

说明:本测试是在已有的聚合项目下新建的module,没有影响的。
项目生成后会自动生成很多dependency,稍作修改。
在父项目的pom添加:

<properties>
    <dependency.version.junit>4.12</dependency.version.junit>
</properties>

<dependencyManagement>
    <dependencies>
        <!--junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${dependency.version.junit}</version>
        </dependency>

    </dependencies>
</dependencyManagement>

子项目的junit就可以不写版本了。

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

maven编译器改成1.8即可。
(上述不是重点,没有父模块,直接写清楚版本是一样的)


2.添加quartz maven依赖

(仓库查询https://mvnrepository.com/artifact/org.quartz-scheduler/quartz)
同样将版本号写在父项目pom中

<properties>
     <dependency.version.quartz>2.3.0</dependency.version.quartz>
</properties>

<dependencyManagement>
     <dependencies>
            <!--quartz-->
            <dependency>
                <groupId>org.quartz-scheduler</groupId>
                <artifactId>quartz</artifactId>
                <version>${dependency.version.quartz}</version>
            </dependency>
  </dependencies>
</dependencyManagement>

子模块quartz-test中pom添加:

    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>${dependency.version.quartz}</version>
    </dependency>

更新依赖。右键–>Maven–>reimport。


3.注意:quartz需要slf-log4j日志。
父pom:

<properties>
     <dependency.version.slf-log4j>1.7.10</dependency.version.slf-log4j>
</properties>

<dependencyManagement>
    <dependencies>
        <!--quartz需要日志依赖-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12z</artifactId>
            <version>${dependency.version.slf-log4j}</version>
        </dependency>

    </dependencies>
</dependencyManagement>

子模块:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${dependency.version.slf-log4j}</version>
        </dependency>

同时要添加日志属性配置文件。在源目录下添加即可。
这里写图片描述

log4j.properties内容如下:

### 设置###
#log4j.rootLogger = debug,stdout,D,E
log4j.rootLogger = info,stdout,D,E

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=/home/**/logs/debug.log ###
### 相对目录是相对于整个项目而言的
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = quartz-test/logs/debug.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 输出ERROR 级别以上的日志到=/home/**/logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =quartz-tes/logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

有关日志参考:log4j日志详解


4.空的目录结构如下。
这里写图片描述

我们需要定时打印,则需要:

(1)新建Job类

package cn.whbing.pro.quartz;
import org.quartz.Job;
public class printJob implements Job {

}

按提示写出实现

public class printJob implements Job {

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        //编写具体的业务逻辑即可
    }
}

即如下:

package cn.whbing.pro.quartz;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class PrintJob implements Job {

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        //编写具体的业务逻辑即可
        //打印当前时间及hello
        LocalDateTime timeNow = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy MM dd hh:mm:ss");
        System.out.println("execute time:"+formatter.format(timeNow));

        System.out.println("hello!");
    }
}

(2)编写Scheduler类
创建JobDetail、Trigger、Scheduler

1.创建JobDetail实例
2.定义Trigger实例
3.Scheduler实例

package cn.whbing.pro.quartz;

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class PrintScheduler {
    public static void main(String[] args) throws SchedulerException {
        //1.创建JobDetail实例,并与printJob Class绑定
        JobDetail jobDetail = JobBuilder
                .newJob(PrintJob.class)
                .withIdentity("myjob","group1")
                .build();
        //2.定义Trigger实例,定义该job立即执行,并且每隔两秒重复执行一次,直到永远
        Trigger trigger = TriggerBuilder
                .newTrigger()
                .withIdentity("mytrigger","group1")
                .startNow()
                .withSchedule(
                        SimpleScheduleBuilder
                                .simpleSchedule()
                                .withIntervalInSeconds(2)
                                .repeatForever())
                .build();
        //3.通过Scheduler工厂获得Scheduler实例
        SchedulerFactory sf= new StdSchedulerFactory();
        Scheduler scheduler = sf.getScheduler();

        LocalDateTime timeNow = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy MM dd hh:mm:ss");
        System.out.println("Current time:"+formatter.format(timeNow));


        scheduler.scheduleJob(jobDetail,trigger);//*
        scheduler.start();//顺序无关
    }
}

(3)结果:每隔2s打印一次。

Current time:2018 07 30 06:28:49
[INFO ] 2018-07-30 18:28:49,075 method:org.quartz.core.QuartzScheduler.start(QuartzScheduler.java:547)
Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
execute time:2018 07 30 06:28:49
hello!
execute time:2018 07 30 06:28:50
hello!
execute time:2018 07 30 06:28:52
hello!

说明:scheduler.start();放在了后边,可以放*前边。

提升YOLOv8性能:用Swin Transformer替换Backbone的详细实现与分析【YOLOv8】 YOLOv8作为目标检测领域的最新版本,在速度和精度之间取得了良好的平衡。然而,随着计算机视觉任务的复杂性不断增加,YOLOv8的标准主干网络(Backbone)在处理高分辨率图像或多尺度目标时,可能存在一定的局限性。为了进一步提升YOLOv8的性能,我们可以引入Swin Transformer替换其主干网络,以增强模型的全局感知能力和多尺度特征提取能力。本文将详细介绍如何在YOLOv8中用Swin Transformer替换原有的Backbone,提供代码示例,并深入探讨其中的原理和效果。 阅读详情

相关推荐

基于浏览器插件的拼多多买家订单导出方法

基于浏览器插件的拼多多买家订单导出方法

2501_93542170的博客 1714

Quartz的任务的临时启动和暂停和恢复

在项目中需要手动启停某些服务,那么需要有一个控制这些任务的类。由于任务是有Quartz控制的,我们只需要通过Quartz的相关的API实现相关的功能即可。 Java代码 收藏代码 package com.easyway.app.quartz.mgr; import java.util.Date; import java.util.List; import java

mojolang 1658

ROS2 DDS中间件(图文并茂+超详细)

DDS 的目标场景在端上,致力于使端上的应用可以更容易的进行通信,由于它的完全分布式架构,可以方便的将端上的应用拆分为多进程架构,从而提高端的容错能力。从产品定位角度来讲,它和 Chromium 中的 mojo 都是端上的通信中间件,只不过 mojo 不强调分布式,内部集成了更多的特定于端上的机制,比如句柄的传输,消息的缓存等。但由于 mojo 生于 Chromium,目前官方并没有把它独立出来,所以用起来比较不方便。而 DDS 或许可以在简单的场景下作为 mojo 的替代品。

weixin_39939185的博客 5281

Quartz 在misfire模式[错失、补偿执行] 策略

概述 调度(scheduleJob)或恢复调度(resumeTrigger,resumeJob)后不同的misfire对应的处理规则 misfire产生的条件是:到了该触发执行时上一个执行还未完成,且线程池中没有空闲线程可以使用(或有空闲线程可以使用但job设置为@DisallowConcurrentExecution)且过期时间已经超过misfireThreshold就认为是misfire了...

张伯毅的专栏 7242

Polymarket链上预测市场自动化交易代理开发实战指南

自动化交易代理是量化交易的核心工具,它通过预设的算法规则,自动执行市场分析、决策与下单操作,旨在提升交易效率与纪律性。其技术原理通常涉及实时数据获取、策略引擎计算、交易执行与风险管理等模块的协同工作。在区块链与DeFi领域,这类代理的价值尤为凸显,能够高效处理链上合约交互,捕捉去中心化市场的套利机会。具体到应用场景,链上预测市场如Polymarket,为自动化策略提供了丰富的博弈标的。本文以Polymarket交易代理项目为例,深入剖析其基于Node.js与ethers.js的技术栈实现,详解从环境配置、策

weixin_42533910的博客 581

Python爬虫实战教程:如何高效爬取税务局通知通告

税务局发布的通知通告包含政策法规、办税指南、公告信息等,是纳税人、企业合规经营的重要参考。官网发布频率高,手动查看不便,自动爬取并保存,方便信息及时掌握及历史数据归档。本文以合法合规的方式示范,建议实际应用前确认目标网站允许爬取的范围和方式。建议使用pandas进行数据清洗,如去重、空值处理等。对于研究税务政策、进行大数据分析、搭建行业信息平台,爬取税务局通知通告信息尤为关键。公告列表以分页形式展现,包含标题、发布时间和详情页链接。进行政策趋势图、发布频率统计等可视化。爬取公开数据时,务必遵守网站的。

2201_76125261的博客 1780

Quartz使用技巧总结

Quartz 是一个很好的定时器框架,并且支持集群技术

lixiaotao_1的博客 548

量化交易:如何在QMT中运行Python策略并在VSCode中高效调试?

哈喽,大家好,我是木头左!

木头大左的博客 3757

任务调度开源框架Quartz动态添加、修改和删除定时任务

Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz框架包含了调度器监听、作业和触发器监听。你可以配置作业和触发器监听为全局监听或者是特定于作业和触发器的监听。Quartz 允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了 Quartz 的应用程序可以重用来自不同事件的

Joyce Luo的专栏 5万+

Android 12.0 系统开机设置默认横屏显示

在12.0的系统产品开发中,对于产品需求来说,由于是宽屏设备所以产品需要开机默认横屏显示,开机横屏显示这就需要从两部分来实现,一部分是开机动画横屏显示,另一部分是系统显示横屏显示,从这两方面就可以做到开机默认横屏显示了。

安卓兼职framework和app工程师的博客 3743

Sigrity System Explorer Transient Analysis模式进行瞬态仿真分析操作指导-差分信号

Sigrity System Explorer Transient Analysis模式可以用于瞬态仿真分析,通过搭建简易拓扑用于前仿真分析通道的时域性能,下面搭建一个简易的差分拓扑进行说明,以下图为例,准备好发送接收端的IBIS模型, (ibis_se.ibs,本例发送接收端都使用相同的IBIS模型),以及传输线的S参数模型(welement_se.sp)最上方的图形界面是传输线的模型,本例是一个上下都有参考平面的带状线,右侧的梯形是蚀刻角度,根据W1和W2以及铜厚来确定。

weixin_54787054的博客 440

Quartz概念详解

1、Quartz是什么: Quartz是由Java开发,可以用来执行定时任务的开源框架 2、主要概念 Scheduler- 与调度程序交互的API。 Job - 由希望由调度程序执行的组件实现的接口。 JobDetail - 用于定义作业的实例。 Trigger(即触发器) - 定义执行给定作业的计划的组件。 JobBuilder - 用于定义/构建JobDetail实例,用于定义作业的实例。 TriggerBuilder - 用于定义/构建触发器实例。 3、Scheduler...

wangqsse的博客 2281

SAP自动化-ME51N批量创建采购申请

2、需要管理员授权RZ11脚本录制回放功能。1、仅限于正对SAP日常工作的批量处理。3、数据模板按实际需求更新。物料编码,工厂,数量。

小九啥也不会 529

初探quartz scheduler

quartz是opensymphony提供的用来做SCHEDULE的框架在spring中通过org.springframework.scheduling.quartz.SchedulerFactoryBean来获得Schedule类 "quartzSchedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFact

汪翰翔的Blog 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

quartz详解

一名程序员网友发帖晒出了自己写的一段代码,是一段定时代码,根据他的语气,可以看出他对自己写的代码感觉很好,是一段java代码,好家伙,代码中多线程都用上了,还有sleep,然后自己这样写了就直接被老板赶走了,走之前为了面子还说到,你这公司我还看不上呢,其实一想写的确实没问题功能能实现,但是.........

weixin_50098749的博客 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Quartz以及SpringQuartz初探

这里是修真院后端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析后端知识/技能,本篇分享的是: 【Quartz以及SpringQuartz初探 】 今天给大家分享一下,修真院官网java任务十,可能会使用的新知识点Quartz以及SpringQuartz 1.背景介绍 Quartz是一个完全...

IT修真院:初学者转行到互联网的聚集地 714

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【Quartz篇】Quartz定时任务框架核心概念详解

【学习链接】参考:http://t.csdnimg.cn/AfVJR;

m0_53732433的博客 1574

Quartz初探

Quartz运行环境 Quartz可以运行嵌入在另一个独立式应用程序 Quartz可以在应用程序服务器(或servlet容器)内被实例化,并且参与事务 Quartz可以作为一个独立的程序运行(其自己的java虚拟机内),可以通过RMI使用 Quartz可以被实例化,作为独立的项目集群(负载平衡和故障转移功能),用于作业的调度 Quartz设计模式 Builder模式 Factory模式 组件模式 链式模式 Quartz学习的核心概念 任务job:想实现的任务类,每一个job必须实现org.

weixin_37841366的博客 873

Quartz详解入门必备

Quartz是什么 Java中的**定时任务**调度框架!!! Java中我们可以常看到定时框架: Quartz框架 Spring Task框架 但是Quartz框架使用的成都比较多,调度简单 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。 Quartz可以用来创建简单或为运行十个...

黄文孝同学的博客 6489

SpringBoot-初探Quartz

一、什么是Quartz? Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目。可以方便的继承在Java项目中完成任务调度功能。总体功能和java.util.Timer很像,但是要比Timer功能更加强大。且不像Scheduler执行一个固定的任务,在Quartz可以对任务进行操作,新增任务,删除任务等。 在springboot自带的定时任务中,一旦定时任务的代码编写好则在运行期间无法改变,若是想要改变定时任务的执行频率或者暂停该任务必须修改代码重新启动服务,这是非

qq_42861526的博客 1811

quartz详解1:初步了解quartz?

一、引入       你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后一天执行。一个自动执行而无须干预的任务在执行过程中如果发生一个严重错误,应用能够知到其执行失败并尝试重新执行吗?你和你的团队是用Java编程吗?如果这些问题中任何一个你回答是,那么你应该使用Quartz调度器。     旁注:Matrix目前就大量使用到了Quartz。比如,排

Tim_java2的博客 920

Quartz框架详解分析

job一般需要实现的接口,JobJobDetail:用于描述这个Job是做什么的实现Job的类:具体干活的JobDataMap:给 Job 提供参数用的这是除了方式之外,还可以是其他方式,像这样默认情况,Quartz的触发器,调度,任务等信息都是放在内存中的,叫做。好处是快速,坏处是一旦系统重启,那么信息就丢失了,就得全部从头来过。所以Quartz还提供了另一个方式,可以把这些信息存放在数据库做,叫做JobStoreTX。

上善若泪 2489

Quartz详解与使用

目录 1.Quartz介绍 2.Quartz的触发器 2.1五种类型的Trigger(定时器) 3.储存方式 3.2 cron表达式 4.Quartz创建定时任务 4.1导入Quartz依赖 4.2job任务类 4.3 具体业务实现 5 Quartz 核心类详解 5.1 Scheduler 调度器 5.2 Job 定时任务 5.3 Trigger 触发器 1.Quartz介绍 任务调度框架“Quartz”是OpenSymphony开源组织在Job scheduling...

weixin_58670730的博客 5730

Quartz

摘要:文章介绍了 Quartz 调度框架的基本概念、配置示例以及常见问题解决方案,并详细讲解了其核心原理、源码结构分析、常用注解说明以及主要组件功能与特点。同时提供了思维导图帮助读者更好地理解和掌握 Quartz 的整体架构。

Java_soul_GJH的博客 1127

quartz详解1:初步了解quartz

http://blog.itpub.net/11627468/viewspace-1763389/一、引入      你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后一天执行。一个自动执行而无须干预的任务在执行过程中如果发生一个严重错误,应用能够知到其执行失败并尝试重新执行吗?你和你的团队是用Java编程吗?如果这些问题中任何一个你回答是,那么你应该使用Q...

庖丁解牛 323

quartz 不执行_初探SpringBoot整合Quartz定时任务

作者|伊星宇动态定时任务,就是在不重启服务的状态下,可以做到继续添加,更新已有,删除已有任务。定时任务有很多实现的方式,包括timer,timertask,scheduledexecutorservice,以及第三方框架Quartz。本篇文章主要介绍SpringBoot整合Quartz实现动态定时任务。什么是Quartz以及Quartz的基本组成1、Quartz是功能强大的开源作业调度库...

weixin_39972519的博客 3444
上一篇: java替换所有子串--replaceAll、正则
下一篇: java8--日期时间
王小禾
博客等级 码龄11年 80粉丝 291原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值