- 博客(19)
- 资源 (2)
- 收藏
- 关注
原创 disruptor原理分析
简介理解Disruptor是什么的最好方法是将它与目前很好理解和非常相似的东西进行比较。与Java的 BlockingQueue队列一样,Disruptor的目的是在同一进程内的线程之间移动数据(例如消息或事件)。但是,Disruptor提供了一些将其与队列区分开来的关键功能。他们是:具有消费者依赖关系图的消费者多播事件。为事件预先分配内存。可选择无锁。使用场景Disruptor的...
2019-03-10 20:25:53 832
原创 dubbo 源码学习笔记 (八) —— 远程通讯模块
dubbo的远程通讯模块的介绍,将从两条主线分别讲述。首先是从Exchanges->Transports->Netty打开通道,建立连接;接着是MultiMessageHandler->HeartbeatHandler->AllChannelHandler->DecodeHandler->HeaderExchangeHandler->ExchangeHandlerAdapter这样一条handler处理线;
2017-10-14 17:00:36 462
原创 dubbo 源码学习笔记 (七) —— 远程调用模块
dubbo远程调用模块,围绕着Invoker展开,调用方由DubboInvoker实现Invoker接口,并持有远程通讯的客户端。发送Invocation到服务端,服务端处理后,把结果返回。DubboInvoker包装为RpcResult,这是最里层做的事情。外层DubboInvoker还由ProtocolFilterWrapper进行包装,生成一个调用链;再由ProtocolListenerWrapper包装,增加监听;最后通过JavassistProxyFactory生成代理对象。实现方由Javassi
2017-10-14 16:59:00 440
原创 dubbo 源码学习笔记 (四) —— 配置模块
对于dubbo的配置,采用的是spring的一个解析配置文件的机制。与spring是连接的,也是解析成BeanDefinition,让spring管理生成对象放入spring容器中。
2017-10-14 16:55:14 395
原创 dubbo 源码学习笔记 (五) —— 注册中心模块
dubbo的注册中心模块,封装服务地址的注册与发现,以服务URL为中心,扩展接口为RegistryFactory,Registry,RegistryService。
2017-10-14 16:54:32 506
原创 dubbo 源码学习笔记 (三) —— dubbo引用服务的过程
与dubbo服务发布相对的,是引用服务进行调用的过程,这个很多步骤都是与服务发布相对的,但是也有特有的地方,比如,负载均衡 ,集群容错等。这篇博客,我们主要关注dubbo服务调用的一个核心过程。
2017-10-12 17:59:31 1818
原创 dubbo 源码学习笔记 (二) —— dubbo发布服务的过程
dubbo基础类ExtensionLoader和URL贯穿整个框架,掌握这两个类的思想和源码,就相当于对dubbo有了初步的认识。接着,我们来分析一下dubbo是如何发布一个服务的。以ServiceConfig.doExportUrlsFor1Protocol为起点,在使用spring容器启动时,会调用该方法进行发布服务的一系列操作。简单来说,发布的过程可以简化为,服务转换为invoker->
2017-10-12 17:40:28 1102 2
原创 dubbo 源码学习笔记 (一) —— ExtensionLoader和URL
ExtensionLoader源码实现 SPI扩展 java SPI扩展机制
2017-07-12 14:10:41 721 1
原创 spring 源码学习笔记(三)—— spring aop
spring aop的实现,主要通过注册InstantiationAwareBeanPostProcessor处理器,在创建bean时判断是否需要增强。具体的注册在AbstractApplicationContext.registerBeanPostProcessors方法中将所有的BeanPostProcessor注册到容器的beanPostProcessors中。其中对aop增强主要的InstantiationAwareBeanPostProcessor处理器是AnnotationAwareAspect
2017-11-20 21:04:32 714
原创 spring 源码学习笔记(二)—— spring ioc 之依赖注入
上一篇spring系列博客spring 源码学习笔记(一)—— spring ioc 之加载XML转换为BeanDefinition讲到spring如何将xml文件转换为内存的数据结构。本篇博客将继续上篇博客,继续分析如何利用beanDefinition创建bean对象,并且对对象进行依赖注入。下图是整个创建bean并依赖注入的过程:(看不清可右击在新页签进行查看)
2017-11-20 21:04:04 621
原创 spring 源码学习笔记(一)—— spring ioc 之加载XML转换为BeanDefinition
spring ioc容器的核心类是AbstractApplicationContext,入口方法是refresh。这个方法是个模板方法,定义了加载到容器的全部过程。本篇博客将分析,spring将xml配置文件加载到内存的一个过程。(著名的dubbo分布式框架也利用了spring加载xml的机制,定制自己的xml解析器将对象接入到ioc容器中。)大致过程为:创建beanFactory用于存放转换后的信息->读取文件到输入流中->读取输入流里的数据,用NamespaceHandler里注册的解析器处理返回Bea
2017-11-17 15:11:01 887
原创 redis 集群部署教程
redis 集群部署,1、安装ruby 2、启动redis各个节点,按配置文件启动 3、开放端口 4、使用命令创建节点:
2017-11-10 15:23:31 320
原创 HTTP、TCP、Session、cookie、
本篇博客主要关注点在HTTP协议的发展过程的一些基础知识。HTTP协议经过三个版本:HTTP1.0,HTTP1.1,HTTP2.0。
2017-10-14 17:21:36 2677
原创 java 集合类——Map、List
本篇博客,将介绍java(jdk1.8)基础中的一些集合类的实现原理,及对相应代码进行分析。主要对Map,List相关的类进行分析。
2017-10-14 17:14:13 325
原创 java 锁实现——volatile、synchronized、ReentrantLock
ava的锁实现,有最轻量级volatile同步机制,有基于jvm语义的synchronized关键字,也有基于AQS实现的重入锁,读写锁。本篇博客主要分析volatile的语义,synchronized在jvm层面的实现以及ReentrantLock是如何基于AQS实现的。
2017-10-14 17:09:44 1275
原创 JVM 运行时数据区——方法区、堆、栈
JVM运行时数据区分为堆,栈,方法区(元空间),我将从一个class文件加载到内存,再分配对象,再使用这个对象这样一个过程进行分析。
2017-10-14 17:06:56 3905
原创 java 垃圾回收机制(二)
上一篇文单,分析了jvm的如何判定对象可回收,并且是在什么时候进行回收的。这篇文章,主要介绍,jvm进行垃圾回收运用了哪些算法,及理解GC的日志信息
2017-02-24 14:19:34 360
原创 java 垃圾回收机制(一)
要理解java的垃圾回收机制,个人觉得,只要弄清楚三个问题,便能基本掌握其核心要点。那是哪三个问题呢?1、需要回收哪些内存资源?2、什么时候回收?3、怎么回收?那么这三个问题,jvm是如何做的呢。且听我道来。
2017-02-22 20:57:13 295
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人