自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

兴趣使然的草帽路飞

最怕你一生碌碌无为,还安慰自己平凡可贵!

  • 博客(43)
  • 资源 (6)
  • 问答 (1)
  • 收藏
  • 关注

原创 MySQL面试题合集!

临近秋招,备战暑期实习,祝大家每天进步亿点点!Day13本篇总结的是 MySQL 相关的面试题,后续会每日更新~一、MySQL索引分析以及相关面试题参考文章:MySQL索引分析以及相关面试题二、MySQL主从复制与表拆分相关问题总结参考文章: MySQL主从复制与表拆分相关问题总结三、MySQL如何解决幻读和不可重复度?参考文章:MySQL如何解决幻读和不可重复度?四、MySQL中联表查询条件WHERE和ON的区别?参考文章:MySQL中联表查询条件WHERE和O.

2021-05-31 09:50:52 16780 58

原创 (Java实习生)每日10道面试题打卡——Java多线程篇 (二)

临近秋招,备战暑期实习,祝大家每天进步亿点点!Day12本篇总结的是 Java 多线程 相关的面试题,后续会每日更新~1、是否了解volatile关键字?能否解释下它和synchronized有什么区别?线程安全行:线程安全性包括三个方面,①可见性,②原子性,③ 有序性。volatile特性参考文章: volatile关键字volatile 保证线程可见性案例:使用Volatile关键字的案例分析源码分析文章参考:java同步系列之volatile解析通俗来.

2021-05-30 12:35:51 5119 62

原创 ConcurrentHashMap源码夺命15问,你能坚持到第几问?

临近秋招,备战暑期实习,祝大家每天进步亿点点!Day11本篇总结的是 ConcurrentHashMap 相关的面试题,后续会每日更新~对 ConcurrentHashMap 源码不熟悉的可以参考我的往期博客:ConcurrentHashMap源码解析文章总目录卷吗?卷就对了,Java 就是这么卷卷单单!1、请你描述一下ConcurrentHashMap存储数据结构是什么样子呢?ConcurrentHashMap 内部的 map 结构和 HashMap 是一致的,都是由:数组 + 链表.

2021-05-30 08:05:44 2253 37

原创 ThreadLocal源码夺命12问,你能坚持到第几问?

临近秋招,备战暑期实习,祝大家每天进步亿点点!Day10本篇总结的是 并发编程 ThreadLocal源码面试题,后续会每日更新~ThreadLocal 源码深入分析参考我的往期博客:ThreadLocal源码分析_01 入门案例以及表层源码分析、ThreadLocal源码分析_02 内核(ThreadLocalMap)注:不理解 ThreadLocal 如何使用以及其原理的小伙伴,一定要先看上面的两篇博客哦!1、面试官:请你说一说你对ThreadLocal的理解?ThreadLocal.

2021-05-29 11:22:40 2834 53

原创 (Java实习生)每日10道面试题打卡——JVM篇 (三)

临近秋招,备战暑期实习,祝大家每天进步亿点点!Day08有粉丝大佬要求更新有难度的,所以本篇总结的是 JVM 相关的面试题,后续会每日更新~1、Java中的异常体系Java 冲所有异常都来自顶级父类 Throwable。Throwable 下有两个子类 Exception 和 Error,用于表示程序出现了不正常的情况。区别在于:Error 是程序错误,通常为虚拟机相关错误,如系统崩溃,内存不足,堆栈溢出等,编译器不会对这类错误进行检测,JAVA 应用程序也不应对这类错误进行捕获,一旦这.

2021-05-29 08:41:31 4128 42

原创 (Java实习生)每日10道面试题打卡——JVM篇 (二)

临近秋招,备战暑期实习,祝大家每天进步亿点点!Day07有粉丝大佬要求更新有难度的,所以本篇总结的是 JVM 相关的面试题,后续会每日更新~注:JVM 比较枯燥,直接刷题前,最好先去串一遍 JVM 课程,这里推荐传智播客的 JVM 教程:黑马程序员JVM教程笔记完整目录1、请你说一说java 中的 五种引用?Java 中都有哪些引用类型?① 强引用只要沿着 GC Root 的引用链能够找到该对象,就不会被垃圾回收;只有当 GC Root 都不引用该对象时,才会回收强引用对象。换句话说.

2021-05-28 07:02:14 3298 36

原创 (Java实习生)每日10道面试题打卡——JVM篇

