Redis 配置文件详解 windows 下配置文件名称为 redis.windows.conf Linux 下配置文件名称为 redis.conf 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707 2021-01-01 Redis #Redis
Redis-benchmark 压力测试 Redis 压力测试Redis-benchmark 是官方自带的 Redis 性能测试工具,可以有效的测试 Redis 服务的性能。 Redis 性能测试工具可选参数如下所示: 序号 选项 描述 默认值 1 -h 指定服务器主机名 127.0.0.1 2 -p 指定服务器端口 6379 3 -s 指定服务器 socket 4 -c 指定并发连接数 50 5 -n 指定 2021-01-01 Redis #Redis
00-MySQL 基础 MySQL 运行逻辑和其他数据库相比,MySQL 在存储引擎上采用 插件式的存储引擎架构 将查询处理和修改更新的系统任务以及数据的存储提取相互分离。 MySQL 启动以后,初始化模块就从系统配置文件中读取系统参数和命令参数,初始化整个系统,同时存储引擎也会启动; 初始化结束后,连接管理模块会监听客户端的连接请求,并将连接请求转发给线程管理模块去请求一个连接线程; 线程模块接到请求后会调用用户 2020-08-08 MySQL #MySQL
01-数据结构基础-数组、链表、栈、队列 1、数组数组(Array) 是一种很常见的数据结构。它由相同类型的元素(element)组成,并且是使用一块连续的内存来存储。 我们直接可以利用元素的索引(index)可以计算出该元素对应的存储地址。 数组的特点是:提供随机访问 并且容量有限。 1234假如数组的长度为 n。访问:O(1) // 访问特定位置的元素插入:O(n )// 最坏的情况发生在插入发生在数组的首部并需要移动所有元素时删除: 2020-08-08 数据结构 #数据结构
01-算法基础 算法定义和特征定义:算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。 不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。 一个 2020-08-08 算法 #算法
02-数据结构基础-树 树就是一种类似现实生活中的树的数据结构(倒置的树)。任何一颗非空树只有一个根节点。 一棵树具有以下特点: 一棵树中的任意两个结点有且仅有唯一的一条路径连通。 一棵树如果有 n 个结点,那么它一定恰好有 n-1 条边。 一棵树不包含回路。 下图就是一颗树,并且是一颗二叉树。 如上图所示,通过上面这张图说明一下树中的常用概念: 节点:树中的每个元素都可以统称为节点。 根节点:顶层节点或者说没有 2020-08-08 数据结构 #数据结构
02-数据结构基础-红黑树 红黑树介绍红黑树(Red Black Tree)是一种自平衡二叉查找树。它是在 1972 年由 Rudolf Bayer 发明的,当时被称为平衡二叉 B 树(symmetric binary B-trees)。后来,在 1978 年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的“红黑树”。 由于其自平衡的特性,保证了最坏情形下在 O(logn) 时间复杂度内完成 2020-08-08 数据结构 #数据结构
02-查找-二分法 二分法查找二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好。缺点是要求待查表为有序表。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。 二分查找的工作原理 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功。 否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查 2020-08-08 算法 #算法
03-排序 冒泡排序(Bubble Sort) 时间复杂度:最优时间复杂度:O(n),最坏时间复杂度:O(n²)。 优点:稳定,简单 缺点:效率不很高,运行时间较长 原理如下: 比较相邻的元素,如果第一个比第二个大,就交换他们两个; 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。做完以后,最后的元素会是最大的数,这里可以理解为走了一趟; 针对所有的元素重复以上的步骤,除了最后一个; 持续每次 2020-08-08 算法 #算法
03-排序 topk 一、TopK 问题定义topK问题比较经典,在面试算法题中考察也比较普遍,就是在一群无序的数中,找到最小的K个数和最大的K个数,或者第K个最大的数和第K个最小的数 本篇以寻找最小的K个数为例 二、解法1.快速排序面对topK问题,最能直接了当想到的做法便是排序,而后根据顺序用下标访问该元素即可。 平均时间复杂度:O(nlogn) 空间复杂度:O(1) 2.冒牌排序优化版既然只要前 K 的数 2020-08-08 算法 #算法
03-数据结构基础-堆 堆什么是堆堆是一种满足以下条件的树: 堆中的每一个节点值都大于等于(或小于等于)子树中所有节点的值。或者说,任意一个节点的值都大于等于(或小于等于)所有子节点的值。 大家可以把堆(最大堆)理解为一个公司,这个公司很公平,谁能力强谁就当老大,不存在弱的人当老大,老大手底下的人一定不会比他强。这样有助于理解后续堆的操作。 !!!特别提示: 很多博客说堆是完全二叉树,其实并非如此,堆不一定是完全二 2020-08-08 数据结构 #数据结构
04-数据结构基础-图 图是一种较为复杂的非线性结构。为啥说其较为复杂呢? 根据前面的内容,我们知道: 线性数据结构的元素满足唯一的线性关系,每个元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继。 树形数据结构的元素之间有着明显的层次关系。 但是,图形结构的元素之间的关系是任意的。 何为图呢? 简单来说,图就是由顶点的有穷非空集合和顶点之间的边组成的集合。通常表示为:**G(V,E)**,其中,G 表示一个 2020-08-08 数据结构 #数据结构
MySQL MVCC 1、简介MVCC(Multi-Version Concurrency Control,多版本并发控制),是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。用于支持 读已提交(RC) 和 可重复读(RR) 隔离级别的实现。 MVCC的实现依赖于六个概念:【隐式字段】【undo日志】【版本链】【快照读和当前读】【读视图】。 2、InnoDB 表的隐藏字段在 MySQL 中,Inno 2020-08-08 MySQL #MySQL
MySQL 事务 官网保平安:https://www.mysql.com/MySQL 思维导图:https://www.processon.com/view/link/63bc2c8ea82ed9463ba99f38 MySQL 支持事务吗在缺省模式下,MySQL 是 autocommit 模式的,所有的数据库更新操作都会即时提交,所以在缺省情况下,MySQL 是不支持事务的。 如果你的 MySQL 表类型是 2020-08-08 MySQL #MySQL
MySQL 事务 和 锁、MVCC 的关系 官网保平安:https://www.mysql.com/MySQL 思维导图:https://www.processon.com/view/link/63bc2c8ea82ed9463ba99f38 事务共有四个级别 未提交读(Read Uncommitted, RU):允许脏读,其他事务只要修改了数据,即使未提交,本事务也能看到修改后的数据值。也就是可能读取到其他会话中未提交事务修改的数据 2020-08-08 MySQL #MySQL
MySQL 日志之 redo log 总结先来看一下 MySQL 事务更新数据执行流程。 当我们想要修改DB上某一行数据的时候,InnoDB 先判断数据页是否在内存中。 若为否,则从磁盘读取数据到内存中,返回数据行。 若是数据页在内存中,则直接返回数据行。 执行数据更新操作,然后把数据写入内存,同时把 redo log 写入到内存。 执行 commit 操作(此 commit 是 SQL 命令操作,而不是数据的 commit 状 2020-08-08 MySQL #MySQL
MySQL 索引 备注:我们往 MySQL 插入的数据最终都是存在页中的。在 InnoDB 的设计中,页与页之间是通过一个双向链表连接起来。 1、为什么需要索引一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起加速查询,就不得不提到 索引 了。 如果没有索引,我们在查 2020-08-08 MySQL #MySQL
MySQL 索引下推 索引下推索引下推(Index Condition Pushdown,简称 ICP) 是 MySQL 5.6 提供的一项索引优化功能,它允许存储引擎在索引遍历过程中,执行部分 WHERE 字句的判断条件,直接过滤掉不满足条件的记录,从而减少需要从存储引擎中检索的数据行数,提高查询效率。 下面以 Innodb 数据库为例:假设我们有一个名为 user 的表,其中包含 id, username, zip 2020-08-08 MySQL #MySQL
MySQL 索引为什么使用B+Tree 0、先验知识二分查找法二分查找法也叫作折半查找法,它是在有序数组中查找指定数据的搜索算法。它的优点是等值查询、范围查询性能优秀,缺点是更新数据、新增数据、删除数据维护成本高。 首先定位left和right两个指针。 计算(left+right)/2。 判断除2后索引位置值与目标值的大小比对。 索引位置值大于目标值就-1,right移动;如果小于目标值就+1,left移动。 1、背景My 2020-08-08 MySQL #MySQL
MySQL 锁 官网保平安:https://www.mysql.com/MySQL 思维导图:https://www.processon.com/view/link/63bc2c8ea82ed9463ba99f38 MySQL 中锁的种类 ★★★按锁粒度从大到小分类:表锁、页锁和行锁 以及特殊场景下使用的 全局锁 表锁:表级别的锁定是 MySQL 各存储引擎中最大颗粒度的锁定机制。该锁定机制最大的特点是实现 2020-08-08 MySQL #MySQL