自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 资源 (2)
  • 收藏
  • 关注

原创 Spring MVC ⾼级技术:监听器、过滤器和拦截器

Spring MVC ⾼级技术:监听器、过滤器和拦截器

2022-08-25 10:30:03 464 1

原创 Spring MVC 介绍及基本应用

SpringMVC介绍及基本应用,包括基本概念和测试案例

2022-08-11 16:40:14 648

原创 Mybatis-Plus:Sql 注⼊器、⾃动填充功能、逻辑删除

Mybatis-Plus:Sql 注⼊器、⾃动填充功能、逻辑删除学习演示

2022-07-26 16:29:43 502

原创 Mybatis-Plus:ActiveRecord和插件应用

Mybatis-Plus中ActiveRecord和插件的应用

2022-07-26 10:56:04 329

原创 Mybatis-Plus 条件构造器,AbstractWrapper常用方法

Mybatis-Plus条件构造器常用方法介绍

2022-07-25 11:08:23 657

原创 Mybatis-Plus:配置

Mybatis-Plus常用配置介绍

2022-07-20 11:00:22 1277

原创 Mybatis-Plus:通用CRUD操作

Mybatis-Plus通用CRUD操作,增删改查常用API的测试案例

2022-07-18 15:50:15 896

原创 Mybatis-Plus快速入门:Mybatis+MP、Spring+Mybatis+MP、Spring Boot+Mybatis+MP

Mybatis-plus快速入门及入门案例

2022-07-16 13:54:37 433

原创 MyBatis-Plus相关概念

MyBatis-Plus成长之路

2022-07-15 17:13:38 95

原创 Spring Data JPA 执行过程源码分析

Spring Data JPA 执行过程源码分析Spring Data Jpa 源码很少有⼈去分析,原因如下:1)Spring Data Jpa 地位没有之前学习的框架高,大家习惯把它当成一个工具来用了,不愿意对它进行源码层次的解读2)开发Dao接口(ResumeDao),接口的实现对象肯定是通过动态代理来完成的(增强),代理对象的产生过程追源码很难追,特别特别讲究技巧源码剖析的主要的过程,就是代理对象产生的过程我们发现resumeDao是一个代理对象,这个代理对象的类型是SimpleJapRep

2021-07-15 11:02:00 389

原创 Spring Data JPA 应用案例实现

Spring Data JPA 应用案例实现需求:使用 Spring Data JPA 完成对 tb_resume 表(简历表)的Dao 层操作(增删改查,排序,分页等)数据表设计初始化Sql语句SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for tb_resume-- ----------------------------DROP TAB

2021-07-15 10:41:15 246 1

原创 Spring Data JPA:概述

Spring Data JPA:概述及开发实现Spring Data Jpa 是应用于Dao层的一个框架,简化数据库开发的,作用和Mybatis框架一样,但是在使用方式和底层机制是有所不同的。最明显的一个特点,Spring Data Jpa 开发Dao的时候,很多场景我们连sql语句都不需要开发。由Spring出品。1、 Spring Data JPA 概述什么是 Spring Data JPASpring Data JPA 是 Spring 基于JPA 规范的基础上封装的一套 JPA 应用框架,

2021-07-15 10:01:01 273

原创 手写实现自定义简易版Spring (实现IoC 和 AOP)

手写实现自定义简易版Spring (实现IoC 和 AOP)源码地址点这里1、 银行转账案例界面2、 银行转账案例表结构3、 银行转账案例代码调用关系4、 银行转账案例关键代码TransferServletpackage com.tao.servlet;import com.tao.service.impl.TransferServiceImpl;import com.tao.utils.JsonUtils;import com.tao.pojo.Result;import c

2021-07-13 16:32:48 161

原创 分布式集群架构场景优化解决方案:Session共享问题

