自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小白杨的博客

这是一个记录学习的博客

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

原创 设计模式(10)---结构型之组合模式

1 概念Composite模式也叫组合模式,是构造型的设计模式之一。通过递归手段来构造树形的对象结构,并可以通过一个对象来访问整个对象树。#include <iostream>using namespace std;#include "string"#include "list"class IFile{public:virtual void display() ...

2018-12-16 21:43:45 156

原创 设计模式(9)--结构型之桥接模式

1 概念Bridge 模式又叫做桥接模式,是构造型的设计模式之一。Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。**2 适用于:**桥接模式(Bridge Pattern)是将抽象部分与实现部分...

2018-12-13 22:55:48 171

原创 设计模式(8)---结构型之适配器模式

1 概念Adapter模式也叫适配器模式,是构造型模式之一,通过Adapter模式可以改变已有类(或外部类)的接口形式。2 适用于:将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。3 案例:用适配器完成220V电压转换成18V电压#include <iostream>using namespace std;// Cur...

2018-12-13 22:33:08 152

原创 设计模式(7)---结构型之装饰模式

1 概念装饰(Decorator )模式又叫做包装模式。通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案。装饰模式就是把要添加的附加功能分别放在单独的类中,并让这个类包含它要装饰的对象,当需要执行时,客户端就可以有选择地、按顺序地使用装饰功能包装对象。2适用于:装饰者模式(Decorator Pattern)动态的给一个对象添加一些额外的职责。就增加功能来说,此模式比生...

2018-12-12 22:40:47 148

原创 设计模式(6)---结构型之代理模式

1 概念Proxy模式又叫做代理模式,是构造型的设计模式之一,它可以为其他对象提供一种代理(Proxy)以控制对这个对象的访问。所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理。#include <iostream>using namespace std;class...

2018-12-12 21:57:31 103

原创 设计模式(5)---创建型之原型模式

1 概念Prototype模式是一种对象创建型模式,它采取复制原型对象的方法来创建对象的实例。使用Prototype模式创建的实例,具有与原型一样的数据。1)由原型对象自身创建目标对象。也就是说,对象创建这一动作发自原型对象本身。2)目标对象是原型对象的一个克隆。也就是说,通过Prototype模式创建的对象,不仅仅与原型对象具有相同的结构,还与原型对象具有相同的值。3)根据对象克隆深度层...

2018-12-12 21:52:40 153 1

原创 设计模式(4)--创建型之建造模式

1 概念Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。Builder模式是为对象的创建而设计的模式创建的是一个复合对象:被创建的对象为一个具有复合属性的复合对象关注对象创建的各部分的创建...

2018-12-12 21:43:12 128

原创 设计模式(3)---创建型之单例模式