临近秋招,备战暑期实习,祝大家每天进步亿点点!打卡 Day06!有粉丝大佬要求更新有难度的,所以本篇总结的是 JVM 相关的面试题,后续会每日更新~注:JVM 比较枯燥,直接刷题前,最好先去串一遍 JVM 课程,这里推荐传智播客的 JVM 教程:黑马程序员JVM教程笔记完整目录1、请你简述一下 Java 内存结构(运行时数据区)如图所示:① 程序计数器程序计数器:线程私有。一块较小的内存空间,程序计数器用于保存 JVM 中下一条所要执行的字节码指令的地址!如果正在执行的是 Nativ.

2021-05-27 08:37:29 4582 45

原创 (Java实习生)每日10道面试题打卡——JavaWeb篇

临近秋招,备战暑期实习,祝大家每天进步亿点点!打卡 Day05!本篇总结的是javaweb相关的面试题,后续会每日更新~剧透:明日更新 JVM 面试题,相关知识不牢固的先去补一补哦 O(∩_∩)O~1、JSP 和 Servlet 有什么区别?JSP 经编译后就变成了Servlet(JSP 的本质就是 Servlet,JVM只能识别 Java 的类,不能识别 JSP 的代码,Web 容器将JSP 的代码编译成 JVM 能够识别的 Java 类)。JSP 更擅长表现于页面显示,Servlet.

2021-05-26 07:53:50 11091 114

原创 (Java实习生)每日10道面试题打卡——Java多线程篇

临近秋招,备战暑期实习,祝大家每天进步亿点点!本篇总结的是Java多线程知识相关的面试题,后续会每日更新~1、什么是进程、线程、协程,他们之间的关系是怎样的?进程: 本质上是一个独立执行的程序,进程是操作系统进行资源分配和调度的基本概念,操作系统进行资源分配和调度的一个独立单位。线程:是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个进程中可以并发多个线程,每条线程执行不同的任务,切换受系统控制。协程:又称为微线程,是一种用户态的轻量级线程,协程不像线.

2021-05-25 08:06:02 4005 40

原创 (Java实习生)每日10道面试题打卡——Java基础知识篇2

临近秋招,备战暑期实习,祝大家每天进步亿点点!本篇总结的是Java基础知识相关的面试题,后续会每日更新~1、请你说一下Java中的IO流?以及他们的分类和作用?IO 流的分类:按照数据流的方向的不同,可以分为输入流和输出流;按照处理数据单位的不同,可以划分为字节流和字符流;按照流的实现功能的不同,可以划分为节点流和处理流;Java Io流共涉及40多个类,这40多个类都是从如下4个抽象类基类中派生出来的:InputStream/Reader: 所有的输入流的基类,前者是字节.

2021-05-24 09:10:21 11491 70

原创 (Java实习生)每日10道面试题打卡——Java简单集合篇

临近秋招,备战暑期实习,祝大家每天进步亿点点!本篇总结的是Java集合知识相关的面试题,后续会每日更新~1、 请问如何使ArrayList保证线程安全?答案如下:// 方式一:// synchronizedList底层相当于把集合的set add remove方法加上synchronized锁List<Object> list = Collections.synchronizedList(new ArrayList<>());// 方式二:// 使用线程安全.

2021-05-23 12:05:13 13402 88

原创 (Java实习生)每日10道面试题打卡——Java基础知识篇

临近秋招,备战暑期实习,祝大家每天进步亿点点!本篇总结的是Java基础知识相关的面试题,后续会每日更新~1、请你说一下什么是面向对象?Java是面向对象的编程语言,不同于C语言是面向过程的。对于面向对象和面向过程的区别,举一个简单的例子说明一下(我们以洗衣机洗衣服为例):面向过程:面向过程的编程方式,程序会将要完成的某一个任务拆解成一系列的小步骤 (函数),如:① 打开洗衣机:method01()② 放入要洗的衣服:method02()③ 放入洗衣服:method03()④ 清洗.

2021-05-22 19:43:21 26114 141

原创 Spring源码解析——Bean加载(doCreateBean方法补充)

本文接这上一篇:520就应该和女朋友一起学习Spring源码——Bean加载doCreateBean方法解析/** * 核心方法(真正创建Bean的方法):创建Bean实例对象,并且生命周期的动作大部分都在这里 */protected Object doCreateBean(final String beanName, final RootBeanDefinition mbd, final @Nullable Object[] args) throws BeanCreationExceptio.

