枚举单例模式
使用枚举实现单例,也是jdk中比较推荐的实现单例的方法,因为枚举类属于静态,不可变,可以保证线程安全 /** […]
使用枚举实现单例,也是jdk中比较推荐的实现单例的方法,因为枚举类属于静态,不可变,可以保证线程安全 /** […]
DCL双检锁 双检锁单例模式是基于懒汉模式的多线程优化版: public final class Single […]
这种写法起到了懒加载的效果,但是只能在单线程下使用。如果在多线程下,一个线程进入了if (singleton […]
优点:这种写法比较简单,就是在类装载的时候就完成实例化。避免了线程同步问题。 缺点:在类装载的时候就完成实例化 […]
背景 在mysql的分片中,使用取模运算作为分片策略,比如 id%5 肯定是在1~5区间内的,但是当出现节点问 […]
冒泡排序通过交换相邻元素来实现排序。通过添加一个标志位来实现提前返回,我们可以将冒泡排序的最佳时间复杂度优化到 […]
排序方式 以学号数据为例,假设数字的最低位是第 1 位,最高位是第 8 位,基数排序的流程如图 11-18 所 […]
排序方式 「计数排序 counting sort」通过统计元素数量来实现排序,通常应用于整数数组。 先来看一个 […]
前述几种排序算法都属于“基于比较的排序算法”,它们通过比较元素间的大小来实现排序。此类排序算法的时间复杂度无法 […]
排序方式 「堆排序 heap sort」是一种基于堆数据结构实现的高效排序算法。我们可以利用已经学过的“建堆操 […]
排序方式 「归并排序 merge sort」是一种基于分治策略的排序算法,包含图 11-10 所示的“划分”和 […]
「快速排序 quick sort」是一种基于分治策略的排序算法,运行高效,应用广泛。 快速排序的核心操作是“哨 […]
排序方式 「插入排序 insertion sort」是一种简单的排序算法,它的工作原理与手动整理一副牌的过程非 […]
排序方式 「冒泡排序 bubble sort」通过连续地比较与交换相邻元素实现排序。这个过程就像气泡从底部升到 […]
排序方式 「选择排序 selection sort」的工作原理非常简单:开启一个循环,每轮从未排序区间选择最小 […]
「二分查找 binary search」是一种基于分治策略的高效搜索算法。它利用数据的有序性,每轮缩小一半搜索 […]
「图 graph」是一种非线性数据结构,由「顶点 vertex」和「边 edge」组成。我们可以将图 G 抽象 […]
大顶堆和小顶堆 「堆 heap」是一种满足特定条件的完全二叉树,主要可分为两种类型,如图 8-1 所示。 「大 […]
B+树 B+树相对于B树有一些自己的优势,可以归结为下面几点。 单一节点存储的元素更多,使得查询的IO次数更少 […]
B树(B-Tree)多路平衡查找树。B树是一种多路搜索树,每个节点可以包含多个键和对应的值。相比于二叉搜索树, […]