1 单例模式有两种: 饿汉式及懒汉式。2 懒汉式存在多线程问题需要加锁。class singleton{private:singleton(){}public:static singleton* getInstance();private:static singleton* m_psl;};singleton* singleton::getInstance(){if ...

2018-12-09 22:41:30 159

原创 设计模式(2)---创建型模式之抽象工厂模式

1简介抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。2 举例工厂即生产CPU又生产内存。class CPU{public:virtual void getCPU() = 0;};class Memory{public:virtual void getM...

2018-12-09 22:28:33 119

原创 设计模式(1)---创建型模式之工厂模式

1简介工厂方法模式同样属于类的创建型模式又被称为多态工厂模式。工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。2 举例:工厂生产CPUclass CPU{publ...

2018-12-09 22:19:50 132

原创 设计模式介绍

1 简介设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;2 分类(1)创建型模式: 通常和对象的创建有关,涉及到对象实例化的方式。(共5种模式)(2)结构型模式: 描述的是如何组合类和对象以获得更大的结构。(共7种模式)...

2018-12-09 20:41:18 98

原创 C++STL 综合案例

1)某市举行一场演讲比赛,共有24个人参加,按参加顺序设置参赛号。比赛共三轮,前两轮为淘汰赛,第三轮为决赛。2)比赛方式:分组比赛第一轮分为4个小组,根据参赛号顺序依次划分,比如100-105为一组,106-111为第二组,依次类推,每组6个人,每人分别按参赛号顺序演讲。当小组演讲完后,淘汰组内排名最后的三个选手,然后继续下一个小组的比赛。第二轮分为2个小组,每组6人,每个人分别按参赛号顺序...

2018-12-09 16:50:01 620

原创 C++ STL 容器(3)

一 Queue容器1 简介#include <queue>queue是队列容器,是一种“先进先出”的容器。queue是简单地装饰deque容器而成为另外的一种容器。2 queue的push()与pop()方法queue.push(elem); //往队尾添加元素queue.pop(); //从队头移除第一个元素3 queue的数据存取queue.back()...

2018-12-09 16:41:24 223

原创 C++ STL 容器(2)

一 STL的string1 概念:(1)string是STL的字符串类型,通常用来表示字符串.(2)string和char*的比较:(a)string是一个类, char*是一个指向字符的指针。(b)string不用考虑内存释放和越界。(c)string提供了一系列的字符串操作函数(这个等下会详讲)查找find,拷贝copy,删除erase,替换replace,插入insert2 str...

2018-12-09 15:48:26 120

原创 C++ STL 容器(1)

1 基本概念STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。2分类1.STL的从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接。2.STL详细的说六大组件-–...

2018-12-09 15:13:14 131

原创 C++输入和输出流

一 I/O流的概念和流类库的结构 1 I/O流的概念和流类库的结构 1)标准设备的输入和输出。即从键盘输入数据,输出到显示器屏幕。标准输入输出 2)标准设备的输入和输出。即从键盘输入数据,输出到显示器屏幕。标准输入输出 3)内存中指定的空间进行输入和输出,称为字符串输入输出,简称串I/O2 标准输入#include <iostream>using namespace ...

2018-08-07 21:16:51 226

原创 C++的类型转换与异常处理

一 名称和语法 1 C语言风格:不管什么类型的转换统统是: TYPE b = (TYPE)a; 2 C++风格: 1)static_cast,静态类型转换。如int转换成char 2)reinterpreter_cast,重新解释类型 3) dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换,运行时进行类型识别,把父类转换成子类。 4)const_ca...

2018-08-06 22:53:49 625

原创 C++ 函数模板和类模板--泛型编程

所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。 凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。一 函数模板初识 1) 为什么要有函数模板? 函数业务逻辑一样,但是函数参数类型不一样,引入泛型编程,方便程序员编程。 2) 语法: template <typena...

2018-08-06 22:06:11 10149

原创 c++ 纯虚函数和抽象类

一 基本概念 1 纯虚函数是一个在类中声明的虚函数,在类中没有定义实体,要求各派生类定义自己的版本。 2 纯虚函数为各派生类提供一个公共界面(接口的封装设计、软件的模块功能划分); 3 语法:virtual 类型 函数名(参数)=0; 4 一个具有纯虚函数的类成为抽象类。#include <iostream>using namespace std;class Fi...

2018-08-02 22:59:19 180

原创 c++ 多态

一 面向对象新需求 1 如果父类指针指向的是父类对象则调用父类中定义的函数,如果父类指针指向的是子类对象则调用子类中定义的重写函数 2 解决方案: 1)C++中通过virtual关键字对多态进行支持 2)使用virtual声明的函数被重写后即可展现多态特性, 3) 当在父类的函数声明中写了virtual关键字,子类中可写可不写。二 实现多态的三个条件 1 要有继承 2 要有虚函...

2018-08-01 23:37:01 95

原创 C++ 继承和派生

1 继承概念 1)继承是类之间定义的一种重要关系; 2)基本语法:class Child : public Parent1,public Parent2; 3)Parent称基类(父类),child称派生类(子类) 4) 继承方式:public,private,protected. 5)重要说明: a)子类拥有父类的所有成员变量和成员函数; b)子类可以拥有父类没有的方法和属性; ...

2018-08-01 22:53:11 129

原创 C++类的其他成员变量及属性

一 静态成员变量 1 把一个类的成员说明为 static 时,这个类无论有多少个对象被创建, 这些对象共享这个 static 成员. 2 静态成员局部于类,它不是对象成员#include<iostream> using namespace std; class counter { static int num ; //声明与定义静态数据成员 p...

