Summer Blog

LintCode 网易算法题解答

题目: https://www.lintcode.com/ladder/55/

分布式系统一致性

CAP Theorem

对于一个分布式系统,不能同时满足:一致性,可用性,分区容错性

弱一致性

强一致性

Map 源码分析

map是常用的数据类型,我经常用的是HashMap,好处是简单效率也还不错。本篇同时会涉及到TreeMapConcurrentHashMap,作为有序和线程安全的map的常用实现,这两种类型也是比较常用的。

HashMap

以数组实现的哈希桶数组,用 Key 的哈希值取模桶数组的大小可得到数组下标。

HashMap不是线程安全的类,在扩容时可能产生死循环报错。

成员

    // hash表,会在第一次使用的时候初始化,必要的时候会进行扩容。容量总是2的次方
    transient Node<K,V>[] table;
    // 对于entrySet()方法的一个缓存,实际并不会存储任何数据,只是对`map`数据做操作
    transient Set<Map.Entry<K,V>> entrySet;
    // 表示存储了多少key-value mappings
    transient int size;
    // 用来fail-fast
    transient int modCount;
    // 扩充阀值 等于capacity * loadFactor
    int threshold;
    // 加载因子
    final float loadFactor;