阅读目录 什么是Session Session的目的 实现机制 Tomcat中的session实现 session存在的问题 什么是Session 对Tomcat而言,Session是一块在服务器开辟的内存空间,其存储结构为ConcurrentHashMap; Session的目的 Http协议是一 ...
分类:
其他好文 时间:
2019-05-10 14:52:12
阅读次数:
131
Spring的别名管理比较规范,有严格的接口规范,SimpleAliasRegistry实现 -> AliasRegistry接口,而且是线程安全的,Map也用的是ConcurrentHashMap,key是String,value是String,而且可以循环引用。 mybatis的别名管理器是Ty ...
分类:
其他好文 时间:
2019-05-08 12:11:25
阅读次数:
134
我在写grpc的实例时, 需要使用一个多线程的hash map, C++标准库中没有多线程的hash map, facebook开源的folly中存在大量的基础类, 中间存在一个高性能的hash map,这个正是我所需要的, 所以在这里简介一下folly库, 按照官方说明, folly库安装需要gc ...
分类:
其他好文 时间:
2019-05-07 13:10:59
阅读次数:
268
一、前言 最近几天忙着做点别的东西,今天终于有时间分析源码了,看源码感觉很爽,并且发现ConcurrentHashMap在JDK1.8版本与之前的版本在并发控制上存在很大的差别,很有必要进行认真的分析,下面进行源码分析。 二、ConcurrentHashMap数据结构 之前已经提及过,Concurr ...
分类:
其他好文 时间:
2019-05-05 19:22:29
阅读次数:
132
本文将主要讲述 JDK1.8 版本 的 ConcurrentHashMap,其内部结构和很多的哈希优化算法,都是和 JDK1.8 版本的 HashMap是一样的,所以在阅读本文之前,一定要先了解 HashMap,可以参考 "HashMap 相关" ;另外 ConcurrentHashMap 中同样有 ...
分类:
其他好文 时间:
2019-04-29 20:50:00
阅读次数:
145
HashTable 底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化 初始size为11,扩容:newsize = olesize*2+1 计算index的方法: ...
分类:
其他好文 时间:
2019-04-27 21:09:31
阅读次数:
128
ConcurrentHashMap这个类在java.lang.current包中,这个包中的类都是线程安全的。ConcurrentHashMap底层存储数据的结构与1.8的HashMap是一样的,都是数组+链表(或红黑树)的结构。在日常的开发中,我们最长用到的键值对存储结构的是HashMap,但是我... ...
分类:
编程语言 时间:
2019-04-22 00:40:52
阅读次数:
175
如果你去面试,面试官不问你这个问题,你来找我^_^ 下面直接来干货,先说这三个Map的区别: HashTable 底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化 ...
分类:
其他好文 时间:
2019-04-19 00:47:33
阅读次数:
165
增加红黑树这个存储结构 在Java8中,为什么要增加红黑树这种数据结构来进行存储,而不是全部使用链表来进行存储呢? 1.因为攻击者可以构造大量具有相同hashCode的内容,使其全部放在同一个列表中,这样,在查找的时候,所花费的时间会很长。这个时候,如果采用红黑树这个结构来进行存储,那么其查找的效率 ...
分类:
编程语言 时间:
2019-04-19 00:40:51
阅读次数:
181
然后,说说精华的部分。 Cmap 支持并发扩容,实现方式是,将表拆分,让每个线程处理自己的区间。如下图: 假设总长度是 64 ,每个线程可以分到 16 个桶,各自处理,不会互相影响。 而每个线程在处理自己桶中的数据的时候,是下图这样的: 扩容前的状态。 当对 4 号桶或者 10 号桶进行转移的时候, ...
分类:
其他好文 时间:
2019-04-15 19:40:52
阅读次数:
151