文章结构 源码:对doReleaseShared()方法的源码进行一些注释 使用场景:介绍doReleaseShared()使用位置,及目的 以写锁开始的队列:分析写锁开始得同步等待队列在唤醒后续读锁节点的过程 以读锁开始的队列 总结 源码 具体解析见注释 /** * Release action for shared mode -- signals successor and ensures * propagation. (Note: For exclusive mode, release j…
之前的文章,在上面建立完config之后,UIl通过ImageLoader.getInstance().init(config.build());来初始化ImageLoader对象,之后就可以用ImageLoader来加载图片. 这里,采用到单例模式来获取ImageLoader对象,保证他全局初始化一次.再上面的分析中,我们可以看出单例模式的好处,创建ImageLoader对象的时候需要创建Config,而Config里面同样初始化了一堆对象.如果每次用到都现初始化ImageLoader,消耗太…
简介 StampedLock 是JDK1.8 开始提供的一种锁, 是对之前介绍的读写锁 ReentrantReadWriteLock 的功能增强.StampedLock 有三种模式:Writing(读).Reading(写).Optimistic Reading(乐观度),StampedLock 的功能不是基于AQS来实现的,而是完全自己内部实现的功能,不支持重入.在加锁的时候会返回一个戳,解锁的时候需要传入,匹配完成解锁操作. 官方使用示例 class Point { private doub…
问题 (1)ConcurrentLinkedQueue是阻塞队列吗? (2)ConcurrentLinkedQueue如何保证并发安全? (3)ConcurrentLinkedQueue能用于线程池吗? 简介 ConcurrentLinkedQueue只实现了Queue接口,并没有实现BlockingQueue接口,所以它不是阻塞队列,也不能用于线程池中,但是它是线程安全的,可用于多线程环境中. 那么,它的线程安全又是如何实现的呢?让我们一起来瞧一瞧. 源码分析 主要属性 // 链表头节点 pr…
这一篇紧接着上一篇SequoiaDB 系列之六 :源码分析之coord节点来讲 在上一篇中,分析了coord转发数据包到catalog节点(也有可能是data节点,视情况而定).这一次,我们继续分析上一篇中的rtnCoordCMDListCollectionSpace的消息包被转发到catalog节点上的处理流程. catalog节点的进程,同样sequoiadb进程,只是角色不一样,运行的服务有区别. 这里就不再赘述catalog节点的启动过程. 在SequoiaDB/engine/cat/c…
好久不见. 在上一篇SequoiaDB 系列之五   :源码分析之main函数,有讲述进程开始运行时,会根据自身的角色,来初始化不同的CB(控制块,control block). 在之前的一篇SequoiaDB 系列之四   :架构简析中,我们简单过了一遍SequoiaDB的架构和各个节点的角色. 今天来看看SequoiaDB的coord角色. 首先,需要有个大致的轮廓: coord节点主要承担代理的角色.作为SequoiaDB集群对外的接头人,它转发消息给其它节点,组合(combine)不同节…
转自:http://www.it165.net/admin/html/201402/2382.html 在上一篇文章Hadoop源码分析之DataNode的启动与停止中分析了DataNode节点的启动大致过程,下面来重点分析DataNode节点中启动过程中的与NameNode节点的几个通信过程. IPC对象创建 在DataNode类中有一个成员变量namenode,它是DatanodeProtocol类型,DatanodeProtocol接口是DataNode节点与NameNode节点间进行IP…
ElasticSearch6.3.2源码分析之节点连接实现 这篇文章主要分析ES节点之间如何维持连接的.在开始之前,先扯一下ES源码阅读的一些心得:在使用ES过程中碰到某个问题,想要深入了解一下,可源码又太多了,不知道从哪里入手,怎么办?ES启动的入口类是Elasticsearch.java,顺着这个启动流程,到Node类的构造方法:org.elasticsearch.node.Node#Node(org.elasticsearch.env.Environment, java.util.Coll…
死磕以太坊源码分析之p2p节点发现 在阅读节点发现源码之前必须要理解kadmilia算法,可以参考:KAD算法详解. 节点发现概述 节点发现,使本地节点得知其他节点的信息,进而加入到p2p网络中. 以太坊的节点发现基于类似的kademlia算法,源码中有两个版本,v4和v5.v4适用于全节点,通过discover.ListenUDP使用,v5适用于轻节点通过discv5.ListenUDP使用,本文介绍的是v4版本. 节点发现功能主要涉及 Server Table udp 这几个数据结构,它们有…
百篇博客系列篇.本篇为: v64.xx 鸿蒙内核源码分析(索引节点篇) | 谁是文件系统最重要的概念 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说一切皆是文件 | 51.c.h.o v63.xx 鸿蒙内核源码分析(文件系统篇) | 用图书管理说文件系统 | 51.c.h.o v64.xx 鸿蒙内核源码分析(索引节点篇) | 谁是文件系统最重要的概念 | 51.c.h.o v65.xx 鸿蒙内核源码分析(挂载目录篇) | 为何文件系统需要挂载…