自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

原创 proxy patter --代理模式

对于复杂的软件系统常常有一种处理手法,即增加一层间接层,从而使得系统获得一种更为灵活、满足特定需求的解决方案。在面向对象的系统中,有些对象由于某种原因,比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等,直接访问会给使用者或者系统结构带来很多麻烦。Proxy设计模式就是在不失去透明操作对象的同时,通过增加一层间接层来管理、控制这些对象特有的复杂性。

2015-03-15 00:30:28 82

原创 command pattern -- 命令模式

在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如需要对行为进行“记录、撤销/重做(undo/redo)、事务”等处理,这种无法抵御变化的紧耦合是不合适的。Command设计模式就是在这种情况下,将“行为请求者”与“行为实现者”解耦,将一组行为抽象为对象,以实现二者之间的松耦合。“Encapsulate a request as an o

2013-01-28 09:51:03 558

原创 c++多态深入分析--单继承

编译器在编译的时候,发现基类中有虚函数,此时编译器会为每个包含虚函数的类创建一个虚表(vtable),该表是一个一维数组,在这个数组中存放每个虚函数地址,这张表解决了继承、覆盖的问题,保证其真实放映实际的函数。编译器会为基类与继承类都建立一个虚表(即便继承类中没有virtual函数,但是基类中有,那么继承类也就是有)。一般编译器将指向虚表指针存放在实例对象中第一个地址。那么其实我们只要

2013-01-22 09:34:52 583

原创 Chain of Responsibility -- 责任链模式

在软件构建构成中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接收者,如果显示指定,将必不可少地带来请求发送者与接收者的紧密耦合。COR(Chain of Reposibility)设计模式可以使请求的发送者不需要指定具体的接收者,让请求的接收者自己在运行时决定来处理请求,从而使两者解耦。使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这

2013-01-14 09:47:11 767 2

原创 proxy patter --代理模式

对于复杂的软件系统常常有一种处理手法,即增加一层间接层,从而使得系统获得一种更为灵活、满足特定需求的解决方案。在面向对象的系统中,有些对象由于某种原因,比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等,直接访问会给使用者或者系统结构带来很多麻烦。Proxy设计模式就是在不失去透明操作对象的同时,通过增加一层间接层来管理、控制这些对象特有的复杂性。// Pro

2013-01-11 09:55:46 687 2

原创 flyweight pattern -- 享元模式

flyweight pattern 又称享元模式Use sharing to support large numbers of fine-grained objects efficiently --- GoF运用共享技术有效地支持大量细粒度的对象UnshareConcreteFlyweight:并不是所有的Flyweight具体实现子类都需要被共享的,如果是不能共享的,那么就只能

2013-01-09 10:03:18 939 5

原创 facade pattern--外观模式

facade pattern称为外观模式下面这幅图很能说明该模式用于什么地方。A方案的问题在于组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和个子系统的演化,这种过多的耦合面临很多变化的挑战。Facade设计模式则简化外部客户程序和系统间的交互接口,将外部客户程序的演化和内部子系统的变化之间的依赖相互解耦。Provide a unified interface to

2013-01-07 18:00:56 1125

原创 怎么有效的防止内存泄漏

