- 浏览: 461995 次
- 性别:
- 来自: 杭州
最新评论
-
chxiaowu:
nice!
Quartz实现固定执行次数 -
zxjlwt:
学习了。http://surenpi.com
自定义ClassLoader -
kadlly:
public static final Logger log ...
Hessian 权限认证 -
spring_springmvc:
java程序语言学习教程 地址http://www.zuida ...
Java-Final -
liushuiwuyan:
[img][/img]
设计模式-单例
文章列表
CyclicBarrier
官方解释:一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点(common barrier point).在涉及一组固定大小的线程程序中,这些线程必须不时地互相等待,此时CyclicBarrier很有用。因为barrier在释放等待线程后可以重用,所以称它为循环的barrier.
CyclicBarrier支持一个可选的Runnable命令,在一组线程中的最后一个线程到达之后(但在释放所有线程之前),该命令只在每个屏障点运行一次。若在继续所有参与线程之前更新共享状态,此屏障操作很有用.
CyclicBarrier和CountDownLatch不同,Cycl ...
一般比较正式的XML信息中都会包含对应的DTD声明,用来定义 该XML文档中的格式,例如WEB项目中用到的web.xml,例如struts的配置文件struts-config.xml,下面是web.xml中 用到的DTD信息:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
当我们用DOM或者Digester来解析这 ...
CountDownLatch
官法解释:一个对同步有帮助的类,它允许一个或多个线程等待只到这组操作在其他线程全部完成.
官司用法:初始是由一个给定的count,await方法可以阻塞只到当前count到达0.这是一个自减机制,比如你初始化 count为5,每调用一次countDown,就减1,只到为0,才释放所有线程,但是这种门插锁机制只有一次有效性,如果你想样多次使用,reset,那么推荐使用CyclicBarrier.
官法用例:
两个countdown latches:
1 阻止所有工人行动,只到司机到来才可以行动.
2 阻止司机行动,只到所有工人的工作都已经完成
packag ...
Enum
一般用来表示一组相同类型的常量.比如性别,月份,颜色等.
1.声名Enum
Public enum Sex{
MAN,
WOMAN
}
Public enum Color{
RED,BLUE,GREEN,BLACK
}
2. 使用Enum
JavaEnum简单的用法一般用于代表一组常量,可用来代码一类相同类型的常量值.[常量一般大写,注意规范]
package org.yclframework.auth.test.dao.ibatis;
public enum Sex {
MAN("男"),WOMAN("女" ...
如果断Maven的依赖构建必须每一个项目都指定,那配置是累死人了,比如A依赖了20个项目,B依赖A,那么还要添加20个项目,那就悲剧了,maven有依赖传递的功能。
1、Transitive Dependency (传递依赖)
你的项目依赖于A,A又依赖于B。你的 ...
上一节建立了两个项目,依赖关系是由app项目提交jar到maven库中,然后wabapp加载依赖库实现的.
这一节介绍使用项目间的依赖关系,比如我这个项目必须与另一个项目共存,那么可以建立依赖关系.
以下是在两个项目的上级目录建立pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache. ...
maven 是开源项目构建的道选,众观开源项目,基本上被maven一统了。
现在我们就看看maven有何神奇之处:
1. 建立app的java项目
1. 首先到一个目录下,执行如下命令:
D:\maven\demo>mvn archetype:create -DgroupId=com.test.app -DartifactId=app
执行这一步生成Java项目的目录结构.
2. 再生成Eclipse项目,执行如下命令
D:\maven\demo\ app >mvn eclipse:eclipse
3. 把项目导入Eclipse,然后修改App.java的代码如下:
...
SimpleTriggerBean: 简单触发器.
startDelay: 指点一次执行时的延迟.
jobDetail: 任务详情,不解释
jobDataAsMap:设置任务中的JobDataMap
repeatCount: 重复次数[配置为0时执行一次]
repeatInterval: 两次执行时的间隔
timesTriggered: 执行次数[没用过]
(一般的任务定时调度使用SimpleTrigger就够了).
如何实现动态定时程序,比如,我设置A任务在2012年9月28日完成,B任务在2012年9月30日完成,如果到期还没有完成则发个邮件给我.
设计思路,创建一个方法,然后在自己的 ...
废话不多,看完以前的例子,直接点:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean class="org.springframework.scheduling.quartz.Schedul ...
在任务高度中,当任务执行完后,可能要做一些事情,比如日志等.
上一节是执行固定次数的程序,监听的是Trigger,使用TriggerListner
这一节是执行完这个任务后执行日志,监听的是Job, 使用JobListener.
废话不多,代码如下:
package test.quartz.spring;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.listeners.JobListenerSupport;
public cl ...
Quartz实现固定执行次数
虽然上一讲中说明,在实际应用中很少用到Quartz实现固定执行次数,但是我就是那个钻牛角尖的人.废话不多,代码如下:
实现思路:
1. 在上一讲中说明Quartz的JobDetail可以是无状态的,也可以是有状态的。Trigger无状态的,所以只能使用JobDetail有状态的子接口StatefulJob.Job代码如下:
package test.quartz.spring;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobDataMap;
import o ...
Quarz入门(三)
前面入程序的入门主要是让大家对quartz有个基础的认识,其使用并不复杂。
下面介绍Quarz的应用场景:
1.论坛 每隔半个小时生成精华文章的RSS文件 每天凌晨统计论坛用户的积分排名 每隔30分钟执行锁定用户解锁任务
...
看完入门一程序,接下来接着讲解入门二.
JobDetail jobDetail = new JobDetail();
jobDetail.setJobClass(QuartzReport.class);
jobDetail.setName("MyJob_1");
jobDetail.setGroup("JobGroup_1");
1、创建JobDetial对象,设置工作项,这里有一个概念,JobClass,Name,Group.
上一讲的初始化程序为
...
public class QuartzReport implements Job {
public void execute(JobExecutionContext cntxt) throws JobExecutionException {
System.out.println("杨春龙,太帅了");
System.out.println( " Generating report - "
+ cntxt.getJobDetail().getJobDataMap().get("ty ...
Quartz入门例子
1.建立任务.
public class QuartzReport implements Job {
public void execute(JobExecutionContext cntxt) throws JobExecutionException {
System.out.println("杨春龙,太帅了");
System.out.println( " Generating report - "
+ cntxt.getJobDetail().getJobDat ...