摘要: MVCC,即多版本并发控制(Multi-Version Concurrency Control)指的是,通过版本链维护一个数据的多个版本,使得读写操作没有冲突,可保证不同事务读写、写读操作并发执行,提高系统性能。 实际上,innodb中“读已提交”和“可重复读”这两种隔离级别的事务在查询数据时访问版 阅读全文
posted @ 2021-01-15 20:07 数小钱钱的种花兔 阅读(587) 评论(0) 推荐(0) 编辑
摘要: 1.数组中的第K个最大元素 数组中的第K个最大元素 LeetCode:数组中的第K个最大元素 题目描述: 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 阅读全文
posted @ 2021-01-13 20:02 数小钱钱的种花兔 阅读(320) 评论(0) 推荐(0) 编辑
摘要: 我们都知道,innodb中的索引结构使用的是B+树。B+树是一种B树的变形树,而B树又是来源于平衡二叉树。相较于平衡二叉树,B树更适合磁盘场景下文件索引系统。那为什么B树更适合磁盘场景,B+树又在B树基础上做了什么优化?抱着这些问题,本博客将深入分析B树和B+树来龙去脉,其中会涉及到二叉排序树和平衡 阅读全文
posted @ 2021-01-11 19:16 数小钱钱的种花兔 阅读(1292) 评论(0) 推荐(1) 编辑
摘要: 本博客将顺着自顶向下的思路梳理一下Redis的数据结构体系,从数据库到对象体系,再到底层数据结构。我将基于我的一个项目的代码来进行介绍:daredis。该项目中,使用Java实现了Redis中所有的数据结构,思想与Redis大致类似,各种变量的命名与Redis源码基本一致,只是将结构体换成了类来实现 阅读全文
posted @ 2020-12-31 17:22 数小钱钱的种花兔 阅读(294) 评论(0) 推荐(1) 编辑
摘要: 我的上一篇博客类加载器与双亲委派中提到,SPI机制是一种上级类加载器调用下级类加载器的情形,因此会打破类加载的双亲委派模型。为了深入理解其中的细节,本博客详细剖析一下SPI机制,并以JDBC为例,基于源码来进行分析。 SPI 原理介绍 SPI(Service Provider Interface), 阅读全文
posted @ 2020-12-19 23:26 数小钱钱的种花兔 阅读(544) 评论(0) 推荐(0) 编辑
摘要: 类加载器,顾名思义,即是实现类加载的功能模块,负责将Class的字节码形式加载成内存形式的Class对象。字节码文件可来源于磁盘或者jar包中的Class文件,也可以来自网络字节流。 类加载器 在JVM中,内置了三个重要的类加载器,Application classLoader,Extension 阅读全文
posted @ 2020-12-09 21:26 数小钱钱的种花兔 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。下面来总结梳理类加载的五个阶段。 类加载发生在程序运行期间,会有一些性能开销,但是会提供灵活性,Java动态扩展的特性就是依赖运行时期动态加载和动 阅读全文
posted @ 2020-12-06 22:16 数小钱钱的种花兔 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 在业务场景中,处理一个任务队列,可能需要依照某种优先级顺序,这时,Java中的PriorityQueue(优先队列)便可以派上用场。优先队列的原理与堆排序密不可分,可以参考我之前的一篇博客: 堆排序总结与实现 原理 PriorityQueue中维护一个Queue[]数组,在逻辑上把它理解成一个小根堆 阅读全文
posted @ 2020-11-13 16:50 数小钱钱的种花兔 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 线程池是很常用的并发框架,几乎所有需要异步和并发处理任务的程序都可用到线程池。 使用线程池的好处如下: 降低资源消耗:可重复利用已创建的线程池,降低创建和销毁带来的消耗; 提高响应速度:任务到达时,可立即执行,无需等待线程创建; 提高线程的可管理性:线程池可对线程统一分配、调优和监控。 原理 线程池 阅读全文
posted @ 2020-11-04 21:47 数小钱钱的种花兔 阅读(554) 评论(0) 推荐(4) 编辑
摘要: 背包问题总结分析 背包问题是个很经典的动态规划问题,本博客对背包问题及其常见变种的解法和思路进行总结分析 01背包 问题介绍 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 v[i],价值是 w[i]。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容 阅读全文
posted @ 2020-07-31 19:35 数小钱钱的种花兔 阅读(523) 评论(0) 推荐(1) 编辑