分布式集群架构场景优化解决方案:Session共享问题Session共享问题Session共享及Session保持或者叫做Session一致性1、 Session问题原因分析出现这个问题的原因,从根本上来说是因为Http协议是无状态的协议。客户端和服务端在某次会话中产生的数据不会被保留下来,所以第二次请求服务端无法认识到你曾经来过, Http为什么要设计为无状态协议?早期都是静态页面无所谓有无状态,后来有动态的内容更丰富,就需要有状态,出现了两种用于保持Http状态的技术,那就是Cookie和Se

2021-06-24 16:33:31 167 1

原创 分布式集群架构场景优化解决方案:分布式调度问题

分布式集群架构场景优化解决方案:分布式调度问题分布式调度问题调度—>定时任务,分布式调度—>在分布式集群环境下定时任务这件事Elastic-job(当当网开源的分布式调度框架)1、 定时任务的场景定时任务形式:每隔一定时间/特定某一时刻执行例如:订单审核、出库订单超时自动取消、⽀付退款礼券同步、生成、发放作业物流信息推送、抓取作业、退换货处理作业数据积压监控、日志监控、服务可用性探测作业定时备份数据⾦融系统每天的定时结算数据归档、清理作业报表、离线数据分析作业

2021-06-23 19:47:25 618 2

原创 分布式集群架构场景优化解决方案:分布式ID解决方案

