- 博客(25)
- 资源 (1)
- 收藏
- 关注
原创 桥接模式
桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化。抽象与它的实现分离,并不是说让抽象类与其派生类分离,指的是抽象类和它的派生类用来实现自己的对象。实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合。...
2018-03-02 16:52:03
150
原创 备忘录模式
备忘录:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。简单理解就是将当前状态留存并可恢复,很容易理解的一个模式。Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。Originator可根据需要决定Memento存储Originator的哪些内部状态。Me...
2018-03-02 14:00:22
148
原创 状态模式
状态模式的好处是将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。即是将特定的状态相关的行为都放入一个对象中,由于所有与状态相关的代码都存在于某个ConcreteState中,所以通过定义新的子类可以很容易地增加新的状态和转换。...
2018-03-02 10:56:43
115
原创 抽象工厂
抽象工厂的好处很明显,易于交换产品系列,由于具体工厂类,在一个应用中只需要在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,它只需要改变具体工厂即可使用不同的产品配置。它让具体的创建实例过程与客户端分离,客户端是通过它们的抽象接口操纵实例,产品的具体类名也被具体工厂的实现分离,不会出现在客户代码中。缺点是增加功能时,需要改动很多地方,感觉不符合封闭-开放原则。优化的方法是用简单工...
2018-03-02 10:25:39
125
原创 观察者模式
使用观察者模式的动机是什么呢?将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便。 观察者模式所做的工作其实就是在解除耦合。让耦合的双方都依赖于抽象,而不是依赖于具体。从而使得各自的变化都不会影响另一边的变化。...
2018-03-01 14:50:38
123
原创 建造者模式
以炒菜为例,用建造者模式炒出来的菜就不会少放盐。 它主要是用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。建造者模式的好处就是使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了。...
2018-03-01 14:10:38
161
原创 装饰模式
大话设计模式,以穿衣为例 Component是定义一个对象接口,可以给这些对象动态地添加职责。ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责。Decorator,装饰抽象类,继承了Component,从外类来扩展Component类的功能,但对于Component来说,是无需知道Decorator的存在的。至于ConcreteDecorator...
2018-02-28 17:31:25
130
原创 设计模式的原则
面向对象的四个好处:可维护、可扩展、可复用和灵活性好。单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。简单理解就是做好一件事。开放封闭原则:是说软件实体应该可以扩展,但是不可修改。对于扩展是开放的,对于更改是封闭的。依赖倒转原则:抽象不应该依赖细节,细节应该依赖于抽象,简单理解就是要针对接口编程,不要对实现编程。迪米特法则:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作...
2018-02-28 16:28:12
98
原创 策略模式
策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。 策略模式就是用来封装算法的,但是在实践中,我们可以用它来封装几乎任何类型的规则,只要在分析过程中听到需要在不同时间应用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性。...
2018-02-28 15:53:57
128
原创 简单工厂模式
大话设计模式,以一个计算器的设计为例有一定的缺点:这个模式只是解决对象的创建问题,而且由于工厂本身包括了所有的具体处理方式,导致每次维护或扩展都要改动这个工厂,以至于代码需要重新编译部署,这真的是一个糟糕的处理方式。...
2018-02-28 14:45:07
114
转载 深入hibernate的三种状态
学过hibernate的人都可能都知道hibernate有三种状态,transient(瞬时状态),persistent(持久化状态)以及detached(离线状态),大家伙也许也知道这三者之间的区别,比如瞬时状态就是刚new出来一个对象,还没有被保存到数据库中,持久化状态就是已经被保存到数据库中,离线状态就是数据库中有,但是session中不存在该对象。但是大家又是否对hibernate的ses...
2018-01-10 10:41:17
195
转载 paxos选举算法原理与推导
Paxos算法在分布式领域具有非常重要的地位。但是Paxos算法有两个比较明显的缺点:1.难以理解 2.工程实现更难。 网上有很多讲解Paxos算法的文章,但是质量参差不齐。看了很多关于Paxos的资料后发现,学习Paxos最好的资料是论文《Paxos Made Simple》,其次是中、英文版维基百科对Paxos的介绍。本文试图带大家一步步揭开Paxos神秘的面纱。 Paxos是什么
2018-01-03 17:30:12
2432
1
转载 rpc
一、RPC简介 RPC,全称为Remote Procedure Call,即远程过程调用,它是一个计算机通信协议。它允许像调用本地服务一样调用远程服务。它可以有不同的实现方式。如RMI(远程方法调用)、Hessian、Http invoker等。另外,RPC是与语言无关的。 RPC示意图 如上图所示,假设Computer1在调用sayHi()方法,对于Computer1而
2017-11-14 16:39:42
221
原创 JVM及java基本知识整理
1.JVM的内存模型 2.垃圾回收算法 3.双亲委派 4.OOM出现的原因及如何处理,如何查看内存的分配(http://www.jianshu.com/p/2fdee831ed03) 5.java异常 6.java集合 7.hashtable,hashmap的区别,hashmap、treemap、concurrentmap的区别 8.泛型 看到一个对JVM总结不错的地址,入口htt
2017-11-14 10:05:06
174
转载 spring aop的实现原理----其中之一的jdk代理
简介 前段时间写的java设计模式--代理模式,最近在看Spring Aop的时候,觉得于代理模式应该有密切的联系,于是决定了解下Spring Aop的实现原理。 说起AOP就不得不说下OOP了,OOP中引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。但是,如果我们需要为部分对象引入公共部分的时候,OOP就会引入大量重复的代码。例如:日志功能。 A
2017-10-26 16:19:34
181
转载 JVM虚拟机问题--为什么要有两个survisor
那么,在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区? 1 为什么要有Survivor区 先不去想为什么有两个Survivor区,第一个问题是,设置Survivor区的意义在哪里? 如果没有Survivor,Eden区每进行一次Minor GC,存活的对象就会被送到老年代。老年代很快被填满,触发Major GC(因为Major GC一般伴随着M
2017-09-21 22:54:40
293
转载 JVM方法区理解
最近项目数据量猛增,需要监控JVM参数并调优,作为一个之前搞C++的新小二,赶紧恶补一下虚拟机的知识,在网上搜集各种资料,总结一下方法区内存布局,如有错误,欢迎指导。 1、JVM内存模型 大多数JVM将内存分配为Method Area(方法区)、Heap(堆)、Program Counter Register(程序计数器)、JAVA Method Stack(JAVA方法栈)、Na
2017-09-21 20:06:44
751
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人