- 博客(22)
- 资源 (1)
- 收藏
- 关注
原创 设计模式之旅:实时更新的观察者模式
观察者模式是设计模式中的一种行为型模式,用于定义对象之间的一对多依赖关系。当一个对象的状态发生变化时,所有依赖于它的对象都会被自动通知并更新,从而实现对象之间的松散耦合。
2024-08-15 14:44:08
399
原创 Spring Event 的幕后故事
Spring Event 基于发布-订阅模式(观察者模式),使得系统中不同模块可以通过事件进行松散耦合的通信,而不需要直接依赖彼此。
2024-08-15 14:41:31
776
原创 分布式锁及实现方案
锁是在多线程环境下,实现多线程访问同一共享资源时,保证在任何给定时刻只有一个线程可访问共享资源所做的一种标记。而分布式锁是当多个进程不在同一个系统中,用分布式锁控制多个进程对资源的访问。
2024-06-21 15:09:41
1005
原创 SpringBoot自动装配过程
Spring和SpringBoot最大的区别就在于:SpringBoot自动注册Bean以及初始化组件,简化我们的开发,实现真正的自动装配
2024-06-21 15:09:06
516
原创 炫技Groovy!SpringBoot中的动态编程
在我们日常的开发过程中,经常会遇到一些功能的逻辑变更很频繁的需求,本文分享的就是利用Groovy脚本在Spring Boot项目中实现动态编程解决这一问题,使业务逻辑的动态化,极大地提升了开发效率
2024-06-05 16:37:28
500
原创 MyBatis初始化基本过程
MyBatis初始化方式 MyBatis初始化提供了两种方式: 基于XML配置文件和基于Java API,本文主要基于XML配置文件的方式,来深入讨论MyBatis是如何初始化的
2024-06-05 16:35:50
898
原创 简单实现服务端实时推送消息
最近工作中这样一个需求,在商城首页需要实时展示每个品类商品的成交量,即客户端需要实时获取服务端消息,本文就主要介绍一种简单实现方案SSE
2024-04-12 16:35:20
329
原创 彻底搞懂ScheduledThreadPoolExecutor
在很多业务场景中,我们可能需要周期性的运行某项任务来获取结果,本文主要分享支持周期性任务调度的线程池ScheduledThreadPoolExecutor
2024-04-08 14:49:45
1459
原创 基于Spring Aop+SpEL优雅地记录操作日志
在我们工作的日常开发中,我们经常会遇到需要记录用户的操作日志的需求,这个需求本身不是很难,但是如何让操作日志不和业务逻辑耦合?如何优雅的记录操作日志?
2024-04-02 16:28:37
795
原创 彻底搞懂Spring IOC
IOC(Inversion of Control),即控制反转,Spring IOC容器管理了定义的各种Bean对象及其相互的关系,降低了耦合度
2024-04-02 16:08:00
387
原创 RabbitMQ延时任务:订单超时取消
在电商项目中,我们经常会遇到这样的需求:客户下单成功后,在一定的时间内未能按时(具体时间由业务规则决定)支付,需要将订单自动取消,释放占用的商品库存。类似于这样的需求(延时任务),我们该怎样解决呢?
2024-04-02 15:59:15
619
原创 彻底搞懂JAVA SPI
SPI(Service Provider Interface)是JDK内置的一种服务提供发现机制,这种机制通常用于插件架构或模块化系统,使得开发者可以轻松地添加或替换系统中的组件
2024-04-02 15:56:30
393
原创 彻底搞懂Spring AOP
AOP(Aspect Oriented Programming)是一种面向切面的编程思想 Spring AOP 作为Spring最核心的能力之一,基于动态代理
2024-04-02 15:52:49
932
原创 彻底搞懂CGLIB代理
CGLIB是一个强大的高性能的代码生成库,它使用运行时字节码操作,可以动态创建类或修改现有类,CGLIB动态代理的主要优点是可以对任何类进行动态代理,不需要实现任何接口
2024-04-02 15:45:52
831
原创 玩转SpringBoot动态定时任务(启动、暂停)
最近在做一个项目,需要用到动态定时任务,现在比较普遍的做法是集成第三方框架(例如Quartz、XXL-JOB),但是基于项目本身的复杂度和使用场景,使用springBoot自身带有的定时任务框架来实现
2024-04-02 14:47:41
1058
原创 彻底搞懂JDK动态代理
本文介绍了JDK动态代理的基本原理、创建步骤及其原理。动态代理提供了在运行时动态改变目标对象行为的能力,广泛应用于AOP编程、远程方法调用和测试框架等领域。虽然性能开销较大,但其简单易用
2024-04-02 14:45:49
512
原创 Zip、Rar文件解压
一、ZIP文件解压借用第三方工具解压Zip4J, Zip4J是一个开源的 Java 处理 zip 压缩文件的开发包。Zip4J功能比较完备,这里只用了简单的解压 1.导入依赖<dependency> <groupId>net.lingala.zip4j</groupId> <artifactId>zip4j</artifactId> <version>1.3.2</version&g...
2020-11-03 15:15:18
1035
原创 Redis主从+哨兵的搭建
一、原理简单说明主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性 哨兵机制(sentinel):当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。二、Redis的安装这里就不详细说怎么安装redis,不会的可以去搜一下,网上有一大堆写的很好的。我这里是用docker安装的redis。三、部署方案 role ip port ma
2020-05-18 15:31:20
210
原创 Mybatis(1)--Mybatis架构分析
MyBatis的框架设计SqlSession执行流程: 注:本文主要参考了《深入理解mybatis原理》 MyBatis的架构设计以及实例分析...
2019-08-14 16:06:25
148
原创 Java中break标记、continue的使用方法
break适用范围:只能用于switch或者是循环语句中。break作用:1. break用于switch语句的作用是结束一个switch语句。2. break用于循环语句中的作用是结束当前所在的循环语句。示例1:普通的break public static void main(String[] args) { for(int i=0;i<3;i++){...
2019-07-16 11:36:25
617
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人