自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 备忘录模式

备忘录模式:保存对象的某一时刻的状态,进行存储 优点:实现对象的回滚,可以对数据进行恢复和保存   标准类图:  主体类: public class Originator { private String state; public String getState() { return state; } public void setState(S...

2014-06-19 13:58:24 199

原创 访问者模式

访问者模式:将对象的变化(共享)和不变部分(不共享)进行分离,将变化部分交由具体的访问者执行,访问者可以根据具体的类进行动作 优点:封装不变部分,扩展变化部分,一般是在循环抽象对象时候,由访问者来对不同的具体对象进行操作   标准类图:  抽象元素: public interface Element { public void accept(Visitor visitor)...

2014-06-19 13:58:14 170

原创 状态模式

状态模式:一个对象的内部状态发生改变会引起行为的改变,此种变化会引起类的变化 优点:避免过多的if-else语句,扩展性良好,有很强的封装性   标注类图:   模拟电梯状态行为: 电梯类: public class Lift { public static final LiftOpenState OPEN_STATE = new LiftOpenState(); publ...

2014-06-19 13:58:01 176

原创 享元模式

享元模式:通过池技术,对细粒度对象提供共享支持 优点:节省对象创建时间,减少内存开支,降低性能消耗   标准类图:  抽象享元: public abstract class FlyWeight { protected String externalAttribute;//external attribute public FlyWeight(String exte...

2014-06-19 13:57:49 144

原创 空对象模式

空对象模式:使用对象继承来实现程序中的空判断 优点:增加程序可读性 空对象接口: public interface NullObject { boolean isNull(); }  原对象: public class Subject implements NullObject{ private String name; public String ...

2014-06-19 13:57:38 159

原创 门面模式

门面模式:建立一个统一的对象对来提供子系统外部和内部的通讯方式,子系统外部只能通过此对象对子系统内部进行访问 优点:细节隐藏,高层调用不用关心底层实现,避免产生高度的耦合关系   标准类图:  子系统中的类: public class Class1 { public void foo4(){ System.out.println("foo4"); } p...

2014-06-18 07:52:19 150

原创 适配器模式

适配器模式:改变遗留对象的抽象(接口),以匹配当前的环境,使得其能够正常的工作 优点:可以让两个没有任何关联的对象匹配在一起运行,而对用调用者来说是透明的,适配器是一种补救措施,在设计阶段一般不考虑。   标准类图:  目标接口: public interface TargetInterface { void targetMethod(); }  目标实现: p...

2014-06-18 07:52:03 126

原创 观察者模式

观察者模式:定义对象的一对多依赖关系,使得每当一个对象状态更改都会通知关联对象进行自动更新 优点:建立触发机制,观察者和被观察者分离,调用者不用关心具体的观察者行为   标准类图:  抽象主题: public abstract class Subject { private List<Observer> observers = new ArrayList<...

2014-06-18 07:51:48 112

原创 策略模式

策略模式:抽象一个算法,并封装不同的算法,使得不同算法之间可以相互切换。 优点:扩展性良好,不同算法之间可以自由切换,不需要冗余的if-else语句   标准类图:  抽象算法:   public interface Strategy { void algorithm(); }  具体算法:     public class ConcreteStrateg...

2014-06-18 07:51:35 137

原创 中介者模式

中介者模式:使用一个中介对象封装对象与其他对象之间的操作行为,使得原本产生交叉蜘蛛网状的对象关系变成星型关系 优点:降低对象与对象之间的耦合,满足迪米特法则   标准类图:   抽象中介者: public abstract class Mediator { protected ConcreteColleague1 concreteColleague1; protected...

2014-06-18 07:51:21 139

原创 责任链模式

责任链模式:将请求封装成一个对象,使得多个对象都有机会对该对象进行处理,这些对象组成一条链状结构,请求延着链条进行传递。 优点:去除冗余的if-else语句,对请求的发出者和请求的接收者进行解耦,通过类间继承关系进行扩展   标准类图:   抽象处理者: public abstract class Handler { private Handler handler; ...

2014-06-12 08:51:27 128

原创 命令模式

命令模式:将请求封装成一个命令,使用命令对象将请求的调用者和接收者进行分离,从而降低耦合性 优点:类间解耦,具有良好的扩展性   标准类图:  抽象接收者:   public interface Receiver { void doSomething(); }  具体接受者:     public class ConcreteReceiver impleme...

2014-06-12 08:18:56 122

原创 装饰模式

装饰模式:动态的给一个对象添加额外的职责 优点:以调用者透明的方式,动态的改变对象的行为 使得装饰对象和主题对象独立,降低耦合性   装饰模式跟静态代理模式方式非常类似,而关注点不同,装饰模式关注点是对对象行为的增强和减弱,可能会改变主题对象的默认行为,而静态代理模式只是对主题对象的访问控制,不会干预对象的默认行为。   标准类图:     ...

2014-06-12 08:13:04 131

原创 代理模式

代理模式:使用代理对象对源对象进行访问控制 优点:  1.以调用者透明的方式,动态的改变对象的行为 2.主题对象不会改变,高扩展性,需要产生新的行为通过建立代理对象进行 3.职责明确,不同的代理类进行不同职责的代理,又跟主题对象进行了严格的区别   标准类图:  静态代理:  抽象主题类: public interface Subject { public void...

2014-06-12 08:12:54 120

原创 模板方法模式

模板方式模式:由父类定义一个算法的骨架,而让具体某些步骤延迟到子类进行实现 模板方法优点: 1.封装不变的部分,扩展变化的部分 2.提取公共部分代码,便于维护 3.行为由父类控制,子类实现   标准类图:  定义抽象类(抽象类中定义模板方法和基础方法,基础方式由子类进行实现): public abstract class Hummer { protected abst...

2014-06-12 08:12:41 135

原创 建造者模式

建造者模式:将一个复杂对象的创建和它的表示相互分离,使得同样的构建过程可以有不同的表示 建造者模式的优点: 具有很强的封装性,高层调用者不用关心具体对象的组装过程,实现高层调用和对象组装过程的解耦,对象的组装过程也是相互独立的,易于扩展   标准类图:  使用建造者模式构建汽车: 汽车抽象接口:   package org.robbie.hibernate.generate.bu...

2014-06-10 12:21:16 131

原创 原型模式

原型模式:通过克隆对象来进行创建对象 原型模式的优点: 1.原型模式的拷贝属于二进制的拷贝,比new的创建性能更好 2.克隆对象不会调用类的构造函数,可以进行逃避 3.多线程操作同一个对象时,可以通过克隆的方式复制到不同的线程中,避免了线程不安全   标准类图只需要实现Cloneable即可   public class MyClass implements Cloneable...

2014-06-10 11:13:18 142

原创 抽象工厂模式

抽象工厂模式跟工厂方式模式类似,不同的是工厂方式模式生产的是一个抽象的产品,而抽象工厂模式生产的是多个抽象的产品。   标准类图  抽象工厂模式: 顶层抽象产品类: public interface Product { String getInfo(); }  第二层抽象产品(抽象出两个不同的产品) public interface Phone extends Pr...

2014-06-10 10:57:07 139

原创 工厂方法模式

工厂方法模式:定义一个创建对象的接口,让子类决定实例化哪一个类 工厂模式有点: 1.将对象的创建进行封装,实现细节的隐藏,高层调用者不用关心创建的具体的产品类,只了解产品类的抽象,具体产品类的创建是由工厂进行决定。使调用者和产品的创建进行解耦。   标准类图: 一、 简单工厂模式(不需要抽象工厂) 产品抽象类: public interface Product { Stri...

2014-06-10 10:28:19 158

原创 单例模式

      确保一个类只有一个实例的模式成为单例模式。 单例模式的优点: 1.减少内存开支,降低系统性能消耗 2.避免对资源的多重操作,确保只有一个类实例进行动作 缺点: 1. 没有抽象,没有接口,无法被扩展 2. 并行开发,测试不方便,只有能单例模式开发完毕才能对类进行测试   标准类图:     一、标准的单例模式(预先实例化,项目当推荐使用此模式) public ...

2014-06-10 09:36:38 153

原创 spring加载配置文件

在spring中加载配置文件的方式: @Configuration @PropertySource({"classpath:config.properties"}) //@Import(DataSourceConfig.class) public class DefaultAppConfig { @Bean public static PropertySources...

2014-05-12 14:56:14 123

原创 8.Spring MVC

    Spring MVC是spring构建的前端MVC web框架,利用spring本身的DI,AOP等特性,实现松耦合,减少web端代码的开发,提高web端的开发效率,并且提供web端的服务特性,例如验证,状态管理等。   搭建Spring MVC: spring MVC的核心是DispatcherServlet,我们称之为中心控制器,通过中心控制器的解析,找对对应spring b...

2014-05-12 14:49:57 146

原创 7.spring事务

        事务是一个完整的逻辑单元,在执行的时候要嘛同时成功,要嘛同时失败,中间不允许被中断,也就是说事务是一个全有或全无的过程。 事务拥有4个特性: 原子性:事务是由一个或者多个活动单元组成的。原子性确保了事务中所有操作全部发生或者全部不发生。如果所有活动都成功了,事务也就成功了。如果任意一个活动失败了,整个事务也就失败并回滚。 一致性:一旦事务完成(不管成功或者失败),事务保证...

2014-05-08 16:10:42 136

原创 6.spring持久化相关

        Spring在持久化上做出了一个统一的模型,目的是为了简化持久化的开发,使得数据访问层和持久化方案的选择相互独立。         统一了数据访问异常: 传统的JDBC异常分类比较薄弱,并且都为检查型异常,在程序员对数据库的操作过程中,需要强制的去捕获SQLException,第一是工作比较繁琐,第二个就算捕获了之后其实际意义也不大,并且SQLException包含的异常问...

2014-05-07 15:48:18 203

原创 5.spring aop

        切面,是面向对象编程中一个重要的术语,切面能够模块化系统当中横切关注点,这些横切关注点会横跨系统当中的多个组件,例如安全,事务,日志,缓存,如果在每个组件中都去自行完成这些关注点的代码编写,那么横切关注点的代码将会散步在系统的各个角落,从系统灵活性和维护性来说,造成了巨大的阻碍。所以将横切关注点进行模块化,形成切面,将核心的业务与切面进行分离,能够更加有限的对程序进行管理,使得...

2014-05-06 17:25:26 142

原创 4.基于注解的bean装配

        对于spring提供传统XML配置方式来说,由于项目的日益扩大,XML配置信息也会随之增加,对于项目的后期管理和维护造成一定的复杂性,为了减少XML配置信息,spring提供了基于注解的配置。         spring提供了自动装配和自动检测功能,用于减少XML配置信息。   spring的自动装配4种策略: byName 根据名字进行自动装配,改名字为s...

2014-05-06 10:44:25 285

原创 3.装配bean(二)

        本章主要继续介绍spring基于XML装配bean的知识,主要介绍spring对属性的注入。  设值注入简单值和引用其他bean:   package org.robbie.test.spring.beans; public interface Instrument { void play(); }   package org.robbie.test.s...

2014-05-05 17:48:50 186

原创 2.装配bean(一)

        创建应用对象之间协作的行为,称为装配,其实质是spring容器建立bean之间关系依赖的过程。spring提供两种方式来进行创建,基于XML的配置与基于注解的配置。         在spring中有两种容器,一种为beanFactory,是所有容器的父级,第二种为ApplicationContext,ApplicationContext拥有一些特定的功能,比beanFact...

2014-05-05 12:09:41 164

原创 1.spring之旅(一)

        随着JavaEE的不断发展,历经数年之后,在总结了EJB对企业级开发上种种不利,由rod johson开发的spring已经逐渐成为javaEE开发的事实标准与框架,spring的出现让POJO的编程思想逐渐深入到各开发人员的脑海里,目的是为了简化java企业级开发。为了降低java企业级开发的复杂性,spring提出了4种策略: 1. 基于POJO的轻量级和最小侵入式编程 ...

2014-05-05 09:14:23 132

原创 maven开发中合并多个web项目的方法以及最终打包多个项目的方法

1、引入需要的war包依赖(利用插件排除类文件),api依赖,利用war包插件排除web.xml以及共同文件,最后实现静态资源和界面的共享,可启动项目, 此方法在开发当中比较麻烦,因为当依赖的api包,静态文件或者界面有修改时,不能够及时反应,只能由依赖的war包再次完成打包安装之后才能够响应。   2、通过jetty实现嵌入式启动,自己动态构建jetty Server, 依赖的war包...

2013-09-18 00:01:22 1205

原创 linux源码安装mysql

  在ubuntu下源码安装mysql需要首先安装cmake,可以cmake官网上下载源码进行安装,也可以直接通过ubuntu的apt指令直接进行安装。   通过apt命令直接进行安装cmake   apt-get install cmake   下载cmake源码包进行安装   tar zxvf cmake.tar.gz cd cmake ./configure --...

2011-10-06 20:17:43 107

原创 jbpm3概览

前段时间选用JBPM来做为未来项目的工作流引擎,JBPM的版本目前主要是3,4,5,因为4在很多时候有BUG,并且 官方的的documentation也是不推荐的,所以没有去看4的一些相关信息,版本5中的内容比较新,融入的东西也比较多,特别是对BPMN标准的支持,但是因为内容过多,学习的曲线度也比较大,所以从tom研发的JBPM3着手,3,4,5的三个版本几乎是完全不一样的,不可能完全的掌握,...

2011-01-25 16:10:49 450

原创 工作流和jbpm

1、什么是工作流,工作流本身是面向开发人员的一种术语,对于系统的使用者,概括来说就是业务流程,即多个参与者共同实施参与到一个业务流程当中,按照这个业务流程的步骤和规则执行完成,就是一个工作流。   2、为什么我们要使用工作流引擎,在软件的世界里面有一个很重要的思想,那就是工程化,借助于建筑的永恒之道,软件行业经过多年的积累,逐渐找到了适合自己的工程化道路,而在工程化的具体体现过程当中,就是希...

2011-01-25 11:51:30 137

原创 今年的年会

公司得力部门的领导被授予奥迪Q5一辆,私下还有几十万的分红,年会当场给了钥匙,场面拉风,底下的兄弟们欢呼雀跃。不知这些兄弟是因何高兴,跟我们有何关系,拼命的是在编程一线上的伙计,拿钱拿的多的还是领导,国内大部分公司就是这个样子,要技术,技术不行,要管理,管理不行,空悲切。...

2011-01-25 11:02:43 118

原创 linux下nginx + mongrel的ROR的集群环境搭建

    ror的生产环境的搭建过程当中可以有多种web server和app server的选择和搭配,其中nginx + mongrel的组合是众多选择当中性能突出的一种,因此,手动搭建一个nginx + mongrel的ROR环境让自己的rails程序流畅的运行便成了事在必行的工作。     建议在搭建ROR的生产过程之前,能够对javaeye老大robbin的关于ROR服务器的相关文章进行...

2010-12-07 15:26:16 285

原创 linux下lighttpd + fcgi的ROR环境搭建

    由于家里断网了,只有在办公室把这篇文章搞一搞,这篇文章只是自己的一个随笔总结,robbin对lighttpd和fcgi的环境搭建阐述的已经非常详细,建议大家去熟读下,他对lighttpd + fcgi进行了高度的评价,并且从javaeye的事实运营过程当中我们也看到了确实这2个服务器的搭配显得非常的默契,是现今ROR最好的,性能最高的服务器搭配组合。另外一种组合则是nginx + mong...

2010-12-07 14:51:47 353

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除