- 博客(76)
- 资源 (1)
- 收藏
- 关注
原创 AQS系列之Condition解析
AQS系列之AbstractQueuedSynchronizer基础分析AQS系列之以排斥锁分析AQS系列之共享锁解析AQS系列之共享锁的应用解析:SemaphoreAQS系列之共享锁的应用解析:CountDownLatchAQS系列之排斥锁的应用解析:ReentrantLockAQS系列之排斥锁和共享锁的结合:ReentrantReadWriteLockAQS系列之Condition解析AQS系列之Condition解析一、简介一、简介Condition是AQS中基于排斥锁的另一
2022-01-14 23:36:34
1717
原创 限流系列之RateLimiter解析(二):SmoothWarmingUp
限流系列之RateLimiter解析(一):SmoothBursty限流系列之RateLimiter解析(二):SmoothWarmingUp限流系列之RateLimiter解析(二):SmoothWarmingUp一、简介二、创建和初始化一、简介SmoothWarmingUp是guava提供的另一个限流工具类,与SmoothBursty不同的是,SmoothWarmingUp在固定速度的基础上增加了预热流程,可以更好的应对突发流量。另外,在初始化和小流量时更慢得进行流量得提供也符合实际的应用场
2021-12-31 23:36:59
1696
原创 限流系列之RateLimiter解析(一):SmoothBursty
限流系列之RateLimiter解析(一):SmoothBursty限流系列之RateLimiter解析(一):SmoothBursty一、简介1. 类图2. 原理二、创建和初始化一、简介限流是服务治理的重要工具,在google的guava包里提供了关于速率限流器RateLimiter,可以帮助我们针对速率进行限流。1. 类图2. 原理SmoothBursty是关于限流算法中令牌桶算法的一个实现,通过固定速率生成令牌,当流量进入时,申请令牌,令牌充足时则直接获取成功,不充足时返回等待时间。
2021-12-30 23:31:44
1418
原创 AQS系列之排斥锁和共享锁的结合:ReentrantReadWriteLock
AQS系列之AbstractQueuedSynchronizer基础分析AQS系列之以排斥锁分析AQS系列之共享锁解析AQS系列之共享锁的应用解析:SemaphoreAQS系列之共享锁的应用解析:CountDownLatchAQS系列之排斥锁的应用解析:ReentrantLockAQS系列之排斥锁和共享锁的结合:ReentrantReadWriteLockAQS系列之排斥锁和共享锁的结合:ReentrantReadWriteLock一、简介1. Sync2. state3. ReadLock
2021-12-29 22:37:12
730
原创 AQS系列之排斥锁的应用解析:ReentrantLock
AQS系列之AbstractQueuedSynchronizer基础分析AQS系列之以排斥锁分析AQS系列之共享锁解析AQS系列之共享锁的应用解析:SemaphoreAQS系列之共享锁的应用解析:CountDownLatchAQS系列之排斥锁的应用解析:ReentrantLockAQS系列之排斥锁的应用解析:ReentrantLock一、简介一、简介...
2021-12-28 21:40:52
625
原创 AQS系列之共享锁的应用解析:CountDownLatch
AQS系列之AbstractQueuedSynchronizer基础分析AQS系列之以排斥锁分析AQS系列之共享锁解析AQS系列之共享锁的应用解析:SemaphoreAQS系列之共享锁的应用解析:CountDownLatchAQS系列之共享锁的应用解析:CountDownLatch一、简介二、获取资源三、释放资源一、简介CountDownLatch即倒排计数,是AQS共享锁的另一个经典应用。其应用主要是一个(或多个)线程等待一系列线程完成某些操作后才继续向下执行的场景。换种程序上的描述
2021-12-28 00:03:07
598
原创 AQS系列之共享锁的应用解析:Semaphore
AQS系列之AbstractQueuedSynchronizer基础分析AQS系列之以排斥锁分析AQS系列之共享锁解析AQS系列之共享锁的应用解析:SemaphoreAQS系列之共享锁的应用解析:Semaphore一、简介1. Sync2. state3. 对外方法二、资源获取acquire1. 非公平锁1. 公平锁三、资源释放一、简介Semaphore即信号量,常用于同时限制访问某些资源的线程数量。其内部抽象类Fair继承了AQS,Semaphore正是通过Sync实现数量的控制1.
2021-12-27 23:46:58
625
原创 AQS系列之共享锁解析
AQS系列之AbstractQueuedSynchronizer基础分析AQS系列之以排斥锁分析AQS系列之共享锁解析AQS系列之共享锁解析一、获取资源1. 获取资源acquireShared2. 排队获取资源二、释放资源一、获取资源1. 获取资源acquireSharedpublic final void acquireShared(int arg) { if (tryAcquireShared(arg) < 0) doAcquireShared(arg)
2021-12-26 19:30:19
930
原创 AQS系列之以排斥锁分析
系列文章目录AQS系列之AbstractQueuedSynchronizer基础分析AQS系列之以排斥锁分析AQS系列之以排斥锁分析系列文章目录一、获取资源1. 获取资源acquire2. 加入队列addWaiter3. 排队获取资源acquireQueued4. 阻塞检查shouldParkAfterFailedAcquire二、释放资源1. 释放资源release2. 唤醒后继节点unparkSuccessor三、获取&释放资源总流程四、其他获取资源的方法1. 响应中断acquireIn
2021-12-25 19:14:19
960
原创 AQS系列之AbstractQueuedSynchronizer基础分析
AQS系列之AbstractQueuedSynchronizer基础分析@[TOC]AQS系列之AbstractQueuedSynchronizer和CLH队列一、简介AQS是JDK并发包中的一个抽象类,全称为AbstractQueuedSynchronizer,即抽象队列同步器,是一系列同步实现的模板类,如锁Lock,信号量Semaphore,倒排计数器CoundDownLatch等都是基于AQS实现的,同时还提供了Condition对象,其await和sign、signAll对象可以用于代替O
2021-12-25 14:59:23
653
原创 SpringMVC源码解析之RequestMappingHandlerMapping:getHandler
SpringMVC源码解析之ServletSpringMVC源码解析之GenericServlet和HttpServletSpringMVC源码解析之DispatcherServlet:生命周期init()和destroy()SpringMVC源码解析之DispatcherServlet:请求处理SpringMVC源码解析之RequestMappingHandlerMapping:getH...
2019-06-24 11:11:22
3015
原创 SpringMVC源码解析之RequestMappingHandlerMapping:初始化
SpringMVC源码解析之ServletSpringMVC源码解析之GenericServlet和HttpServletSpringMVC源码解析之DispatcherServlet:生命周期init()和destroy()SpringMVC源码解析之DispatcherServlet:请求处理一、HandlerMapping1. 简介前面的博客已经提到,HandlerMapping...
2019-06-21 15:40:00
4397
原创 SpringMVC源码解析之DispatcherServlet:请求处理
SpringMVC源码解析之ServletSpringMVC源码解析之GenericServlet和HttpServletSpringMVC源码解析之DispatcherServlet:生命周期init()和destroy()一、FrameworkServlet1. FrameworkServlet#service(HttpServletRequest, HttpServletRespon...
2019-06-05 14:25:21
604
原创 SpringMVC源码解析之DispatcherServlet:生命周期init()和destroy()
SpringMVC源码解析之ServletSpringMVC源码解析之GenericServlet和HttpServlet
2019-05-27 11:57:33
1040
原创 SpringMVC源码解析之GenericServlet和HttpServlet
SpringMVC源码解析(一):Servlet一、GenericServlet从类名上就能看出,GenericServlet是一个一般性的,与协议无关的Servlet类。GenericServlet作为Servlet接口的默认实现,主要实现了下面功能1. 实现了ServletConfig接口GenericServlet实现了ServletConfig接口,可以通过Genericervl...
2019-05-24 09:40:39
522
原创 SpringMVC源码解析之Servlet
一、ServletServlet是JavaWeb的核心接口,运行在web服务器中,负责接收来自web客户端的请求并作出响应。Servlet接口定义了5个方法。(1)init方法负责Servlet的初始化,在servlet被加入到web容器时由容器调用,只会被调用一次。如tomcat容器会在StandardWrapper#initServlet(Servlet)中调用该初始化方法。(2)...
2019-05-20 17:14:36
428
原创 Queue常用类解析之BlockingQueue(五):LinkedTransferQueue
Queue常用类解析之PriorityQueueQueue常用类解析之ConcurrentLinkedQueueQueue常用类解析之BlockingQueue(一):PriorityBlockingQueue、DelayQueue和DelayedWorkQueueQueue常用类解析之BlockingQueue(二):ArrayBlockingQueueQueue常用类解析之Blocki...
2019-05-17 15:19:56
1365
原创 Queue常用类解析之BlockingQueue(四):SynchronousQueue
Queue常用类解析之PriorityQueueQueue常用类解析之ConcurrentLinkedQueueQueue常用类解析之BlockingQueue(一):PriorityBlockingQueue、DelayQueue和DelayedWorkQueueQueue常用类解析之BlockingQueue(二):ArrayBlockingQueueQueue常用类解析之Blocki...
2019-05-13 11:47:54
707
原创 Queue常用类解析之BlockingQueue(三):LinkedBlockingQueue
Queue常用类解析之PriorityQueueQueue常用类解析之ConcurrentLinkedQueueQueue常用类解析之BlockingQueue(一):PriorityBlockingQueue、DelayQueue和DelayedWorkQueueQueue常用类解析之BlockingQueue(二):ArrayBlockingQueue接着上文对BlockingQueu...
2019-04-23 14:19:59
445
原创 Queue常用类解析之BlockingQueue(二):ArrayBlockingQueue
Queue常用类解析之PriorityQueueQueue常用类解析之ConcurrentLinkedQueue接着上文对BlockingQueue的介绍继续向下五、ArrayBlockingQueue从命名可以看出,这是一个循环数组表示的的阻塞队列。与前面介绍的BlockingQueue不同,ArrayBlockingQueue在入队和出队时都有可能会陷入阻塞。1. 属性/** T...
2019-04-22 16:54:43
1120
原创 Queue常用类解析之BlockingQueue(一):PriorityBlockingQueue、DelayQueue和DelayedWorkQueue
Queue常用类解析之PriorityQueueQueue常用类解析之ConcurrentLinkedQueue一、简介BlockingQueue是concurrent包下的一个并发Queue的接口,称为阻塞队列。与ConcurrentLinkedQueue通过CAS方式来实现并发不同,BlockingQueue的并发方案是阻塞等待。Jdk为BlockingQueue提供了不少的实现类,...
2019-04-22 09:23:14
1876
原创 Queue常用类解析之PriorityQueue
一、接口介绍Queue :Collection的子接口,先进先出的集合。BlockingQueue:Queue的子接口,阻塞式队列,线程安全的队列,主要用于多线程场景尤其是线程池中。TransferQueue:BlockingQueue的子接口,一个生产者-消费者模式的队列,生产者会阻塞等待着消费者对元素进行消费。二、PriorityQueue优先级队列,队列内的元素按照一定的顺序进行排...
2019-04-17 10:25:58
870
原创 并发集合之CopyOnWriteArrayList和CopyOnWriteArraySet
一、简介CopyOnWrite的意思是写时复制,简单的说就是在对容器操作时,不是直接进行操作,而是先将容器复制一份,对新的容器操作后,再用新的容器覆盖原来的容器。CopyOnWrite可以实现并发读操作,因为容器的写操作不会读当前容器造成影响。CopyOnWrite的写操作需要加锁,不然n个写操作就会有n个容器副本,并且这n个副本会进行覆盖,最终只有1个副本的操作生效。CopyOnWrit...
2019-04-16 10:53:02
368
原创 Map源码解析之WeakHashMap
Map源码解析之HashMapMap源码解析之HashMap红黑树Map源码解析之HashMap补充:集合、迭代器、compute、merge、replaceMap源码解析之LinkedHashMapMap源码解析之TreeMapMap源码解析之HashTable Map源码解析之ConcurrentHashMap(JDK1.8)(一)Map源码解析之ConcurrentHashMa...
2019-04-12 15:49:42
359
原创 引用解析之Reference和ReferenceQueue
一、引用类型Java通过引用来访问对象,从jdk1.2开始,Java将引用分为以下4种类型,强度依次减弱。(1)强引用 Strong Reference日常开发中最经常使用的引用类型,例如Object object = new Object()使用的就是强引用。当一个对象的强引用存在,这个对象用于不会被回收。在Java中没有专门的类与之对应。(2)软引用 Soft Reference软引...
2019-04-12 13:51:58
1840
原创 Map源码解析之ThreadLocalMap
Map源码解析之HashMapMap源码解析之HashMap红黑树Map源码解析之HashMap补充:集合、迭代器、compute、merge、replaceMap源码解析之LinkedHashMapMap源码解析之TreeMapMap源码解析之HashTable Map源码解析之ConcurrentHashMap(JDK1.8)(一)Map源码解析之ConcurrentHashMa...
2019-04-10 15:54:26
1166
原创 Map源码解析之ConcurrentHashMap(JDK1.7)
Map源码解析之HashMapMap源码解析之HashMap红黑树Map源码解析之HashMap补充:集合、迭代器、compute、merge、replaceMap源码解析之LinkedHashMapMap源码解析之TreeMapMap源码解析之HashTable Map源码解析之ConcurrentHashMap(JDK1.8)(一)Map源码解析之ConcurrentHashMa...
2019-04-09 15:13:13
463
原创 线程池ScheduledThreadPoolExecutor源码解析
一、简介ScheduledThreadPoolExecutor是ThreadPoolExecutor的子类,继承了父类对线程的管理维护功能,通过还可以执行延迟和定时任务。/* * This class specializes ThreadPoolExecutor implementation by * * 1. Using a custom task type, ...
2019-04-08 12:01:43
2041
1
原创 线程池源码解析之FutureTask
一、简介1. 类继承关系2. 状态private volatile int state;private static final int NEW = 0;private static final int COMPLETING = 1;private static final int NORMAL = 2;private static final i...
2019-04-08 11:58:31
733
原创 线程池ThreadPoolExecutor源码解析
一、简述线程池维护着一定的线程数量,通过线程复用减少了线程频繁开启销毁的消耗。当新任务提交到线程池时:如果线程池中任务数量小于核心线程数量,启动新线程执行任务。如果线程池中任务数量大于或等于核心线程数量,且队列未满,将任务加入队列。如果线程池中任务数量大于或等于核心线程数量,但小于最大线程数量,且队列已满,启动新线程执行任务。如果线程池中任务数量等于最大线程数量,且队列已满,执行拒绝策...
2019-04-02 10:51:57
255
原创 Mybatis源码解析之分页插件pagehelper分析
Mybatis源码解析之核心类分析Mybatis源码解析之初始化分析Mybatis源码解析之执行流程解析Mybatis源码解析之数据库连接和连接池Mybatis源码解析之事务管理Mybatis源码解析之缓存机制(一):一级缓存Mybatis源码解析之缓存机制(二):二级缓存Mybatis源码解析之插件机制Mybatis源码解析之mapper接口的代理模式Mybatis源码解析之D...
2019-03-28 16:18:19
2034
原创 Mybatis源码解析之SpringBoot集成mybatis-spring-boot-starter分析
Mybatis源码解析之核心类分析Mybatis源码解析之初始化分析Mybatis源码解析之执行流程解析Mybatis源码解析之数据库连接和连接池Mybatis源码解析之事务管理Mybatis源码解析之缓存机制(一):一级缓存Mybatis源码解析之缓存机制(二):二级缓存Mybatis源码解析之插件机制Mybatis源码解析之mapper接口的代理模式Mybatis源码解析之D...
2019-03-28 11:33:00
14252
1
原创 Mybatis源码解析之懒加载(三):序列化
Mybatis源码解析之核心类分析Mybatis源码解析之初始化分析Mybatis源码解析之执行流程解析Mybatis源码解析之数据库连接和连接池Mybatis源码解析之事务管理Mybatis源码解析之缓存机制(一):一级缓存Mybatis源码解析之缓存机制(二):二级缓存Mybatis源码解析之插件机制Mybatis源码解析之mapper接口的代理模式Mybatis源码解析之D...
2019-03-26 16:42:09
1519
原创 Mybatis源码解析之懒加载(二):ProxyFactory
Mybatis源码解析之核心类分析Mybatis源码解析之初始化分析Mybatis源码解析之执行流程解析Mybatis源码解析之数据库连接和连接池Mybatis源码解析之事务管理Mybatis源码解析之缓存机制(一):一级缓存Mybatis源码解析之缓存机制(二):二级缓存Mybatis源码解析之插件机制Mybatis源码解析之mapper接口的代理模式Mybatis源码解析之D...
2019-03-26 11:18:18
1548
1
原创 Mybatis源码解析之懒加载(一):配置和ResultLoaderMap
Mybatis源码解析之核心类分析Mybatis源码解析之初始化分析Mybatis源码解析之执行流程解析Mybatis源码解析之数据库连接和连接池Mybatis源码解析之事务管理Mybatis源码解析之缓存机制(一):一级缓存Mybatis源码解析之缓存机制(二):二级缓存Mybatis源码解析之插件机制Mybatis源码解析之mapper接口的代理模式Mybatis源码解析之D...
2019-03-26 10:29:32
928
原创 Mybatis源码解析之DefaultResultSetHandler的handleResultSets方法解析
Mybatis源码解析之核心类分析Mybatis源码解析之初始化分析Mybatis源码解析之执行流程解析Mybatis源码解析之数据库连接和连接池Mybatis源码解析之事务管理Mybatis源码解析之缓存机制(一):一级缓存Mybatis源码解析之缓存机制(二):二级缓存Mybatis源码解析之插件机制Mybatis源码解析之mapper接口的代理模式ResultSetHand...
2019-03-25 09:52:12
6749
原创 Mybatis源码解析之Spring集成mybatis-spring分析
Mybatis源码解析之核心类分析Mybatis源码解析之初始化分析Mybatis源码解析之执行流程解析Mybatis源码解析之数据库连接和连接池Mybatis源码解析之事务管理Mybatis源码解析之缓存机制(一):一级缓存Mybatis源码解析之缓存机制(二):二级缓存Mybatis源码解析之插件机制前面的几篇相关博客都针对原生的mybatis进行解析,从本文开始将针对myba...
2019-03-21 13:48:11
1121
1
原创 Mybatis源码解析之mapper接口的代理模式
Mybatis源码解析之核心类分析Mybatis源码解析之初始化分析Mybatis源码解析之执行流程解析Mybatis源码解析之数据库连接和连接池Mybatis源码解析之事务管理Mybatis源码解析之缓存机制(一):一级缓存Mybatis源码解析之缓存机制(二):二级缓存Mybatis源码解析之插件机制一、简介在mybatis中执行sql时有两种方式,一种是基于statemen...
2019-03-20 17:13:29
1743
原创 Mybatis源码解析之插件机制
Mybatis源码解析之核心类分析Mybatis源码解析之初始化分析Mybatis源码解析之执行流程解析Mybatis源码解析之数据库连接和连接池Mybatis源码解析之事务管理Mybatis源码解析之缓存机制(一):一级缓存Mybatis源码解析之缓存机制(二):二级缓存为了保证程序的扩展性,提供使用者在框架基础上增强自定义的逻辑处理,mybatis提供了一种基于拦截器的插件机制。...
2019-03-19 15:09:39
721
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人