2020年1月8日

JAVA并发-AQS知识笔记

摘要: 概述 AQS是AbstractQueuedSynchronizer的缩写,翻译成中文就是抽象队列同步器,AbstractQueuedSynchronizer这个类也是在java.util.concurrent.locks下面。简单来说AQS定义了一套多线程访问共享资源的同步器框架,这套框架定义了共同 阅读全文

posted @ 2020-01-08 17:43 伯安知心 阅读(788) 评论(1) 推荐(0) 编辑

2020年1月1日

synchronized学习笔记

摘要: 概述 我们都知道加锁的目的就是:序列化访问临界资源,即同一时刻只能有一个线程访问临界资源(同步互斥访问)。在java对象中,每一个对象有且只有一个同步锁。这也意味着,同步锁依赖于对象而存在,当我们访问某对象的synchronized方法时,就获取了该对象的同步锁。synchronized的底层是使用 阅读全文

posted @ 2020-01-01 13:26 伯安知心 阅读(304) 评论(0) 推荐(0) 编辑

2019年12月31日

2019年年终总结

摘要: 概述 北京的冬天刮起风来还是比较冷的,在这2019年的最后一天,我也该回顾一下这一年的时光了,这一年对我来说都是很重要的一年,既是转折也是决定,既是顺势也是波折。当然写一篇随笔来诉苦是没有质量的文章。言归正传,我们依然从技术和其他来完结这篇总结。 技术综述 2019年技术大事记,按照时间顺序。 mo 阅读全文

posted @ 2019-12-31 17:12 伯安知心 阅读(268) 评论(0) 推荐(0) 编辑

2019年12月29日

JMM模型基础知识笔记

摘要: 概述 内存模型可以理解为在特定的操作协议下,对特定的内存或者高速缓存进行读写访问的过程抽象,不同架构下的物理机拥有不一样的内存模型,Java虚拟机也有自己的内存模型,即Java内存模型(Java Memory Model, JMM)。在C/C++语言中直接使用物理硬件和操作系统内存模型,导致不同平台 阅读全文

posted @ 2019-12-29 16:14 伯安知心 阅读(420) 评论(0) 推荐(0) 编辑

线程基础知识笔记

摘要: 概述 现代操作系统调度CPU的最小单元是线程,也叫轻量级进程(Light Weight Process),在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。处理器在这些线程上高速切换,让使用者感觉到这些线程在同时执行。 现在我们了解一下系统的 阅读全文

posted @ 2019-12-29 12:43 伯安知心 阅读(298) 评论(0) 推荐(0) 编辑

2019年12月27日

缓存一致性性协议MESI笔记

摘要: 概述 今天的笔记只是讲解一下MESI的概念和使用场景的介绍,MESI(Modified Exclusive Shared Or Invalid)也称为伊利诺斯协议,是一种广泛使用的支持协会策略的缓存一致性协议,这里的缓存一致性就是指CPU缓存的一致性。为了让读者明白其中的概念,我们先从CPU说起。 阅读全文

posted @ 2019-12-27 17:44 伯安知心 阅读(317) 评论(0) 推荐(0) 编辑

2019年12月14日

JAVA-JDK1.8-ConCurrentHashMap-源码并且debug说明

摘要: 概述 在上述的随笔中已经介绍了JDK1.7版本的ConCurrentHashMap源码和测试了,现在这篇随笔主要介绍JDK1.8版本的ConCurrentHashMap,这个版本抛弃了分段锁的实现,直接采用CAS+synchronized保证并发更新的安全性,底层采用数组+链表+红黑树的存储结构。其 阅读全文

posted @ 2019-12-14 14:18 伯安知心 阅读(486) 评论(0) 推荐(0) 编辑

2019年12月8日

JAVA-JDK1.7-ConCurrentHashMap-测试和验证

摘要: 概述 上次记录了关于ConCurrentHashMap的原理以及源码,现在我对其进行有关功能的测试,下面就讲解一下我测试的内容和代码。这些测试主要针对JDK1.7版本。 GET安全测试 上一篇写过get方法是没有加锁的,因为HashEntry的value和next属性是volatile的,volat 阅读全文

posted @ 2019-12-08 13:26 伯安知心 阅读(388) 评论(0) 推荐(0) 编辑

2019年12月1日

JAVA-JDK1.7-ConCurrentHashMap-源码并且debug说明

摘要: 概述 在一个程序员的成长过程就一定要阅读源码,并且了解其中的原理,只有这样才可以深入了解其中的功能,就像ConCurrentHashMap 是线程安全的,到底是如何安全的?以及如何正确使用它?rehash在什么情况?红黑树存储原理?不了解其中源码原理是不行的。所以今天就写一篇Java源码的,关于Co 阅读全文

posted @ 2019-12-01 17:12 伯安知心 阅读(295) 评论(0) 推荐(0) 编辑

2019年11月9日

spark学习笔记(一)

摘要: 概括 我们公司使用spark已经有段时间了,现在我对我之前的学习知识进行整理,以便记录和大家共同学习,有一部分是网上摘抄,感谢网络共享大神。本文只是针对spark2,spark基本概念,简而言之就是:spark专门为大规模数据处理而设计的快速通用的计算引擎,是apache的一个开源项目。是一种跟Ha 阅读全文

posted @ 2019-11-09 17:01 伯安知心 阅读(943) 评论(0) 推荐(0) 编辑

导航