自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (15)
  • 收藏
  • 关注

原创 策略模式

策略模式它定义了算法家族,分贝封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户端。这是程杰在《大话设计模式》里面对策略模式的简单定义。1.策略模式实现策略模式在生活中用的最多的地方大概就是打折,打折用的最多的地方大概就是超市。好了,来模拟一下超市使用不同方案打折的收费结果。为了说明这个模式的用法,简单的举了两个打折方案:一是正常收费(很sb);二是在总额的基础上...

2019-11-13 23:07:46 133

原创 装饰模式

装饰模式装饰模式又被称为包装模式。装饰模式动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活,主要就是继承关系的一个替换。1.代码实现装饰模式举的例子就是人在穿衣服的过程,肯定是有先后顺序,如果不当的穿衣顺序可能会闹了笑话。装饰模式特别的形象,如果不使用装饰模式,可能会在客户端穿一件衣服展示一下,最后也会完成这个穿衣服的过程,但是实际情况不是这样的,不可能穿一件衣...

2019-11-10 20:24:19 131

原创 建造者模式

建造者模式建造者模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程,通过子类继承和重载的方法,动态的创建具有复合属性的对象。1.代码实现这里还是拿程杰的《大话设计模式》一书中让小菜画不同外貌特征的小人为例,叙述整个建造者模式的实现过程。为了不丢三落四,小人的创建统一让设计师(Director)来指挥工程队(PersonBuilder)完成,客户只是给设计师说具体...

2019-11-10 14:08:01 140

原创 原型模式

原型模式原型模式(Prototype)是一种对象创建型模式,它采用复制原型对象的方法来创建对象的实例。使用Prototype模式创建的实例,具有与原型一样的数据。如果是数值类型的数据,原型对象和创建的对象会各自有一份单独的数据,如果是对象类型的数据,原型对象和创建的新对象会指向同一个引用。在这里就拿程杰在《大话设计模式》一书里面的写多份简历来举例,说明整个原型模式的实现以及浅克隆和深克隆的区别。...

2019-11-10 00:33:52 98

原创 单例模式

单例模式单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的一个对象。也就是说,在整个程序空间中,改类只存在一个实例对象。1.饿汉式单例模式私有化构造器在类的内部创建一个类的实例,且为static私有化对象,通过公共方法调用此公共方法只能通过类来调用,因为设置的是static,同时类的实例也是static由“饿汉式”得知,因为比较饥饿,所以先将对象实例化,在...

2019-11-08 12:32:35 99

原创 工厂模式的一个应用——计算器

工厂模式写简单计算器学了三个工厂模式,各有各的长处,我选择了工厂方法模式做了一个练习。做了一个计算器,当然这个计算器省略了很多客户端的代码,只是为了表达出工厂模式的应用即可,直接看代码。这个例子也是程杰老师在《大话设计模式》里面有讲到过,可能没有学习设计模式之前我也会和程老师带的菜鸟一样写出书中的第一个版本那样的代码。代码涉及到了加减乘除四个运算以及四个运算获得实例化对象的方法。使用到的操作...

2019-11-01 19:58:01 141

原创 抽象工厂模式

抽象工厂模式抽象工厂模式是所有形态模式中最为抽象和最具一般性的,抽象工厂模式可以向客户端提供接口,使得客户端在不必要指定产品的具体类型情况下,能够创建多个产品族的产品抽象。这里涉及到一个产品和产品族的概念,我百度百科找了一下,产品族。1.代码实现写完抽象工厂模式的代码后发现我的例子真的不太适合来说明这个抽象工厂模式,但是能够表达清楚原理就行,不必要计较合理不合理。比如说在学校有老师和学生,这...

2019-11-01 18:49:28 1812

原创 工厂方法模式

工厂方法模式工厂方法模式同样属于类的创建型模式,又被称为多态工厂模式。工厂方法模式的意义是定义一个创建产品对象的接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步才抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。看这篇文章之前首先要看简单工厂模型,才有对比性,能够更加了解...

2019-10-27 11:24:53 90

原创 简单工厂模式

简单工厂模式    简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负责穿件其他类的实例,被创建的实例通常都具有共同的父类。1.Java代码实现第一版:没有类实例创建的工厂,每个类的对象实例化需在主函数实现,使得主函数代码很长,不容易维护,不容易扩展。代码如下:// Apple.javaclass Apple{ public void get() {...

2019-10-26 10:49:09 129

原创 C++中string erase函数的使用

