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

wordpress换空间要改杭州网站排名优化工具

wordpress换空间要改,杭州网站排名优化工具,网站app怎么做,wordpress内容导航常用程序模式-LifeCycle模式 场景 当我们要监控一个组件的生命周期的时候#xff0c;比如#xff0c;启动时#xff0c;启动后#xff0c;关闭前#xff0c;关闭后 实现 LifeCycleModule public interface LifeCycleModule {/*** 获取当前状态* return*/LifeCycle.St…常用程序模式-LifeCycle模式 场景 当我们要监控一个组件的生命周期的时候比如启动时启动后关闭前关闭后 实现 LifeCycleModule public interface LifeCycleModule {/*** 获取当前状态* return*/LifeCycle.State getCurrentState();/*** add listener* param listener*/void addListener(LifeCycleListener listener);/*** 启动*/void start();/*** 停止*/void stop();/*** 关闭*/void close(); }AbstractLifeCycleModule: public abstract class AbstractLifeCycleModule implements LifeCycleModule {private LifeCycle lifeCycle new LifeCycle();private ListLifeCycleListener listeners new ArrayList();Overridepublic LifeCycle.State getCurrentState() {return lifeCycle.getState();}Overridepublic void addListener(LifeCycleListener listener) {listeners.add(listener);}Overridepublic void start() {synchronized (lifeCycle){if (!lifeCycle.canChangeToStart()){return;}for (LifeCycleListener listener : listeners) {listener.beforeStart();}doStart();lifeCycle.changeToStarted();for (LifeCycleListener listener : listeners) {listener.afterStart();}}}protected abstract void doStart();Overridepublic void stop() {synchronized (lifeCycle){if (!lifeCycle.canChangeToStop()){return;}for (LifeCycleListener listener : listeners) {listener.beforeStop();}doStop();lifeCycle.changeToStop();for (LifeCycleListener listener : listeners) {listener.afterSop();}}}protected abstract void doStop();Overridepublic void close() {synchronized (lifeCycle){if (!lifeCycle.canChangeToClose()){return;}for (LifeCycleListener listener : listeners) {listener.beforeClose();}lifeCycle.changeToClosed();try {doClose();}catch (Exception e){throw new RuntimeException(e);}finally {for (LifeCycleListener listener : listeners) {listener.afterClose();}}}}protected abstract void doClose(); }LifeCycleListener public interface LifeCycleListener {/*** 在开始之前*/void beforeStart();/*** 在开始之后*/void afterStart();/*** 在停止之前*/void beforeStop();/*** 在停止之后*/void afterSop();/*** 在关闭之前*/void beforeClose();/*** 在关闭之后*/void afterClose(); }LifeCycle 状态管理 public class LifeCycle {private volatile LifeCycle.State state State.INIT;public LifeCycle.State getState() {return state;}public boolean canChangeToStart() {State curState this.state;if (curState State.INIT || curState State.STOP) {return true;}if (curState State.START) {return false;}if (curState State.CLOSE) {throw new IllegalArgumentException(can not move close to start);}throw new IllegalArgumentException(illegal state);}public synchronized boolean changeToStarted() {State curState this.state;if (curState State.INIT || curState State.STOP) {state State.START;return true;}return false;}public boolean canChangeToClose() {State curState this.state;if (curState State.CLOSE) {return false;}return true;}public synchronized boolean changeToClosed() {State curState this.state;if (curState State.CLOSE) {return false;}state State.CLOSE;return true;}public boolean canChangeToStop() {State curState this.state;if (curState State.START) {return true;}return false;}public synchronized boolean changeToStop() {State curState this.state;if (curState State.START) {state State.STOP;return true;}return false;}enum State {INIT, START, STOP, CLOSE}public boolean initialized() {return this.state State.INIT;}public boolean started() {return this.state State.START;}public boolean stopped() {return this.state State.STOP;}public boolean closed() {return this.state State.CLOSE;}}测试 Slf4j public class WebServer extends AbstractLifeCycleModule{public WebServer(){addListener(new WebServerListener());}Overrideprotected void doStart() {log.info({} doStart, Thread.currentThread().getName());}Overrideprotected void doStop() {log.info({} doStop, Thread.currentThread().getName());}Overrideprotected void doClose() {log.info({} doClose, Thread.currentThread().getName());}static class WebServerListener implements LifeCycleListener{Overridepublic void beforeClose() {log.info({} before close, Thread.currentThread().getName());}Overridepublic void afterClose() {log.info({} after close, Thread.currentThread().getName());}Overridepublic void beforeStart() {log.info({} before start, Thread.currentThread().getName());}Overridepublic void afterStart() {log.info({} after start, Thread.currentThread().getName());}Overridepublic void beforeStop() {log.info({} before stop, Thread.currentThread().getName());}Overridepublic void afterSop() {log.info({} after stop, Thread.currentThread().getName());}}public static void main(String[] args) throws InterruptedException {WebServer webServer new WebServer();webServer.start();TimeUnit.SECONDS.sleep(1);webServer.stop();TimeUnit.SECONDS.sleep(1);webServer.close();} }结果: INFO com.example.lifecycle.WebServer -- main before start INFO com.example.lifecycle.WebServer -- main doStart INFO com.example.lifecycle.WebServer -- main after start INFO com.example.lifecycle.WebServer -- main before stop INFO com.example.lifecycle.WebServer -- main doStop INFO com.example.lifecycle.WebServer -- main after stop INFO com.example.lifecycle.WebServer -- main before close INFO com.example.lifecycle.WebServer -- main doClose INFO com.example.lifecycle.WebServer -- main after close
http://www.zqtcl.cn/news/704965/

相关文章:

  • 定制型网站制作价格北京网站建设费用
  • 与女鬼做的网站上海有限公司
  • ytwzjs烟台网站建设c 做的网站又哪些
  • 做网站就是做app中国包装创意设计网
  • 淄博做网站宿迁房产网丫丫找房
  • 苏州专业做网站比较好的公司杭州好的公司网站设计
  • 做百度网站要多少钱帮做网站一般多少钱
  • 云南网站备案查询山西做网站费用
  • 北京建站管理系统开发网站高转化页面
  • 南充网站制作不会做网站能做网络销售吗
  • 这2个代码 找做网站的 安装一下搜索引擎排行榜
  • 百度收录收费 重大网站网络空间设计说明怎么写
  • 网站开发 php模板图书馆网站建设的项目报告
  • 保定模板建站定制网站wordpress 收集
  • 万网 网站模板软件开发三个主要阶段
  • 网站首页psd格式怎么做seo关键词有哪些类型
  • 做部队网站技术vue做购物网站
  • 品牌网站建设服务机构wordpress英文改中文
  • 系统开发费外链优化方法
  • 网站建设公司起名网站构建的友情链接怎么做
  • 网站建设湖南wordpress 缓存时间
  • 木藕设计网站大全福州网络营销推广产品优化
  • 建设银行网上官方网站怎么批量修改wordpress文章内容
  • 多肉建设网站的目的及功能定位app网站开发成本
  • 如何保存网站上的图片不显示图片报纸网站建设
  • 网站营销的流程品牌推广方式有哪些
  • 网站开发的条件美术字设计
  • 网站可以自己做服务器么wordpress架站教程
  • 用ps怎么做网站导航条怎么做部署iis网站
  • 酒店 网站构建怎么创建自己的网址