自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 手写mybatis插件之分页查询

控制台sql信息发现分页插件已经生效。分页工具类(保存分页数据)mybatis配置文件。

2024-02-24 17:01:29 441

原创 手写mybatis插件之监控慢sql

通过拦截StatementHandler对象的query方法获得sql的执行时间,如果是慢sql则执行对应业务(一般是日志记录)mybatis配置文件。

2024-02-24 15:13:32 475

原创 SpringBoot之事务源码解析

spring事务源码

2024-02-07 20:34:23 2261 1

原创 Spring之aop源码解析

aop就是面向切面编程,是为了解耦而生。aop是不仅工作常用而且面试也经常问,所以看aop源码是非常有必要的。在看源码之前,我们先要带着结论去看源码,而不是一上来看的一脸懵逼,一定要先总后分。aop的流程就是在spring的生命周期过程中,会缓存所有的切面,然后在bean初始化的时候,它会找当前bean的所有方法是否跟缓存中的切面有匹配的,如果匹配,说明需要代理并创建代理对象,当调用被增强方法时,执行代理逻辑。本文基于springboot2.3.5.RELEASE,如果有错,欢迎指出。

2024-02-05 12:55:37 927 1

原创 redisson源码解析

由于synchronized跟ReetrantLock是JVM级别的锁,在分布式情况下失效,这时候我们通常会选择redisson基于redis封装好的分布式锁。下面我们一起来分析以下redisson的源码。

2024-02-03 17:40:24 1006 1

原创 ArrayList源码解析

ArrayList是我们工作中最常用之一的集合工具。正所谓工欲善其事必先利其器,阅读ArrayList源码是非常有必要的,学习其中的思想,能够帮助我们发现bug,解决bug,写出更优雅的代码。

2024-02-02 01:19:27 1080

原创 ReentrantReadWriteLock之深入源码解析

ReentrantLock是排他锁,在高并发读多写少的场景下,同时还要保证线程安全,如果使用ReentrantLock的效率不是那么好,所以才有了ReentrantReadWriteLock。在讲源码之前,我们对读写锁要有个认知。读读操作是共享的。读写操作是互斥的。写写操作是互斥的。写读操作是互斥的。(写读两个不同线程)单线程获取写锁后,再次获取读锁,可以拿到。(写读操作可以重入)单线程获取读锁后,再次获取写锁,不可以拿到。

2024-02-01 02:10:17 1476 1

原创 ReetrantLock源码分析

ReentrantLock是juc包下提供的互斥锁,在多线程情况下只有一个线程能够运行指定代码。在早期的jdk版本中,ReentrantLock的性能要比synchronized好。下面我们一起研究一下ReentrantLock的代码。

2024-01-31 01:11:05 1011 1

原创 SpringBoot整合mybatis源码

mybatis跟SpringBoot的整合就是利用spring注解跟spring的扩展点将mybatis一些重要的类注入到容器中从而完成整合。

2024-01-30 01:43:38 959 1

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

观察者模式(Observer Pattern)是一种对象行为模式,它定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在观察者模式中,有一个主题(也称为可观察对象)和多个观察者(也称为观察对象)。当主题的状态发生变化时,它会主动通知所有注册的观察者,以便观察者进行相应的更新操作。观察者模式主要解决的是当对象间存在一对多关系时,当一个对象被修改,会自动通知依赖它的其它对象。它通常被用来实现事件处理系统、实现业务对象之间的交互、权限管理等方面。

2024-01-28 01:15:45 807

原创 SpringBoot自动装配原理之深入源码解析

我们简单总结一下springboot的自动装配就是springboot在启动的过程中,会将我们的启动类注入到容器内,类型是AnnotatedGenericBeanDefinition,在spring的refresh方法中,会调用ConfigurationClassPostProcessor的增强方法,它会将启动类封装成ConfigurationClass并解析启动类上的Import注解,而Import注解内的类实现了ImportSelector接口,会调用。

2024-01-26 21:20:51 1713 1

原创 女人化妆跟设计模式-装饰器模式有什么关系?

装饰器模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。这样,可以在不修改原始服务类的情况下,动态地给服务对象添加日志记录的功能。这样,可以在不修改原始服务类的情况下,动态地给服务对象添加性能增强的功能。缓存处理:装饰器模式可以用来实现缓存处理的功能。这样,可以在不修改原始服务类的情况下,动态地给服务对象添加缓存处理的功能。这些只是一些装饰器模式在企业应用中的例子,实际上,只要有需要在不修改原始类的情况下动态地给对象添加功能的场景,都可以考虑使用装饰器模式。

2023-12-11 22:57:00 582 1

原创 责任链模式是企业开发中最常用的设计模式之一

责任链模式是一种设计模式,它定义了一个责任链,链上的每个对象都有机会处理请求,直到某个对象处理该请求为止。这种设计模式可以避免请求发送者与接收者耦合在一起,使得多个对象都有可能接收请求,并且可以动态地重新组织和分配责任。

2023-12-04 21:40:16 453

原创 2023年了还有人不会策略模式?

策略模式是一种行为设计模式,它使得你能在一个上下文对象中动态地切换不同的算法或行为。策略模式定义了一系列算法,并将每一个算法封装起来,使它们可以相互替换。策略模式使得算法可以独立于使用它的客户端。在策略模式中,我们创建了一个抽象策略类(Strategy),这个类定义了所有策略应该具有的接口。然后,我们为每种策略创建了一个具体的实现类。客户端根据当前的情况选择一个具体的策略。策略模式优点:1.避免了多重条件判断增加系统的复杂性2.算法独立于客户端,算法的修改不会影响到客户端代码。

2023-12-03 21:30:11 476

原创 带你理解java设计模式-工厂模式

带你快速理解java设计模式中的工厂模式,代码清晰易懂

2023-11-16 21:29:34 201

空空如也

空空如也

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

TA关注的人

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