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

MySQL索引覆盖(覆盖索引, Covering Index)

文章目录

  • 说明
  • MySQL索引覆盖(覆盖索引, Covering Index)
    • 覆盖索引的概念
    • 覆盖索引的示例
    • 示例查询及索引覆盖情况
    • 覆盖索引的性能优势
    • 覆盖索引的实现条件
    • 覆盖索引 vs 非覆盖索引
    • 覆盖索引的限制
    • 如何设计覆盖索引
    • 覆盖索引的实际案例
      • 场景 1:电商系统中的订单查询
      • 场景 2:博客系统中的文章搜索
    • 总结

说明

  • 本文章内容由chatGpt4对话内容整理而来,如有错误之处,请在评论区留言!

MySQL索引覆盖(覆盖索引, Covering Index)

  • 索引覆盖 是指查询所需的所有列的数据都可以通过索引直接获取,而无需访问表中的实际数据行(即无需回表)。
  • 当查询满足索引覆盖的条件时,MySQL 可以只通过读取索引完成查询操作,从而显著提高查询性能。

覆盖索引的概念

  • 索引覆盖是指查询所涉及的字段(SELECT 的字段以及 WHERE、GROUP BY、ORDER BY 的字段)都被索引包含。如果查询中的所有字段都能从索引中获取,那么 MySQL 就可以直接在索引中返回结果,而不需要访问数据行。
  • 索引通常存储在一个更加紧凑的结构中,数据量较小,访问效率更高。避免了 “回表” 的开销(回表是指通过主键从聚簇索引或数据页中获取数据)。

覆盖索引的示例

假设有一个表 users

CREATE TABLE users (id INT PRIMARY KEY,         -- 主键name VARCHAR(50),           -- 用户名email VARCHAR(50),          -- 邮箱age INT,                    -- 年龄INDEX idx_name_email (name, email) -- 联合索引
);

示例查询及索引覆盖情况

  1. 索引覆盖的情况
    SELECT name, email FROM users WHERE name = 'Alice';
    
    • 索引 idx_name_email 包含 nameemail,查询的字段完全被索引覆盖。
    • MySQL 可以直接从索引中返回结果,无需访问实际表数据。
  2. 索引不覆盖的情况
    SELECT name, email, age FROM users WHERE name = 'Alice';
    
    • 索引 idx_name_email 包含了 nameemail,但不包含 age
    • 查询时,MySQL 会从索引中找到符合 name = 'Alice' 的记录,然后通过主键回表查找 age 字段。
  3. 索引部分使用的情况
    SELECT email FROM users WHERE name = 'Alice';
    
    • 查询使用索引 idx_name_emailname 列作为过滤条件,并获取email 列。这依然属于索引覆盖查询,因为所需的字段都在索引中。

覆盖索引的性能优势

  1. 减少 I/O 操作:索引通常比表数据小得多,且索引存储是紧凑的树形结构(例如 B+ 树),查询效率更高。如果可以直接从索引中获取数据,就不需要回表,大大减少磁盘 I/O。
  2. 提高查询速度:查询只在索引层完成,无需访问表的实际数据行。避免了读取大量不必要的表数据。
  3. 降低锁定范围:如果查询在索引中即可完成,可以减少对数据行的访问,从而降低行锁或表锁的影响。

覆盖索引的实现条件

  1. 必须有适当的索引
    • 覆盖索引依赖于索引的列包含了查询所需的所有字段。
    • 可以是单列索引,也可以是多列的联合索引。
  2. 选择性字段的优先设计
    • 查询中频繁用到的过滤条件(WHERE)或查询字段(SELECT)应优先设计为索引。
  3. InnoDB 表中的聚簇索引
    • InnoDB 存储引擎的主键索引是聚簇索引(clustered index),主键包含了实际行数据。
    • 如果查询字段只涉及主键索引,天然满足覆盖索引的条件。

覆盖索引 vs 非覆盖索引

特性覆盖索引非覆盖索引
是否回表无需回表,所有数据直接从索引中获取需要回表,从索引获取主键后再查找表数据
查询效率高,减少 I/O 操作较低,增加 I/O 操作
索引列要求查询字段必须全部在索引中查询字段不要求全部在索引中
常见场景多用于 SELECT 查询查询字段较多或数据更新频繁时更常见

