自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Zookeeper源码解析:3、zk数据同步流程

接着上篇选举流程。当zk选举成功后,zk会进行(Leader-Follower)数据同步,数据同步成功后,整个集群才开始正常运作。这篇我们就来分析下数据同步流程。首先我们还是回到org.apache.zookeeper.server.quorum.QuorumPeer的run方法为主入口 @Override public void run() { // ....省略一些无关紧...

2020-01-29 12:07:09 793

原创 Zookeeper源码解析:2、选举流程分析

接着上篇启动流程分析,我们继续来看zk是如何进行选举的。在上篇文章文章中,我们可以了解到启动流程中有几处地方涉及到选举org.apache.zookeeper.server.quorum.QuorumPeer中的start方法中调用了startLeaderElection()创建了一些选举需要用到的必要对象org.apache.zookeeper.server.quorum.QuorumP...

2020-01-23 20:42:00 360

原创 Zookeeper源码解析:1、启动流程分析

前言为了方便我们进行Debug跟踪启动流程和查看控制台日志,所以我们要在IDE中启动zk。首先我们创建一个项目引入zk的maven包 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId&gt...

2020-01-19 17:01:17 308

原创 多线程:ThreadLocal原理解析

简介当访问共享数据可变数据时,通常需要进行加锁同步,同步是需要消耗性能的。一种避免使用同步的方式就是不共享数据:如果数据在每个线程中都拥有一个副本,那就不需要同步了,这种通过将数据封闭在线程中而避免使用同步的技术称为线程封闭。线程封闭的实现方式由很多种,比如栈封闭(其实就是使用局部变量,只是换了一种高大上的名称而已)、使用ThreadLocal等等接下来主要分析ThreadLocal,从以...

2019-04-29 10:37:12 238

原创 Netty4.x源码分析:Netty常见组件(Channe、Unsafe、Pipeline)

当我们看Netty源码分析的时候,经常会看到几个常见组件比如Channel、Pipeline、Unsafe、EventLoopGroup、EventLoop。每个组件都是必不可少,而且这种设计对网络通信和逻辑处理的解耦起到非常重要的作用,比如我们在应用层不用关系底层网络通信的实现逻辑,只需编写ChannelHandler针对不同的请求事件处理即可。当我们想把BIO切换到NIO只需要做小小的变动,即...

2019-03-29 17:01:30 273

原创 Tomcat源码解析:6、Digester XML原理解析

概要在Tomcat中使用了大量的xml文件去配置一些重要的信息,以达到程序与配置的解耦,比如server.xml、web.xml。解析XML文件的技术,Tomcat使用了Digester框架去解析xml。我们可能对Digester比较陌生,比较常用的解析xml的技术有JDK自带的SAX、还有比较出名的第三分Dom4j等等。Dom4j和SAX解析的区别Dom4j是把一个xml文件全部读取到内存...

2019-01-03 17:24:15 253

原创 Tomcat源码解析:5、Tomcat启动

Bootstraporg.apache.catalina.startup.Bootstrap类是Tomcat的入口,当我们想在IDE中运行Tomcat进行调试,可以找到这个类直接运行main方法。我们看下Bootstrap的main方法 public static void main(String args[]) { if (daemon == null) { ...

2019-01-02 19:47:15 286

原创 Tomcat源码解析:4、Tomcat初始化

Bootstraporg.apache.catalina.startup.Bootstrap类是Tomcat的入口,当我们想在IDE中运行Tomcat进行调试,可以找到这个类直接运行main。我们看下Bootstrap的main方法 public static void main(String args[]) { if (daemon == null) { ...

2019-01-01 11:42:26 295

原创 Tomcat源码解析:3、Tomcat生命周期Lifecycle

LifecycleLifecycle接口它是一个公用的接口,在Tomcat的组件中都直接或者间接的实现该类或者它的子类。所以它是一个非常重要的接口,定义了组件生命周期的一些方法,包括:init、start、stop、destroy,还有操作LifecycleListener的API,典型的观察者模式。所以它在Tomcat中起到了举足轻重的作用,熟悉它,对Tomcat的源码分析有非常大的帮助p...

2018-12-27 16:14:21 400

原创 Tomcat源码解析:2、Tomcat结构组成

在看源码之前,我们首先得了解Tomcat的结构组成,并且了解它每个组件的作用,这样我们看才不会一脸懵逼。总体结构tomcat的总体架构如下图所示(摘自https://blog.csdn.net/Dwade_mia/article/details/79051404)如上图所示:Tomcat由Server、Service、Engine、Connector、Host、Context、Wrappe...

2018-12-23 13:13:07 225

原创 Tomcat源码解析:1、环境搭建(Eclipse为例)

源码分析第一步,当然是把源码导入自己的IDE,本文以Tomcat8.5.29为例,使用Ant工具进行代码编译,按照下面的步骤来就可以了下载Ant这里使用的是Ant1.10.5,下载地址:http://mirrors.shu.edu.cn/apache//ant/binaries/apache-ant-1.10.5-bin.zip这里注意:JDK必须在8以上,低于8使用Ant会出问题下载源码...

2018-12-23 10:34:39 208

原创 JavaConcurrent包源码解析:AbstractQueuedSynchronizer

转载一篇AbstractQueuedSynchronizer的源码解析文章感觉写的还不错,后期自己在补上

2018-12-20 15:37:36 113

原创 JavaConcurrent包源码解析:ThreadPoolExecutor线程池

本文概要

2018-12-11 17:35:11 148

原创 Spring4.x源码分析:@Transactional注解事务

本文概要1、@Transactional注解简单使用2、Spring事务传播行为3、TxNameSpaceHandler作用4、TransactionInterceptor源码分析Spring事务传播行为@Transactional注解简单使用TxNameSpaceHandler作用TransactionInterceptor源码分析...

2018-11-30 17:23:07 499

原创 JavaConcurrent包源码解析:ConcurrentHashMap

本文概要ConcurrentHashMap概述ConcurrentHashMap数据结构ConcurrentHashMap源码解析ConcurrentHashMap概述ConcurrentHashMap跟HashMap非常相似,比如数据结构,还有实现思路上都非常相似。但是它们有一个非常大的区别,ConcurrentHashMap是线程安全,HashMap是线程不安全。Concurre...

2018-11-15 14:29:11 182

原创 Java集合源码解析:HashMap

本文概要HashMap概述HashMap数据结构HashMap的源码解析HashMap概述在官方文档中是这样描述的:Hash table based implementation of the Map interface. This implementation provides all of the optional map operations, and permits nul...

2018-11-08 19:50:42 155

原创 Java集合源码解析:TreeMap

本文概要二叉查找树的用处二叉查找树,以及二叉树带来的问题平衡二叉树的好处红黑树的定义以及构造红黑树在TreeMap的运用二叉树的好处可能许多人会有疑问,为什么要使用二叉树,有那么多的数据结构,比如数组、链表等简单看下数组和链表的优缺点数组优势:查找快,通过索引直接定位数据。时间复杂度O(1)劣势:删除和插入元素比较麻烦,需要移动的元素比较多。时间复杂度O(n)链表...

2018-11-07 15:25:15 158

原创 Spring4.x源码解析:AOP切面底层原理解析

简介在我们日常编程中,常常会遇到一些日志、权限验证等功能,在不使用AOP的情况下,解决办法:在我们每个类需要记录日志的方法的方法体内加入记录日志的语句,这种解决方法不仅繁琐而且会导致代码大量冗余。就有人想到了把公共的代码抽出去,需要使用这些公共功能的类,使用代理模式去代理这个对象,然后使其具有这些功能,但是单纯使用代理模式会比较复杂而且不太完善。所以SpringAop就出现了,它对原有的代...

2018-10-25 15:33:12 360

原创 Spring4.x源码解析:JDK动态代理成生成代理对象源码

@Component("aopTestBean")class AopTestBean implements AopTestBeanInterface{ public void aop1(){ System.out.println("aop1"); } public void aop2(){ System.out.println("...

2018-10-25 13:59:32 366

原创 Spring4.x源码解析:Cglib生成代理对象的源码

源代码:@Component("aopTestBean")class AopTestBean implements AopTestBeanInterface{ public void aop1(){ System.out.println("aop1"); } public void aop2(){ System.out.prin...

2018-10-25 13:56:51 1137 1

原创 Spring4.x源码解析:IOC容器底层原理解析

引包 &amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;gt;org.springframework&amp;amp;lt;/groupId&amp;amp;gt; &amp;amp;lt;artifactId&amp;amp;gt;spring-beans&amp;amp;lt;/artifactId

2018-10-23 12:18:23 848

原创 Netty4.x源码分析:服务端接受客户端Channel连接

引包 &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;io.netty&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;netty-all&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;4.1.6.Final&

2018-10-18 13:56:41 818

原创 Netty4.x源码分析:服务端绑定端口

本文会详细解析Netty绑定端口的每一个流程,不过整个过程涉及到许多的异步调用,整个逻辑过程有点绕,非战斗人员谨慎阅读。。绑定端口模板代码 ServerBootstrap serverBootstrap = new ServerBootstrap(); serverBootstrap.group(bossGroup, workGroup) ...

2018-10-16 16:44:02 666

原创 Netty4.x服务端实例Demo

NioEventLoopGroup bossGroup = new NioEventLoopGroup(1); NioEventLoopGroup workGroup = new NioEventLoopGroup(8); try{ ServerBootstrap serverBootstrap = new ServerBootstrap...

2018-10-15 16:40:01 1336 1

原创 Netty4.x源码分析: NioEventLoopGroup创建

NioEventLoopGroup构建过程源码分析NioEventLoopGroup bossGroup = new NioEventLoopGroup(1);1、调用NioEventLoopGroup的一系列构造函数 public NioEventLoopGroup(int nThreads) { this(nThreads, (Executor) null); ...

2018-10-15 16:34:29 254

空空如也

空空如也

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

TA关注的人

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