- 博客(68)
- 资源 (1)
- 收藏
- 关注
原创 Command(命令)模式
一、命令模式简介(Brief Introduction) 命令模式(Command Pattern)将请求封装为一个对象,从而使你用不同的请求对客户进行参数化,对请求排队或纪录请求日志,以及支持可撤销的操作。二、解决的问题(What To Solve) 当需要有撤销或者恢复操作时,可以考虑使用命令模式。三、命令模式分析(Analysis)Command
2012-12-04 21:52:54
490
原创 Chain Of Responsibility(职责链)模式
一、职责链简介(Brief Introduction) 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一个链,并沿着这条链传递该请求,直到有一个对象处理它为止二、解决的问题(What To Solve) 客户端发出一个请求,会有很多对象都可以来处理这个请求,而且不同的对象的处理逻辑不一样,对于客户端而言,无所谓谁来处理,反正有对象处
2012-12-03 22:46:40
402
原创 C++类成员函数指针
1、直接上代码#include #include using namespace std;class Test{public: void print(string name) { cout << "Hello," << name << endl; }};typedef void (Test::*PointPrint)(string);
2012-12-03 16:28:30
426
原创 Proxy(代理)模式
一、代理模式简介(Brief Introduction)代理模式(Proxy Pattern)对其他对象提供一种代理以控制对这个对象的访问。二、解决的问题(What To Solve)1、远程代理 远程代理,也就是为了一个对象在不同的地址空间提供局部代表。这样可隐藏一个对象存在与不同地质空间的事实,隐藏对象所在的地址空间。2、虚拟代理 虚拟代理,是根
2012-12-01 15:17:40
462
原创 Flyweight(享元)模式
一、享元模式简介(Brief Introduction)享元模式(Flyweight Pattern),运用共享技术有效支持大量细粒度的对象。 享元模式可以避免大量非常相似类的开销。在程序设计中有时需要生成大量细粒度的类实例来表示数据。如果发现这些实例除了几个参数外基本伤都是相同的,有时就能够受大幅度第减少需要实例化的类的数量。如果能把这些参数移到类实例外面,在方法调用时将他们
2012-12-01 12:47:14
452
原创 Decorator(装饰者)模式
一、装饰模式简介(Brief Introduction)动态地给一个对象添加一些额外的职责。优点:把类中的装饰功能从类中搬移出去,这样可以简化原有的类。有效地把类的核心功能和装饰功能区分开了。二、角色解析Component:组件对象的接口,可以给这些对象动态的添加职责ConcreteComponent:具体的组件对象,实现组件对象接口,通常是被装饰器装饰的原始对象,也就是可
2012-11-30 16:57:45
446
原创 Composite(组合)模式
一、组合模式简介(Brief Introduction)组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。二、解决的问题(What To Solve)解决整合与部分可以被一致对待问题。三、代码解释Component:抽象的组件对象,为组合中的对象声明接口,让客户端可以通过这个接口来访问和管理整个对象结构,可以在里
2012-11-30 16:50:17
431
原创 Bridge(桥接)模式
一、桥接模式简介(Brief Introduction) 桥接模式(Bridge Pattern),将抽象部分与它的实现部分分离,使的抽象和实现都可以独立地变化。二、类说明Abstraction:抽象部分的接口,通常在这个对象中,要维护一个实现部分的对象引用,抽象对象里面的方法,需要调用实现的部分的对象来完成。这个对象中的方法,通常都是和具体的业务相关的方法Refined
2012-11-28 16:51:42
524
原创 Adapter(适配器)模式
一、适配器模式简介(Brief Introduction)适配器模式,将一个类装换成客户期望的另外一个接口。Adapter模式使的原本由于接口不兼容而不能工作的那些类可以一起工作。二、解决的问题(What To Solve)1、使用第三方组件,而这个组件的接口与目前系统接口不兼容(如方法与系统方法不一致等),可以使用适配器模式解决接口不兼容问题。2、使用早前项目一些有用的类,可以用
2012-11-28 12:10:34
391
原创 Singleton(单例)模式
一、单例模式简介(Bref Introduction) 单例模式(Singleton Pattern),保证一个类只有一个实例,并提供一个访问它的全局访问点。单例模式因为Singleton封装它的唯一实例,它就可以严格地控制客户怎样访问它以及何时访问它。二、单例模式在第一次用到的时候初始化1、Singletonclass ImplFactory{public:
2012-11-28 11:13:10
393
原创 Abstract Factory模式
下面是简单工厂模式一、简单工厂模式简介(Bref Introduction) 简单工厂模式(Simple Factory Pattern)的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖二、解决的问题(What To Solve) 客户实例化对象时不需要关心该对象是由哪个子类实例化的。
2012-11-28 11:09:53
691
原创 数据库序列
一、Oracle数据库1、创建序列SQL> CREATE SEQUENCE name [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}] 2、查询序列(1)
2012-11-23 22:51:57
4308
原创 Oracle基础
1、Oracle用户类型区别 1.1 sys和system用户的区别【system】用户只能用normal身份登陆em。【sys】用户具有“SYSDBA”或者“SYSOPER”权限,登陆em也只能用这两个身份,不能用normal。“SYSOPER”权限,即数据库操作员权限,权限包括: 打开数据库服务器 关闭数据库服务器 备份数据库 恢复数据库
2012-11-21 11:41:31
545
原创 编译链接错误
1、error C2512: “HTable”: 没有合适的默认构造函数可用?分析:一般自定义了构造函数之后,可能会出现这种错误;但是现在,HTable中并没有定义任何构造函数,它应该有默认构造函数的,为什么会报这个错误呢?定位方法:(1)手动添加了一个默认的构造函数HTable(){}; 现在出现了一个新的错误:error C2512: “List”: 没有合适的默认构造函数可用。
2012-11-18 21:19:43
1511
原创 c++中的explicit关键字
c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的。1、不使用此关键字的效果:如果c++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象。例如class A{public: A(int a):_a(a){} void printA() { cout << _a << endl;
2012-11-17 16:35:16
546
原创 从标准库函数strtod理解指针
1、函数定义: double strtod ( const char * str, char ** endstr); 参数: str:要解析的字符串 endstr:函数体中会修改endstr所指向的内容,使其指向解析double后的下一个字符。 函数功能: Convert sting to double. 使用方法: char * str = "3.1415aab"; char
2012-11-17 15:38:13
793
原创 【词条】大端(big-endian)模式和小端(little-endian)模式
1、我们知道当定义一个变量的时候,操作系统会为这个变量分配一段内存,具体分配哪段内存由操作系统的内存分配策略决定。例如short int x = 0x1234;(为了好理解,我们这里使用16进制表示)这个时候操作系统会为x分配两个字节的内存(假设为0x4000、0x4001这两个地址)(1)如果x在内存中按照下面的方式存储内存地址0x4000
2012-11-17 15:15:37
714
原创 【词条】const
1、char const * const s1= "hello"; char const * s2 = s1; //合法 char *const s2 = s1; //不合法 一直想不通为什么会出现上面的情况? (1)先来看个简单的例子: int const a = 3; //定义一个int类型的常量
2012-11-15 20:24:26
568
原创 从java转到c++随记
(1)C++中的类内容为public pirvate等,类没有限定词,如果类定义在头文件中,那么所有包含这个头文件的其他类都可以访问到这个类;但是可以通过private,public控制类的内容。(2)常量必须在构造对象之前就完成初始化,所以我们不能再构造函数里面初始化它,而只能在初始化列表中初始化;当然也可以在定义它的时候就初始化;(3)ISO C++禁止在定义成员变量的
2012-11-13 22:38:48
536
原创 【词条】虚函数
多态性 指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种多态性:编译时多态性,运行时多态性。 a.编译时多态性:通过重载函数实现 b 运行时多态性:通过虚函数实现。包含纯虚函数的类称为抽象类。由于抽象类包含了没有定义的纯虚函数,所以不能定义抽象类的对象。(1)疑问:如果说需要把基类的析构函数设置为虚函数的话,那么在销毁的时候就能正确的调用子
2012-11-13 20:26:21
375
原创 斯坦福大学公开课:编程范式(一)
听了这第二讲,感觉学到了很多东西;首先的一个感受就是这个老师是在引导你进行思考,而不是像中国的教师一样,只教你如何计算一个数的二进制表示,如何取反码。所谓的char,short,int只是对内存字节的不同解释而已。(1) 二进制加法(不考虑负数) short s1 = 3; 0000 0011 short s2 = 1;
2012-11-12 23:53:50
1318
原创 【词条】C++编译、链接过程
本为是对http://blog.csdn.net/bjtbjt/article/details/6707327 和http://blog.csdn.net/long2015/article/details/4465941的总结,称为原创勉强了些。C/C++编译过程主要分为4个过程 1) 编译预处理 2) 编译、优化阶段 3) 汇编过程 4) 链接程序其中第2、3过程
2012-10-29 22:06:27
517
原创 【词条】stdafx.h
关于这个文件的作用,有很多人总结过了。这里就罗列一下我的理解吧0、作用:预编译头文件,节省编译时间。1、stdafx.h和stdafx.cpp是配套的。2、stdafx.h中包含的头文件只编译一次,如果有工程文件里的大多数.cpp文件需要头文件,可以把它#include到stdafx.h文件中。3、stdafx.cpp第一个被编译,编译结果保存到stdafx.pch文件(预编译头文
2012-10-27 16:35:35
416
原创 【词条】_tmain
C/C++没有使用已经很多年了,现在想重新学起来,因为发现一直用Java的话人会退化的。使用VS2005创建了一个Win32控制台程序,生成的主函数傻眼了:#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){ return 0;}查看了一下stdafx.h这个文件,如下:#pragma once
2012-10-27 15:45:28
413
深入理解Java虚拟机--JVM高级特性与最佳实践.pdf(高清)
2014-05-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