- 博客(22)
- 资源 (15)
- 收藏
- 关注
原创 策略模式
策略模式它定义了算法家族,分贝封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户端。这是程杰在《大话设计模式》里面对策略模式的简单定义。1.策略模式实现策略模式在生活中用的最多的地方大概就是打折,打折用的最多的地方大概就是超市。好了,来模拟一下超市使用不同方案打折的收费结果。为了说明这个模式的用法,简单的举了两个打折方案:一是正常收费(很sb);二是在总额的基础上...
2019-11-13 23:07:46 171
原创 装饰模式
装饰模式装饰模式又被称为包装模式。装饰模式动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活,主要就是继承关系的一个替换。1.代码实现装饰模式举的例子就是人在穿衣服的过程,肯定是有先后顺序,如果不当的穿衣顺序可能会闹了笑话。装饰模式特别的形象,如果不使用装饰模式,可能会在客户端穿一件衣服展示一下,最后也会完成这个穿衣服的过程,但是实际情况不是这样的,不可能穿一件衣...
2019-11-10 20:24:19 147
原创 建造者模式
建造者模式建造者模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程,通过子类继承和重载的方法,动态的创建具有复合属性的对象。1.代码实现这里还是拿程杰的《大话设计模式》一书中让小菜画不同外貌特征的小人为例,叙述整个建造者模式的实现过程。为了不丢三落四,小人的创建统一让设计师(Director)来指挥工程队(PersonBuilder)完成,客户只是给设计师说具体...
2019-11-10 14:08:01 157
原创 原型模式
原型模式原型模式(Prototype)是一种对象创建型模式,它采用复制原型对象的方法来创建对象的实例。使用Prototype模式创建的实例,具有与原型一样的数据。如果是数值类型的数据,原型对象和创建的对象会各自有一份单独的数据,如果是对象类型的数据,原型对象和创建的新对象会指向同一个引用。在这里就拿程杰在《大话设计模式》一书里面的写多份简历来举例,说明整个原型模式的实现以及浅克隆和深克隆的区别。...
2019-11-10 00:33:52 137
原创 单例模式
单例模式单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的一个对象。也就是说,在整个程序空间中,改类只存在一个实例对象。1.饿汉式单例模式私有化构造器在类的内部创建一个类的实例,且为static私有化对象,通过公共方法调用此公共方法只能通过类来调用,因为设置的是static,同时类的实例也是static由“饿汉式”得知,因为比较饥饿,所以先将对象实例化,在...
2019-11-08 12:32:35 112
原创 工厂模式的一个应用——计算器
工厂模式写简单计算器学了三个工厂模式,各有各的长处,我选择了工厂方法模式做了一个练习。做了一个计算器,当然这个计算器省略了很多客户端的代码,只是为了表达出工厂模式的应用即可,直接看代码。这个例子也是程杰老师在《大话设计模式》里面有讲到过,可能没有学习设计模式之前我也会和程老师带的菜鸟一样写出书中的第一个版本那样的代码。代码涉及到了加减乘除四个运算以及四个运算获得实例化对象的方法。使用到的操作...
2019-11-01 19:58:01 154
原创 抽象工厂模式
抽象工厂模式抽象工厂模式是所有形态模式中最为抽象和最具一般性的,抽象工厂模式可以向客户端提供接口,使得客户端在不必要指定产品的具体类型情况下,能够创建多个产品族的产品抽象。这里涉及到一个产品和产品族的概念,我百度百科找了一下,产品族。1.代码实现写完抽象工厂模式的代码后发现我的例子真的不太适合来说明这个抽象工厂模式,但是能够表达清楚原理就行,不必要计较合理不合理。比如说在学校有老师和学生,这...
2019-11-01 18:49:28 1851
原创 工厂方法模式
工厂方法模式工厂方法模式同样属于类的创建型模式,又被称为多态工厂模式。工厂方法模式的意义是定义一个创建产品对象的接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步才抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。看这篇文章之前首先要看简单工厂模型,才有对比性,能够更加了解...
2019-10-27 11:24:53 130
原创 简单工厂模式
简单工厂模式 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负责穿件其他类的实例,被创建的实例通常都具有共同的父类。1.Java代码实现第一版:没有类实例创建的工厂,每个类的对象实例化需在主函数实现,使得主函数代码很长,不容易维护,不容易扩展。代码如下:// Apple.javaclass Apple{ public void get() {...
2019-10-26 10:49:09 145
原创 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 141
原创 操作系统软中断实验
操作系统软中断实验是在Linux操作系统完成,我在实验过程中也是遇到了很多问题。我在这里记录一下,也可以和大家一起交流。一、题目 使用C语言编写程序,实现当按下组合键Ctrl+\的时候,先打印出子进程结束的信息,最后打印出父进程结束的信息。二、源代码#include<stdio.h>#include<stdlib.h>#include<sig...
2019-05-03 13:56:53 1449
原创 简易C语言词法分析器
简单的词法分析器,可以对标识符,关键字,数字,运算符等进行分析。源代码从文件读取,文件名在词法分析器运行的时候输入,预处理的结果和分析的结果都会写入文件,处理结果我放到最后。一、对源代码进行处理处理空格:如果空格只有一个就保留,如果有连续多个空格只保留一个。要处理的字符串是放在 char *buf, 处理后的字符串放在char *cur,len是buf的长度,返回值是cur的长度。...
2019-05-01 22:32:08 2131
原创 解决Xshell连接Linux使用vim时数字小键盘不能正常使用的问题
后台开发人员可能会经常使用终端连接到Linux主机上进行工作,使用vim写代码的时候发现数字小键盘不能正常使用,解决方法如下:修改会话属性选择终端->VT模式注意:最后一步非常关键,确定之后重新启动会话。...
2019-04-24 22:44:39 1374
原创 Ubuntu 删除文件和文件夹
以前只知道如何删除空的文件夹和文件,但是不知道如何删除非空文件夹。但是我们经常需要删除非空的文件夹,那我来分享一下如何删除非空文件夹。ubuntu删除文件:rm 文件名ubuntu删除空文件夹:rmdir 目录名ubuntu删除非空文件夹:rm -rf 目录名参数-f表示force,用了这个参数就不会询问你是否要删除了。...
2019-04-24 13:19:12 4746
原创 分享一道 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 257
原创 分享 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 432
原创 LeetCode 27.移除元素算法代码分享
分享一道 LeetCode第27题. 移动元素算法的代码,此代码的执行时间为8ms,超过 95.95% 的用户;内存 8.4MB,超过 96.91% 的用户。题目如下:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改...
2019-04-20 00:28:40 129
原创 简单工程 Makefile 的写法举例
以前经常在Windows上写程序,源文件的预处理、编译、连接、运行等等都由强大的 IDE 帮我完成。之后在 Linux 操作系统上写程序的时候文件需要一个一个编译、连接、运行,文件较多的时候的确有些繁琐,就自己学着写相对简单的Makefile,而且修改源文件之后只需要一个 make 指令就全部完成,最后运行可执行文件。下面我来举个Makefile写法的例子:源文件目录:create.c...
2019-04-18 12:33:12 373
原创 Google C++ 命名规范
经常在学习的时候使用 C++ 写程序,但是老是被有开发经验的程序员吐槽。吐槽最多的要数命名规范了,我确实也没有太在意这方面的知识。后来我通过查找看到Google 的一个C++命名规范,在这里和大家分享一下。分类规范举例文件名全部小写,可以包含下划线my_useful_class.h my_useful_class.cpp命名空间全小写字母,其命名基于...
2019-04-18 00:56:45 271 1
原创 程序员单身是走了一条怎样的路?
TODOTODO一、思想被专业禁锢 言辞里面一直包含有技术性的名次,太过于专业,让外行听了之后以为是故意不想让他听懂,免得来麻烦你。下面来举两个例子:介绍对象:表弟:二哥,求你个事。二哥:说,啥事呀?(同时表现出不耐烦)表弟:给我介绍介绍对象呗。二哥:我靠,这你就算找对人了,专业对口啊!(此时二哥的兴趣也提上来了) 要介绍对象,就要先说说类。类对逻辑上相关函数与...
2019-04-16 22:41:31 286 2
原创 关于 前++ 和 后++ 的效率问题
我在写这篇博客之前也是被一些文章所误导,认为 ++i 的效率比 i++ 的效率高,每次都是使用前置的 ++。虽然操作没错,但是在认识上有错误,所以我把自己错误认识的经历分享出来,希望能够对和我有同样错误的人一些帮助。一、内置数据类型 对于计算机内置的数据类型,现在的编译器水平比较高,比如 ++i 和 i++ 没有任何的区别,我们可以通过查看汇编代码看出来。C语言源代码如下:i++; ...
2019-04-16 13:18:10 592
原创 Github上的README.md基本写法
本人今天也是第一次接触markdown,通过一天的各种尝试和探究,总结出了一些基本的用法,我就分享在这里:标题写法标题分为六个等级,显示的文本大小会依次减小。依次用一到六个 # 来区分等级,一级标题有一个 #,依次类推。注意的是在 # 和标题之间有一个空格。一级到六级标题如下:# 这是一级标题## 这是二级标题### 这是三级标题#### 这是四级标题##### 这是五级标题##...
2019-04-15 22:44:07 5432
HDG12864——含光强、气压、CH4、CO、温湿度.zip
2020-06-11
数据结构实验报告11-内部排序-三种平均时间复杂度为O(nlogn)的内部排序算法的实现-实验内容与要求.docx
2019-07-06
数据结构实验报告10-查找-B-树基本操作的实现-实验内容与要求.docx
2019-07-06
数据结构实验报告9-图-Prim算法求最小生成树-实验内容与要求.docx
2019-07-06
数据结构实验报告8-树-求二叉树先序、中序、后序遍历次序的第k个访问结点-实验内容与要求.docx
2019-07-06
数据结构实验报告7-树-二叉树的字符图形显示程序(半期测试)-实验内容与要求.docx
2019-07-06
数据结构实验报告6-树-二叉树的遍历算法-实验内容及要求.docx
2019-07-06
数据结构实验报告5-串-基于改进KMP算法的子串查代与替换-实验内容及要求.docx
2019-07-06
数据结构实验报告4-数组与广义表-基于十字链表的稀疏矩阵转置-实验内容及要求.docx
2019-07-06
数据结构实验报告3-栈与队列-中缀表达式求值-实验内容及要求.docx
2019-07-06
数据结构实验报告2-栈与队列-队列基本操作算法-实验内容及要求.docx
2019-07-06
数据结构实验报告1-线性表-两个有序表的归并-实验内容及要求.docx
2019-07-06
数据结构课程设计-输出DAG的所有拓扑排序序列-内容与要求.docx
2019-07-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人