05 2022 档案
摘要:任务接收 改造原因 原中控是使用一条后台线程,对所有任务进行处理,并根据AGV的状态分配任务 缺点:任务是分配给AGV,所以AGV的任务获取有时差,而且任务越多,AGV越多,这种情况越明显;只有一条后台线程在处理,当线程卡在某一个任务时,其余空闲AGV将无法拿到任务 改造后 将任务分配改为AGV主动
阅读全文
摘要:信息接受处理 改造原因 原中控针对车辆信息,采用一个后台线程获取全部车辆信息,一次性处理所有车辆的信息 优点:节省资源,单线程工作 缺点:处理速度慢,当涉及I/O问题,对其余车辆的处理速度有很大影响,当车辆数目上升时,无法做出有效的响应速度提升措施 改造后 借鉴netty的reactor模型,对车辆
阅读全文
摘要:1. 什么是MVCC MVCC(Multiversion Concurrency Control),多版本并发控制,通过数据行的多个版本管理来实现数据库的并发控制,使得在事务隔离级别下执行一致性读有了保证。MVCC没有正式标准。 2. 快照读与当前读 快照读 又叫一致性读,读取的是快照数据。不加锁的
阅读全文
摘要:2. 并发事务访问相同记录的情况 2.1 读-读情况 读取操作并不会对记录有任何影响,所以允许这种情况的发生 2.2 写-写情况 对相同记录做出改动,在这种情况下会出现脏写情况,任何一种隔离级别都不允许这种情况的发生,所以多个未提交事务对一条记录做改动时,都需要排队执行,排队的过程是通过锁实现的。
阅读全文
摘要:事务的ACID特性是基于什么机制实现的 事务的隔离性是由锁机制实现的 而原子性、一致性、持久性由事务的redo和undo日志来保证的 redo日志,叫做重做日志,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性。是存储引擎生成的日志,记录的是物理级别上的页修改操作,比如页号xxx,偏移
阅读全文
摘要:事务概述 事务是数据库区别于文件系统的重要特性之一,当我们有了事务就会让数据库始终保持一致性,同时我们还能通过事务的机制恢复到某个时间点,这样就可以保证已提交到数据库的修改不会因为系统崩溃而丢失 事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态 事务处理的原则:保证所有事务都作为一个工作单元
阅读全文
摘要:last_query_cost,查询使用的页数量,衡量执行计划的成本 定位执行慢的SQL:慢查询日志 慢查询日志,用于记录执行过程中,响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,默认值是10s 默认系统是没有开启慢查询日志的,因为开启之后会带来一定的性能影响
阅读全文
摘要:MySQL中的SQL执行流程 查询流程 查询缓存:Server如果在查询缓存中发现了这条SQL语句,就会直接将结果返回给客户端;如果没有,就会进入解析器阶段。但是在MySQL8.0中该功能被删除 解析器解析,对SQL语句进行解析 先做词法分析,识别SQL语句中的各个词是什么,代表什么 接着做语法分析
阅读全文
摘要:数据存储结构:页 磁盘和内存交互的基本单位:页 页的默认大小是16KB 基本交互单位是页,也就是每次最少从磁盘加载16KB到内存,每次最少将内存中的16KB刷新到磁盘。 在数据库中,不论是读一行还是读多行,都是将这些行所在的页进行加载,也就是说,数据库管理存储空间的基本单位是页,数据库I/O操作的最
阅读全文
摘要:从几个方面优化数据库 索引失效 关联查询太多 服务器调优 数据过多 优化技术分为 物理优化:主要是索引的使用 逻辑优化:SQL的等价变换 索引失效案例 MySQL提高性能的一个最有效的方式就是对数据表设计有效的索引,但是最终用不用索引,是优化器决定的,它不是根据规则,也不是根据语义,而是基于开销(c
阅读全文
摘要:为什么需要索引 数据库的数据不是连续存储在磁盘上的,假设查找数据的方式是逐条查询,那么最坏情况下,查询一个数据就需要一次磁盘I/O,那么消耗在I/O上的时间就会非常大。 那么如果我们为数据的存储建立一个索引表,就像是书本的目录一样,然后再使用二叉树这样的数据结构来查找数据,那么我们知道,二叉树的检索
阅读全文
摘要:索引的分类 普通索引 主键索引 唯一索引 联合索引 创建索引 创建表时创建索引 CREATE TABLE table_name [col_name data_type] [UNIQUE] INDEX index_name (col_name) [ASC | DESC] 已创建表时创建索引 ALTER
阅读全文
摘要:关于数据表设计的基本原则、规则就称为范式 第一范式:确保数据表中每个字段的值必须具有原子性,也就是每个字段的值为不可再次拆分的最小数据单元 第二范式:满足数据表中的每一条记录,都是可唯一标识的,而且所有非主键字段,都必须完全依赖主键,不能只依赖主键的一部分 第三范式:要求数据表中的所有非主键字段不能
阅读全文
摘要:关联查询优化 1. 左外连接 在底层做左外连接查询时,与嵌套循环相似,在驱动表中拿出一条数据,然后去被驱动表中扫描一遍,那么一共就会扫描N*M次 那么在优化时,可以在连接条件中,为被驱动表添加对应字段索引,这样驱动表依然是全表扫描,但是被驱动表是索引查询,效率会提升很多 然后如果驱动表也有连接条件的
阅读全文
摘要:附录C:Git命令 配置默认编辑器 git config --global core.editor "xxx" 配置提交时的用户名称和邮箱 git config --global user.name "xxx" git config --global user.email xxx.com 配置Git
阅读全文
摘要:交互式暂存 git add -i 进入交互式终端,输入相应指令,可以暂存文件、取消暂存文件、暂存文件的一部分、添加未被追踪的文件、显示暂存内容的区别 贮藏与清理 git stash指令会处理工作目录的脏状态,即跟踪文件的修改与暂存的改动,然后将未完成的修改保存到一个栈上,而你可以在任何时候重新应用这
阅读全文
摘要:Git 分支 在执行提交操作的时候,Git会保存一个提交对象,该对象包含一个指向暂存内容快照的指针,以及它的父对象的我指针。 暂存操作会为每一个文件计算校验和,然后把当前版本的文件快照保存到Git仓库中,最终将校验和加入到暂存区等待提交 当使用提交操作时,Git会先计算每一个子目录的校验和,然后在G
阅读全文
摘要:获取Git仓库 初始化 git init 有一个尚未进行版本控制的目录,可以初始化一个仓库,初始化后,目录内的文件还没被跟踪 克隆 git clone <url> 默认配置下远程Git仓库中的每一个文件的每一个版本都将被拉取下来 这会在当前目录下创建一个目标目录,然后初始化一个.git目录,从远程仓
阅读全文
摘要:Git是什么 直接记录快照,而非差异比较 其他大部分系统以文件变更列表的方式存储信息,这类系统将它们存储的信息看作是一组基本文件和每个文件随时间逐步累积的差异,这通常称为基于差异的版本控制 Git更像是把数据看作是小型的文件系统的一系列快照,每当在git中提交更新或者保存项目状态,基本上就会对当时的
阅读全文
摘要:网络层:数据平面 数据平面的主要作用:路由器从输入链路转发到输出链路 转发是指将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作,通常是硬件来实现 控制平面的主要作用:协调这些本地的路由器的转发动作 路由选择是指确定分组从源到目的地所采取的端到端路径的网络范围处理过程 网络服务模型 因
阅读全文
摘要:3.2 多路复用与多路分解 将传输层报文段中的数据交付到正确的socket的工作称为多路分解 在主机中从不同的socket中收集数据块,并封装上首部信息从而生成报文段,然后将报文段传递到网络层,这称为多路复用 UDP通过远端port和目的端port确认一个socket做多路分解 TCP通过远端IP/
阅读全文
摘要:2.1.2 进程间通信 socket是同一台主机内应用层与传输层之间的接口,由于该socket是建立网络应用程序的可编程接口,因此socket也称为应用程序和网络之间的应用程序编程接口 (Application Programming Interface, API ) 应用程序开发者可以控制sock
阅读全文
摘要:1.1 因特网 因特网是一个世界范围的计算机网络 端系统通过通信链路和分组交换机连接到一起 链路的传输速率用比特/秒(bps)表示 端与端之间通过将数据分段并加上首字节的信息包,叫做分组 链路层交换机一般用于接入网,路由器一般用于网络核心中 从发送端到接收端,一个分组所经历的一系列通信链路和分组交换
阅读全文