Guava Cache [toc] 一、概述 1、内存缓存 可看作一个 jdk7的concurrentHashMap ,核心功能get,put 但是比一般的map多了一些功能,如: ??过限失效(根据不同的维度失效,读后N秒,写后N秒,最大size,最大weight) 自动刷新 支持软引用和弱引用 ...
分类:
系统相关 时间:
2018-07-07 01:11:25
阅读次数:
197
一、概述1、内存缓存2、核心数据结构二、具体实现0、一览众山小1、CacheBuilder 构建器2、LocalCache1)初始化2)put3)get4)清理软/弱引用一、概述1、内存缓存可看作一个jdk7的concurrentHashMap,核心功能get,put但是比一般的map多了一些功能,... ...
分类:
系统相关 时间:
2018-07-06 13:15:28
阅读次数:
225
集合类 Key Value Super 说明 HashTable 不允许为null 不允许为null Dictionary 线程安全 ConcurrentHashMap 不允许为null 不允许为null AbstractMap 分段锁技术 TreeMap 不允许为null 允许为null Abst ...
分类:
其他好文 时间:
2018-07-04 01:18:30
阅读次数:
153
Vector:就比Arraylist多了个同步化机制(线程安全)LinkedList:因为成员方法大多是synchronized的,因此LinkedList是线程安全的而ArrayList不是线程安全的Hashtable:就比Hashmap多了个线程安全 ConcurrentHashMap:是一种高 ...
分类:
编程语言 时间:
2018-06-29 14:05:57
阅读次数:
141
这两天遇到一个问题,我用JDK 8编译出来的程序在JRE 6上运行报ClassNotFoundException,说找不到java.util.concurrent.ConcurrentHashMap$KeySetView这个类。 原来Java 7或以下版本中是没有java.util.concurre ...
分类:
其他好文 时间:
2018-06-28 14:00:40
阅读次数:
150
1. 线程不安全的HashMap 本节的代码均基于JDK 1.7.0_67 HashMap是非线程安全的, HashMap的线程不安全主要体现在resize时的死循环及使用迭代器时的fast fail上。 1.1 HashMap工作原理 1.1.1 HashMap寻址方式 对于新插入的数据或者待读取 ...
分类:
编程语言 时间:
2018-06-27 00:50:44
阅读次数:
256
1. 摘要 HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。 JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等(8的ConcurrentHashMap也引入的红黑树)。 本文结合JDK1.7和JDK1.8的区别,深入探讨HashM ...
分类:
编程语言 时间:
2018-06-27 00:20:32
阅读次数:
176
一、背景: 线程不安全的HashMap 因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。 效率低下的HashTable容器 HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下 ...
分类:
编程语言 时间:
2018-06-26 13:52:30
阅读次数:
205
1.3海量数据解决方案 1.使用缓存: 使用方式:1,使用程序直接保存到内存中。主要使用Map,尤其ConcurrentHashMap。 2,使用缓存框架。常用的框架:Ehcache,Memcache,Redis等。 最关键的问题是:什么时候创建缓存,以及其失效机制。 对于空数据的缓冲:最好用一个特 ...
分类:
其他好文 时间:
2018-06-25 20:23:54
阅读次数:
138
本文主要讲并行优化的几种方式, 其结构如下: 锁优化 减少锁的持有时间 例如避免给整个方法加锁 改进后 减小锁的粒度 将大对象,拆成小对象,大大增加并行度,降低锁竞争. 如此一来偏向锁,轻量级锁成功率提高. 一个简单的例子就是jdk内置的ConcurrentHashMap与SynchronizedM ...
分类:
编程语言 时间:
2018-06-25 10:57:03
阅读次数:
146