当前位置: 首页 > news >正文

谈谈MySQL中的索引和事务

目录

1. 索引

1.1 索引介绍

1.2 缺陷

1.3 使用

1.3.1 查看索引

1.3.2 创建索引 

1.3.3 删除索引 

2. 索引底层的数据结构 

2.1 B+树 

3. 事务 

3.1 为什么使用事务

3.2 事务的使用

3.3 事务的基本特性


1. 索引

1.1 索引介绍

索引相当于一本书的目录(index), 在一个表里有很多数据, 在查询表的时候, 最基本的方式就是遍历表,一条一条地进行筛选. 因此,就可以给这个表,来建立索引来提高查找的速度, 而索引是以"列"为维度进行建立的.

表中有很多列, 查询的时候, 查的方式也有区别. 有的时候, 是按照id来查询. 有的时候, 是按照name来查. 还有的时候, 是按照邮箱来查.

比如,按照id这一列,建立索引. 就会在数据库上额外搞了一个空间, 用来维护一些和id相关的信息. 这里就会通过一些特定的数据结构, 维护表示id相关的索引的情况.



后续再按照id来查询, 就不必直接遍历了. 而是从索引中进行查询, 根据索引就能够初步的锁定出数据所在的位置.

如果按照id来建立索引了,接下来按照name来查询, 能够提高效率嘛? 答: 不可以的!!

因为索引中只包含了id相关的信息, 要想让name加快查找, 就需要给name 也建立一个索引.

1.2 缺陷

索引,是用来提高查询效率的., 但是也有其缺陷.
缺陷:
1. 会消耗额外的空间
2. 有可能会拖慢,增删改的速度. 
比如新增, 不光要往表里写数据, 同时还好修改索引数据对应的索引.
再比如删除, 修改的, 如果删除修改的条件, 正好是和索引匹配还能快点. 
但是如果是涉及到索引列的删除/修改, 这个时候也需要同时维护索引.

对于数据库来说, 数据都是存储在硬盘上的. 同样索引数据也是在硬盘上的. 
所以说, 任何的交换都是有代价的. 不过上述这样的交换, 是赚的. 因为, 在实际的应用开发中, 是以查询操作为主,增删改相对来说是少很多的. 这样的情况下, 使用索引就非常合适了. 
 

1.3 使用

创建主键约束(PRIMARY KEY)、唯一约束(UNIQUE)、外键约束(FOREIGN KEY)时,会自动创建对应列的索引。

1.3.1 查看索引

show index from 表名;

当表中存在主键的时候, 内部就会自动的给这个列来创建索引, 主键不允许重复, 因此进行插入或者修改时, 就需要先查询(这个查询就挺费时间的), 看看插入或修改后的结果是否已经存在. 

使用unique也会自动的生成索引

设置外键约束,自动生成的索引 

外键这里也涉及到自动查询
1. 给学生表中插入一条记录,就需要查询classld是否在class表的classld中存在~~这个查询,就用到了class表的classld (主键自动生成的索引)
2. 给班级表中删除一条记录,就需要查询classld是否在student表中存在
如果存在,这样的删除就会失败(子表对于父表的反向约束)
这个查询,就用到了student表的classld 这一列对应的索引(外键约束自动生成的)
 

1.3.2 创建索引 

对于非主键、非唯一约束、非外键的字段,可以创建普通索引

create index 索引名 on 表名(字段名);

所以应该提前考虑好,设计表的时候,哪些列要有索引, 要明确规划出来.  

1.3.3 删除索引 

drop index 索引名 on 表名;

删除索引,只能针对手动创建的索引. 自动生成的索引,是不能被删除的.

但是删除索引这个操作也可能会非常的危险.


 

2. 索引底层的数据结构 

mysql的索引的数据结构到底是啥样的数据结构? 并非是定式!! 取决于mysql使用哪个存储引擎.

2.1 B+树 

