自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (23)
  • 收藏
  • 关注

原创 CodeGenerator

import com.baomidou.mybatisplus.exceptions.MybatisPlusException;import com.baomidou.mybatisplus.generator.AutoGenerator;import com.baomidou.mybatisplus.generator.config.*;import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;import com.

2021-07-19 09:47:15 204

原创 Redis实现分布式锁

实现目标多个客户端互斥或得锁避免死锁解锁需要加锁的客户端实现思路以一个redis key作为锁,多个客户端并发竞争此锁。如果key不在redis中或已经过期,执行set if not exist尝试向redis插入key为键,能标识客户端的值为value(可以随机生成,后续解锁使用)的数据,并设置过期时间防止死锁,这一操作代表此客户端获得了锁。完成业务逻辑后删除key作为释放锁;如果...

2019-06-30 16:03:30 168

原创 java23种设计模式-组合器模式

定义将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。–GoF《设计模式》UML角色Component: 组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component子部件。Leaf:* 在组合中表示叶子结点对象,叶子结点没有子结点。Composite: 定义有枝节点行为,...

2018-10-16 16:16:10 655 1

原创 java23种设计模式--享元模式

定义享元模式以共享的方式高效地支持大量的细粒度对象。是结构型创建模式。UML角色FlyWeight: 抽象享元接口ConcreteFlyWeight: 具体享元类,实现了享元类。该类对象在创建时便初始化内蕴状态。FlyWeightFactory: 享元对象创建与管理工厂类。当创建一个享元对象时,先在工厂所维护的集合中查找是否存在可以共享的对象,存在则直接返回,不存在则创建并加入...

2018-10-16 15:17:51 389

原创 java23种设计模式--桥接模式

定义1.将抽象部分与实现部分分离,使它们都可以独立的变化。2.将抽象和实现放在两个不同的类层次中,使它们可以独立地变化。——《Head First 设计模式》UML角色抽象化角色: 抽象了类的基本功能。聚合一个实现化角色完成功能。实现化角色接口: 一个类或者接口。定义实现化接口的基本功能。具体实现化角色: 实现了实现化角色定义的功能,使得具体实现能脱离抽象部分而独立变化。...

2018-10-14 17:02:13 184

原创 java23种设计模式-代理模式

