当前位置: 首页 > news >正文

微网站特效建网站多少钱合适

微网站特效,建网站多少钱合适,芜湖做网站的邓健照片,wordpress media.phpEDA#xff08;Event-Driven Architecture#xff09;是一种实现组件之间松耦合、易扩展的架构方式。一个最简单的EDA设计需要包含如下几个组件#xff1a; Events#xff1a;需要被处理的数据。一个Event至少包含两个属性#xff0c;类型和数据#xff0c;类型决定了Eve…    EDAEvent-Driven Architecture是一种实现组件之间松耦合、易扩展的架构方式。一个最简单的EDA设计需要包含如下几个组件 Events需要被处理的数据。一个Event至少包含两个属性类型和数据类型决定了Events被哪个Handler处理数据是Handler中代加工的材料。 Event Handlers处理Events的方式方法。一般是一些方法操作。 Event Loop维护Events和Event Handlers之间的交互流程。接收所有的Event然后将其分配给合适的Handler处理。 MessageEvent无论是在同步还是异步的EDA中没有使用任何同步方式进行控制根本原因是Event被设计成了不可改变对象因为Event在经过每一个ChannelHandler的时候都会创建一个全新的Event多个线程之间不会出现资源竞争不需要同步的保护。 同步方案代码 public interface Message { Class? extends Message getType(); } public interface ChannelE extends Message{ void dispatch(E message); } public interface DynamicRouterE extends Message { void registerChannel(Class? extends E messageType,Channel? extends E channel); void dispatch(E message) throws MessageMatcherException; } public class Event implements Message{ Override public Class? extends Message getType() { return getClass(); } } import java.util.HashMap; import java.util.Map;public class EventDispatcher implements DynamicRouterMessage{ private final MapClass? extends Message,Channel routerTable;public EventDispatcher() { this.routerTablenew HashMap(); }Override public void registerChannel(Class? extends Message messageType, Channel? extends Message channel) { this.routerTable.put(messageType, channel); }Override public void dispatch(Message message) throws MessageMatcherException { if(this.routerTable.containsKey(message.getType())){ this.routerTable.get(message.getType()).dispatch(message); }else { throw new MessageMatcherException(Cant match the channel for [message.getType()] type); } }} public class MessageMatcherException extends Exception { public MessageMatcherException(String message) { super(message); } } public class EventDispatcherExample {static class InputEvent extends Event{ private final int x; private final int y; public InputEvent(int x,int y) { this.xx; this.yy; } public int getX() { return x; } public int getY() { return y; } } static class ResultEvent extends Event{ private final int result; public ResultEvent(int result) { this.resultresult; } public int getResult() { return result; } }static class ResultEventHandler implements ChannelResultEvent{ Override public void dispatch(ResultEvent message) { System.out.println(The result is:message.getResult()); } }static class InputEventHandler implements ChannelInputEvent{ private final EventDispatcher dispacher; public InputEventHandler(EventDispatcher dispatcher) { this.dispacherdispatcher; }Override public void dispatch(InputEvent message){ System.out.printf(X:%d,Y:%d\n,message.getX(),message.getY()); int resultmessage.getX()message.getY(); try { this.dispacher.dispatch(new ResultEvent(result)); } catch (MessageMatcherException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }public static void main(String[] args) { EventDispatcher dispatchernew EventDispatcher(); dispatcher.registerChannel(InputEvent.class, new InputEventHandler(dispatcher)); dispatcher.registerChannel(ResultEvent.class, new ResultEventHandler()); try { dispatcher.dispatch(new InputEvent(1,2)); } catch (MessageMatcherException e) { // TODO Auto-generated catch block e.printStackTrace(); } }} 异步方案代码是在共用了部分同步代码之后形成的 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;public abstract class AsyncChannel implements ChannelEvent{ private final ExecutorService executorService;public AsyncChannel(ExecutorService executorService) { this.executorServiceexecutorService; }public AsyncChannel() { this(Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()*2)); }public final void dispatch(Event message) { this.executorService.submit(()-this.handle(message)); }protected abstract void handle(Event message);void stop() { if(null!this.executorService!this.executorService.isShutdown()) { this.executorService.shutdown(); } }} import java.util.Map; import java.util.concurrent.ConcurrentHashMap;public class AsyncEventDispatcher implements DynamicRouterEvent{ private final MapClass? extends Event,AsyncChannel routerTable;public AsyncEventDispatcher() { this.routerTablenew ConcurrentHashMap(); }Override public void registerChannel(Class? extends Event messageType, Channel? extends Event channel) { if(!(channel instanceof AsyncChannel)) { throw new IllegalArgumentException(The channel must be AsyncChannel type.); } this.routerTable.put(messageType, (AsyncChannel)channel); }Override public void dispatch(Event message) throws MessageMatcherException { if(this.routerTable.containsKey(message.getType())) { this.routerTable.get(message.getType()).dispatch(message); }else { throw new MessageMatcherException(Cant match the channel for [message.getType()] type); } }public void shutdown() { this.routerTable.values().forEach(AsyncChannel::stop); } } import java.util.concurrent.TimeUnit;public class AsyncEventDispatcherExample {static class AsyncInputEventHandler extends AsyncChannel{ private final AsyncEventDispatcher dispatcher; AsyncInputEventHandler(AsyncEventDispatcher dispatcher){ this.dispatcherdispatcher; } Override protected void handle(Event message) { EventDispatcherExample.InputEvent inputEvent(EventDispatcherExample.InputEvent) message; System.out.printf(X:%d,Y:%d\n,inputEvent.getX(),inputEvent.getY()); try { TimeUnit.SECONDS.sleep(10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } int result inputEvent.getX()inputEvent.getY(); try { this.dispatcher.dispatch(new EventDispatcherExample.ResultEvent(result)); } catch (MessageMatcherException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }static class AsyncResultEventHandler extends AsyncChannel{ Override protected void handle(Event message) { EventDispatcherExample.ResultEvent resultEvent(EventDispatcherExample.ResultEvent) message; try { TimeUnit.SECONDS.sleep(10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(the result is:resultEvent.getResult()); } }public static void main(String[] args) { AsyncEventDispatcher dispatchernew AsyncEventDispatcher(); dispatcher.registerChannel(EventDispatcherExample.InputEvent.class, new AsyncInputEventHandler(dispatcher)); dispatcher.registerChannel(EventDispatcherExample.ResultEvent.class, new AsyncResultEventHandler()); try { dispatcher.dispatch(new EventDispatcherExample.InputEvent(1, 2)); } catch (MessageMatcherException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
http://www.hkea.cn/news/14590117/