B+树, 为了数据库量身定做的数据结构.
mysql的索引的数据结构为什么不能是顺序表, 链表, 栈, 队列, 红黑树, 哈希表呢?

1. 顺序表

在顺序表中间插入或删除元素需要移动大量数据,效率较低。
当容量不足时,需要重新分配更大的存储空间,并拷贝所有数据。
在大规模数据中进行随机查询效率低,尤其是当数据需要排序时。

2. 链表

链表不支持随机访问,必须从头开始遍历,查询时间复杂度是 O(n)。
每个节点需要额外的指针存储,内存开销较高。
链表不能快速进行范围查询。

3. 栈和队列

栈和队列只适合用于简单的顺序操作,不支持高效的随机查询、范围查询或复杂操作。
栈和队列不支持快速的插入、删除或排序操作。

4. 红黑树

元素有序,可以处理范围查询. 但最大的问题, 在于红黑树的高度, 会在元素个数比较多的时候,变的比较高.比较高就意味着查询操作时, 比较次数有时就会变得多, 索引这样的结构是存储在硬盘上的, 每一次比较就意味着硬盘IO操作

5. 哈希表

不适合数据库的查询场景, 因为哈希表,只能做这种精确查询,没法做模糊查询和范围查询.

要了解B+树,需要先了解下B树, B树有的时候会写作B-树, '-' 是连接符的意思, 不是数学中的减符号.B树的核心思路, 和"二叉搜索树"差不多.B树本质上是一个N叉搜索树.

一个节点上,可以保存多个key. N个key 就能延伸出N+1个分叉来. N个key就划分出了N+1个区间.

 

B树查询元素的流程:
拿着要查询的元素, 从根节点出发, 判定要查找的元素是否在根节点上存在.
如果不存在,看这个元素是落到哪个区间里, 就沿着这个区间的路线往下一个节点上找. 最终找到叶子节点, 还不存在, 就是真的不存在了.
此时每个节点上,就可以保存多个元素了. 当总的元素个数固定的时候,相比于二叉搜索树, 涉及到的节点的总数就大大降低了, 树的高度也大大降低了,  B树的高度是远远小于二叉搜索树的. 于是, 进行查询的时候,硬盘IO的次数也就随之减少了.

对于数据库来说, 每个节点, 都需要把数据从硬盘上读出来才能进行比较.
一个节点上有多个key,和一个节点上有一个key, 硬盘io 的开销是差不多的.

这就与倒垃圾类似. 关键的时间开销, 是从家里到楼下垃圾桶这里的距离, 一次拿一个垃圾袋, 去倒一趟和一次拿四个垃圾袋, 去倒一趟, 时间开销是一样的.
除非是你要拿100个垃圾袋, 一次拿不完, 需要多次, 才会有效率的明显降低.

B+树才是数据库索引的主角. 在B树的基础上,又进一步的做出了一些改进, B+树是针对数据库的查询场景展开的.


 

上面截图中, 是B+树的特点, 那么这些特点产生的优势是啥呢?

可以理解为叶子节点上, 存储的不仅仅是id, 还有表格中的其他列信息. 比如, 上述图中叶子节点1代表的是 1  张三 男  100, 叶子节点2代表的是2 李四 男 100.

3. 事务 

3.1 为什么使用事务

有的时候, 需要完成某个工作, 就需要多组sql操作.

事务的本质就是把多个操作, 打包成一个操作去完成. 这个意思是, 让这多个操作, 要么全部都执行成功, 要么一个都不执行. 这也就是所谓的原子性.

注意一个要点, "一个不执行" 不是真的不执行, 执行成不成功, 得执行了才知道.

假设, 事务中有3个操作.

先执行1, 再执行2, 最后执行3.

在真正执行前, 是不知道1 2 3 哪一步会失败的.

