自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 适配器模式

一,什么是适配器模式适配器模式(adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本接口用不兼容而不能一起工作的那些类可以一起工作。二,何时使用适配器模式两个类所做的事情相同或相似,但是具有不同的接口时要使用它。使得客户端可以统一调用同一接口。接口不同时,首先不应该考虑适配器,而是应该考虑通过重构统一接口。除非是双方都不太容易修改的时候在使用适配器模...

2019-08-08 11:44:46 108

原创 01背包问题

1、动态规划(DP)  动态规划(Dynamic Programming,DP)与分治区别在于划分的子问题是有重叠的,解过程中对于重叠的部分只要求解一次,记录下结果,其他子问题直接使用即可,减少了重复计算过程。  另外,DP在求解一个问题最优解的时候,不是固定的计算合并某些子问题的解,而是根据各子问题的解的情况选择其中最优的。  动态规划求解具有以下的性质:  最优子结构性质、子问...

2019-08-05 17:00:05 162

原创 N皇后问题

#include <stdio.h>#include <iostream>#include <math.h>using namespace std;bool Plare(int *ar, int i, int n) //判断是否可以在这一位置插入皇后 ar[i]行 i列{ for(int j =1; j <i; j++) { if(ar...

2019-08-05 11:25:45 169

原创 观察者模式

观察者模式又叫做发布-订阅(Publish/Subscribe)模式。 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。#include <iostream>#include <string>#include <map>#i...

2019-08-05 11:18:52 145

转载 http协议

关于HTTP协议,一篇就够了HTTP简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速...

2019-07-27 15:30:48 98

原创 http协议的版本演变

http 0.9:过时。http 1.0:非持续链接。存在的问题,对于同一个tcp连接,所有的http1.0请求放入队列中,只有前一个请求的响应收到了,然后才能发送下一个请求。可见,http1.0的队首组塞发生在客户端。http 1.1:默认使用持续连接,不必为每一个web对象建立一个新的连接,一个连接可以传送多个对象。允许一次发送多个http请求,也就是说,不必等前一个响应收到,...

2019-07-27 15:29:47 383

原创 快速排序

1、快速排序的基本思想:快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。2、快速排序的三个步骤:(1)选择基准:在待排序列中,按照某种方式挑出一个元素,作为 "基准"(pivot)(2)分割操作:以该基准在序列中的实际位置,把序列分成两个子序列。此时,在...

2019-07-24 12:38:28 624

原创 冒泡排序

什么是冒泡排序?冒泡排序的英文Bubble Sort,是一种最基础的交换排序。 而我们的冒泡排序之所以叫做冒泡排序,正是因为这种排序算法的每一个元素都可以像小气泡一样,根据自身大小,一点一点向着数组的一侧移动。具体如何来移动呢?让我们来看一个栗子:有8个数组成一个无序数列:5,8,6,3,9,2,1,7,希望从小到大排序。按照冒泡排序的思想,我们要把相邻的...

2019-07-24 12:06:31 212

原创 抽象工厂模式

抽象工厂模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。优点:①易于交换产品系列,由于具体工厂类,例如AbstractFactory *paf = new Factory_2,在一个应用中只需要在初始化时候出现一次,这就使得改变一个具体的工厂变得非常容易,它只需要改变具体工厂即可使用不同的产品配置。 ②它让具体的创建实例过程与客户端分离,客户...

2019-07-22 11:41:44 142

原创 KMP算法

KMP算法要解决的问题就是在字符串(也叫主串)中的模式(pattern)定位问题。说简单点就是我们平时常说的关键字搜索。模式串就是关键字(接下来称它为P),如果它在一个主串(接下来称为T)中出现,就返回它的具体位置,否则返回-1(常用手段)。首先,对于这个问题有一个很单纯的想法:从左到右一个个匹配,如果这个过程中有某个字符不匹配,就跳回去,将模式串向右移动一位。这有什么难的?我们可以这...

2019-07-21 23:55:05 186

原创 浅拷贝,深拷贝,写时拷贝

浅拷贝:拷贝构造时复制指针仅仅是对指针的值拷贝,而不开辟新的空间这样就会造成在析构的时候。会对同一块内存释放两次。深拷贝:拷贝构造时会开辟新的内存,并把内存中的值进行拷贝写时拷贝:就是当你在读取一片空间时,系统并不会为你开辟一个一模一样的空间给你;只有在当你真正修改的时候,才会开辟一片空间给你。怎么实现写时拷贝呢?(1)、使用引用计数来实现。所以我们在分配空间时需要多分配4个字节,...

2019-07-21 21:36:57 133

原创 工厂方法模式

简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码进行。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。但缺点是由于每加一个产品需要加...

2019-07-21 20:11:12 125

原创 简单工厂模式

#include <iostream>#include <exception>using namespace std;class Operation//运算类{public: Operation() { cout << "this is Operation()" << endl; } virtual ~Operation()...

2019-07-21 16:24:01 156

原创 C++的四种类型转换方式

int a = 10;double d = static_cast<double> a;static_cast:用于基本类型和继承关系的转换,更改变量内部表示(最常用)reinsterpret_cast:将指针解释为另一种指针,不修改指针指向的数据(指针)const_cast:去除constdynamic_cast:继承类对象的指针或引用的转换(运行时)一...

2019-07-20 21:39:45 174

原创 单例模式

单例模式的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例,即一个类只有一个实例。TEXT 1:使用懒加载,只有在使用时才实例化。class Singleton{public: static Singleton *Instance();private: Singleton() { cout <&l...

2019-07-20 01:35:57 77

原创 函数重载 函数符号生成规则

函数的默认值 sum(int a, int b, int c = 10)①自右向左, 依次赋值。②同一个形参只能赋一次。3,一般会在声明上给出默认值。4,不能让编译器产生二义性,重载决议不能产生二义性。5,函数重载不依赖返回值。三要素:1,同作用域才能重载。              2,同名              3,参数不同函数符号生成规则C++ 1...

2018-11-27 20:31:26 391

转载 函数的调用约定

函数调用约定前言在C语言中,假设我们有这样的一个函数: int function(int a, int b);调用时只要用result = function(1, 2);这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说...

2018-11-15 18:06:19 146

转载 fork()函数

Version:1.0 StartHTML:000000217 EndHTML:000091839 StartFragment:000040448 EndFragment:000091788 StartSelection:000040617 EndSelection:000091762 SourceURL:https://blog.csdn.net/jason314/article/details...

2018-11-06 20:04:36 149

转载 时间复杂度和空间复杂度详解

算法的时间复杂度和空间复杂度合称为算法的复杂度。1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时...

2018-05-12 20:54:37 151

原创 二维数组如何分配动态内存

两种方法:1.转化为一维数组申请2.先申请全部行首指针,再按行逐行申请1.a=(int *)malloc(sizeof(int),(unsigned)m*n);使用的时候就和一般的二维数组一样。#include "stdlib.h" #include "stdio.h" #include &lt;malloc.h&gt; int main() { int i,j; int n;//这个就是需要...

2018-05-03 09:58:37 547

转载 static的作用(修饰函数,局部变量,全局变量)

(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variablevoid msg() {    printf("Hello\n"); } 下面是main.c...

2018-05-02 08:52:27 244

原创 经典递归算法汉诺塔

# include "stdio.h"void move(int n, char a, char b, char c) {     if (n == 1)         printf("\t%c-&gt;%c\n", a, c);         else     {                  move(n-1, a, c, b);                  printf(...

2018-04-18 09:16:51 172

原创 strcat strcpy strcmp strlen函数的实现

1、Strcat函数原型如下:char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数{       char * address = strDest;             //该语句若放在assert之后,编译出错       assert((strDest != NULL) &amp;&amp; (st...

2018-04-14 11:05:42 265

原创 二维数组的传递方式

#include &lt;stdio.h&gt;/********************************* * 方法1: 第一维的长度可以不指定 * * 但必须指定第二维的长度 * *********************************/ void print_a(int a[][5], int n, int m) { int i, j; for(i = 0; i &lt...

2018-04-13 20:54:13 729

原创 正序逆序输出一个n位十进制数字

#include&lt;stdio.h&gt;int Mysqrt(int n){ int i; for(i=0;i*i&lt;=n;i++)//3*3 {  ; } return i-1; //return sqrt(n);}//统计十进制n的位数int GetFigures(int n){ int count = 0; do {  count++;  n /= 10;//丢弃个位   123/...

2018-04-12 20:04:02 415

空空如也

空空如也

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

TA关注的人

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