自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除