自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 资源 (4)
  • 收藏
  • 关注

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

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

2020-01-09 16:15:33 2199

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

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

2019-12-29 19:17:16 32135 25

原创 HashMap源码解析JDK1.8

今天,打算写一篇HashMap的源码解析,主要是针对增删改查操作,废话不多说,直接开始。 先看看hashMap在jdk 1.8的结构,如下图,用的是数组+链表+红黑树的结构,也叫哈希桶,在jdk 1.8之前都是数组+链表的结构,因为在链表的查询操作都是O(N)的时间复杂度,而且hashMap中查询操作也是占了很大比例的,如果当节点数量多,转换为红黑树结构,那么将会提高很大的效率,因为红黑...

2018-09-03 11:10:11 24056 19

原创 MongoDB入门教程(1)

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

2018-08-23 11:24:30 17717 4

原创 Maven获取版本号工具类

【代码】Maven获取版本号工具类。

2024-04-18 11:19:07 268

原创 Tomcat源码解析——Tomcat的启动流程

在Catalina的load方法中,会找到server.xml文件,然后解析标签并创建出对应的实例对象,最终在调用最顶层的Server组件的init方法,会调用Service组件的初始化,而Service组件的会调用Connector组件的初始化(容器的初始化是懒加载的,即有请求达到时才开始初始化)。在catalina.sh脚本中,前面是环境判断和初始化参数,最终根据传递的start来执行上图的代码,最终会调用Tomcat的Bootstrap启动类的main方法,传递的参数是start。

2024-04-14 22:57:24 635

原创 Tomcat源码解析——源码环境搭建

在进行源码阅读前,先下载源码包,这样便于做笔记和debug。我所用的版本是Tomcat7.0.68,JDK版本,我用的是1.8,可以使用其它版本,如果其它版本不行则可以换到1.8尝试。

2024-04-14 19:23:30 419

原创 Tomact源码解析——组件介绍

Tomcat的体系结构如图所示:Tomcat的体系结构分为两层,一层是Tomcat管理组件,一层是Tomcat容器组件;而Connector(连接器)是沟通管理组件和容器组件的桥梁,Connector将一个请求传递至Container,容器自上而下的去处理该请求。Tomcat的管理组件:Server、Service此类组件主要是为了管理好Tomcat下级的各项组件以及内容。容器组件:Engine、Host、Context、Wrapper。

2024-04-14 18:09:33 643

原创 Netty-客户端及服务端代码模板

