自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(117)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 Dubbo源码解析之consumer关联provider

阅读须知dubbo版本:2.6.0spring版本:4.3.8文章中使用/* */注释的方法会做深入分析正文我们知道,dubbo的生产者和消费者的关系维护在注册中心,所以,消费者关联生产者肯定是需要订阅注册中心的相关生产者信息才能完成,在Dubbo源码解析之registry注册中心这篇文章中我们分析了dubbo有关注册中心的一些操作如注册、订阅等,在文章的最后,我们分析了消费者订阅注...

2018-10-11 19:47:49 952

原创 Dubbo源码解析之consumer调用篇

阅读须知dubbo版本:2.6.0spring版本:4.3.8文章中使用/* */注释的方法会做深入分析正文

2018-10-11 10:50:00 1314

原创 Dubbo源码解析之consumer初始化

阅读须知dubbo版本:2.6.0spring版本:4.3.8文章中使用/* */注释的方法会做深入分析正文dubbo的consumer由ReferenceBean初始化,我们先来看一下这个类的层次结构:我们看到ReferenceBean实现了InitializingBean,所以我们先来看一下它的afterPropertiesSet方法实现:ReferenceBean:pu...

2018-10-07 17:46:39 1608

原创 Dubbo源码解析之provider调用篇

阅读须知dubbo版本:2.6.0spring版本:4.3.8注释规则: //单行注释做普通注释/**/多行注释做深入分析建议配合源码阅读正文在之前的源码分析文章中,我们看到了dubbo用netty作为底层的网络通信框架,熟悉netty的同学应该知道,使用netty时我们会使用它的各种Handler作为处理一些网络事件的处理器,在开启netty服务时,dubbo添加

2018-09-19 20:23:34 1789

原创 Dubbo源码解析之provider暴露篇