分布式集群架构场景优化解决方案:分布式ID解决方案分布式ID解决方案为什么需要分布式ID(分布式集群环境下的全局唯一ID)1、UUID(可以用)UUID 是指Universally Unique Identifier,翻译为中文是通用唯一识别码产生重复 UUID 并造成错误的情况非常低,是故大可不必考虑此问题。import java.util.UUID;public class UuidTest { public static void main(String[] args) {

2021-06-23 15:32:40 252 1

原创 分布式集群架构场景化解决方案:集群时钟同步问题

分布式集群架构场景化解决方案:集群时钟同步问题1、 时钟不同步导致的问题时钟此处指服务器时间,如果集群中各个服务器时钟不一致势必导致一系列问题,试想 “集群是各个服务器一起团队化作战,大家工作都不在一个点上,岂不乱了套!”举一个例子,电商网站业务中,新增一条订单,那么势必会在订单表中增加了一条记录,该条记录中应该会有“下单时间”这样的字段,往往我们会在程序中获取当前系统时间插入到数据库或者直接从数据库服务器获取时间。那我们的订单子系统是集群化部署,或者我们的数据库也是分库分表的集群化部署, 然而他们的

2021-06-20 21:55:36 217

原创 分布式集群架构场景化解决方案:一致性Hash算法

分布式集群架构场景化解决方案:一致性Hash算法分布式和集群分布式和集群是不一样的,分布式一定是集群,但是集群不一定是分布式(因为集群就是多个实例一起⼯作,分布式将一个系统拆分之后那就是多个实例;集群并不一定是分布式,因为复制型的集群不是拆分而是复制)一致性Hash算法Hash算法,比如说在安全加密领域MD5、SHA等加密算法,在数据存储和查找方面有Hash表等, 以上都应用到了Hash算法。为什么需要使用Hash?Hash算法较多的应用在数据存储和查找领域,最经典的就是Hash表,它的查询效

2021-06-20 18:27:53 373 1

原创 Spring AOP源码剖析:Spring声明式事务控制

Spring AOP源码剖析:Spring声明式事务控制Spring声明式事务控制声明式事务很方便,尤其纯注解模式,仅仅几个注解就能控制事务了那这些注解都做了什么呢?好神奇!好厉害!@EnableTransactionManagement @Transactional1、 @EnableTransactionManagement@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Impor

2021-06-18 14:27:26 156 2

原创 Spring AOP源码剖析:代理对象创建流程

Spring AOP源码剖析:代理对象创建流程代理对象创建1、 AOP基础用例准备Bean定义@Componentpublic class LagouBean { public void tech(){ System.out.println("java learning......"); }}Aspect定义@Component@Aspectpublic class LagouAspect { @Pointcut("execution(* com.tao.*.*(..))")

2021-06-17 15:32:18 199 1

原创 Spring AOP 应用:Spring 声明式事务的支持

Spring AOP 应用:Spring 声明式事务的支持Spring 声明式事务的支持编程式事务: 在业务代码中添加事务控制代码,这样的事务控制机制就叫做编程式事务声明式事务: 通过xml或者注解配置的方式达到事务控制的目的,叫做声明式事务1、 事务回顾1.1、 事务的概念事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功。从而确保了数据的准确与安全。例如:A——B转帐,对应于如下两条sql语句:/*转出账户减钱*/update account set mone

2021-06-16 15:07:38 260

原创 Spring AOP 应用:三种配置及实现方式

Spring AOP 应用:三种配置及实现方式AOP本质:在不改变原有业务逻辑的情况下增强横切逻辑,横切逻辑代码往往是权限校验代码、日志代 码、事务控制代码、性能监控代码。1、 AOP 相关术语1.1、 业务主线在讲解AOP术语之前,我们先来看一下下面这两张图,在此基础上去进一步回顾AOP,不进行实现上图描述的就是未采用AOP思想设计的程序,当我们红色框中圈定的方法时,会带来⼤量的重复劳动。 程序中充斥着⼤量的重复代码,使我们程序的独立性很差。而下图中是采用了AOP思想设计的程序,它把红框部分的

2021-06-16 13:17:47 735

原创 Spring IOC源码剖析:lazy-init 延迟加载机制和循环依赖问题

Spring IOC源码剖析:lazy-init 延迟加载机制和循环依赖问题1、 lazy-init 延迟加载机制原理1、lazy-init 延迟加载机制分析普通 Bean 的初始化是在容器启动初始化阶段执行的,而被lazy-init=true修饰的 bean 则是在从容器里第⼀次进行context.getBean() 时进行触发。Spring 启动的时候会把所有bean信息(包括XML和注解)解 析转化成Spring能够识别的BeanDefinition并存到Hashmap里供下⾯的初始化时用,然后

2021-06-16 09:18:16 521

原创 Spring IOC源码剖析:BeanFactory创建流程及Bean创建流程

Spring IOC源码剖析:BeanFactory创建流程及Bean创建流程1、 BeanFactory创建流程1.1、 获取BeanFactory子流程时序图如下:1.2、 BeanDefinition加载解析及注册子流程1、该子流程涉及到如下几个关键步骤Resource定位: 指对BeanDefinition的资源定位过程。通俗讲就是找到定义Javabean信息的XML文件,并将其封装成Resource对象。BeanDefinition载入 : 把用户定义好的Javabean表示为Io

2021-06-15 19:28:43 652 2

原创 Spring IOC源码剖析:Spring IOC容器初始化主体流程

Spring IOC源码剖析:Spring IOC容器初始化主体流程1、 Spring IOC的容器体系IoC容器是Spring的核⼼模块,是抽象了对象管理、依赖关系管理的框架解决方案。Spring 提供了很多的容器,其中 BeanFactory 是顶层容器(根容器),不能被实例化,它定义了所有 IoC 容器必须遵从的一套原则,具体的容器实现可以增加额外的功能,比如我们常用到的ApplicationContext,其下更具体的实现如 ClassPathXmlApplicationContext 包含了解

2021-06-15 14:48:18 179

原创 Spring IOC高级特性:lazy-Init 延迟加载、FactoryBean 和 BeanFactory、后置处理器

Spring IOC高级特性:lazy-Init 延迟加载、FactoryBean 和 BeanFactory、后置处理器1、 lazy-Init 延迟加载Bean的延迟加载(延迟创建)ApplicationContext 容器的默认行为是在启动服务器时将所有 singleton bean 提前进行实例化。提前实例化意味着作为初始化过程的一部分,ApplicationContext 实例会创建并配置所有的singleton bean。比如:<bean id="testBean" class=

2021-06-11 14:01:51 496 2

原创 Spring IOC 基础应用:BeanFactory与ApplicationContext区别及三种配置方式

Spring IOC 基础应用:BeanFactory与ApplicationContext区别及三种配置方式1、 Spring IoC1.1、 BeanFactory与ApplicationContext区别BeanFactory是Spring框架中IoC容器的顶层接口,它只是用来定义一些基础功能,定义一些基础规范,而 ApplicationContext是它的一个子接口,所以ApplicationContext是具备BeanFactory提供的全部功能的。通常,我们称BeanFactory为S

2021-06-11 10:50:06 1308

原创 Spring 概述核心结构及核心思想

Spring 概述及核心结构1、 Spring 简介Spring 是分层的 full-stack(全栈) 轻量级开源框架,以 IoC 和 AOP 为内核,提供了展现层 Spring MVC 和业务层事务管理等众多的企业级应⽤技术,还能整合开源世界众多著名的第三⽅框架和类库,已经成为使⽤最多的 Java EE 企业应⽤开源框架。Spring 官⽅⽹址:http://spring.io/我们经常说的 Spring 其实指的是Spring Framework(spring 框架)。2、 Spring 发

2021-06-08 13:36:30 510 2

原创 简单实现自定义持久层框架,手写MyBatis实现基础功能

简单实现自定义持久层框架,手写MyBatis实现基础功能源码请点击–>手写持久层框架源码1、 分析JDBC操作问题public static void main(String[] args) { Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { // 加载数据库驱动 Class.forName("c

2021-06-04 14:14:09 161 1

原创 Mybatis源码剖析:延迟加载源码剖析

Mybatis源码剖析:延迟加载源码剖析1、什么是延迟加载?在开发过程中很多时候我们并不需要总是在加载用户信息时就一定要加载他的订单信息。此时就是我们所说的延迟加载。举个栗子* 在一对多中,当我们有一个用户,它有个100个订单 在查询用户的时候,要不要把关联的订单查出来? 在查询订单的时候,要不要把关联的用户查出来? * 回答 在查询用户时,用户下的订单应该是,什么时候用,什么时候查询。 在查询订单时,订单所属的用户信息应该是随着订单一起查询出来。延迟加载就是在需要用到数据时才进行

2021-05-27 16:56:52 563

原创 Mybatis源码剖析:二级缓存源码剖析

Mybatis源码剖析:二级缓存源码剖析二级缓存构建在一级缓存之上,在收到查询请求时,MyBatis 首先会查询二级缓存,若二级缓存未命中,再去查询一级缓存,一级缓存没有,再查询数据库。二级缓存------》 一级缓存------》数据库与一级缓存不同,二级缓存和具体的命名空间绑定,一个Mapper中有一个Cache,相同Mapper中的 MappedStatement共用一个Cache,一级缓存则是和 SqlSession 绑定。1、 启用二级缓存分为三步:1、开启全局二级缓存配置:<

2021-05-26 01:32:33 355 1

原创 Mybatis源码剖析:Mapper代理方式

Mybatis源码剖析:Mapper代理方式回顾下写法:public static void main(String[] args) { ... //前三步都相同 InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);

2021-05-26 00:18:44 139

原创 Mybatis源码剖析:传统开发方式源码剖析

Mybatis源码剖析:传统开发方式源码剖析1、 源码剖析-初始化Inputstream inputstream = Resources.getResourceAsStream("mybatisconfig.xml");//这一行代码正是初始化工作的开始。SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);进入源码分析:// 1.我们最初调用的buildpublic SqlSessionF

2021-05-25 22:37:20 84 2

原创 Mybatis架构原理:主要构件及其相互关系

Mybatis架构原理:主要构件及其相互关系1、架构设计我们把Mybatis的功能架构分为三层:API接口层:提供给外部使用的接口 API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。MyBatis和数据库的交互有两种方式:使用传统的MyBatis提供的API使用Mapper代理的方式数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。基础支撑

2021-05-25 19:13:40 221 2

原创 Mybatis插件:自定义插件、分页及通用Mapper

Mybatis插件:自定义插件、分页及通用Mapper1、 插件简介一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展。这样的好处是显而易见 的,一是增加了框架的灵活性。二是开发者可以结合实际需求,对框架进行拓展,使其能够更好的工 作。以MyBatis为例,我们可基于MyBatis插件机制实现分页、分表,监控等功能。由于插件和业务无关,业务也无法感知插件的存在。因此可以无感植入插件,在无形中增强功能。2、 Mybatis插件介绍Mybatis作为一个应用广泛的优秀的 ORM 开源框

2021-05-25 18:24:08 391 1

原创 Mybatis的一级缓存与二级缓存

Mybatis的一级缓存与二级缓存缓存就是内存中的数据,常常来自对数据库查询结果的保存,使用缓存,我们可以避免频繁的与数据库 进行交互,进而提高响应速度。Mybatis也提供了对缓存的支持,分为一级缓存和二级缓存,可以通过下图来理解:一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession 之间的缓存数据区域(HashMap)是互相不影响的。二级缓存是mapper级别的缓存,多个

2021-05-25 10:10:11 1199 1

原创 Mybatis注解开发:使用注解实现一对一、一对多、多对多查询

Mybatis注解开发:使用注解实现一对一、一对多、多对多查询1、 MyBatis的常用注解这几年来注解开发越来越流行,Mybatis也可以使用注解开发方式,这样我们就可以减少编写Mapper 映射文件了。我们先围绕一些基本的CRUD来学习,再学习复杂映射多表操作。@Insert:实现新增@Update:实现更新@Delete:实现删除@Select:实现查询@Result:实现结果集封装@Results:可以与@Result 一起使用,封装多个结果集@One:实现一对一结果集封装@Ma

2021-05-24 18:34:20 11484 14

原创 Mybatis复杂映射开发:一对一、一对多、多对多查询

Mybatis复杂映射开发:一对一、一对多、多对多查询1、 一对一查询1.1、 一对一查询的模型用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户一对一查询的需求:查询一个订单,与此同时查询出该订单所属的用户1.2、一对一查询的语句对应的sql语句:select * from orders o,user u where o.uid=u.id;查询的结果如下:1.3、 创建Order和User实体public class Order { private in

2021-05-21 15:59:39 886 6

原创 Mybatis配置文件深入:核心配置文件和映射配置文件

Mybatis配置文件深入:核心配置文件和映射配置文件1、 核心配置文件SqlMapConfig.xml1.1、 MyBatis核心配置文件层级关系1.2、 MyBatis常用配置解析1、environments标签数据库环境的配置,支持多环境配置其中,事务管理器(transactionManager)类型有两种:JDBC:这个配置就是直接使用了JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作 用域。MANAGED:这个配置几乎没做什么。它从来不提交或回滚一个连接,而

2021-05-21 15:14:47 685

原创 MyBatis基本应用:映射文件及Dao层实现

MyBatis基本应用:映射文件及Dao层实现1、 MyBatis的映射文件概述1.1、 入门核心配置文件分析MyBatis核心配置文件层级关系:MyBatis常用配置解析1、environments标签数据库环境的配置,支持多环境配置其中,事务管理器(transactionManager)类型有两种:JDBC:这个配置就是直接使用了JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作 用域。MANAGED:这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器

2021-05-21 10:54:37 761 1

zdy-spring.rar

手写简单版Spring,通过配置文件和自定义注解的方式,简单实现IOC和AOP

2021-07-13

zdy-mybatis.rar

手写持久层框架,实现mybatis基本功能

2021-06-04

空空如也

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

TA关注的人

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