2018-07-31 22:33:06 3986

原创 C++ 类和对象

一 基本概念 类、对象、成员变量、成员函数。 面向对象三大概念:封装、继承、多态。二 类的封装 1 封装,是面向对象程序设计最基本的特性。把数据(属性)和函数(操作)合成一个整体, 2 类成员的访问控制 1)public修饰的成员变量 方法 在类的内部 类的外部都能使用 2)protected:修饰的成员变量方法,在类的内部使用 ,在继承的子类中可用 ;其他类的外部不能被使用 ...

2018-07-29 22:42:03 174

原创 C语言提高(三)

九 文件操作 1文件分类 1)按逻辑结构 a) 记录文件:由具有一定结构的记录组成(定长和不定长) b) 流式文件:由一个个字符(字节)数据顺序组成 2) 按存储介质 a)普通文件:存储介质文件(磁盘、磁带等) b)设备文件:非存储介质(键盘、显示器、打印机等) 3)按组织形式 a)文本文件:ASCII文件,每个字节存放一个字符的A...

2018-07-29 15:34:18 193

原创 C语言提高(二)

六 二级指针三种内存模型 1第一种:指针数组:char *myArray[]={“aaaaaa”, “ccccc”, “bbbbbb”, “111111”};#include <stdlib.h>#include <string.h>#include <stdio.h>void printMyArray11(char **myArray, int...

2018-07-29 14:25:59 269

原创 C语言提高 (一)

一 数据类型 &emsp 1 “类型”是对数据的抽象; 2 类型相同的数据有相同的表示形式、存储格式以及相关的操作 3 程序中使用的所有数据都必定属于某一种数据类型 4 数据类型分类 1)简单类型 a)基本型:整型、浮点型、字符型、空类型 b)用户自定义类型:枚举(enum) 2) 结...

2018-07-29 12:15:18 406

原创 C++ ---引用(一)

1 引用概念a) 在C++中新增加了引用的概念 b) 引用可以看作一个已定义变量的别名 c) 引用的语法:Type& name = var; d) 引用做函数参数那?(引用作为函数参数声明时不进行初始化)void main01(){int a = 10; //c编译器分配4个字节内存。。。a内存空间的别名int &b = a; //b就是a的别名。。。...

2018-05-16 22:24:17 191

原创 C/C++中的const

1 const基础知识(用法、含义、好处)含义:int main(){const int a;int const b;//第一个第二个意思一样 代表一个常整形数const int *c;//c是一个指向常整形数的指针(所指向的内存数据不能被修改,但是本身可以修改int * const d;//d 常指针(指针变量不能被修改,但是它所指向内存空间可以被修改)const int ...

2018-05-09 23:15:28 103

原创 C++对C的扩展

C语言和C++语言关系 C语言是在实践的过程中逐步完善起来的 没有深思熟虑的设计过程 使用时存在很多“灰色地带” 残留量过多低级语言的特征 直接利用指针进行内存操作 当面向过程方法论暴露越来越多的缺陷的时候,业界开始考虑在工程项目中引入面向对象的设计方法,而第一个需要解决的问题就是:高效的面向对象语言,并且能够兼容已经存在的代码。 C语言 + 面向对象方法论===》Objectiv...

2018-05-09 22:53:15 405

原创 链表的概念及常用操作

链表是一种物理存储单元上非连续的存储结构,由一系列节点(链表中的每一个元素成为节点)组成,节点可以在运行时动态生成,节点和节点之间通过指针链接。每个节点包括两个部分,一部分存储数据元素的数据域,另一部分时存储下一节点地址的指针域。链表分类 带头节点 不带头节点单向链表 双向链表 循环链表静态链表 动态链表案例1 单向链表的建立、遍历、插入、删除操纵#incl...

2018-04-30 11:58:45 192

原创 文件操作案例-配置文件读写

配置文件读写案例实现分析 1、 功能划分 a) 界面测试(功能集成) 自己动手规划接口模型。 b) 配置文件读写 i. 配置文件读(根据key,读取valude) ii. 配置文件写(输入key、valude) iii. 配置文件修改(输入key、valude) iv. 优化 ===》接口要求紧 模块要求松 2、 实现及代码讲解 3、 测试。#includ...