erase函数的原型如下:string& erase ( size_t pos = 0, size_t n = npos );iterator erase ( iterator position );iterator erase ( iterator first, iterator last );也就是说有三种用法:erase(pos,n); 删除从pos开始的n个字符,比如e...

2019-06-03 23:35:55 115

原创 操作系统软中断实验

    操作系统软中断实验是在Linux操作系统完成,我在实验过程中也是遇到了很多问题。我在这里记录一下,也可以和大家一起交流。一、题目    使用C语言编写程序,实现当按下组合键Ctrl+\的时候,先打印出子进程结束的信息,最后打印出父进程结束的信息。二、源代码#include<stdio.h>#include<stdlib.h>#include<sig...

2019-05-03 13:56:53 1394

原创 简易C语言词法分析器

    简单的词法分析器,可以对标识符,关键字,数字,运算符等进行分析。源代码从文件读取,文件名在词法分析器运行的时候输入,预处理的结果和分析的结果都会写入文件,处理结果我放到最后。一、对源代码进行处理处理空格:如果空格只有一个就保留,如果有连续多个空格只保留一个。要处理的字符串是放在 char *buf, 处理后的字符串放在char *cur,len是buf的长度,返回值是cur的长度。...

2019-05-01 22:32:08 2085

原创 解决Xshell连接Linux使用vim时数字小键盘不能正常使用的问题

    后台开发人员可能会经常使用终端连接到Linux主机上进行工作,使用vim写代码的时候发现数字小键盘不能正常使用,解决方法如下:修改会话属性选择终端->VT模式注意:最后一步非常关键,确定之后重新启动会话。...

2019-04-24 22:44:39 1350

原创 Ubuntu 删除文件和文件夹

    以前只知道如何删除空的文件夹和文件,但是不知道如何删除非空文件夹。但是我们经常需要删除非空的文件夹,那我来分享一下如何删除非空文件夹。ubuntu删除文件:rm 文件名ubuntu删除空文件夹:rmdir 目录名ubuntu删除非空文件夹:rm -rf 目录名参数-f表示force,用了这个参数就不会询问你是否要删除了。...

2019-04-24 13:19:12 4691

原创 分享一道 LeetCode 641.设计循环双端队列的C++代码

    分享一道LeetCode 641.设计双端循环队列的C++代码,相互学习。此代码的执行用时 : 60 ms, 在Design Circular Deque的C++提交中击败了86.11% 的用户;内存消耗 : 16.3 MB, 在Design Circular Deque的C++提交中击败了92.11% 的用户。本题相比 622.设计循环队列,有相同之处,但也有不同的地方,最大的不同点在于...

2019-04-22 21:27:04 239

原创 分享 LeetCode 622.设计循环队列的C++代码

    分享一道 LeetCode 622.设计循环队列的C++代码,相互学习。此代码的执行用时 : 52 ms, 在Design Circular Queue的C++提交中击败了90.74% 的用户;内存消耗 : 16.3 MB, 在Design Circular Queue的C++提交中击败了96.40% 的用户。题目描述:设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于...

2019-04-22 19:33:10 388

原创 LeetCode 27.移除元素算法代码分享

    分享一道 LeetCode第27题. 移动元素算法的代码,此代码的执行时间为8ms,超过 95.95% 的用户;内存 8.4MB,超过 96.91% 的用户。题目如下:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改...

2019-04-20 00:28:40 111

原创 简单工程 Makefile 的写法举例

    以前经常在Windows上写程序,源文件的预处理、编译、连接、运行等等都由强大的 IDE 帮我完成。之后在 Linux 操作系统上写程序的时候文件需要一个一个编译、连接、运行,文件较多的时候的确有些繁琐,就自己学着写相对简单的Makefile,而且修改源文件之后只需要一个 make 指令就全部完成,最后运行可执行文件。下面我来举个Makefile写法的例子:源文件目录:create.c...

2019-04-18 12:33:12 363

原创 Google C++ 命名规范

    经常在学习的时候使用 C++ 写程序,但是老是被有开发经验的程序员吐槽。吐槽最多的要数命名规范了,我确实也没有太在意这方面的知识。后来我通过查找看到Google 的一个C++命名规范,在这里和大家分享一下。分类规范举例文件名全部小写,可以包含下划线my_useful_class.h   my_useful_class.cpp命名空间全小写字母,其命名基于...

2019-04-18 00:56:45 230 1

