随笔分类 - Java
摘要:ExtensionLoader 获取扩展点原理 ExtensionLoader 容器作为 Dubbo 内部扩展点、成员变量等元素的加载容器。内部含有以下成员变量及其用途: // dubbo-spi 扫描的文件目录 private static final String SERVICES_DIRECT
阅读全文
摘要:Spring自定义标签过程 https://blog.csdn.net/zzg1229059735/article/details/82669955 https://juejin.cn/post/6968333542644252703 spring 自定义标签是一个强大的 Hook,核心组件只有 s
阅读全文
摘要:总结构 注册中心 Dubbo 注册中心包括两个部分:存储介质(Zookeeper、Redis 等注册中心)、注册服务相关操作(注册服务、订阅服务)。 注册中心包含以下核心模块: Registry:注册中心抽象; RegistryFactory:注册中心工厂,初始化时创建 Registry; Dire
阅读全文
摘要:https://juejin.cn/post/6998527815964426271 https://juejin.cn/post/7101120209540349959 垃圾回收器 Serial(新生代)+ Serial Old(老年代) 特点: 单线程垃圾回收器,垃圾回收过程中需要 STW,适用
阅读全文
摘要:ConfigurationProperties 注解 https://blog.csdn.net/skh2015java/article/details/120141409 @Import、@ImportAutoConfiguration https://www.cnblogs.com/imyjy/
阅读全文
摘要:RocketMQ-CountDownLatch2 public class CountDownLatch2 { private final Sync sync; /** * Constructs a {@code CountDownLatch2} initialized with the given
阅读全文
摘要:AQS 结构特性 内部包含 Node、ConditionObject 静态内部类,Node 用来存储没竞争到锁的线程状态、CondidtionObject 是对条件变量的封装; volatile int state 变量记录锁的状态,1 表示锁被持有、0 表示锁被释放,同时对应三个方法来更改/获取锁
阅读全文
摘要:什么是零拷贝? 我们知道操作系统有用户空间和内核空间,在实现 read/write 操作时会涉及到多次系统调用,系统调用就意味着上下文切换,而上下文切换是很耗时的操作。零拷贝的目的就是减少上下文切换次数从而避免多次不必要的数据拷贝。 读写数据的底层 DMA DMA(Direct Memory Acc
阅读全文
摘要:https://juejin.cn/post/6892687008552976398?searchId=20230808000034F391CE9EAF068C415D55 https://www.jianshu.com/p/95b50b026895 讲解网络IO的原理 (Linux 2.3 NAP
阅读全文
摘要:参考 Cglib 和 jdk 实现动态代理的区别: https://www.cnblogs.com/sandaman2019/p/12636727.html https://zhuanlan.zhihu.com/p/346173865 https://zhuanlan.zhihu.com/p/616
阅读全文
摘要:1、客户端开发 一个消费者应该具有的几个步骤: 配置消费者客户端参数以及创建消费者实例; 订阅主题; 拉取消息并消费; 提交消息位移; 关闭消费者实例; Kafka 消费者示例 public class KafkaConsumerAnalysis { public static final Stri
阅读全文
摘要:一、客户端开发 客户端需要具备以下功能: 配置生产者客户端参数以及创建相应的生产者实例; 构建待发送的消息; 发送消息; 关闭生产者实例; 基础 Kafka 客户端代码: public class KafkaProducerAnalysis { public static final String
阅读全文
摘要:简介 Kafka 是最初由 Linkedin 公司开发,是一个分布式、支持分区的(partition)、多副本的(replica)。基于 zookeeper 协调的分布式消息系统。 它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、Sto
阅读全文
摘要:# 时间轮算法介绍 _时间轮算法.assets/20230901215825.png) `HashedWheelTimer` 定时轮算法在 netty、dubbo 等框架中运用广泛。比如在 Dubbo 中为了增强系统的容错能力,会有相应的监听判断机制比如
阅读全文
摘要:> 参考: > > NIO 详解(Java):https://juejin.cn/post/6844903605669986317 > > ByteBuffer(内存缓冲区):https://blog.csdn.net/u010430495/article/details/86087154 # 1、
阅读全文
摘要:# 1、NIO存在的问题 ## 1.1 客户端关闭导致服务端轮询 在关闭客户端时,服务端 Selector.select() 操作不会阻塞,会直接通过并且认为是 READ 状态,而此时的数据长度为0,就会导致空轮询操作。 _全局架构.assets/20230726205754.png) 全局架构分为注册中心,通常为 zk/redis;服务提供者 Provider,用来提供并注册服务到注册中心;服务消费者 Consumer,用来向注册中心订阅服务,当注册中心服
阅读全文
摘要:# Dubbo SPI源码分析 Dubbo SPI 的核心实现是 `ExtensionLoader`,分析时先分析 `ExtensionLoader` 的成员变量和对公方法,依次分析扩展点的加载、扩展点的依赖注入、扩展点的自适应、扩展点的激活。 **分析中的名词约定:** * 扩展点————扩展点实
阅读全文
摘要:# 什么是 SPI? Dubbo 的源码中大量涉及了 Java SPI设计思想,所以理解 SPI对理解 Dubbo源码有很大帮助。 Java SPI全称 `Java Service Provider Interface`,是 Java 提供的一种服务提供者发现机制。其核心功能是**通过接口找到其实现
阅读全文

浙公网安备 33010602011771号