自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (3)
  • 收藏
  • 关注

原创 Java23种设计模式

基本模式综述设计模式分为三种类型,共23类。创建型模式:单例模式、简单工厂、抽象工厂、工厂方法、建造者模式、原型模式。结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。按alphabeta排列简介如下。...

2013-05-12 19:42:47 1534 1

原创 软件设计六大原则

单一职责原则:类的职责单一,不要做太多事情里氏替换原则:使用父类的地方,都用使用任意子类替换依赖倒置原则:高层模块不应该依赖底层模块,二者都应该依赖其抽象,抽象不应该依赖细节接口隔离原则:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。迪米特原则:最少知道原则,类与类之间的耦合度尽量最小开放封闭原则:对修改关闭,对扩展开放...

2018-11-15 17:43:49 392

原创 大整数乘法

通常,在分析一个算法的计算复杂性时,都将加法和乘法运算当作是基本运算来处理,即将执行一次加法或乘法运算所需的计算时间当作一个仅取决于计算机硬件处理速度的常数。这个假定仅在参加运算的整数能在计算机硬件对整数的表示范围内直接处理时才是合理的。然而,在某些情况下我们要处理很大的整数,它无法在计算机硬件能直接表示的整数范围内进行处理。若用浮点型来表示它,则只能近似地表示它的大小,计算结果中的有效数字也受到

2013-05-14 21:09:31 2039

原创 二分法查找

问题:给定已按升序排好序的n个元素a[0:n-1],现要在这n个元素中找出一特定元素x。分析:如果n=1即只有一个元素,则只要比较这个元素和x就可以确定x是否在表中。因此这个问题满足分治法第一个适用条件。比较x和a的中间元素a[mid],若x=a[mid],则x在a中位置就是mid;如果xa[mid],所以我们只要在a[mid]的后面查找x即可。无论是在前面还是在后面查找x,其方法

2013-05-14 19:51:35 1413

原创 递归算法时间复杂度