原创 程序员单身是走了一条怎样的路?

  TODOTODO一、思想被专业禁锢  言辞里面一直包含有技术性的名次,太过于专业,让外行听了之后以为是故意不想让他听懂,免得来麻烦你。下面来举两个例子:介绍对象:表弟:二哥,求你个事。二哥:说,啥事呀?(同时表现出不耐烦)表弟:给我介绍介绍对象呗。二哥:我靠,这你就算找对人了,专业对口啊!(此时二哥的兴趣也提上来了)      要介绍对象,就要先说说类。类对逻辑上相关函数与...

2019-04-16 22:41:31 256 2

原创 关于 前++ 和 后++ 的效率问题

  我在写这篇博客之前也是被一些文章所误导,认为 ++i 的效率比 i++ 的效率高,每次都是使用前置的 ++。虽然操作没错,但是在认识上有错误,所以我把自己错误认识的经历分享出来,希望能够对和我有同样错误的人一些帮助。一、内置数据类型  对于计算机内置的数据类型,现在的编译器水平比较高,比如 ++i 和 i++ 没有任何的区别,我们可以通过查看汇编代码看出来。C语言源代码如下:i++; ...

2019-04-16 13:18:10 561

原创 Github上的README.md基本写法

本人今天也是第一次接触markdown,通过一天的各种尝试和探究,总结出了一些基本的用法,我就分享在这里:标题写法标题分为六个等级,显示的文本大小会依次减小。依次用一到六个 # 来区分等级,一级标题有一个 #,依次类推。注意的是在 # 和标题之间有一个空格。一级到六级标题如下:# 这是一级标题## 这是二级标题### 这是三级标题#### 这是四级标题##### 这是五级标题##...

2019-04-15 22:44:07 5295

HDG12864——含光强、气压、CH4、CO、温湿度.zip

HDG12864——含光强、气压、CH4、CO、温湿度,是嵌入式课程资源。使用Protuse仿真的Keil编程,能够解决大部分关于环境监测的系统问题,适合计算机类专业。

2020-06-11

ESP8266手机app控制例程详细.zip

该例程烧写到STM32开发板中,然后app就可以控制开发板。如果是做esp8266WiFi模块的功能,这个资源包就是你的不二选择。

2020-06-11

计算机组成原理实验课程设计.docx

西南交通大学信息科学与技术学院大二下计算机组成原理课程设计代码和原理图。

2019-07-06

数据结构实验报告11-内部排序-三种平均时间复杂度为O(nlogn)的内部排序算法的实现-实验内容与要求.docx

输入n个整数,用快速排序、堆排序与2路归并排序算法实现由小到大排序并输出排序结果。要求排序数据及排序结果用字符文件实现输入与输出。

2019-07-06

数据结构实验报告10-查找-B-树基本操作的实现-实验内容与要求.docx

定义B-树存储结构(要求m3;为方便操作,结点中增加双亲结点指针域,最底层的Fail结点用NULL指针表示并且所有结点均存储于内存)。定义B-树插入关键字函数、删除关键字函数、查找关键字函数以及按层次遍历输出B-树所有结点的函数。主函数定义菜单(1.插入关键字 2.删除关键字 3. 查找关键字 4.层次遍历输出B-树所有结点 5.结束程序)。 1. 插入关键字功能的输入为一个关键字,输出为新插入关键字所在结点的信息。 要求结点信息输出格式如下所示: (R102, n, K1, K2, …, Kn) R102表示结点位置,R表示根结点指针;第一个数字1表示根结点的A[1]指针,第二个数字0表求R->A[1]所指结点的A[0]指针,第三个数字2表示R->A[1]->A[0]所指结点的A[2]指针,即该结点指针为: R->A[1]->A[0]->A[2](该结点在第4层上)。n为该结点的关键字数目,K1, K2, …, Kn为该结点中n个非递减有序的关键字。 2. 删除关键字功能的输入为一个关键字,输出为删除成功与失败的信息。 3. 查找关键字功能的输入为一个关键字,输出为查找成功与失败的信息,查找成功时,应输出关键字所在结点信息(结点信息输出方法同1.)。 4. 按层次遍历输出B-树所有结点功能的输入为一个字符文件名,输出为该字符文件,字符文件中,一个结点的信息输出一行(结点信息输出方法同1.),结点输出次序为按层次号由小到大并且同层结点从左向右。

2019-07-06

数据结构实验报告9-图-Prim算法求最小生成树-实验内容与要求.docx

用字符文件提供数据建立连通带权网络邻接矩阵存储¬¬结构。编写程序,用Prim算法求一棵最小生成树。要求输出最小生成树的各条边(用顶点无序偶表示)、各条边上的权值、最小生成树所有边上的权值之和。

2019-07-06

数据结构实验报告8-树-求二叉树先序、中序、后序遍历次序的第k个访问结点-实验内容与要求.docx

