- 博客(35)
- 资源 (2)
- 收藏
- 关注
原创 Lombok安装使用说明
1:安装Lombok插件:2:添加Lombok依赖<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.10</...
2018-04-20 17:57:43
298
1
原创 动态代理
动态代理有两种实现方式!1:JDK的动态代理,是由JDK的java.lang.reflect.*包提供支持的,必须需要实现接口的一种方式.2:CGLIB动态代理,是由第三方jar包实现,弥补了不需要接口实现的一种方式.JDK动态代理步骤:1:编写服务类和接口,这个是真正的服务提供者2:编写代理类,提供绑定和代理方法接口类public interface HelloService { vo...
2018-04-16 16:02:36
238
转载 《JAVA与模式》之合成模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述合成(Composite)模式的: 合成模式属于对象的结构模式,有时又叫做“部分——整体”模式。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。合成模式 合成模式把部分和整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由它们复合而成的合成对象同等看待。 比如,...
2018-04-16 10:15:13
232
原创 Mybatis源码解读-设计模式总结
虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式。Mybatis至少遇到了以下的设计模式的使用:Builder模式,例如SqlSessionFactoryBuilder、Environment;工厂方法模式,例如SqlSessionFactory、Transaction...
2018-04-13 17:43:24
2749
转载 《JAVA与模式》之迭代子模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述迭代子(Iterator)模式的: 迭代子模式又叫游标(Cursor)模式,是对象的行为模式。迭代子模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象(internal representation)。聚集和JAVA聚集 多个对象聚在一起形成的总体称之为聚集(Aggregate),聚集对象是能够包容一组对象的容器对象。聚集依赖于聚集结构...
2018-04-12 15:06:31
162
转载 《JAVA与模式》之装饰模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述装饰(Decorator)模式的: 装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。 ...
2018-04-12 15:00:53
172
转载 《JAVA与模式》之适配器模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法...
2018-04-12 14:52:22
186
转载 《JAVA与模式》之模板方法模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述模板方法(Template Method)模式的: 模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。模板方法模式的结构 模板方法模式是所有模式中最为常见的几...
2018-04-12 14:27:12
170
转载 《JAVA与模式》之责任链模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任...
2018-04-12 14:23:36
143
转载 《JAVA与模式》之代理模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述代理(Proxy)模式的: 代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。代理模式的结构 所谓代理,就是一个人或者机构代表另一个人或者机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式类图如下: 在代理模式中的角色...
2018-04-12 14:09:27
147
转载 《JAVA与模式》之单例模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述单例模式的: 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。单例模式的结构 单例模式的特点:单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。 饿汉式单例类public class EagerSingleton { priva...
2018-04-12 10:44:42
155
转载 《JAVA与模式》之抽象工厂模式
场景问题 举个生活中常见的例子——组装电脑,我们在组装电脑的时候,通常需要选择一系列的配件,比如CPU、硬盘、内存、主板、电源、机箱等。为讨论使用简单点,只考虑选择CPU和主板的问题。 事实上,在选择CPU的时候,面临一系列的问题,比如品牌、型号、针脚数目、主频等问题,只有把这些问题都确定下来,才能确定具体的CPU。 同样,在选择主板的时候,也有一系列问题,比如品牌、芯片组、集成芯片、总线频...
2018-04-12 10:36:29
138
转载 《JAVA与模式》之工厂方法模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述工厂方法模式的: 工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。 工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。那么工厂方法模式是在什么场景下使用呢,下面就以本人的理解举例说明: 相信很多人都做过导入导出...
2018-04-12 10:18:34
131
转载 《JAVA与模式》之简单工厂模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。那么简单工厂模式是在什么场景下使用呢,下面就以本人的理解举例说明: 就拿登录功能来说,假如应用系统需要支持多种登录方式如:口令认证、域认证(口令认证通常是去数据库中验证用户,而...
2018-04-12 10:06:23
152
转载 《JAVA与模式》之建造模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述建造(Builder)模式的: 建造模式是对象的创建模式。建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。 ...
2018-03-21 19:04:34
245
原创 初次安装git配置用户名和邮箱
首先简单介绍一下git相关协议git支持https和git两种传输协议,github分享链接时会有两种协议可选:git协议链接图例 : ↓https协议链接图例:↓git使用https协议,每次pull, push都会提示要输入密码,使用git协议,然后使用ssh密钥,这样免去每次都输密码的麻烦初次使用git的用户要使用git协议大概需要三个步骤:一、生成密钥对二、设置远程仓库(本文以github...
2018-03-19 15:37:52
1743
原创 Java代码优化总结
结合自己工作和平时的经验以及各博友的总结汇总这么一篇java代码的优化总结!我认为,代码优化的最重要的作用应该是:避免未知的错误。在代码上线运行的过程中,往往会出现很多我们意想不到的错误,因为线上环境和开发环境是非常不同的,错误定位到最后往往是一个非常小的原因。然而为了解决这个错误,我们需要先自验证、再打包出待替换的class文件、暂停业务并重启,对于一个成熟的项目而言,最后一条其实影响是
2018-01-20 15:56:29
194
原创 【MyBatis源码分析】mappers解析属性配置元素详述
mapper加载config.xml中两个最重要的标签,一个是<environment>(JDBC环境信息),另一个就是mapper(sql文件映射)了。Mapper映射文件是一个xml格式文件,必须遵循相应的dtd文件规范,如ibatis-3-mapper.dtd。我们先大体上看看支持哪些配置?如下所示,从Eclipse里截了个屏:从上图可以看出,映射文件是以<mapper&g...
2018-01-17 16:33:59
586
原创 【MyBatis源码分析】objectFactory解析属性配置元素详述
objectFactory解析、那么,接下来,就简单介绍一下这几个配置的作用吧:1、objectFactory是干什么的? 需要配置吗? MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。默认情况下
2018-01-17 14:43:47
360
原创 【MyBatis源码分析】plugins解析属性配置元素详述
Plugins解析、plugin有何作用? 需要配置吗? plugins 是一个可选配置。mybatis中的plugin其实就是个interceptor, 它可以拦截Executor 、ParameterHandler 、ResultSetHandler 、StatementHandler 的部分方法,处理我们自己的逻辑。Executor就是真正执行sql语句的东西, Param
2018-01-13 16:13:07
1066
原创 【MyBatis源码分析】settings解析属性配置元素详述
首先看settingsAsPropertiess(root.evalNode("settings"))这句代码,显而易见这句话获取了下的节点。跟一下代码的实现:private Properties settingsAsPropertiess(XNode context) { if (context == null) { return new Properties();
2018-01-13 14:49:22
814
原创 【MyBatis源码分析】TypeHandler解析属性配置元素详述及相关枚举使用高级进阶
TypeHandler解析接着看一下typeHandlerElement(root.evalNode("typeHandlers"));方法,这句读取的是<configuration>下的<typeHandlers>节点,代码实现为:private void typeHandlerElement(XNode parent) throws Exception { if...
2018-01-09 19:02:39
806
1
原创 【MyBatis源码分析】configuration初始化机制详解
configuration加载解析对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外。本章将通过以下几点详细介绍 MyBatis的初始化过程。 1. MyBatis的初始化做了什么 2. MyBatis基于XML配置文件创建Configuration对象的过程 3. 涉及到的相关设计模式一、 MyBatis的初始化做了什么任何框架的初始化,无非是加载自己运行时所需要的...
2018-01-08 14:25:37
1682
1
原创 【MyBatis源码分析】环境准备
近来有空,鉴于工作经常会使用到mybatis。所以想将这个框架研究的更加彻底一些!【MyBatis源码分析】整个文章结构会在每一部分源码分析的开头列出要分析的源码的实例,比如:分析加载解析XML配置流程,就会先写相关节点的xml配置及解析的源码展示。分析mybatis四大对象流程,就会先写针对单个对象展示源码。整个系列文章,在本文中会一次性地将所有的代码示例写完,之后就针对这些代码一部分一部分进行...
2018-01-08 11:45:20
490
原创 Eclipse常用设置
经常设置使用Eclipse,现在将一些常用设置进行归类一下!1、代码自动提示在我们忘记方法名或者想偷懒时,代码自动提示很管用。不过Eclipse默认是输入"."后才会出现包或类成员的提示,也就意味着我们必须先输入一个完整的类名,提示才能出来;或者每次都按下 alt + / 。如何才能让它每次只要输入字母之后,也能出现提示呢?在这里可以设置:Window -> Preferenc
2018-01-08 10:23:08
4353
1
原创 【MyBatis源码分析】properties,typeAliases解析属性配置元素详述
properties解析接着看一下propertiesElement(root.evalNode("properties"))方法,这句读取的是<configuration>下的<properties>节点,代码实现为:private void propertiesElement(XNode context) throws Exception { if (conte...
2017-12-21 14:34:25
373
原创 String、StringBuffer、与StringBuilder的区别
相信大家都知道StringBuffer、StringBuilder,但是这两个的用法都差不多,到底有什么区别呢,这也是面试的时候问的比较多的一道题,这里我就来说说,这两个的区别结合String来说~ String:查看源码得知,String类的声明是:public final,所以可以很清楚的知道,fianl的话是改变不了的,所以,如果我们用String来操作字符串的时候,一旦我们字符串
2017-02-03 15:27:16
847
原创 SpringMVC注解@RequestParam全面解析
在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取。这里主要讲这个注解 一、基本使用,获取提交的参数 后端代码: Java代码 @RequestMapping("testRequestParam") public Stri
2016-09-27 15:23:30
453
原创 @Controller和@RestController的区别?
@Controller和@RestController的区别?官方文档:@RestController is a stereotype annotation that combines @ResponseBody and @Controller.意思是:@RestController注解相当于@ResponseBody + @Controller合在一起的作用。
2016-09-27 15:13:29
393
原创 【Java1.7.5集合源码剖析】Vector源码剖析
Vector简介 Vector也是基于数组实现的,是一个动态数组,其容量能自动增长。 Vector是JDK1.0引入了,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是相对安全,有些时候还是要加入同步语句来保证线程的安全),可以用于多线程环境。 Vector继承Serializable接口,因此它支持序列化,实现了Cloneable接
2016-09-06 11:33:13
313
原创 【Java1.7.5集合源码剖析】LinkedList源码剖析
LinkedList特点 1.内部通过双向链表存储数据 2.插入、删除不需要移动元素,只需要修改指针 3.实现了队列、双端队列、栈 4.插入、删除操作比较多的时候,推荐使用 5.获取指定index位置的值效率低(虽然有一个加速动作)6.LinkedList同样是非线程安全的,只在单线程下适合使用。7、无参构造方法直接建立一个仅包含head节点的空链表,包含Collect
2016-09-05 17:44:39
322
原创 【Java1.7.5集合源码剖析】ArrayList源码剖析
ArrayList简介 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。 ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下
2016-09-01 15:21:46
295
原创 Java中equals和==的区别(Integer[-128~127])
博主处女篇!请大家多多关照概要: java中的数据类型,可分为两种: 1.基本数据类型,也称原始数据类型。byte,shrot,char,int,long,float,double,boolean(存储在内存中的堆栈(以后简称栈)) 他们之间的比较,应用双等号(==),比较 的是他们的值。
2016-08-12 10:26:50
4428
原创 Maven搭建——循序渐进
首先准备好JDK环境和IDE,本文以MyEclipse2014为例搭建环境一、安装Mavenhttps://maven.apache.org/download.cgi2 解压到任意位置,本文以 F:\Maven\apache-maven-3.3.9 为例3 设置环境变量新建系统变量 MAVEN_HOME,目录 F:\M
2016-08-06 14:54:08
138
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人