定义为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。UML角色Target: 被代理类的接口。TargetImpl: 被代理类的实现。TargetProxy: Target实例的代理类,控制客户端访问Target对象。示例静态代理的实现/** * desc :...

2018-10-07 20:29:17 158

原创 java23种设计模式-门面(外观)模式

定义外观模式为子系统的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。UML角色子系统(SubSystem): 表示一个系统的子系统或者模块门面(Facade): 客户端通过门面间接控制子系统。门面屏蔽了客户端无需知道的细节,简化了调用过程。示例我们使用的电脑的用户桌面便是一个很好的例子。桌面充当门面角色,用户使用的各应用可以看作子...

2018-10-06 16:47:00 191

原创 java23种设计模式-装饰者模式

定义装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。UML角色Component: 抽象组件接口ConcreteComponent: 具体组件实现类Decorator: 由abstract申明的抽象装饰者类,实现了Component接口ConcreteDecorator: 抽象装饰者的具体实现...

2018-10-05 16:06:51 151

原创 java23种设计模式-适配器模式

定义适配器模式是把一个类的接口转换成客户所期望的另一种接口,从而使原本不匹配而无法在一起工作的两个类可以一起工作。UML角色Target: 符合客户端期望的接口。Adaptee: 需要被适配的类。此类包含了客户端想要实现的大部分功能,但并不能完成客户端所想完成的所有任务,同时又不能被直接修改,因此需要被适配。Adapter: 适配器类。继承了Adaptee类的方法,如funct...

2018-10-02 12:32:35 146

原创 java23种设计模式-解释器模式

定义给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子UML角色抽象表达式(Expression):声明一个所有的具体表达式角色都需要实现的抽象接口。该接口提供一个interpret()方法。终结符表达式(Terminal Expression) :实现了抽象表达式接口,有一个interpret()方法;文法中的每一个终结符都有一个具体...

2018-09-30 19:04:08 201

原创 java23种设计模式-中介者模式

定义用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。角色Colleague:是一个抽象类或者接口,提供和其他Colleague通讯的方法notify(String name)。参数name是其他Colleague的名字。ColleagueA,ColleagueB: 都是Colleague的实现类。Med...

2018-09-24 14:16:44 177

原创 java23种设计模式—命令模式

java23种设计模式—命令模式在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern)。定义将一个请求封装成一个对象,从而让你使用...

2018-09-19 23:09:30 115

原创 java23种设计模式-访问者模式

定义 封装一些作用于某种数据结构中各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。UML角色Visitor : 抽象访问者接口Element : 被访问元素接口ElementA,ElementB : 具体元素,实现了Element接口VisitorA,VisitorB : 具体访问者,实现了Visitor接口ObjectSt...

2018-09-15 15:37:48 149

原创 java实现基于数组的栈和队列

栈和队列是非常基础但又十分重要十分常用的数据结构。栈的先入后出和队列的先入先入特性在软件工程中的应用非常广泛。以下为java版基于数组的简单实现。/** * desc : 栈的数组实现 * Created by tiantian on 2018/9/1 */public class Stack { private Object[] value; private i...

2018-09-03 00:10:03 1035

原创 java实现双向链表

链表可以抽象为若干相连起来的节点,其迭代只能顺着节点链依次访问。节点的组成简单的分为三个属性:节点的存储的值、前驱节点、后继节点。简单的单向链表的实现中有个头节点(head),迭代都是从head元素开始。链表head节点的前驱节点和链表尾部元素的后继节点都为null。向链表添加元素时,新加入的元素标记为head节点,然后改变之前的head元素的前驱节点为当前head节点即可。当删除链表某个节点...

2018-09-03 00:08:31 860 1

原创 java23种设计模式-状态模式

定义 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。状态模式是一种对象行为型模式。角色状态模式角色分类如下抽象状态接口。定义状态的抽象行为。使用抽象类或者接口(interface)实现。具体状态接口。实现了抽象状态。环境类。聚合了一个状态引用,环境类可以根据环境的变化,动态改变状态引用所指向的具体状态对象。环境对象改变内部状态的特性,使该模...

2018-09-01 18:26:16 151

原创 基于分治的选择算法

原理分治思想的强大又一次体现出来了。这种选择算法可以筛选出大小为n的序列中第i(i <= n)大的元素。特别的,也可以求中位数。find方法实现原理如同快速排序的划分阶段,唯一的区别是该方法为了找到目标元素递归调用自身。p>=r为基本情况。find方法遍历元素的过程中,array数组一直保持这样的三种状态直到遍历结束: [ array[j] < pivot的元素| arra...

2018-08-28 23:20:59 602

原创 java23种设计模式-备忘录模式

定义 备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。角色发起人 Originator 负责创建备忘录对象或者从特定备忘录对象获取数据,以恢复到之前的某个状态。 备忘...

2018-08-26 18:36:11 155

原创 java23种设计模式-责任链模式

定义 属于行为型模式的一种,一个请求由多个对象来处理,这些对象形成一条链,请求沿着该链传递,直到该链上的某个对象处理它为止。角色抽象处理者 定义了处理方法,并且可以设置和返回下一个处理者。为接口或抽象类具体处理者 抽象处理者的实现实现/** * desc : 抽象处理者 * Created by tiantian on 2018/8/19 */p...

2018-08-19 16:25:06 151

原创 计数排序

实现思路计数排序的思想是这样的:使用a,b,c三个数组,a存储要排序的数,c作为临时存储用,b存储最后的排序结果。很显然,这种排序方式不同于基于比较的排序算法,也非原址的。笔者的实现使用了四个for循环,虽然循环次数较多,但总的来说算法时间复杂度是O(N),相比基于比较的排序算法时间复杂度的下界O(N(logN))要好。第一个循环将c数组内容全部置零,目的是为了给第二个循环中计数创造初始条件。...

2018-08-12 22:30:53 121

原创 java23种设计模式-命令模式

在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern)。定义 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数...

2018-08-12 22:29:34 130

原创 java23种设计模式-迭代器模式

定义 提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。角色抽象迭代器 定义了迭代器内部该有的方法具体迭代器 抽象迭代器的实现,has a 具体可迭代对象抽象容器 提供创建迭代器的方法以及一组集合对象的操作方法具体容器 实现了抽象容器实现/** * desc : 抽象迭代器 * Created by tiantian on...

2018-08-12 22:28:11 122

原创 快速排序的两种实现

快速排序是一种非常高效的基于比较的排序算法,其能在O(NlogN)的时间复杂度内完成排序。当然,这是期望运行时间,实际上也可能是O(N^2)。这取决与算法划分的是否平衡。快速排序算法的实现过程依赖于分治思想,按照分解、解决、合并的一般步骤看的话,快排实际上只用到了分解和解决两个步骤,因为快排是原址的,所以当合并的时候,排序的元素已经是有序状态了。版本一/** * desc : 快速排...

2018-08-05 23:31:32 311

原创 优先队列的实现

该优先队列的实现依赖于最大堆。关于最大堆,之前的博文:堆排序有讲。heapMaximum返回堆中键最大的元素,即array[0]。heapExtractMax方法删除并返回最大堆中最大键元素。heapIncreaseKey的作用是将元素i的关键字值增加到keymaxHeapInsert方法是将元素插入到最大堆中/** * desc : 优先队列 * Created by ti...

2018-08-05 23:30:03 1527

原创 java23种设计模式-模版方法模式

定义定义一个算法中的操作框架,而将一些步骤延迟到子类中。使得子类可以不改变算法结构即可重定义该算法的某些特定步骤。角色该设计模式的角色划分较为简单抽象模版类具体模版类抽象模版类又包含了这样几个方法:模版方法,具体方法,抽象方法,勾子方法。模版方法决定了算法的实现步骤,该方法中调用了具体方法,待实现的抽象方法,勾子方法等。是算法执行的一个模版。具体方法...

2018-07-29 15:47:39 166

原创 堆排序(java实现)

说到堆排序不得不说一下堆这种数据结构。这里的堆指二叉堆,本质是一个数组。可看作一个近似的完全二叉树(完全二叉树是所有叶子节点深度相同,且所有内部节点度为二的二叉树)。二叉堆有两种表现形式,最大堆和最小堆。最大堆中最大元素在二叉树的根结点,最小堆正好相反。我们的目的就是利用最大堆的特点,完成排序。先上一段调试好的代码package algorithms.portion6.heap;/*...

2018-07-26 23:30:44 107

原创 java23种设计模式—观察者模式

  定义观察者模式定义了对象之间的一对多依赖,当一个对象改变状态时,它大所有依赖者都会收到通知并自动更新。  角色观察者模式主要包含的角色为抽象观察者,抽象主题,以及它们各自具体的实现。 推模型推模型是一种主题对象状态发生变化时主动推送信息给所有观察者的模型,无论是否需要,被注册的观察者只能被动地接受改变。 抽象主题 /** * Create...

2018-07-22 19:51:44 154

原创 最大子数组问题的两种解法

所谓最大子数组就是连续的若干数组元素,如果其和是最大的,那么这个子数组就称为该数组的最大子数组。最大子数组是很多问题的抽象,比如购买股票。如果把相邻两天的股价之差作为数组元素,那么求在连续的某个时间段内买入股票的最佳时间和卖出股票的最佳时间就可以抽象为计算最大子数组的问题。下面分别介绍两种算法求解最大子数组问题,算法思想均来自算法导论这本程序员的圣经。分治法分治法实现思路比较简单。如果把一...

2018-07-20 22:34:29 7924 1

原创 java两种实用的排序(插入排序、归并排序)

插入排序插入排序是多种较为实用的排序方法之一。很多更高效的排序,当输入规模降低到一定程度就会切换到插入排序,因为在局部有序并且规模较小的情况下,插入排序非常高效。以下为代码实现。/** * Created by tiantian on 2018/7/9. */public class InsertSort { public static void sort(Int...

2018-07-15 23:54:56 2895 1

原创 java23种设计模式—策略模式

策略模式是一种行为型设计模式,维基百科解释如下行为型设计模式:行为型设计模式是设计模式都一种,用来识别对象之间的常用交流模式并加以实现。如此可在进行这些交流活动时增强弹性。由此可以看出,行为型设计模式关注的是对象之间的通讯行为。定义策略模式:定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法都变化独立于使用算法都客户。角色分类 1.抽象策略接口 2.具体策略类 3.环境类UML图:常...

2018-07-14 20:42:13 3039

原创 java23种设计模式—原型模式

原型模式也属于创建型模式。简言之,就是如何复制一个对象的设计模式。创建对象的方式有很多种,对java而言,可以在JVM堆中new一个,也可以通过反射、序列化,又或者相应的对象工厂也可以代劳。我们关注的点是,创建对象的开销。当创建一个对象的消耗比较大的时候,使用原型模式可以很高效的创建对象。在java中顶层对象Object提供了clone()方法,只要我们正确的实现Cloneable接口的clone...

2018-07-07 18:42:56 2836

原创 java23种设计模式—单例模式的几种实现

   饿汉式该方式创建的单例对象天生具有线程安全特性。原因很简单,JVM类加载器初次加载类的时候就创建了对象。实现起来也比较简单,只有一个地方需要注意,就是构造器要设计为private以防止类外部创建对象。/** * Created by tiantian on 2018/6/29. */public class HungrySingleTon { private s...

2018-07-01 01:02:52 2879

原创 java23种设计模式—建造者模式

1. 定义:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的对象。简单点描述就是将一个复杂对象的构建拆分成若干步骤,每个构建步骤赋予复杂对象不同的属性,如此以来,通过同样的构建过程可以创建不同的对象。对象的构建过程由指导者director指导。客户端通过指导者创建需要的对象。2. 该模式包含的角色及其功能:- 产品:需要被构造的对象- 建造者:具有一系列构建...

2018-06-20 10:48:30 2994

原创 java23种设计模式—工厂模式

设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。工厂模式简而言之就是用来创建对象的,属于...

2018-06-10 22:31:59 3135

原创 git和maven学习总结

git相关1.git有个很重要的概念--暂存区。新的内容或修改后的内容,首先要通过git add添加到暂存区,然后再git commit到本地仓库。如果修改后操作了git add,然后又做了修改,接着git commit提交的话,最后修改的内容将不会提交到本地仓库。2.git的提交时基于修改,而非文件。换句话说,每次提交的是修改的内容,而不是整个文件。3.操作git commit后可操作git p...

2018-03-30 23:26:24 4786

原创 windos 下MySQL 安装和启动步骤

1.进入bin目录,然后输入 mysqld.exe -install  程序显示:Service successfully installed.2.然后继续在bin目录下输入完成初始化:mysqld --initialize-insercure.3.最后输入 net start mysql   程序显示服务已经启动

2017-07-15 22:47:04 1379

原创 java工厂模式编写小游戏

本文带你学习java工厂设计模式的简单设计方法。Java工厂设计模式是一个很实用的软件设计方法,为了增加学习兴趣,我们利用该模式编写一个简单的游戏框架,模拟抛硬币和投骰子的功能。一听说框架,可能很多初学者会被吓到,放心,本框架只有60+行代码,没有任何难度,绝逼不会难到你!       下面开始教程:       首先创建两个接口,代码如下:import java.util.*

2017-04-28 15:30:42 1491

原创 java多态性特点总结

1.多态通过分离做什么和怎么做,从另一个角度将接口和实现分离开来。2.多态也叫作动态绑定、后期绑定或运行时绑定。3.将一个方法调用同一个方法主体关联起来被称为绑定。什么叫前期(后期)绑定?C用什么绑定?4.java中除了static方法和final方法之外,其他方法都是后期绑定,我们通常无需判定什么时候进行 后期绑定,因为它会自动发生。5.将某个方法定义为final,除了防止被

2017-04-24 21:30:06 2032

原创 java多态小实例

/*多态的小例子:Bicycle、Unicycle、Trcycle均继承自Cycle。三个子类都重写了ride()方法。测试类CycleTest中goRiding()方法的参数类型为超类,这样既可以接受自己的对象也可以接受子类对象。根据具体传入的参数类型调用正确的ride()方法。注意:导入的包是自己编写实现的,如果需要此程序做练习的朋友,可把代码中的所有print

2017-04-24 12:45:55 1293

原创 java包括继承的类的初始化全过程

/*新建两个类,父类Father和子类Son,为了观察实验效果,各自创建一个printInit()方法,此方法打印信息,并可以返回我们需要的一个初始值。1.首先访问InitOrder.main()(static方法);2.然后加载Son类,发现其继承自Fatherl类,继续加载Father类;3.初始化Father类的static成员,此时Father类的普通成员置为默认值(i

2017-04-23 21:29:52 1423 1

netty的视频90集

netty的视频,共90多集,每集40+分钟,讲解细致入微。本人已全部看完,初学或进阶都很不错。

2019-03-09

使用Qt Web引擎嵌入H5应用框架源码,可以很方便的将web应用作为桌面应用。

使用Qt Web引擎嵌入H5应用框架源码。可以很方便的将web应用作为桌面应用。

2019-03-09

人工智能书籍(淘宝购买)多本打包

人工智能书籍(淘宝购买)多本打包,人工智能书籍(淘宝购买)多本打包,人工智能书籍(淘宝购买)多本打包,人工智能书籍(淘宝购买)多本打包,人工智能书籍(淘宝购买)多本打包。

2017-09-17

Thinking in java第五版 练习题答案全

Thinking in java第五版 练习题答案全

2017-04-23

在淘宝买的最新的黑马J2EE 32期视频

在淘宝买的最新的黑马J2EE 32期视频,资源真实!骗人就让我不得好死!

2017-04-10

javascript编程精解

javascript编程精解,难得一见的好书!前端学习的圣经!

2017-04-10

优秀的程序员都有的习惯

知道每个优秀的程序员都有哪些好的习惯吗?读完你将不再平凡!这是一本值得每个程序开发者深思的好书!

2017-03-28

Junit4最新测试框架

Junit4最新测试框架

2017-03-28

让你的软件飞起来

让你的软件飞起来

2017-03-28

stm8从入门到精通

stm8从入门到精通

2017-03-27

C语言模块化编程

C语言模块化编程(没有比这更好的了)

2017-03-27

stm32学习方法和资料

stm32学习方法和资料

2017-03-27

STM32零死角玩转

STM32零死角玩转

2017-03-27

Visual Studio2015

Visual Studio2015

2017-03-27

QT5开发PDF+源码

QT5开发PDF+源码

2017-03-27

MYSQL官方参考手册

MYSQL官方参考手册

2017-03-27

Tomcat最新版本

Tomcat最新版本

2017-03-27

sqlyog破解版

sqlyog 最新破解版本

2017-03-27

Spring技术内幕

Spring技术内幕

2017-03-27

互联网企业面试宝典+企业介绍

互联网企业面试宝典+企业介绍

2017-03-27

javaScript

javaScript

2017-02-20

空空如也

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

TA关注的人

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