`
gengu
  • 浏览: 86573 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论
文章列表
dom4j是一套开源的XML解析工具,完全支持DOM,SAX和JAXP机制,与传统的Xerces-J相比,dom4j更为简单易用,因此实际项目中往往采用它作为xml解析器。   dom4j只提供了java版本的,往往有很多的开源项目都使用它作为解析器比如hibernate框架。   dom4j支持多种解析机制:   DOMReader :它负责根据W3C的DOM树创建dom4j树。 SAXReader:它基于SAX解析机制来解析一份XML文档,并将其转换为dom4j树。 XPP3Reader:其底层需要依赖于XML Pull Parser 3.x来解析XML文档,并将其装换为 ...

备忘录模式

我更喜欢把它叫做备份模式   考虑这样一种场景:在我们做实验的时候,我们必须保证一步一步的做,并且在实验当前必须保证我前面的步骤都是正确的?不然如果出了问题,你都不知道是哪一步出的问题,好吧,如果你能保证前面的都正确,那么你在做下一步的时候,就要考虑我是不是能把情况恢复到这里,因为你下一步可能出错,所以你要有恢复的能力啊!这样你就得懂得备份,如果程序在下一步出现问题,你就用备份恢复一下。   好吧,我可以将当前状态备份起来不就行了嘛?   备忘录模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将对象恢复到原先保存的状态。   ...

门面模式

我们先来讨论一个很常见的问题。 餐馆吃饭的问题。 在有些餐馆,客人进去吃饭是需要自己找座位,自己倒茶,自己写菜单,然后将菜单交给服务员,由服务员去完成剩下的工作。 但是也有很多那种高级的餐厅,或者服务很周到的餐厅是这样做的,你一进门,就会有服务员领着你到给你安排座位(我们现在假设安排座位是专门一个部门来完成的,只是这个服务员直接问了座位部那些座位是空的,然后领着去对应的地方就可以了)。然后你坐下之后服务员给你端茶倒水(茶水有茶水部门来负责泡茶,烧水之类的),然后你告诉服务员我现在要吃什么菜,服务员帮你写下菜单就可以了。   如果是这样的话,你每次吃饭是不是会心里很爽呢?对啊,你什么也没 ...
在java线程中有一个很有作用的类ThreadLocal   在网上关于ThreadLocal的理解也相当的多,文章也很多,但是很多看了都让人一头雾水,有的就讲原理,有的就说概念,而且大量的转载,却很少有实例这块的。   JDK1.5之后,java引入了泛型的概念,也为ThreadLocal引入了泛型,通过泛型可以简化多线程编程时的并发访问,使用这个工具类可以很简洁的编写出有没的多线程程序。   ThreadLocal 是Thread Local Variable(线程局部变量)的意思,线程局部变量的功能非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,使每一个想成都可以 ...

状态模式

现在有一个这样的场景。   对于TCP的连接,大家都知道,TCP是面向连接的一种通信方式,那么他有三种基本的状态 1:等待连接  2:连接   3:断开 那么每一个TCP都有这样三种操作,但是等等...如果一个TCP已经在连接状态了,那么它还能连接??显然不能,每一个TCP通信在一种状态下面只能有一种连接方式。   它的关系应当是这样的:在等待状态下只能进行连接,连接完后把状态改成连接状态,连接状态只能进行断开操作,然后改状态为断开,然后依次可以循环下去。那么怎么来实现这样一个操作呢? 这就要用到状态模式,在不同的状态下进行合适的操作正是为了解决这样的问题而存在的。   状态 ...
上一篇博客讲过线程的中断,特别提到过interrupt()这个方法,现在来详细讲述一下这个方法,以及这个方法的用途。   JDK1.0之前,有一个方法stop()方法可以强制一个线程的中断,但是现在这个方法被废弃了,但是还是有一种方 ...
学习一下java多线程   实现java多线程主要有实现Runnable接口,实现run方法和继承Thread类。重写run方法。   首先说一些这两种实现方式的区别: ①Thread类在API中的定义是这样的,public class Thread extends Object implements Runnable 可以看到,Thread类是实现了Runnable接口 的,Runnable接口中只有一个方法,就是public void run(){}这个方法,而在Thread里面有很多的方法,除了重写了run方法之外还有四个构造方法,public voi ...

组合模式

组合模式的定义:将对象表示 “部分---整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。   大致意思就是这样,当我们有多个类型的对象,他们有共同点有不同点,并且所处的位置也不同,有的处在第一级,有的处在第二级,但是他们有些共同点,我们将他们都抽象成一种类型,这样对他们的使用将会有一致性。   打个比方:现在又商品,商品又分为商品种类和具体的商品,而商品种类下可能还有更细致的商品种类,那么这就是一个没有办法统计的问题了,有的时候一个商品是叶子,有的时候是树枝,有的时候还是根节点。如果我们对他们分别进行设计类,那么可以想见的是,类会相当复杂,实现也会变得很复杂。这个时候就能 ...

变压器模式

适配器模式又叫做变压器模式,也叫做包装模式。   学过物理的人都知道变压器是干嘛的。把一个非常高的电压转化成一个适合电器使用的电压,或者在电线传输的时候用高压传输也要把低压电转化成高压电,这就是变压器。   那么变压器模式也是这样,把原本不配套的组件,经过一个中间件转成一个可以在合适的地方使用的组件,这就是变压器的作用。   变压器模式的定义:讲一个类的接口变换成客户端所期待的另一种接口,从而使得原本因接口不匹配而无法在一起工作的两个类能够在一起工作。   他的角色为:Target 目标角色 该角色定义把其他类转化为何种模式,也即是我们期望的接口   Adaptee  :原角 ...

装饰模式

装饰模式的定义是:动态的给一个对象添加一些新的职责,就增加功能来说,装饰模式比生成子类更为灵活。   装饰模式与代理模式的作用很像,都是在原有构建的基础上添加新的功能   装饰模式的角色说明:Component 抽象构建  是一个抽象类或者接口,它规定了我原始的构建应当事先说明。   ConcreteComponent 类 是以上构建的一个实现类 ,它是最需要修饰的一个类   Decorator 抽象角色,它规定了我们的装饰应该给原始类做什么样的修饰   ConcreteDecorator 类是抽象装饰角色的实现类,完成具体的装饰工作   package com.geng ...

责任链模式

今天学习了下责任链模式,对责任链模式有了一个初步的了解,这个模式有些复杂   比如有这样一种情况:有三个经理,A是负责人事的,B负责财务,C负责销售。他们都能对自己所管辖的领域里大大小小的事情进行处理。但是有一些新入职的职员根本不认识他俩,有的时候一个人事部的人跑去财务部领导那里报告情况,这个时候B就要把请求指引到A那里去,也有的时候B也不知道要找谁,就把请求传递给C,让C处理,C当然也没有权限处理,但是它知道要给A,于是就把请求给了A。   这样一层一层的将命令下调,直到找到合适的处理者的行为就是责任链模式。每一个经理都有自己的处理权限,而每一个职员终究只用找到一个经理,但最终是能找到 ...

策略模式

第一次接触到策略模式是在使用Spring的时候。当时接触了AOP的概念,知道了Spring中完成AOP实际上是代理模式。 默认会使用到java的动态代理机制,但是这个是有限制的,就是说只有在实现了接口的类才能被动态代理,那么没有实现接口的呢?Spring使用了CGLib,在内存中直接通过生成一个实例的时候将需要代理的东西加进去。   什么时候用动态代理,什么时候用CGLib 呢? Spring实际上使用了策略模式。   也就是说,为了达到同一个目的,而使用不同的策略,在合适的时候调用合适的算法。   策略模式的定义:定义一组算法,将每种算法封装起来,并且使他们之间可以互换。   ...

中介者模式

中介者模式的定义:用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示的相互作用,从而使其耦合松散,而且可以独立的改变他们的交互。   中介者模式有很广泛的应用,比如在MVC框架中,C就是一个中介者,他来协调V和M的调用,减少View和Model层得交互,在很多优秀的开源框架中都有很好的体现。   Mediator :抽象中介者角色 它定义统一的接口,用户各个同事角色之间的通信   Concrete Mediator :具体中介者角色  它是中介者角色通过协调各同事角色实现协作行为,因此它必须依赖于各个同事角色。   Colleague :同事角色  每一个同事角色都必须 ...

原型模式

原型模式是一种很简单的设计模式 其实就是通过将一个类实现Cloneable接口并且重写clone方法,来创建一个类的多个实例。   比如说,我有一个工作需要大量的这个类的实例,但是由于创建这样一个类会花费大量的时间。一种解决方案是先创建一个类,然后通过clone方法大量复制,来得到这个类。   原型模式的定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 它是在内存二进制流的拷贝,要比直接new一个对象性能好很多。   package com.gengu.原型模式; import java.util.ArrayList; public class ...

建造者模式

今天学习了建造者模式   它的定义是这样的:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示   建造者模式中,有如下四种角色 1:Product产品类 通常实现的是模板方法和基本方法 2:Builder抽象建造者,规范产品的组件,一般是由子类实现 3:ConcreteBuilder 是先抽象类定义的所有方法,并且返回一个组建好的对象 4:Director导演类 负责安排一有模板的顺序,然后告诉Builder开始建造   假设有这样一种情况。我现在想要创建各种不同的动物,我已经归纳出了所有动物可能存在的活动:吃,跑,爬,叫,跳五种 我想能创建各种不同 ...
Global site tag (gtag.js) - Google Analytics