自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [设计模式] - 部分设计模式的对比总结

设计模式应当是程序员的内功心法,总结的是前人的经验。可以帮助我们提升代码的可读性、可扩展性;降低维护成本,解决复杂的业务问题。但也不能为了套用设计模式而去使用设计模式。设计模式是在我们迷茫时提供的一种解决方案,或者说用好设计模式可以防范于未然。回顾软件设计原则说到设计模式,一定要了解软件设计原则。首先回顾一下软件设计七大原则:设计原则解释开闭原则对扩展开放,对修改关闭...

2019-04-16 22:07:25 222

原创 [设计模式] - 观察者模式 “三年二班周杰伦,马上到训导处来”

观察者模式(Observer Pattern)定义了对象之间的一对多依赖,让多个观察者对象同时监听一个主体对象,当主体对象发生变化时,它的所有依赖者(观察者)都会收到通知并更新,属于行为型模式。观察者模式有时也叫发布订阅模式。观察者模式适用场景主要用于在关联行为之间建立一套出发机制的场景,如朋友圈动态通知,邮件通知等等。在观察者模式中有如下角色:Subject抽象主题(抽象被观察者):抽...

2019-04-11 14:39:50 225

原创 [设计模式] - 装饰者模式 要要切割闹,煎饼果子来一套

装饰者模式是指在不改变原有对象的基础上, 将功能附加到对象上,提供了比继承更有弹性的代替方案。装饰者模式适用场景用于扩展一个类的功能或给一个类添加附加职责动态的给一个对象添加功能,这些功能可以动态的撤销装饰者模式的应用场景比如说我早晨最爱吃的早点就是煎饼,夹油条或夹脆饼再来根烤肠,越想越香呀~~首先我们先创建一个抽象的BatterCake类public abstract clas...

2019-04-09 22:58:48 373

原创 [设计模式] - 适配器模式 亡羊补牢,犹未晚矣

适配器模式(adapter pattern)有时候也称包装样式或者包装(wrapper)。将一个的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类能在一起工作,做法是将类自己的接口包裹在一个已存在的类中。适配器模式适用场景已经存在的类,他的方法和需求不匹配的情况适配器模式不是软件你设计阶段考虑的设计模式,是随着软件维护,由于不同产品,不同厂家造成功能类似而接口不相同的情...

2019-04-08 23:24:19 171

原创 [设计模式] - 模板方法 把大象放冰箱,拢共分几步?

模板方法模式(Template Method)是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。模板方法的结构抽象模板(Abstract Template):定义了一个或多个抽象操作,以便让子类实现。逻辑的组成步骤在相应...

2019-04-07 22:54:14 455

原创 [设计模式] - 策略模式 多算法选择的福音

策略模式(Strategy Pattern)是指定义了算法家族、分别封装后,让他们相互之间可以互相替换,次模式让算法的变化不会影响到使用算法的用户。策略模式的结构封装类:也叫上下文,对策略进行二次封装,目的是避免高层模块对策略的直接调用。抽象策略:通常情况下为一个接口,当各个实现类中存在着重复的逻辑时,则使用抽象类来封装这部分公共的代码,此时,策略模式看上去更像是模版方法模式。具体策略:...

2019-04-06 23:58:12 402

原创 [设计模式] - 委派模式 注重结果的老板

委派模式不属于23中设计模式中的一种。他和代理模式很像,负责任务的调用和分配,可以看做是一种特殊情况下的静态代理的全权代理,但是代理注重过程,而委派注重结果。委派模式在spring中应用很多,比如DispatchServlet就用到了委派模式。现在我们来实现一个场景,老板给项目经理下达任务,项目经理就会根据情况给每个员工派发任务,等任务完成再由项目经理汇报工作给老板。首先,创建一个员工的接口...

2019-04-06 12:11:03 197

原创 [设计模式] - 代理模式 静态代理和动态代理(JDK和CGLib)实现

代理模式(Proxy Pattern)是指为其他对象提供一种代理,以控制这个对象的访问。代理模式属于结构型设计模式。使用代理模式主要有两个目的:保护目标对象增强目标对象。代理模式一般涉及到的角色有:抽象角色:声明真实对象和代理对象的共同接口,对应代理接口(Subject);真实角色:代理角色所代表的真实对象,是我们最终要引用的对象,对应委托类(RealSubject);代理角色:代...

2019-04-03 16:26:05 222

原创 [设计模式] - 原型模式 拔一根毫毛吹出猴万个