覆盖索引的限制

  1. 查询字段必须包含在索引中:如果查询字段超出索引的覆盖范围,MySQL 必须回表获取缺失的数据。
  2. 索引过多会影响写性能:为了覆盖索引而创建大量的索引,可能会降低数据的写入速度,因为每次写操作都需要维护多个索引。
  3. 不支持全字段匹配模糊查询:如果查询条件涉及 LIKE '%xxx' 或非前缀模糊匹配的字段,覆盖索引无法发挥作用。
  4. 大字段类型的限制:索引中不适合存储大字段(如 TEXT、BLOB),这些字段通常不会被用于覆盖索引。

如何设计覆盖索引

  1. 常用查询字段优先索引
    • 优先为 WHERE、ORDER BY 和 SELECT 中频繁出现的字段建立索引。
    • 如果查询字段较少,可以通过适当调整索引覆盖范围来满足覆盖索引的条件。
  2. 联合索引优化:联合索引(多列索引)设计时,要注意字段顺序,优先将过滤条件的列放在前面。
  3. 避免过度索引:虽然覆盖索引可以提升查询性能,但索引维护的开销也需要考虑,过多的索引可能导致写性能下降。

覆盖索引的实际案例

场景 1:电商系统中的订单查询

表结构:

CREATE TABLE orders (order_id INT PRIMARY KEY,user_id INT NOT NULL,order_date DATE NOT NULL,total_amount DECIMAL(10, 2) NOT NULL,INDEX idx_user_date_amount (user_id, order_date, total_amount)
);

查询:

SELECT user_id, order_date, total_amount
FROM orders
WHERE user_id = 123 AND order_date >= '2023-01-01';

优化:

  • 索引 idx_user_date_amount 覆盖了所有查询字段。
  • 查询可直接从索引中返回结果,无需回表。

场景 2:博客系统中的文章搜索

表结构:

CREATE TABLE posts (post_id INT PRIMARY KEY,title VARCHAR(255),content TEXT,author_id INT,created_at DATETIME,INDEX idx_author_created (author_id, created_at)
);

查询:

SELECT author_id, created_at
FROM posts
WHERE author_id = 1 AND created_at > '2023-01-01';

优化:

  • 索引 idx_author_created 包含 author_idcreated_at
  • 查询字段被索引完全覆盖,可以通过覆盖索引加速查询。

总结

  • 覆盖索引 是 MySQL 中的一种性能优化技术,当查询所需的字段完全被索引覆盖时,MySQL 可以直接通过索引返回结果,避免回表操作。
  • 它的主要优势是 减少 I/O、提高查询速度,尤其适用于读操作较多的场景。
  • 设计覆盖索引时应结合实际查询需求,合理选择索引列,同时避免过多索引对写性能造成负面影响。

相关文章:

MySQL索引覆盖(覆盖索引, Covering Index)

文章目录 说明MySQL索引覆盖(覆盖索引, Covering Index)覆盖索引的概念覆盖索引的示例示例查询及索引覆盖情况覆盖索引的性能优势覆盖索引的实现条件覆盖索引 vs 非覆盖索引覆盖索引的限制如何设计覆盖索引覆盖索引的实际案例场景 1:电商系统…...

VUE3 provide 和 inject,跨越多层级组件传递数据

provide 和 inject 是 Vue 3 提供的 API,主要用于实现祖先组件与后代组件之间的依赖注入。它们可以让你在组件树中,跨越多层组件传递数据,而不需要通过 props 或事件的方式逐层传递。这个机制主要用于状态共享、插件系统或某些跨层级的功能。…...

【UE5 C++课程系列笔记】29——在UE中使用第三方库的流程

目录 前言 步骤 一、新建插件 二、创建第三方库 三、使用第三方库 前言 主要就是介绍如何将普通C++工程生成的头文件和.dll导入到UE中去使用。 步骤 一、新建插件 1. 打开插件浏览器选项卡 2. 打开插件创建器 3. 选择“第三方库”,这里命名为“MyThirdPartyLibrary…...

Type-C双屏显示器方案

在数字化时代,高效的信息处理和视觉体验已成为我们日常生活和工作的关键需求。随着科技的进步,一款结合了便携性和高效视觉输出的设备——双屏便携屏,逐渐崭露头角,成为追求高效工作和娱乐体验人群的新宠。本文将深入探讨双屏便携…...

