
java--集合
文章平均质量分 74
java--集合
A__17
这个作者很懒,什么都没留下…
展开
-
java中常见的Map
一、线程不安全的MapHashMap获取entry数组下标的方式:按位与根据key获得一个hashValue[注:hashValue=hash(key)],然后用hashValue对length-1进行按位与运算得到数组的下标,即:hashValue&(length-1) 数组的length必须是2的整数次幂,原因如下: 第一:若length是2的整数次幂,则hashValue&(length-1)等价于hashValue%length,那么hashValue&(le原创 2015-05-27 11:13:55 · 1467 阅读 · 0 评论 -
java中常见的List
常见的List线程不安全的ListArrayList线程安全的ListCollections.synchronizedList(List list)举例:List<String> syncArraylist = Collections.synchronizedList(new ArrayList<String>()); List<String> syncLinkedList = Collections.synchronizedList...原创 2015-10-04 14:22:16 · 1389 阅读 · 0 评论 -
ConcurrentHashMap
ConcurrentHashMap线程安全的原理:采用分段锁的方式,来实现不同段的并发访问。 ConcurrentHashMap维护了一个Segment数组,Segment就是段的实现,每个Segment又维护了一个HashEntry数组,且Segment本身就是一把锁(继承了ReentrantLock) ConcurrentHashMap的扩容是通过Segment的扩容来实现的,Segment的数量(并发的级别)在创建ConcurrentHashMap的时候就确定了,之后不可以改变,默认为1.原创 2015-10-30 22:54:04 · 888 阅读 · 0 评论 -
ConcurrentHashMap(Java 8)
HashMap 是我们日常最常见的一种容器,它以键值对的形式完成对数据的存储,但众所周知,它在高并发的情境下是不安全的。尤其是在 jdk 1.8 之前,rehash 的过程中采用头插法转移结点,高并发下,多个线程同时操作一条链表将直接导致闭链,死循环并占满 CPU。当然,jdk 1.8 以来,对 HashMap 的内部进行了很大的改进,采用数组+链表+红黑树来进行数据的存储。rehash 的过...转载 2020-01-07 21:02:02 · 322 阅读 · 0 评论 -
LRU - 最近最少访问缓存策略
Least Recently Used (LRU) cache最近最少访问缓存策略:/** * 基于LinkedHashMap自定义LRU的实现。 */class LRUCache extends LinkedHashMap<Integer, Integer>{ private int capacity; public LRUCache(int ...原创 2020-03-05 22:04:37 · 549 阅读 · 0 评论 -
ConcurrentSkipListMap
一、前言concurrentHashMap与ConcurrentSkipListMap性能测试在4线程1.6万数据的条件下,ConcurrentHashMap 存取速度是ConcurrentSkipListMap 的4倍左右。但ConcurrentSkipListMap有几个ConcurrentHashMap 不能比拟的优点:1、ConcurrentSkipListMap 的key是有序的。2、ConcurrentSkipListMap 支持更高的并发。ConcurrentSkipList.转载 2021-04-14 18:01:11 · 2224 阅读 · 2 评论 -
ArrayList的序列化
概念: 1)序列化一个对象时,被transient关键字修饰的变量(的值)不会被序列化。 ArrayList的序列化机制: 1)ArrayList实现了java.io.Serializable接口。 2)ArrayList中存放集合元素的Object数组被关键字transient修饰。代码:transient Object[] elementData; 3)ArrayList序列化集合原创 2017-11-20 22:32:39 · 2865 阅读 · 1 评论 -
LinkedList源码分析
package java.util;import java.util.function.Consumer;public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializa...原创 2015-05-29 17:30:53 · 737 阅读 · 0 评论 -
HashMap源码分析
package java.util;import java.io.*;/** * JDK7 */public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { /** * 默认的初始容量是16,且容量...原创 2015-05-27 11:27:44 · 1407 阅读 · 0 评论 -
java8的新特性
Java语言的新特性 1)Lambda表达式 概念:java8中增加了一个新的语法--Lambda表达式,并且引入了一个新的操作符(Lambda操作符): -> Lambda操作符 -> : -> 将Lambda表达式分为两个部分: 左侧:指定了Lambda表达式需要的参数,参数的数据类型可以由编译器的“类型推断”机制推断得出,故可以省略。 右侧:指原创 2017-11-08 23:26:14 · 442 阅读 · 0 评论 -
jdk中https安全协议证书异常导致访问https接口报错的问题
问题:java进程访问https接口时,报错javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty at sun...原创 2019-11-22 20:40:38 · 2759 阅读 · 0 评论