自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 Sentinel源码深度解析

在这里是断路器的实现逻辑,具体如下:首先拿到当前状态,判断currentState是否等于State.CLOSED,如果是,则表示断路器没有打开,请求可以直接通过。④ 如果计算出来的windowStart大于WindowWrap的windowStart,按道理说,不应该出现这种情况,这实际上是出现了"时钟回拨"的问题,表示Linux服务器的时间出现了问题,因为是通过获取Linux的当前时间,计算得来的windowStart,因此针对这种情况,直接新建一个WindowWrap对象并返回。

2024-02-20 17:02:59 475 1

原创 Java并发包下常用工具类源码深度解析

如果state部位0,说明有线程已经加锁了,拿到exclusiveOwnerThread属性,判断其是否是当前线程,如果是,则state+1,返回true,表示加锁成功。① 众所周知,阻塞、唤醒线程,都是 用户态和内核态的相互转换,因此比较耗性能,在 看ReentrantLock源码,的时候,他也不上上来就加锁,在调用LockSupport.park()方法之前其实尝试获取了几次锁,都是为了避免线程被阻塞,到最到没办到了,才会阻塞线程,我数了下,一共四次,尝试获取锁。

2024-02-05 17:13:16 1320 1

原创 ThreadPoolExecutor&ScheduledThreadPoolExecutor源码深度解析

① 如果没有设置 allowCoreThreadTimeOut,则该属性默认为false,则在ThreadPoolExecutor#getTask()方法中,如果此时线程池中worker的数量小于等于核心线程数的数量,则程序会阻塞在workQueue.take()这里,知道拿到Runnable对象,才会返回,并在while中执行Runnable#run()方法,执行完 ,再次进入ThreadPoolExecutor#getTask()方法中阻塞,直到有新的Runnable对象被放入阻塞队列中为止;

2024-02-04 23:03:16 884 1

原创 Netty源码深度解析

最后做一个小的总结,下图是我在网上,充分说明了Netty框架的运行模式,它是基于Reactor模型的主从架构:需要创建两个线程组EventLoopGroup,即bossGroup和workerGroup,一般bossGroup设置的线程组中线程的数量为1(也可以设置>1,如果这样设置的话,就需要绑定其他的端口,设置几个,绑定几个端口),workerGroup设置的线程组是多个,不设置默认创建的线程数量为 CPU核心数×2。今天,聊一聊Netty源码。因此,Netty使用。

2024-02-03 02:08:44 763 2

原创 Open Feign源码深度解析

带你深度解析Open Feign源码,熟悉其调用链路,核心代码全部贴出来,如果你有Spring源码的基础,或者熟练使用Spring,相信你在看过了该博客之后,也能很快掌握Open Feign的源码!

2024-01-31 18:01:26 1479 1

原创 Ribbon源码深度解析

③ 这样的话,整个链路就很清晰:我们在使用我们自己定义的RestTemplate的时候,只要加上@LoadBalanced注解,Spring就会拿到我们定义的RestTemplate对象,再从Spring容器中拿到LoadBalancerInterceptor对象,并且加到RestTemplate的成员属性interceptors中,最终LoadBalancerInterceptor就会实现客户端的负载均衡功能,当然最终的实现,是依赖于LoadBalancerClient类。

2024-01-31 09:19:58 1136 3

空空如也

空空如也

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

TA关注的人

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