相关文章:

  • 网站如何做整合营销wordpress迅雷
  • 山东建设工程信息网站保定市建设施工许可证查询网站
  • 学校加强网站建设wordpress php 5.3.x
  • 旅游门户网站源码怎么做的wordpress插件是中文吗
  • 移动网站设计教程连云港网站建设方案
  • 成都网站设计说明书网站开发实验总结
  • 同ip网站是怎么做的品牌建设实施细则
  • 网站如何开通微信支付接口商业型网站
  • 网站欢迎框代码游戏源码买卖平台
  • 网站十大品牌wordpress开启redis缓存
  • 赣州网站建设较好的公司wordpress不同分类
  • 联享品牌网站建设公司做网站需要注意的地方
  • 怎么做网站文章邯郸网站建设公司
  • 福建设计网站网站会员等级审核功能怎么做
  • seo优化排名网烟台网站排名优化报价
  • 网站建设注意细节问题百度精简版网页入口
  • 自建网站服务器新手学做网站 pdf
  • 网站前台开发教程网页好看的网站设计
  • 绍兴网站快速排名优化特效网站模板
  • 凯里网站制作企业网站如何设计网页
  • 在线网站建设价格多少企业宣传画册设计
  • 琼海建设网站wordpress4.2.2下载
  • 软件开发工程师证书有哪些成都网站优化推广
  • 门户网站建设背景wordpress首次访问很卡慢
  • 下沙做网站来宾网站制作
  • 诸城个人网站建设内容营销模式
  • 做有色研究的网站wordpress iis内存高
  • 网站推广必做百度seoo优化软件
  • 初学者学做网站用什么软件网站访问量怎么赚钱
  • 什么网站专门做外围的微信 网站应用开发