阅读须知dubbo版本:2.6.0spring版本:4.3.8文章中使用/* */注释的方法会做深入分析正文承接provider初始化篇,本篇文章我们来分析provider的暴露过程。ServiceConfig:private void doExportUrlsFor1Protocol(ProtocolConfig protocolConfig, List<URL> ...

2018-09-19 00:06:42 1510

原创 Netty源码解析之ServerSocketChannel close流程

###阅读须知Netty版本:4.1.14.Final文章中使用/* */注释的方法会做深入分析###正文本篇文章我们来分析ServerSocketChannel的close流程,这是一个通用的流程,很多地方关闭ServerSocketChannel时都是复用这个流程。AbstractChannel.AbstractUnsafe:protected final void close...

2018-09-18 10:46:51 1620

原创 Dubbo源码解析之registry注册中心

阅读须知dubbo版本:2.6.0spring版本:4.3.8文章中使用/* */注释的方法会做深入分析正文注册中心是Dubbo的重要组成部门,主要用于服务的注册与发现,我们可以选择Redis、数据库、Zookeeper作为Dubbo的注册中心,Dubbo推荐用户使用Zookeeper作为注册中心,在provider和consumer的初始化过程中,我们看到了dubbo通过调用...

2018-09-01 14:11:36 3088

原创 Netty源码解析之NioEventLoopGroup

阅读须知Netty版本:4.1.14.Final文章中使用/* */注释的方法会做深入分析正文在分析BootStrap源码时我们给出的示例程序中,我们看到了NioEventLoopGroup的身影,之前我们分析了NioEventLoop的源码,从命名上就可以看出,NioEventLoopGroup维护了一组NioEventLoop,我们首先看一下它的构造方法,默认无参构造方法...

2018-08-25 16:23:14 628

原创 Netty源码解析之NioEventLoop

阅读须知Netty版本:4.1.14.Final文章中使用/* */注释的方法会做深入分析正文Netty的EventLoop主要用于处理I/O操作,而NioEventLoop就是EventLoop的主要实现之一,它将Channel注册到Selector,因此在事件循环中可以对这些进行多路复用。我们首先来看NioEventLoop的层次结构: 我们首先来看它的构造方法:...

2018-08-13 10:21:51 878

原创 Spring源码解析之bean的销毁

阅读须知Spring源码版本:4.3.8文章中使用/* */注释的方法会做深入分析正文我们来看几个销毁bean的场景,在一些异常情况,例如Spring上下文初始化失败时,会销毁已经创建的单例bean,这时会调用相关销毁方法,在Spring容器关闭时,同样会调用disposableBeans的销毁方法: AbstractApplicationContext:public vo...

2018-08-09 17:40:41 2256

原创 SpringMVC源码解析之HandlerMapping

阅读须知Spring源码版本:4.3.8文章中使用/* */注释的方法会做深入分析正文HandlerMapping是Spring MVC中一个很重要的角色,用于注册和获取handler,在初始化阶段如果用户没有指定HandlerMapping,会默认添加两个默认的策略BeanNameUrlHandlerMapping和DefaultAnnotationHandlerMapping...

2018-08-09 17:06:36 1765 2

原创 Netty源码解析之ByteToMessageDecoder

阅读须知Netty版本:4.1.14.Final文章中使用/* */注释的方法会做深入分析正文之前我们介绍了ChannelHandler,这篇文章我们来介绍一个具体的子类实现ByteToMessageDecoder,它是一个抽象类,继承了ChannelInboundHandlerAdapter,所以它处理入站事件,从命名上可以看出,它是一个解码器,用于将ByteBuf解码成P...

2018-08-08 16:05:36 1488

原创 最容易理解的一致性哈希算法解析

哈希简介我们首先来简单介绍一下什么是哈希(以下简称hash),hash本质来说就是映射,或者说是键值对key-value,不同的hash之间不过就是实现key-value映射的算法不同,例如java中计算对象的hashcode值会有不同的算法,常用于各种分布式存储分片的id取摩算法等,都属于hash算法。面临的问题一个算法的出现一定是为了解决某个问题或者是某类问题,理解算法解决了什...

2018-08-08 16:01:00 938 2

原创 Netty源码解析之ChannelHandler

阅读须知Netty版本:4.1.14.Final 文章中使用/**/注释的方法会做深入分析正文

2018-07-24 17:26:53 752

原创 Netty源码解析之UnpooledHeapByteBuf

阅读须知Netty版本:4.1.14.Final文章中使用/* */注释的方法会做深入分析正文建议首先阅读Netty源码解析之AbstractByteBuf,UnpooledHeapByteBuf是AbstractByteBuf的子类,它是基于内存的非池化的字节缓冲区,我们首先来看它的主要成员变量: UnpooledHeapByteBuf:// 用于内存分配priva...

2018-07-23 11:03:54 1209

原创 阿里&滴滴面试心得

Spring最好要阅读一下源代码,如果没有阅读过或者阅读起来比较困难,请参考笔者的Spring源码解析系列文章。 https://blog.csdn.net/heroqiang/article/category/7303318bean的生命周期,就是bean的初始化到销毁这一整个过程中比较重要的几个步骤,例如Aware、InitializingBean、BeanPostProcessor...

2018-07-19 20:15:23 2054 2

原创 Netty源码解析之AbstractByteBuf

阅读须知Netty版本:4.1.14.Final文章中使用/* */注释的方法会做深入分析正文当我们进行数据传输的时候,经常需要使用到缓冲区,对于JDK NIO而言,我们主要使用的是ByteBuffer,从功能角度而言,ByteBuffer完全可以满足NIO编程的需要,为什么Netty还要实现自己的ByteBuf呢?这里引用《Netty权威指南》中对这个问题的解释:Byte...

2018-07-18 10:39:39 1128

原创 适配器模式实践

最近在为系统做一个限流的小组件,采用漏桶算法,基于AOP+Semaphore实现,限流不是本文的重点,有兴趣的读者可以去查阅相关资料。在这个组件中用到了适配器模式,我们首先来看适配器模式的类图:...

2018-06-17 17:22:18 692 4

原创 Netty源码解析之ChannelPipeline

阅读须知Netty版本:4.1.14.Final 文章中使用/**/注释的方法会做深入分析正文在之前的文章中,我们经常能看到ChannelPipeline的身影,本篇文章我们就来详细分析一下ChannelPipeline。下面为ChannelPipeline的注释介绍: ChannelHandler的列表,用于处理或拦截Channel的入站事件和出站操作。Channel...

2018-06-14 17:50:55 1264

原创 Netty源码解析之ServerSocketChannel register流程

阅读须知Netty版本:4.1.14.Final 文章中使用/**/注释的方法会做深入分析正文我们在分析Bootstrap引导启动的源码时看到了Channel的注册,但是并没有做深入分析,本篇文章我们就来看一下Channel的注册流程。Channel的注册委托给了Channel内部的Unsafe来完成,我们来看实现: AbstractChannel.AbstractUnsafe...

2018-06-11 16:52:28 2739

翻译 MySQL官方文档14.5.5.3 如何最小化和处理死锁

原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-deadlocks-handling.html14.5.5.3如何最小化和处理死锁本节基于第14.5.5.2节“死锁检测和回滚”中有关死锁的概念信息。它解释了如何组织数据库操作以最大限度地减少死锁以及应用程序中所需的后续错误处理。死锁是事务数据库中的一个典型问题,但它们并不危险,除非...

2018-06-10 16:00:46 562

翻译 MySQL官方文档14.5.5.2 死锁检测和回滚

原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-deadlock-detection.html14.5.5.2 死锁检测和回滚当启用死锁检测时(默认),InnoDB会自动检测事务死锁并回滚一个或多个事务来打破死锁。InnoDB会尝试选择小型事务进行回滚,其中事务的大小由插入,更新或删除的行数决定。如果innodb_table_lo...

2018-06-08 19:35:45 2031

翻译 MySQL官方文档14.5.5.1 InnoDB死锁示例

原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-deadlock-example.html14.5.5.1 InnoDB死锁示例以下示例说明了锁请求如何发生错误会导致死锁时。这个例子涉及两个客户端,A和B。 首先,客户端A创建一个包含一行的表,然后开始一个事务。在事务中,A通过在共享模式下select来获得行上的S锁:mysql...

2018-06-08 16:19:46 767

翻译 MySQL官方文档14.5.2 InnoDB事务模型

原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-transaction-model.html14.5.2InnoDB事务模型14.5.2.1 事务隔离级别 14.5.2.2 自动提交、提交和回滚 14.5.2.3 一致性非锁定读取 14.5.2.4 锁定读取在InnoDB事务模型中,目标是将多版本数据库的最佳属性与传统的两阶...

2018-06-08 15:12:59 977

翻译 MySQL官方文档14.5.2.2 自动提交、提交和回滚

原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-autocommit-commit-rollback.html14.5.2.2自动提交、提交和回滚在InnoDB中,所有的用户活动都发生在一个事务中。如果启用自动提交模式,则每个SQL语句将自行形成单个事务。默认情况下,MySQL为启用自动提交的每个新连接启动会话,因此如果该语句没有...

2018-06-08 09:44:00 828

原创 Netty源码解析之ServerSocketChannel bind流程

阅读须知Netty版本:4.1.14.Final文章中使用/**/注释的方法会做深入分析正文提起Channel,相信熟悉java网络编程的同学都不陌生,Channel是JDK NIO类库的重要组成部分,用于非阻塞的I/O操作,同样的,Netty也提供了自己的Channel实现,为什么Netty不使用JDK NIO原生的Channel而要自己实现新的Channel呢?我们引用《...

2018-06-07 17:06:40 3536 3

原创 Netty源码解析之ServerBootstrap

阅读须知Netty版本:4.1.14.Final文章中使用/**/注释的方法会做深入分析正文我们在之前的文章中分析了Bootstrap的源码,ServerBootstrap和Bootstrap都继承了AbstractBootstrap,所以它们有相似的逻辑,Bootstrap用户客户端,而ServerBootstrap用于服务端,我们还是先来看一个简单的服务端启动的方法:...

2018-05-31 21:25:10 1079

原创 Netty源码解析之Bootstrap

阅读须知Netty版本:4.1.14.Final文章中使用/**/注释的方法会做深入分析正文private void connect(int port, String host) throws Exception { EventLoopGroup group = new NioEventLoopGroup(); try { Bootstrap ...

2018-05-31 09:55:10 2461

翻译 MySQL官方文档14.5.3 InnoDB中不同的SQL语句设置的锁

原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-locks-set.html14.5.3 InnoDB中不同的SQL语句设置的锁锁定读取,UPDATE或DELETE通常会在处理SQL语句时扫描的每个索引记录上设置记录锁。在语句中WHERE条件是否将排除该行并不重要。InnoDB不记得确切的WHERE条件,但只知道扫描了哪些索引范围...

2018-05-04 16:26:20 1470

翻译 MySQL官方文档14.5.2.4 锁定读取

原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-locking-reads.html14.5.2.4 锁定读取如果您查询数据,然后在同一事务中插入或更新相关数据,则常规SELECT语句不会提供足够的保护。其他事务可以更新或删除刚才查询的相同行。InnoDB支持两种类型的锁定读取,提供额外的安全性:SELECT … LOCK ...

2018-05-03 21:06:44 1459

翻译 MySQL官方文档14.5.2.3 一致性非锁定读取

14.5.2.3 一致性非锁定读取一致性读取意味着InnoDB使用多版本化在某个时间点向查询呈现数据库的快照。该查询可以查看在该时间点之前提交的事务所做的更改,并且没有被后来的或未提交的事务修改。此规则的异常是该查询查看同一事务中较早的语句所做的更改。此异常会导致以下异常:如果您更新表中的某些行,则SELECT会看到更新行的最新版本,但它也可能会看到任何行的旧版本。如果其他会话同时更新同一个表

2018-05-03 19:36:16 1646

原创 ReentrantReadWriteLock 源码解析

ReentrantReadWriteLock 读写锁源码详细分析

2018-04-15 20:39:47 751

原创 Semaphore 源码解析

Semaphore 源码详解

2018-04-09 11:58:53 1091

原创 CountDownLatch 源码解析

CountDownLatch 源码详解

2018-04-04 10:20:16 1391 1

原创 ReentrantLock 源码解析

ReentrantLock 源码详解,结合 AQS 源码分析 ReentrantLock 的运行流程,包括 lock 和 unLock 的流程,公平锁非公平锁的原理等。

2018-04-02 09:29:30 1196

原创 AQS(AbstractQueuedSynchronizer)源码解析(ConditionObject)

JDK AQS ConditionObject 源码详细分析,包括条件队列和同步队列的转换、中断处理、await 方法和 signal 方法的源码详解。

2018-03-30 18:15:52 4193 3

原创 AQS(AbstractQueuedSynchronizer)源码解析(共享锁)

JDK AQS 共享锁部分的源码详解,详细介绍了 AQS 共享锁的加锁和释放流程

2018-03-23 16:01:01 4291 1

翻译 MySQL官方文档14.5.2.1 事务隔离级别

原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-transaction-isolation-levels.html14.5.2.1事务隔离级别事务隔离是数据库处理的基础之一。隔离是首字母缩写ACID的I;隔离级别是在多个事务同时进行更改和执行查询时,对性能和可靠性之间的平衡,结果的一致性和再现性进行微调的设置。InnoDB提供了S...

2018-03-21 09:54:01 695

原创 Dubbo源码解析之扩展点(ExtensionLoader)篇

阅读须知dubbo版本:2.6.0spring版本:4.3.8文章中使用/**/注释的方法会做深入分析正文我们在阅读dubbo源代码的时候经常会看到ExtensionLoader这个类的身影,命名上我们就可以看出它是一个扩展的加载器,在分析源码之前,读者可以首先去dubbo的官方文档中看一下关于扩展点加载的介绍,对ExtensionLoader先有一个初步的认识,便于更好的理解...

2018-03-18 21:28:27 1777

翻译 MySQL官方文档14.5.1 InnoDB锁

原文地址:https://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html14.5.1 InnoDB锁本节介绍InnoDB使用的锁类型。共享和独占锁意向锁记录锁间隙锁Next-Key 锁插入意向锁AUTO-INC锁空间索引谓词锁共享和独占锁InnoDB使用两种类型的锁,共享(S)锁和独占(X)锁实现标准...

2018-03-10 16:53:02 599

Java 8实战(中文完整版).pdf

java8 实战 中文版 完整版 清晰 java8 in action 中文翻译版

2018-05-04

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

TA关注的人

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