首先说说标题可能取得有些大,但是可以理解为编程过程中有效的防止写的代码中有内存泄漏。好了废话不多说了,首先看下面一段代码。class Image{ public: Image(const std::string& imgFileName); ...}class Voice{ public: Voice(const s

2013-01-06 22:29:35 8606 19

原创 不想在博客园继续写文章了,决定搬到csdn

原因记下几点:  1.水文越来越多,交流技术的越来越少了。     2.博客要求的不是内容,而是美观了。     3.氛围没有了,决定去csdn

2012-12-21 19:26:15 87

原创 decorator pattern -- 装饰模式

Decorator,装饰模式就是使“对象功能的扩展”能够根据需要来动态地实现,同时可以避免“扩展功能的增多”导致子类数量急剧增多,从而使得任何“功能扩展变化”所产生的负面影响降为最低。Decorator提供了一种给类增加职责的方法,不是通过继承实现,而是组合。 举例,一辆汽车 1 class car 2 { 3 public: 4 virt

2012-12-21 19:26:13 523

原创 composite pattern -- 组合模式

composite pattern称为组合模式在面向对象的系统中,我们经常会遇到一类具有"容器"特征的对象,即它们在充当对象的同时,又是其他对象的容器。“Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual obj

2012-12-21 19:26:10 417

原创 bridge pattern -- 桥接模式

Bridge模式又称为Handle/Body模式。在软件系统中,经常面临着“某些结构复杂的对象”的创建工作,由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。大部分创建型模式,就是为了解决如何向“客户程序”隔离出“这些易变对象”,从而使得“依赖这些易变对象的客户程序”不随着需求的改变而改变。实例分析奔驰汽车的制动距离(从这个速度到完全停止所需要的距

2012-12-21 19:26:08 333

原创 adapter pattern--适配器模式

adapter pattern,又称wrapper(包装) pattern在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。Adapter设计模式就是为了应对这种“迁移的变化”,以使客户系统既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口。“Convert the interface of a

2012-12-21 19:26:06 348

原创 prototype pattern--原型模式

prototype pattern称为原型模式在软件系统中,经常面临着“某些结构复杂的对象”的创建工作,由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。Prototype设计模式,就是为了解决如何向“客户程序”隔离出“这些易变对象”,从而使得“依赖这些易变对象的客户程序”不随着需求的改变而改变。Prototype设计模式指定创建对象的种类,然后通过拷贝这些原

2012-12-21 19:26:03 411

原创 builder pattern--建造者模式

buildre pattern称建造者模式Builder设计模式,提供一种封装机制来隔离出构成复杂对象的各个子对象的变化,从而保持系统中的相对稳定的将这些子对象组合在一起的算法不随着需求的改变而改变。 Separate the construction of a complex object from its representation so that the same constr

2012-12-21 19:26:01 442

原创 abstract factory pattern--抽象工厂模式

abstract factory pattern,抽象工厂模式 抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。Abstract Factory模式存在的意义就是为了创建各系列的对象而存在的。相对Factory Method模式的解决“单个对象”的需求变化,Abstract Factory模式解决“系列相关对象”的需求变化。明确的理解就是抽象工厂模式提供多个产品的

2012-12-21 19:25:58 430

原创 factory mothed pattern--工厂方法模式

factory mothed pattern,称工厂方法模式首先我们看看Gof怎么定义工厂方法模式的:“Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiatio

2012-12-21 19:25:55 413

原创 singleton pattern--单件模式

singleton pattern,又称单件模式,或者单例模式。singleton要求类有且仅有一个实例,并给其他对象提供这一实例。控制类实例仅有一个,办法有两个:1.私有化构造函数与copy构造函数,使用一个函数静态变量 1 #include 2 class People{ 3 private: 4 People(std::string nam

2012-12-21 19:25:53 563 1

原创 临时对象的来源

大家可能对这个临时对象这个概念还不是很清楚,那么首先我们花一些时间来理解临时对象。首先看下面一端代码: 1 #include 2 void swap( int &a,int &b) 3 { 4 int temp; 5 temp=a; 6 a=b; 7 b=temp; 8 } 9 10 int main(int argc,char** ar

2012-12-21 19:25:51 303

原创 C++继承

C++继承可以是单一继承或多重继承,每一个继承连接可以是public,protected,private也可以是virtual或non-virtual。然后是各个成员函数选项可以是virtual或non-virtual或pure virtual。本文仅仅作出一些关键点的验证。  public继承,例如下:1 class base2 {...}3 class derived:publ

2012-12-21 19:25:48 254

原创 C++文件依存关系

如果现在你做的C++项目(课题)包含的文件没有超过1000个,你可以选择略过此文,不过建议继续浏览。如果你觉得重新编译文件的时间很短或者时间长一点无所谓,反正需要重新编译,那么你也可以选择略过此文,不过也建议浏览。如果你想学习或者关心这块内容,那么此文必定会给你带来收获。首先我不给出依存关系的定义,我给出一个例子。 1 class Peopel{ 2 public: 3

2012-12-21 19:25:46 452 1

原创 C++你最好不要做的

1、最好不要使用引用返回值有同学在传递的参数的时候使用引用方式传递,避免了临时对象的创建,提高了效率,那么在返回值的时候能不能使用引用呢?看如下代码 class Rational{ public: Raional( int numerator = 0, int denominator =1); ...

2012-12-21 19:25:43 361

原创 C++你可能不知道地方

c++中编译器替我们完成了许多事情,我们可能不知道,但也可能习以为常。下面详细介绍 一、初始化与初始赋值首先说说类的初始化与初始赋值之前的区别,这也许里面可能有我们不知道的事情。  其实类初始化与初始赋值还是有区别的。 1 class People{ 2 public: 3 People(std::stri

2012-12-21 19:25:41 243

原创 成员函数与非成员函数的抉择

1.尽量用类的非成员函数以及友元函数替换类的成员函数例如一个类来模拟人People1 class People{2 public:3 ...4 void Getup( );5 void Washing( );6 void eating( );7

2012-12-21 19:25:38 233

原创 std::invalid_argument应用

首先说明invalid_argument是一个类(class invalid_argument;),它的继承关系如下exception-------->logic_error--------->invalid_argument   invalid_argument原型是1 class invalid_argument:public logic_error {2 public:3

2012-12-21 19:25:36 338

原创 尽量不要使用#define,而是用const、enum、inline替换。

为什么这么说呢?或许很多程序员已经习惯在文件开始使用大量的#define语句。例如:这里程序文件开头有如下#define语句        #define     N                     10        #define     PI                     3.14        #define     MAX                10

2012-12-21 19:25:34 206

原创 #include是怎么样工作的?

大多数园友可能对“#include”比较熟悉,因为我们写C/C++程序的时候都会写的字符串之一,但是它是具体怎么工作的?或者它的原理是什么呢?可能不太熟悉,也有可能没有去关心过。我们只关心程序能否正确运行,或者程序怎么实现等等一些问题。   这里笔者就为介绍下我们熟悉又不太熟悉的“#include”,首先我们了解下C/C++头文件。   头文件为相关声明提供了一个集中存在的位置。头文件一般

2012-12-21 19:25:31 234

原创 一道有趣的智力题

题目:有12个外观完全一样的球,其中有一个球和其他球的重量不一致,如何使用一个天平称3次得出不一致的球是哪个?笔者看到这题就立马想到将球分成3组,将其中的两组进行比较,然后如果不相等,就将重的那组进行两两划分,在比较,在将两个重的进行比较在进行比较。如果相等则将余下的那组进行比较。相信这里有不少园友发现不是比重,也有可能轻。题外话:这里写篇博文,就是要告诫作者自己,细心点,做一个程序员这么

2012-12-21 19:25:28 45

原创 对Html5 Web App 的背景调查研究

最近好久没有写文章了,原因是笔者最近接了一个项目,另外去广东移动珠海分公司实习。这里是花了一天时间整理的关于Html5 Web App方向的调研。虽说Android 平台开发或者Mac os X 平台开发以及Windows Phone 7平台开发。开发的程序都只能在各自手机系统上运行,如果实现开发出一种程序,能再以上任何系统上运行,那是多么美好的事情。而Html5 Mobile Web App就是

2012-12-21 19:25:25 79

原创 KMP算法

KMP算法是字符串处理算法的一种经典算法。字符串中的一些算法在C++中需要编程者自己实现,在C#中的话String类的功能及其强大,编程者自己调用该类一些功能完成字符串处理。那么可能就导致错过这些字符串基本的经典算法。而在字符串处理这些算法中,KMP算法可谓是经典算法。  那么首先看下面一个一般求子串在主串中的位置的算法。模式匹配  有两个字符串S1(长度为n)和S2(长度为m)(n>

2012-12-21 19:25:23 56

原创 编程基本算法(三)

编程基本算法(一)编程基本算法(二)编程基本算法(三) 选择排序使用条件:可对比大小的集合。算法思想:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。举例编程:int b[10]={77,1,65,13,81,93,10,5,23,17}//简单选择排序void SimpleS

2012-12-21 19:25:20 57

原创 编程基本算法(二)

在写此文章之前,笔者想说说关于程序员的基本知识,好多园友在博客园上谈论自己的工作经历,或者给毕业生的建议,笔者很赞同期中园友建议在同学在学校里将计算机基础打好,没有良好基础怎么能建大厦呢?有了一些基础基本知识,在去学习深的理论就是事半功倍了,如果是先遇到深理论在去学习相关的基础,那就是事倍功半了。也许许多同学会说,现在的很多企业都招能直接上手的,笔者首先想说那种企业肯定是小企业,鼠目寸光,招也找不

2012-12-21 19:25:18 43

原创 编程基本算法(一)

笔者好长时间没有更新博客了,一个原因是开发的项目所用到的技术都是老技术点,所接触到的知识都是行业逻辑流程,所以只是自己做了总结并没有拿上来分享。另外一个原因是目前笔者在重新学习C++语言以及计算机的一些基本知识(算法等)。  下面的代码为C++代码,好了直接进入正题      编程基本算法(一)  编程基本算法(二)      编程基本算法(三)   折半查找      又

2012-12-21 19:25:16 64

原创 ASP.NET调用.sql文件(二)

笔者前一阵子发表了一篇《ASP.NET调用.sql文件》文章,主要是是解决数据库配置,减去传统手工附加数据库和自己改写web.config文件等等这些复杂的过程,而是配置的向导。其中给出关键的技术知识点,就是通过sql数据库生成数据库脚本即.sql文件,然后通过调用osql.exe来执行.sql文件。  这里,园友首先质疑了其安全性,认为程序存在被他人利用的危险。笔者对这方面没有太多经验,希望

2012-12-21 19:25:13 72

原创 ASP.NET调用.sql文件

笔者好久没有写随笔了,这次是遇到提出这样的问题“不用附加数据库,什么修改web.config什么的那么麻烦,而是直接运行一个页面,然后根据向导一步一步引导用户安装生成数据库”那么这样做就需要一个创建数据库的语句和创建这些数据库表的语句,还有这些创建数据库视图以及函数的语句。创建数据库语句好办   Code highlighting produced by Actipro Cod

2012-12-21 19:25:11 67

原创 权限设计

笔者不才看了园子里面很多园友写关于权限设计这块内容,那么笔者也在添一笔。这个是笔者在上完软件工程课程后,上交的一篇笔者论文,这里分享给大家交流,当然笔者经验尚浅,若内容有误,请大家指点出来,若大家有什么更好的想法,请提出来共同学习。一.引言  在软件开发中, 从操作系统到一个仅仅能够发布文章的网站,都要涉及到权限的管理。在Windows 操作系统中,存在用户、组的概念。当一个用户从属于Ad

2012-12-21 19:25:08 54

原创 Asp.net中文件的压缩与解压

这里笔者为大家介绍在asp.net中使用文件的压缩与解压。在asp.net中使用压缩给大家带来的好处是显而易见的,首先是减小了服务器端文件存储的空间,其次下载时候下载的是压缩文件想必也会有效果吧,特别是比较大的文件。有的客户可能会很粗心上传的是文件,那么可以通过判断后缀名来判断文件,不是压缩文件,就可以压缩文件,在存储。  这里笔者引用了一个DLL文件(ICSharpCode.SharpZip

2012-12-21 19:25:06 41

原创 概括ADO.NET数据库连接的所有形式(基础)

可能大家进来会喷笔者,这么基础的知识还放在首页。那么笔者就要问问大家了,你可能熟悉其中部分数据库读取的形式,但是熟悉全部的估计很少,或者你完全忘记了,因为这些形式被封装到你自己框架的底层,自己搞过一两次就在也没有动手写过了。但是笔者觉得这部分知识是应该牢固掌握的,这个是基础。好如果是已经掌握的大侠,看看笔者写的内容,提出点建议或者补充笔者的内容。  好了废话不多说看  第一种  通过直

2012-12-21 19:25:04 52

原创 Meta标签——网站中必不可少的一部分

今天一个偶然的机会让笔者发现HTML语言中的META元素,它位于HTML文档头部的标记和标记之间,它提供用户不可见的信息。meta标签通常用来为搜索引擎robots定义页面主题,或者是定义用户浏览器上的cookie;它可以用于鉴别作者,设定页面格式,标注内容提要和关键字;还可以设置页面使其可以根据你定义的时间间隔刷新自己,以及设置RASC内容等级,等等。  这个标签可能被大多数人给忽略掉了,最

2012-12-21 19:25:01 55

原创 HTTP协议

其实先前对这块知识笔者是不太在意的,因为笔者一直没有在编程中触及到相关的知识,昨天偶然机会看到一个程序中有一段这样的代码   其实记得method有Get和Post这两种传递方式,笔者曾经因为学习理论知识也了解过相关知识,但是一段时间之后差不过忘记这块知识。于是想写一篇关于HTTP协议的文章,供今后查询,也给不了解它的朋友有机会接触下它。  HTTP是超文本协议,它的英文单词Hypertext

2012-12-21 19:24:59 42

空空如也

空空如也

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

TA关注的人

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