摘要: 二叉树定义 二叉树(Binary Tree)是n(n >= 0)个结点所构成的集合,它或为空树(n=0);或为非空树,对于非空树$T$: 有且仅有一个称之为根的结点 除根节点以外的其余结点分为两个互不相交的子集$T_1$和$T_2$,分别称为$T$的左子树和右子树,且$T_1$和$T_2$本身又是二 阅读全文
posted @ 2023-10-30 15:07 mingshan 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树),它具有以下特点: 若任一节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若任一节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 任意节点的左、右子树也分别为二叉查找树; 没有键值相等的节 阅读全文
posted @ 2023-10-30 15:07 mingshan 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 第一个看到树状数组(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) 编辑