20250112面试鸭特训营第20天

更多特训营笔记详见个人主页【面试鸭特训营】专栏 250112 1. TCP 和 UDP 有什么区别? 特性TCPUDP连接方式面向连接(需要建立连接)无连接(无需建立连接)可靠性可靠的,提供确认、重传机制不可靠&#xff0c…...

使用conda出现requests.exceptions.HTTPError 解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...

玩转大语言模型——langchain调用ollama视觉多模态语言模型

系列文章目录 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 langchain调用ollama视觉多模态语言模型 系列文章目录前言使用Ollama下载模型查找模型下载模型 测试模型ollama测试langchain测试加载图片加载模型…...

【玩转MacBook】mdfind命令搜索

mdfind 是 macOS 上的一个命令行工具,它允许用户根据元数据来查找文件。mdfind 使用 Spotlight 索引来快速搜索文件系统中的项目。这意味着它可以非常快地找到文件,因为它不直接在磁盘上搜索,而是查询由 Spotlight 维护的索引数据库。 基本用…...

数据结构与算法之二叉树: LeetCode 637. 二叉树的层平均值 (Ts版)

二叉树的层平均值 https://leetcode.cn/problems/average-of-levels-in-binary-tree/description/ 描述 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值与实际答案相差 1 0 − 5 10^{-5} 10−5 以内的答案可以被接受 示例 1 输入:root…...

【巨实用】Git客户端基本操作

本文主要分享Git的一些基本常规操作,手把手教你如何配置~ ● 一个文件夹中初始化Git git init ● 为了方便以后提交代码需要对git进行配置(第一次使用或者需求变更的时候),告诉git未来是谁在提交代码 git config --global user.na…...

从预训练的BERT中提取Embedding

文章目录 背景前置准备思路利用Transformer 库实现 背景 假设要执行一项情感分析任务,样本数据如下 可以看到几个句子及其对应的标签,其中1表示正面情绪,0表示负面情绪。我们可以利用给定的数据集训练一个分类器,对句子所表达的…...

BGP 泄露

大家读完觉得有帮助记得关注和点赞!!! 目录 1. BGP 是什么? 2. 什么是 BGP 泄露? 3. 今天发生了什么? 4. 正常和被劫持状态下的路由示意图 5. 受影响区域 6. 责任在谁? 7. 有办法避免这…...

IntelliJ IDEA和MAVEN基本操作:项目和缓存存储到非C盘

为了将 IntelliJ IDEA 的所有项目和缓存存储到 C 盘以外的地方,以下是你需要调整的设置和步骤: 1. 更改项目默认存储位置 打开 IntelliJ IDEA。点击顶部菜单的 File > Settings (Windows)或 IntelliJ IDEA > Preferences &…...

Leetcode 3418. Maximum Amount of Money Robot Can Earn

Leetcode 3418. Maximum Amount of Money Robot Can Earn 1. 解题思路2. 代码实现 题目链接:3418. Maximum Amount of Money Robot Can Earn 1. 解题思路 这一题我的思路比较暴力,就是一个动态规划,本质上就是全量遍历,然后找到…...

occ的开发框架

occ的开发框架 1.Introduction This manual explains how to use the Open CASCADE Application Framework (OCAF). It provides basic documentation on using OCAF. 2.Purpose of OCAF OCAF (the Open CASCADE Application Framework) is an easy-to-use platform for ra…...

SYS_OP_MAP_NONNULL NULL的等值比较

无意在数据库中发现了这个操作SYS_OP_MAP_NONNULL。 SYS_OP_MAP_NONNULL应该不是数据库中的对象,因为在DBA_OBJECTS中根本找不到它,而在STANDARD和DBMS_STANDARD包中也找不到函数说明。 SQL> SELECT * 2 FROM DBA_OBJECTS 3 WHERE OBJECT_NAME…...

acwing_3196_I‘m stuck

acwing_3196_I’m stuck // // Created by HUAWEI on 2024/11/17. // #include<iostream> #include<cstring> #include<algorithm>using namespace std;const int N 50 5; char g[N][N];// 地图 bool str1[N][N], str2[N][N]; // 判断1&#xff0c;判断2 …...

