自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

十三月

知道的越多,不知道的越多

  • 博客(18)
  • 问答 (1)
  • 收藏
  • 关注

原创 spring三级缓存不会还不懂吧?

/ spring容器里面的完整的单例池对象,但是与解决循环依赖无直接关系// 缓存单例的工厂,大家常叫的第三级缓存,其实叫第三级缓存并不合理// 这个所谓的二级缓存才是打破循环依赖的一个关键点// 缓存早期暴露的bean,这里的bean和singletonObjects里的bean是同一个// 只是它没有执行属性注入和初始化等其他操作。如果想透彻理解在这三个缓存里面,要去掉一级缓存 singletonObjects 的概念?

2023-09-18 23:25:41 87

原创 @ComponentScan 源码分析 (1)

ComponentScan用于扫描指定包下的类,将标注有@Controller、@Service、@Repository、@Component4个注解其中一个的类扫描到Spring容器,作为SpringBean。

2023-09-12 21:38:47 93

原创 @MapperScan和@Mapper 源码分析

Mybatis在与Spring集成的时候可以配置MapperFactoryBean来生成Mapper接口的代理。MapperFactoryBean的出现为了代替手工使用SqlSessionDaoSupport或SqlSessionTemplate编写数据访问对象(DAO)的代码,使用动态代理实现。

2023-09-04 21:24:26 269 2

原创 @Conditional条件注解源码分析

如何基于@Conditional实现自定义注入呢@Component@Component@Override。

2023-09-03 19:10:28 79

原创 @Configuration源码分析

这里取得是Threadlocal里面的内容对齐前面【testBean01 实例化】的过程中set的当前执行的带@Bean方法。当 @Configuration 存在时,TestBean.************** 打印一遍。做了一层判断:如果当前执行带@Bean方法方法不是当前调用的带@Bean方法,那么不再执行。当 @Component 存在时,TestBean.************** 打印一遍。当前调用的工厂方法是testbean02,而当前执行的方法是 testbean01,

2023-09-03 18:52:13 45

原创 @AutoConfigurationPackage 分析

springBoot默认扫描bean的配置是启动类的上一级目录,也是通过@AutoConfigurationPackage产生的(因为此注解翻译过来的意思就是自动注入包配置,容易理解偏差)而 AutoConfigurationPackage 更多的是提供了一个工具或接口,我们可以通过它获取自动配置的package列表。也就是说 ComponentScan 更多的是spring自用,AutoConfigurationPackage 是它用。

2023-09-03 18:50:20 70

原创 springboot默认不走selectImports分析

这里注册bean是采用 实现 ImportSelector接口的方式,但是springBoot这里用法有点特殊,参考我这个文档。

2023-09-03 18:48:47 118

原创 @EnableAutoConfiguration分析

spring框架的底层注解,它的作用就是给容器中导入某个组件类加载配置文件META-INF/spring-autoconfigure-metadata.properties,从中获取所有支持自动配置类的条件作用:SpringBoot使用一个Annotation的处理器来收集一些自动装配的条件,那么这些条件可以在META-INF/spring-autoconfigure-metadata.properties进行配置。

2023-09-03 18:27:55 98

原创 aqs condition await 是怎样被唤醒的?

aqs condition await 是怎样被唤醒的

2022-09-13 20:45:44 211 1

原创 微信小程序 - 自定义多层级复选框菜单

一、背景前段时间,帮忙朋友写小程序,甲方需要要求多层级复选框,【单元 - 楼层 - 设备】的关系,网上搜了一通,没有找到类似的,无奈只能手写一个…二 、效果展示要求1、初始化时,默认展开选中的菜单2、点击每一层父级菜单,会自动折叠其子菜单3、选中子级节点会默认选中父级节点4、子级节点都没选中默认取消选中父级节点5、选中父级节点默认选中其所有子级节点三、代码实现这里没写组件,如果需要可以改为组件。1、treeMenu2.jsjs里面的点击事件均为递归操作,我这里的数据只给了3层

2021-08-23 22:38:19 2302 4

原创 java 单体应用如何优雅的使用 fegin