如果是执行到中间出错了,就需要自动的把前面已经成功执行的操作,进行还原, 还原回最初没有执行的模样,  这个操作就叫做回滚 (rollback). 回滚是怎么实现的呢? 只要把事务中执行的每个操作,都记录下来. 如果需要回滚, 就直接按照之前操作的“逆操作"来执行就可以了.

上个操作如果是插入,逆操作就是删除.

上个操作如果是删除, 逆操作就是插入.

上个操作是修改, 逆操作, 就改回去.

怎么记录下来呢? 通过特定的日志, 来记录数据库事务操作的中间过程.

3.2 事务的使用

(1)开启事务:start transaction;

(2)执行多条SQL语句

(3)回滚或提交:rollback/commit;

说明:rollback即是全部失败,commit即是全部成功。

commit提交事务, 把这些sql按照原子的方式来进行执行(带有回滚机制).

rollback手动触发回滚.

一个事务务必要以这两个操作结尾.
如果没有这俩操作, 接下来的各种sql操作都会被认为是事务的一部分.

3.3 事务的基本特性

1.原子性: 保证多个操作被打包成一个整体, 要么能够全都执行正确, 要么就一个都不执行.

2.一致性: 事务执行之前, 和事务执行之后, 数据能对上, 数据不能够离谱.

3.持久性: 事务这里执行的各种操作, 都是持久生效的(最终写入到硬盘中的)
一旦事务执行成功了, 这里的所有操作产生的修改, 都是写到硬盘里的.

4.隔离性: 并发执行事务的时候, 隔离性, 会在执行效率和数据可靠之间做出权衡. "隔离"描述的是同时执行的事务之间的相互的影响, 隔离性越高,并发性就越低.数据越可靠,性能就越低.

啥是并发? 简单理解就是同时执行.

数据库,是一个客户端服务器结构的程序.
既然是服务器, 那么服务器就可以同一时刻, 给多个客户端提供服务.

比如有两个客户端, 同时给服务器提交事务.
如果提交的这两个事务,是修改不同的数据库/不同的表, 相互之间是没啥影响的.

如果这两个事务, 修改的是同一个表, 这个时候就可能存在麻烦.

上述只是一个简单的例子.

那么, 在并发执行事务的过程中, 可能会产生以下问题.

这种情况就叫脏读.

这种情况就叫不可重复读. 

这种情况就叫幻读. 

相关文章:

谈谈MySQL中的索引和事务

目录 1. 索引 1.1 索引介绍 1.2 缺陷 1.3 使用 1.3.1 查看索引 1.3.2 创建索引 1.3.3 删除索引 2. 索引底层的数据结构 2.1 B树 3. 事务 3.1 为什么使用事务 3.2 事务的使用 3.3 事务的基本特性 1. 索引 1.1 索引介绍 索引相当于一本书的目录(index), 在一…...

Java 资源管理教程:掌握 close 方法、Cleaner 类与 Runtime.addShutdownHook

在 Java 编程中,高效地管理资源是至关重要的,特别是当你处理文件、数据库连接、网络连接等有限资源时。为了确保这些资源得到正确释放,Java 提供了多种机制。本教程将深入探讨 close 方法、Cleaner类以及 Runtime.addShutdownHook 方法&#…...

tensorflow源码编译在C++环境使用

https://tensorflow.google.cn/install/source?hlzh-cn查看tensorflow和其他需要下载软件对应的版本,最好一模一样 1、下载TensorFlow源码 https://github.com/tensorflow/tensorflow 2、安装编译protobuf(3.9.2) protobuf版本要和TensorFlo…...

算法日记8:StarryCoding60(单调栈)

一、题目 二、解题思路: 题意为让我们找到每个元素的左边第一个比它小的元素,若不存在则输出-1 2.1法一:暴力(0n2) 首先,我们可以想到最朴素的算法:直接暴力两层for达成目标核心代码如下&…...

HarmonyOS快速入门

