源码阅读
文章平均质量分 95
少爷凡隐
这个作者很懒,什么都没留下…
展开
-
JAVA FinalReference
JAVA FinalReference引入使用MAT分析dump出的内存时,常会看到java.lang.ref.Finalizer占用内存也不小,比较纳闷我们在编程中并没有用到这个东西,为什么他会出现并且占用分量不算小的一部分内存呢?final class Finalizer extends FinalReference { private static ReferenceQueue que原创 2017-04-01 12:14:30 · 1860 阅读 · 2 评论 -
思考延时队列
更多请移步我的博客背景项目中存在以下场景需要延迟触发一些事件:订单在未支付状态下30分钟后自动关闭;订单超过15天未主动确认收货需要自动确认收货;商品价格需要在不同的时间段生效不同的价格方案等。以上场景下需要有一个相对平台化的服务来满足,而不必每个项目自己做定时任务去进行轮询。解刨延迟/定时任务构成一个任务有两个要素:执行时间;执行逻辑。对任务规划者而言,并不关心任务执行逻辑...原创 2019-04-18 19:52:59 · 901 阅读 · 0 评论 -
rocketmq-深入消费源码
更多请移步我的博客对比看两种消费方式的实现:顺序消费与并发消费。这里对顺序消费只关注消费端,不关心producer与broker怎么处理顺序消息,假设架构及策略已保证消息的全局或者局部顺序性。通过构建假定前提,我们可以忽略本次讨论的非重点内容。以下仍以Push方式为例。消费方式宏观上看rmq自身是一个生产-消费模式,在他各个角色的具体实现中也不乏生产-消费模式的使用。DefaultMQPus...原创 2019-02-13 16:26:32 · 657 阅读 · 0 评论 -
rocketmq-半入门级架构及核心流程概览
一直在用rocketmq,对他的功能和大概流程略知一些,但是比较浮,经不起稍微的推敲。是时候进一步了解下这个NB的中间件了。这里不再赘述它的那些特性,网上一大堆,这里主要按照自己想了解的一些方面作整理,贴出部分核心代码,意图通过表现各个角色间的交互,勾画大致架构,方便以后对每个要点各个深入。如果想要引导来阅读源代码,推荐rmq源码系列,写的很有诚意,本笔记中也部分参考引用其文章。部署结构(逻辑...原创 2018-12-14 14:32:59 · 772 阅读 · 0 评论 -
Dubbo源码-网络通信之提供者消费者通信
更多请移步我的博客 之前简单看过Dubbo基于SPI的“微核+插件”形式的架构模式,Dubbo因为这种架构模式使得扩展十分简单,另外Dubbo的框架分层十分清晰,看起源码来相对轻松不少。在使用Dubbo时突然想到几个问题,Dubbo默认使用tcp长链接,消费者们可能同时发起调用,提供者是怎样处理这些请求的?消费者和生产者之间链接如何复用?消费者和提供者之间几个长链接?要搞清楚这几个问题要从D...原创 2018-06-07 18:12:48 · 1131 阅读 · 0 评论 -
了解ClassLoader
每个Java类都维护着一个指向定义它的类加载器的引用,通过getClassLoader()方法就可以获取到此引用。通过调用getParent()方法可以得到加载器的父类,上述代码输出中,AppClassLoader对应系统类加载器(system class loader);ExtClassLoader对应扩展类加载器(extensions class loader);需要注意的是这里并没有输出引导类加载器,这是因为有原创 2017-07-06 11:41:28 · 613 阅读 · 0 评论 -
译-Spring-理解AOP代理
更多请移步: 我的博客引入之前写过一篇关于Spring代理流程的博客,当时没有深入思考,最近碰到一个有趣的事情,类内部调用带有spring注解,但注解不生效的问题,@Transaction不生效翻译 2017-06-29 15:59:36 · 365 阅读 · 0 评论 -
JDK源码 Java Reference
JDK源码 java的四种Reference之前探讨过一次JAVA的FinalReference,这次我们来看下java.lang.ref包下对应的其他三种引用。走近引用Reference和ReferenceQueue在使用中一定是结伴出现的,当一个Reference确定要被GC回收,GC便会把Reference加入到与之关联的ReferenceQueue中。注意:在Reference的构造方法中,原创 2017-04-24 23:10:38 · 367 阅读 · 0 评论 -
Dubbo源码 SPI实现ExtensionLoader
Dubbo源码 SPI实现ExtensionLoaderSPI 全称为 (Service Provider Interface) ,JDK也默认提供了SPI的一种实现,不过对比Dubbo的实现,JDK的实现就非常简单。简单说下JDK默认的SPI用法。 1. 定义Service接口 2. 增加Service实现类 3. META-INF/services目录下建立以接口包全名命名的文件,文件中写原创 2017-03-07 22:31:12 · 576 阅读 · 0 评论 -
JDK源码 AbstractQueueSynchronizer 笔记
AbstractQueueSynchronizer笔记在开始介绍之前我先来简单理解一下为什么会产生AQS。在我们应用内不可避免的会发生对一些资源的抢占,那么如何处理线程之间对资源的争夺呢?在Java SE 5 之前JDK可以使用synchronized来串行化对资源的操作,synchronized可以隐式的获取和释放锁,但是带来的不便就是不够灵活,可扩展性没有显式获取和释放锁的自主控制性强,另外sy原创 2017-02-14 10:02:41 · 359 阅读 · 0 评论 -
rocketmq-事务消息
前言之前有转载过一篇关于分布式事务最终一致的MQ实现的文章,当时也是碰到了分布式事务的情形,最后按照文章的思路利用rmq实现了数据的最终一致。不太清楚分布式事务的,可以先看下这边文章了解下。PS:本篇默认你已经了解rmq的一些基础并看过部分源代码,建议在看该篇时,先看下官方的文档RocketMQ事务消息。牵涉到的分布式的话题一般都会提到CAP,从知乎上打捞来一份比较好解释。P 意指分区容...原创 2019-09-26 19:53:39 · 297 阅读 · 0 评论