Spring与Quartz的任务调度比较
任务调度代码比较
Spring 2.x 任务调度示例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<bean id="demoJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 目标Bean --> <property name="targetObject"> <bean class="cc.gmem.demo.DemoService" /> </property> <!-- 目标方法 --> <property name="targetMethod" value="doStuff" /> <!-- 防止并发执行 --> <property name="concurrent" value="false" /> </bean> <!-- 简单触发器 --> <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="demoJob" /> <!-- 启动后,调度开始的时间 --> <property name="startDelay" value="0" /> <!-- 每隔2000ms调度一次 --> <property name="repeatInterval" value="2000" /> </bean> <!-- Cron触发器 --> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="demoJob" /> <property name="cronExpression" value="15 0/2 * * * ?" /> </bean> <!-- 调度工厂Bean --> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="simpleTrigger" /> <ref bean="cronTrigger" /> </list> </property> </bean> |
Spring 3.x 任务调度示例
配置文件方式
|
1 2 3 4 5 6 7 |
<!-- 任务调度器配置,pool-size为线程池大小,限制了同时最多被调度的任务 --> <task:scheduler pool-size="100" id="scheduler" /> <!-- 任务计划列表,支持固定频率、固定延迟、Cron表达式等 --> <task:scheduled-tasks scheduler="scheduler"> <task:scheduled fixed-rate="120000" method="doStuff" ref="demoService" /> <task:scheduled cron="15 0/2 * * * ?" method="doStuff" ref="demoService" /> </task:scheduled-tasks> |
Quartz任务调度示例
特性比较
| 比较项 | Spring2.x | Spring3.x | Quartz |
| 优… |
15 years ago
0
GNU Make学习笔记
make
概述
对于任何编译器可以通过Shell调用的编程语言,均可以通过GNU Make(以下称make)构建。make可以用于任何这样的任务:如果某些文件所依赖的文件发生了变化,则自动更新这些文件。
需要编写makefile文件来使用make,该文件中包含了文件之间的依赖关系、提供更新每个文件的命令,在makefile所在目录中运行make命令,即可完成文件更新,make会根据文件名GNUmakefile、makefile、Makefile依次寻找,可…
阅读全文
15 years ago
0
Spring知识集锦
配置
Spring各种注入方式的区别
| 注入方式 | 说明 |
| @Resource | 来源:JSR250 (Common Annotations for Java) 注入方式:
|
15 years ago
0
Linux内核学习笔记(五)
调试
内核的调试比用户级程序困难的多,并且风险高——内核中的一个错误可能导致系统立即崩溃。驾驭内核调试的能力很大程度上取决于经验和对内核的深刻理解。
通过打印来调试
内核提供的打印函数 printk() 与对应的C库函数功能几乎相同,但是它有一些特殊的特性:
健壮性
printk()函数是个弹性极佳的函数,可以在中断上下文、进程上下文、持有任何锁时、…
阅读全文
15 years ago
0
Dom4j知识集锦
如何禁止加载XSD和DTD
|
1 2 |
SAXReader reader = new SAXReader( true ); reader.setFeature( Constants.XERCES_FEATURE_PREFIX + Constants.LOAD_EXTERNAL_DTD_FEATURE, false ); |
DTD验证,无法联网时报错
通过指定本地的DTD文档来解决:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
SAXReader reader = new SAXReader( true ); reader.setEntityResolver( new EntityResolver() { public InputSource resolveEntity( String publicId, String systemId ) { if ( publicId.equals( "-//Hibernate/Hibernate Mapping DTD 3.0//EN" ) ) { InputStream in = getClass().getResourceAsStream( "/hibernate-mapping-3.0.dtd" ); return new InputSource( in ); } return null; } } ); |
使用JAXP来进行XSD验证
Dom4j如何格式化XML输出
如何使用XPath解析带名字空间的XML
Dom4j访问者模式中,删除节点导致NullPointerException
报错:java.lang.NullPointerException at org.dom4j.tree.AbstractElement.accept(AbstractElement.java:208)
解决:在访问者中记录需要删除的节点,访问结束后一… 阅读全文
15 years ago
0
Linux文本编辑器
启动
|
1 2 |
# 以窗口模式启动 emacs -nw |
常用快捷键
C默认为Ctrl键,M默认为Alt键
| 快捷键 | 说明 |
| 基本 | |
| C-x C-c | 退出 |
| C-x C-f | 打开/新建文件 |
| C-x C-s | 保存文件 |
| C-x C-w | 另存为 |
| C-g | 取消正在编辑的命令 |
| C-` | 激活菜单,和我的环境冲突。修改为C-\ |
| M-x | 输入命令 |
| 光标 | |
| C-v M-v | 下一页 上一页 |
| C-l | 当前行居中显示 |
| C-b C-f… | |
15 years ago
0
