java计划任务调度框架quartz结合spring实现调度的配置实例代码分享

链表:将两个有序的链表合并为一个新链表 将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的。 法一:递归T(m+n) 解题思路: 1.终止条件:l1为空,返回l2,l2为空,返回l1 2.返回值:每一层调用都返回排序好的链表头 3.本级递归内容:如果 l1 的 val 值更小,则将 l1.next 与排序好的链表头相接,l2 同理 O(m+n),m 为 l1的长度,n 为 l2 的长度 class Solution { public ListNode mergeTwoLists(List 阅读详情

原创不易,转载请注明出处:
java计划任务调度框架quartz结合spring实现调度的配置实例代码分享

代码下载地址:http://www.zuidaima.com/share/1755429240540160.htm

一:quartz简介

       OpenSymphony 的Quartz提供了一个比较完美的任务调度解决方案。

       Quartz 是个开源的作业调度框架,定时调度器,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。

       Quartz中有两个基本概念:作业和触发器。作业是能够调度的可执行任务,触发器提供了对作业的调度

二:quartz spring配置详解

  •  为什么不适用java.util.Timer结合java.util.TimerTask 

        1.主要的原因,适用不方便,特别是制定具体的年月日时分的时间,而quartz使用类似linux上的cron配置,很方便的配置每隔时间执行触发。

        2.其次性能的原因,使用jdk自带的Timer不具备多线程,而quartz采用线程池,性能上比timer高出很多。
 

  •    详解quartz在spring里面的配置

    在spring里主要分为两种使用方式:第一种,也是目前使用最多的方式,spring提供的MethodInvokingJobDetailFactoryBean代理类,通过雷利类直接调用任务类的某个函数;第二种,程序里实现quartz接口,quartz通过该接口进行调度。

      主要讲解通过spring提供的代理类MethodInvokingJobDetailFactoryBean

        1.业务逻辑类:业务逻辑是独立的,本身就与quartz解耦的,并没有深入进去,这对业务来讲是很好的一个方式。

[java]  view plain copy print ?
  1. public class  TestJobTask{  
  2.       /** 
  3.        *业务逻辑处理 
  4.        */  
  5.         public void   service(){  
  6.             /**业务逻辑*/  
  7.                 ..  
  8.         }  
  9. }  

       
    2.增加一个线程池

  1. <!-- 线程执行器配置,用于任务注册 -->  
  2. <bean id="executor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">  
  3.  <property name="corePoolSize" value="10" />  
  4.  <property name="maxPoolSize" value="100" />  
  5.  <property name="queueCapacity" value="500" />  
  6. </bean>  

  3.定义业务逻辑类

  1. <!-- 业务对象 -->  
  2. <bean id="testJobTask" class="com.mike.scheduling.TestJobTask" />  

    4.增加quartz调用业务逻辑
 

  1. <!-- 调度业务 -->  
  2. <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
  3.  <property name="targetObject" ref="testJobTask" />  
  4.  <property name="targetMethod" value="service" />  
  5. </bean>  


    5.增加调用的触发器,触发的时间,有两种方式:

      第一种触发时间,采用类似linux的cron,配置时间的表示发出丰富  

  1. <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
  2.  <property name="jobDetail" ref="jobDetail" />  
  3.  <property name="cronExpression" value="10 0/1 * * * ?" />  
  4. </bean>  

   Cron表达式“10 */1 * * * ?”意为:从10秒开始,每1分钟执行一次 
  
    第二种,采用比较简话的方式,申明延迟时间和间隔时间

  1. <bean id="taskTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">  
  2.  <property name="jobDetail" ref="jobDetail" />  
  3.  <property name="startDelay" value="10000" />  
  4.  <property name="repeatInterval" value="60000" />  
  5. </bean>  

   延迟10秒启动,然后每隔1分钟执行一次 

    6.开始调用
 

  1. <!-- 设置调度 -->  
  2. <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
  3.  <property name="triggers">  
  4.   <list>  
  5.    <ref bean="cronTrigger" />  
  6.   </list>  
  7.  </property>  
  8.  <property name="taskExecutor" ref="executor" />  
  9. </bean>  


   7.结束:启动容器即可,已经将spring和quartz结合完毕。

   
 Cron常用的表达式


"0 0 12 * * ?" 每天中午12点触发

"0 15 10 ? * *" 每天上午10:15触发

"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发 
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发


三:quartz原理

    根据上面spring的配置,我们就比较清楚quartz的内部情况,下面我们主要详解配置涉及到的每个点

    1.我们先从最后一个步骤看起, SchedulerFactoryBean ,scheduler的工厂实现,里面可以生产出对应的多个jobDetail和trigger,每个jobDetail对应trigger代表一个任务
          Quartz的SchedulerFactory是标准的工厂类,不太适合在Spring环境下使用。此外,为了保证Scheduler能够感知 Spring容器的生命周期,完成自动启动和关闭的操作,必须让Scheduler和Spring容器的生命周期相关联。以便在Spring容器启动后, Scheduler自动开始工作,而在Spring容器关闭前,自动关闭Scheduler。为此,Spring提供 SchedulerFactoryBean,这个FactoryBean大致拥有以下的功能: 

     1)以更具Bean风格的方式为Scheduler提供配置信息; 

     2)让Scheduler和Spring容器的生命周期建立关联,相生相息; 

     3)通过属性配置部分或全部代替Quartz自身的配置文件。 

  2.jobDetail,表示一个可执行的业务调用
  
  3.trigger:调度的时间计划,什么时候,每隔多少时间可执行等时间计划

  4. ThreadPoolTaskExecutor,线程池,用来并行执行每个对应的job,提高效率,这也是上面提到不推荐使用jdk自身timer的一个很重要的原因

