自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 设计模式之——代理模式

一、基本介绍 代理模式:给某些对象提供一个代理对象,以控制对这些对象的访问,或对这些对象进行与业务无关的增强操作。 二、包含角色 1.抽象主题类:通过接口或抽象类声明真实主题和代理对象实现的业务方法。 2.真实主题类:实现了抽象主题中的具体业务,是代理对象所代表的真实对象,即被代理对象。 ...

2020-01-09 16:15:33 2036 2

原创 数据结构之——平衡二叉树(内容详解)

一、基本概念 平衡二叉树也叫AVL树,它或者是一颗空树,或者具有以下性质的二叉排序树:它的左子树和左子树的高度之差(平衡因子)的绝对值不超过1,且它的左子树和右子树都是一颗平衡二叉树。 二、结构 如基本概念所树,它具有一个左子树和一个左子树,且对于任意一个子树而言,左子树和右子树高度只差不超...

2019-12-29 19:17:16 3828 10

原创 HashMap源码解析JDK1.8

今天,打算写一篇HashMap的源码解析,主要是针对增删改查操作,废话不多说,直接开始。 先看看hashMap在jdk 1.8的结构,如下图,用的是数组+链表+红黑树的结构,也叫哈希桶,在jdk 1.8之前都是数组+链表的结构,因为在链表的查询操作都是O(N)的时间复杂度,而且hashMap中...

2018-09-03 11:10:11 13034 13

原创 MongoDB入门教程(1)

      (一)MongoDB介绍        MongoDB是一个NoSQL数据库,它是跨平台的,基于分布式文件存储的数据库,由C++语言编写的(这点很重要,则表示在Linux下需要安装gcc环境)。MongoDB是以文档的形式存储数据,数据结构由键值(key:value)对组成,类似JS...

2018-08-23 11:24:30 12024 1

原创 Mybatis实用功能——动态数据源

一、动态数据源 动态数据源是一个很实用的功能,能够在运行时切换数据源执行不同的数据库操作,下文将通过spring整合Mybatis手写一个动态数据源,主要使用到的技术有AOP、静态代理模式,本文主要内容是动态数据源,对于其它边边角角的内容不多阐述。 二、步骤 spring boot配置文...

2020-04-07 23:05:52 50 0

原创 Quartz快速入门
原力计划

一、Quartz简介 1.quartz是开源且具有丰富特性的"任务调度库",能够集成于任何的java应用。 2.quartz主要分为三大组件,分别是任务Job、触发器Trigger以及调度器Scheduler。 quartz体系架构图: 二、quartz三大组件...

2020-03-12 14:10:57 74 0

原创 Spring注解开发教程——快速使用(2)

一、快速使用 本系列教程基于Spring注解进行,所有的设置均采用注解的方式。 二、步骤 1.引入maven依赖 <dependencies> <dependency> <groupId>org.sp...

2020-03-10 12:00:15 42 0

原创 Spring注解开发教程——简介(1)

一、概述 1.Spring是一种开源轻量级框架,是为了解决企业应用程序开发复杂性而创建的。 2.Spring的核心是一个轻量级的容器。 3.Spring为企业级开发提供了很多的功能,但是这些功能都依赖于它的两个核心特性,也就是依赖注入(dependency injection,DI)和面向切...

2020-03-10 11:45:01 58 0

原创 Mybatis从入门到精通——分页插件pagehelper的使用(20)

一、pagehelper分页插件 pagehelper是一个开源的基于Mybatis拦截器开发的通用分页插件工具,一般项目中也是使用这个。 具体的项目地址:https://github.com/pagehelper/Mybatis-PageHelper 具体的使用说明:https://git...

2020-03-09 21:09:11 65 0

原创 Mybatis从入门到精通——插件和拦截器的使用(19)

一、Mybatis插件和拦截器的使用 在Mybatis中,插件是通过实现拦截器接口进行拦截操作而完成的,也就是说插件是基于Mybatis拦截器的,Mybatis中拦截器的接口为Interceptor,该拦截器能够对Mybatis内部运行的四大接口的方法进行拦截,四大接口分别为:Executor、...

2020-03-09 20:49:47 41 0

原创 Mybatis从入门到精通——TypeHandler的使用(18)

一、TypeHandler TypeHandler是Mybatis提供的一个JdcbType和JavaType之间互相转换的处理器,用于在传参和返回值设置时进行转换,使用在result、id这类返回值映射标签上,一般不需要进行转换,因为Mybatis已经提供了足够多且常用的TypeHandler...

2020-03-09 18:08:51 56 0

原创 Mybatis从入门到精通——返回Map处理(17)

一、返回Map处理 在Mybatis中,支持返回值为Map<K,V>的操作,如果需要返回值为Map时,在Mapper接口的该方法上添加@MapKey(value="属性名")注解,则会把结果集按照Map返回,并且key为@MapKey上设置的属性。 二、案例...