2018-04-29 16:31:48 223

原创 C语言文件操作专题

c语言文件读写概念文件分类  1 按文件的逻辑结构:  记录文件:由具有一定结构的记录组成(定长和不定长)  流式文件:由一个个字符(字节)数据顺序组成  2 按存储介质:  普通文件:存储介质文件(磁盘、磁带等)  设备文件:非存储介质(键盘、显示器、打印机等)  3 按数据的组织形式:  文本文件: ASCII文件,每个字节存...

2018-04-29 16:26:43 234

原创 数组类型和多维数组本质

数组概念1 概念  1)元素类型角度:数组是相同类型的变量的有序集合 测试指针变量占有内存空间大小  2)内存角度:联系的一大片内存空间 2 数组初始化  //数组元素的个数可以显示或隐式指定  //分析数组初始化{0}与memset比较void main11(){int a[] = {1, 2};int b[100] = {1, 3};int...

2018-04-29 15:40:45 113

原创 二级指针练习--辅助指针挖字符串练习

#include<stdio.h>#include<stdlib.h>#include<string.h>int SplitStr(const char *str, char split, char output[10][30], int *len){int ret = 0;int itmp = 0;const char *p = str;co...

2018-04-29 15:00:42 240

原创 字符串和一级指针内存模型

1字符串基本操作//1 C语言的字符串 以零结尾的字符串 //2 在C语言中没有字符串类型 通过字符数组 来模拟字符串 //3 字符串的内存分配 堆上 栈上 全局区 (很重要)字符数组初始化方法 数组初始化有2种方法 :默认元素个数、指定元素个数.char buf1[] = {'a', 'b', 'c', 'd', 'e'}; //若没有指定长度,默认不分配零//若...

2018-04-29 14:19:58 91

原创 指针铁律

铁律1:指针是一种数据类型 指针也是一种变量,占有内存空间,用来保存内存地址 测试指针变量占有内存空间大小 2)*p操作内存 在指针声明时,*号表示所声明的变量为指针 在指针使用时,*号表示 操作 指针所指向的内存空间中的值 *p相当于通过地址(p变量的值)找到一块内存;然后操作内存 *p放在等号的左边赋值(给内存赋值) ...

2018-04-29 12:33:34 149

原创 程序的内存四区模型

内存四区的建立流程 流程说明 1、操作系统把物理硬盘代码load到内存 2、操作系统把c代码分成四个区 3、操作系统找到main函数入口执行各区元素分析理解的指针的关键是内存。//堆char * getmem(int num){char *p = NULL;p = (char*)malloc(sizeof(char) * num);if (p == NU...

2018-04-29 11:56:51 142

原创 变量本质分析

概念:既能读又能写的内存对象,称为变量;若一旦初始化后不能修改的对象则称为常量。 变量定义形式: 类型 标识符, 标识符, … , 标识符 ; 例如: int x ; int wordCut , Radius , Height ; double FlightTime , Mileage , Speed ; 变量本质1、程序通过变量来申请和命...

2018-04-29 11:50:08 168

原创 数据类型本质分析

1 “类型”是对数据的抽象 2 类型相同的数据有相同的表现形式、存储结构及相关的操作 3 程序中所有的数据必定属于某种类型数据类型的本质 1 数据类型是固定内存大小的别名 2 数据类型的作用:编译器预算对象(变量)分配的内存空间大小 3 如何求数据类型的大小sizeof(int *) sizeof是操作符,不是函数;sizeof测量的实体大小为编译期间就已确定数据类型的封装...

2018-04-29 11:36:59 1224

原创 linux操作系统之进程间通讯 共享内存

共享存储映射文件进程间通信 使用文件也可以完成IPC,理论依据是,fork后,父子进程共享文件描述符。也就共享打开的文件。 练习:编程测试,父子进程共享打开的文件。借助文件进行进程间通信。 思考,无血缘关系的进程可以打开同一个文件进行通信吗?为什么?/*使用文件完成进程间通信*/#include<stdio.h>#include<string.h...

2018-04-26 20:28:16 270

空空如也

空空如也

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

TA关注的人

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