- 博客(39)
- 资源 (2)
- 收藏
- 关注
原创 AsciiDoc 学习
*AsciiDoc基本语法*_Italy_[underline]#underLine#Tip^up^38^。^CTip~dwon~H~2~O= Level1== Level2=== Level3. sortedList1.. sortedList2... 3.... 4--换行---分割线* set1** set2*** set3[source]Code------Code2----http://www.baidu.com.
2020-05-26 15:28:41
656
原创 设计模式 - 模板模式
目录一、官方话二、自己概括三、实现四、代码五、注意事项一、官方话一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。优点:1、封装不变部分,扩展可变部分。 2、提取公共代码,便于维护。 3、行为由父类控制,子类实现。缺点:每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。使...
2019-07-02 15:27:11
315
原创 设计模式 - 策略模式
目录一、官方话二、自己概括三、实现四、代码五、注意一、官方话我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。优点:1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。缺点:1、策略类会增多。 2、所...
2019-07-01 15:31:38
242
原创 设计模式 - 观察者模式
目录一、官方话二、自己概括三、实现四、代码五、注意一、官方话当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。优点:1、观察者和被观察者是抽象耦合的。 2、建立一套触发机制。缺点:1、如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都...
2019-07-01 14:33:14
234
原创 设计模式 - 责任链模式
目录一、官方话二、自己概括三、实现四、代码一、官方话避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。优点:1、降低耦合度。它将请求的发送者和接收者解耦。 2、简化...
2019-07-01 11:27:47
184
原创 设计模式 - 代理模式
目录一、官方话二、自己概括三、实现四、代码一、官方话我们创建具有现有对象的对象,以便向外界提供功能接口。为其他对象提供一种代理以控制对这个对象的访问。优点:1、职责清晰。 2、高扩展性。 3、智能化。缺点:1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。 2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂...
2019-07-01 10:19:35
257
原创 设计模式 - 装饰器模式
目录一、官方话二、自己概括三、实现四、代码一、官方话这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。缺点:多层装饰比较复杂。二、自己概括新写一个接口或者抽象类去囊括原有的接口并且新增功能,然...
2019-06-28 15:52:57
135
原创 设计模式 - 适配器模式
目录一、官方话二、自己概括三、实现四、代码五、注意一、官方话这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。优点:1、可以让任何两个没有关联的类一起运行。 2、提高了类的复用。 3、增加了类的透明度。 4、灵活性好。缺点:1、过多...
2019-06-28 13:25:11
245
原创 设计模式 - 原型模式
目录一、官方话二、自己概括三、实现四、代码五、使用场景一、官方话这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。优点:1、性能提高。 2、逃避构造函数的约束。缺点...
2019-06-28 11:19:30
161
原创 设计模式 - 建造者模式
目录一、官方话二、自己概括三、实现四、代码一、官方话建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象,一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。优点:1、建造者独立,易扩展。 2、便于控制细节风险。缺点:1、产品必须有共同点,范围有限制。 2、如内部变化复杂,会有很多的建...
2019-06-28 10:10:48
188
原创 设计模式 - 单例模式
目录一、官方话二、自己概括三、代码四、几种单例模式的实现五、补充一、官方话这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。优点:1、在内存...
2019-06-26 15:53:57
210
原创 设计模式 - 抽象工厂模式
目录一、官方话二、自己概括三、实现四、代码五、注意一、官方话提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象优点:当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。缺点:产品族扩展非常困难,...
2019-06-26 14:54:40
249
原创 设计模式 - 工厂模式
目录一、官方话二、自己概括三、实现四、代码五、注意一、官方话定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行优点:1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 3、屏蔽产品的具体实现,调用者只关心产品的接口。缺点:每次增加一个产品时,都需要增加...
2019-06-26 14:16:49
161
原创 JAVA基础面试题 - 2019.6.20
目录一、ArrayList排序二、MySQL去重三、MySQL事务隔离级别四、mysql引擎五、HashMap什么时候变成红黑树六、关于GC七、一道算法题一、ArrayList排序1.使用Collections.sort()传入ArrayList,会采用默认的方式进行排序(字典序)2.使用Collections.sort()传入ArrayList和...
2019-06-21 14:04:40
406
1
原创 记一次配置Euruka开启密码无效的错误
一开始,我是在配置文件中添加如下配置:security: basic: enabled: true user: name: admin password: admin然后添加了配置类:@Configuration@EnableWebSecuritypublic class WebSecurityConfig extends W...
2019-06-18 15:50:17
603
原创 常见面试题
目录1.HashMap的实现原理,hash冲突如何解决2.ArrayList与LinkedList的区别3.知道哪些索引4.什么情况下索引失效5.redis有哪些数据类型6.线程的生命周期1.HashMap的实现原理,hash冲突如何解决HashMap本质是一个数组,数组的每一项是一个链表,而链表的每一项就是一个entry。通过hash算法对key进行计算,然...
2019-06-14 15:51:34
136
原创 看JVM视频后的笔记-03 (GC)
目录一、GC算法二、分代和分区三、TLAB四、对象创建的过程一、GC算法1.引用计数法: 比较古老而经典的算法,核心就是 在对象被其他所引用的时候计数器+1,当引用失效的时候-1。 缺陷:无法处理循环引用的情况,每次执行加减操作浪费系统性能。2.标记清楚法: 分别标记和清楚两个阶段进行处理内存中的对象 缺陷:GC后的空间不是...
2019-06-11 16:57:27
249
原创 看JVM视频后的笔记-02 (JVM参数)
-XX开头的是系统级别的配置,基本上都是打印log相关的,或者配置jvm使用什么gc 非-XX开头的基本上都是对应用层面上的配置 + 表示启用,- 表示禁用 -XX:+PrintGC 遇到gc就会打印日志 -XX:+UseSerialGC 配置串行回收器 -XX:+PrintGCDetails 查看详细信息,包括各个区情况 -Xms: 设置初始堆大小 -Xmx: 设置最大堆大小 ...
2019-06-11 16:34:10
161
原创 看JVM视频后的笔记-01
目录一:堆二:栈三:方法区今天看的主要是关于内存划分的东西,视频讲解的很简单,所以很好理解,没有像书面资料里那么细致。java虚拟机主要组成部分有:一:堆堆空间分为新生代和老年代新生代: Eden区,新创建的对象都在这个区域,经过一次gc后进入s0或s1区域 S0和s1区(或者称为to和from区),两块大小相等且可以互换的区域 老年代:...
2019-06-10 17:21:16
272
原创 TreeMap 底层原理
目录一:TreeMap的基本概念:二:源码解析一:TreeMap的基本概念:TreeMap集合是基于红黑树(Red-Black tree)的 NavigableMap实现。该集合最重要的特点就是可排序,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。这句话是什么意思呢?就是说TreeMap可以对添加进来的元素进行...
2019-06-04 19:57:39
1584
原创 HashSet底层原理
目录一:概述二:HashSet的实现一:概述HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。二:HashSet的实现对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet的实现比较简单,相关...
2019-06-03 20:22:11
268
原创 Java虚拟机(五)- 内存溢出和内存泄露、并行和并发、Minor GC和Full GC、Client模式和Server模式的区别
目录一、内存溢出和内存泄露的区别二、并行和并发的区别三、Minor GC和Full GC的区别四、Client模式和Server模式的区别一、内存溢出和内存泄露的区别1、内存溢出内存溢出指的是程序在申请内存的时候,没有足够大的空间可以分配了。2、内存泄露内存泄露指的是程序在申请内存之后,没有办法释放掉已经申请到内存,它始终占用着内存,即被分配的对象可达但无用。内...
2019-05-30 11:07:31
252
原创 Java虚拟机(四)- GC机制
目录一、哪些内存需要回收?二、4种引用状态三、方法区回收四、垃圾回收算法五、分代收集六、垃圾收集器七、总结八、GC日子九、触发GC的时机一、哪些内存需要回收?哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无非就是那些不可能再被任何途径使用的对象。那么如何找到这些对象?1、引用计数法这个算法的实现是,给对象中添加一个引用计数...
2019-05-30 11:03:32
199
原创 Java虚拟机(三)- 内存溢出
目录一、堆溢出二、栈溢出三、方法区和运行时常量池溢出一、堆溢出Java堆唯一的作用就是存储对象实例,只要保证不断创建对象并且对象不被回收,那么对象数量达到最大堆容量限制后就会产生内存溢出异常了。所以测试的时候把堆的大小固定住并且让堆不可扩展即可。测试代码如下package com.xrq.test;import java.util.ArrayList;import ...
2019-05-29 15:56:58
106
原创 Java虚拟机(二)- 常用JVM命令参数象
一、如何使用在Run Configurations设置里,找到VM arguments空白部分就可以设置虚拟机参数二、常用的虚拟机参数(1)-Xms20M表示设置JVM启动内存的最小值为20M,必须以M为单位(2)-Xmx20M表示设置JVM启动内存的最大值为20M,必须以M为单位。将-Xmx和-Xms设置为一样可以避免JVM内存自动扩展。大的项目-Xmx和-Xms一般...
2019-05-29 14:16:04
181
原创 Java虚拟机(一)- Java内存区域及对象
目录一、前言二、对象创建三、对象定位方式一、前言Java虚拟机(JVM)内部定义了程序在运行时需要使用到的内存区域途中黄色部分为线程共享区域,白色部分为线程私有区域。1、线程独有的内存区域(1)PROGRAM COUNTER REGISTER,程序计数器这块内存区域很小,它是当前线程所执行的字节码的行号指示器,字节码解释器通过改变这个计数器的值来选取下一条需...
2019-05-29 13:52:59
136
原创 数据结构 - 2-3树、B-树、B+树
目录一、2-3树二、B-树三、B+树一、2-3树2-3树是最简单的B-树(或-树)结构,其每个非叶节点都有两个或三个子女,而且所有叶都在统一层上。2-3树不是二叉树,其节点可拥有3个孩子。不过,2-3树与满二叉树相似。若某棵2-3树不包含3-节点,则看上去像满二叉树,其所有内部节点都可有两个孩子,所有的叶子都在同一级别。另一方面,2-3树的一个内部节点确实有3个孩子,故比相同高...
2019-05-28 10:56:22
2092
原创 常见底层面试题
目录一、JVM二、java泛型三、String类的深入理解四、equals和==的区别五、int和Integer的区别六、null和""(空字符串)的区别七、23种设计模式八、多线程九、GC十、Java编译一个.java文件生成的.class文件有多少?一、JVM 大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(...
2019-05-27 10:09:06
820
原创 数据结构 - 二叉树、红黑树
目录一:二叉树二:满二叉树三:完全二叉树四:堆五:二叉查找树(BST)六:平衡二叉树七:红黑树一:二叉树 二叉树是一种数据结构,其每个结点最多有两个子树的树结构。也就是每个节点下面有两个分叉,通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 最上面的节点称为根节点,相...
2019-05-24 14:27:48
1031
原创 LinkedList底层原理
一:介绍LinkedList是一个实现了List接口和Deque接口的双端链表。 LinkedList底层的链表结构使它支持高效的插入和删除操作,但是要查询的话只能遍历查询,因此查询的效率低下,另外它实现了Deque接口,使得LinkedList类也具有队列的特性; LinkedList不是线程安全的,如果想使LinkedList变成线程安全的,可以调用静态类Collections类中的syn...
2019-05-23 11:08:57
859
原创 Exception底层原理
一:异常的概念java异常是一种错误情况,是程序不希望出现的现象,但是由于程序本身的设计逻辑和运行的环境等因素,出现了异常的情况异常的意义:不允许程序沿着其正常的路径继续走下去,并告诉我们程序发生了什么问题。发现代异常的时机:1、程序编译期间,由编译器对代码进行编译,遇到错误会给出提示2、程序运行期间,运行时出现了不可预料的错误,会抛出异常异常的执行顺序 new一个异常对...
2019-05-22 21:47:01
1006
原创 ArrayList的底层原理
一:ArrayList数据结构底层的数据结构就是数组,数组元素类型为Object类型,即可以存放所有类型数据。我们对ArrayList类的实例的所有的操作底层都是基于数组的。如图:二:ArrayList源码分析public class ArrayList<E> extends AbstractList<E> implements List<E>...
2019-05-20 16:40:11
804
原创 HashMap的底层原理
HashMap的底层原理1.数据结构:HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。HashMap底层就是一个数组结构,数组中的每一项又是一个链表。当新建一个HashMap的时候,就会初始化一个数组2.HashMap的源码如下:/** * The table, resized as necessary. Length MUST Always ...
2019-05-17 11:19:46
194
原创 Shiro入门学习之路(一)
首先来看一个图可以看到shiro主要分两个大块:1.subject 主体2.Security Managersubject可以理解为我们当前的操作用户Security Manager是shiro的核心部分,其中包含以下几个-Authenticator 认证器-Authorizer 授权器-Session Manager Session管理器...
2019-05-16 17:16:36
520
原创 IDEA使用入门,快捷键详情 一
欲从eclipse跳坑至idea,虽道难,却仍需行。idea快捷键繁多,特此写文谨记,便后忘复查。编辑相关:1.alt+Insert 用于自动生成get/set方法,toString方法等2.ctrl+O 用于生成未重写或未实现方法3.ctrl+shift+F10 运行当前程序 shift+F10 运行...
2019-05-10 14:52:30
1191
原创 Struts2的入门
Struts2是一个实现MVC架构的框架:今天初步接触,先写一个helloworld的Demo,本来想用idea写,因为对idea的操作并不熟悉,在尝试了几次之后果断换回eclipse接下来开始搭建demo:首先,创建一个Web工程:创建完之后,右键点击生成web.xml文件。然后我们在WEB-INF下创建lib文件夹,并将需要的jar包复制到这里:以上为跑一个...
2019-04-26 14:03:31
143
原创 使用Mybatis时程序执行成功,数据库却没有改变
以上程序执行没有报错,执行结果如下:显示有一行数据插入,可是查看数据库发现并没有插入的这行数据:-----------------------------------------------------------------------------------------------------------------------经网上查找后发现原因:因为mybati...
2019-04-17 16:29:58
10047
2
原创 Mybatis数据源与连接池简单理解
此文参考为读后理解,如有错误,欢迎指出原文https://blog.youkuaiyun.com/luanlouis/article/details/376718511.Mybatis数据源 DataSource分为三类:UNPOOLED 不使用连接池 POOLED 使用连接池 JNDI 使用JNDI实现2.DataSource的创建过程datasour...
2019-04-16 11:49:25
336
原创 MyBatis的初始化机制简单了解
此文参考为读后理解,如有错误,欢迎指出原文http://blog.youkuaiyun.com/luanlouis/Mybatis主要有一下这些属性:-configuration 配置 -properties 属性 -settings 设置 -typeAliases 类型命名 -typeHandlers 类型处理器 -objectFactory...
2019-04-16 11:09:23
145
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人