- 浏览: 15453 次
最新评论
文章列表
Java SE1.4引入了大量用于改进输入/输出处理机制的特性
NIO的特性:
1、字符集编码器和解码器
2、非阻塞的I/O
3、内存映射文件
4、文件加锁机制
大多数操作系统都可以利用虚拟内存实现将一个文件或者文件的一部分“映射”到内存中。然后就可以像内存一样访问快速。
JAVA NIO中提供了访问内存映射的方式“通道(channel)”传递,通道是用户磁盘文件的一种抽象,提供访问诸如内存映射、文件加锁机制以及文件间快速数据等操作系统特性。
谈谈:非阻塞IO几个组成部分
1、Buffer
ByteBuffer、CharBuff ...
线程池在java中非常重要,在java se1.4以前的版本线程池非常简单,但在1.5以后新增了java.util.concurrent多线包,使线程池变的非常强大!再和java se1.4新增的NIO可以实现非常高性能的功能。
为什么使用线程池:
1、减少线程的创建销毁所到来的资源消耗,线程池可以使线程得到复用,并且易于维护管理。
2、可更具系统资源消耗(如、cpu、rom、IO)动态配置线程的使用,防止系统消耗过大导致系统奔溃。
线程池的分类:
一、同步线程池
工作队列选用的SynchronousQueue,Synchro ...
使多个对象有机会出来请求,从而避免请求者和请求处理者之间的耦合,将这些处理请求的对象链成一个串,将请求一直往下抛,直到有处理者处理请求。
纯责任链模式:
每一个处理请求对象,要么完全不处理请求直接往下抛,要处理完整的请求并返回。
复杂责任链模式:
每一个请求者对象可以处理请求的一部分,然后再向下抛出,直到有处理者处理完毕。
一、使用场景
1、有多个对象可以处理同一个请求,具体哪个对象处理该请求需要等到运行时刻再确定。2、在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。3、可动态指定一组对象处理请求,客户端可以动态创建职责链来处理请求,还可以改 ...
访问者模式(Visitor)
- 博客分类:
- 设计模式
GOF定义:表示一个作用于某对象结构中的各元素的操作用,它是你可以在不改变各元素的前提下定义作用于这些元素的新操作。
访问者模式是21中设计模式中最难理解的一个设计模式。
角色分析:
抽象访问者:
抽象类或者接口,声明访问者可以访问哪些元素,具体的程序中就是visit方法中的参数定义。
访问者:
实现抽象访问者所声明的方法,及访问元素的后做的操作。
抽象元素类:
接口或者抽象类,声明接受哪一类访问者访问,程序中定义accept方法的参数定义。
元素类:实现抽象元素类所声明的accept方法 ...
中介者模式(Mediator Pattern)
- 博客分类:
- 设计模式
中介者模式又称调停者模式,属行为模式。
用一个中介者来封装多个对象之间负责的交互行为,中介者对象使各交互对象之间不需显示的声明相互引用,从而使对象之间松耦合,而且可以独立的改变他们之间的交互行为。
角色分析:
Mediator(抽象中介者):
定义同事类之间的通讯接口。
ConcreteMediator(具体中介者):
实现同事类之间的通讯接口,并维护它对各个同事类的引用。
Colleague(抽象同事类):
定义同事类的公共方法
ConcreteColleague(具体同事 ...
Observer观察者模式
- 博客分类:
- 设计模式
观察者模式:定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所以依赖于他的对象都得到通知并更新。
角色分析:
抽象目标角色(Subject):
目标角色提供观察者注册、删除接口,并发出通知 ...
备忘录模式(Memento)
- 博客分类:
- 设计模式
定义:在不破坏对象封装的前提下,捕获对象内部的状态,并在该对象之外保存这个状态,以便后面恢复,这个重点是在对象之外保存这个状态。
网上的一个例子:
package memento;
/**
*create by datao.wang 2014-2-8-上午11:16:50
*/
public class Client {
public static void main(String[] args){
Originator originator = new Originator();
originator.setState("状态1&qu ...
Template Method Pattern属于行为模式。
GOF定义:定义一个操作中算法骨架,将一个些算法操作延迟到子类中去实现,模板方法使得子类能够改变算法结构或者重新定义算法实现。
角色分析:结构非常简单
AbstractClass(抽象类):
在抽象类中定义一系列的基本操作,者写基本操作可以具体的实现也可以是抽象的。
ConcreteClass(实现类):
用于实现或者覆盖父类的一系列基本操作。
适用环境:
1、一次实现算法不变的部分,将可变的部分留给子类。
2、实现各个子类公共的部分,其他部分留给子类。
3、负责算法的 ...
策略模式Strategy
- 博客分类:
- 设计模式
策略模式和状态模式比较类似。
状态模式是以状态驱动行为的模式,而策略模式则以算法驱动行为的模式,某个类存在着不同的状态且不同状态类的行为不同,则选择状态模式,如某个类的行为有几种不同的实现方式,则选择策略模式。
GOF定义:定义一族算法,将每个算法分别封装起来,并且相互之间可以替换。策略模式可以使不同算法之间的替换独立于使用算法的客户。策略模式是非常常用的模式。
角色分析:
Context(环境类)
环境类是使用算法的角色,它用于解决问题时决定采用不同的策略,在环境类中维护一个抽象策略的引用。
AbstractStrategy(抽象策略类)
用于定义算法的抽象,它是所 ...
GoF给出的定义做个通俗的解释就是:一个对象在不同的状态下有不同的行为,也可以说对象的每个状态有着不同的行为。
状态模式所涉及到的角色有:
● 环境(Context)角色,也成上下文:定义客户端所感兴趣的接口,并且保留一个具体状态类的实例。这个具体状态类的实例给出此环境对象的现有状态。
● 抽象状态(State)角色:定义一个接口,用以封装环境(Context)对象的一个特定的状态所对应的行为。
● 具体状态(ConcreteState)角色:每一个具体状态类都实现了环境(Context)的一个状态所对应的行为。
public class Cont ...
解释器Interpreter
- 博客分类:
- 设计模式
所谓解释器模式就是定义一个语言的文法,并建立一个解释器来解释该语言中的句子!
比如:taglib标签,正则表达式都是采用的解释器。
解释器不仅仅只定义一种语法语义,更可以使用一个抽象语法树定义一个语言实例。
解释器角色:
AbstractExpression: 抽象表达式。声明一个抽象的解释操作,该接口为抽象语法树中所有的节点共享。
TerminalExpression: 终结符表达式。实现与文法中的终结符相关的解释操作。实现抽象表达式中所要求的方法。文法中每一个终结符都有一个具体的终结表达式与之相对应。
NonterminalExpression: 非终 ...
从B 树、B+ 树、B* 树谈到R 树
作者:July、weedge、Frankie。编程艺术室出品。
说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由
命令模式是行为模式的一种。行为模式就是关注对象的行为和责任。区别了建造模式、创建模式。
命令模式把一个请求或操作封装在一个对象中,把发出命令的责任和执行命令的责任,委派给不同的对象。
回调就是命令模式的一种.....
例:监听器
main(){
Botton b=new Buttton();
b.addListener(new XXListener(){
void click(Event e){
//..............
}
});
}
...
享元模式:用共享的技术有效地支持大量的细粒度对象。享元模式在一般的项目开发中并不常用,而系统底层开发中会用到,常常为了提升系统的性能而使用该模式。比如:java中的String类就使用了该模式。
main(){
String a=&am ...
java的方法:
1、方法的名字和参数的列表称为方法的签名,例如f(int)\f(String)是相同的方法名不同的签名,方法的返回值不属于签名的一部分,所以在子类覆盖超类方法的时候允许返回类型定义为原返回类型的子类型(java se5.0 以后)。
2、虚拟机在寻找类方法匹配时,会加载类的时候会创建一个类的方法列表。
3、java 接口中的方法自动声明为public,接口中的域自动声明为public static final
内部类分为:一般内部类、局部内部类、匿名内部类、静态内部类
...