合并两个有序链表C# 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/merge-two-sorted-lists 著作权归领扣网... 阅读详情

相关推荐

用C#语言实现合并两个有序链表

用C#语言实现合并两个有序链表 题目详情: 解题思路: 创建一个新的链表,只有一个头节点。然后两个指针分别指向l1,l2进行遍历,新链表的结点指向遍历中值小的节点。 代码实现: ...

weixin_45775445的博客 680

合并两个有序链表(超详细)

超级详细的合并两个有序链表(2种方法画图分析)

川子767的博客 1819

【LeetCode算法 - C#】21.合并两个有序链表

将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入l1=[1,2,4],l2=[1,3,4]输入l1=[],l2=[0]输出[1,1,2,3,4,4]

不咸不甜的奶糖乐园 247

链表的合并操作(1)C#

算法: 将两个递增的有序链表合并成为一个递增的有序链表。 要求: //1.要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间。 //2.并且表中不允许有重复的数据。 我的想法是 把算法函数 构建在单链表类里面。 函数的形参同样设置一个单链表类变量。 那么,把形参的链表和引用函数的本体链表作为链表合并的两个链表。 其中假定两个链表均为递增的的有序链表(呼应算法前提)。 并且以引用函...

河北师范大学 地理信息科学专业 GISer 844

C#实现链表合并——merge linked list

在每个迭代中,我们比较指针所指向节点的值,将较小的节点链接到tail后面。最后,我们返回dummyNode的Next节点,这是合并后的链表的头部。链表的合并是一种常见的操作,在合并两个链表时,我们需要遍历两个链表并比较它们的节点。本文介绍了C#中实现链表合并的方法,并提供了实际代码示例。在上面的代码中,我们首先创建了两个有序链表list1和list2。然后我们使用MergeLists()方法将它们合并到一个新的链表mergedList中。在某些情况下,我们需要将两个链表合并成一个链表。

WELL_CODER的博客 535

两个有序表的合并(三种方法)

设有两个递增排列的有序表,要求合并后仍按递增(非递减)有序排列

AIGC 1万+