HarmonyOS快速入门 1、基本概念 UI框架: HarmonyOS提供了一套UI开发框架,即方舟开发框架(ArkUI框架)。方舟开发框架可为开发者提供应用UI开发所必需的能力,比如多种组件、布局计算、动画能力、UI交互、绘制等。 方…...

基于微信小程序高校订餐系统的设计与开发ssm+论文源码调试讲解

第4章 系统设计 一个成功设计的系统在内容上必定是丰富的,在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值,吸引更多的访问者访问系统,以及让来访用户可以花费更多时间停留在系统上,则表明该系统设计得比较专…...

stm32使用MDK5.35时遇到*** TOOLS.INI: TOOLCHAIN NOT INSTALLED

mdk5.35出现*** TOOLS.INI: TOOLCHAIN NOT INSTALLED的问题!!!! 以管理员身份重新打开MDK5.35.0.0,用keygen破解密码,但是一直提示我是没有破解成功。 解决办法: target 改成ARM...

Java面试专题——常见面试题1

引入 本文属于专题中的常见面试题模块,属于面试时经常遇到的,适合需要面试的小伙伴做面试前复习准备用,后续会持续补充 1.面向对象基本特征 面向对象的基本特征是什么?怎么理解? 面向对象的基本特征是封装、继承、…...

【C++】在线五子棋对战项目网页版

目录 1.Websocket 1.1.Websocket的简单认识 1.2.什么是轮询呢? 1.3.websocket协议切换过程 1.4.websocketpp库常用接口认识 1.5.websocketpp库搭建服务器流程 1.6.websocketpp库搭建服务器 2.mysqlclient库-接口认识 3.项目模块的划分: 4.项目…...

【Docker】搭建一个功能强大的自托管虚拟浏览器 - n.eko

前言 本教程基于群晖的NAS设备DS423的docker功能进行搭建,DSM版本为 DSM 7.2.2-72806 Update 2。 n.eko 支持多种类型浏览器在其虚拟环境中运行,本次教程使用 Chromium​ 浏览器镜像进行演示,支持访问内网设备和公网地址。 简介 n.eko 是…...

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证7)

本文验证基于请求头中传递token信息的认证方式,webapi项目的控制器类中新建如下函数,仅通过验证的客户端能调用,需要客户端请求在Header中添加’Authorization’: Bearer token’的键值对且通过token验证后才能调用。 [Authorize] [HttpGet]…...

Linux 内核自旋锁spinlock(一)

文章目录 前言一、自旋锁1.1 简介1.2 API1.2.1 spin_lock/spin_unlock1.2.2 spin_lock_irq/spin_unlock_irq1.2.3 spin_lock_irqsave/spin_unlock_irqstore1.2.4 spin_lock_bh/spin_unlock_bh1.2.5 补充 二、自选锁原理三、自旋锁在内核的使用3.1 struct file3.2 struct dentry…...

JAVA 使用反射比较对象属性的变化,记录修改日志。使用注解【策略模式】,来进行不同属性枚举值到中英文描述的切换,支持前端国际化。

1.首先定义一个接口,接口中有两个方法,分别是将属性转换成英文描述和中文描述。 其实就是将数据库中记录的 0 1 ,转换成后面的描述 这边定义了中文转换为默认方法,是因为有些属性不需要进行中文转换,或者该属性的枚举…...

利用免费GIS工具箱实现高斯泼溅切片,将 PLY 格式转换为 3dtiles

在地理信息系统(GIS)和三维数据处理领域,不同数据格式有其独特应用场景与优势。PLY(Polygon File Format)格式常用于存储多边形网格数据,而 3DTiles 格式在 Web 端三维场景展示等方面表现出色。将 PLY 格式…...

Mysql视图(学习自用)

一、概念 二、创建视图 三、查询视图 四、修改视图 五、删除视图 六、视图检查选项 七、视图的更新 八、视图的作用...

企业内训|基于华为昇腾910B算力卡的大模型部署和调优-上海某央企智算中心

