- 博客(11)
- 收藏
- 关注
原创 SpringBoot分布式锁-Distributed-Lock
分布式锁: Distributed-Lock一、简介 Distributed-Lock为解决分布式系统中资源争夺而生。在当前分布式、微服务架构盛行的年代,多个服务可能会对第一个资源进行抢夺,如果不加以控制,可能导致无法想象有点后果,或者有一些操作不可以同时多次操作。 1、数据的存储目前只支持三种:Redis、Zookeeper、Mysql,推荐使用Redis。 2、支持超时自动释放锁,防止死锁问题 3、使用简单方便,侵入式较低,代码只需要一个注解 4、锁的资源ID以
2020-10-13 17:36:11 7765
原创 Nacos注册整体流程源码分析
前言不管是使用spring boot的方式集成nacos还是使用spring cloud alibaba方式集成或者是单独使用nacos。最终具体实现注册或者获取服务实例的方法都是使用的 nacos-client包,nacos-api只是定义了接口,具体的操作还是 nacos-client完成的。我们的项目中集成nacos在整个nacos的接入中是客户端的角色,而所有数据的存储以及维护是有单独的nacos server来实现的,nacos的客户端与服务端是通过http的形式来通讯的。本文只介绍nacos的
2021-11-05 18:16:03 300
原创 sharding-jdbc-spring-boot-starter最简单使用
前言网上已经有很多的关于sharding-jdbc的使用,但是很多都是抄来抄去,说的也不是特别的完整,作者本来是闲来无事想跑起来试一下效果,但是找了一些文档都不是说的很明白。而且很多都是使用的是sharding-jdbc-core ,但是我们现在开发应该很少用spring mvc开发吧,大部分都是springboot开发,所以还是想用starter的方式。经历不断试错后搭建起最简单的、配置代码最少的测试案例。如果帮助到了你帮忙点赞啊。一、引入依赖mybatis-spring-boot-starter
2021-11-03 17:22:06 3896
原创 阻塞队列BlockingQueue(ArrayBlockingQueue)源码分析
阻塞队列有多种实现,这里我们就先分析一下ArrayBlockingQueue,该队列获取数据、插入数据、检测数据的方式有多种,但是不同的方法会有不同的效果,比如插入数据时,如果队列已经满了,调用add方法插入会抛异常,但是是有put插入数据就会阻塞当前线程。具体的效果查看下面的图。这里我们只是重点查看阻塞的方法,put和take两个方法,看他是怎么做到阻塞的。1. 创建一个有界阻塞队列,长度为2BlockingQueue<Integer> queue = new ArrayBlockin
2021-05-13 11:54:22 97
原创 AQS(AbstractQueuedSynchronizer)总结
AQS是一个同步队列,它是一个抽象类,并不会单独使用,主要用途是处理多线程竞争,将未获取到锁的线程进行排队,其中除了维护一个队列之外,还有两个值比较关键,分别是: state 标记位 exclusiveOwnerThread 当前所属线程 维护队列的两个参数分别是: Node head 同步队列头节点 Node tail 同步队列未节点 维护的队列是一个双向链表,指向来上一个和下一个节点。AQS是JUC的基石,类似于CountDownLat...
2021-02-10 01:45:30 167
原创 Mybatis自动装配源码分析
一、springboot整合mybatispom引入<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version></dependency>mybatis的starter工程的作用只是用来导入相关
2020-12-03 17:56:33 666
原创 Mybatis与Spring整合部分源码分析
一、@MapperScan注解解析@MapperScan(basePackages = "com.ziroom.springboot.springbootsourcetest.mapper")@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(MapperScannerRegistrar.class)@Repeatable(MapperScans.class)public @interf
2020-12-02 17:08:21 241 2
原创 Mybatis执行流程源码分析
一、SqlSessionFactoryBuilder构建该方法用于创建SqlSessionFactory,包含下面几种类型的方法,用于创建SqlSessionFactorypublic SqlSessionFactory build(InputStream inputStream)public SqlSessionFactory build(InputStream inputStream, String environment)public SqlSessionFactory bui
2020-11-29 22:08:52 129
原创 关于使用nacos遇到的坑
在使用spring cloud nacos遇到的坑1、版本不同,artifactId也不同<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.0.RELEASE</version> <type>pom</t
2020-06-29 12:17:47 3321 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人