- 博客(8)
- 收藏
- 关注
原创 JUC之Queue源码(一)
Queue接口Queue接口规定了队列的6个标准方法,功能包括入队、出队以及查找。下面是方法说明:方法 方法说明 add 添加队列元素,队列满时,会抛出异常。 offer 添加队列元素,队列满时,不会抛出异常。 remove 移除队首元素,队列为空时,会抛出异常。 poll 移除队首元素,队列为空时,不会抛出异常。 element 返回队首元素,不会移除元素,队列为空时,会抛出异常。 peek 返回队首元素,不会移除元素,队列为空时,
2022-05-09 16:46:03
388
原创 JUC之StampedLock源码
前提1.WNode源码分析static final class WNode { volatile WNode prev; //节点的前置连接 volatile WNode next; //节点的后置连接 volatile WNode cowait; //连续读节点的等待队列 volatile Thread thread; volatile int status; // 0, WA
2022-05-05 13:18:54
781
原创 JUC之ReentrantLock、ReentrantReadWriteLock
ReentrantLock一种基于Lock接口实现的独占可重入锁。它有两种实现,一种是公平锁,一种是非公平锁。ReentrantLock基于AQS,而且是独占式的,所以代码比较简单,源码重点在tryAcquire方法里,下面直接看源码解析:public class ReentrantLock implements Lock, java.io.Serializable { private final Sync sync;//同步器 public Reentrant
2022-04-29 19:27:45
151
原创 JUC之Atomic源码解析
Atomic操作类型1.基本类型AtomicIntegerAtomicInteger使用的是volatile+cas的方式保证数据的操作原子性。这种方式是有缺点的,ABA问题是它的缺点,所以使用该类型,要能无视ABA带来的影响。没有深入到jvm的源码级别,这里说一下里面的几个特殊方法的说明:public final int accumulateAndGet(int x, IntBinaryOperator ac..
2022-04-24 18:29:26
371
原创 数据结构——线性数据结构
数据结构是指计算机组织和存储数据的方式,不同的数据结构的特点影响着数据相关操作的效率。线性数据结构是指元素之间的关系是一对一的。线性数据结构有栈,队列,双队列,数组,链表,串。一、数组数组是一种典型的顺序存储线性结构并且大小固定,其中元素都具有相同类型,数组在内存中是以一种连续的空间进行存储的,也就是说数组中的元素在内存空间中是两两相邻的,所以已知第一个元素的位置,其他元素的位置都可以...
2019-03-24 23:38:20
3023
原创 JVM的内存管理
一、JVM的概述java语言的跨平台性就是靠着jvm的产生而实现的,jvm是Java Virtual Machine的缩写,所谓虚拟机就是虚拟一台计算机,在真实的计算机上仿真模拟各种计算机功能实现的。java是跨平台的,但是jvm不是,就是因为jvm根据不同平台的规范进行编写,才屏蔽了平台相关性因素。二、虚拟机的运行时数据区图中的各个区域就是jvm运行时使用的内存区,不同区域所属的功能不同。1.程...
2018-06-20 16:49:27
478
原创 python序章
一、简述由于突然对python有了一些兴趣和工作的需要,开始接触这门语言,语言历史及地位等等就不详细概述了。本人使用的是python 3.6.5的版本,据说python 2.x和3.x的版本有些许区别,这里就不考虑了。 Python 是一个解释型、交互性和面向对象的脚本语言。python是解释型脚本语言,这就代表它是不需要编译的,不想java、c、c++等需要编译后才能执行;交互性指的是py...
2018-06-12 09:31:20
268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人