自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lubaixs

菜鸟也要先飞...

  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 单例模式

保证一个类只有一个实例,并提供一个访问它的全局访问点。首先,需要保证一个类只有一个实例;在类中,要构造一个实例,就必须调用类的构造函数,如此,为了防止在外部调用类的构造函数而构造实例,需要将构造函数的访问权限标记为protected或private;最后,需要提供要给全局访问点,就需要在类中定义一个static函数,返回在类内部唯一构造的实例。 意思很明白,使用UML类图表示如下:

2015-08-06 20:47:24 327

原创 模板方法模式

定义一个操作中算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 UML图: 优点:实现了代码复用; 缺点:算法骨架不易升级,模板与子类间耦合性高,修改模板,子类也会受到影响。 C++代码实现: //模板方法模式 #include #include using nam

2015-08-06 19:45:57 316

原创 命令模式

命令模式就是把一个请求或者操作封装到一个对象中,可提供撤销、重做等操作。在OOP中,一切都是对象,将请求封装成对象,符合OOP的设计思想,当将客户的单个请求封装成对象以后,我们就可以对这个请求存储更多的信息,使请求拥有更多的能力;命令模式同样能够把请求发送者和接收者解耦,使得命令发送者不用去关心请求将以何种方式被处理。 UML图: 优点:     1.命令模式

2015-08-04 21:24:30 309

原创 策略模式

策略模式为了适应不同的需求,只把变化点封装了,这个变化点就是实现不同需求的算法,但是,用户需要知道各种算法的具体情况。就像上面的加班工资,不同的加班情况,有不同的算法。我们不能在程序中将计算工资的算法进行硬编码,而是能自由的变化的。这就是策略模式。 UML图: 使用场景: 1、许多相关的类仅仅是行为有异,“策略”提供了一种用多个行为中的一种来配置一个类的方法。

2015-07-30 21:29:24 371

原创 建造者模式

一个复杂对象的创建,其通常是由很多的子对象构成;如果一个对象能够直接就创建好了,那么也不会称之为复杂对象。由于项目中需求的变化,这个复杂对象的各个部分经常会发生剧烈的变化,但是,不管怎么变化,将它们组合在一起,组成一个复杂的对象的事实是不会变的。建造者模式就提供了一种“封装机制”来将各个对象的变化隔离开,最终,组合成复杂对象的过程是不会变的。 UML图: 优点:

2015-07-29 21:22:04 430

原创 Heap

heap,堆是一种完全二叉树,所以可以选择array来存储所有节点。实现heap仅需要一个array和一组heap算法(用来插入、删除元素,取极值,将某一整组数据排列成一个heap),根据元素排列方式,分为大根堆和小根堆。 heap中所有元素都遵循特别的排列规则,所以heap不提供遍历功能,也不提供迭代器。 heap算法:C++代码实现,非STL源码。 //heap算法,底层用v

2015-07-29 16:38:23 386

原创 常用SQL

查询: select ... from ... where ... group by ... having ...; 左连接右连接全连接 left join、  right join、 full join、 inner join 内连接、等值连接 若A有10条数据,B中有15条数据,AB中公共数据有5条 select * from A left join

2015-07-28 22:25:00 242

原创 简单工厂模式、工厂方法模式、抽象工厂模式

简单工厂模式并不是23中设计模式中的,但是在实际的应用中却经常使用。 UML图:         简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。    在这个模式中,工厂类是整个模式的关键所在。它包含必要的判断逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。用户在使用时可以直接根据工厂类去创建所需的实例,而无需了解这

2015-07-28 22:13:47 322

原创 Deuqe