leetcode21 合并两个有序链表(C#)

题目 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 解答 解法一:双指针 这个方法很粗暴,l1 和 l2 各持有一个指针来遍历两个单链表,把值比较小的节点加入存储答案的链表,直到 l1 和 l2都遍历完毕。 解...

moon_goes的博客 563

从部署到养成:Hermes智能体接入DeepSeek与微信机器人的完整实战指南

智能体(Agent)正成为大模型从“对话”走向“行动”的关键形态。它通过拆解指令、调用工具、执行任务,让AI真正参与工作流。Hermes作为可本地部署的开源智能体框架,支持接入DeepSeek等主流大模型,并提供网关、工具调用、记忆管理等模块化能力。从Docker容器部署到微信机器人桥接,从自动化定时任务到Computer Use桌面控制,Hermes将个人助理从概念落地为可运行的工程系统。本文基于真实实践,梳理架构原理、部署流程、API配置与高频故障排查,为技术玩家提供一套从零到一的上手指南。

weixin_29045001的博客 263

C#合并两个有序链表

如果链表1的第一个节点小于等于链表2的第一个节点,current的next就指向list1,list1重新指向下一个节点,反过来链表1的节点大于链表2的节点,current的next就指向list2,list2重新指向下一个节点,最后current也重新指向下一个节点,进行下一次循环。解题思路:可以利用While循环对两个链表的每个节点进行循环比较,利用链表的.next属性,来遍历链表的每个元素。首先创建一个新的链表来存放需要连接的两个链表,并声明一个变量current来指向新链表。

2503_92489656的博客 414

阿里云学生机2核4G,30分钟搞定DNF台服联机(CentOS 7.6保姆级教程)

本文提供阿里云学生机2核4G搭建DNF台服联机的详细教程,涵盖服务器选购、网络配置、服务端部署及客户端联机设置。通过CentOS 7.6系统优化和端口配置,30分钟内即可完成搭建,适合学生和技术爱好者低成本实现游戏联机体验。

weixin_42537919的博客 359

MySQL下载和安装教程

1.下载MySQL数据库可以访问官方网站:https://www.mysql.com/ 2.点击DOWNLOADS模块下的Community模块下的MySQL Community Server进行下载。 由于目前最新版本是:MySQL Community Server 5.7.21 建议博友下载历史版本,本博下载的是5.6.39 下载步骤: 进入,选择MySQL的版本及主机 根据自己的电脑选择相应的位数进行下载,本机是64位,点击download。 进入下.

残雪的剑的博客 4万+

[C#版剑指offer]合并两个有序链表

给定两个有序的链表,通过一个函数来使得两个链表合并之后仍然有序 思路:创建两个node节点,一个节点作为头节点(prehead)代表最后要输出的节点,另外一个节点作为头节点指向的下一个节点,这个节点(newlistnode)作为合并两个链表的中介。 当L1链表的当前节点值小于L2链表的当前节点值时,使得这个newlistnode的下一个指向为L1链表的当前节点,同时L1链表跳转至下一个节点。按照上述流程可以写如下迭代的代码。 public class ListNode { p

旧时佑忆的空间 359

scGPT学习资料汇总 - 单细胞多组学基础模型

scGPT(single-cell Generative Pre-trained Transformer)是一个针对单细胞多组学数据的基础模型,由多伦多大学Wang Bo实验室开发。该模型通过在超过3300万个细胞上进行生成式预训练,捕捉了基因和细胞之间的复杂关系,为多种下游任务提供了强大的基础。scGPT为单细胞分析提供了强大的基础模型和丰富的资源。通过本文汇总的学习材料,读者可以快速掌握scGPT的使用,并将其应用到自己的研究中。

2401_87189860的博客 838

用C#解决LeetCode合并两个有序链表

标题 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/merge-two-sorted-lists 著作...

luobendehaishen的博客 305

RGB渐变颜色转换公式及例程

设Step=51,将RGB(255,0,0)颜色渐变为RGB(0,255,0),即RGB(255,0,0)经过51次颜色渐变转为RGB(0,255,0);设Step=51,将RGB(0,255,0)颜色渐变为RGB(0,0,255),即RGB(0,255,0)经过51次颜色渐变转为RGB(0,0,255);设Step=51,将RGB(0,0,255)颜色渐变为RGB(255,0,0),即RGB(0,0,255)经过51次颜色渐变转为RGB(255,0,0);分步骤的方式,使其渐变色循环整个颜色值;

1万+

vivo X200 Ultra前瞻系列(1):重塑影像旗舰标准

在色彩风格化、视频专业度上实现了安卓阵营的突破性进步。其2亿像素长焦、双LYT-818传感器及5轴防抖技术,对追求个性化创作的用户具有强吸引力。若真机表现能兑现硬件承诺,X200 Ultra有望重新定义手机影像的“专业”标准。然而,其厚重设计、价格门槛及生态适配问题,仍需市场检验。vivo X200 Ultra作为2025年上半年影像旗舰,以“全焦段夜视仪+电影级视频”为核心卖点,主打。,对标小米15 Ultra、OPPO Find X8 Ultra等竞品。,顶配版(24GB+2TB)逼近万元。

专注:太空算力、AI infra、异构调度、大模型成本工程 965

C# 合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]l1 和 l2 均按 非递减顺序 排列来源:力扣(LeetCode)

Blossom_fall的博客 299

关于UMI设备采集数据的模型训练方法

模仿学习如专家模型、VLA模型,ACT、DP、openpi等算法模型训练时,都是使用的机器人的绝对位姿或关节角;而UMI记录的轨迹是相对于UMI起始点的,可以理解为是相对于起点的绝对增量,对应到机器人中就是相对于末端TCP的增量。在用模型进行训练时,当然可以,但这样进行模型训练的话达不到跨本体的能力,因为模型本身还是学习的基于机器人base坐标系的绝对位姿关系,倘若用这种方式进行处理,则UMI可以理解为是一个遥操的方法,本质还是记录的机器人的state。在看了和。

boss-dog 421

力扣:21、合并两个有序链表(C#)

合并两个有序链表

qq_43780885的博客 314

车辆网络安全ISO/SAE 21434解读(一)概述

ISO/SAE 21434 《道路车辆 网络安全工程》是SAE和ISO共同制定的一项针对道路车辆的网络安全标准,它是一个面向汽车行业全供应链(OEM及各级供应商)的车辆网络安全管理指导文件

xiaoxiabang的博客 8426

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

PTA 7-4 两个有序链表序列的合并(C#)

输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。下面第一个是有注释版代码,第二个是无注释版。

weixin_74864555的博客 953

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

算法: 合并两个有序链表 (Javascript/C#)

1. 题目: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 e.g 输入:l1 = [1,2,5], l2 = [1,3,4] 输出:[1,1,2,3,4,5] 2. 思路 (迭代) 我们可以用迭代的方法来实现上述算法。当 l1 和 l2 都不是空链表时,判断 l1 和 l2 哪一个链表的头节点的值更小,将较小值的节点添加到结果里,当一个节点被添加到结果里之后,将对应链表中的节点向后移一位。 3. 代码 3.1. C# /** * public clas

Jack @ 优快云 6615

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Leetcode 21. 合并两个有序链表 C#解法

递归方法 public class ListNode { public int val; public ListNode next; public ListNode(int val = 0, ListNode next = null) { this.val = val; this.next = next; } } public class Solution { public ListNode MergeTwoLists(Li

x3464的博客 208

LeetCode:合并两个有序链表(c#)

题目内容 代码实现 /** * Definition for singly-linked list. * public class ListNode { * public int val; * public ListNode next; * public ListNode(int x) { val = x; } * } */ public class Sol...

AI的博客 784

力扣_合并两个有序链表_C#_递归

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/merge-two-sorted-lists 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 /** * Definition for singly-linked list. *

weixin_43970896的博客 166

LeetCode实战:合并两个有序链表

题目英文: Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. Example: Input: 1->2->4, 1->3->4 Outpu...

老马的程序人生 3261
上一篇: Spring定时器配置的两种实现方式OpenSymphony Quartz和java Timer详解
下一篇: Spring AOP注解通过@Autowired,@Resource,@Qualifier,@PostConstruct,@PreDestroy注入属性的配置文件详解
LuckyJiang.2021
博客等级 码龄15年 217粉丝 199原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LuckyJiang.2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值