摘要: 1.意图 动态地给一个对象添加一些额外的功能. 2.适用性 动态、透明的方式给单个对象添加职责。 如果不适合适用子类来进行扩展的时候,可以考虑适用装饰模式。 避免子类数目爆炸性增长。 3.结构 4.参与者 Component: 定义一个对象接口,可以给这些对象动态地添加职责. ConcreteComponent: 定义一个对象,可以给这个对象添加职责. Decorator: 持有一个... 阅读全文
posted @ 2015-03-04 21:05 Ydoing 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 设计模式怎样解决设计问题寻找合适的对象决定对象的粒度指定对象的接口描述对象的实现运用复用机制设计应支持变化23个设计模式创建型结构型行为型1.创建型Abstract Factory(抽象工厂模式)提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类.Builder(生成器模式)将一个复... 阅读全文
posted @ 2015-03-04 21:01 Ydoing 阅读(354) 评论(0) 推荐(0) 编辑
摘要: dpkg 是Debian package的简写,为”Debian“ 操作系统 专门开发的套件管理系统,用于软件的安装,更新和移除。所有源自"Debian"的Linux的发行版都使用 dpkg, 例如"Ubuntu" 安装软件 sudo dpkg -i couchbase-server-enterprise_3.0.1-ubuntu12.04_amd64.deb 显示软件简介信息 su... 阅读全文
posted @ 2015-03-04 20:56 Ydoing 阅读(2177) 评论(0) 推荐(0) 编辑
摘要: 在UML类图中,常见的有以下几种关系:泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)1.泛化(Generalization)【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有... 阅读全文
posted @ 2015-03-03 21:13 Ydoing 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 1.非阻塞算法非阻塞算法属于并发算法,它们可以安全地派生它们的线程,不通过锁定派生,而是通过低级的原子性的硬件原生形式 —— 例如比较和交换。非阻塞算法的设计与实现极为困难,但是它们能够提供更好的吞吐率,对生存问题(例如死锁和优先级反转)也能提供更好的防御。使用底层的原子化机器指令取代锁,比如比较并交换(CAS,compare-and-swap).2.悲观技术独占锁是一种悲观的技术.它假设最坏的情... 阅读全文
posted @ 2015-03-01 13:48 Ydoing 阅读(557) 评论(0) 推荐(0) 编辑
摘要: 内部类是一种编译器现象,与虚拟机无关。编译器将会把内部类翻译成用美元符号$分隔外部类名与内部类名的常规类文件,而虚拟机对此一无所知。编译器为了引用外部类,生成了一个附加的实例域this$0为什么要用内部类?内部类可以访问所在类域中的数据(包括私有);内部类可以在同一包中被隐藏;匿... 阅读全文
posted @ 2015-02-26 21:29 Ydoing 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 当Java类库没有提供适合的同步工具时,就需要构建自定义同步工具。可阻塞状态依赖操作的结构acquir lock on object state;//请求获取锁while(precondition does not hold){//没有满足前提条件 release lock;//先释放锁 w... 阅读全文
posted @ 2015-02-09 21:52 Ydoing 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 在Java5.0之前,只有synchronized(内置锁)和volatile. Java5.0后引入了显示锁ReentrantLock.ReentrantLock概况ReentrantLock是可重入的锁,它不同于内置锁, 它在每次使用都需要显示的加锁和解锁, 而且提供了更高级的特性:公平锁, 定... 阅读全文
posted @ 2015-02-08 11:38 Ydoing 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 编写线程安全需要关心的:共享的变量可变的变量共享意味着多个线程可以同时访问,可变意味着其值在生命周期可以改变。例如以下count 变量://线程不安全的类public class UnsafeCount { private int count = 0; //该变量是共享的 public void increase() { //这里没有同步机制,多个线程可以同时访问 ... 阅读全文
posted @ 2015-02-05 21:53 Ydoing 阅读(1108) 评论(0) 推荐(0) 编辑
摘要: 假如汇编语言要实现如下C语言的功能,编译环境Ubuntu14.04(32位)。#includevoid swap(int *p, int *q){ int tmp = *p; *p = *q; *q = tmp;}int main(){ int a[] = {3, 0, 5,... 阅读全文
posted @ 2015-02-04 22:46 Ydoing 阅读(440) 评论(0) 推荐(0) 编辑