自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 并发编程笔记九-异步编程

FutureTask是Java并发编程中一个功能强大的类,它专为管理可取消的异步任务而设计。作为Future接口的一个基本实现,FutureTask不仅扩展了异步任务的控制能力,还允许开发者通过其方法集来启动和取消任务。通常,FutureTask与Callable接口协同工作,使得开发者能够定义需要异步执行的任务逻辑。一旦异步任务启动,FutureTask实例便成为连接任务执行与结果获取的桥梁。通过FutureTask提供的方法,开发者可以灵活地取消任务、检查任务是否已完成,以及安全地获取任务的执行结果。

2024-12-22 19:39:45 676

原创 并发编程笔记八-JUC并发工具应用与源码深度解析

本章讲解了CountDownLatch,CyclicBarrier以及Semaphore三个并发工具类的介绍,应用以及源码的深度解析。相信如果有如ReentrantLock,AQS源码阅读的基础,再读这三个并发工具类的源码其实是没有太多难度的,关键是要耐心去看,去分析,自己画图,自己尝试去写代码注释。

2024-12-21 17:56:21 713

原创 并发编程笔记七-ConcurrentHashMap源码深度解析上

红黑树是一颗特殊的平衡二叉树,我们对数据结构有一点了解的应该清楚,平衡二叉树有一个特性是左右子树的高度差不能大于1,如果超出1,就会进行左旋和右旋的操作实现自平衡。而红黑树虽然没有左右子树高度差不能大于1的限制,但其也保留了左旋和右旋的操作,并且在这个基础上还会有变色的特点,这里我先来讲一下红黑树的五个平衡条件:1. 所有节点都是黑色或者红色;2. 根节点必须为黑色;

2024-12-20 21:43:44 571

原创 并发编程笔记六-线程池应用与源码详解

除了JDK自带的拒绝策略,很多时候我们还会自定义拒绝策略,比方说我们可以将无法处理的任务将存进数据库,后面再考虑继续执行,相当于做一个错峰处理。我下面写了一个很简单的拒绝策略实现类,大家工作中需要自行根据业务情况实现。@OverrideSystem.out.println("根据自己的业务情况,决定编写的代码!");前面说了那么多,现在我们自己定义一个ThreadPoolExecutor来玩玩,这里我写了一个简单的案例:自定义ThreadPoolExecutor线程池,并处理有无返回结果的任务。

2024-12-18 16:15:16 890

原创 并发编程笔记五-阻塞队列详解

PriorityBlockingQueue是优先级阻塞队列,它相比起前面两个阻塞队列不一样的地方是,前面两个阻塞队列消费者的顺序都是按生产者生产元素的前后顺序来的,而它则是内部给元素按照排序规则做了一个堆排序,并且消费者是按照按照排序后的顺序进行消费的,因此它的底层数据我们可以理解为一个二叉堆。二叉堆是什么?二叉堆就是一个完整的二叉树,任意一个节点大于父节点或者小于父节点,这里PriorityBlockingQueue用到了原生的java集合框架类-PriorityQueue。

2024-12-17 00:00:51 1107

原创 并发编程笔记四-ReentrantReadWriteLock源码深度解析

通过前面的学习,我们知道ReentrantLock已经实现了互斥锁的功能,并且ReentrantLock已经有了非常丰富的API可使用,完全可以保障我们并发编程时对于线程安全的高要求。既然如此,为什么又出现了一个ReentrantReadWriteLock呢?原来啊,在一个读多写少的场景下,如果我们采用synchronized或者说ReentrantLock,其效率是非常低的,就像前面说的,它们都是互斥锁。在这种情况下,咱们就可以使用ReentrantReadWriteLock读写锁去实现。

2024-12-15 14:20:54 978

原创 并发编程笔记三-ConditionObject源码深度解析

本次课程主要是围绕AQS中的内部类ConditionObject做了一个深层次源码解析,我们可以不用将每行代码全部读懂,但是希望大家起码要理解它做了些什么,又是怎么做的。只有理解了这部分,后续我们在阅读java.util.concurrent并发工具包的其他源码时才能得心应手,希望大家多看,多写,多去自己体会,最好是可以做到跟我一样,自己去拆解ConditionObject类是什么,又能帮我们做什么,怎么去做的,然后最好还能自己对着源码写下自己的注解。

2024-12-15 11:56:40 785

原创 并发编程笔记二-AQS常见问题解析

本章只是针对AQS最核心的两个问题做了一个专题讲解,详细的源码介绍就像前言里讲到的,可以看并发编程笔记一,在详解ReentrantLock时,我已经对AQS源码进行了深度解读。下一章节,我们来研究一下AQS的内部类ConditionObject相关的源码深度解析。

2024-12-15 11:11:46 391

原创 MySql性能调优与架构设计第一课:调优必会的基础知识

在学习mysql性能调优之前,我们首先要了解的是数据库范式和范式化设计的原则和应用场景,还要了解mysql常用的数据类型选择和优化。平时设计过程中,还需要注重数据库表以及字段名称的命名,最后还要了解mysql索引数据结构的由来以及为什么使用B+树作为mysql的数据索引。下章节,我会重点讲解mysql中的索引类型选择,索引优化以及索引设计实战。

2024-12-03 00:12:18 991

原创 并发编程笔记一-ReentrantLock源码深度解析

通过画图深度的解析ReentrantLock的加锁和释放锁的流程,并对其源码进行结构化的拆解和分析,帮助小伙伴们更快更深层次的理解什么是ReentrantLock。

2024-12-01 14:33:47 1028

原创 Redis入门到精通【第二课:Redis的使用与数据结构】

本章详细讲述了redis客户端怎么连接,具体包括单次操作以及redis客户端常见的使用错误,后面又讲述了基于命令行模式下,五大基本数据结构的API使用以及其使用的场景,最后又讲述了Redis常用的全局命令。但是请记得自己一定要多去操作,去试,尤其是五大数据结构的常用API,只有自己去操作了,才会深入的理解它的使用场景。

2024-11-07 17:51:54 811

原创 Redis入门到精通【第一课:介绍与安装】

本章主要介绍了什么是Redis以及详细的描述了Redis的下载,安装,配置以及启动,相信动手能力强的同学们都可以轻松的完成这一步,下一章我们会讲到Redis如何使用以及常用数据结构,相关API等等。

2024-11-07 14:35:02 938 1

空空如也

空空如也

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

TA关注的人

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