源码解读
文章平均质量分 95
老周聊架构
微信公众号:老周聊架构
展开
-
Spring Cloud Gateway 源码剖析之Filter Chain过滤器链
欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言前几篇我们讲了 Gateway 相应的初始化、路由相关模型以及 Predicate 谓词详解,这一篇我们再来讲一下 Filter Chain 过滤器链,讲完这一篇,相信你对 Gateway 源码整体设计思想有个深刻的体会了,后续你想去抠细节也不是什么难事了。前几篇可以回顾下:Spring Cloud Gateway 源码剖析之配置初始化Spring Clo.原创 2021-04-06 00:10:20 · 5357 阅读 · 12 评论 -
Spring Cloud Gateway 源码剖析之Predicate谓词详解
欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言我们上一篇Spring Cloud Gateway 源码剖析之Route数据模型中讲到了 Route 数据模型,其中有 Predicate 属性。这一篇我们就来讲一讲 Predicate 谓词相关源码。Predicate 对象是由 RoutePredicateFactory 工厂类创建,那我们就来看下 RoutePredicateFactory 是如何创建.原创 2021-04-03 23:58:58 · 2665 阅读 · 21 评论 -
Spring Cloud Gateway 源码剖析之Route数据模型
欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言我们上一篇讲了:Spring Cloud Gateway 源码剖析之配置初始化,通过自动加载初始化六个配置实例,Spring Cloud Gateway 就完成自身的加载和初始化工作。我们知道 Gateway 的核心是路由加过滤,既然网关相关初始化工作做好了,那得开始路由相关的工作了。接下来我们就来分析下平时在 properties 或者 yml 中配置的有.原创 2021-04-02 01:06:02 · 1958 阅读 · 11 评论 -
Spring Cloud Gateway 源码剖析之配置初始化
欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言相信大多数公司都会有自己公司的专有网关服务,虽说是自研,但很少会有从零开始开发一个网关服务,基本上是基于市面上比较流行的网关组件像 Zuul、Gateway、Soul 等进行二次封装的。那如果自己公司有相应的网关业务需求的话,这就要对网关产品的底层原理要比较熟悉了,这样做起来也比较顺手。本系列只针对 Gateway 组件进行源码剖析,我在想第一篇如何说会比较好.原创 2021-03-31 00:50:08 · 1105 阅读 · 2 评论 -
源码解读之(八)ConcurrentLinkedQueue
源码解读之(八)ConcurrentLinkedQueue一、前言二、ConcurrentLinkedQueue介绍与结构三、offer操作四、poll操作五、peek操作六、size操作七、remove操作八、ConcurrentLinkedQueue遇到的问题九、总结一、前言在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式:一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方原创 2020-09-08 22:25:17 · 443 阅读 · 0 评论 -
源码解读之(七)BeanUtils.copyProperties
一、前言关于对象的复制我们有好几种方式,最近在做推荐系统,有这样的一个功能点,根据手机的唯一标识imei,copy 目标手机的 imei,置换imei 画像。这种复制、克隆另一个对象的属性在我们后台开发经常遇得到。我这里提供两种方式:1、实现Cloneable接口重写clone()方法public class Image implements Cloneable { private ...原创 2020-03-26 00:36:30 · 1151 阅读 · 2 评论 -
源码解读之(一)HashMap
一、HashMap 概述Map 是 Key-Value 对映射的抽象接口,该映射不包括重复的键,即一个键对应一个值。HashMap 是 Java Collection Framework 的重要成员,也是Map族(如下图所示)中我们最为常用的一种。简单地说,HashMap 是基于哈希表的 Map 接口的实现,以 Key-Value 的形式存在,即存储的对象是 Entry (同时包含了 Key 和...原创 2019-02-05 16:56:11 · 548 阅读 · 0 评论 -
源码解读之(二)ThreadLocal
一、背景ThreadLocal源码解读,网上面早已经泛滥了,大多比较浅,甚至有的连基本原理都说的很有问题,包括百度搜索出来的第一篇高访问量博文,说ThreadLocal内部有个map,键为线程对象,太误导人了。ThreadLocal非常适合对Java多线程编程感兴趣的程序员作为入门类阅读,原因两方面:加上注释源码也不过七八百行。结构清晰,代码简洁。本文重点导读ThreadLocal中...原创 2019-03-30 01:07:09 · 352 阅读 · 1 评论 -
源码解读之(三)CopyOnWriteArrayList
一、概念CopyOnWriteArrayList是Java并发包中提供的一个并发容器,它是个线程安全且读操作无锁的ArrayList,写操作则通过创建底层数组的新副本来实现,是一种读写分离的并发策略,我们也可以称这种容器为"写时复制器",Java并发包中类似的容器还有CopyOnWriteSet。本文会对CopyOnWriteArrayList的实现原理及源码进行分析。我们都知道,集合框架中的...原创 2019-05-24 01:11:52 · 314 阅读 · 0 评论 -
源码解读之(四)AbstractQueuedSynchronizer
一、简介AbstractQueuedSynchronizer 队列同步器(AQS)是一个抽象类,,它是为实现依赖于先进先出(FIFO)等待队列的阻塞锁和相关同步器(信号量,事件等)提供的一个基础框架。AQS继承了AbstractOwnableSynchronizer类,这个类为创建锁和相关同步器提供了基础。AQS是Concurrent包的核心,lock就是在AQS的基础上实现的,阻塞队列,线程池...原创 2019-08-08 00:34:24 · 511 阅读 · 0 评论 -
源码解读之(五)ReentrantReadWriteLock(上)
一、前言在Java并发包中常用的锁(如:ReentrantLock),基本上都是排他锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞。读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得并发性相比一般的排他锁有了很大提升。相对于排他锁,提高了并发性。在实际应用中,大部分情况下对共享数据(如缓存...原创 2019-08-18 02:49:19 · 311 阅读 · 0 评论 -
源码解读之(五)ReentrantReadWriteLock(中)
上篇主要讲的ReentrantReadWriteLock的几个核心变量:源码解读之(五)ReentrantReadWriteLock(上)这篇中篇主要来讲解讲解ReentrantReadWriteLock的ReadLock的加锁和减锁过程。三、ReadLockReentrantReadWriteLock的ReadLock加锁解锁过程依赖于AQS类,所以有些相同的逻辑可以看看Reentra...原创 2019-08-18 18:05:35 · 287 阅读 · 0 评论 -
源码解读之(五)ReentrantReadWriteLock(下)
上篇的中篇主要讲的ReentrantReadWriteLock的ReadLock的加锁和减锁过程:源码解读之(五)ReentrantReadWriteLock(中)这篇下篇主要来讲解讲解ReentrantReadWriteLock的WriteLock的加锁和减锁过程。四、WriteLockReentrantReadWriteLock的WriteLock加锁解锁过程依赖于AbstractQ...原创 2019-08-18 18:42:00 · 286 阅读 · 0 评论 -
源码解读之(六)DelayQueue
一、简介DelayQueue是一个支持延时获取元素的无界阻塞队列。里面的元素全部都是“可延期”的元素,列头的元素是最先“到期”的元素,如果队列里面没有元素到期,是不能从列头获取元素的,哪怕有元素也不行。也就是说只有在延迟期到时才能够从队列中取元素。DelayQueue非常有用,可以运用在以下两个应用场景:缓存系统的设计:使用DelayQueue保存缓存元素的有效期,使用一个线程循环查询De...原创 2019-09-01 01:54:17 · 512 阅读 · 0 评论