2020-03-09 17:28:47 38 0

原创 Mybatis从入门到精通——二级缓存和一级缓存(16)

一、一级缓存和二级缓存 程序中缓存对系统效率的提升是极大的,在Mybatis中,缓存分别为一级缓存和二级缓存,其中一级缓存是默认开启的,二级缓存需要手动开启。 二、一级缓存 说明: 1.Mybatis的一级缓存是默认开启的。 2.若要停止Mybatis的一级缓存可以通过设置selec...

2020-03-09 17:05:35 61 0

原创 Mybatis从入门到精通——鉴别器使用(16)

一、鉴别器 Mybatis的鉴别器(discriminator)是ResultMap的子标签,它提供了可以根据不同结果信息执行不同查询操作,只能用于分步查询中。 二、使用说明 1.查询结果集: <resultMap id="testResultMap" type=...

2020-03-09 16:21:05 47 0

原创 Mybatis从入门到精通——分步查询(14)

一、分步查询 在使用到多表关联查询时,经常会碰到多对多,一对多和一对一的级联操作,在Mybatis中通过resultMap标签下的association和collection解决级联操作的问题。 级联操作分为:关联查询和分步关联查询,本文介绍分步查询,如需学习关联查询,请看上一篇博客。 二、...

2020-03-09 15:09:13 37 0

原创 Mybatis从入门到精通——MGB代码生成器(12)

一、MGB(MyBatis Generator)代码生成器 在Mybatis中,对于单表操作,其实都是一个类似的重复操作,Mybatis提供了代码生成器,用于生成Mybatis的mapper接口和mapper.xml文件以及对应的实体类。 二、使用教程 1.添加插件到maven ...

2020-03-09 11:41:19 117 0

原创 Mybatis从入门到精通——批量操作(11)

一、批量操作 在某些场景下需要进行批量操作,如批量插入多少条数据等,在Mybatis中共有两种方式进行批量操作,第一种是使用foreach标签一次性插入多条;第二种是使用BATCH执行器,每次提交一条,到达一定数量后手动一次性提交。 二、foreach批量操作 mapper文件: ...

2020-03-09 11:39:54 28 0

原创 Mybatis从入门到精通——关联查询(13)

一、一步关联查询 在使用到多表关联查询时,经常会碰到多对多,一对多和一对一的级联操作,在Mybatis中通过resultMap标签下的association和collection解决级联操作的问题。 关联查询分为:一步关联查询和分步关联查询,本文介绍一步关联查询,如需学习分步关联查询,请看下一...

2020-03-09 11:38:50 36 0

原创 Mybatis从入门到精通——动态SQL标签(10)

一、动态sql标签作用 动态SQL标签是Mybatis的一大特色,通过使用动态SQL标签可以完成一些稍微复杂的操作和简化开发。 动态SQL标签主要包括:if、where、set、trim、choose-when-otherwise、foreach,下面将对每个标签进行说明。 二、wher...

2020-03-08 19:54:25 101 0

原创 Mybatis从入门到精通——sql标签(9)

一、sql标签作用 该标签是用来定义一些可复用的sql语句,需要在使用该复用sql语句的地方通过include标签引用。 二、准备工作 1.maven依赖 <dependencies> <!-- mysql驱动 --> ...

2020-03-08 17:32:35 49 0

原创 Mybatis从入门到精通——selectKey标签(8)

一、selectKey标签作用 该标签是用来定义insert、update中主键生成的策略,在执行insert或update操作的之前或之后生成自定义主键。 二、selectKey标签属性 序号 属性名 说明 1 resultType 该查询...

2020-03-08 17:14:00 113 0

原创 Mybatis从入门到精通——update、insert、delete标签(7)

一、update标签属性说明 序号 属性名 说明 1 id 和mapper的命名空间结合后应该是唯一的,所以不能有重载的方法。 2 parameterType 传入的参数类型,可以写全类名...

2020-03-08 16:50:16 21 0

原创 Mybatis从入门到精通——select标签(6)

1.select标签属性 序号 属性名 说明 1 id 和mapper的命名空间结合后应该是唯一的,所以不能有重载的方法。 2 parameterType 传入的参数类型,可以写全类名或者...

2020-03-08 16:38:51 59 0

原创 Mybatis从入门到精通——参数传递(5)

一、准备工作 1.maven依赖 <dependencies> <!-- mysql驱动 --> <dependency> <groupId>mysql</gro...

2020-03-08 14:16:51 37 0

原创 Mybatis从入门到精通——配置文件和映射文件说明(4)

一、mybatis-config配置说明 mybatis-config的configuration标签下的常用子标签说明 序号 标签名 说明 1 properties 引入外部配置文件,可以通过${}表达式引用 2 settings ...

2020-03-08 13:23:43 55 0

原创 Mybatis从入门到精通——Mybatis快速使用(3)

一、准备工作 1.maven依赖 <dependencies> <!-- mysql驱动 --> <dependency> <groupId>mysql</gro...

