NoSQL 与 Redis
NoSQL 即 Not Only SQL,泛指非关系型数据库。一般 NoSQL 数据库通过 key-value 形式存储,使得其具备更强的扩展能力。 NoSQL 简介 NoSQL 通常用来解决系统的性能瓶颈。 NoSQL 一般会有如下特点:...
NoSQL 即 Not Only SQL,泛指非关系型数据库。一般 NoSQL 数据库通过 key-value 形式存储,使得其具备更强的扩展能力。 NoSQL 简介 NoSQL 通常用来解决系统的性能瓶颈。 NoSQL 一般会有如下特点:...
Java 中的枚举在项目中十分常用,我们可以用它来处理固定数量的值。 现在有个场景,需要支持 enum 枚举值的上一个 previous,下一个 next。 示例代码 设定枚举为 春夏秋冬 四个枚举值。 public enum Season...
JDK 的 JUC 包中提供了很多与并发相关的类,其中线程池这个类尤为关键。 线程池可以通过重用线程,降低线程创建和销毁造成的资源消耗。 线程池核心参数 线程池类 ThreadPoolExecutor 有 7 个参数: 参数 含义 解释 c...
HashMap 是 Java 集合框架中非常重要的一个实现,它有非常多值得借鉴的实现思路。面试中,也被经常问到。 下面将根据一系列的问题,来逐步深入了解 HashMap。 HashMap 底层结构 了解底层结构,将有助于理解更多复杂的设计思...
LinkedList 在开发中并不常用,在大多数场景下,我们会采用 ArrayList。本篇将从多个维度解读 LinkedList 与 ArrayList 存在的差异。 底层结构 LinkedList 与 ArrayList 底层结构不同:...
在 Java 中,Set 和 List 可以循环遍历,因为其拥有可迭代能力,主要还是 Iterator 的功劳。 初识 首先看一下二者如何定义: fail-fast 一旦发现遍历的同时有其他人修改,则立即抛出异常 fail-safe 当发现...
Java 中,ArrayList 是 List 最经典的实现,由于 ArrayList 底层是数组,掌握其扩容机制十分必要。 下面的讨论,基于 JAVA8,不同的JDK版本,某些规则会有差异。 构造器容量 我们一般在一定一个 ArrayLi...
二分查找是一种高效的查找方法。其主要思路是:对已经排序的数据,每次取二分之一处的元素与目标元素比较,如果相等就返回目标位置,否则继续下一轮查找。 二分思想 二分查找文字描述: 排好序的数组 arr 定义左边界 left、右边界 right,...
快速排序思想 每一轮遍历选择一个基准点(pivot)进行分区。 小于基准点的元素进入一个分区,大于基准点的元素进入另一个分区。 当分区完成时,基准点的位置就是排序后该元素应该处于的位置。 在每个子分区中重复以上过程,直到分区中元素少于等于 ...
插入排序思想 将数组分为两个部分,排序部分和未排序部分。 每一轮遍历从未排序部分取出第一个元素,插入到排序部分的对应位置。 重复以上过程,直到整个数组有序。 代码实现 为了能更好地展示冒泡排序的主要思想,我将数据准备工作定义在 main()...