问题:用过Spring Cloud的朋友都知道用 fegin 很香,甚至后来者居上的Spring Cloud Alibaba,仍然整合 fegin 作为服务调用组件。但是很多项目用不到微服务的,就是普通的单体应用,如何使用呢…feign 说明fegin发展简介com.netflix.feign 从2016 年后闭源,由 io.github.openfeign 来维护。feign是什么呢,fegin其实就是一个http客户端调度框架。底层 fegin默认情况下,使用的jdk 原生的 UrlC

2021-07-06 22:08:37 830

原创 (redis + lua脚本 )实现redis分布式锁

一、前言基于redis实现分布式锁,其实有很多,基于 redisson,基于 jedis,等都可以实现,springBoot 默认提供 redis 操作工具 redisTemplate ,我们可以基于它配合lua 进行实现。简单业务场景不需要使用redissonredisson本身其实是基于lua脚本来保证原子性的,使用redisson需要额外引用依赖,还要单独去配置,还要增加学习成本去了解redisson相关接口,但是如果我们的需求不是那么复杂,没有必要哦,完美分布式锁的几个条件1、 互斥性:在

2021-03-18 22:39:27 1508 4

原创 update中where条件把索引的字段一定要带上,否则会全表锁

一、问题描述:innodb下在对没用含有索引的表执行修改一条操作时,会导致锁全表。为什么:InnoDB行锁是通过给索引上的索引项加锁来实现的,只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁在实际应用中,要特别注意InnoDB行锁的这一特性,不然的话,可能导致大量的锁冲突,从而影响并发性能。下面通过测试,来探讨什么情况下才会锁全表。二、测试环境数据库版本: 5.7.29-log ( select version() )隔离级

2021-03-16 21:38:35 2460 1

原创 spring schedule 配置多任务动态 cron 【增删启停】

背景之前公司经常会遇到配置定时任务,简单的任务可以直接依赖spring即可。简单任务直接使用 @scheduled 注解配合@EnableScheduling,即可。开发原则是:在满足项目需求的情况下,尽量少的依赖其它框架,避免项目过于臃肿和复杂。主要研究spring 自带的schedule。常见的任务调度方式单机部署模式Timer: jdk中自带的一个定时调度类,可以简单的实现按某一频度进行任务执行。提供的功能比较单一,无法实现复杂的调度任务。ScheduledExecutorServi

2021-03-13 22:08:51 3661 14

原创 docker 安装 rabbitmq

说明:RabbitMQ服务器是用Erlang语言编写的,如何直接安装需要额外的erlang环境配置。官网: https://www.rabbitmq.com/download.html亦推荐docker安装1、拉取镜像我们选择带有“mangement”的版本(包含web管理页面);docker pull rabbitmq:3.8.9-management2、启动docker run -d --name rabbitmq3.8.9 -p 5672:5672 -p 15672:15672 \

2021-03-13 21:30:18 379

原创 【java -jar 】的正确打开方式

背景:之前遇到项目部署Jenkins和gitlabci 导致运行jar成功后,一直阻塞,无法中断,项目部署成功后,导致Jenkins控制台一直无法结束。原因是:对于没接触过这块运维,简单通过 java -jar 不加任何参数启动程序,就导致上面的问题。如何正确启动jar需要了解:jar包后台启动–nohup1、当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出java -jar xxx.jar 2、当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。

2021-03-08 23:36:58 515

原创 RabbitMq 如何保证消息不丢失

背景讲真的,只要你简历上写的有rabbitmq,面试一定会问,如何保证消息不丢失。当然在工作中,也很需要。下面是我使用中以及面试中,总结的。措施从3个层面去分析我们使用消息队列,一定会涉及三个模型。那么就要从这三个维度就分析。1、生产消息确保我们的正在发送的消息不被丢失,rabbitmq 给我们提供两种机制,同步和异步俩种方案1.1 、同步效率低,运用的事物机制,效率比较低 。(不推荐)1.2 、异步,异步使用的是异步监听。     

2021-03-05 23:59:55 2204 9

原创 HashMap面试灵魂几问

HashMap面试灵魂几问1、HashMap的默认容量?2、hash如何put,如何解决hash冲突2.1、如何计算hash值

2021-03-03 21:55:25 1595 13

空空如也

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

TA关注的人

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