原型模式(Prototype Pattern)是 创建型模式 的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。适用场景类初始化消耗资源较多new产生的对象需要比较繁琐的过程构造函数比较复杂循环体内产生大量的对象简单克隆创建基础ConcretePrototype,它实现了Prototype的cl...

2019-04-02 15:10:48 354

原创 [设计模式] - 单例模式(Singleton Pattern)全方式解析

单例模式(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式是创建型模式。饿汉式单例饿汉式单例是在类加载时就立即初始化,并且创建单例对象。在线程还没有出现前就实例化,不存在线程安全问题。public class HungrySingleton { private static final HungrySingleton ...

2019-04-01 22:58:59 268

原创 [Docker] - 在 Centos系统中安装Docker和Gitlab

卸载老版本yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-late...

2019-04-01 15:56:50 155

原创 [设计模式] - 工厂模式(Factory Pattern)简单到复杂之路

简单工厂模式工厂对象决定创建出哪种产品,工厂类负责创建的对象比较少,客户端只需要传入工厂类的参数,对于如何创建并不需要关心。核心工厂类public class AppleFactory { IApple create(Class clazz){ try { if (clazz != null){ IApple...

2019-04-01 15:37:58 156

原创 [Vue.js] - Vue.js基础学习笔记

Vue.js基础1.第一个Vue.js程序实例与数据绑定创建实例var app = new Vue({ el:'' data:''})el指定已存在的dom挂载Vue实例v-model用于数据的绑定,对应data中的字段* 生命周期created:实例创建完成后调用,尚未挂载(初始化数据)mounted:el挂载到实例上...

2018-08-22 10:15:46 306

原创 [GIT] - 项目上传github时版本不同问题解决

github创建并关联在本地创建了一个Git仓库后,又想在GitHub创建对应仓库,并且让这两个仓库进行远程同步关联同步。在github上创建新的仓库。接着可以克隆线上新仓库,或者关联本地和线上仓库。线上关联,在本地的homework仓库下运行命令,需要替换为自己的github账号:git remote add origin git@github.com:May7th/ho...

2018-04-08 15:07:14 1162

原创 [算法]-高级排序算法-三种快速排序方法

1. 快速排序(Quick Sort)基本算法流程快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists)。 1. 从数列中挑出第一个元素,称为”基准”(pivot), 2. 重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(相同的数可以到任何一边)。在这个分区结束之后,该基准就处于...

2018-03-23 16:33:25 737

原创 [Maven]- Maven框架

1. Maven是什么?Apache Maven Project — Apache的优秀开源项目, 基于项目对象模型,可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。2. Maven能干什么?用Maven可以方便的创建项目,基于archetype可以创建多种类型的java项目。Maven仓库对jar包(artifact)进行统一管理,避免jar文件的重...

2018-03-06 09:43:43 2705

原创 [算法]-高级排序算法-归并排序

是创建在归并操作上的一种有效的排序算法,效率为 O(n\log n)}归并算法流程有两种不同的算法流程 1. 由顶到下(递归法) - 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 - 设定两个指针,最初位置分别为两个已经排序序列的起始位置 - 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置 - 重复上一步直到某一...

2018-02-09 15:33:17 213

原创 [算法]-基础排序算法

基础排序算法1. 选择排序(Selection Sort)算法流程首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 红色表示当前最小值,黄色表示已排序序列,蓝色表示当前位置。public SelectionSort(Comp...

2018-02-07 22:14:26 161

原创 [MyBatis]-resultMap结果映射集详解

resultMap结果映射集详解 resultmap是mybatis中最复杂的元素之一,它描述如何从结果集中加载对象,主要作用是定义映射规则、级联的更新、定制类型转化器。resultmap构成元素 元素 子元素 作用 constructor idArg 、arg 用于配置构造器方法 id 将结果集标记为id,以方便全局调

2018-01-28 13:18:56 58133 17

原创 Distribute Candies

题目大意:每个数字代表一种糖果。共偶数个糖果,平分给弟弟妹妹,如何让妹妹获得最多种类的糖果?Given an integer array with even length, where different numbers in this array represent different kinds of candies. Each number means one candy of the cor

2017-05-11 09:44:41 205

原创 Array Partition I

题目大意:给定一个长度为2n的数组,将它分为n个小组,每组两个元素。求出每组中最小值和,返回其中最大的和sum。Given an array of 2n integers, your task is to group these integers into n pairs of integer, say (a1, b1), (a2, b2), …, (an, bn) which makes sum

2017-05-11 09:43:32 200

空空如也

空空如也

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

TA关注的人

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