AQS,全称`AbstractQueuedSynchronizer`,是Concurrent包锁的核心,没有AQS就没有Java的Concurrent包。它到底是个什么,我们来看看
分类:
编程语言 时间:
2018-11-14 19:07:38
阅读次数:
129
前言 前面一篇主要介绍了Watcher接口相关的接口和实体类,但是主要是zk客户端相关的代码,如前一篇开头所说,client需要把watcher注册到server端,这一篇分析下server端的watcher。 主要分析Watchmanager类。 Watchmanager 这是WatchManag ...
分类:
其他好文 时间:
2018-11-08 01:08:50
阅读次数:
169
参照10年前写的文档 (Linux源码阅读工具lxr和glimpse的安装与配置),想重新搭建一个源代码阅读工具,发现源里面都没有相关的工具了。 然后看到有更简单的安装工具Global可以使用,所以果断尝试新的工具,安装后感觉确实简单很多。 源里面的版本有点旧(关键是好像没有htags-server ...
分类:
系统相关 时间:
2018-11-07 11:39:44
阅读次数:
588
Java传统IO是不支持中断的,所以如果代码在read/write等操作阻塞的话,是无法被中断的。这就无法和Thead的interrupt模型配合使用了。JavaNIO众多的升级点中就包含了IO操作对中断的支持。InterruptiableChannel表示支持中断的Channel。我们常用的FileChannel,SocketChannel,DatagramChannel都实现了这个接口。Int
分类:
其他好文 时间:
2018-11-04 19:38:59
阅读次数:
311
Buffer是JavaNIO中对于缓冲区的封装。在JavaBIO中,所有的读写API,都是直接使用byte数组作为缓冲区的,简单直接。但是在JavaNIO中,缓冲区这一概念变得复杂,可能是对应Java堆中的一块内存,也可能是对应本地内存中的一块内存。而byte数组只能用来指定Java堆中的一块内存,所以JavaNIO中设计了一个新的缓冲区抽象,涵盖了不同类型缓冲区,这个抽象就是Buffer。Buf
分类:
其他好文 时间:
2018-11-04 14:48:20
阅读次数:
167
首先来看下HashMap的类继承结构:publicclassHashMapextendsAbstractMap<K,V>impementMap<K,V>,Coloneable,Serializable{}可以看出HashMap实现了Map接口。其里面的方法都是非线程安全的,且不支持并发操作。对于HashMap主要看的是get/put方法实现,其在jdk1.7,及1.8在解决
分类:
编程语言 时间:
2018-11-02 20:33:32
阅读次数:
162
Java最初只有普通的强引用,只有对象存在引用,则对象就不会被回收,即使内存不足,也是如此,JVM会爆出OOME,也不会去回收存在引用的对象。如果只提供强引用,我们就很难写出“这个对象不是很重要,如果内存不足GC回收掉也是可以的”这种语义的代码。Java在1.2版本中完善了引用体系,提供了4中引用类型:强引用,软引用,弱引用,虚引用。使用这些引用类型,我们不但可以控制垃圾回收器对对象的回收策略,同
分类:
其他好文 时间:
2018-11-02 15:30:58
阅读次数:
166
1.getClass() public final native Class<?> getClass(); 获得的是变量实际的类型,比如 得到的输出结果是 hashmap。 getClass 获得的实际类型是Class<? extends |X|> 其中X是变量声明时的类型 2.hashCode() ...
分类:
编程语言 时间:
2018-10-29 16:55:34
阅读次数:
200
Spring 源码关于 RequestContext 相关信息获取 事件监听器的相关代码实现 ...
分类:
编程语言 时间:
2018-10-23 14:52:45
阅读次数:
125
前言 之前看代码的时候也同步看了看一些关于zk源码的博客,有一两篇讲到了ZK里ACL的基础的结构,我自己这边也看了看相关的代码,在这里分享一下! ACL和ID ACL和ID都是有Jute生成的实体类,分别代表了ZK里ACL和不同ACL模式下的具体实体。 ACL: 可以看到,ACL包含了两个域,分别代 ...
分类:
其他好文 时间:
2018-10-19 02:20:04
阅读次数:
140