C++实现设计模式---状态模式 (State)

状态模式 (State) 状态模式 是一种行为型设计模式&#xff0c;它允许对象在运行时根据内部状态的改变来动态改变其行为。通过将状态相关的行为封装到独立的类中&#xff0c;状态模式使得状态的切换更加清晰和灵活。 意图 将对象的行为和状态分离&#xff0c;随着状态的改变动…...

【1】Word:邀请函

目录 题目 文字解析 流程 题目 文字解析 考生文件夹☞Word.docx☞一定要用ms打开&#xff0c;wps打开作答无效☞作答完毕&#xff0c;F12或者手动另存为&#xff08;考生文件夹&#xff1a;路径文件名&#xff09; 注意&#xff1a;一定要检查&#xff0c;很有可能你前面步…...

作业(一)

1、shell 脚本写出检测 /tmp/size.log 文件如果存在显示它的内容&#xff0c;不存在则创建一个文件将创建时间写入。 # vim a.sh#!/bin/bash​#先对文件/tmp/size.log 是否存在进行判断 if [ -f /tmp/size.log ]; #如果存在&#xff0c;则用cat命令显示文件内容thencat /tmp/…...

[SAP ABAP] APPEND INITIAL LINE 追加空行

语法格式 APPEND INITIAL LINE TO itab.示例1 SFLIGHT(航班) 输出结果&#xff1a; 示例2 我们可以使用下面的语法进行内表分配指针&#xff0c;追加空行并赋值的操作 APPEND INITIAL LINE TO lt_tab ASSIGNING FIELD-SYMBOL(<lfs_val>). REPORT z437_test_2025.* 自…...

Meilisearch ASP.Net Core API 功能demo

