自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 问答 (95)
  • 收藏
  • 关注

原创 win7硬盘安装Ubuntu14.04完整版

一 准备 1 需要的工具EasyBCD,和Ubuntu14.04镜像文件。 2 将磁盘分出来一个30-50G的空间,这个空间必须是未分配的。二 配置 配置这一步网上都大致都差不多,配图如下: 然后点击配置,在出现的menu.lst中,把以下内容写进menu.lsttitle Install Ubuntu root (hd0,0) kernel (hd0,0)/vmlinuz.efi

2017-01-19 19:24:28 896

转载 访问者模式

一 使用场景 访问者模式是一种较为复杂的行为型设计模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对它们进行不同的访问操作。二 定义 问者模式Visitor Pattern: 提供一个作用于某对象结构中的各元素的操作表示,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式是一种对象行为型模式。 Vistor抽象

2016-12-05 17:14:02 536

原创 模板方法模式

模板方法模式Template Method Pattern:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。AbstractClass抽象类:在抽象类中定义了一系列基本操作,这些基本操作可以是具体的,也可以是抽象的,每一个基

2016-12-05 16:02:19 618

原创 策略模式

策略模式 Strategy Pattern:定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。策略模式是一种对象行为型模式。 Context 环境类:环境类是使用算法的角色,它在解决某个问题(即实现某个方法)时可以采用多

2016-12-05 15:07:02 448

转载 状态模式

一 应用场景 一个机器有,一个排气状态,一个是压缩状态。在运行时,不同的状态会有不同的行为,当前的状态机在适当的时候会过渡到下一状态。二 定义 状态模式State Pattern:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。 Context 环境类:环境类又称为上下文类,它

2016-12-04 15:37:19 810

转载 观察者模式