一、服务端代码模板public class NettyServer { public static void main(String[] args) throws InterruptedException { //server启动器 ServerBootstrap serverBootstrap = new ServerBootstrap(); //boss线程组,监听端口链接 NioEve

2021-09-06 09:50:16 1339

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

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

2020-04-07 23:05:52 1818

原创 Quartz快速入门

一、Quartz简介1.quartz是开源且具有丰富特性的"任务调度库",能够集成于任何的java应用。2.quartz主要分为三大组件,分别是任务Job、触发器Trigger以及调度器Scheduler。quartz体系架构图:二、quartz三大组件简介1.任务Job:即想要调用的任务类,需要实现org.quartz.job接口,并重写execute()方法,任务...

2020-03-12 14:10:57 743 1

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

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

2020-03-10 12:00:15 254

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

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

2020-03-10 11:45:01 383

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

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

2020-03-09 21:09:11 369

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

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

2020-03-09 20:49:47 513 2

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

一、TypeHandlerTypeHandler是Mybatis提供的一个JdcbType和JavaType之间互相转换的处理器,用于在传参和返回值设置时进行转换,使用在result、id这类返回值映射标签上,一般不需要进行转换,因为Mybatis已经提供了足够多且常用的TypeHandler。二、案例案例说明:对于枚举的转换,Mybatis是没有提供的,我们需要把数据库中s...

2020-03-09 18:08:51 567

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

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

2020-03-09 17:28:47 362

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

一、一级缓存和二级缓存程序中缓存对系统效率的提升是极大的,在Mybatis中,缓存分别为一级缓存和二级缓存,其中一级缓存是默认开启的,二级缓存需要手动开启。二、一级缓存说明:1.Mybatis的一级缓存是默认开启的。2.若要停止Mybatis的一级缓存可以通过设置select标签上的flushCache属性为true,会每一次执行完查询就情况一级缓存。3.一级缓存的生...

2020-03-09 17:05:35 160

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

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

2020-03-09 16:21:05 647

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

一、分步查询在使用到多表关联查询时,经常会碰到多对多,一对多和一对一的级联操作,在Mybatis中通过resultMap标签下的association和collection解决级联操作的问题。级联操作分为:关联查询和分步关联查询,本文介绍分步查询,如需学习关联查询,请看上一篇博客。二、表关系说明user表结构和数据:DROP TABLE IF EXISTS `user`;C...

2020-03-09 15:09:13 469

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

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

2020-03-09 11:41:19 549

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

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

2020-03-09 11:39:54 159

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

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

2020-03-09 11:38:50 340

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

一、动态sql标签作用动态SQL标签是Mybatis的一大特色,通过使用动态SQL标签可以完成一些稍微复杂的操作和简化开发。动态SQL标签主要包括:if、where、set、trim、choose-when-otherwise、foreach,下面将对每个标签进行说明。二、where标签说明:where标签一般和if标签搭配使用,用于sql中存在多余字符and或or的问题,当...

2020-03-08 19:54:25 283

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

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

2020-03-08 17:32:35 455

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

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

2020-03-08 17:14:00 1813

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

一、update标签属性说明序号 属性名 说明 1 id 和mapper的命名空间结合后应该是唯一的,所以不能有重载的方法。 2 parameterType 传入的参数类型,可以写全类名或者写Mybatis提供的别名(一般我们能想到的别名都有),自定义的类,如果定义了别名可以使用别名。...

2020-03-08 16:50:16 646

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

1.select标签属性序号 属性名 说明 1 id 和mapper的命名空间结合后应该是唯一的,所以不能有重载的方法。 2 parameterType 传入的参数类型,可以写全类名或者写Mybatis提供的别名(一般我们能想到的别名都有),自定义的类,如果定义了别名可以使用别名。 ...

2020-03-08 16:38:51 215

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

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

2020-03-08 14:16:51 154

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

一、mybatis-config配置说明mybatis-config的configuration标签下的常用子标签说明序号 标签名 说明 1 properties 引入外部配置文件,可以通过${}表达式引用 2 settings 设置Mybatis的全局配置属性,它能改变Mybatis运行时行为 3 type...

2020-03-08 13:23:43 175

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

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

2020-03-08 12:31:48 133

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

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

2020-03-08 12:02:35 139

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

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

2020-03-08 11:31:22 205

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

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

2020-02-02 20:50:26 1585

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

一、线程的开启方式1.继承Threadpublic class UserThread extends Thread { @Override public void run() { System.out.println("通过继承Thread类开启新线程!"); }}2.实现Runnable接口public class UseRunna...

2020-01-19 13:09:01 2815

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

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

2020-01-12 21:16:57 1212

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

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

2020-01-12 20:07:55 971

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

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

2020-01-12 19:21:03 1043

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

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

2020-01-12 17:53:48 1102

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

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

2020-01-12 16:35:43 1033

mybatis教程.zip

本系列Mybatis教程代码,包含从头至尾的所有代码,每个文件夹都有标注,且包含对应的sql...................

2020-03-09

webService资料

webservice的资料,给各位需要的同学,找了挺久的,这东西确实难找。

2018-09-06

此包是dubbox所需要以及tomcat服务器的包

品优购商城所需要的tomcat服务器的包和一个admin的war包。

2018-08-24

duboox2.8的jar包

品优购商城所需要的duboox本地jar包,因为不能通过maven中央仓库获取,只能通过下载了。

2018-08-24

空空如也

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

TA关注的人

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