自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (1)
  • 收藏
  • 关注

原创 每日算法-合并K个升序链表

LeetCode地址:https://leetcode-cn.com/problems/merge-k-sorted-lists/1、解题思路利用小顶堆实现,Java中利用PriorityQueue进行实现,下面是实现的图解2、实现代码import java.util.Comparator;import java.util.PriorityQueue;//leetcode原题地址:class Solution{ public class ListNode { int val

2021-01-23 11:00:07 135 2

原创 设计模式-单例模式

设计模式(Design pattern) java开发者必修的一门课程,而设计模式总的来说有很多种,但是当你融汇贯通之后,并不需要去考虑具体的用哪种模式,因为设计会把创建型、行为型和结构型这些模式融合在一起。首先讲一下单例模式,单例模式:根据名字就能想到只有一个实例,自己负责创建自己的对象,而这个类提供了一种访问其唯一对象的方式,不用实例化,可以直接访问,拿过来用。单例模...

2020-03-29 20:27:06 272

原创 类加载过程

下图为Loading过程

2021-03-23 14:47:23 67

原创 算法基础-归并排序

一、归并排序(merge sort)定义采用分治法去进行排序的一种方式。二、时间复杂度O(n log n) 此时间复杂度可根据上一篇文章三、利用递归方式实现 //归并排序 分而治之 public static void mergeSort(int[] arr){ if (arr == null || arr.length < 2) { return; } process(arr, 0, arr.length - 1); } public

2020-09-29 17:51:28 113

原创 算法基础-递归

一、何为递归在运行的过程中调用自己。即将一个大的问题拆分,再拆分,从而得到最后想要的结果。二、递归条件1. 子问题须与原始问题为同样的事,且更为简单;2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。三、实际问题及代码编写问题:求数组arr[L..R]中的最大值,怎么用递归方法实现。解决思路:1)将[L..R]范围分成左右两半。左:[L..Mid] 右[Mid+1..R]2)左部分求最大值,右部分求最大值3) [L..R]范围上的最大值,是max{左部分最大.

2020-09-28 11:58:36 76

原创 算法基础-栈和队列(怎么利用数组和链表实现)

一、逻辑概念栈:数据先进后出,犹如弹匣队列:数据先进先出,好似排队二、栈和队列的实现(自己实现)1、双向链表实现public static class Node<T> { public T value; public Node<T> last; public Node<T> next; public Node(T data) { value = data; } } //栈 队列 //双向链表的添加及弹出操作 p

2020-09-27 16:40:37 152

原创 算法基础-链表

一、链表主要分为单向链表和双向链表,下面用代码实现一下://单向链表public class Node { public int value; public Node next; public Node(int data) { value = data; }}//双向链表public class DoubleNode { public int value; public DoubleNode last; public

2020-09-21 21:25:32 73

原创 算法基础-认识异或运算

一、异或运算,同或运算 异或运算:相同为0,不同为1(无相位相加) 同或运算:相同以1,不同为0二、异或运算的一些性质 1)0^N == N N^N == 0 2)异或运算满足交换律和结合率三、实际问题(通过实际问题来认识异或运算)问题一、如何不用额外变量交换两个数(主要采用第一个性质) //如何不用额外变量交换两个数 public static void exchangeNum(){ int a = 3...

2020-09-18 12:45:09 623

原创 分布式事务-2阶段提交

分布式事务何为分布式事务?随着互联网的发展与技术的更新,单机服务器已经不能满足业务的需求,所以就诞生了分布式的概念,既然有分布式的诞生,那么以前的事务的参与者,支持者也要考虑在不同节点上如何完整的运行。(分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。)2阶段提交以最常见的订单、支付系统来举例说明,首先先说明两个概念:1、TM(Transaction Manager)事务管理器,负责协调和管理事务。2、RM(Resource Mana

2020-08-27 17:46:46 178

原创 事务ACID及事务隔离级别

事务特性及隔离什么叫做事务(Transaction)事务的四个特性(ACID)原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)由事务引发的问题脏读:不可重复读:幻读(虚读):四种隔离级别设置什么叫做事务(Transaction)访问并可能更新数据库中各种数据项的一个程序执行单元(unit),事务是恢复和并发控制的基本单位。事务的四个特性(ACID)原子性(Atomicity)一个事务有多个操作,原子性保证要么都完成,要么都不完成

2020-08-07 10:45:48 135

原创 设计模式-状态模式(state)

定义:类的行为是基于它的状态改变的。个人理解:相同的动作在不同的状态下有不同的表现,例如每个人都会哭、笑,对应的状态可能为开心,伤心,所以就有开心的笑,伤心的笑不同状态不同动作。UML图解:优点:封装转换状态,将某个状态有关的行为放到一个类中,状态改变行为也随之改变。缺点:结构比较复杂,系统类和对象的数量会增多。代码://状态抽象类public abstract c...

