|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
j2EE和asp比较,其实也没什么比的,原因和我上面说那些比较差不了多少,也是稳定性,安全性,J2EE比asp高,速度上比不过asp,asp也是延续着它的拖拽控件的方法,提高速度。1:异步容错的处置需求
碰到毛病动静后,把动静写进到表中同时写进到queue中,把这个毛病的内容异步关照到其他体系中往。同步的工夫距离以2的N次方递增,计划的条件是只管减小数据库的压力。
2:计划
java.util.concurrent.DelayQueue中的对象必需完成java.util.concurrent.Delayed的接口,Delayed元素的一个无界堵塞行列,只要在提早期满时才干从中提取元素。该行列的头部是提早期满后保留工夫最长的Delayed元素。假如提早都还没有期满,则行列没有头部,而且poll将前往null。当一个元素的getDelay(TimeUnit.NANOSECONDS)办法前往一个小于即是0的值时,将产生到期。即便没法利用take或poll移除未到期的元素,也不会将这些元素作为一般元素看待。比方,size办法同时前往到期和未到期元素的计数。此行列不同意利用null元素。
行列中的对象计划:
publicclassDelayDomainimplementsDelayed{
/**
*处置机制:依照发送次数2的N次方秒递增。
*@parampayInternalNotify
*/
publicDelayDomain(intsendtime,Stringurl){
this.sendTime=(newDate()).getTime()+(long)Math.pow(2,sendtime)*TIME_UNIT;
this.url=url;
}
@Override
publicintcompareTo(Delayedobj){
DelayDomaindelayDomain=(DelayDomain)obj;
longtimeout=sendTime–delayDomain.sendTime;
returntimeout>0?1:timeout<0?-1:0;
}
@Override
publiclonggetDelay(TimeUnitunit){
returnsendTime–System.currentTimeMillis();
}
privatestaticfinalintTIME_UNIT=1000;//依照秒来递增
privatelongsendTime;
privateStringurl;
publicStringgetUrl(){
returnurl;
}
}
Queue的代码:
publicclassSendQueue{
publicstaticvoidput(DelayDomainDelayDomain)
throwsInterruptedException{
QUEUE.put(DelayDomain);
}
publicstaticDelayDomaintake()throwsInterruptedException{
returnQUEUE.take();
}
/**
*增加毛病动静到行列中,
*@parampayInternalNotify
*/
publicstaticvoidaddSendUrl(intsendTime,Stringurl)
throwsInterruptedException{
DelayDomainDelayDomain=newDelayDomain(sendTime,url);
put(DelayDomain);
}
privateSendQueue(){};
//服务行列
privatestaticfinalBlockingQueue<DelayDomain>QUEUE=newDelayQueue<DelayDomain>();
}
测试代码:
publicclassDelayMain{
publicstaticvoidmain(String[]args)throwsException{
System.out.println("Starttime@"+getNow());
SendQueue.addSendUrl(2,"www.baidu.com");
SendQueue.addSendUrl(1,"www.google.com");
SendQueue.addSendUrl(3,"www.hao123.com");
while(true){
DelayDomaindomain=SendQueue.take();
System.out.println(domain.getUrl()+"@"+getNow());
}
}
privatestaticStringgetNow(){
SimpleDateFormatsdf=newSimpleDateFormat("HH:mm:ss");
returnsdf.format(newDate());
}
}
输入了局:
Starttime:11:20:21
www.google.com@11:20:23
www.baidu.com@11:20:25
www.hao123.com@11:20:29
我们看到google在2秒后出行列,百度的4秒,hao123的8秒。放到行列中会主动依照工夫按次来排序,只要工夫到了才会被take出行列,不然一向守候。
3:计划弱点
修正数据库形态不克不及主动同步了。必要经由过程剧本来实行一些过时的内容,大概经由过程接口体例处分容错。
j2EE和asp比较,其实也没什么比的,原因和我上面说那些比较差不了多少,也是稳定性,安全性,J2EE比asp高,速度上比不过asp,asp也是延续着它的拖拽控件的方法,提高速度。 |
|