软件架构
vic_zhaowei
微服务架构、云架构、大数据架构
展开
-
sitemesh网页布局和修饰的框架
简介SiteMesh 是一个网页布局和修饰的框架,利用它可以将网页的内容和页面结构分离,以达到页面结构共享的目的。[1]OS(OpenSymphony)的SiteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration)的框架组件,能够帮助网站开发人员较容易实现页面中动态内容和静态装饰外观的分离。2功能基础Sitemes转载 2013-12-14 21:55:28 · 965 阅读 · 0 评论 -
设计模式——适配器模式
适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:1)类的适配器模式public class Source { public void method1() { System.out.println("this is original method!"); }}publi原创 2015-07-21 11:55:55 · 351 阅读 · 0 评论 -
设计模式--装饰模式
顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。public interface Sourceable { public void method(); } public class Source implements Sourceable { @Override转载 2015-07-22 09:39:50 · 298 阅读 · 0 评论 -
设计模式--迭代子模式
顾名思义,迭代器模式就是顺序访问聚集中的对象,一般来说,集合中非常常见,如果对集合类比较熟悉的话,理解本模式会十分轻松。这句话包含两层意思:一是需要遍历的对象,即聚集对象,二是迭代器对象,用于对聚集对象进行遍历访问例如:jdk 中的集合类转载 2015-08-17 09:32:52 · 270 阅读 · 0 评论 -
设计模式--外观模式
外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度。public class CPU { public void startup(){ System.out.println("cpu startup!");转载 2015-07-24 11:13:18 · 249 阅读 · 0 评论 -
kafka
Kafka是一种分布式的,基于发布/订阅的消息系统。主要设计目标如下:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输。支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输。同时支持离线数据处转载 2015-07-25 09:35:18 · 293 阅读 · 0 评论 -
设计模式--命令模式
命令模式很好理解,举个例子,司令员下令让士兵去干件事情,从整个事情的角度来考虑,司令员的作用是,发出口令,口令经过传递,传到了士兵耳朵里,士兵去执行。这个过程好在,三者相互解耦,任何一方都不用去依赖其他人,只需要做好自己的事儿就行,司令员要的是结果,不会去关注到底士兵是怎么实现的。Invoker是调用者(司令员),Receiver是被调用者(士兵),MyCommand是命令,实现了Comman转载 2015-08-21 09:11:20 · 229 阅读 · 0 评论 -
设计模式-中介者模式
中介者模式也是用来降低类类之间的耦合的,因为如果类类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。如果使用中介者模式,只需关心和Mediator类的关系,具体类类之间的关系及调度交给Mediator就行,这有点像spring容器的作用。User类统一接口,User1和User2分别是不同的对象,二者之间有关联,如果不采用中介者模式,则需要转载 2015-09-06 08:27:34 · 235 阅读 · 0 评论 -
设计模式--责任链模式
有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整。public interface Handler { public void operator(); } public abstract转载 2015-08-20 13:48:29 · 229 阅读 · 0 评论 -
设计模式--解释器模式
一般主要应用在OOP开发中的编译器的开发中,所以适用面比较窄。public interface Expression { public int interpret(Context context); }public class Plus implements Expression { @Override public int interpret转载 2015-09-07 08:38:33 · 260 阅读 · 0 评论 -
设计模式--代理模式
其实每个模式名称就表明了该模式的作用,代理模式就是多一个代理类出来,替原对象进行一些操作。public interface Sourceable { public void method(); } public class Source implements Sourceable { @Override public void met转载 2015-07-23 09:33:58 · 218 阅读 · 0 评论 -
设计模式--观察者模式
观察者模式很好理解,类似于邮件订阅和RSS订阅,当我们浏览一些博客或wiki时,经常会看到RSS图标,就这的意思是,当你订阅了该文章,如果后续有更新,会及时通知你。其实,简单来讲就一句话:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一种一对多的关系。public interface Observer { public void update(转载 2015-08-14 10:00:09 · 283 阅读 · 0 评论 -
设计模式--桥接模式
桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。public inte转载 2015-07-27 09:34:22 · 303 阅读 · 0 评论 -
设计模式--状态模式
核心思想就是:当对象的状态改变时,同时改变其行为,很好理解!就拿QQ来说,有几种状态,在线、隐身、忙碌等,每个状态对应不同的操作,而且你的好友也能看到你的状态,所以,状态模式就两点:1、可以通过改变状态来获得不同的行为。2、你的好友能同时看到你的变化。public class State { private String value;转载 2015-08-24 09:20:07 · 221 阅读 · 0 评论 -
设计模式--组合模式
组合模式有时又叫部分-整体模式在处理类似树形结构的问题时比较方便public class TreeNode { private String name; private TreeNode parent; private Vector children = new Vector(); public TreeNode(St转载 2015-07-28 08:58:00 · 274 阅读 · 0 评论 -
设计模式--享元模式
享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。享元模式的特点是,复用我们内存中已存在的对象,降低系统创建对象实例。我们这里可以设计出这个专门的对象池,我们可以提供如下的功能:1、根据对象类型动态的创建对象实例。2、根据对象池中的配置,在对象池中找到空闲的实体提供给程序调用,减少创建对象的次数。转载 2015-07-29 10:13:12 · 283 阅读 · 0 评论 -
设计模式--模版方法模式
模版方法模式指:一个抽象类中,有一个主方法,再定义1..n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,可以调用抽象类,实现对子类的调用。public abstract class AbstractCalculator { /*主方法,实现对本类其它方法的调用*/ public final int calculate(S转载 2015-08-10 09:05:23 · 263 阅读 · 0 评论 -
zookeeper
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。ZooKeeper包含一个简单的原创 2015-08-22 07:31:21 · 207 阅读 · 0 评论 -
设计模式--策略模式
策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。策略模式的决定权在用户,系统本身提供不同算法的实现,新增或者删除算法,对各种算法做封装。因此,策略模式多用在算法决策系统中,外部用户只需要决定用哪个算法即可。public interface ICalculator { public int calculate(转载 2015-07-31 09:22:49 · 367 阅读 · 0 评论 -
设计模式——原型模式
原型模式(Prototype)原型模式虽然是创建型的模式。从名字即可看出,该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。在。Java中,复制对象是通过clone()实现的。实现:一个原型类,只需要实现Cloneable接口,覆写clone方法,此处clone方法可以改成任意的名称,因为Cloneable接口是个空接口,你可以任意定义实原创 2015-07-20 10:27:50 · 526 阅读 · 0 评论 -
设计模式--访问者模式
访问者模式把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化。访问者模式适用于数据结构相对稳定算法又易变化的系统。因为访问者模式使得算法操作增加变得容易。若系统数据结构对象易于变化,经常有新的数据对象增加进来,则不适合使用访问者模式。访问者模式的优点是增加操作很容易,因为增加操作意味着增加新的访问者。访问者模式将有关行为集中到一个访问者对象中,其改变不影响系统数据结构。其缺点就是增转载 2015-08-28 09:06:03 · 210 阅读 · 0 评论 -
设计模式--备忘录模式
主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象,个人觉得叫备份模式更形象些,通俗的讲下:假设有原始类A,A中有各种属性,A可以决定需要备份的属性,备忘录类B是用来存储A的一些内部状态,类C呢,就是一个用来存储备忘录的,且只能存储,不能修改等操作。public class Original { private String value;转载 2015-08-22 07:06:37 · 220 阅读 · 0 评论