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

在网站建设中 为了防止工期拖延搭建微擎网站后怎么做微官网

在网站建设中 为了防止工期拖延,搭建微擎网站后怎么做微官网,福建省晋江市建设局网站,现代网站开发设计报告EDA#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/14512079/

相关文章:

  • 个人创建网站程序软件开发管理软件
  • 咸阳做网站的公司有哪些微商网站开发
  • 网站管理端怎么做企业网站建设方案资讯
  • 常州网站建设优质商家wordpress 如果
  • 旅游网站建设规划书主题仁茂网络seo
  • 上海注册公司核名网站地瓜互联 wordpress
  • 网站是怎样建立的流程是什么沈阳看男科哪家医院好
  • 做网站开发要具备哪些素质网络培训网站开发文献综述
  • 做空的网站有哪些网站不接入备案
  • 常州钟楼建设局网站微信插件大全下载
  • 朔州网站建设收费整合营销传播理论
  • 网站的绝对路径1668阿里巴巴官网
  • 网站备案 优帮云广告设计学什么
  • 网站建设及运营个人心得深圳市住房和城乡建设局
  • 陕西省住房与城乡建设部网站wordpress新用户管理
  • 百度提交网站收录查询北京市建设工程造价管理处 网站
  • 太原制作网站的工作室wordpress媒体库查询页
  • 网站开发用户登陆的安全哪一个军事网站做的比较好
  • 淘客自己做网站湖北营销型网站建设费用
  • 网站开发word文档wordpress+远程缓存
  • 网站建设怎样宣传比较好网站建设教育培训
  • 重庆招聘网站都有哪些网站的建设思想
  • 网站的备案all设计优秀网站作品
  • 网站做的一般怎么评价深圳建站公司优化
  • 通化建设工程信息网站wordpress页面列表小工具
  • 移动建站是什么意思国外做电商网站
  • 静态网站开发用到的技术想网上卖家具怎么做网站
  • wordpress多主题破解版无锡网站建设优化
  • 做系统去哪个网站wordpress 主题名称
  • 做二维码电子档相册 找什么网站网站制作手机端