近日上海,TsingtaoAI为某央企智算中心交付华为昇腾910B算力卡的大模型部署和调优课程。课程深入讲解如何在昇腾NPU上高效地训练、调优和部署PyTorch与Transformer模型,并结合实际应用场景,探索如何优化和迁移模型至昇腾NPU平台。课程涵盖从模…...

linux下一些参数的说明

/proc/sys/net/corebpf_jit_enable 作用:用于控制是否启用BPF(Berkeley Packet Filter)的即时编译(JIT)功能。当启用该功能时,JIT编译器会将eBPF(extended Berkeley Packet Filter)…...

CKS认证 | Day1 K8s集群部署与安全配置

一、K8s安全运维概述 Kubernetes(K8s) 是一个广泛使用的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。随着 K8s 在生产环境中的普及,安全运维成为确保系统稳定性和数据安全的关键。 1.1 安全运维的重要性 万物互联&…...

新手上路:Anaconda虚拟环境创建和配置以使用PyTorch和DGL

文章目录 前言步骤 1: 安装 Anaconda步骤 2: 创建新的 Anaconda 环境步骤 3: 安装最新版本的 PyTorch步骤 4: 安装特定版本的 PyTorch步骤 5: 安装最新版本的 DGL步骤 6: 安装特定版本的 DGL步骤 7: Pycharm中使用虚拟环境解释器第一种情况:创建新项目第二种情况&am…...

什么是PCB的Mark点?如何进行设计Mark点?