一 应用场景 社交网络中,当我们关注的一个人发表状态后粉丝就会有通知。这就用到了观察者模式,即:当一个对象发生改变的时候,其他对象将相应的做出反应。二 定义 观察者模式 Observer Pattern: 定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式的别名包括发布-订阅(Publish/Subscribe)模式、模型-视图(M

2016-12-04 12:46:26 493

转载 备忘录模式

备忘录模式 Memento Pattern:在不破坏封装的前提下,捕获一个对象的内部状体,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。它是一种对象行为型模。Originator 原发器:它是一个普通类,可以创建一个备忘录,并存储它的当前内部状态,也可以使用备忘录来恢复其内部状态

2016-12-03 19:11:00 548

转载 中介者模式

用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模Mediator 抽象中介者:定义一个接口,用于各个对象之间的通信。ConcreteMediator 具体中介者:抽象中介者的子类,通过协调各个同事对象来实现协作行为,维持各个对各个对象的引用。Colleage 抽象同事类:定义各个对象的公有方法。同时维

2016-12-03 16:20:27 388

转载 迭代器模式

一定义 Iterator Pattern 迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 Iterator 抽象迭代器:定义访问和遍历元素的接口。ConcreteIterator 具体迭代器:实现抽象迭代器的接口,完成对聚合对象的遍历,同时在迭代器中通过游标来记录在聚合对象中所出的当前位置。Aggregate 抽象聚合类:用于存储和管理元素对象,声明cr

2016-12-03 08:24:46 533

转载 命令模式

命令模式的本质是对请求进行封装,一个请求对应于一个命令,将发出命令的责任和执行命令的责任分割开。命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求如何被接收、操作是否被执行、何时被执行,以及是怎么被执行的。

2016-12-02 20:38:18 782

转载 职责链模式

职责链模式通过建立一条链来组织请求的处理者,请求将沿着链进行传递,请求发送者无须知道请求在何时、何处以及如何被处理,实现了请求发送者与处理者的解耦。

2016-11-30 23:12:12 379

原创 代理模式

一 应用场景 相亲的时候一般有一个媒人,男方说什么话都通过媒人传递给女方。二 定义 代理模式Proxy Pattern:给某个对象提供一个代理,并由代理对象控制对原对象的引用,代理对象是一种对象结构模式。 Subject 抽象主题角色:声明真实主题和代理主题的共同接口,使得在任何使用真实主题的地方都可以使用代理主题,客户端通常都要针对抽象主题进行编程。Proxy 代理主题角色:代理主题包含了对

2016-11-30 21:30:44 375

转载 享元模式

一 应用场景 一个文本字符串存在很多的重复字符,如果每一个字符的用一个独立的对象来保存的话会浪费大量的资源。 或者围棋游戏中,每个棋子都是白色或者黑色并且大小一样只是位置不同。如果每个棋子都用一个独立的对象存储,那么和上面一样会造成大量的浪费。 享元模式就是为解决这种问题而生。二 定义 享元模式 Flyweight Pattern:运用共享技术有效的支持大量细粒度对象的复用。使系统使用少量的

2016-11-29 22:23:21 482

转载 外观模式

外观模式 facade pattern:外部与一个子系统的通信通过一个统一的外观角色进行。为子系统中的一组接口提供一个一致的入口,外观模式定义了一个高层接口,这个接口使这个子系统更加容易使用。

2016-11-29 16:54:56 391

转载 装饰器模式

一 定义 装饰器模式decorator pattern:动态的给一个对象增加一些额外的职责,在不改变本身功能的基础上增加一些额外的行为。 Component 抽象构件:是具体构件和抽象装饰类的共同父类,声明了在具体构件中的实现的业务方法。ConcreteComponent 具体的组件对象:是抽象构件构件的子类,实现具体的操作,可以增加额外的操作方法。(说的直白一点:装饰器就是给它增加装饰的)

2016-11-25 12:43:16 400

转载 组合模式

一 使用场景 做一个杀毒软件对个人电脑里的文件夹进行扫描,电脑文件夹里面可能包含文件也可能是一个文件夹。类似于这用树形结构。或者比如一个公司,公司下面有部门(叶子)和子公司(节点)。子公司也有部门,可能有子公司也可能没有子公司。二 定义 组合模式是多个对象形成树形结构以表示具有“整体-部分”关系的层次结构。组合模式对单个对象和组合对象的使用具有一致性。 Component抽象构件:这是一个

2016-11-24 21:45:49 362

转载 桥接模式Bridge Pattern

一 使用场景 我有三种型号的铅笔来绘制4种不同的颜色,需要准备3*4总共12只铅笔。如果我用三种型号的毛笔,来绘制4种不同的颜色,只需要3种毛笔外加4种笔墨即可。同理软件系统中存在两个独立变化的维度,通过桥接模式可以将这两种维度区分开来,使两种可以独立的扩展,让系统更加符合单一的原则。二 定义 桥接模式:是一种对象结构模型,将抽象部分(Abstraction)与实现部分(Implementati

2016-11-23 17:43:02 403

转载 适配器模式

一 应用场景 加入一个美国人身在欧洲,假如欧洲的电压标准是230V,而美国的民用电压一般是110V,如果这个美国人想要用欧洲的电,那么需要一个转换器,把230V的电压转换为110V。 上述例子的三个类: 欧洲电压:Adaptee 美国人用电设备:Target 转换器:Adapter二 定义 将一个类的接口转换成客户希望的另外一个接口这样使得原本由于接口不兼容而不能一起工作的那些类可以一起

2016-11-22 16:01:55 318

转载 建造者模式

一 适用场景 游戏角色中每个人物都有不同的外形,脸型、肤色、体型等等。玩家不关心这些具体的细节,只关心最终的造型。二 定义 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。 建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者

2016-11-21 16:38:26 854

转载 原型模式

一 应用场景 填写一个报表,有些重复的内容不必每次都偶重复填写,只需保存一个固定的模板,只需要填写不重复的内容即可。一 定义 使用原型实例指定创建对象的种类,并且通过克隆这些原型创建新的对象,它是一种对象创建型模式。 将一个原型对象传递给要发动创建的对象,这个要发动创建的对象通过请求原对象克隆自己来实现创建过程。本质用原型实例指定创建对象的种类,并且通过拷贝这些原型

2016-11-21 15:29:16 346

转载 抽象工厂模式

一 概念解释定义:抽象工厂模式提供一个创建一系列相关或者相互依赖的对象接口,而无须指明他们的具体类。抽象模式又称为Kit模式。是一种对象创建模式。抽象工厂模式是为创建一组对象提供了一种解决方案。与工厂方法模式相比抽象工厂模式中的具体工厂不只是创建一种产品,而是负责创建族产品。引入相关概念:1 产品等级结构:即产品的继承结构,比如抽象类是一个矩形,其子类有红色矩形,蓝色矩形,灰色矩形等。2

2016-11-20 18:49:35 695

转载 工厂方法模式

工厂方法模式 该模式又简称为工厂模式,定义一个用于创建对象的接口,让子类决定让哪一个类实例化,这样可以让产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该确定实例化哪一个具体产品类。 Product 抽象产品,是工厂方法模式所创建对象的超类型,也就是产品对象的公共父类。 ConcreteProduct 具体产品,实现了抽象产品的接口,某种类型的具体产品有专门的具体工

2016-11-20 13:13:32 483

转载 简单工厂模式

简单工厂模式 定义一个工厂类,它可以根据不同的参数返回不同的实例,被创建的实例通常都有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态方法,所以简单工厂模式又被称为静态工厂模式。 上图解释如下: Factory 工厂类,是简单工厂模式的核心,负责所有产品实例的逻辑,工厂类可以被外界外界直接调用,创建所需的产品对象,工厂类提供静态工厂方法,返回的类型为抽象产品类型Product。

2016-11-20 13:09:23 454

转载 面向对象设计的几个基本原则和单例模式

本文是根据刘伟老师《设计模式的艺术》一书和网上资料整理而成,仅供学习交流之用。一 设计原则 1 单一职责原则:一个类只负责一个功能领域中的相应职责,或者说一个类只有一个引起它变化的原因,简单来说就是一个类不能承担太多的职责。2 开闭原则:一个软件实体应当对扩展开放,对修改关闭,即软件实体尽量在不修改原有代码的情况下进行扩展。3 里氏代换:所有引用基类的地方必须能透明的使用其子类的对象。在软件中将一

2016-11-17 21:28:30 1301

转载 C++中重载、重写(覆盖)和隐藏的区别实例分析

1 重载 重载从overload翻译过来,是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型。2.隐藏:隐藏是指派生类的函数屏蔽了与其同名的基类函数。注意只要同名函数,不管参数列表是否相同,基类函数都会被隐藏。3.重写:重写翻译自override,也翻译成覆盖(更好一点),是指派生类中存在重新定义的函数。其函数

2016-10-18 08:31:05 345

转载 C++面试题执行Test()会出现什么情况

第一:请问运行Test 函数会有什么样的结果?void GetMemory(char *p){p = (char *)malloc(100);}void Test(void){char *str = NULL;GetMemory(str);strcpy(str, "hello world");printf(str);}分析:程序崩溃。因为GetMemory 并不能传递动态内存,T

2016-10-09 08:39:12 5543

转载 中缀表达式转为后缀表达式

中缀表达式与后缀表达式求值

2016-09-05 15:00:25 775

原创 C++随机整数

一 不限制数值的范围 rand()返回一个0到RAND_MAX 间。RAND_MAX定义在stdlib.h, 其值为2147483647。二 限制范围 可以使用宏定义或者inline函数,多限制值取模。#define random(x) (rand()%x)三 上面的值可能会有重复,避免重复的话可以使用srand来先产生种子。 这里要用到time.h头文件,获取当前的时间来作为种子。因为如果

2016-09-03 09:26:45 1112

原创 一些软件公司在线笔试题

软件公司笔试题

2016-09-02 23:37:29 858

转载 c++ extern的用法,extern全局变量和static、const的的区别

作用一:当它与"C"一起连用时,如extern "C" void fun(int a, int b);,则编译器在编译fun这个函数名时按C的规则去翻译相应的函数名而不是C++的。作用二:当它不与"C"在一起修饰变量或函数时,如在头文件中,extern int g_nNum;,它的作用就是声明函数或变量的作用范围的关键字,其声明的函数和变量可以在本编译单元或其他编译单元中使用。

2016-08-24 08:55:43 12973

转载 孤儿进程和僵尸进程的区别

我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。 当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得

2016-08-23 23:17:20 1878 1

转载 C++读取配置文件

外国人写的读取config文件

2016-08-22 14:33:17 1424

原创 C++中子类继承和调用父类的构造函数方法

构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法)。因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。如果没有显式的构造函数,编译器会给一个默认的构造函数,并且该默认的构造函数仅仅在没有显式地声明构造函数情况下创建。构造原则如下:1. 如果子类没有定义构造方法,则调用父类的无参

2016-08-21 09:54:14 609

转载 C++底层数据结构的实现原理

转载自:http://www.cnblogs.com/hustlijian/p/3611424.html C++ STL 的实现:1.vector 底层数据结构为数组 ,支持快速随机访问2.list 底层数据结构为双向链表,支持快速增删3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也

2016-08-21 09:23:54 5236

原创 new与malloc

new与malloc的区别。

2016-08-13 11:44:09 487

转载 原来数组作为参数时候是可以退化成为指针的,我OUT了

指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:”数组名就是指针”。很幸运,我的大学老师就是其中之一。时至今日,我日复

2016-08-07 11:33:46 693 1

转载 深拷贝与浅拷贝

对深拷贝与浅拷贝的再次理解记得11年底找工作的时候,面试时曾经遇到有面试官问的对深拷贝与浅拷贝的理解,那时候自己回来查了资料,写了篇博客,感觉自己理解了,其实理解的不深刻,最近在调试bug的时候,再次遇到深拷贝与浅拷贝,认真分析了,写写自己的心得吧。先说下自己的理解吧,浅拷贝,即在定义一个类A,

2016-08-03 23:09:02 336

转载 C++多态:虚函数、指针、虚函数表

C++多态:虚函数、指针、虚函数表

2016-07-24 11:32:38 867

转载 堆,栈,内存泄露,内存溢出介绍

堆,栈,内存泄露,内存溢出介绍

2016-07-20 16:36:07 1619

原创 ubuntu用C++获取ip地址和mac地址

ubuntu获取ip地址mac地址

2016-07-20 08:50:50 5853

空空如也

请问mysql-connector-python和的问题

2015-09-16

win8如何将磁盘管理器的黑色分区变为绿色的

2015-09-16

安装了mysqlconector 后然无法引入

2015-09-15

python和mysql连接数据库的问题

2015-09-15

在Python虚拟环境中使用环境外的mysql

2015-09-01

win8系统使用mysql出现Access denied

2015-09-01

win8安装mysql该选择哪个版本

2015-08-30

安装win8和Ubuntu双系统提示分区不可用

2015-08-28

virtualbox + vagrant如何配置ssh

2015-08-28

win8安装virtualbox后无法上网了

2015-08-27

Python出现了一个异常卡在那里不动了

2015-08-25

用npm安装package.json时出现错误

2015-08-24

npm安装package.json时repository为空

2015-08-23

安装npm install时出现错误

2015-08-23

用offsetLeft为什么输出的是0

2015-08-22

JavaScript如何设置画一个圆的背景色

2015-08-21

JavaScript做了个弹出层的form ,请问如何关闭form

2015-08-21

div中如何设置table表格图片不超过边框

2015-08-20

两个一体机如何用HDMI高清传输线连在一起呢

2015-08-19

github提交的问题,无法更新到远端的master

2015-08-18

Linux下进程是如何实现的?

2016-09-25

c++指针做参数,如何修改参数指向的内容

2016-08-16

请问vector不能这样写吗?

2016-08-14

new与delete的应用场景是什么?

2016-08-06

如何写linux分布式程序

2016-07-23

linux如何向红外串口写命令?

2016-07-09

请问C++在ubuntu下的socket编程有没有常连接的问题?

2016-06-27

为什么这个char*可以修改?

2016-06-24

ubuntu系统中路径的变量名有个符号‘$’表示什么意思?

2016-06-13

ubuntu系统键盘输入出现异常

2016-06-03

c++语法 ss << "hello world " << count 如何理解

2016-06-02

请问C++这样写是什么意思?

2016-04-25

ubuntu14.04安装mongodb出现问题

2016-03-19

python 压缩文件的几个问题

2015-12-12

请问如何用python urllib2下载doc文件

2015-12-06

请问写python爬虫如何用urllib或者requests模拟用户登录

2015-11-30

请问如何将主机的文件与VMware里的虚拟机共享

2015-09-20

请问centos中是如何配置网关的

2015-09-19

WinXP attackor虚拟机开机需要密码

2015-09-18

是不是所有的系统整型字节数都是4

2015-09-17

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

TA关注的人

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