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

原创 Spring Aop原理

advisor就是切面,advice是增强器也就是通知,Pointcut就是切入点。了解jdk动态代理的,最后一个参数为InvocationHandler,JdkDynamicAopProxy是实现了InvocationHandler的,当通过代理对象调用目标方法时,其实是会进入InvocationHandler的invoke方法,那么核心逻辑就是org.springframework.aop.framework.JdkDynamicAopProxy#invoke这个方法。接下来我们就拆成几块研究。

2023-06-13 10:59:58 276

原创 Nacos Spring Cloud如何加载nacos服务端配置文件

所以该文件的优先级为dataIdPrefix.profile.fileExtension>dataIdPrefix.fileExtension>dataIdPrefix,掌握了这些后,我们在读取配置文件时就不会出现明明配置的是这个属性为什么变成其它了,此时您就需要思考一下是不是被别的配置文件覆盖了,别的配置文件优先级是否比你高。最终会调用到com.alibaba.cloud.nacos.client.NacosPropertySourceLocator#locate方法。是如何加载的通常情况下。

2023-06-07 14:46:06 756

原创 ThreadPoolExecutor

ThreadPoolExecutor

2023-03-28 14:22:03 177

原创 ThreadLocal源码解析

ThreadLocal

2023-03-14 20:00:53 130

原创 实现幂等性的3种方案

幂等性

2022-11-04 11:09:17 1992

原创 CyclicBarrier源码解读

CyclicBarrier

2022-07-13 11:29:42 157

原创 ReentrantLock解读

ReentrantLock

2022-07-12 17:33:35 347

原创 @RefreshScope工作原理

@RefreshScope原理

2022-06-06 15:53:16 5828

原创 spring自动注入与手动注入得区别

一、手动注入了解spring得同学都知道,在早期得版本spring是通过xml方式配置得,我们通常往bean中注入一个属性要么提供<property/>标签通过set方法完成注入要么提供<constructor-arg/>标签通过构造方法注入,这种显示得指定我们需要注入得属性叫做手动注入二、自动注入我们只需设置bean得注入方式并提供对应得set方法或者构造方法,spring就会自己分析方法完成注入,这就是我们常说的自动注入,但要注意得是我们经常使用得@Autowired

2022-05-30 11:39:36 1679

原创 面试必问:谈一下sql优化

平时工作中数据库操作都是以mysql为主,所以主要谈一下对mysql的优化。mysql优化主要包含三点。1.操作系统级别的;2.应用程序相关的;3.mysql自身相关的。一、针对操作系统我们能优化的不会太多,而且收益也不会很明显。一般都是针对cpu和io性能进行调整;二·、应用程序这块,首先在设计表时一定要考虑周到,这是一切sql优化的基础,另外也许考虑到业务的数据量,是否需要进行分库分表,是否需要进行冷数据存储,又或者是否需要加入缓存。三、最后一点sql优化,这也是我们需要考虑最多的,也是收.

2022-05-24 14:58:15 327

原创 @Transaction源码解读

@Transaction注解相信读者们肯定都用过,spring通过这种注解式声明事务,使我们开发者无需关注与数据库的事务编写,更多的关注到业务逻辑的代码编写上,使编码更加简单,但是@Transaction是如何工作的,以及面试中常问到的事务的传播行为是怎么一回事,我们还是有必要了解一下,本文将带你从源码层面上理解这这些东西,如有错误欢迎各位指正并讨论。当我们需要使用@Transaction注解声明事务时,必须先要使用@EnableTransactionManagement开启事务注解的支持,现在大多.

2022-05-10 18:15:59 1151 1

原创 spring如何解决循环依赖

本文将从spring如何解决循环依赖,以及那些情况下的循环依赖无法解决来分析,由于笔者水平有限,若有错误的地方望各位纠正并讨论。一、循环引用示列众所周知再spring中单列bean是支持循环依赖的,下面看代码:A.class代码:@Componentpublic class A { @Autowired private B b; public A(){ System.out.println("init A"); } }A中注入了一个B;B.class代码.

2022-04-28 14:43:59 15880 4

原创 @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)也会导致死锁吗?

线上的服务,突然就卡死了,整个服务不可用了,必须要重启才能解决,但重启过后,过一段时间就又出现了,后来通过jstack命令排查到是获取数据库连接对象时,tomcat的线程阻塞在那里导致线程被耗尽(Connection newCon = obtainDataSource().getConnection();),最终造成服务不可用。但究竟是什么原因造成获取连接一直阻塞呢?后来通过压测发现只要并发数超过了连接池的最大连接数,这个问题就必现,下面的代码是模拟生产的代码写的demo操作表A...

2022-04-27 10:24:48 3383

原创 基于springcloud开发的微服务,由于条件注解@ConditionalOnProperty导致负载均衡路由失效的问题

由于笔者水平有限,整理的可能和您理解的略有偏差,还望在评论区指正并讨论。本项目基于eureka+zuul+openfeign等组件搭建的微服务架构,因业务需求需要设计一套类似于灰度发布的路由转发,可以理解为就是根据接口参数路由到哪一个版本的服务,本系统将服务设计为hd和prd,在每一个服务下面都会添加一个eureka的元数据信息如:-Deureka.instance.metadata-map.version=hd,就是根据这个参数实现的路由转换。下面请看路由规则的代码: 路由规则....

2022-04-26 15:14:42 1519

原创 源码层面理解@Component和@Configuration

相信看见这篇文章的小伙伴都使用过Spring的@Component和@Configuration注解。这里就不详细讲解它俩的使用方法了,下面我们先看一下示列:A.class代码public class A { public A(){ System.out.println("init A"); }}B.class代码public class B { public B(){ System.out.println("init B"); }}使用@Configuratio

2022-04-25 17:23:12 429

空空如也

空空如也

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

TA关注的人

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