自定义博客皮肤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)
  • 收藏
  • 关注

原创 数据不停机迁移步骤

2024-03-05 09:02:18 135

原创 手写MyBatis代码生成器Maven插件

在使用MyBatis时,需要根据库表结构编写一些通用的Mapper interface、XML、Entity,这些重复操作可以通过代码生成器自动生成,大大提高开发效率。velocityjavapoet本文使用直接生成Java代码,使用生成XML文件。

2023-07-31 15:57:53 199

原创 @Value源码解读

KaTeX parse error: Expected 'EOF', got '#' at position 5: {} 和#̲{}的能力,默认解析。: 配置文件、Environment variables、Program arguments、VM options等。,对每一个Bean的初始化过程定义了很多了钩子做处理。{},可以继承该类自定义解析字符和解析方式。其中,value可输入。

2023-05-29 18:46:07 209

原创 TransmittableThreadLocal和ThreadPoolTaskExecutor

ThreadLocal用于线程隔离,常用与纪录用户登陆状态、事务状态等。在链路追踪中,也可用于记录TID,但通常遇到线程池时,即时使用时TID无法被传递到执行线程中,归根结底是因为,而ITL只能在线程创建时继承父类线程的变量,而在任务执行时,父类这些变量可能已经变化了,这时是无法同步到ITL的。

2023-05-19 15:25:55 383 1

原创 Java stream流处理常用操作

【代码】Java stream流处理常用操作。

2023-05-15 10:22:30 160

原创 Netty中的HttpServerCodec和HttpObjectAggregator

会将一个Http请求分为多个数据类型,如请求头、请求体、数据过大时分片(有限状态机实现),后续的ChannelHandler可以根据不同的类型来处理,如果想直接处理完整的Http请求,可在pipeline后面加上。作为HttpServer,需要加入来自client的Request的Http协议的Decoder和server回复Response的Http协议的Encoder,而这两个部分集成在了Netty提供的。(只处理入站请求),该类会聚合一个请求的所有东西生成一个。都继承自该类,而这里。

2023-04-13 14:41:41 715

原创 Maven依赖冲突分析和解决

使用maven管理jar包依赖时,可能会出现jar包版本冲突,不同版本的api调用方式可能不同,会出现和问题,甚至编译不通过,如:在的3.8.1版本中方法在3.4版本中不存在相同的函数签名方法,如果使用该api并依赖到了低版本会编译不通过。

2023-04-11 14:40:15 769

原创 定时任务:从Timer、STPE、Quartz 到 XXL-JOB

注意,心跳检测是执行器向调度中心每隔30s向*/api/registry*发送心跳(参见`ExecutorRegistryThread`),该api同样也是注册接口;而执行器端的 */beat*是调度中心在Failover路由模式下向执行器分配任务时主动检测时用的,只能说作者api命名地太抽象了:see_no_evil:。

2023-04-09 01:41:02 703

原创 java原生http/https请求

java原生http/https请求。

2023-04-08 18:58:45 205

原创 spring-retry注解调用原理

则默认重试执行3次,之后再去执行recover方法。可以设置异常类型、重试次数、退避策略。的一部分,后来单独成为一个项目了。调用service方法如果抛出。

2023-04-01 14:44:04 275

原创 OpenFeign 源码解读:动态代理+负载均衡实现

由于实现了懒加载,所以并不会在应用启动时就开始OpenFeign生成代理的流程。接口实现类最终执行远程调用,Client接口实现类中可以实现负载均衡(默认实现是。,所以即使存在重复类型的bean,依然会走OpenFeign的代理。实现负载均衡(OpenFeign老版本通过Ribbon实现负载均衡)的接口方式时,spring会自动依赖注入,此时会使用。只能注解在接口上,且该接口的所有方法都必须有。中拿代理对象,动态代理和负载均衡实现的入口。),注意OpenFeign的负载均衡需要引入。开启服务,该注解标有。

2023-03-29 22:44:23 1348