2020-04-08 09:40:46 116

原创 设计模式-模板方法模式

定义:一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。个人理解:将一些方法放抽象类里,然后子类将方法重写,最后调用的时候用抽象类的方法(看代码就懂了)。UML图解:优点:将不变的封装起来,可变的部分可以拓展(子类)。缺点:不同的类就需要一个子类来实现,数量大了,子类也多了,比较复杂。代码:public c...

2020-04-07 17:33:06 62

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

定义:是用于创建重复的对象,同时又能保证性能。个人理解:Java的复制clone方法,但是要区分好浅克隆和深克隆。UML图解:优点:新建一个一模一样的对象直接用这个方法即可。缺点:必须要实现Cloneable接口以及注意深克隆。代码:public class Test { public static void main(String[] args) throw...

2020-04-07 16:01:07 74

原创 设计模式-命令模式

定义:是一种数据驱动的设计模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。个人理解:最常用对这个模式的理解就是撤销,比如csdn写了一段话不小心删除了,按Ctrl+Z就可以撤销,还原操作。UML图解:优点:新的命令容易添加缺点:(选自菜鸟编程)使用命令模式可能会导致某些系统有过多的具体命令类。...

2020-04-07 15:21:29 70

原创 设计模式-桥接模式

定义:把抽象化和实现化解耦,二者都可以独立变化发展,需要一个作为桥接的接口,使得实体类的功能独立于接口实现类。个人理解:分离抽象与具体实现,让他们可以独自发展。下面举例使用一个礼物,礼物可以抽象为多种,而实现类也可以自己独立拓展。UML图解:优点:抽象类和实现类分离,可以独立发展,有很好的的扩展性。缺点:(选自菜鸟教程)桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系...

2020-04-07 14:36:34 82

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

定义:是作为两个不兼容的接口之间的桥梁。个人理解:不同于桥接模式,这个模式我理解为像买一个mac本吧,可能买的欧版的它的充电器接口是圆头110伏,但是国内通用220伏,这个时候就需要一个转换器,这个转换器就是一个适配器。UML图解(里面还有一些常用数据库的适配器图解):优点:主要是让两个没有关联的类一起用。缺点:Java里面继承只能继承一个类,最多只能一个适配者类,且目标类还得...

2020-04-07 12:27:42 62

原创 设计模式-构建器(建造者)模式

定义:使用多个简单的对象构建成一个复杂的对象。个人理解:讲一个整体的各个部分组合到一起,例如一个人有年龄、身高等属性,统计信息时可能会用到这个人某几个属性,那么需要什么就把什么组合到一起。UML图解:优点:建造者建造自己的东西,也可扩展。缺点:当内部比较复杂的时候,就会对应的建造很多类。代码:public class Person { int id; ...

2020-04-07 11:55:14 196

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

定义:使用一个访问者类,元素的执行算法可以随着访问者改变而改变。个人理解:企业购买电脑配件和个人购买配件,零件供应商会根据购买的人群分配不同的优惠,而购买的人群就是访问者。UML图解:优点:使用灵活,可扩展性强,符合单一职责原则。缺点:里面具体元素对访问者公布了细节,违反迪米特原则。代码:public class Computer { ComputerPart...

2020-04-07 10:48:21 74

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

定义:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。个人理解:Java中的iterator,就是一个很好的迭代器实现的例子,下面代码我也是模拟一下Java中ArrayList和LinkedList的实现。UML图解:优点:它支持以不同的方式遍历一个聚合对象(底层是集合和链表)、简化了聚合类、增加新的聚合类和迭代器类方便。缺点:新的聚合类增加,迭代器...

2020-04-07 09:42:29 64

原创 设计模式-代理模式

定义:一个类代表另一个类的功能,提供一种代理以控制对这个对象的访问。(感觉听这个定义还是挺迷糊的)个人理解:用另外一个类代替这个类去做,然后加上自己的一些功能,比如加上日志。比如我在学习的时候老师举的例子在坦克移动的时候计算出移动的时间。UML图解:优点:职责清晰、高扩展性缺点:有些代理模式实现非常复杂代码:(我在学习这个模式的时候老师讲了多个版本)/** * 问题...

2020-04-06 18:44:59 108

原创 设计模式-享元模式

定义:主要用于减少创建对象的数量,以减少内存占用和提高性能。个人理解:各种池,常量池(String为代表),线程池,数据库连接池等等。UML图解:优点:大大减少对象的创建,降低系统的内存,效率及空间利用率大大提高。缺点:会增加出来很多池,提高了系统的复杂性。代码:class Bullet{ public UUID id = UUID.randomUUID();...

2020-04-06 15:52:42 67

原创 设计模式-组合模式

定义:组合模式依据树形结构来组合对象,用来表示部分以及整体层次。个人理解:书籍的目录啊,树状的结构都是用于此模式。多采用递归算法。UML图解:优点:节点增加简单自由。缺点:在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。代码:abstract class Node { abstract public void p();}c...

2020-04-06 14:40:38 69

原创 设计模式-观察者模式

定义:当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。个人理解:这个模式应用最多的应该就是监听器了(各种event,listener),我接下来代码举例,用婴儿哭,然后需要喂等举例。UML图解:优点:观察者和被观察者是抽象耦合。缺点:注意循环依赖,如果循环调用,可能系统会炸掉。代码:/...

2020-04-06 13:38:45 83

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

定义:为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦(Servlet Filter)。个人理解:我觉得最容易能够联想到的就是论坛发文章,对于一些特殊敏感词和敏感字符进行一些处理,然后在Java中Servlet Filter是对这个模式最好的诠释。UML图解:优点:降低耦合度、对象不需要知道链是怎么的结构、可以处理多个对象(不同的对象可能需要的...

2020-04-04 21:56:28 75

原创 设计模式-装饰器模式

定义:向一个现有的对象添加新的功能,同时又不改变其结构,动态地给一个对象添加一些额外的职责。个人理解:比如说奶茶吧,它的原料就是奶和茶的融合体(被装饰对象),现在有一个装饰器(可以添加珍珠、布丁、红豆),给被装饰对象装饰一下(添加不同的食材),就变成了新的对象(珍珠奶茶···),但是它的底层奶和茶的底层没有被改变。UML图解:优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模...

2020-04-02 13:06:41 67

原创 设计模式-调停者模式

调停者模式定义:用于模块间解耦,通过避免对象互相显式的指向对方从而降低耦合。个人理解:现在的管理模式,A小组B小组两个小组都有一个经理管理,当外面的需求来了的时候需要AB两个小组配合完成,经理会把需求分发到A小组,A小组完成后提交到经理,经理再把需求和A完成的(B可能需要)下发到B小组,等B小组完成再提交给经理,经理再提供给需求者。UML图解:优点:松散耦合、可以集中管理、对象...

2020-04-01 14:40:53 140

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

外观模式定义:为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。它是为子系统中的一组接口所提供的一个一致的界面。个人理解:门面模式嘛,假如你去一家4S店订购一台法拉利,你只需要告诉给4S店具体的需求(轮毂、内饰、中控等等),你不需要去每个工厂去取配件,最后4S店会给你一台你需要的车即可(有点类似于调停者模式了)。UML图解:优点:...

2020-04-01 11:11:36 155

原创 设计模式-工厂模式

工厂模式:在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。目标:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。分类:1、简单工厂2、工厂方法3、抽象工厂一、简单工厂个人理解:多个类(类似于猫、狗),继承一个抽象类或者实现一个接口(动物),他们有相同的方法(比如叫),最后只需要一个工厂...

2020-03-31 18:03:48 87

原创 设计模式-策略模式

策略模式(定义一系列的算法,把每一个算法封装起来,并且可相互替换使用)一、对策略模式的理解策略一词可理解为古代行军打仗,面对不同的敌人采用不同的方法,例如针对弓箭手可以用盾兵应对。在架构设计之中策略可以为每年会有618、双11、38女神节等等活动,针对同一件商品都会采用不同的价格计算,而采用不同的优惠方式。(采用本人实际开发用到的场景进行举例,只是举例,具体开发里用到的设计方式后面还会...

2020-03-30 16:34:11 101

原创 扫描二维码,跳到不同终端的下载地址

刚来实习,就被安排做一个二维码的东西,自己查了查资料,也用了一下Fiddler软件进行了一下抓取数据,根据他的不同标头可以判断不同终端,例如:iphone、iPad、Android、Android pad等等。        而实现这个功能可以用两种方式来实现:一种是用JS的方式,还有一种不写在js中,但是两者调用的函数都是一样的,只是实现方式不同。但是有一点要注意,就是通过微信扫描的用JS关

2016-11-15 14:02:58 606

原创 很喜欢CSDN这个社区,所以来安家了

本博客只写一些学习笔记。

2016-09-25 23:34:46 190

mybatis-3源码

mybatis-3 源码,学习源码的小伙伴可以下载查看,-----------------------------------------

2020-09-22

空空如也

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

TA关注的人

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