某日,终于开始开发MOS引擎了,说起这个名称还真是有点NB,光是名称而已。哈哈!
MOS(Mini Operation System),微型操作系统,简称MOS,此引擎相当于一个操作系统,说白一点其实也就是一个服务器框架,可以加载N个服务,开发人员只需要继承服务接口,就可以开发相对应的功能,就像window系统里面的服务那样!
框架开发好之后,以后就只需要不断开发服务就行了,框架依然正常运行!
既然是一个服务容器,那应该就是一个不断运行的东西,然后里面可以装一些东西,打个比喻就是像tomcat,我们可以讲war包直接扔进webapp目录下,它就能够运行这个项目。如果说MOS相对于Tomcat,那war包就相对于开发人员开发的服务。
Tomcat也有启动,关闭之类的,还有启动之后就会自动解压war包,没看过Tomcat的源码,但是估计也就是启动的时候有相关的事件通知,说到事件通知前段时间刚学了一招,观察者模式,呵呵...有兴趣的可以去看看我的博客,欢迎欢迎@
状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来是改变了其类。书本上的描述状态模式就这样的,不过我感觉就是晦涩难懂,定义都不明所以。我先提两个问题:
1,服务器启动的时候该干什么?
2,服务器停止的时候该干什么?
解答:
@1:服务器启动的时候就加载服务
@2:服务器停止的时候通知服务停止,最后才关闭服务器
再问:服务器启动的时候谁知道呢?告诉谁呢?
@3:启动的时候应该有事件通知,通知服务器启动,可以干点什么了(加载服务)
于是:那应该得用个什么变量来保存保存服务器的状态,让别人(服务)知道服务器已经启动了,可以加载。
为什么要这样呢?
打个比喻,在学校的时候,你是喜欢饭堂阿姨煮好饭之后去宿舍叫一下你来吃饭,还是你喜欢隔一段时间就去饭堂看看饭煮好了没?
状态模式的口号就是:见风使舵
好了,于是就来了一个类,
1,服务器状态
package cn.std.mos.core.state; abstract public class State { public static final String STARTING = "STARTING"; public static final String STOPPING = "STOPPING"; public static final String PAUSING = "PAUSING"; public static final String RUNNING = "RUNNING"; public static final String PAUSE = "PAUSE"; public static final String STOP = "STOP"; /** 服务器状态 */ private String status; /** 状态对应描述 */ private String desc; public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } }
2,各种状态,都继承State这个状态类,例如StartServerState,启动状态
package cn.std.mos.core.state; public class StartServerState extends State { static class SingletonHolder{ static StartServerState instance = new StartServerState(); } public static synchronized StartServerState getInstance(){ return SingletonHolder.instance; } private StartServerState() { // TODO Auto-generated constructor stub this.setStatus(STARTING); this.setDesc("服务器正在启动"); //此处启动开机启动加载的服务 } }
3,运行状态
package cn.std.mos.core.state; public class RunServerState extends State { static class SingletonHolder{ static RunServerState instance = new RunServerState(); } public static RunServerState getInstance(){ return SingletonHolder.instance; } private RunServerState() { // TODO Auto-generated constructor stub this.setStatus(RUNNING); this.setDesc("服务器正在运行"); } }
4,停止状态
package cn.std.mos.core.state; public class StopServiceState extends State { static class SingletonHolder{ static StopServiceState instance = new StopServiceState(); } public static StopServiceState getInstance(){ return SingletonHolder.instance; } private StopServiceState() { // TODO Auto-generated constructor stub this.setStatus(STOP); this.setDesc("服务器已停止"); } }
还有其他状态,我不写了!
这里说明,状态类中使用内部静态类,实际就是单例模式,共享状态资源!
那现在看看怎么使用:
package cn.std.mos.core.state; public class client { private State state; public State getState() { return state; } public void setState(State state) { this.state = state; System.out.println("服务器状态:"+getState().getStatus()); } public static void main(String[] args) { client c = new client(); c.setState(StartServerState.getInstance()); } }
其实状态模式也就是将很复杂的状态切换的逻辑分开来,放到别的类去定义。嗯,好像没怎么描述明白,我回去再看看书!哈哈,另外附上我的MOS引擎,才刚开始写,反正服务框架是有了,继承AbstractService接口,可以进行开发自己的服务,大家提供点意见也行,加入跟我一起开发也行,哈哈,仅限菜鸟,大牛级人物就别来打击我了!哈哈!
还有附上运行图片:
相关推荐
系统目标 本系统的主要功能是... 服务器运行状态监控系统全文共5页,当前为第1页。(3) 服务器进程信息的监测。主要包括进程列表的实时扫描、黑名单监测和白名单监测。其中,黑名单监测是指对非正常进程的监测(如病毒进
器端与客户端可靠连接性,最后,设计并开发一个服务器运行状态监控系统的实例。具 体包含以下几个方面: 1、基于监控探针的多线程数据信息采集机制。采用插件方式设计cpuProbe, mailProbe, packetProbe, ...
服务器运行状态监控系统 系统目标 本系统的主要功能是对各种服务器进行实时监控,基于Windows系统,采用C/S模式 ,使用开发。其中,Client客户端安装在受监控的服务器上,Server服务器端安装在网 管人员的PC机上。...
显示不同的操作界面,有分组管理,可以有效分类的对服务器,工作站,进行分实验室,分组管理,Unix linux服务器远程批量操作模式,批量操作模式 可以多线程操控Unix,Linux,服务器执行命令,获 取状态,输出命令执行...
而standby 服务器处于监控准备状态,服务器数据包括数据库数据同时往两台或多台服务器写入,保证数据的即时同步。当active 服务器出现故障的时候,通过软件诊测或手工方式将standby 机器激活,保证应用在短时间内...
ni 用户进程空间内改变过优先级的进程占用CPU百分比 98.7% id 空闲CPU百分比 0.0% wa 等待输入输出的CPU时间百分比 0.0% hi HP服务器监控全文共5页,当前为第1页。0.0% si HP服务器监控全文共5页,当前为第1页。 3. ...
显示不同的操作界面,有分组管理,可以有效分类的对服务器,工作站,进行分实验室,分组管理,Unix linux服务器远程批量操作模式,批量操作模式 可以多线程操控Unix,Linux,服务器执行命令,获 取状态,输出命令执行...
显示不同的操作界面,有分组管理,可以有效分类的对服务器,工作站,进行分实验室,分组管理,Unix linux服务器远程批量操作模式,批量操作模式 可以多线程操控Unix,Linux,服务器执行命令,获 取状态,输出命令执行...
课件制作人:李国红 支持部门:工程中心 西子奥的斯维保员工技能提升计划 服务器的使用 SEED2.0 1 2 SEED2.0 目录 RCB2系统服务器使用介绍 LCB2系统服务器使用介绍 3 SEED2.0 服务器按键说明 4 SEED2.0 LCB2菜单树状...
显示不同的操作界面,有分组管理,可以有效分类的对服务器,工作站,进行分实验室,分组管理,Unix linux服务器远程批量操作模式,批量操作模式 可以多线程操控Unix,Linux,服务器执行命令,获 取状态,输出命令执行...
显示不同的操作界面,有分组管理,可以有效分类的对服务器,工作站,进行分实验室,分组管理,Unix linux服务器远程批量操作模式,批量操作模式 可以多线程操控Unix,Linux,服务器执行命令,获 取状态,输出命令执行...
内容概要:通过带着读者采用 JAVA 作为开发语言,使用基于瘦客户端的 B/S 架构对整个系统模块进行设计,再选择 Oracle 数据库作为系统的数据库服务器软件,并且引入了 MVC 设计模式来指导整个系统的开发,进而提高了...
当然,要使用这些工具,你必须在服务器跟前进行操作,而且这些 GUI 的程序占用了很多系统资源,所以说,尽管 GUI 用来做基本的服务器健康状态监测挺好,但如果你想知道真正发生什么,请关掉 GUI 开始命令行之旅吧。...
显示不同的操作界面,有分组管理,可以有效分类的对服务器,工作站,进行分实验室,分组管理,Unix linux服务器远程批量操作模式,批量操作模式 可以多线程操控Unix,Linux,服务器执行命令,获 取状态,输出命令执行...
网络监控 - 检查网络连接状态或监控网络流量。 7. 备份脚本 - 自动化备份指定目录到远程服务器或本地存储。 8. 定时任务管理 - 创建、编辑或删除cron作业。 9. 软件包管理 - 自动安装、更新或卸载软件包。 10. ...
可实现"1+1"模式系统架设二台集中管理服务器,实现"双机热备份",各分系统应支持和主备系统的连接,主备服务器均可单独提供服务 采用IP漂移技术,服务器进行热备切换时,要求WEB访问服务无中断感觉,WEB及客户端...
显示不同的操作界面,有分组管理,可以有效分类的对服务器,工作站,进行分实验室,分组管理,Unix linux服务器远程批量操作模式,批量操作模式 可以多线程操控Unix,Linux,服务器执行命令,获 取状态,输出命令执行...
前端的开发模式和角色也在发生着悄无声息的变化,而今NodeJS的开发俨然已经成为我们日常工作中的一部分,前端工程师与服务端、运维都有了更多的交集,但随着业务和项目的扩张,生产环境Node服务也在不断增多,如何对...