10 2024 档案
03.线程模型
摘要:误解:redis只有一个线程 Redis 的网络IO和键值对读写是由一个线程(主线程)来完成的(Redis6.0 网络IO改为多线程模型) Redis的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。 为什么用单线程: 多线程开销问题 多线程并发竞争问题,需要引入同步原语或
11.索引概念
摘要:索引: 作用:提高查询效率 索引不止存在内存中,还要写到磁盘上 常见的索引模型: 哈希表:适用于只有等值查询的场景(kv键值对) 有序数组:等值查询和范围查询场景(redis的有序集合) 搜索树:二叉树是搜索效率最高,大多数的数据库存储却并不使用二叉树 > [!TIP] 索引不止存在内存中,还要写到
09.索引结构
摘要:基础: 索引中的数据页的编号不一定连续,也就是说这些页在存储空间里可能并不挨着 B+树中相同层次的数据页通过页结构的File Header 中的FIL_PAGE_PREV和FIL_PAGE_NEXT,组成双向循环链表 每个数据页内部会维护页目录,通过分组的方式将所有用户记录分组 每个数据页内部记录之
03.事务隔离级别
摘要:事务: 事务:就是要保证一组数据库操作,要么全部成功,要么全部失败 事务的特性:ACID,原子性、一致性、隔离性、持久性 mysql事务是由引擎提供的支持,MyISAM 引擎就不支持事务 多事务同时执行可能会出现的问题:脏写、脏读、不可重复读、幻读 脏读:在一个事务内读到了另一个未提交事务修改过的数
07.行记录结构
摘要:行记录分类: Compact Redundant( < 5.0`) Dynamic (默认) Compressed Compact 行记录结构: - 记录的额外信息 - 变长字段长度列表 - - 变长字段的定义: - VARCHAR(M) - CAHR(M) 但字符集为变长字符集(除了ascii、l
06.全局锁、表锁、行锁
摘要:Mysql中的锁 全局锁:对整个数据库实例加锁 全库逻辑备份: 针对MyISAM做全库逻辑备份,只能用FTWRL方式,在备份时不能更新 补充:MyISAM这种不支持事务的引擎,如果备份过程中有更新,总是只能取到最新的数据,破坏了数据一致性 针对innodb备份,可以使用mysqldump –sing
08.数据页结构
摘要:基础: 页是InnoDB管理存储空间的基本单位,一个页的大小一般是16KB 数据页(索引页)是页的一种,用来组织和和存放用户数据 索引页之间通过双向链表连接,数据页的物理结构不连续 数据页的详细结构: 数据页组成: |名称|中文名|占用空间大小|简单描述| |:—-|:—-|:—-|:—-| |Fi
19.常见云数据库选型
摘要:数据库: 数据库 描述 mysql TiDB Aurora PolarDB TDSQL MongoDB OpenSearch clickhouse RocksDB 行存储数据库 特性/数据库 TiDB Amazon Aurora PolarDB Tencent TDSQL 数据库类型 分布式关系数据
14.性能优化-explain优化器决策结果
摘要:explain结果列说明: explain 列名 描述 id 在一个大的查询语句中每个SELECT关键字都对应一个唯一的id select_type SELECT关键字对应的那个查询的类型 table 表名 partitions 匹配的分区信息 type 针对单表的访问方法 possible_key
16.缓冲池-BufferPool
摘要:buffer pool 常识: Buffer Pool 是一片连续的内存空间,通过innodb_buffer_pool_size在服务器运行过程中调整buffer pool大小,默认为128MB Free Page(空闲页),此页未被使用,位于 Free 链表; Clean Page(干净页),此页
01.Mysql逻辑架构
摘要:mysql逻辑架构图 图片 MySQL从架构角度可以分为: Server层: 该层实现所有跨存储引擎的功能。e.g. 存储过程、触发器、视图等 连接器: 职责:连接器负责跟客户端建立连接、获取权限、维持和管理连接 查看当前的连接状态: show processlist 连接: 生命周期:一个用户成功
18.主从同步
摘要:主从复制 MySQL 集群的主从复制过程梳理成 3 个阶段: 写入 Binlog:主库写 binlog 日志,提交事务,并更新本地存储数据。 同步 Binlog:把 binlog 复制到所有从库上,每个从库把 binlog 写到暂存日志中。 回放 Binlog:回放 binlog,并更新存储引擎中的
13.连表查询-join
摘要:连接的本质: 把各个连接表中的记录都取出来依次匹配的组合加入结果集并返回给用户 示意图: 图片 连接的类型: 根据驱动表中的记录在被驱动表中无匹配时,是否加入到最后的结果集分为: 内连接INNER JOIN:不加入结果集 外连接:加入结果集 根据驱动表选择分为: 左外连接 LEFT JOIN:选取左
10.表空间结构
摘要:独立表空间: 表空间的是由若干个区组成的 区(extent): 连续的64个页就是一个区extent,默认占用1MB空间大小。 为什么要有区:同层的索引页之间以链表组织,物理距离可能会比较远,这样就会引起随机IO。使用区可以保证64个页的连续) 段(segment): 定义:某些零散的页以及一些完整
02.日志系统
摘要:bin log 备份日志 作用:Server层生成的日志,主要用于数据备份和主从复制 bin log刷盘时机: 事务执行过程中,先把日志写到 binlog cache(Server 层的 cache),事务提交的时候,再把 binlog cache 写到操作系统的内核缓冲区page cache,最后
17.Sql是如何执行的
摘要:UPDATE t_user SET name = ‘x’ WHERE id = 1 执行器负责具体执行,会调用存储引擎的接口,通过主键索引树搜索获取 id = 1 这一行记录: 如果 id=1 这一行所在的数据页本来就在 buffer pool 中,就直接返回给执行器更新(id非唯一索引的前提下);
12.索引合并-indexMerge
摘要:索引合并 index merge: 含义:使用到多个索引来完成一次查询的执行方法 explain 中 type 会显示index merge 核心思想: 读多个二级索引的操作是顺序IO(索引是有序的),只用一个索引,但是做回表操作是随机IO 索引合并优点: 可以减少回表次数 基于有序的主键回表 Ro
docker
摘要:docker client-server 架构 docker client使用REST API,通过UDS或者network,与dockerd进行通信 Docker Registries 用来存储Docker Images 默认使用Docker Hub Registries 常用的registrie
minikube
摘要:minikube安装踩坑笔记 步骤一:minikube 执行文件下载(linux x86-64为例子): 官方地址:(https://minikube.sigs.k8s.io/docs/start/?arch=%2Flinux%2Fx86-64%2Fstable%2Fbinary+download)
HEIF编解码器安装
摘要:HEIF编、解码器安装手册 by Navyum HEIF 编码、解码原理 Img 相关依赖库: 主要的第三方库:libx265、libde265、libaom、libvvenc、liblibheif、libvips 其他参考:libavif 相关编码标准: H.264/MPEG-4、H.265/HE
jsdeliver
摘要:jsdelivr CDN 和 GitHub 的关系 jsdelivr 是一个免费且可靠的内容分发网络(CDN)服务,允许开发者将静态资源存储在 GitHub 仓库中,并通过 jsdelivr 进行全球加速访问。具体来说,jsdelivr 能够通过提供一个 CDN 地址,将存储在 GitHub 仓库中
electron
摘要:electron 打包 mac程序环境配置: 需要准备的内容: appleid(账号) apple app password(app专用密码) apple development cert(开发者证书) appleid(apple账号) 使用自己的appleid即可 注册地址:https://app
github_action
摘要:github action 踩坑记录 问题一:工作流互相触发异常的 主要任务: 使用【自动生成工作流】通过定时任务触发,生产内容并推送到分支 使用【构建工作流】通过push事件监听,将新生产的内容构建成待发布内容 使用【pages发布工作流】将构建好的内容发布到Pages 遇到的问题: 1号工作流执
ISOBMFF多媒体文件协议
摘要:多媒体文件 多媒体文件规范 规范范围: 容器格式规范:定义文件结构和元数据存储 编码格式规范:定义如何对数据进行压缩、编码、解码(涉及图片、音频、视频、字幕等) 传输协议规范:定义流媒体协议 ISOBMFF ISO基本媒体文件格式 ISO/IEC 14496-12 标准的实现 ISO Base Me
3.栈
摘要:栈 Stack: 概念: 栈(Stack)是一种线性表数据结构 遵循后进先出(LIFO,Last In First Out)原则,只能在栈顶进行添加和删除操作 操作: push (入栈) pop (出栈) peek (仅查看) 栈的应用: 函数调用栈 表达式求值 回溯算法 图解:
2.1列表
摘要:列表 List 概念: 列表 List 是一种抽象的数据结构概念 表示元素的有序集合 无须使用者考虑容量限制的问题 如何实现列表: 链表本身就是列表 动态数组实现列表,需要实现动态扩容
4.队列
摘要:队列 Queue: 概念: 队列 Queue 是一种线性表数据结构 遵循先进先出(FIFO,First In First Out)原则,在队列的尾部添加元素,在头部移除元素 操作: enqueue(入队) dequeue(出队) front (仅查看) 应用: 任务调度 广度优先搜索算法 图解: 双
2.链表
摘要:链表 Linked List: 概念: 数组(Array)是一种线性表数据结构 用非连续的内存空间,来存储具有相同类型的数据的数据结构 每个节点包含数据部分和指针,指针指向下一个(或上一个,对于双向链表)节点 特点: 动态大小:链表的大小可以在运行时改变 不连续的内存:节点可以在内存中分散存储,通过
1.数组
摘要:数组 Array: 概念: 数组(Array)是一种线性表数据结构 用一组连续的内存空间,来存储一组具有相同类型的数据 数组中的元素可以通过索引直接访问 特点: 随机访问:可以快速地通过索引访问任何元素 固定大小:一旦声明,数组的大小就固定了 空间效率:因为申明时需要预留空间,在空间上可能不是最优的
0.线性表
摘要:线性表 特点: 由N个具有相同特性的数据元素组成的有限序列 线性表中的数据元素之间呈现一对一的关系,除了第一个和最后一个数据元素之外,其他数据元素都是首尾相接的 线性表上的数据最多只有前和后两个方向 举例: 数组 链表 栈 队列 个人理解 线性、非线性的区别 数学坐标系: 线性表元素之间相互连接,类
1.散列表
摘要:散列表/哈希表 特点: 通过建立键 key 与值 value 之间的映射,实现O(1)时间复杂度的高效的元素查询 举例: 树 图 图解: 常用操作: 初始化 查询操作 添加键值对 删除键值对 哈希函数(hash function): 作用:作用是将一个较大的输入空间映射到一个较小的输出空间 索引位置
2.哈希函数
摘要:哈希函数 目标: 极快且稳定 特点: 确定性/幂等性: 对于相同的输入,哈希算法应始终产生相同的输出。这样才能确保哈希表是可靠的。 效率高: 计算哈希值的过程应该足够快,哈希表的实用性越高。 均匀分布: 哈希算法应使得键值对均匀分布在哈希表中。分布越均匀,哈希冲突的概率就越低。 常见的哈希算法: M
2.二叉树
摘要:二叉树 Binary Tree: 1.特点: 一种非线性数据结构,代表“祖先”与“后代”之间的派生关系 二叉树的基本单元是节点,每个节点至少包含值、左子节点引用和右子节点引用 二叉树中,除叶节点外,其他所有节点都包含子节点和非空子树 2.概念: 名词 解释 根节点(root node) 位于二叉树顶
5.多路查找树
摘要:多路查找树 2-3树 2-3-4树 B树 B+树 多叉树: 树的每个节点可以有超过2个子节点 举例:2-3树、2-3-4树、B树、B+树 概念: 阶数(Order),对于一颗M阶B树,一个节点最多包含M个子节点 B树(Balanced Tree): B树是多路平衡查找树的一种特殊类型 B 是Bala
4.红黑树
摘要:红黑树 红黑树是一种自平衡的二叉查找树,属于AVL平衡树的一种特殊形式 特征: 每个节点要么是红色,要么是黑色。 根节点是黑色。 每个叶子节点(NIL)是黑色。 如果一个节点是红色,则其两个子节点必须是黑色。 从任一节点到其每个叶子的所有路径,都包含相同数目的黑色节点。 红黑树的这5条性质,使得一棵
3.AVL平衡树
摘要:AVL平衡树 特征: AVL 树既是二叉搜索树,也是平衡二叉树,同时满足这两类二叉树的所有性质 AVL 树是一种平衡二叉搜索树 属性: 节点高度 节点平衡因子:节点左子树的高度减去右子树的高度,空节点的平衡因子为0 AVL 树旋转: 作用: AVL 树的特点在于“旋转”操作,它能够在不影响二叉树的中
1.树
摘要:树 在树中,数据从顶部向下按层次排列,表现出“祖先”与“后代”之间的派生关系 树结构是一种非线性存储结构,存储的是具有一对多关系的数据元素 树的分类: 树 二叉树 按树的结构: 满二叉树 完满二叉树 完全二叉树 按搜索功能: 查找:(索引) 二叉查找树(BST) 非平衡查找树 平衡树二叉树 AVL树
6.堆
摘要:堆 定义:完全二叉树的一种特定应用 特征: 最底层节点靠左填充,其他层的节点都被填满(完全二叉树特性)。 根节点称为“堆顶”,将底层最靠右的节点称为“堆底”。 对于大顶堆(小顶堆),堆顶元素(根节点)的值是最大(最小)的。 堆分类: 小顶堆:任意节点的值≤其子节点的值 大顶堆:任意节点的值≥其子节点
00.定义
摘要:定义 算法(algorithm) 是在有限时间内解决特定问题的一组指令或操作步骤,它具有以下特性: 问题是明确的,包含清晰的输入和输出定义。 具有可行性,能够在有限步骤、时间和内存空间下完成。 各步骤都有确定的含义,在相同的输入和运行条件下,输出始终相同。 数据结构(data structure)
1.思维导图
摘要:数据结构和算法 线性表 数组 链表 单链表 双向链表 循环链表 双向循环链表 静态链表 栈 顺序栈 链式栈 队列 普通队列 双端队列 阻塞队列 并发队列 阻塞并发队列 树 二叉树 平衡二叉树 AVL树 红黑树 完全二叉树 满二叉树 平衡二叉查找树 多路查找树 B树 B+树 2-3树 2-3-4树 堆
0.学习路径
摘要:学习路径: 阶段一:算法入门 我们需要熟悉各种数据结构的特点和用法,学习不同算法的原理、流程、用途和效率等方面的内容。 阶段二:刷算法题 建议从热门题目开刷,先积累至少 100 道题目,熟悉主流的算法问题。初次刷题时,“知识遗忘”可能是一个挑战,但请放心,这是很正常的。我们可以按照“艾宾浩斯遗忘曲线
09.网络IO技术-阻塞、非阻塞、同步、异步
摘要:简介 同步调用、异步调用的说法,是对于获取数据的过程而言的。 例如发生read调用时,内核将数据从内核空间拷贝到应用程序空间。这个过程是在read函数中是同步进行的。如果内核实现的拷贝效率很差,read调用就会在这个同步过程中消耗比较长的时间。 IO操作分两个阶段: 等待数据准备好 –读到内核缓存
04.*网络层、IP(三层)
摘要:网络层又叫IP层: 主要的解决问题: 数据包的转发,IP to IP 路由选择 IP地址的分配 分片和重组 IP地址: 分类: Img CIDR(Classless Inter-Domain Routing): CIDR是一种更灵活的网络划分方法,它将IP地址和子网掩码写在一起。将IP 地址被划分为
03.数据链路层、MAC(二层)
摘要:数据链路层又叫MAC层 MAC:Medium Access Control,即媒体访问控制,存在连接的设备 to 设备 MAC地址 是一个局域网内才有效的地址 目标MAC地址 只要过网关,就必定会改变 目标MAC地址 记录的是下一跳的地址 MAC层 主要解决问题: 解决包的接收对象 解决包的有序、并
08.*应用层、HTTP(七层)
摘要:HTTP 发送格式: 图片 响应格式: 图片 HTTPS 与HTTP相比,多了SSL/TLS 握手协议 概念:前向安全性: 密钥泄露后,即使拿到以前的记录,也无法通过密钥进行破解 RSA、DH加密算法是非前向安全的;ECDHE是前向安全的 SSL/TLS 握手协议: 目的: 通过非对称加密算法,握手
05.*传输层、TCP(四层)
摘要:传输: 数据传输格式: MAC层定义了本地局域网设备的传输行为 IP层定义了整个网络端到端的传输行为 传输层定义应用程序到应用程序的传输,基于端口区分 这两层基本定义了包的特性: 网络传输是以包为单位的,MAC层叫帧Frame,IP层叫包Packet,包被分片后叫Fragment,传输层叫段Segm
10.网络文件IO优化
摘要:10. 网络文件IO优化 本地磁盘中文件发送到网络中: 1. 直接 IO 技术 Img 内核缓冲区又叫做Linux系统的Page Cahe。 为了加快磁盘的IO,Linux系统会把磁盘上的数据以 Page为单位缓存在操作系统的内存里,这里的Page是 Linux 系统定义的一个逻辑概念,一个Page
99.socket编程
摘要:简介 基本信息: 在内核中,Socket是一个文件,对应一个文件描述符。文件描述符是一个整数,是描述符数组的下标值 每一个进程都有一个数据结构 task_struct,里面指向一个文件描述符数组,表示这个进程打开的所有文件的文件描述符 socket 对应的 inode 指向了 Socket 在内核中
QA
摘要:基础 内核源码:https://elixir.bootlin.com/linux/latest/source ★★★ 各层协议的作用,以及 TCP/IP 协议的特点。 ★★☆ 以太网的特点,以及帧结构。 ★★☆ 集线器、交换机、路由器的作用,以及所属的网络层。 ★★☆ IP 数据数据报常见字段的作用
HEIF编解码器安装手册
摘要:HEIF编、解码器安装手册 by Navyum HEIF 编码、解码原理 Img 相关依赖库: 主要的第三方库:libx265、libde265、libaom、libvvenc、liblibheif、libvips 其他参考:libavif 相关编码标准: H.264/MPEG-4、H.265/HE
ISOBMFF多媒体文件规范
摘要:多媒体文件 多媒体文件规范 规范范围: 容器格式规范:定义文件结构和元数据存储 编码格式规范:定义如何对数据进行压缩、编码、解码(涉及图片、音频、视频、字幕等) 传输协议规范:定义流媒体协议 ISOBMFF ISO基本媒体文件格式 ISO/IEC 14496-12 标准的实现 ISO Base Me