摘要: 第一个看到树状数组(Binary Indexed Tree)这个数据结构时,真的被吸引了,设计真是简洁,属于理论很复杂,但实现不复杂的那种算法。该算法多用于高效计算数列的前缀和, 区间和动态单点值的修改。要理解树状数组的工作原理,必须要知道二进制的运算法则,比如 &、 -、补码和反码等。下面先介绍下 阅读全文
posted @ 2023-10-30 15:06 mingshan 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 在计算机科学中,AVL树是最早被发明的自平衡二叉查找树。在AVL树中,任一节点对应的两棵子树的最大高度差为1,因此它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是 $O(logn)$。所以我们可知,AVL树首先是二叉查找树(BST),不了解BST的同学可以了解一下,因为AVL 阅读全文
posted @ 2023-10-30 15:03 mingshan 阅读(4) 评论(0) 推荐(0) 编辑
摘要: title: GC都有哪些? tags: [JVM, GC] author: Mingshan categories: [JVM, GC] date: 2020-03-11 相信把Java当做生产力工具的同学肯定对gc比较熟悉的,JVM团队在这块下了很多的功夫创造了很多垃圾收集器,不过有些垃圾收集器 阅读全文
posted @ 2023-10-30 15:02 mingshan 阅读(17) 评论(0) 推荐(0) 编辑
摘要: Arthas 是Alibaba开源的Java诊断工具,可以查看Java进程的一些信息,例如运行情况、JVM相关参数、线程等信息,采用命令行交互模式,在Linux用着十分方便。 安装 在Linux系统中,首先创建一个文件下,然后在该文件下执行如下命令: curl -L https://alibaba. 阅读全文
posted @ 2023-10-30 15:01 mingshan 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 我们用SpringBoot的时候发现有很多starter,比如spring-boot-starter-web等,对于SpringBoot的官方starter,基本上是以spring-boot-starter-xxx来命名的,对于非官方的一些包来说,我们该怎样将自己的包与SpringBoot结合起来呢 阅读全文
posted @ 2023-10-30 08:48 mingshan 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 数据在计算机中都是以01的形态进行存储,位运算可以直接对01进行操作,其效率自然很高,在Java源码中是很常见的。这里总结位运算的概念以及常见的操作,后续遇到会补充。 位运算符 位运算是需要使用位运算符的,位运算符有如下几种(本表以java语言中的位运算为标准): 含义 符号 简述 按位与 a & 阅读全文
posted @ 2023-10-30 08:45 mingshan 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 队列介绍 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 队列的特点是先进先出(FIFO),下面是队列的 阅读全文
posted @ 2023-10-30 08:43 mingshan 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 我们在使用ReentrantLock进行加锁和释放锁时可能会有好奇,这种加锁释放锁的操作和synchronized有什么区别,所以就会去翻源码,一翻源码才发现这里面的知识别有洞天,因为涉及到并发编程最基础最难理解的部分,其中AbstractQueuedSynchronizer这个类是java.uti 阅读全文
posted @ 2023-10-28 08:52 mingshan 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 上篇文章AQS源码分析-独占模式分析了AQS的结构以及独占模式下资源的获取与释放流程,啰嗦了AQS的基本结构和独占模式。这篇文章主要是探讨下AQS在共享模式下资源的获取与释放,同时比较下两种模式的差异(本文基于JDK11版本)。 流程分析 - 获取资源 这篇文章以CountDownLatch为例,和 阅读全文
posted @ 2023-10-28 08:51 mingshan 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 了解到CompletableFuture的基础用法之后,我们不禁好奇,以前的Future模式不支持如此好用的异步编程,CompletableFuture是如何做到的呢?这就需要我们去阅读源码了,通过源码我们才能了解到其设计思想和实现方式,我们分析下supplyAsync 和 thenApplyAsy 阅读全文
posted @ 2023-10-27 17:24 mingshan 阅读(51) 评论(0) 推荐(0) 编辑