原创 Spring Transaction 源码解读

判断是否存在事务应用事务传播方法暂停或恢复事务提交时检查rollback-only标识对回滚做适当修改(直接回滚?还是设置rollback-only标识)调用事务同步器回调方法(如果同步器开启)关于事务同步器:callbacks事务同步器相当于一个事务扩展点,在事务的最后阶段提供了事务同步器的方法方便扩展,接口提供了四个回调方法#beforeCommit #beforeCompletion #afterCommit #afterCompletion事务同步器由进行管理,所有的。

2023-03-24 22:39:00 1361 2

原创 Spring 远程加载配置

可以看到从远程获取配置都是通过向ConfigurableEnvironment插入从远程获取的数据转化的PropertySource。而从远程获取就涉及到长轮询、本地缓存等内容,设计都比较一致。

2023-03-22 21:35:27 524 1

原创 Spring AOP及代理类执行顺序

关于 Spring AOP和Aspectj的关系,两个都实现了切面编程,Spring AOP更多地是为了Spring框架本身服务的,而Aspectj具有更强大、更完善的切面功能,我们在写业务时一般使用AspectJ。不过他们的概念、原理都差不多。Spring AOP说:可参考AspectJ项目中提供了@AspecJ注解,Spring interprets the same annotations@AspectSpring AOP提供了定义切面的两种方式。

2023-03-19 10:42:19 617

翻译 Spring Transaction Management