一、什么是Mark点? PCB的Mark点,也被称为基准点或光学定位点,是在印刷电路板(Printed Circuit Board, PCB)上设置的一种特殊标记。 ​ 图1.1 PCB的Mark点 Mark点的主要作用是为表面贴装技术(Surface Mount…...

Spark SQL中的from_json函数详解

Spark SQL中的from_json函数详解 在Spark SQL中,from_json是一个用于解析JSON数据的函数,主要用于将JSON格式的字符串解析为结构化的数据(即StructType或其他Spark SQL数据类型)。这个函数在处理半结构化数据(如JSON日…...

Vue 引入及简单示例

Vue 渐进式JavaScript 框架 学习笔记 - Vue 引入及简单示例 目录 与jquery区别 Vue引入 两种方式引入 下载到本地 代码结构 简单示例 Style中引入vue.js 对vue语法进行解析 对三目运算符支持 设置变量(状态) 总结 与jquery区别 不需要手动操…...

JDK长期支持版本(LTS)

https://blogs.oracle.com/java/post/the-arrival-of-java-23 jdk长期支持版本(LTS):JDK 8、11、17、21:...

审计文件标识作为水印打印在pdf页面边角

目录 说明 说明 将审计文件的所需要贴的编码直接作为水印贴在页面四个角落,节省辨别时间 我曾经写过一个给pdf页面四个角落加上文件名水印的python脚本,现在需要加一个图形界面进一步加强其实用性。首先通过路径浏览指定文件路径,先检测该路…...

图片专栏——概念

欢迎来到图片世界,大家一起学习交流! 1. 像素(Pixel) 定义:像素是图像的最小单位,是“图像元素”的缩写。你可以把像素想象成拼图中的一个最小块,无数个像素组合在一起就形成了完整的图像。作用&#xff…...

江天科技主要产品销售单价下滑,应收账款、存货周转率大幅下降

《港湾商业观察》廖紫雯 日前,苏州江天包装科技股份有限公司(以下简称:江天科技)冲击北交所,保荐机构为国投证券。 江天科技主要从事标签印刷产品的研发、生产与销售,公司主要产品包括薄膜类和纸张类的不…...

HTB:Remote[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用ftp尝试匿名…...

【开源免费】基于SpringBoot+Vue.JS密接者跟踪系统(JAVA毕业设计)

本文项目编号 T 145 ,文末自助获取源码 \color{red}{T145,文末自助获取源码} T145,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

机器学习10-解读CNN代码Pytorch版

机器学习10-解读CNN代码Pytorch版 我个人是Java程序员,关于Python代码的使用过程中的相关代码事项,在此进行记录 文章目录 机器学习10-解读CNN代码Pytorch版1-核心逻辑脉络2-参考网址3-解读CNN代码Pytorch版本1-MNIST数据集读取2-CNN网络的定义1-无注释版…...

Python 电脑定时关机工具

Python 电脑定时关机工具 相关资源文件已经打包成EXE文件,可双击直接运行程序,且文章末尾已附上相关源码,以供大家学习交流,博主主页还有更多Python相关程序案例,秉着开源精神的想法,望大家喜欢&#xff0c…...

机器学习09-Pytorch功能拆解

机器学习09-Pytorch功能拆解 我个人是Java程序员,关于Python代码的使用过程中的相关代码事项,在此进行记录 文章目录 机器学习09-Pytorch功能拆解1-核心逻辑脉络2-个人备注3-Pytorch软件包拆解1-Python有参和无参构造构造方法的基本语法示例解释注意事项…...

Qt之QDjango-db的简单使用

QDjango是一款由C编写、依托于Qt库的Web开发框架,其设计理念受到了广受欢迎的Python框架Django的影响。这个项目旨在提供一个高效、灵活且易于使用的工具集,帮助开发者构建高质量的Web应用。其项目地址: https://gitcode.com/gh_mirrors/qd/qdjango&…...

滑动窗口最大值(力扣239)

刚拿到这道题,我们第一反应就是遍历每一个滑动窗口,然后在滑动窗口中遍历找到该窗口的最大值,但是这样的时间复杂度为O(k*n).有没有更简单的方法呢?答案是使用队列。更准确的说是双向队列。下面我将详细讲解一下如何使用双向队列解决这道问题…...

HTTP / 2

序言 在之前的文章中我们介绍过了 HTTP/1.1 协议,现在再来认识一下迭代版本 2。了解比起 1.1 版本,后面的版本改进在哪里,特点在哪里?话不多说,开始吧⭐️! 一、 HTTP / 1.1 存在的问题 很多时候新的版本的…...

Python 脚本-显示给定文件的文件信息

目录 Python 代码实现 Python 代码解释 1.导入必要的模块: 2.函数 get_file_info: 3.函数 print_file_info: 4.主函数 main: 5.程序入口: 使用方法 Python 代码实现 import os import stat import sys import…...

C# 通用缓存类开发:开启高效编程之门

引言 嘿,各位 C# 开发者们!在当今快节奏的软件开发领域,提升应用程序的性能就如同给跑车装上涡轮增压,能让你的项目在激烈的竞争中脱颖而出。而构建一个高效的 C# 通用缓存类,无疑是实现这一目标的强大武器。 想象一…...

Mac安装Homebrew

目录 安装修改homeBrew源常用命令安装卸载软件升级软件相关清理相关 安装 官网 https://brew.sh/不推荐官网安装方式(很慢很慢或者安装失败联网失败) 检测是否安装homebrewbrew -v执行安装命令 苹果电脑 常规安装脚本 (推荐 完全体 几分钟就…...

MySQL面试题2025 每日20道【其四】

1、你们生产环境的 MySQL 中使用了什么事务隔离级别?为什么? 中等 在生产环境中,MySQL数据库的事务隔离级别通常由开发团队或数据库管理员根据应用的需求来设定。MySQL支持四种标准的事务隔离级别: 读未提交(Read Unc…...

maven 微服务项目多 包版本问题

mvn dependency:tree查看jar包直接的关系 找到重复的包!!!! 可以查看包版本问题 [INFO] | - org.jpedal:OpenViewerFX:jar:6.6.14:compile [INFO] | | - org.eclipse.birt.runtime.3_7_1:org.mozilla.javascript:jar:1.7.2:compile [INFO] | | - bouncycastle:bcprov-j…...

skipcrossnets模型详解及代码复现

模型背景 在SkipcrossNets模型提出之前,多模态融合在自动驾驶领域已取得显著进展。然而,传统的两流网络仅在特定层进行融合,需要大量人工尝试来设置,并且随着网络深度增加,模态特征差异增大,容易影响性能。 为解决这些问题,研究人员开发了SkipcrossNets模型,旨在提供…...

【0397】Postgres内核 checkpoint process ⑦ 获取 delaying checkpoint VXIDs(delayChkpt)

1. Top-level transactions 顶级事务(Top-level transactions)通过由 PGPROC 字段 backendId 和 lxid 组成的 VirtualTransactionIDs 来标识。对于已准备的事务,LocalTransactionId 是一个普通的 XID。这些在短期内保证唯一,但在数据库重启或 XID 滚转后会被重新使用;因此…...

Go语言-学习一

简介:Go语言经过多年的快速发展,已经被光广泛应用到各个领域,成为当前最热的计算机语言之一。Go自带许多高级特性及常用工具,使Go一出世就以高并发和高性能为程序员所追捧。 go语言特点 1、静态类型、编译型、开源 2、脚本化&…...

学习记录-统计记录场景下的Redis写请求合并优化实践

学习记录-使用Redis合并写请求来优化性能 1.业务背景 学习进度的统计功能:为了更精确的记录用户上一次播放的进度,采用的方案是:前端每隔15秒就发起一次请求,将播放记录写入数据库。但问题是,提交播放记录的业务太复杂了&#x…...

Java中json的一点理解

一、Java中json字符串与json对象 1、json本质 json是一种数据交换格式。 常说的json格式的字符串 > 发送和接收时都只是一个字符串,它遵循json这种格式。 2、前后端交互传输的json是什么? 前后端交互传输的json都是json字符串 比如:…...

用于牙科的多任务视频增强

Multi-task Video Enhancement for Dental Interventions 2022 miccai Abstract 微型照相机牢牢地固定在牙科手机上,这样牙医就可以持续地监测保守牙科手术的进展情况。但视频辅助牙科干预中的视频增强减轻了低光、噪音、模糊和相机握手等降低视觉舒适度的问题。…...

二、vue智能Ai对话(高仿通义千问)流式进阶版

1、安装依赖、启动 // 安装依赖 npm install // 启动服务 node server.js 2、浏览器运行html 3、流式进阶版视频地址:流式进阶版视频 4、各位如有需要,请下载源码包。...

Python新春烟花

目录 系列文章 写在前面 技术需求 完整代码 下载代码 代码分析 1. 程序初始化与显示设置 2. 烟花类 (Firework) 3. 粒子类 (Particle) 4. 痕迹类 (Trail) 5. 烟花更新与显示 6. 主函数 (fire) 7. 游戏循环 8. 总结 注意事项 写在后面 系列文章 序号直达链接爱…...

《自动驾驶与机器人中的SLAM技术》ch4:基于预积分和图优化的 GINS

前言:预积分图优化的结构 1 预积分的图优化顶点 这里使用 《自动驾驶与机器人中的SLAM技术》ch4:预积分学 中提到的散装的形式来实现预积分的顶点部分,所以每个状态被分为位姿()、速度、陀螺零偏、加计零偏四种顶点&am…...

「2024·我的成长之路」:年终反思与展望

文章目录 1. 前言2.创作历程2.1 摆烂期2.2 转变期3. 上升期 2. 个人收获3.经验分享4. 展望未来 1. 前言 2025年1月16日,2024年博客之星入围公布,很荣幸获得了这次入围的机会。2024年对我个人是里程碑的一年,是意义非凡的一年,是充…...

P8738 [蓝桥杯 2020 国 C] 天干地支

两种方法 #include<bits/stdc.h> using namespace std;int main(){int year;cin>>year;string tg[10] {"geng", "xin", "ren", "gui","jia", "yi", "bing", "ding", "wu&…...