自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

songuo' s home

Make easy things easy & hard things possible.

  • 博客(161)
  • 收藏
  • 关注

原创 博客换地方啦

换地方好久了,在这里http://songuooo.com

2014-08-03 20:48:02 757

原创 Python Decorators

1 Using Properties to Control Attribute Accessimport mathclass Circle(object): def __init__(self, radius): # property __radius is private self.__radius = radius @propert

2013-05-29 23:09:34 858

原创 About python encoding

文件开头编码注释:# -*- coding:utf-8 -*-

2013-05-23 10:25:17 801

原创 Apache and mod_wsgi on Ubuntu 12.10

TheWSGI specification provides a standard and efficient method fordynamic web applications to communicate with web servers. mod_wsgiprovides a method for simply deploying WSGI applications with Ap

2013-05-15 10:49:26 998

原创 Learning Git

Basic configuration: $ git config --global user.name "Guo Song" $ git config --global user.email "[email protected]" $ git config --global core.editor vim $ git config --global merge.tool

2013-05-11 10:23:55 740

原创 Java I/O

1 File class不要被它的名字所欺骗,它不只代表文件,确切的说应该是FilePath。1.1 A directory lister(FilenameFilter的使用)import java.util.regex.Pattern;import java.io.FilenameFilter;import java.io.File;public class

2013-03-31 17:41:14 781

转载 设计模式23 访问者模式 - Visitor

转自http://www.cnblogs.com/java-my-life/archive/2012/06/14/2545381.html>访问者模式是对象的行为模式。访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。分派的概念  变量被声明时的类型叫做变量的静态类型(Static Type),有

2013-01-15 09:19:38 485

转载 设计模式22 - 模板方法模式 - Template Method

转自http://www.cnblogs.com/java-my-life/archive/2012/05/14/2495235.html>模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。

2013-01-15 08:58:17 418

转载 Decorators and Functional Python

Decorators and Functional PythonDecorators are one of Python's great features. In addition to their intrinsic usefulness in the language, they also help us to think in an interesting way — a fun

2013-01-10 15:06:23 660

原创 设计模式21 - Strategy 策略模式

来自http://www.cnblogs.com/java-my-life/archive/2012/05/10/2491891.html>策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式是对算法的包装,是把使用算法的责任和算法本身分割开

2013-01-06 19:43:55 898

原创 涉及模式20 - State 状态模式

来自http://www.cnblogs.com/java-my-life/archive/2012/06/08/2538146.html>状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式。状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。状态模式的结构

2013-01-04 15:57:38 581

原创 一个有点不太好理解的有关继承问题

