- 博客(8)
- 收藏
- 关注
原创 一.hdfs架构原理
一.架构设计理念: 1)支持超大数据集 hdfs分布式存储,定位针对超大数据集,比如30亿数据,每台机器存储大数据集的一部分 (2)应对硬件故障 大数据的理念,是不需要使用商用小型机,服务器,商用设备 大数据系统就部署在普通机器上就行了,比如16核64G的物理机 一般部署几十台、几百台、几千上万台机器都有可能 普通机器硬件容易出现故障,hdfs的理念是可以自动探查集群中某台集群...
2020-03-03 22:59:50
287
原创 三.Atomic原子类实现CAS语义
AtomicInteger AtomicInteger是一个原子的自增操作类 分析一下AtomicInteger的源码 先看看它的成员变量 private static final Unsafe unsafe = Unsafe.getUnsafe(); private static final long valueOffset; private volatile int value; ...
2020-01-20 14:20:00
422
原创 二.synchronized关键字
synchronized的作用,synchronized可以保证并发安全问题,比如i++操作,实际是两步,先读取i的值,再把i+1,这样的话多个线程并发执行i++的时候就可能出现并发问题了,这里使用synchronized就能解决并发安全问题,synchronized需要一个锁对象,可以是一个对象实例,也可以是一个Class,直接加在方法上就是当前实例对象 也就是this,多个线程同时执行sync...
2020-01-20 14:14:07
166
原创 一.volitale关键字原理
一.主存区与cpu多级缓存模型 每个cpu都有自己的多级缓存,从主存读取数据以后缓存到自己的缓存区,这样读取性能能大大提升 下图表示cpu多级缓存 二.java内存模型 Java内存模型是跟cpu缓存模型是类似的,基于cpu缓存模型来建立的java内存模型,只不过java内存模型是标准化的,屏蔽掉底层不同的计算机的区别 read(从主存读取),load(将主存读取到的值写入...
2020-01-20 14:08:59
529
原创 LinkedHashMap源码分析
1.基本原理:LinkedHashMap继承了HashMap,put get方法原理与HashMap基本相同,不了解HashMap实现原理的可以先去看看我上一篇文章,HashMap源码分析,HashMap在put一个元素调用newNode方法,LinkedHashMap覆盖了这个方法,在内存中维护了一个链表,所以LinkedHashMap是有插入顺序的,覆盖的时候调用afterNodeAccess...
2019-12-16 15:32:22
163
原创 HashMap源码分析
1.HashMap基本原理:HashMap内部维护了一个数组,默认长度16,存储的时候根据key的hashcode计算出下标,存储到对应下标的数组位置,如果hash冲突就挂成链表,链表长度达到8就转成红黑树,默认负载因子是0.75,如果数组的内容占满了0.75就会扩容,每次扩容是之前的两倍 2.核心成员变量分析 /** * 数组默认初始长度16 */ static final...
2019-12-16 11:56:28
100
原创 LinkedList源码分析
1.基本原理:LinkedList底层基于双向链表实现的,随机查找慢,需要从头开始一个一个比较,删除、插入快,只需要修改节点的引用就行了,没有扩容的说法 2.成员变量分析 /** * 元素数量 */ transient int size = 0; /** * 第一个元素,封装为一个Node */ transient Node<E> first; /** ...
2019-12-12 13:43:58
103
原创 ArrayList源码分析
1.ArrayList基本原理:ArrayList底层基于数组实现,所有插入是有顺序的,数组是一块两块空间,引用它的首地址,长度是固定的,添加元素数组长度满了的时候就会扩容,创建一个新的数组把元素都复制过去,如果在中间插入或删除会导致数组元素一个一个移动,数组有下标随机查找快。 能预估数据长度的条件下,尽量指定长度,避免长度小频繁扩容,适用场景遍历多,随机查找多,没有频繁插入、随机插入少、随机删...
2019-12-11 15:14:01
83
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人