计算机基础知识复习12.20
B+树与B树差异的点
叶子节点最底部的节点才会存放实际数据(索引+记录),非叶子节点只会存放索引
所有索引都会在叶子节点出现,叶子节点之间构成一个有序链表
为什么mysql使用B+树
单点查询:B+树的非叶子节点不存放实际的记录数据,仅存放索引,因此数据量相同的情况下,相比存储即存索引又存记录的B树,B+树的非叶子节点可以存放更多的索引,因此B+树可以比B树更矮胖,查询底层节点的磁盘I/O次数会更少
插入和删除效率:B+树有大量的冗余节点,这样使得删除一个节点的时候,可以直接从叶子节点中删除,甚至可以不动非叶子节点。B树则不同,B树没有冗余节点,删除节点的时候非常复杂,
范围查询:B+树的所有叶子节点还有一个链表进行连接,查询12.1-12.12之间订单,就可以先查找12.1所在的叶子节点,然后利用链表向右遍历,指导找到12.12的节点,不需要从根节点查询
为什么主键索引最好是自增的
InnoDB创建主键索引默认为聚簇索引,数据被存放在B+tree的叶子节点,同一个叶子节点内的各个数据是按照主键顺序存放的,每当一条新的数据插入时,数据库会根据主键将其插入到对应的叶子节点中
如果使用自增主键,那么每次插入的新数据就会按照顺序添加到当前索引节点的位置,不需要移动已有的数据,当页面写满,就会自动开辟一个新页面,因为每次插入一条新纪录,都是追加操作,不需要重新移动数据
如果使用非自增主键,由于每次插入主键的索引值都是随机的,因此插入新的数据时,就可能会插入到现有数据页中间的某个位置,将不得不移动其他数据来满足新数据的插入,甚至需要从一个页面复制数据到另外一个页面,通常叫做页分裂,页分裂还有可能会造成大量的内存碎片,导致索引结构不紧凑,从而影响查询效率。
类加载过程
加载(Loading)->连接Linking(验证,准备,解析)->初始化->使用->卸载
载入:JVM载该阶段的目的是将字节码从不同的数据源(class文件,jar包,网络中)转化为二进制字节流加载到内存中,并生成一个代表该类的java.lang.class对象
验证:jvm会在该阶段对二进制字节流进行校验,只有符合JVM字节码规范的才能被JVM正确执行
准备:对使用static关键字修饰的静态变量分配内存并初始化,对应数据类型的默认初始值 如0,0L,null,false。使用static final修饰的变量称为常量,直接赋最终值,使用static修饰的变量赋初值
解析:将符号引用转化为直接引用,符号引用是一组符号(任何形式的字面量,只要在使用时能够无歧义的定位到目标即可)来描述所引用的目标。直接引用通过对符号引用进行解析,找到引用的实际内存地址
初始化:类变量赋上代码期望赋的值,执行类构造器方法的过程
一条sql语句的查询过程
1.客户端发送sql查询语句到mysql服务器
2.mysql服务器的连接器开始处理这个请求,跟客户端建立连接,获取权限,管理连接
3.解析器对sql语句进行解析,检查语句是否符合sql语法规则,确保引用的数据库,表和列都是存在的,并处理sql语句中的名称解析和权限验证
4.优化器负责确定sql语句的执行计划,这包括选择使用那些索引,以及决定表之间的连接顺序等
第一步 连接器
先连接mysql服务,然后才能执行sql语句,tcp三次握手,验证用户名和密码,获取用户权限
第二步 解析SQL
词法分析 会根据你输入的字符串识别出关键字出来 如select from
语法分析:语法分析器会根据语法规则,判断你输入的这个sql语句是否满足mysql语法,如果没问题就会构建sql语法树,这样方便后面模块获取SQL类型,表名,字段名,where条件
执行SQL
prepare阶段:预处理阶段
检查SQL查询语句中的表或者字段是否存在
将select*中的*符号,扩展为表上的所有列
optimize阶段 优化阶段
经过预处理阶段后,还需要为SQL查询语句先制定一个执行计划,这个工作交由优化器来完成。优化器主要负责将SQL查询语句的执行方案确定下来,比如表里面有多个索引,优化器会基于查询成本的考虑,来决定选择使用哪个索引
execute阶段 执行阶段
Java反射原理
对于任意一个类,都能够知道这个类中的所有属性和方法,对于任意一个对象,都能够调用他的任意一个方法和属性。
运行时类信息访问:反射机制允许程序在运行时获取类的完整结构信息,包括类名,包名,父类,实现的接口,构造函数,方法和字段
动态对象创建:可以使用反射api动态地创建对象实例,即使在编译时不知道具体的类名,通过class类的newInstance方法
动态方法调用:可以在运行时动态调用对象的方法,包括私有方法,通过Method类的invoke方法实现,允许传入对象实例和参数值来执行方法
访问和修改字段值:反射允许程序在运行时访问和修改对象的字段值,即使是私有的
Redis的数据备份(AOF和RDB)
AOF日志:如果Redis每执行一条写操作命令,就把该命令以追加的方式写入到一个文件里,然后重启Redis的时候,先去读取这个文件里的命令,并且执行它
AOF写会硬盘的策略:
Always策略的话,可以最大程度保证数据不丢失,但是由于他每执行一条写操作就同步将AOF内容写会硬盘,所以不可避免影响主进程的性能
No策略:是交由操作系统来决定何时将AOF日志内容写会硬盘,相比Always策略性能较好,但是操作系统写回硬盘的时机不可预知,如果AOF日志内容没有写回硬盘,一旦服务器宕机,就会丢失不定数量的数据
Everysec策略:每一秒将写操作日志写回到磁盘
RDB快照:记录某一瞬间的内存数据,记录的是实际数据,而AOF文件记录的是命令操作的日志,而不是实际的数据
混合持久化工作
AOF重写日志时,fork出来的重写子进程会先将与主进程共享的内存数据以RDB方式写入到AOF文件,然后主线程处理的操作命令会被记录在重写缓存区里,重写缓冲区里的增量命令会以AOF方式写入到AOF文件,写入完成后通知主进程将新的含有RDB格式和AOF格式的AOF文件替换旧的AOF文件
执行快照时,数据能被修改吗
执行bgsave过程,交给子进程构建RDB文件,主线程要修改共享数据的某一块数据时,就会发生写时复制,于是这块数据的物理内存就会被复制一份,然后主线程在这个数据副本进行修改操作,与此同时,bgsave子进程可以继续把原来的数据写入到RDB文件。主线程修改共享数据,发生了写时复制,RDB快照保存的时原本的内存数据,主线程刚修改的数据是没办法在这一时间写入RDB文件的,只能交给下一次bgsave快照
索引分类
按物理存储的角度来看,索引分为聚簇索引(主键索引),二级索引(辅助索引)
主键索引的B+Tree的叶子节点存放的是实际数据,所有完整的用户记录都存放在主键索引的B+Tree的叶子节点里
二级索引的B+Tree的叶子节点存放的是主键值,而不是实际数据
按字段特性分为 主键索引,唯一索引,普通索引,前缀索引
主键索引是建立在主键字段上的索引,通常在创建表的时候一起创建,一张表最多只有一个主键索引,索引列的值不允许有空值
唯一索引
建立在unique字段上的索引,一张表可以有多个唯一索引,索引列的值必须唯一,但是允许有空值
普通索引
建立在普通字段上的索引,既不要求字段为主键,也不要求字段为unique
按字段个数分类
建立在单列上的索引称为单列索引
建立在多列上的索引称为联合索引
相关文章:
计算机基础知识复习12.20
B树与B树差异的点 叶子节点最底部的节点才会存放实际数据(索引记录),非叶子节点只会存放索引 所有索引都会在叶子节点出现,叶子节点之间构成一个有序链表 为什么mysql使用B树 单点查询:B树的非叶子节点不存放实际的记录数据,仅…...
Flash语音芯片相比OTP语音芯片的优势
Flash语音芯片和OTP语音芯片是两种常见的语音解决方案,在各自的应用领域中发挥着重要作用。本文将介绍Flash语音芯片相比OTP(One-Time Programmable)语音芯片的显著优势。 1.可重复擦写:Flash语音芯片的最大特点是支持多次编程和擦除,…...
深度学习模型中增加随机性可以通过多种方式实现,以下是一些可以应用到你的 `TCNAttentionLSTM`
在深度学习模型中增加随机性可以通过多种方式实现,以下是一些可以应用到你的TCNAttentionLSTM模型中的方法: ### 1. Dropout 你已经在模型中使用了dropout,这是增加随机性的一种常见方法。你可以通过调整dropout率来控制随机性的程度。 ###…...
JavaScript:一个争议与机遇并存的编程语言
JavaScript的诞生带着某种戏剧性色彩。1995年,网景公司的Brendan Eich在短短10天内设计出了这门语言。这种仓促的诞生为JavaScript埋下了许多设计缺陷的隐患,这些问题直到今天仍在困扰着开发者。然而,正是这样一个充满争议的语言,…...
后摩尔定律时代,什么将推动计算机性能优化的发展?
在摩尔定律时代,每两年芯片上的晶体管数量就会翻一番,这一看似不可避免的趋势被称为摩尔定律,它极大地促进了计算机性能的提高。然而,硅基晶体管不可能一直小下去,半导体晶体管的微型化推动了计算机性能的提升…...
台球助教平台系统开发APP和小程序信息收藏功能需求解析(第十二章)
以下是开发台球助教系统客户端(APP,小程序,H5)几端的信息收藏功能的详细需求和功能说明,内容比较详细,可以说是一个教科书式的详细说明了,这套需求说明不仅仅用在我们的台球助教系统程序上&…...
软件实验室认可|实验室比对的形式与方法
实验室比对是软件测试实验室在申请软件实验室认可必须要做的一类质量控制活动。实验室比对包括实验室间比对,和实验室内比对。实验室间比对指的是按照预先规定的条件,由两个或多个实验室对相同或类似的物品进行测量或检测的组织、实施和评价。实验室内比…...
HarmonyOS NEXT开发进阶(四):@Builder 装饰器实现UI结构复用
一、前言 当页面有多个相同的UI结构时,若每个都单独声明,同样会有大量重复的代码。为避免重复代码,可以将相同的UI结构提炼为一个自定义组件,完成UI结构的复用。 除此之外,ArkTS还提供了一种更轻量的UI结构复用机制B…...
Vivado/Vitis中自定义IP的驱动
在使用Xilinx FPGA时,很多时候都要添加自定义的IP以实现相应的功能,一些时候会通过AXI总线与软核或硬核相连,这个时候就可以在软件中对IP进行控制。 当我们打开Vitis开始软件编写时,会遇到自定义IP驱动编译不过的情况,…...
CentOS7安装Python3.9(已装python2.6)
Python下载地址:Index of /ftp/python/ 下载并解压 # 安装wgetyum -y install wget # 下载wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz # 解压tar zxvf Python-3.9.0.tgz # 切换目录cd Python-3.9.0 编译并安装 # 编译 ./configure --prefix/us…...
cenos如何升级git到2以上版本
1:先卸载旧的版本: # 卸载源默认安装的git $ git --version git version 1.8.3.1 $ sudo yum remove git2: 安装新的git版本 编译 配置环境变量 下载相关依赖 并安装 [rootlocalhost /]# yum install curl-devel expat-devel openssl-devel zlib-devel gcc […...
【JetPack】Navigation知识点总结
Navigation的主要元素: 1、Navigation Graph: 一种新的XML资源文件,包含应用程序所有的页面,以及页面间的关系。 <?xml version"1.0" encoding"utf-8"?> <navigation xmlns:android"http://schemas.a…...
图文社区用户搜索关系表设计方案:空间换时间的权衡与抉择
背景 我们来聊一个解决方案:我们做了一个和抖音产品类似的图文社区,社区有一个搜索栏,通过名字搜索用户,搜索出来的用户需要体现出其与当前用户的关系:1.当前用户的粉丝。2.当前用户关注的人。3.互相关注。目前总用户…...
问题小记-达梦数据库报错“字符串转换出错”处理
最近遇到一个达梦数据库报错“-6111: 字符串转换出错”的问题,这个问题主要是涉及到一条sql语句的执行,在此分享下这个报错的处理过程。 问题表现为:一样的表结构和数据,执行相同的SQL,在Oracle数据库中执行正常&…...
空天地遥感数据识别与计算--数据分析如何助力农林牧渔、城市发展、地质灾害监测等行业革新
在科技飞速发展的时代,遥感数据的精准分析已经成为推动各行业智能决策的关键工具。从无人机监测农田到卫星数据支持气候研究,空天地遥感数据正以前所未有的方式为科研和商业带来深刻变革。然而,对于许多专业人士而言,如何高效地处…...
Cherno C++ 学习笔记 智能指针
这一篇我们会讲到一个C当中非常重要的特性,也就是智能指针smart pointer。在我们知道了new和delete两个关键字之后,我们了解了如何在堆上分配内存以及如何释放内存。但是当我们new了一个或者一堆对象之后,很多时候我们会容易忘掉delete所有需…...
C++ OpenGL学习笔记(2、绘制橙色三角形绘制、绿色随时间变化的三角形绘制)
相关文章链接 C OpenGL学习笔记(1、Hello World空窗口程序) 目录 绘制橙色三角形绘制1、主要修改内容有:1.1、在主程序的基础上增加如下3个函数1.2、另外在主程序外面新增3个全局变量1.3、编写两个shader程序文件 2、initModel()函数3、initS…...
如何创建属于自己的大语言模型:从零开始的指南
如何创建属于自己的大语言模型:从零开始的指南 为什么要创建自己的大语言模型? 随着人工智能的快速发展,大语言模型(LLM)在各种场景中表现出了卓越的能力,例如文本生成、对话交互和内容总结等。虽然市场上…...
【AIGC安全】CCF-CV企业交流会直播回顾:探寻AI安全治理,共筑可信AI未来
文章目录 一、活动背景:AI技术快速发展与安全治理需求迫切二、论坛内容金耀辉:智能共生时代:平衡生成式AI的创新与风险何延哲:人工智能安全检测评估的逻辑和要点谢洪涛:面向特定人物深度伪造视频的主动防御与被动检测技…...
win11+cuda11x+VS2019安装后没有cuda模板,贫穷版cuda环境
显卡是GTX710,挂在闲鱼200块钱一年多都没卖出去的一款。win11最开始安装了visual studio 2022,不过安装目录自定义,后续安装cuda 11.1.1,这个顺序在各种博客资料都是正确的,先VS,后cuda。但是创建项目也没有…...
四相机设计实现全向视觉感知的开源空中机器人无人机
开源空中机器人 基于深度学习的OmniNxt全向视觉算法OAK-4p-New 全景硬件同步相机 机器人的纯视觉避障定位建图一直是个难题: 系统实现复杂 纯视觉稳定性不高 很难选到实用的视觉传感器 为此多数厂家还是采用激光雷达的定位方案。 OAK-4p-New 为了弥合这一差距…...
越疆科技营收增速放缓:毛利率未恢复,持续亏损下销售费用偏高
《港湾商业观察》施子夫 12月13日,深圳市越疆科技股份有限公司(以下简称,越疆科技,02432.HK)发布全球发售公告,公司计划全球发售4000万股股份,其中3800万股国际发售,200万股香港公开…...
南城云趣:智能云平台,杜绝电动车充电安全隐患
电动自行车作为绿色低碳出行的主要方式之一,受到无数市民的推崇,而电动自行车数量的急剧上涨,也严重增加小区管理的负担。记者调查发现,目前电动自行车缺乏有效的管理,使得带车或电瓶上楼充电、乱停乱放、车辆容易被盗等安全问题日益突出,给社区消防安全和管理带来严峻的挑战。…...
uniapp对接unipush 1.0 ios/android
简介 实现方法 是uniapp官网推荐的 unipush-v1 文档配置具体看 uni-app官网 配置好了之后 代码实现 前端代码 前端的主要任务是监听 监听到title content 创建消息推送 安卓 可以收到在线消息并且自动弹出消息 IOS 可以监听到在线消息但是需要手动推送 以下代码app初始…...
Vue.js前端框架教程11:Vue监听器watch和watchEffect
文章目录 监听器(watchers)基本用法deep: trueimmediate: true总结 watchEffect基本用法自动追踪依赖停止监听与 watch 的对比性能优化总结 监听器(watchers) 在 Vue 中,监听器(watchers)是一种…...
和数集团针对元宇宙数字身份及资产验证安全性发起挑战
随着时间的推移,元宇宙的发展潜力是无限的。 但与此同时,故事中充斥着疑问、困惑和不安。马克扎克伯格声称人类在未来将生活在虚拟世界中。也许是这样,但元宇宙的应用也面临很多障碍。其中一个领域是安全。对于在元宇宙中发生的任何交易&…...
llama2中的model.py中的结构示意图
参考文章:https://zhuanlan.zhihu.com/p/679640407...
Spring事务管理详解
一、什么是事务管理 事务是一个最小的不可再分的工作单元。 一个事务对应一套完整的业务操作。事务管理是指这些操作要么全部成功执行,要么全部回滚,从而保证数据的一致性和完整性。比如银行转账,需要保证转出和转入是一个原子操作。Spring提…...
被裁20240927 --- 嵌入式硬件开发 前篇
前篇主要介绍一些相关的概念,用于常识扫盲,后篇开始上干货! 他捧着一只碗吃过百家的饭 处理器芯片处理器芯片制造商嵌入式处理器芯片制造商国内制造商国外制造商 与意法半导体对标的国产芯片制造商一、中芯国际二、华为海思三、紫光国微四、北…...
CMake的INSTALL FILES和INSTALL DIRECTORY有什么区别
在 CMake 中,install() 命令用于安装构建的目标文件、头文件、库等到指定的目标路径。install(FILES ...) 和 install(DIRECTORY ...) 都是 install() 命令的具体用法,它们的功能和适用场景不同。 以下是两者的详细区别和用法说明: 1. insta…...
提炼关键词的力量:AI驱动下的SEO优化策略
内容概要 在当今数字化营销的环境中,关键词对于提升网站的可见性和流量起着至关重要的作用。企业和个人必须重视有效的关键词策略,以便在竞争激烈的网络市场中脱颖而出。本文将深入探讨如何利用人工智能技术来优化SEO策略,特别是在关键词选择…...
springboot中Controller内文件上传到本地以及阿里云
上传文件的基本操作 <form action"/upload" method"post" enctype"multipart/form-data"> <h1>登录</h1> 姓名:<input type"text" name"username" required><br> 年龄…...
【MFC】多工具栏如何保存状态
MFC中的工具栏本来只有一个,如果想增加几个工具栏是比较简单,但现在一个重要的问题是,状态无法保存,导致每次打开,工具栏就会出现问题,要么偏移位置要么显示不出。 经过研究,发现是MFC框架中的…...
IDEA搭建SpringBoot,MyBatis,Mysql工程项目
目录 一、前言 二、项目结构 三、初始化项目 四、SpringBoot项目集成Mybatis编写接口 五、代码仓库 一、前言 构建一个基于Spring Boot框架的现代化Web应用程序,以满足[公司/组织名称]对于[业务需求描述]的需求。通过利用Spring Boot简化企业级应用开发的优势&…...
鸿蒙心路旅程:HarmonyOS NEXT 心路旅程:技术、成长与未来
HarmonyOS NEXT 心路旅程:技术、成长与未来 技术的浪潮中,总有一些瞬间让人感到心潮澎湃。作为一名HarmonyOS NEXT开发者,我有幸成为这个时代科技创新的一部分。从最初的接触到深入学习、开发,以及如今规划未来的职业方向&#x…...
【漫话机器学习系列】010.Bagging算法(Bootstrap Aggregating)
Bagging算法(Bootstrap Aggregating) Bagging(Bootstrap Aggregating 的缩写)是一种集成学习方法,通过构建多个弱学习器(例如决策树)并将它们的结果进行平均(回归)或投票…...
【信息系统项目管理师】高分论文:论信息系统项目的进度管理(人力资源管理系统)
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文1、规划进度管理3、排列活动顺序4、估算活动持续时间5、制订进度计划6、控制进度论文 2022年2月,我作为项目经理参与了XX电网公司人力资源管理系统建设项目,该项目是2022年XX电网公司“十三五”信息化规…...
Go web 开发框架 Iris
背景 掌握了 Go 语言的基础后就该开始实践了,编写Web应用首先需要一个 web 开发框架。做框架选型时,处理web请求是基本功能,至于MVC是更进一步需要。现在比较流行的web架构是前后端分离,后端响应RESTful的请求,Iris 能…...
模具生产过程中的标签使用流程图
①NFC芯片嵌入周转筐,通过读卡器读取CK_Label_v3的数据,并将这些信息上传至服务器进行存储; ②服务器随后与客户的WMS(仓库管理系统)进行交互,记录和同步注塑机的原始数据; ③当周转筐内的模具…...
精准提升:从94.5%到99.4%——目标检测调优全纪录
🚀 目标检测模型调优过程记录 在进行目标检测模型的训练过程中,我们面对了许多挑战与迭代。从初始模型的训练结果到最终的调优优化,每一步的实验和调整都有其独特的思路和收获。本文记录了我在优化目标检测模型的过程中进行的几次尝试&#…...
【LC】100. 相同的树
题目描述: 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p [1,2,3], q [1,2,3] 输出&…...
Midjourney参数大全
基本参数 纵横比,宽高比 --aspect,或--ar更改生成的纵横比。 混乱 --chaos <number 0–100>改变结果的变化程度。更高的数值会产生更多不寻常和意想不到的结果。 图像权重 --iw <0–2>设置相对于原始图像相识度。默认值为 1&a…...
【达梦数据库】获取对象DDL
目录 背景获取表的DDL其他 背景 在排查问题时总会遇到获取对象DDL的问题,因此做以下总结。 获取表的DDL 设置disql工具中显示LONG类型数据的最大长度,避免截断: SET LONG 9999获取DDL SELECT DBMS_METADATA.GET_DDL(TABLE,表名,模式名) …...
51c视觉~合集34
我自己的原文哦~ https://blog.51cto.com/whaosoft/12207162 #图像数据增强库综述 10个强大图像增强工具对比与分析 在深度学习和计算机视觉领域,数据增强已成为提高模型性能和泛化能力的关键技术。本文旨在全面介绍当前广泛使用的图像数据增强库,…...
机动车油耗计算API集成指南
机动车油耗计算API集成指南 引言 在当今社会,随着机动车数量的持续增长和环保意识的不断增强,如何有效管理和降低车辆油耗成为了车主、车队管理者以及交通政策制定者共同关注的问题。为了帮助这些群体更好地理解和优化燃油消耗情况,本接口能…...
正也科技荣获“金石奖2024医药健康互联网优秀服务商奖”
近日,上海正也信息科技有限公司在赛柏蓝第五届医药金石奖颁奖典礼上荣获“金石奖2024医药健康互联网优秀服务商奖”。这一殊荣不仅体现了业内对正也科技在医药信息化领域卓越贡献的高度认可,更是对其持续创新与专业服务的充分肯定。 01 作为深耕医药行…...
Ubuntu搭建ES8集群+加密通讯+https访问
目录 写在前面 一、前期准备 1. 创建用户和用户组 2. 修改limits.conf文件 3. 关闭操作系统swap功能 4. 调整mmap上限 二、安装ES 1.下载ES 2.配置集群间安全访问证书密钥 3.配置elasticsearch.yml 4.修改jvm.options 5.启动ES服务 6.修改密码 7.启用外部ht…...
【2024/12最新】CF罗技鼠标宏分享教程与源码
使用效果: 支持的功能 M4 7发一个点HK417 连点瞬狙炼狱加特林一个圈 下载链接 点击下载...
jmeter 接口性能测试 学习笔记
目录 说明工具准备工具配置jmeter 界面汉化配置汉化步骤汉化结果图 案例1:测试接口接口准备线程组添加线程组配置线程组值线程数(Number of Threads)Ramp-Up 时间(Ramp-Up Period)循环次数(Loop Count&…...
SpringBoot3整合Knife4j
文章目录 1. 引入依赖2. yml配置文件3. 常用注解3.1 类级别注解3.2 方法级别注解3.3 参数级别注解3.4 模型类注解 4. 访问界面 1. 引入依赖 <!--swagger--> <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-j…...