自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式之Composite模式(组合模式)

设计模式,组合模式

2022-09-30 18:01:03 217 1

原创 设计模式之Strategy模式(策略模式)

啦啦啦,又懒惰了几天,希望毕业前可以整理完所有设计模式。策略模式,使用比较官方的话来介绍:定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。策略模式是一种对象行为型模式。大白话理解一下就是策略模式是为了在业务场景中整体替换算法的实现部分,以处理不同的实际情况,使用起来也比较简单,就是在上下文中保留一个抽象的策略的引用,在根据实际情况的改变,去定义新的具体策略类。还是直接看代码(书上的例子比较复杂,我自己写的比较简单,不影

2022-05-21 11:29:59 227

原创 设计模式之Bridge模式(桥接模式)

这几天重新去看spring系列的框架了(也又次体会到了理解设计模式在学习框架时的好处),没有接着写,发生了一些事,又少了些许束缚,但结果对向往自由的我来说总是好的,虎入山林,龙归沧海,听听音乐,整理整理博客。书上的介绍比较简单,抽象,又看了一些其他东西才理解了一些。首先来介绍一下类的两个层次结构:功能层次结构和实现层次结构。所谓功能层次结构,我们现在有一个类ActionSomething,想在它上面拓展新的功能,直接的方法就是继承他,添加一个派生类ActionSomethingGood,如果再想拓展功能

2022-05-16 01:28:47 691 1

原创 设计模式之abstract method模式(抽象工厂模式)

这个模式没太看懂书上的例子,只感觉很繁琐,引用一篇非常好的并且看的懂的吧:工厂三兄弟之抽象工厂模式(四)还有自己的一些理解:首先说下工厂方法模式的缺点:每有一个新的产品,都需要创建两个新的类,产品类和工厂类,有时会显得非常麻烦,看起来比较臃肿。当产品可以划分产品族,有一定的产品的层次结构时,就可以使用抽象工厂模式,用来生产一组有结构的产品。...

2022-05-07 15:34:39 102

原创 设计模式之Builder模式(建造者模式)

啊啊啊,希望时间过的再快些,快进到论文答辩完,顶不住啦建造者模式是用来组装具有复杂结构的实例的模式,先看示例,我们要写一个编写文档的程序,该文档有以下结构:标题,字符串,多条项目。上代码:先将建造者Builder按照文档结构进行抽象:public abstract class Builder { public abstract void makeTitle(String title); public abstract void makeString(String str); pu

2022-05-06 23:31:05 398

原创 设计模式之Prototype模式(原型模式)

听完二手玫瑰,倍儿精神,12:43,再更一波原型模式,是通过复制而不是new生成实例的模式。一般情况下,我们会使用new 类名()来创建实例,但有时我们不能根据类来生成实例,而是通过现有的实例来生成新的实例。详细介绍可以查阅《图解设计模式》第六章Prototype模式。有的东西还是表达不出来了,直接上代码吧:public interface Product extends Cloneable{ //继承空接口Cloneable 为说明该接口是可clone的 否则会报错 public a

2022-05-06 01:00:48 413

原创 设计模式之Singleton模式(单例模式)

宿舍熄灯了,一楼小房间有位置了,接着肝~很简单的一个设计模式:单例模式,他是为了达到同时只有一个实例的目的。直接上代码,只存在一个实例的类Singleton:public class Singleton { private static Singleton singleton = new Singleton(); private Singleton() { System.out.println("生成了实例"); } public static Si

2022-05-05 23:27:30 637

原创 设计模式之Factory Method模式(工厂方法模式)

持续感冒中。。。,又是头晕的一天,明天中午还是要打乒乓球大伙可能听说过简单工厂模式,我的比较浅薄的理解就是实际产品类继承于产品接口,但工厂类的生产方法是静态方法,通过传入参数来决定要生产的产品,当有新的产品需要生产时,需要的是修改而不是新增,不符合设计原则的开闭原则。来看Factory Method模式,这是在简单工厂模式上的一种改进。既然每次有新的产品都需要修改工厂类的生产方法,那我们可以将工厂类提取为一个接口,每有新的产品都为它新建一个工厂,来看一个生产ID卡的例子,顺便复习下之前的template

2022-05-05 21:59:01 153

原创 设计模式之template method模式(模板方法模式)

感冒了,一直流大鼻涕,扁桃体肿的跟个桃似的,脑袋晕晕的,非常难受,坚持学习。哦对,一直忘了说这一系列博客参考的书是《图解设计模式》。模板方法模式,最突出的就是模板二字,肯定会想到接口或者抽象类之类的东西,定制一些标准,以便子类继承或实现,达到复用的目的。接下来看书中对template method模式的解释:组成模板的方法定义在父类中,这些方法是抽象方法,并没有规定做如何处理,交由子类实现,只知道这些方法在父类中如何被使用,也就是相当于父类定义了一些流程处理的框架,而框架的细节都需要字类自己定义。来

2022-05-04 22:47:34 157

原创 设计模式之Adapter模式(适配器模式)

又是一个新的适应设计模式,之前已经记录过Iterator模式,感觉学习的时候记录真的真的很重要,看过一遍和自己写成博客完全不一样,当然每个人都有自己的学习方式吧。生活中常见的适配器莫过于充电器,一般电压是220V,而有些电器的额定工作电压和220V不同,所以直接需要一个适配器来转化一下电压,从而得到一个结论:适配器就是位于实际情况和需求之间,起到屏蔽这种差异的功能。Adapter主要有两种实现方式:类适配器模式(使用继承),对象适配器模式(使用委托)。先来看类适配器模式:首先我们有一个Banner类,

2022-05-04 11:51:02 404 1

原创 设计模式之Iterator模式优化

当当当,书接上回,上次发的Iterator模式太过糟糕,耦合性巨高,感觉根本无法复用,这次通过接口,泛型将该模式尽可能进行改进,使其达到一些复用的效果。直接看代码,这是新的集合要求实现的接口/** * @author lenovo * @title: CommAggregate * @projectName LearnDesignMode * @description: 通用迭代器集合要实现的接口 * 之前要求集合实现的接口里仅有要求返回迭代器这一项,为实现代码的复用,我们对集合提出更多的

2022-05-04 00:26:01 64

原创 设计模式之Iterator模式

今天开始重新学习设计模式,记录一下。Iterator模式看到Iterator,第一反应肯定已经想到了各种遍历,数组,集合。该模式也比较简单,相当于自己实现了一点迭代器功能,直接上代码,代码中有注释。import java.util.Arrays;/** * @author lenovo * @title: Main * @projectName LearnDesignMode * @description: TODO * @date 2022/5/221:18 */public cl

2022-05-02 23:06:19 215

原创 Vue生命周期简要学习

Vue生命周期 自学记录

2022-05-01 23:37:18 647

原创 C#开发--ASP.NETweb开发初探

C#开发--ASP.NETweb开发初探

2021-12-29 21:29:54 3762 2

原创 我对注解的理解

给计算机看的注释

2021-11-02 23:42:25 96

原创 弗洛伊德算法思想理解

最近考研复习到图的一些算法,但书上对这些算法解释只是一笔带过,更多的是如何做,如何使用。对于我这种又笨又固执的人来说,无疑非常难受,甚至一开始想不明白这个地方,但又说不出来,所以昨天很长时间都在思考这个算法是为什么。看了很多博客,发现也鲜有人去写怎么理解,大都是代码加栗子,接下来说说我从另一个方面的理解,如果有不对的地方,希望大家指正。首先定义一下图的结构typedef struct { char vex[MAXVERTEXNUM]; //顶点表 int edge[MAXVERTEXNUM][

2021-06-09 11:34:16 1070 1

原创 CCF 2016-12-1 中间数

题目链接: 2016-12-1 中间数.问题描述  在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。  给定一个整数序列,请找出这个整数序列的中间数的值。输入格式  输入的第一行包含了一个整数n,表示整数序列中数的个数。  第二行包含n个正整数,依次表示a1, a2, …, an。输出格式  如果约定序列的中间数存在,则输出中间数的值,否则输出-1表示不存

2021-06-07 23:12:15 119

原创 CCF 2016-09-1 最大波动

题目链接: 2016-09-1 最大波动.问题描述  小明正在利用股票的波动程度来研究股票。小明拿到了一只股票每天收盘时的价格,他想知道,这只股票连续几天的最大波动值是多少,即在这几天中某天收盘价格与前一天收盘价格之差的绝对值最大是多少。输入格式  输入的第一行包含了一个整数n,表示小明拿到的收盘价格的连续天数。  第二行包含n个正整数,依次表示每天的收盘价格。输出格式  输出一个整数,表示这只股票这n天中的最大波动值。样例输入62 5 5 7 3 5样例输出4样例说明  第四

2021-06-04 21:01:40 86

原创 CCF 2016-04-1 折点计数

题目链接: 2016-04-1 折点计数.问题描述  给定n个整数表示一个商店连续n天的销售量。如果某天之前销售量在增长,而后一天销售量减少,则称这一天为折点,反过来如果之前销售量减少而后一天销售量增长,也称这一天为折点。其他的天都不是折点。如下图中,第3天和第6天是折点。  给定n个整数a1, a2, …, an表示销售量,请计算出这些天总共有多少个折点。  为了减少歧义,我们给定的数据保证:在这n天中相邻两天的销售量总是不同的,即ai-1≠ai。注意,如果两天不相邻,销售量可能相同。输入格

2021-06-04 20:55:00 63

原创 CCF 2015-12-1 数位之和

题目链接: 2015-12-1 数位之和.问题描述  给定一个十进制整数n,输出n的各位数字之和。输入格式  输入一个整数n。输出格式  输出一个整数,表示答案。样例输入20151220样例输出13样例说明  20151220的各位数字之和为2+0+1+5+1+2+2+0=13。评测用例规模与约定  所有评测用例满足:0 ≤ n ≤ 1000000000。code#include <iostream>using namespace std;int mai

2021-06-04 20:46:34 68

原创 记录两个在C++中动态创建二维数组的方式

一,已确定列数code#include <iostream>using namespace std;//C++ 动态创建二维数组的方法int main() { //定义并通过输入获取行数 int n; cin >> n; //定义nums int (*nums)[3] = new int[n][3]; //假设列数为3 //通过输入为nums数组赋值 for (int i = 0; i < n; i++) { for (int j

2021-06-02 23:35:52 234 2

原创 CCF 2015-03-1 图像旋转

题目链接: 2015-03-1图像旋转.code#include <iostream>using namespace std;int main() { int n, m; cin >> n >> m; int** nums; nums = new int* [n]; for (int i = 0; i < n; i++) { nums[i] = new int[m]; } for (int i = 0;

2021-06-02 23:18:27 47

原创 CCF 2015-09-1 数列分段

题目链接: 2015-09-1 数列分段.code#include <iostream>using namespace std;int main() { int n; cin >> n; int *nums = new int [n]; for(int i=0; i<n; i++) { cin >> nums[i]; } int count = 0; int temp = nums[0]; count++; for(i

2021-06-02 01:40:00 54

原创 CCF 2014-12-1 门禁系统

题目链接: 2014-12-1 门禁系统.code#include <iostream>using namespace std;int main() { int n; cin >> n; int* record = new int[n]; int* count = new int[n] {0, 0}; for (int i = 0; i < n; i++) { cin >> record[i]; } for (int i = 0; i

2021-06-01 13:08:16 81

原创 CCF 2014-09-1 相邻数对

题目链接: 2014-09-1 相邻数对.code#include <iostream>#include <algorithm> //引入sort函数using namespace std;int main() { int n; cin >> n; int* nums = new int[n]; for (int i = 0; i < n; i++) cin >> nums[i]; sort(nums, nums + n

2021-06-01 13:06:10 62

原创 CCF 2014-03-1 相反数

题目链接: 2014-03-1 相反数.code#include <iostream>#include <algorithm> //sort函数using namespace std;int main() { int N; cin >> N; int* nums = new int[N]; for (int i = 0; i < N; i++) cin >> nums[i]; sort(nums, nums + N);

2021-05-31 20:26:39 61

原创 CCF 2013-12-1 出现次数最多的数

题目链接: 2013-12-1 出现次数最多的数.code#include<iostream>using namespace std;int main() { int n; cin >> n; int *nums = new int[n]; for (int i = 0; i < n; i++) cin >> nums[i]; int (*statistic)[2] = new int[n][2]; for (int i = 0; i

2021-05-31 19:36:16 47

原创 CCF 2020-06-1 线性分类器

菜归菜,题还是要做的,准备一下9月份的认证考试题目链接: 2020-06-1 线性分类器.demo#include<iostream>using namespace std;int main() { int n, m; cin >> n; cin >> m; int (*points)[2] = new int[n][2]; char *points_flag = new char[n]; int (*lines)[3] = new int

2021-05-31 11:29:13 98

原创 JS基础----02----严格模式

顾名思义:严格模式(strict mode)就是在更严格的条件下执行,这是相比普通模式而言,栗子:普通模式下,变量不经过声明也是可以使用的,但在严格模式下,你需要乖乖的声明它的存在Why?严格模式的出现是为了消除Javascript语法的一些不合理、不严谨之处,消除代码运行的一些不安全之处,保证代码运行的安全,提高编译器效率,增加运行速度。"严格模式"体现了Javascript更合理、更安全、更严谨的发展方向。同样的代码,在"严格模式"中,可能会有不一样的运行结果;一些在"正常模式"下可以运行的语句,

2021-03-21 22:18:09 119

原创 JS基础----01----变量提升

还记得一开始做项目的前端时,HTML,CSS,JavaScript都没有怎么接触过,看着动不动几百行甚至上千行的页面,很是头痛,只能一点一点看,什么不知道怎么调用接口,怎么简单处理后端返回的数据,连JSON都不知道是啥,做多了之后,渐渐明白JS才是真正的核心,vue原来是一个JS库,慢慢感觉到了JS的强大,真的忍不住说一句:“Java是世界上最好的语言”JS的变量提升(hoisting)顾名思义,就是把变量和函数的声明都提升到顶部,看栗子看栗子(我书写JavaScript的习惯是不加分号,但有的时候分号

2021-03-20 21:17:36 78

原创 奇奇怪怪的文件类型之JSON--01

突发奇想,想了解一下开发中常见的文件类型,如JSON,XML等等,今天开始先来整理一下JSONJSON简介What?JSON是JavaScript Object Notation的缩写,javascript的对象表示法,它是一种轻量级数据交换格式,虽然JSON使用js的语法,但JSON仅为文本,JSON就是通过键值对来表达对象,例如在js中,你可能这样表达一个对象:var jsObject = {name: "xiaohaier", age: 23, position: "前段开发"}使用JSO

2021-03-19 23:33:30 125

原创 Java中将函数作为参数进行传递

最近一直在做一个项目的前端,使用的框架是vue,还有一些基于vue的组件库,学习了很多js的相关内容。今天突然想看一下Java,发现好久不看忘记了许多,还是希望每天晚上可以写点博客,当做学习,复习的方式,也改变一下我拖拖拉拉的行事,希望可以坚持下去,加油,打工人!Java中将函数作为参数进行传递现在了解到的有两种:Java8之前,一个常见的模式是将它“包装”在一个界面中,例如Callable接口,然后传入一个Callable。Java8以及之后就是今天学到的一种方法,通过Java8的新特性lambda表

2021-03-18 23:28:32 11262

原创 Java生成多个不重复随机数(可用于抽奖,抽签等)

最近班里要抽取考研座位,想了想可以很简单的实现这个小算法,记录一下学习过程生成多个不重复的随机数的需求场景:1.抽奖系统2.一些加密算法,比如在密码学中生成Nonce3.随机播放4.游戏中的随机数,比如卡牌类游戏中刷新卡牌,抽取卡牌因为班级人数还有座位数都是确定的,所以也没有写的太麻烦,只是用到了Random包,代码逻辑很简单,也很清晰,直接上代码:import java.util.Arrays;import java.util.Random;public class MyRandom

2021-01-04 13:24:48 4159 1

空空如也

空空如也

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

TA关注的人

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