这个问题是偶然间碰到的,通过代码来说名吧:Test.javaclass A { public String name; public String getName() { System.out.println(this); return this.name; }}class B extends A { public

2013-01-02 21:14:36 443

原创 设计模式 - 19 Memento 备忘录模式

一、什么是备忘录模式    Memento模式也叫备忘录模式,是行为模式之一,它的作用是保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态。二、备忘录模式的应用场景        如果一个对象需要保存状态并可通过undo或rollback等操作恢复到以前的状态时,可以使用Memento模式。1)一个类需要保存它的对象的状态(相当于Origin

2013-01-02 10:20:24 632

原创 Tomcat 映射虚拟目录

设置虚拟目录映射一般有两种用途:(1)把整个web应用映射到tomcat中:如一个testapp的web应用的路径是/opt/testapp,则通过虚拟目录映射可以将其映射到tomcat(webapps)中。(2)将外部资源映射到tomcat中以便使用:如将一些图片、文档等放在/opt/documents中,则可以将其映射到tomcat中以便使用,如下载等。原理同(1)类似。

2012-12-31 15:31:20 16939 1

原创 设计模式18 - Observer 观察者模式

1. Observer Pattern1.1. DefinitionThe observer pattern defines a one-to-many dependency between objects so that when one object changes state, all of its dependents are notified and upda

2012-12-31 09:24:14 745

原创 设计模式 17 - Mediator中介者模式

摘自http://sourcemaking.com/design_patterns/mediator>Intent01Define an object that encapsulates how a set of objects interact. Mediator promotes loose coupling by keeping objects from

2012-12-29 10:47:02 644

原创 Some Templates

1 web.xml<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocatio

2012-12-26 15:51:33 428

原创 设计模式16 - Iterator 迭代器模式

1 IntroductionThe Iterator pattern is one of the simplest and most frequently used of the design patterns. It allows you to move through a list or collection of data using a standard interface w

2012-12-26 15:19:35 432

原创 设计模式15 - Interpreter 解释器模式

Intent01Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language.Map a domain to a language, th

2012-12-26 13:12:10 692

原创 Static Methods, Class Methods, and Decorators

1 Using Static Methods and Class MethodsLet's start with an example:methods.pyclass MethodsTest: # Create an instance: obj = MethodsTest() def imeth(self, x): #

2012-12-24 17:08:08 629

原创 Python - Parser for command line options - argparse

2 argparse2.1 Start with an exampleThe following code is a Python program that takes a list of integers and produces either the sum or the max:prog.pyfrom argparse import (ArgumentParser, Fi

2012-12-22 15:09:26 2518

原创 Python - Parser for command line options - optparse

1 optparseLet's start with an example.parser.pyfrom optparse import OptionParserusage = "usage: %prog [options] arg1 arg2"version = "%prog 1.0"parser = OptionParser(usage = usage, version

2012-12-22 14:03:36 1906

转载 研磨设计模式之 命令模式-3

3.3  可撤销的操作        可撤销操作的意思就是:放弃该操作,回到未执行该操作前的状态。这个功能是一个非常重要的功能,几乎所有GUI应用里面都有撤消操作的功能。GUI的菜单是命令模式最典型的应用之一,所以你总是能在菜单上找到撤销这样的菜单项。        既然这么常用,那该如何实现呢?        有两种基本的思路来实现可撤销的操作,一种是补偿式,又称反操作式:比如被

2012-12-22 08:37:07 485

转载 研磨设计模式之 策略模式-1

策略模式(Strategy)1  场景问题1.1  报价管理        向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的客户要报不同的价格,比如:   (1)对普通客户或者是新客户报的是全价  (2)对老客户报的价格,根据客户年限,给予一定的折扣  (3)对大客户报的价格,根据大客户的累计消费金额,给予一定的折

2012-12-22 08:36:37 451

转载 研磨设计模式之 策略模式-2

2  解决方案2.1  策略模式来解决        用来解决上述问题的一个合理的解决方案就是策略模式。那么什么是策略模式呢?(1)策略模式定义         定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。(2)应用策略模式来解决的思路        仔细分析上面的问题,先来把它抽象一下,各种计算报

2012-12-22 08:36:24 342

转载 研磨设计模式之 策略模式-3

3  模式讲解3.1  认识策略模式(1)策略模式的功能        策略模式的功能是把具体的算法实现,从具体的业务处理里面独立出来,把它们实现成为单独的算法类,从而形成一系列的算法,并让这些算法可以相互替换。        策略模式的重心不是如何来实现算法,而是如何组织、调用这些算法,从而让程序结构更灵活、具有更好的维护性和扩展性。(2)策略模式和if-el

2012-12-22 08:36:07 366

转载 研磨设计模式之 策略模式-4

3.3  Context和Strategy的关系         在策略模式中,通常是上下文使用具体的策略实现对象,反过来,策略实现对象也可以从上下文获取所需要的数据,因此可以将上下文当参数传递给策略实现对象,这种情况下上下文和策略实现对象是紧密耦合的。        在这种情况下,上下文封装着具体策略对象进行算法运算所需要的数据,具体策略对象通过回调上下文的方法来获取这些数据。

2012-12-22 08:35:50 333

转载 研磨设计模式之 策略模式-5

3.4  策略模式结合模板方法模式        在实际应用策略模式的过程中,经常会出现这样一种情况,就是发现这一系列算法的实现上存在公共功能,甚至这一系列算法的实现步骤都是一样的,只是在某些局部步骤上有所不同,这个时候,就需要对策略模式进行些许的变化使用了。        对于一系列算法的实现上存在公共功能的情况,策略模式可以有如下三种实现方式:一个是在上下文当中实现公共功能

2012-12-22 08:35:32 394

转载 研磨设计模式之 命令模式-2

3  模式讲解  3.1  认识命令模式(1)命令模式的关键        命令模式的关键之处就是把请求封装成为对象,也就是命令对象,并定义了统一的执行操作的接口,这个命令对象可以被存储、转发、记录、处理、撤销等,整个命令模式都是围绕这个对象在进行。(2)命令模式的组装和调用        在命令模式中经常会有一个命令的组装者,用它来维护命令的“虚”实现和真实实

2012-12-21 15:40:19 337

转载 研磨设计模式之 命令模式-1

命令模式(Command)1  场景问题 1.1  如何开机        估计有些朋友看到这个标题会非常奇怪,电脑装配好了,如何开机?不就是按下启动按钮就可以了吗?难道还有什么玄机不成。        对于使用电脑的客户——就是我们来说,开机确实很简单,按下启动按钮,然后耐心等待就可以了。但是当我们按下启动按钮过后呢?谁来处理?如何处理?都经历了怎样的过程,才让电脑真

2012-12-21 15:39:45 280

转载 研磨设计模式之 装饰模式-4

3.3  装饰模式和AOP        装饰模式和AOP在思想上有共同之处。可能有些朋友还不太了解AOP,下面先简单介绍一下AOP的基础知识。1:什么是AOP——面向方面编程        AOP是一种编程范式,提供从另一个角度来考虑程序结构以完善面向对象编程(OOP)。        在面向对象开发中,考虑系统的角度通常是纵向的,比如我们经常画出的如下的系统架构图,默认都是

2012-12-21 15:38:38 302

转载 研磨设计模式之 装饰模式-3

3  模式讲解3.1  认识装饰模式(1)模式功能        装饰模式能够实现动态的为对象添加功能,是从一个对象外部来给对象增加功能,相当于是改变了对象的外观。当装饰过后,从外部使用系统的角度看,就不再是使用原始的那个对象了,而是使用被一系列的装饰器装饰过后的对象。        这样就能够灵活的改变一个对象的功能,只要动态组合的装饰器发生了改变,那么最终所得到的对象的

2012-12-21 15:37:26 324

转载 研磨设计模式之 装饰模式-2

2  解决方案2.1  装饰模式来解决        用来解决上述问题的一个合理的解决方案,就是使用装饰模式。那么什么是装饰模式呢?(1)装饰模式定义 (2)应用装饰模式来解决的思路        虽然经过简化,业务简单了很多,但是需要解决的问题不会少,还是要解决:要透明的给一个对象增加功能,并实现功能的动态组合。        所谓透明的给一个对象增加

2012-12-21 15:36:49 402

转载 研磨设计模式之 装饰模式-1

装饰模式(Decorator)1  场景问题1.1  复杂的奖金计算        考虑这样一个实际应用:就是如何实现灵活的奖金计算。        奖金计算是相对复杂的功能,尤其是对于业务部门的奖金计算方式,是非常复杂的,除了业务功能复杂外,另外一个麻烦之处是计算方式还经常需要变动,因为业务部门经常通过调整奖金的计算方式来激励士气。        先从业务上看看现

2012-12-21 15:36:01 378

转载 研磨设计模式之 桥接模式-4

3.4  广义桥接-Java中无处不桥接        使用Java编写程序,一个很重要的原则就是“面向接口编程”,说得准确点应该是“面向抽象编程”,由于在Java开发中,更多的使用接口而非抽象类,因此通常就说成“面向接口编程”了。        接口把具体的实现和使用接口的客户程序分离开来,从而使得具体的实现和使用接口的客户程序可以分别扩展,而不会相互影响。使用接口的程序结构如图12

2012-12-21 15:35:21 448

转载 研磨设计模式之 桥接模式-3

3  模式讲解3.1  认识桥接模式(1)什么是桥接        在桥接模式里面,不太好理解的就是桥接的概念,什么是桥接?为何需要桥接?如何桥接?把这些问题搞清楚了,也就基本明白桥接的含义了。        一个一个来,先看什么是桥接?所谓桥接,通俗点说就是在不同的东西之间搭一个桥,让他们能够连接起来,可以相互通讯和使用。那么在桥接模式中到底是给什么东西来搭桥呢?就是为被

2012-12-21 15:34:47 316

转载 研磨设计模式之 桥接模式-2

2  解决方案2.1  桥接模式来解决        用来解决上述问题的一个合理的解决方案,就是使用桥接模式。那么什么是桥接模式呢?(1)桥接模式定义         将抽象部分与它的实现部分分离,使它们都可以独立地变化。 (2)应用桥接模式来解决的思路        仔细分析上面的示例,根据示例的功能要求,示例的变化具有两个纬度,一个纬度是抽象的消

2012-12-21 15:34:14 375

转载 研磨设计模式之 桥接模式-1

桥接模式(Bridge)1  场景问题1.1  发送提示消息        考虑这样一个实际的业务功能:发送提示消息。基本上所有带业务流程处理的系统都会有这样的功能,比如某人有新的工作了,需要发送一条消息提示他。        从业务上看,消息又分成普通消息、加急消息和特急消息多种,不同的消息类型,业务功能处理是不一样的,比如加急消息是在消息上添加加急,而特急消息除了添

2012-12-21 15:33:28 307

转载 研磨设计模式之 工厂方法模式-5

3.3  平行的类层次结构(1)什么是平行的类层次结构呢?   简单点说,假如有两个类层次结构,其中一个类层次中的每个类在另一个类层次中都有一个对应的类的结构,就被称为平行的类层次结构。  举个例子来说,硬盘对象有很多种,如分成台式机硬盘和笔记本硬盘,在台式机硬盘的具体实现上面,又有希捷、西数等不同品牌的实现,同样在笔记本硬盘上,也有希捷、日立、IBM等不同品牌的实现;硬盘对象具有

2012-12-21 15:31:59 403

转载 研磨设计模式之 工厂方法模式-4

3.2  工厂方法模式与IoC/DI IoC——Inversion of Control  控制反转 DI——Dependency Injection   依赖注入1:如何理解IoC/DI        要想理解上面两个概念,就必须搞清楚如下的问题:参与者都有谁?依赖:谁依赖于谁?为什么需要依赖? 注入:谁注入于谁?到底注入什么?控制反转:谁控制谁?控制什么?为

2012-12-21 15:31:14 345

空空如也

空空如也

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

TA关注的人

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