2021-05-21 20:37:30 1298 24

原创 Spring源码学习笔记——Bean加载

在分析源码时,默认大家已经掌握Spring框架的基本使用!如果还不会Spring的萌新,这里推荐几个Spring框架入门的教程:快速入门:狂神讲的Spring教程,这个很适合刚入门,想快速过一遍Spring框架的小伙伴!加强巩固:尚硅谷-Spring5框架最新版教程,尚硅谷的教程质量一向很不错,非常全面,也适合初学框架的新手!学完框架,自己多练习使用,只有熟悉使用了,看源码才不那么迷茫!切不可一味的堆积课程进度快餐式学习,要反复消化哦~下面进入正题:分析源码离不开注释,先搭建起来Spring

2021-05-20 06:37:57 4984 51

原创 黑马程序员JVM教程笔记完整目录

学习视频链接:黑马程序员JVM完整教程JVM_01 内存结构(程序计数器、虚拟机栈、本地方法栈)JVM_02-03 内存结构(堆、方法区)JVM_04 垃圾回收机制JVM_05 垃圾回收制(GC调优)JVM_06 类加载与字节码技术(类文件结构)JVM_07 类加载与字节码技术(字节码指令)JVM_08 类加载与字节码技术(字节码指令2)JVM_09 类加载与字节码技术(字节码指令3)JVM_10 类加载与字节码技术(编译期处理——语法糖)JVM_11 类加载与字节码技术 (类加载.

2021-05-16 21:32:44 2113 8

原创 JVM_12 JMM内存模型

学习视频链接:黑马程序员JVM完整教程1. java 内存模型(JMM)JMM 即 Java Memory Model,它定义了主存(共享内存)、工作内存(线程私有)抽象概念,底层对应着 CPU 寄存器、缓存、硬件内存、 CPU 指令优化等。JMM 体现在以下几个方面:原子性: 保证指令不会受到线程上下文切换的影响。可见性:保证指令不会受 cpu 缓存的影响。有序性:保证指令不会受 cpu 指令并行优化的影响。简单的说,JMM 定义了一套在多线程读写共享数据时(成员变量、数组)时,对数据的.

2021-05-16 21:23:15 941 14

原创 JVM_11 类加载与字节码技术 (类加载与类的加载器)

学习视频链接:黑马程序员JVM完整教程1. 类加载阶段1.1 加载阶段将类的字节码载入方法区中,内部采用 C++ 的 instanceKlass 描述 java 类,它的重要 field 有:_java_mirror 即 java 的类镜像,例如对 String 来说,就是 String.class,作用是把 klass 暴 露给 java 使用_super 即父类_fields 即成员变量_methods 即方法_constants 即常量池_class_loader 即类加载器.

2021-05-15 12:59:50 1072 23

原创 超详细图解!基于IDEA+Gradle+jdk11搭建Spring框架源码阅读环境

Java后端方向,Spring框架的重要程度不言而喻,然而多少人只是会简单使用,而没有深究过其原理!尝试阅读Spring源码时,在第一步搭建环境上就劝退了很多人(确实比较复杂),而且网上搜了很多博客、文章后发现,不是Spring版本老,就是Gradle或者Idea版本老。于是博主昨天肝到深夜,参考了很多资料,终于搭建成功了Spring5.3.x版本的源码环境!在分析Spring框架源码之前,首先要搭建起来Spring的源码环境,由于Spring源码并不是托管于maven的,而是托管于Gradle,因此.

2021-05-14 14:27:23 3992 74

原创 JVM_10 类加载与字节码技术(编译期处理——语法糖)

编译期处理所谓的语法糖 ,其实就是指 java 编译器把 *.java 源码编译为 *.class 字节码的过程中,自动生成 和转换的一些代码,主要是为了减轻程序员的负担,算是 java 编译器给我们的一个额外福利(给糖吃嘛)注意,以下代码的分析,借助了 javap 工具,idea 的反编译功能,idea 插件 jclasslib 等工具。另外, 编译器转换的结果直接就是 class 字节码,只是为了便于阅读,给出了几乎等价的 java 源码方式,并不是编译器还会转换出中间的 java 源码,切记。

2021-05-13 08:33:07 2390 19

原创 ThreadLocal源码分析_02 内核(ThreadLocalMap)

本篇文章是接着上一篇:ThreadLocal源码分析_01 入门案例以及表层源码分析,继续分析!本篇主要介绍ThreadLocal的内核ThreadLocalMap(ThreadLocal的静态内部类),在学习ThreadLocalMap内核前,再来复习一下ThreadLocal的执行流程图:下面就正式分析一下ThreadLocalMap的原理:1、成员属性/** * 初始化当前map内部散列表数组的初始长度 16 */private static final int INITIAL_.

2021-05-12 20:48:09 2508 11

原创 Java小白进阶系列——Java锁框架AQS源码分析目录大纲

AQS这一块的源码真的是最难的一块,涉及到的内容特别多,感觉还是很多没理解到位,目录总结一下,之后结合面试题慢慢理解消化:AQS源码探究_01 手写一个简化的ReentrantLock可重入锁AQS源码探究_02 AQS简介及属性分析AQS源码探究_03 成员方法解析(加锁、资源竞争逻辑)AQS源码探究_04 成员方法解析(释放锁、响应中断出队逻辑)AQS源码探究_05 Conditon条件队列(手写一个入门的BrokingQueue)AQS源码探究_07 CountDownLatch源码分析

2021-05-10 18:32:20 5266 12

原创 线程池源码分析_01 FutureTask源码分析

文章参考:硬核手撕Java线程池FutureTask源码1、FutureTask简介Future是我们在使用java实现异步时最常用到的一个类,我们可以向线程池提交一个Callable,并通过future对象获取执行结果。FutureTask的使用场景:FutureTask可用于异步获取执行结果或取消执行任务的场景。通过传入Runnable或者Callable的任务给FutureTask,直接调用其run方法或者放入线程池执行,之后可以在外部通过FutureTask的get方法异步获取执行结果.

2021-05-10 18:21:42 4098 20

原创 AQS源码探究_09 Semaphore源码分析

文章参考:小刘老师讲源码1、简介Semaphore,信号量,它保存了一系列的许可(permits),每次调用acquire()都将消耗一个许可,每次调用release()都将归还一个许可。Semaphore通常用于限制同一时间对共享资源的访问次数上,也就是常说的限流。Semaphore信号量,获取通行证流程图:2、入门案例案例1:Pool.java/** * date: 2021/5/10 * @author csp */public class Pool { /*.

2021-05-10 18:19:26 3886 5

原创 AQS源码探究_08 CyclicBarrier源码分析

1、简介CyclicBarrier,回环栅栏,它会阻塞一组线程直到这些线程同时达到某个条件才继续执行。它与CountDownLatch很类似,但又不同,CountDownLatch需要调用countDown()方法触发事件,而CyclicBarrier不需要,它就像一个栅栏一样,当一组线程都到达了栅栏处才继续往下走。工作原理图:CyclicBarrier与CountDownLatch的异同?两者都能实现阻塞一组线程等待被唤醒;前者是最后一个线程到达时自动唤醒;后者是通过显式地调用co

2021-05-10 18:18:25 3942 5

原创 AQS源码探究_07 CountDownLatch源码分析

在学习CountDownLatch之前,最好仔细理解下前面AQS相关的几篇文章,配合着自己搭建的源码环境进行逐行跟踪,防止迷路~1、CountDownLatch简介CountDownLatch,是一个简单的同步器,它的含义是允许一个或多个线程等待其它线程的操作执行完毕后再执行后续的操作。CountDownLatch的通常用法和Thread.join()有点类似,等待其它线程都完成后再执行主任务。2、入门案例分析案例1:对于像我一样的学生来说,CountDwonLatch的实际开发应用很.

2021-05-10 18:16:28 3950 1

原创 ThreadLocal源码分析_01 入门案例以及表层源码分析

1、ThreadLocal简介ThreadLocal是一个全局对象,ThreadLocal是线程范围内变量共享的解决方案;ThreadLocal可以看作是一个map集合,key就是当前线程,value就是要存放的变量。eg如下:// 声明一个ThreadLocal实例ThreadLocal threadLocal = new ThreadLocal();// 随机获取一个数字nint n = new Random().nextInt();// 存放数据n给threadLocal:threa

2021-05-10 18:13:10 4188 10

原创 Java小白进阶系列——ConcurrentHashMap源码解析文章总目录

源码逐行解析参考:小刘老师的源码付费课,非常硬核!ConcurrentHashMap源码解析_01 成员属性、内部类、构造方法分析ConcurrentHashMap源码解析_02 预热(内部一些小方法分析)ConcurrentHashMap源码解析_03 put方法源码分析ConcurrentHashMap源码解析_04 transfer方法源码分析(难点)ConcurrentHashMap源码解析_05 get、remove方法ConcurrentHashMap源码解析_06 红黑树的.

2021-05-07 20:56:45 9104 11

原创 ConcurrentHashMap源码解析_06 红黑树的代理类(TreeBin)

本篇为ConcurrentHashMap源码系列的最后一篇,来分析一下TreeBin 红黑树代理节点的源码:1、TreeBin内部类分析TreeBin是红黑树的代理,对红黑树不太了解的,可以参考:HashMap底层红黑树实现(自己实现一个简单的红黑树)static final class TreeBin<K,V> extends Node<K,V> { // 红黑树根节点 TreeNode<K,V> root; // 链表的头节点.

2021-05-07 20:50:08 5308 1

原创 ConcurrentHashMap源码解析_05 get、remove方法

前面几篇文章分析了并发HashMap的put方法及其相关方法,transfer方法,那么接下来本篇文章相对之前几篇难度会小一些。本篇文章介绍ConcurrentHashMap的get方法和remove方法。1、get方法get方法:获取元素,根据目标key所在桶的第一个元素的不同采用不同的方式获取元素,关键点在于find()方法的重写。public V get(Object key) { // tab 引用map.table // e 当前元素(用于循环遍历) // p.

2021-05-07 12:15:42 5401 3

原创 大三萌新,给自己制定两个月的暑期实习准备计划!

短暂的五一假期结束,五一计划虽然没有完成,但是过的很充实!保持热情,备战秋招!五一总结:(肝源码的小长假~)暑假实习准备给自己制定了一个时长2个月的计划,分5个阶段:第1个阶段(完成):本学期先拿一份省内实习工作,积累经验(目前已经在实习)第2个阶段(即将完成):阅读并发包部分源码、阅读开源项目(基本上到下周周末前,就可以完成)第3个阶段(1-2周):Spring源码学习,这个阶段我计划是1周到2周,附带刷算法题第4个阶段(2周):面试题复习,通过博客 + 视频 + 笔记的方式去.

2021-05-06 11:23:02 5634 21

原创 ConcurrentHashMap源码解析_04 transfer方法源码分析(难点)

上一篇文章介绍过put方法以及其相关的方法,接下来,本篇就介绍一下transfer这个方法(比较难),最好能动手结合着源码进行分析,并仔细理解前面几篇文章的内容~注:代码分析的注释中的CASE0、CASE1… ,这些并没有直接关联关系,只是为了给每个if逻辑判断加一个标识,方便在其他逻辑判断的地方进行引用而已。再复习一下并发Map的结构图:1、transfer方法transfer方法的作用是:迁移元素,扩容时table容量变为原来的两倍,并把部分元素迁移到其它桶nextTable中。该方法迁.

2021-05-05 22:40:50 7907 23

原创 ConcurrentHashMap源码解析_03 put方法源码分析

put()方法是并发HashMap源码分析的重点方法,这里涉及到并发扩容,桶位寻址等等…JDK1.8 ConcurrentHashMap结构图:1、put方法源码解析// 向并发Map中put一个数据public V put(K key, V value) { return putVal(key, value, false);}// 向并发Map中put一个数据// Key: 数据的键// value:数据的值// onlyIfAbsent:是否替换数据:// 如果为f.

2021-05-05 19:14:25 6616 1

原创 ConcurrentHashMap源码解析_02 预热(内部一些小方法分析)

前面一篇文章中介绍了并发HashMap的主要成员属性,内部类和构造函数,下面在正式分析并发HashMap成员方法之前,先分析一些内部类中的字方法函数:首先来看下ConcurrentHashMap内部类Node中的hash成员属性值的计算方法spread(int h):static class Node<K,V> implements Map.Entry<K,V> { final int hash;// 该属性是通过spread(int h)方法计算得到~ fina

2021-05-04 19:28:45 7075 2

原创 AQS源码探究_06 Conditon条件队列(await方法、线程入队与挂起、signal方法)

AQS源码探究_06 Conditon条件队列(await方法、线程入队与挂起、signal方法)提示:读源码的时候尽量自己点开源码跟着博客注释一起看,不然容易迷路~1、条件队列流程图2、Condition接口public interface Condition { // 线程等待,可抛出中断异常(可以响应中断) void await() throws InterruptedException; // 线程等待,但是不可响应中断 void awaitUninterruptibly()

2021-05-04 15:34:34 8784 3

原创 AQS源码探究_05 Conditon条件队列(手写一个入门的BrokingQueue)

AQS源码探究_05 Conditon条件队列(手写一个入门的BrokingQueue)1. Condition队列介绍AQS中还有另一个非常重要的内部类ConditionObject,它实现了Condition接口,主要用于实现条件锁。ConditionObject中也维护了一个队列,这个队列主要用于等待条件的成立,当条件成立时,其它线程将signal这个队列中的元素,将其移动到AQS的队列中,等待占有锁的线程释放锁后被唤醒。Condition典型的运用场景是在BlockingQueu

2021-05-03 21:54:26 7295

原创 ConcurrentHashMap源码解析_01 成员属性、内部类、构造方法分析

文章参考:小刘源码ConcurrentHashMap源码解析_01 成员属性、内部类、构造方法分析1、简介ConcurrentHashMap是HashMap的线程安全版本,内部也是使用(数组 + 链表 + 红黑树)的结构来存储元素。相比于同样线程安全的HashTable来说,效率等各方面都有极大地提高。在学习ConcurrentHashMap源码之前,这里默认大家已经读过HashMap源码,了解LongAdder原子类、红黑树。参考:JDK集合源码之HashMap解析(上)、JDK集合源码之H.

2021-05-03 20:24:15 7583 7

原创 AQS源码探究_04 成员方法解析(释放锁、响应中断出队逻辑)

AQS成员方法解析(释放锁逻辑)1. unlock释放锁方法// 位于RentrantLock中:释放锁的方法public void unlock() { // 释放锁 sync.release(1);}// 位于AQS的静态内部类Sync中:真正释放锁的方法// RentrantLock.unlock() -> sync.release()public final boolean release(int arg) { // tryRelease尝试释放锁:

2021-05-03 13:08:51 7500 2

原创 AQS源码探究_03 成员方法解析(加锁、资源竞争逻辑)

文章参考:小刘老师源码AQS成员方法解析1. lock加锁方法// 位于ReentrantLock类的静态内部类Sync中:加锁方法final void lock() { // 令当前线程去竞争资源 acquire(1);}2. acquire令当前线程竞争资源的方法// 位于AQS下的acquire:令当前线程去竞争资源的方法public final void acquire(int arg) { // 条件1:!tryAcquire(arg)方法 尝试获取.

2021-05-03 11:02:57 7504 1

原创 JVM_09 类加载与字节码技术(字节码指令3)

1.异常处理try-catchpublic class Demo3_11_1 { public static void main(String[] args) { int i = 0; try { i = 10; } catch (Exception e) { i = 20; } }}注意:为了抓住重点,下面的字节码省略了不重要的部分字节码如下:public static void main(java.lang.String[]); descriptor:

2021-05-02 21:53:48 3075 1

原创 AQS源码探究_02 AQS简介及属性分析

1. 简介AQS的全称是AbstractQueuedSynchronizer,它的定位是为Java中几乎所有的锁和同步器提供一个基础框架。AQS是基于FIFO的队列实现的,并且内部维护了一个状态变量state,通过原子更新这个状态变量state即可以实现加锁解锁操作。2. 主要内部类Nodestatic final class Node { // 标识一个节点是共享模式 static final Node SHARED = new Node(); // 标识一个

2021-05-02 19:33:36 7293

Java编程思修第4版本学习笔记(下).pdf

Java编程思修第4版本学习笔记(下),总结了Java编程思修这本书16-21章节的内容,我的博客中也有对应的文章供大家阅读~

2020-11-26

Java编程思修第4版本学习笔记(上).pdf

Java编程思修第4版本学习笔记(上),总结了Java编程思修这本树1-15章节的内容,我的博客中也有对应的文章供大家阅读~

2020-11-26

elementary(数据结构与算法源代码).zip

elementary(数据结构与算法源代码)

2021-03-04

2020最强Java面试题共(6000页).zip

2020最强Java面试题共(6000页)

2021-03-04

dnpicture.zip

我的测试Demo

2020-12-28

IO、通信中间件Netty入门

Netty 是由 JBOSS 提供的一个java开源框架, 是业界最流行的NIO框 架,整合了多种协议 包括FTP、SMTP、HTTP等各种二进制文本协议)的实现经验,精 心设计的框架,在多个大型商业项目中得到充分验证。

2020-11-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

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