安装 MeiliSearch 0.15.5 0.15.5demo code using Meilisearch; using System.Data; using System.Text.Json; using System.Text.Json.Serialization;namespace MeiliSearchAPI {public class MeilisearchHelper{public MeilisearchHelper(){DefaultClient…...

口碑很好的国产LDO芯片,有哪些?

在几乎任何一个电路设计中&#xff0c;都可能会使用LDO&#xff08;低压差线性稳压器&#xff09;这个器件。 虽然LDO不是什么高性能的IC&#xff0c;但LDO芯片市场竞争异常激烈。最近几年&#xff0c;诞生了越来越多的精品国产LDO&#xff0c;让人看得眼花缭乱。 业内人士曾经…...

深入浅出C#线程池ThreadPool:提升程序性能的利器

深入浅出C#线程池ThreadPool&#xff1a;提升程序性能的利器 在C#编程中&#xff0c;线程是并发编程的基石&#xff0c;它使我们能够同时执行多个任务&#xff0c;提升程序的响应速度和效率。然而&#xff0c;直接创建和管理线程会带来一定的开销&#xff0c;例如线程创建和销…...

git问题

拉取项目代码后&#xff0c;出现 1、找回未commit的代码 2、记录不全&#xff0c;只是显示部分代码记录...

Code-Server 项目介绍与部署指南

搜索关注&#xff0c;分享更多有趣的知识。 在这里插入图片描述 1. 概述 GitHub&#xff1a; https://github.com/coder/code-server 在日常学习和工作中&#xff0c;Visual Studio Code&#xff08;VSCode&#xff09;已成为许多开发者的首选代码编辑器。然而&#xff0c;其…...

NAT技术

NAT技术 1. NAT原理 NAT&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09;是用于在本地网络中使用私有地址&#xff0c;在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决IPv4地址短缺而开发的技术。路由器构建了子网&#xff0c;将…...

pytest 常用插件

pytest 提供了许多功能强大的插件来增强测试体验和执行能力。以下是一些常用的 pytest 插件介绍&#xff0c;并结合 pytest.main() 进行使用的示例。 1. pytest-xdist pytest-xdist 插件用于并行化测试的执行&#xff0c;可以将测试分配到多个 CPU 核心并行运行&#xff0c;从…...

Avalonia 入门笔记(零):概述

Avalonia 是一个基于 .NET 和 Skia 的开源、跨平台 UI 框架&#xff0c;支持 Windows、Linux、macOS、iOS、Android 和 WebAssembly。Skia 是一个基于 C 的开源 2D 渲染引擎&#xff0c;Avalonia 通过 Skia 自绘 UI 控件&#xff0c;保证在全平台具有一致的观感 基于 .NET 的跨…...

19_TypeScript 声明文件 --[深入浅出 TypeScript 测试]

TypeScript 声明文件&#xff08;.d.ts 文件&#xff09;用于描述 JavaScript 库或模块的类型信息&#xff0c;使得 TypeScript 编译器能够在使用这些库时提供类型检查和智能感知。声明文件并不包含任何实现代码&#xff0c;只定义了接口、类、函数等的类型签名。这对于确保类型…...

如何当前正在运行的 Elasticsearch 集群信息

要查看当前正在运行的 Elasticsearch 集群信息&#xff0c;可以通过以下几种方法&#xff1a; 1. 使用 _cluster/health API _cluster/health API 返回集群的健康状态、节点数量、分片状态等信息。可以用 curl 命令直接访问&#xff1a; curl -X GET "http://localhost…...

【ArcGIS微课1000例】0138:ArcGIS栅格数据每个像元值转为Excel文本进行统计分析、做图表

本文讲述在ArcGIS中,以globeland30数据为例,将栅格数据每个像元值转为Excel文本,便于在Excel中进行统计分析。 文章目录 一、加载globeland30数据二、栅格转点三、像元值提取至点四、Excel打开一、加载globeland30数据 打开配套实验数据包中的0138.rar中的tif格式栅格土地覆…...

【hadoop学习遇见的小问题】centos常见配置 添加组用户权限 修改主机名等

1、指定静态ip vi /etc/sysconfig/network-scripts/ifcfg-eth0修改BOOTPROTO为static BOOTPROTOstatic IPADDR192.168.80.145 NETMASK255.255.255.0 GATEWAY192.168.80.2IPADDR、NETMASK用ifconfig命令即可查看 GATEWAY如何查看&#xff08;编辑—虚拟网络编辑器—上面选择NA…...

16_Redis Lua脚本

Redis Lua脚本是Redis提供的一种强大的扩展机制。 1.Redis Lua脚本介绍 1.1 基本概念 Redis Lua脚本允许开发者将一段Lua语言编写的代码发送给Redis服务器执行。这项功能自Redis 2.6版本引入以来,为用户提供了强大的灵活性和扩展能力,使得可以在Redis内部直接处理复杂的业…...

Appium版本升级,需要注意哪些点:使用UiAutomator2Options传递capabilities

mac上安装的是较新的Appium版本&#xff0c;在跑之前写的Android UI 自动化代码时报错&#xff1a;AttributeError: dict object has no attribute to_capabilities。 查了一下资料&#xff0c;这是因为较新的 Selenium 和 Appium 版本要求使用 Options 类来定义能力&#xff…...

MySQL的增删改查(基础)-下篇

修改 真正在改硬盘了&#xff0c;这样的修改是“持久有效”。一定要确保&#xff0c;update的修改是改对了&#xff0c;改出问题来就麻烦。指定update的时候&#xff0c;如果当前不指定任何条件&#xff0c;就会针对所有的行都能生效&#xff01; (把整个表都给改了)。 案例 --…...

Mysql--基础篇--事务(ACID特征及实现原理,事务管理模式,隔离级别,并发问题,锁机制,行级锁,表级锁,意向锁,共享锁,排他锁,死锁,MVCC)

在MySQL中&#xff0c;事务&#xff08;Transaction&#xff09;是一组SQL语句的集合&#xff0c;这些语句一起被视为一个单一的工作单元。事务具有ACID特性&#xff0c;确保数据的一致性和完整性。通过事务&#xff0c;可以保证多个操作要么全部成功执行&#xff0c;要么全部不…...

Android系统定制APP开发_如何对应用进行系统签名

前言 当项目开发需要使用系统级别权限或frame层某些api时&#xff0c;普通应用是无法使用的&#xff0c;需要在AndroidManifest中配置sharedUserId&#xff1a; AndroidManifest.xml中的android:sharedUserId“android.uid.system”&#xff0c;代表的意思是和系统相同的uid&a…...

Vue篇-06

1、路由简介 vue-rooter&#xff1a;是vue的一个插件库&#xff0c;专门用来实现SPA应用 1.1、对SPA应用的理解 1、单页 Web 应用&#xff08;single page web application&#xff0c;SPA&#xff09;。 2、整个应用只有一个完整的页面 index.html。 3、点击页面中的导航链…...

学习threejs,导入wrl格式的模型

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.VRMLLoader wrl模型加…...

winform第三方界面开源库AntdUI的使用教程保姆级环境设置篇

1. AntdUI 1.1. 导入项目 1.1.1. 首先新建一个空白的基于.net的Winfrom项目1.1.2. 复制AntdUI中src目录到我们的解决方案下面1.1.3. 解决方案下添加现有项目1.1.4. 添加项目引用 1.2. 编写代码 1.2.1. 改写Form1类&#xff0c;让其继承自public partial class Form1 : AntdUI.W…...

likeshop同城跑腿系统likeshop回收租赁系统likeshop多商户商城安装及小程序对接方法

前言&#xff1a;首先likeshop是一个开发平台&#xff0c;是一个独创的平台就像TP内核平台一样&#xff0c;你可以在这个平台上开发和衍生出很多伟大的产品&#xff0c;以likeshop为例&#xff0c;他们开发出商城系统&#xff0c;团购系统&#xff0c;外卖点餐系统&#xff0c;…...

java -jar启动项目报错:XXX.jar中没有主清单属性

XXX.jar中没有主清单属性 1、错误复现2、错误原因3、解决方案 java -jar启动项目报错&#xff1a;XXX.jar中没有主清单属性 1、错误复现 今天使用springboot给项目打了jar包&#xff0c;使用命令启动时报错&#xff0c;截图如下&#xff1a; 2、错误原因 项目的pom文件配置如…...

浅谈云计算03 | 云计算的技术支撑(云使能技术)

云计算的技术支撑 一、定义与内涵1.1 定义与内涵 二、云计算使能技术架构2.1 宽带网络和 Internet 架构2.2 数据中心技术2.3 虚拟化技术2.4 Web 技术2.5 多租户技术2.6 服务技术 一、定义与内涵 1.1 定义与内涵 云计算技术包含一些基础的关键技术&#xff0c;这里称为使能技术…...

使用LinkedList手撕图的邻接表

主要是学习图的邻接表的核心结构等等&#xff0c;话不多说直接上代码&#xff1a; import java.util.LinkedList;public class GrapAdj {private int n ; // 表示图中顶点的数量。private LinkedList<Integer>[] adj;public GrapAdj(int n){this.n n;adj new LinkedLis…...

学习RocketMQ

1.为什么要用MQ&#xff1f; 消息队列是一种“先进先出”的数据结构 其应用场景主要包含以下4个方面&#xff1a; 1.1 异步解耦​ 最常见的一个场景是用户注册后&#xff0c;需要发送注册邮件和短信通知&#xff0c;以告知用户注册成功。传统的做法有以下两种&#xff1a; …...

sap mm学习笔记

1. 业务流程 2. 组织架构 3. 物料主数据 4.采购主数据 5. 采购管理 6. 库存管理 7.物料主数据 8. 采购申请 ME51N...

Dockerfile 构建java镜像并运行部署java项目

目录 1. 前提准备 2. 什么是Dockerfile 3. 步骤 3.1. 创建目录 3.2. 编写dockerfile文件 3.3. 构建镜像 3.4. 运行容器 3.5. 验证 4. 总结 1. 前提准备 (1) 准备一个jar打包文件,已为大家准备(我这里的包名为 app.jar) 资源链接&#xff0c;点我下载 (2) 已经下载…...

【C语言系列】函数递归

函数递归 一、递归是什么&#xff1f;1.1尾递归 二、递归的限制条件三、递归举例3.1举例一&#xff1a;求n的阶乘3.2举例二&#xff1a;顺序打印一个整数的每一位 四、递归与迭代4.1举例三&#xff1a;求第n个斐波那契数 五、拓展学习青蛙跳台问题 一、递归是什么&#xff1f; …...

windows10 安装 Golang 版本控制工具g与使用

下载包&#xff1a;https://github.com/voidint/g/releases 解压&#xff0c; 并添加到环境变量 g 常用命令 查询当前可供安装的stable状态及所有的 go 版本 # stable 版本 g ls-remote stable# 所有版本 g ls-remote安装目标 go 版本1.23.4g install 1.23.4切换到已安装的…...