deque是一种双向开口的连续线性空间,vector是单向开口的连续线性空间。 deque与vector区别:1、deque是双向开口的连续节点,2、deque没有所谓容量概念。 deque是分段连续的空间,由一段一段的定量连续空间构成, deque类源码: template class deque{ public:     typedef T valu

2015-07-28 19:46:34 522

原创 List

List概述 对于任何位置的插入删除,时间复杂度为O(1)。 list类似于链表,双向链表,环状双向链表 template struct _list_node{     typedef void* pointer;     pointer prev;       pointer next; }; list的迭代器 重要性质:插入inse

2015-07-27 20:53:39 296

原创 Vector

vector定义与使用 使用前引用头文件 #include 类的源码: class vector { protected:     iterator start;    //目前使用空间的头     iterator finish;    //目前使用空间的尾     iterator end_of_storage;    //目前可用空间的尾

2015-07-27 20:52:56 319

转载 ASP.NET 3.5 MVC框架深度解析

一、    简介 MVC(模型—视图—控制器)结构模式把一个应用程序拆分成三个主要组件:模型、视图和控制器。在创建基于MVC框架的Web应用程序时,你可以把ASP.NET MVC框架作为ASP.NET Web表单模式方案的一种重要候选。较之于基于Web表单的应用程序,ASP.NET MVC框架是一个轻量级的、测试性强的描述框架,它能够与现有ASP.NET特征(例如母版页面和基于成员身份的认证)紧

2015-07-17 21:08:04 619

原创 动态运行时类型的显式转换

《effective C++》中第九章的内容,稍稍加上自己的理解。 C++中,显式转换也称为强制类型转换(cast),包括以下列名字命名的强制类型转换操作符:static_cast、dynamic_cast、const_cast、reinterpret_cast。 一般形式: cast-name(expression) dynamic_cast: 该运算符把变量转换成type类型的对象,但

2015-06-08 16:56:18 476

转载 C++操作符的优先级

C++操作符的优先级 C++操作符的优先级 操作符及其结合性 功能 用法 L L L :: :: :: 全局作用域 类作用域  名字空间作用域 ::name class::name namespace::name L L L L L . -> [] () ()

2015-05-21 11:28:36 315

转载 MySQL百万级数据库查询优化技巧

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: sel

2015-05-06 15:56:24 302

转载 c/c++里的 堆区 栈区 静态区 文字常量区 程序代码区

一个由C/C++编译的程序占用的内存分为以下几个部分   1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。         堆(heap):由malloc,new等分配的空间的地址,地址由低向高增长(程序员释放)。   2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。

2015-05-05 20:10:46 387

原创 C++容器学习总结

C++中,容器主要分为两类:顺序容器(vector、list、deque)、关联容器(map、set、multimap、multiset) 顺序容器 顺序容器的定义: #include #include #include vector svec; list ilist; deque item; 初始化:list slist(svec.begin(),svec.end()); 顺

2015-05-05 15:12:36 445

原创 加快SQLServer操作的技术

GFT项目主要是对SQLServer的插入和查询操作,由于数据量大,加速是一重要任务,主要从插入和查询两方面进行了优化: 1、查询 聚类索引 索引按照存储结构分为聚类索引和非聚类索引(采用聚类索引,因为order by, group by 等较为频繁) 索引:数据库中的索引类似于一本书的目录,在一本书中使用目录可以快速找到你想要的信息,而不需要读完全书。在数据库中,数据库程序使用索引可以映

2015-04-28 21:53:14 588

转载 什么是面向对象编程?

面相对象不是某一种语言的特性,而是一种编程思想。 C也是可以编写出很好的OO代码的,Gtk+就是典型的例子。      我们很多初学者往往一提到面相对象就一头雾水,我觉得很大程度上都是因为我们学习的第一们语言是C,而struct总是在后面才讲到,用C实现继承技术需要一定技巧,一般的教材上都不讲,加之我们刚开始遇到的学习程序有很小,很容易一个简单的流程就处理完了……这所有因素结合在一起,就导致我们

2015-04-28 21:14:34 521

服务器的通信

模拟PC与服务器间的通信,以本地PC作为服务器,进行通信功能,模拟QQ通信

2014-03-06

空空如也

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

TA关注的人

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