07 2022 档案
摘要:`MySQL`是当今最通用的数据库软件之一,也是大部分人接触最多,时间最长的数据库软件之一。深入了解`MySQL`的架构和设计对于`DBA`,研发和运维都非常重要,能够帮助我们在日常工作中更好地理解和运用`MySQL`。 * `SQL`语句在数据库底层的执行过程? * `MySQL`底层数据存储结构
阅读全文
摘要:Redis的内存用完了会发生什么? 如果达到设置的上限(默认noeviction)时,Redis的写命令会返回oom错误信息(读命令还可以正常返回)。 redis.exceptions.ResponseError, OOM command not allowed when used memory >
阅读全文
摘要:一、概述 Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘;当下次Redis重启时,利用持久化文件实现数据恢复。除此之外,为了进行灾难备份,可以将持久化文件拷贝到一个远程位置。 Redis提供了一系
阅读全文
摘要:Redis提供了丰富的数据类型,常见的有五种:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合)。 随着Redis版本的更新,后面又支持了四种数据类型:BitMap(2.2版新增)、HyperLogLog(2.8版新增)、GEO(3.2版新增)、Stre
阅读全文
摘要:# 一、简介 在本文中,我们来看看[Caffeine](https://github.com/ben-manes/caffeine) — 一个高性能的Java缓存库。 `Caffeine`的底层数据存储采用`ConcurrentHashMap`。因为`Caffeine`面向`JDK8`,在`JDK8
阅读全文
摘要:归并排序是建立在归并操作上的一种有效的排序算法,1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。 一、基本思想 归并排序算法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序
阅读全文
摘要:基数排序的发明可以追溯到1887年赫尔曼·何乐礼在打孔卡片制表机(Tabulation Machine),排序器每次只能看到一个列。它是基于元素值的每个位上的字符来排序的。对于数字而言就是分别基于个位,十位,百位或千位等等数字来排序。 基数排序(Radix sort)是一种非比较型整数排序算法,其原
阅读全文
摘要:一、算法思想 桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。为了使桶排序更加高效,我们需要做到这两点: 在额外空间充足的情况下,尽量增大桶的数量 使用的映射函数能够将输入的 N 个数据均匀的分配到 K 个桶中 同时,对于桶中元素的排序,选择何种比较排序算法
阅读全文
摘要:优化接口性能对每个后端开发来说见惯不惯了,也是一项必备的技能,因为我们平时开发中都会对外提供接口,性能差的话,功能多少会有影响。另外接口性能算是一个跟开发语言无关的公共问题,该问题既简单又复杂。 一般导致接口性能问题的原因不尽相同,项目功能不同的接口,导致接口出现性能问题的原因可能也不一样,要根据场
阅读全文
摘要:第一个突破O(n^2)的排序算法;是简单插入排序的改进版;它与插入排序的不同之处在于,它会优先比较距离较远的元素。 希尔排序(Shell Sort),也称递减增量排序算法,1959年Shell发明。是插入排序的一种高速而稳定的改进版本。 希尔排序是先将整个待排序的记录序列分割成为若干子序列分别进行直
阅读全文
摘要:1991年的计算机先驱奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德(Robert W.Floyd) 和威廉姆斯(J.Williams)在1964年共同发明了著名的堆排序算法(Heap Sort). 堆的定义如下:个元素的序列当且仅当满足下关系时,称
阅读全文
摘要:计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。 一、基本思想 计数排序的特征当输入的元素是 n 个 0 到 k 之间的整数时,它的运行时间是 Θ(n + k)。计数排序不是比较排序,排序的速度快于任何比
阅读全文