求递归算法时间复杂度:递归树  递归算法时间复杂度的计算方程式一个递归方程:  在引入递归树之前可以考虑一个例子:T(n) = 2T(n/2) + n2  迭代2次可以得:T(n) = n2 + 2(2T(n/4) + (n/2) 2)  还可以继续迭代,将其完全展开可得:T(n) = n2 + 2((n/2) 2 + 2((n/22)2 + 2((n/23)

2013-05-14 19:18:28 1569

原创 分治与递归

分治法的基本思想:将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。递归地解这些问题,然后将各个子问题的解合并成原问题的解。它的一般的算法设计模式如下:divide-and-conquer(P)  {    if ( | P | adhoc(P);   //解决小规模的问题    divide P into smaller subinstancesP

2013-05-14 19:06:43 3295

原创 设计模式之访问者模式

定义:访问者模式(Visitor),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。从定义可以看出结构对象是使用访问者模式必备条件,而且这个结构对象必须存在遍历自身各个对象的方法。这便类似于Java语言当中的collection概念了。结构图:所涉及的角色:Visitor 抽象访问者角色:为该对象结构中具体元素角色声明

2013-05-12 17:53:57 1174

原创 设计模式之解释器模式

定义:解释器模式(Interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,用这个解释器使用该表示来解释语言中句子。解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能就值得。结构图:所涉及的角色:AbstractExpression 抽象解释器:具体的解释任务由各个实现类完成,具体的解释器分别由TerminalExpression和

2013-05-12 16:43:21 4019 2

原创 设计模式之享元模式

动机:在我们面向对象设计过程中,我们常常会面临着对象实例过多的问题,如果对象实例过多这将是我们系统性能提高的一个瓶颈。假设我们要设计一个星空场景,现在我们需要实例星星对象,我们可以实例每一颗星星,但随着我们实例星星对象增多整个场景就越来越慢了,如果你实例了1000+颗星星要你去维护,这可是一个吃力不讨好的工作。我们必须找到一个合适的方法解决以上问题定义:享元模式(Flyweight),运用共享

2013-05-11 15:43:57 1143

原创 设计模式之中介者模式

定义:中介者模式(Mediator),用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。结构图:所涉及的角色:抽象中介者Mediator:定义同事对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现。中介者实现类ConcreteMediator:从抽象

2013-05-11 14:02:05 1530

原创 设计模式之责任链模式

定义:责任链模式(Chain of Responsibility),使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些关系对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。结构图:所涉及的角色:抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定义 出一个方法以设定和返回对下家的引用。这个角色通常由一个Ja

2013-05-11 13:01:11 1286

翻译 深入浅出REST

不知你是否意识到,围绕着什么才是实现异构的应用到应用通信的“正确”方式,一场争论正进行的如火如荼:虽然当前主流的方式明显地集中在基于SOAP、WSDL和WS-*规范的Web Services领域,但也有少数人用细小但洪亮的声音主张说更好的方式是REST,表述性状态转移(REpresentational State Transfer)的简称。在本文中,我不会涉及争论的话题,而是尝试对REST和RES

2013-05-10 20:37:44 986

原创 设计模式之命令模式

定义:命令模式(Command),将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。动机:在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对

2013-05-10 16:37:52 1018

原创 设计模式之桥接模式

定义:桥接模式(Bridge),将抽象部分与它的实现部分分离,使它们都能可以独立地变化。动机:在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。结构图:可以看出,这个系统含有两个等级结构,也就是:由抽象化角色

2013-05-10 15:30:12 1056

原创 设计模式之单例模式

定义:单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。让类自身负责保存它的唯一实例,这个类保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。结构图:要点:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。从具体实现角度来说,就是以下三点:一是单例模式的类只提

2013-05-10 14:30:43 882

转载 架构师的基本素质

周星驰有个片子《喜剧之王》,剧中的尹天仇整天揣着本《演员的自我修养》,一个好演员不仅需要天赋,也需要一定的理论指导,无师自通的人毕竟是少数。架构师的成长过程也是这样。从普通程序员到高级程序员,再到架构师,是一个经验积累和思想升华的过程。经验积累是一个方面,素质培养是另一个方面,两者相辅相成,所以我觉得有必要把架构师的所要具备的素质罗列一下,作为程序员努力的方向。1、沟通能力为了提高效率,架

2013-05-09 21:31:34 1335

原创 设计模式之迭代器模式

定义:迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。结构图:角色及其职责Iterator(迭代器):迭代器定义访问和遍历元素的接口(定义遍历元素所需要的方法,一般来说会有这么三个方法:取得第一个元素的方法first(),取得下一个元素的方法next(),判断是否遍历结束的方法isDone()(或者叫hasNext()),

2013-05-09 14:43:10 789

原创 设计模式之组合模式

定义:组合模式(Composite),将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。组合模式让你可以优化处理递归或分级数据结构。有许多关于分级数据结构的例子,使得组

2013-05-09 14:05:49 990

原创 设计模式之备忘录模式

定义:备忘录模式(Memento),属于对象的行为模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态。结构图:角色及其职责发起人Originator:记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。备忘录Memento:负责存储发起人对象的内部状态,在需要的时候提供

2013-05-09 12:40:33 857

原创 设计模式之状态模式

定义:状态模式,又称状态对象模式(Pattern ofObjects for States),属于对象的行为模式,允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。状态模式主要解决的是当控制一个对象状态转换的条件表达过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。结构图:角色及其职责环境(Conte

2013-05-08 21:27:32 861

原创 设计模式之观察者模式

定义:观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。结构图:角色及其职责

2013-05-08 20:34:09 908

原创 设计模式之建造者模式

Builder模式的缘起:假设创建游戏中的一个房屋House设施,该房屋的构建由几部分组成,且各个部分富于变化。如果使用最直观的设计方法,每一个房屋部分的变化,都将导致房屋构建的重新修正.....动机(Motivation):在软件系统中,有时候面临一个"复杂对象"的创建工作,其通常由各个部分的子对象用一定算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合到一

2013-05-07 20:34:59 1038

原创 设计模式之外观模式

定义:外观模式(Facade),为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。解释:是一种结构型模式,它主要解决的问题是:组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。在这里我想举一个例子:比如,现在有一辆汽车,我们(客户程序)要启动它,那我们就要发动引擎(

2013-05-07 19:32:01 846

转载 UML软件建模之UML的构成

UML是一种通用的建模语言,其表达能力相当的强,不仅可以用于软件系统的建模,而且可用于业务建模以及其它非软件系统建模。UML综合了各种面向对象方法与表示法的优点,从提出之日起就受到了广泛的重视并得到了工业界的支持。本章将按视图、模型元素、图以及公共机制依次介绍UML的构造和基本元素,以使得读者对UML有一个总体了解,其具体细节将在后续章节中详细描述。2.1 视图建模方法由建模语言和建模

2013-05-06 17:05:41 1477

转载 UML与面向对象的软件建模概述

模型是现实系统的简化。建模是对现实系统进行适当的过滤,用适当的表现规则描绘出简洁的模型。通过模型,人们可以了解到所研究事物的本质,而且在形式上便于人们对之进行分析和处理。UML(统一建模语言)是一种通用的建模语言,它获得了工业界和学术界的广泛支持,目前已经成为建模语言的标准。1.1那么什么是模型呢?模型是现实系统的简化,它是抓住现实系统的主要方面而忽略次要方面的一种抽象。因此,模型即反映了

2013-05-06 16:37:53 1843

原创 设计模式之模板方法

定义:模板方法模式(Template Method),定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。结构图:角色及其职责(1)AbstractClass:是抽象类,其实也就是一个抽象模板,定义并实现了一个模板方法,这个模板方法一般是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽

2013-05-06 16:00:01 1031

原创 设计模式之原型模式

定义:原型模式(Prototype),是一种对象创建型设计模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式的结构:原型模式要求对象实现一个可以“克隆”自身的接口,这样就可以通过复制一个实例对象本身来创建一个新的实例。这样一来,通过原型实例创建新的对象,就不再需要关心这个实例本身的类型,只要实现了克隆自身的方法,就可以通过这个方法来获取新的对象,而无须再去通过new

2013-05-06 15:06:30 912

原创 设计模式之代理模式

定义:代理模式(Proxy),是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。类图:角色及其职责Subject:定义了R

2013-05-05 15:42:32 1401 1

原创 设计模式之适配器

定义:适配器模式(Adapter),是将一个类的接口转换成客户希望的另外一个接口,从而使得原本由于接口不兼容而不能一起工作的哪些类可以一起工作。在软件开发中,也就是系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要用于希望复用一些现有的类,但接口又与复用环境要求不一致的情况。类图:角色及其职责Target

2013-05-05 15:15:14 738

原创 设计模式之装饰模式

定义:装饰模式(Decorator),是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。它主要是解决:“过度地使用了继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀(多继承)。继承为类型引入的静态特质的意思

2013-05-04 16:09:43 795

原创 设计模式之策略模式

定义:策略模式(Strategy),它定义算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。类型:对象的行为模式类图:该模式中包含的角色及其职责环境(Context)角色:持有一个Strategy的引用。抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。具

2013-05-04 15:11:00 996

原创 设计模式之工厂方法

定义:工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类实例化哪个类。工厂方法使一个类的实例化延迟到其子类。类型:创建类模式类图:工厂方法实例(计算器): 该模式中包含的角色及其职责工厂(Creator)角色工厂方法定义创建各个实例的逻辑具体工厂(Creator)角色工厂方法模式的核心,它负责实现

2013-05-04 14:22:02 897

原创 设计模式之抽象工厂

抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。为了方便引进抽象工厂模式,引进一个新概念:产品族(Product Family)。所谓产品族,是指位于不同产品等级结构,功能相关联的产品组成的家族。如图:

2013-05-03 16:31:42 1053

原创 设计模式之简单工厂

从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。简单工厂模式的UML类图(见下图)简单工厂模式的实质是由一个工厂类根据

2013-05-03 15:48:14 1049

原创 UML类图与类的关系详解

UML类图与类的关系详解在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition)。下面我们结合实例理解这些关系。基本概念类图

2013-05-03 15:16:04 804

转载 面向对象的设计原则-类设计原则

在面向对象设计中,如何通过很小的设计改变就可以应对设计需求的变化,这是令设计者极为关注的问题。为此不少OO先驱提出了很多有关面向对象的设计原则用于指导OO的设计和开发。下面是几条与类设计相关的设计原则。1. 开闭原则(the Open Closed Principle OCP)一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。因此在进行面向对象设计时要尽量考虑接口封装机制、抽象机

2013-05-02 17:32:09 737

转载 用例建模指南

用例建模指南1.  什么是用例?在介绍用例方法之前,我们首先来看一下传统的需求表述方式-"软件需求规约"(Software Requirement Specification)。传统的软件需求规约基本上采用的是功能分解的方式来描述系统功能,在这种表述方式中,系统功能被分解到各个系统功能模块中,我们通过描述细分的系统模块的功能来达到描述整个系统功能的目的。一个典型的软件需求规约可能具有以

2013-04-30 15:16:48 2159

原创 数据库事务及隔离级别

摘要:现在的数据库系统都是多用户系统,允许不同用户同时操作相同的数据,为此要求数据库系统要有并发处理能力。一旦执行并发处理,就会出现数据的不一致。而利用事务,可以让数据库系统在并发访问时尽量避免出现数据不一致的问题。利用事务可以让数据库的并访问性能两方面取得平衡。一、事务的特性数据库事务由4个最基本的特性,即原子性(Atomic)、一致性(Consistency)、隔离性(Isolatio

2012-11-22 20:55:33 720

转载 Web service是什么?

Web service是什么?我认为,下一代互联网软件将建立在Web service(也就是"云")的基础上。我把学习笔记和学习心得,放到网志上,欢迎指正。今天先写一个最基本的问题,Web service到底是什么?一、Web service的概念想要理解Web service,必须先理解什么是Service(服务)。传统上,我们

2012-11-21 10:35:52 537

转载 常用Web Service汇总(天气预报、时刻表等)

现成的Web Service中有很多很好用的,比如天气预报,IP地址搜索,火车时刻表等等。本文汇总的一些常用Web Service,希望对大家有所帮助。下面总结了一些常用的Web Service,是平时乱逛时收集的,希望对大家有用。============================================天气预报Web Service,数据

2012-11-21 09:58:57 516

DreamweaverCS5中文版完全自学手册

DreamweaverCS5中文版完全自学手册,介绍的非常详细,能够帮助我们快速如何,并快速提高,成为高手

2012-01-11

Oracle 11g教程

有助于读者了解Oracle11g功能及其优势

2011-07-05

Win7下Oracle+11g安装步骤

方便大家在Win7系统下安装Oracle 11g数据库

2011-07-05

空空如也

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

TA关注的人

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