编写程序,用先序递归遍历法建立二叉树的二叉链表存储结构,然后输出其先序、中序、后序遍历第k个访问结点。二叉树结点数据类型建议选用字符类型且各结点数据域值互不相同;输出用结点数据域的字符表示;求第k个访问结点的三个子函数中,需使用函数返回值和引用型形参带回所求(即每种方式至少使用一次)。

2019-07-06

数据结构实验报告7-树-二叉树的字符图形显示程序(半期测试)-实验内容与要求.docx

设二叉树采用二叉链表存储结构,结点数据域为字符类型。编写控制台应用程序采用先序遍历法建立二叉树存储结构并实现二叉树的字符图形显示。

2019-07-06

数据结构实验报告6-树-二叉树的遍历算法-实验内容及要求.docx

编写程序,用先序递归遍历法建立二叉树的二叉链表存储结构,然后输出其先序、中序、后序以及层次遍历结点访问次序。其中层次遍历的实现需使用循环队列。二叉树结点数据类型建议选用字符类型

2019-07-06

数据结构实验报告5-串-基于改进KMP算法的子串查代与替换-实验内容及要求.docx

从键盘输入主串s以及子串t1和t2。编写程序,将主串s中所有t1子串替换为t2子串,输出替换后得到的串以及t1被替换的次数。要求子串查找采用改进KMP算法。 实验目的:掌握KMP算法。

2019-07-06

数据结构实验报告4-数组与广义表-基于十字链表的稀疏矩阵转置-实验内容及要求.docx

编写程序,从字符文件读入三个正整数m, n, t以及t个三元组(i, j, e)建立稀疏矩阵的十字链表存储结构。其中,m、n分别表示矩阵行数和列数;i, j为非零元素行号和列号。编写算法,实现矩阵转置,输出转置后的三元组到另一字符文件中,检查你的转置结果是否正确。要求转置时不得新建元素结点(但允许新建行头/列头结点数组以及删除行头/列头结点数组,转置前后,总头结点不允许改变)

2019-07-06

数据结构实验报告3-栈与队列-中缀表达式求值-实验内容及要求.docx

从键盘输入中缀表达式,建立操作数与运算符堆栈,计算并输出表达式的求值结果。 基本要求:实现 +, -, *, /四个二元运算符以及(); 操作数范围为0至9。 提高要求:实现+, -两个一元运算符(即正、负号); 操作数可为任意整型值(程序可不考虑计算溢出)。 若两个整数相除,结果只保留整数商(余数丢弃);每位同学可选择实现基本要求或者提高要求;程序可不处理表达式语法错误。

2019-07-06

数据结构实验报告2-栈与队列-队列基本操作算法-实验内容及要求.docx

编写程序,建立容量为n(建议n=8)的循环队列,完成以下程序功能。输入字符#,执行一次出队操作,屏幕上显示出队字符;输入字符@,队列中所有字符依次出队并按出队次序在屏幕上显示各字符;输入其它字符,则输入的字符入队。 要求采用队头/队尾间隔至少一个空闲元素的方法来实现循环队列;空队执行出队操作及队满执行入队操作需显示提示信息。

2019-07-06

数据结构实验报告1-线性表-两个有序表的归并-实验内容及要求.docx

从键盘输入数据,建立两个有序线性表(每个线性表的输入数据按由小到大次序输入来建立线性表,不必考虑排序算法);输出建好的这两个有序线性表;将这两个有序线性表归并为一个有序线性表;输出归并后的有序线性表。 从键盘实现数据输入与输出的格式自拟;要求完成两个同样功能的程序,一个程序采用顺序存储结构,另一个程序采用链表实现线性表的存储。其中链表实现时,要求利用两个升序链表的结点实现归并,即归并时不能新建结点,归并后原来两个升序链表的存储空间不在存在。 实验目的:掌握两个有序线性表的归并算法。

2019-07-06

数据结构课程设计-输出DAG的所有拓扑排序序列-内容与要求.docx

用字符文件提供数据建立DAG(有向无环图)合适的存储结构。编写程序,输出所有可能的拓扑排序序列。要求输出的拓扑排序结果用顶点序号或字母表示。输出结果需存于字符文件。输出结果中应显示全部拓扑排序序列的数目。如果DAG存在环(即拓扑排序失败),输出结果中应显示拓扑排序序列的数目为0。 课程设计报告要求给出详细算法描述,在结论部分应分析算法的时间复杂度和空间复杂度,并给出分析的结果。

2019-07-06

空空如也

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

TA关注的人

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