Spring事务抽象的关键是的概念。定义在接口该接口的实现可以通过spi机制或直接编码的方式引入IoC容器。无论是编程式事务还是声明式事务,该接口的实现都很重要。该接口方法抛出的运行时异常。方法入参返回。对象可以代表一个新的事务,或者一个已经存在的事务,JavaEE中和执行线程绑定(Isolation:隔离级别Propagation:事务传播方式,如果一个事务已经存在,此时又有一个事务发生如何处理?timeout:超时时间Read-only status:只读状态。

2023-03-19 00:04:01 135

原创 Spring 中的事件发布与监听

主要代码在包中引入@Component关于注解方法注入是通过的一个,同时该类也是一个,但扫描方法和注入逻辑不在该接口的方法中,而是接口的方法。关于的接口作用注释如下:看到其作用和类似,用于构造函数后的初始化操作。

2023-03-17 22:43:47 1529 2

原创 Java中的校验:Jsr 303规范和Spring的适配扩展

以上的场景是基于web的,实际上不管是*Jsr 303*规范本身的目的还是*Spring Validation*中提供的*Jsr 303*支持都不仅仅可以做web数据校验,像Swing或Ui层等都可以进行校验。*Spring Validation*更像是一种适配Spring体系的领域建模。

2023-02-28 18:08:12 544

原创 Dubbo 源码解读:负载均衡策略

该abstract类只有一个作用:获取provider的权重,提升代码复用率。注:如果provider没有提供weight参数,则默认为100.其中,random和roundrobin加权时每次都起作用;而和是在存在符合选取条件的provider有多个时使用加权随机在其中选一个;consistenthash没用到。

2023-02-25 11:44:23 757

原创 SPI机制源码:JDK Dubbo Spring

不管是哪一类,基本结构步骤就是1. 获取类加载器2. 利用类加载器在固定路径加载SPI文件,`ClassLoader#getResources`生成`Enumeration`对象(通常只有一个`URL`)3. 对URL对象实施解析,获取实现类全类名4. 反射实施类加载 `Class#forName` $\rightarrow$ `Constructor#newInstance`

2023-02-23 21:15:52 456

原创 Spring Security 源码解读:OAuth2 Authorization Server

Spring Authorization Server刚发展不久,还没有springboot版本,而Resource Server有,但是两个底层很多不兼容,会重复引入不同版本的jar包。这里我将AuthorizationServer和ResourceServer分开实现,但是都用的是spring-security的依赖:

2023-02-15 12:34:49 2672

原创 Spring Security 源码解读:权限控制

本文样例代码地址:。本文使用Spring Boot 2.7.4版本,对应Spring Security 5.7.3版本。

2023-02-09 17:31:05 909

原创 Spring Security源码解读:前后端分离中异常处理

本文样例代码地址:。关于Spring Security中OAuth2.0在前后端分离架构下的授权流程可以参考:。本文使用Spring Boot 2.7.4版本,对应Spring Security 5.7.3版本。

2023-02-08 15:44:34 463

原创 Spring Security 源码解读:OAuth2.0 Login Client

本文样例代码地址:关于OAuth2.0简介可以参考:关于Spring Security中OAuth2.0在前后端分离架构下的授权流程可以参考:关于OAuth2.0 Login在Spring Security中实现基本原理,可参考官网文档:另外,OAuth2.0协议初衷是用来做授权的,而不是认证(特殊的授权)。在此协议的进一步衍生出了 OpenID Connect (Oidc)协议专门应对OAuth2.0认证。具体关于这两个协议的区别,可以参考。

2023-02-05 23:29:31 984

原创 Spring Security 源码解读 :Username/Password认证

Spring Security 关于username/password方式登录

2023-02-04 18:33:02 1361

原创 Spring Security 源码解读 :认证总览

spring security 认证总览

2023-02-03 21:50:41 707

原创 Spring Security 源码解读 :基本架构及初始化

Spring Security 源码解读

2023-02-02 20:16:57 1453

原创 从 Spectral Clustring 推导到 Regularized Diffusion Process

谱聚类公式推导,以及regularized diffusion process:LGC公式推导

2023-01-17 21:48:32 350

原创 MySQL8.0-Replication简介和配置

mysql复制简介

2022-12-29 19:08:34 1497

翻译 ProxySQL快速入门

ProxySQL

2022-12-26 18:44:05 533

原创 Next.js项目部署,使用Nginx和pm2

部署Next.js项目

2022-12-17 22:23:10 5956 5

原创 基于react-markdown组件自定义一个Markdown显示器

react-markdown自定义组件

2022-11-24 13:06:22 887

原创 hardhat开发dapp初始化操作

hardhat初始化项目基本操作

2022-11-05 20:23:35 2086 1

原创 前后端分离架构下的OAuth2.0授权流程

前后端分离架构下spring security oauth2.0

2022-10-02 15:53:40 3876

原创 关于SELECT...FOR UPDATE到底锁表还是锁行

select ... for update 既锁表也锁行

2022-09-25 21:01:21 830 3

原创 会议室使用最长时间-荣耀笔试

荣耀笔试题

2022-08-26 10:18:28 657

原创 MySQL表字段数量限制以及行大小限制

mysql表字段限制和row size limits

2022-07-21 15:48:25 7576

原创 基于docker(docker-compose)的 mongodb初始化导入json文件数据

docker mongodb 初始化导入json数据

2022-07-07 23:10:21 2191

原创 SpringBoot application.yml/.properties配置文件加载过程

参考:Springboot源码之application.yaml读取过程SpringBoot配置文件一般为application.yml或application.property等,其加载流程在SpringApplication的run()方法中的ConfigurableEnvironment environment = prepareEnvironment(listeners, applicationArguments);中完成,当环境准备好会触发EventPublishingRunListener i

2022-03-03 11:54:07 1968

原创 SpringCloud 服务注册之nacos实现

如下图,org.springframework.cloud.spring-cloud-commons包下定义了一系列接口,其中就包括serviceregistry的系列规范,并通过SPI机制去调用接口实现。在该包的META-INF/spring.factories文件中,可以找到EnableAutoConfiguration.class为key的value中有AutoServiceRegistrationAutoConfiguration.class这一项。来看看这个AutoServiceRegis

2022-03-02 12:45:35 1056

原创 SpringBoot中@Conditional注解

先放个图,回头补充

2022-02-05 20:32:51 305

空空如也

空空如也

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

TA关注的人

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