2020-03-08 12:31:48 25 0

原创 Mybatis从入门到精通——JDBC使用回顾(2)

一、简要说明 不管是Mybatis还是Hibernate都是对JDBC的二次封装,在使用JDBC之前,我们先回顾一下JDBC的使用。 二、准备工作 1.maven依赖 <!-- mysql驱动 --> <dependenc...

2020-03-08 12:02:35 39 0

原创 Mybatis从入门到精通——简介(1)

一、ORM框架 Object Relational Mapping:对象关系映射,是一种为了解决面向对象与关系型数据库存在不匹配现象的技术,简单说,orm通过描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系型数据库中。 目前java开发中常用的ORM框架为半自动化的Mybati...

2020-03-08 11:31:22 43 0

原创 并发编程之——Java内存模式和volatile详解

一、定义 Java内存模型(Java Memory Model,JMM):由Java虚拟机规范定义的,用来屏蔽掉java程序在各种不同的硬件和操作系统对内存的访问的差异,这样就可以实现java程序在各种不同的平台上都能达到内存访问的一致性,即屏蔽掉了底层不同计算机的区别。 二、缓存一致性 ...

2020-02-02 20:50:26 1349 0

原创 并发编程之——线程基础

一、线程的开启方式 1.继承Thread public class UserThread extends Thread { @Override public void run() { System.out.println("通过继承Thread类开...

2020-01-19 13:09:01 2705 0

原创 设计模式之——责任链模式

一、基本介绍 责任链模式(行为型):为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。 二、包含角色 1.抽象处理者角色:定义一个处理请求的接口,包含抽象处理方法和一个...

2020-01-12 21:16:57 1031 0

原创 设计模式之——策略模式

一、基本介绍 策略模式:定义了一系列算法,并将每个算法封装起来,让它们之间可以互相替换,让算法的变化独立于使用算法的客户。 二、包含角色 1.抽象策略类:定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,环境角色使用这个接口调用不同的算法。 2.具体策略类:实现了抽象策略定义的接...

2020-01-12 20:07:55 873 0

原创 设计模式之——状态模式

一、基本介绍 状态模式(行为型):对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。 二、包含角色 1.环境角色:上下文,它定义了客户感兴趣的接口,维护一个当前状态,并将与状态相关的操作委托给当前状态对象来处理。 2.抽象状态角色:定...

2020-01-12 19:21:03 926 0

原创 设计模式之——备忘录模式

一、基本介绍 备忘录模式(行为型):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。 二、包含角色 1.发起人角色:记录当前时刻的内部状态信息,提供创建备忘录和恢复备忘录数据的功能,实现其他业务功能,它可以访问备忘录...

2020-01-12 17:53:48 1015 0

原创 设计模式之——中介者模式

一、基本介绍 中介者模式(行为型):定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。 二、包含角色 1.抽象中介者:中介者的公共接口定义,并提供了同事类消息传递的方法。 2.具体中介者:实现抽象中介者接口,负责协调同事类之间的通信。 ...

2020-01-12 16:35:43 880 0

原创 设计模式之——观察者模式

一、基本介绍 观察者模式(行为型):指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新,也叫订阅—发布模式。 二、包含角色 1.主题(监视)角色:提供了一个用于保存观察者对象的聚集类和增加、删除观察者对象的方法,并在监视到变化时通知所有观察...

2020-01-12 15:33:39 885 0

原创 设计模式之——迭代器模式

一、基本介绍 迭代器模式(行为型):提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。 二、包含角色 1.抽象聚合角色:定义存储、添加、删除对象以及获取迭代器对象的接口。 2.具体聚合角色:实现抽象聚合类,返回一个具体迭代器的实例。 3.抽象迭代器角色:定义访问和...

2020-01-12 12:32:29 956 0

原创 设计模式之——访问者模式

一、基本介绍 访问者模式(行为型):将数据操作和数据结构分离的设计模式,即不直接去操作数据,通过中间一个数据结构去操作数据。 二、包含角色 1.抽象访问者:定义一个访问具体元素的接口,为每个具体元素类对应一个访问操作 ,该操作中的参数类型标识了被访问的具体元素。 2.具体访问者:实现抽象访...

2020-01-10 12:53:33 1442 0

原创 设计模式之——命令模式

一、基本介绍 命令模式(行为型):将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开(解耦)。 二、包含角色 1.抽象命令角色:声明执行命令的接口,拥有执行命令的抽象方法 execute()。 2.具体命令角色:是抽象命令类的具体实现类,它拥有接收者对象,并通过调用接收者的功...

2020-01-10 00:08:55 1514 0

原创 设计模式之——模板方法

一、基本介绍 模板方法(行为型):定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。 二、包含角色 1.抽象类:负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。 2.具体子类:实现抽象类中所定义的抽...

2020-01-09 17:06:02 1510 0

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