摘要:
宏定义中使用do{}while(0)的好处#define MACRO_NAME(para) do{macro content}while(0)的格式,总结了以下几个原因:1,空的宏定义避免warning:#define foo() do{}while(0)2,存在一个独立的block,可以用来进行变量定义,进行比较复杂的实现。3,如果出现在判断语句过后的宏,这样可以保证作为一个整体来是实现:#define foo(x) /action1(); /action2();在以下情况下:if(NULL == pPointer) foo();就会出现action1和action2... 阅读全文
摘要:
Buileder(生成器)—对象创建型模式一 意图将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。二 适用性在以下情况使用Build模式:1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。2 当构造过程必须允许被构造的对象有不同的表示时。3 Builder模式要解决的也正是这样的问题: 当我们要创建的对象很复杂的时候(通常是由很多其他的对象组合而成), 我们要复杂对象的创建过程和这个对象的表示(展示)分离开来, 这样做的好处就是通过一步步的进行复杂对象的构建, 由于在每一步的构造过程中可以引入参数,使得经过相同的步骤创建最后得到的对象的展... 阅读全文
摘要:
Abstract Factory 模式一 意图 提供一个创建一系列相关或相互依赖对象的接口,而无需制定他们具体的类。二 逻辑 抽象工厂模式中的4中不同角色:1 抽象工厂(Abstract Factory): 它与应用系统商业逻辑无关。2 具体工厂(Concrete Factory): 这个角色直接在客户端的调用下创建产品的实例。 这个角色含有选择合适的产品对象的逻辑,而这个逻辑是与应用系统的商业逻辑紧密相关的。3 抽象产品(Abstract Product): 担任这个角色的类是工厂方法模式所创建的对象的父类,或它们共同拥有的接口。4 具体产品(Concrete Product... 阅读全文
摘要:
插入排序直接插入排序的算法思想是:以数组的第一个元素作为基础,从第二个元素开始下标index = 1,依次到N。然后顺序的从下标0到下标index-1,与当前待插入的元素下标index进行比较,查找到合适的插入位置,然后将当前元素放到此位置上。两个循环:一是 从第二个元素开始,依次到N 二是 比较寻找合适位置,移动数组,插入元素两个过程:一是查找插入位置 二是将相应元素放到插入的位置上时间复杂度为:O(n^2)其实现算法如下:一 按照过程进行:bool sort_by_insert(int *src,int len){ int index = 1; int i,j... 阅读全文
摘要:
工作也从开始C语言,转向现在的C++,表面上看得出,但实际中却没有把这种转变深入到思想中,究其原因还是对面向对象的软件设计不了解,有必要好好学习一下设计模式这个东东。本文就是设计模式学习第一篇…… 1 面向对象软件设计中的问题2 设计模式设计模式:某种问题通用性的解决方案,可重复的模式。就像是一种模具,使用这种模具可以批量性的生产某种东西一般。这里的设计模式是一个非常抽象性的概念,他是在某种场景中,针对某类问题,提出解决方案,以达到某种效果。“每一个模式描述了一个不断重复发生的问题以及该问题的解决方案的核心。3 MVC模式MVC(模型/视图/控制器)用来构建完整的用户界面(显示和响应)。基.. 阅读全文
摘要:
内心能不能宁静一点,做事能不能坚持一下 每次朋友问我怎么样,我总感觉不好回答,如果说实话我想他们或许是不能理解我的处境的,只能报以“还好”之类的语言,糊弄一下。唯一一次说了实话是:我坠落了,颓废,消极和迷茫。这就是我毕业到现在一直所处的状态,心中的一切都受到了颠覆,我无法适从,工作生活没激情也没热情,我不知道自己到底想要什么,时常感到莫名的沮丧,感觉自己只是行尸走肉般。 最近我又开始矛盾,我开始为自己寻找一种定位。我不是一个开朗的人,但我向往一种和大家伙一起谈天说地,轻松愉快的工作状态和环境。但是这里没有,我不想处在这种矛盾之中。我很浮躁,我向往宁静,我... 阅读全文