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

【数据库】如何用索引优化查询性能

引言

在数据库查询中,索引是提升性能的关键工具。合理使用索引可以显著减少数据扫描量,加快查询速度。然而,索引的使用也需要谨慎,错误的索引策略可能导致性能下降甚至系统崩溃。本文将深入探讨如何通过索引优化查询性能,结合实际案例,帮助开发者和数据库管理员更好地理解和应用索引技术。


索引的基本原理

索引是数据库中的一种数据结构,类似于书籍的目录,用于快速定位数据。常见的索引类型包括:

  1. B-Tree索引:适用于等值查询和范围查询。
  2. 哈希索引:适用于等值查询,但不支持范围查询。
  3. 全文索引:适用于文本搜索。
  4. 复合索引:基于多个字段的索引。

索引的核心作用是通过减少数据扫描量,提升查询效率。然而,索引也会增加数据插入、更新和删除的开销,因此需要权衡利弊。


索引优化查询的常见场景与案例

1:单字段查询优化

案例:根据用户ID查询用户信息。
SQL代码:

-- 优化前  
SELECT * FROM users WHERE id = 100;  -- 优化后  
CREATE INDEX idx_user_id ON users(id);  
SELECT * FROM users WHERE id = 100;  

说明:未使用索引时,数据库需要全表扫描。创建索引后,查询速度大幅提升。


场景2:多字段查询优化

案例:根据用户姓名和邮箱查询用户信息。
SQL代码:

-- 优化前  
SELECT * FROM users WHERE name = 'Alice' AND email = 'alice@example.com';  -- 优化后  
CREATE INDEX idx_user_name_email ON users(name, email);  
SELECT * FROM users WHERE name = 'Alice' AND email = 'alice@example.com';  

说明:复合索引可以同时优化多个字段的查询性能。


场景3:范围查询优化

案例:查询2025年3月1日至2025年3月31日的订单。
SQL代码:

-- 优化前  
SELECT * FROM orders WHERE order_date BETWEEN '2025-03-01' AND '2025-03-31';  -- 优化后  
CREATE INDEX idx_order_date ON orders(order_date);  
SELECT * FROM orders WHERE order_date BETWEEN '2025-03-01' AND '2025-03-31';  

说明:范围查询可以通过B-Tree索引优化,减少数据扫描量。


场景4:排序查询优化

案例:按用户注册时间降序查询用户信息。
SQL代码:

-- 优化前  
SELECT * FROM users ORDER BY register_date DESC;  -- 优化后  
CREATE INDEX idx_register_date ON users(register_date);  
SELECT * FROM users ORDER BY register_date DESC;  

说明:排序查询可以通过索引避免全表扫描和额外的排序操作。


场景5:分组查询优化

案例:统计每个城市的用户数量。
SQL代码:

-- 优化前  
SELECT city, COUNT(*) FROM users GROUP BY city;  -- 优化后  
CREATE INDEX idx_city ON users(city);  
SELECT city, COUNT(*) FROM users GROUP BY city;  

说明:分组查询可以通过索引减少数据扫描和排序的开销。


场景6:覆盖索引优化

案例:查询用户ID和姓名。
SQL代码:

-- 优化前  
SELECT id, name FROM users;  -- 优化后  
CREATE INDEX idx_user_id_name ON users(id, name);  
SELECT id, name FROM users;  

说明:覆盖索引直接从索引中获取数据,避免访问表数据,提升性能。


场景7:避免索引失效

案例:查询2025年3月17日的订单。
SQL代码:

-- 优化前  
SELECT * FROM orders WHERE DATE(order_date) = '2025-03-17';  -- 优化后  
SELECT * FROM orders WHERE order_date BETWEEN '2025-03-17 00:00:00' AND '2025-03-17 23:59:59';  

说明:在WHERE子句中使用函数会导致索引失效,优化后使用范围查询,提升性能。


场景8:联合查询优化

案例:查询用户及其订单信息。
SQL代码:

-- 优化前  
SELECT * FROM users u, orders o WHERE u.id = o.user_id;  -- 优化后  
CREATE INDEX idx_user_id ON users(id);  
CREATE INDEX idx_order_user_id ON orders(user_id);  
SELECT * FROM users u JOIN orders o ON u.id = o.user_id;  

说明:联合查询可以通过索引优化连接字段,提升查询效率。


场景9:模糊查询优化

案例:查询邮箱以“alice”开头的用户。
SQL代码:

-- 优化前  
SELECT * FROM users WHERE email LIKE 'alice%';  -- 优化后  
CREATE INDEX idx_email ON users(email);  
SELECT * FROM users WHERE email LIKE 'alice%';  

说明:模糊查询可以通过索引优化,但需注意LIKE模式的开头是否固定。


场景10:分页查询优化

案例:查询第11到20条订单记录。
SQL代码:

-- 优化前  
SELECT * FROM orders;  -- 优化后  
CREATE INDEX idx_order_date ON orders(order_date);  
SELECT * FROM orders ORDER BY order_date LIMIT 10 OFFSET 10;  

说明:分页查询可以通过索引优化排序字段,减少数据扫描量。


场景11:唯一性约束优化

案例:确保用户邮箱唯一。
SQL代码:

-- 优化前  
ALTER TABLE users ADD CONSTRAINT unique_email UNIQUE (email);  -- 优化后  
CREATE UNIQUE INDEX idx_unique_email ON users(email);  

说明:唯一性约束可以通过唯一索引实现,同时提升查询性能。


场景12:大数据量查询优化
案例:查询超过100万条记录的用户表。
SQL代码:

-- 优化前  
SELECT * FROM users;  -- 优化后  
CREATE INDEX idx_user_id ON users(id);  
SELECT * FROM users WHERE id BETWEEN 1 AND 1000000;  

说明:大数据量查询可以通过索引分批次处理,避免一次性加载过多数据。


场景13:多表关联查询优化

案例:查询用户、订单和商品信息。
SQL代码:

-- 优化前  
SELECT * FROM users u, orders o, products p WHERE u.id = o.user_id AND o.product_id = p.id;  -- 优化后  
CREATE INDEX idx_user_id ON users(id);  
CREATE INDEX idx_order_user_id ON orders(user_id);  
CREATE INDEX idx_product_id ON products(id);  
SELECT * FROM users u JOIN orders o ON u.id = o.user_id JOIN products p ON o.product_id = p.id;  

说明:多表关联查询可以通过索引优化连接字段,提升查询效率。


场景14:历史数据查询优化

案例:查询2024年之前的订单。
SQL代码:

-- 优化前  
SELECT * FROM orders WHERE order_date < '2024-01-01';  -- 优化后  
CREATE INDEX idx_order_date ON orders(order_date);  
SELECT * FROM orders WHERE order_date < '2024-01-01';  

说明:历史数据查询可以通过索引优化,减少数据扫描量。


场景15:高并发查询优化

案例:高并发场景下查询用户信息。
SQL代码:

-- 优化前  
SELECT * FROM users WHERE id = 100;  -- 优化后  
CREATE INDEX idx_user_id ON users(id);  
SELECT * FROM users WHERE id = 100;  

说明:高并发查询可以通过索引优化,减少数据库负载。


索引使用的注意事项

  1. 避免过度索引:过多的索引会增加写操作的开销,影响系统性能。
  2. 选择合适的索引类型:根据查询需求选择B-Tree、哈希或全文索引。
  3. 定期维护索引:删除未使用的索引,重建碎片化的索引。
  4. 监控索引性能:使用EXPLAIN分析查询计划,确保索引被正确使用。

总结

索引是优化查询性能的重要手段,但需要根据具体场景合理使用。通过单字段索引、复合索引、覆盖索引等策略,可以显著提升查询效率。同时,避免索引失效和过度索引也是优化过程中需要注意的关键点。希望本文的案例和建议能帮助开发者和数据库管理员更好地掌握索引技术,提升系统性能。

相关文章:

【数据库】如何用索引优化查询性能

引言 在数据库查询中&#xff0c;索引是提升性能的关键工具。合理使用索引可以显著减少数据扫描量&#xff0c;加快查询速度。然而&#xff0c;索引的使用也需要谨慎&#xff0c;错误的索引策略可能导致性能下降甚至系统崩溃。本文将深入探讨如何通过索引优化查询性能&#xf…...

【Go每日一练】随机密码生成器

&#x1f47b;创作者&#xff1a;丶重明 &#x1f47b;创作时间&#xff1a;2025年3月17日 &#x1f47b;擅长领域&#xff1a;运维 目录 1.&#x1f636;‍&#x1f32b;️题目&#xff1a;随机密码生成器2.&#x1f636;‍&#x1f32b;️密码生成可用资源3.&#x1f636;‍&…...

【QA】模板方法模式在Qt中有哪些应用?

在 Qt 框架中&#xff0c;模板方法模式&#xff08;Template Method Pattern&#xff09;被广泛应用于框架的设计中&#xff0c;通过定义算法骨架并允许子类在不改变结构的情况下重写部分步骤。以下是 Qt 中典型的应用场景及示例&#xff1a; 1. 事件处理&#xff08;Event Ha…...

VSTO(C#)Excel开发13:实现定时器

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

Vue:单文件组件

Vue&#xff1a;单文件组件 1、 什么是单文件组件&#xff1f; 在传统的Vue开发里&#xff0c;我们接触的是非单文件组件&#xff0c;它们通常被定义在同一个HTML文件中&#xff0c;随着项目规模的扩大&#xff0c;代码会变得杂乱无章&#xff0c;维护起来极为困难。而单文件…...

网络编程---创建客户端和服务端以及协议包

一&#xff0c;创建客户端和服务端的思维导图 首先我们要知道客户端和服务端在网络中进行通信是依靠IP地址和端口号的&#xff0c;所以第一步就是创建一个套接字存储ip和port。通过套接字建立连接后通过read&#xff0c;write函数实现两者之间的交流&#xff08;套接字的描述符…...

云安全相关博客阅读(四)

How we built Pingora, the proxy that connects Cloudflare to the Internet 基于 Rust 构建 Pingora&#xff0c;作为 Nginx 的替代方案&#xff1b; Nginx 作为常用代理服务&#xff0c;广泛应用于 CDN、WAF、Stream、Tunnel 等场景&#xff0c;是基础网络设施 然而&…...

靶场(十三)---小白心得思路分享---Levram

启程&#xff1a; 老样子开扫端口&#xff0c;22端口自动忽略&#xff0c;看到8000端口搭载着Gerapy服务 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 256 b9:bc:8f:01:3f:85:5d:f9…...

高级java每日一道面试题-2025年3月04日-微服务篇[Eureka篇]-Eureka是什么?

如果有遗漏,评论区告诉我进行补充 面试官: Eureka是什么&#xff1f; 我回答: 在Java高级面试中&#xff0c;关于Eureka的讨论通常会涵盖其基本概念、组件与架构、工作原理、高级特性以及与其他服务发现工具的比较等多个方面。以下是结合提供的内容对Eureka进行的详细解析和…...

Linux的根目录全知道

Linux的根目录(/)遵循文件系统层次结构标准(FHS),定义了各目录的用途。以下是主要目录及其功能的详细说明: 核心目录结构 /bin 作用:存放基础用户命令(所有用户可用)。示例:ls, cp, cat, bash等。注意:在部分系统中,/bin可能是/usr/bin的符号链接(通过usrmerge合并…...

嵌入式裸机设计--MCU常用裸机架构有哪些?

为什么是裸机设计 792125321入群学习更高效&#xff01; 在MCU&#xff08;微控制器单元&#xff09;裸机开发中&#xff0c;我们常见的架构设计主要围绕如何高效管理资源和任务调度。认识这些开发方式&#xff0c;对我们开发一个小型项目来说及有好处&#xff01; 下面介绍…...

基于FPGA频率、幅度、相位可调的任意函数发生器(DDS)实现

基于FPGA实现频率、幅度、相位可调的DDS 1 摘要 直接数字合成器( DDS ) 是一种通过生成数字形式的时变信号并进行数模转换来产生模拟波形(通常为正弦波)的方法,它通过数字方式直接合成信号,而不是通过模拟信号生成技术。DDS主要被应用于信号生成、通信系统中的本振、函…...

Rocky Linux 9.x 基于 kubeadm部署k8s 1.32

一、部署说明 1、主机操作系统说明 序号操作系统及版本备注1Rocky Linux release 9下载链接&#xff1a;https://mirrors.163.com/rocky/9.5/isos/x86_64/Rocky-9.5-x86_64-minimal.iso 2、主机硬件配置说明 作用IP地址操作系统配置关键组件k8s-master01192.168.234.51Rocky…...

linux入侵排查-综合日志分析

1.综合日志分析 1.掌握linux环境下系统日志的分析方法 2.掌握web访问日志的分析方法 3.掌握数据库日志的分析方法 4.掌握数据库日志的分析方法 5.熟悉linux中常用日志分析命令 实验环境 2.实验预设问题 1.定位攻击者ip地址 2.分析攻击者首次成功登录web管理后台的时间 …...

网络华为HCIA+HCIP 以太网链路聚合与交换机堆叠、集群

网络可靠性 网络的可靠性指当设备或者链路出现单点或者多点故障时保证网络服务不间断的能力。网络的可靠性可以从单板、设备、链路多个层面实现。 单板可靠性 以S12700E-8为例&#xff0c;设备提供8个线路板槽位、4个交换网板槽位、2个主控板槽位、6个电源模块槽位、4个风扇…...

[原创](Modern C++)现代C++的关键性概念: 灵活多变的绑定: std::bind

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、C …...

[QT]深入理解Qt中的信号与槽机制

文章目录 信号与槽1. 信号和槽概述信号的本质槽的本质说明 2. 信号和槽的使用2.1 连接信号和槽2.2 查看内置信号和槽2.3 通过 Qt Creator 生成信号槽代码 3. 自定义信号和槽3.1 基本语法3.2 带参数的信号和槽**示例1&#xff1a;重载信号槽****示例2&#xff1a;信号槽参数列表…...

电脑管家如何清理内存及垃圾,提升电脑性能

电脑在长时间使用后&#xff0c;常常会变得越来越卡顿&#xff0c;打开程序的速度变慢&#xff0c;甚至响应迟缓。这时&#xff0c;不少用户会选择使用电脑管家来进行内存清理和垃圾清理。那么&#xff0c;电脑管家是如何清理内存的&#xff1f;它又是如何清理垃圾的&#xff1…...

OpenCV图像处理:分割、合并、打码、组合与边界填充

引言 OpenCV是一个功能强大的计算机视觉库&#xff0c;广泛应用于图像处理、视频分析、物体检测等领域。本文将结合代码示例&#xff0c;详细介绍如何使用OpenCV进行图像的分割、合并、打码、组合以及边界填充等操作。 1. 图像的分割与合并 1.1 图像分割 在OpenCV中&#xff…...

游戏立项时期随笔记录(1)

模拟经营的项目还没有完全结束&#xff0c;这几天又有可能涉及到一个新项目。感想随笔记录一下&#xff0c;防止忘记。今天一天整理这个&#xff0c;搞得今天没时间看数学和AI。 在 Unity3D 游戏前端主程序的立项时期&#xff0c;核心目标是明确技术方向、评估可行性、搭建基础…...

C#入门学习记录(四)C#运算符详解:掌握算术与条件运算符的必备技巧+字符串拼接

一、运算符概述 运算符是程序进行数学运算、逻辑判断的核心工具&#xff0c;C#中的运算符分为&#xff1a; 算术运算符 → 数学计算&#xff08; - * / %&#xff09; 条件运算符 → 三目判断&#xff08;?:&#xff09; 关系运算符 → 比较大小&#xff08;> < &#…...

DeepSeek 3FS 与 JuiceFS:架构与特性比较

近期&#xff0c;DeepSeek 开源了其文件系统 Fire-Flyer File System (3FS)&#xff0c;使得文件系统这一有着 70 多年历时的“古老”的技术&#xff0c;又获得了各方的关注。在 AI 业务中&#xff0c;企业需要处理大量的文本、图像、视频等非结构化数据&#xff0c;还需要应对…...

汽车PKE无钥匙进入系统一键启动系统定义与原理

汽车智能钥匙&#xff08;PKE无钥匙进入系统&#xff09;一键启动介绍 系统定义与原理 汽车无钥匙进入系统&#xff0c;简称PKE&#xff08;Passive Keyless Entry&#xff09;&#xff0c;该系统采用了RFID无线射频技术和车辆身份编码识别系统&#xff0c;率先应用小型化、小…...

【深度学习与大模型基础】第6章-对角矩阵,对称矩阵,正交矩阵

一、对角矩阵 对角矩阵&#xff08;Diagonal Matrix&#xff09;是一种特殊的方阵&#xff0c;其非对角线上的元素均为零&#xff0c;只有对角线上的元素可能非零。具体来说&#xff0c;对于一个 nn的矩阵 A[]&#xff0c;如果满足 则 AA 称为对角矩阵。对角矩阵通常表示为&am…...

go语言中切片的长度和容量详解

Go 语言中,切片(Slice) 是一种动态数组,它的核心特性由 长度(Length) 和 容量(Capacity) 共同定义。这两个概念是操作切片时的关键,理解它们的含义和区别能帮助你高效管理内存并避免常见错误。 一、长度(Length) 定义:切片的长度表示当前包含的实际元素个数,即可以…...

在Vue3中使用$router.push方法进行路由跳转时,如何传递多个路径参数?

在 Vue 3 里&#xff0c;你可以借助 $router.push 方法进行路由跳转&#xff0c;同时传递多个路径参数。下面为你详细介绍具体实现方式&#xff1a; 1. 路由配置 首先&#xff0c;要在路由配置中定义好需要的路径参数。示例如下&#xff1a; import { createRouter, createW…...

C语言学习笔记(第三部份)

说明&#xff1a;由于所有内容放在一个md文件中会非常卡顿&#xff0c;本文件将接续C_1.md文件的第三部分 整型存储和大小端 引例&#xff1a; int main(void) {// printf("%d\n", SnAdda(2, 5));// PrintDaffodilNum(10000);// PrintRhombus(3);int i 0;int arr[…...

软考 中级软件设计师 考点知识点笔记总结 day05

文章目录 4、栈和队列4.1、栈的定义4.2、队列定义 5、串、数组、矩阵和广义表5.1、串5.2、 数组5.3、稀疏矩阵5.4、广义表 4、栈和队列 4.1、栈的定义 线性表是具有相同数据类型的n个数据元素的有限序列&#xff0c; n为表厂。n0时 线性表是一个空表 L &#xff08;a1,a2,a3…...

【Linux】system V消息队列,信号量

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;linux笔记仓 目录 01.消息队列System V 消息队列接口 02.信号量System V 信号量接口 03.OS对system V ipc的管理消息队列管理结构共享内存管理结构信号量管理结构 01.消息队列 消息队列提供了一个…...

【新能源汽车“心脏”赋能:三电系统研发、测试与应用匹配的恒压恒流源技术秘籍】

新能源汽车“心脏”赋能&#xff1a;三电系统研发、测试与应用匹配的恒压恒流源技术秘籍 在新能源汽车蓬勃发展的浪潮中&#xff0c;三电系统&#xff08;电池、电机、电控&#xff09;无疑是其核心驱动力。而恒压源与恒流源&#xff0c;作为电源管理的关键要素&#xff0c;在…...

在 Vue.js 中使用递归组件:轻松处理嵌套数据结构

在开发前端应用时&#xff0c;我们经常会遇到需要处理嵌套数据结构的场景&#xff0c;比如树形菜单、评论列表、文件夹结构等。Vue.js 提供了一种优雅的方式来解决这类问题——递归组件。通过递归组件&#xff0c;我们可以轻松地渲染嵌套数据&#xff0c;并保持代码的简洁和可维…...

飞腾2000+/64核加固服务器

在当今信息化高速发展的时代&#xff0c;数据中心作为信息技术的核心支撑&#xff0c;其稳定性、安全性和高效性成为了各行各业关注的焦点。特别是在国防、金融、电信等关键领域&#xff0c;对服务器的性能、可靠性和安全性提出了前所未有的高要求。正是在这样的背景下&#xf…...

AutoMQ x OSS 的 Iceberg 数据入湖的最佳实践

背景 在数字化转型进程中&#xff0c;用户交互行为产生的多维度数据已成为企业的重要战略资产。以短视频平台为例&#xff0c;基于用户点赞事件的实时推荐算法能显著提升用户活跃度和平台粘性。这类实时数据主要通过 Apache Kafka 流处理平台进行传输&#xff0c;通过其扇出&a…...

深度学习大模型补充知识点

文章目录 VIT用途处理方法与CNN区别 多模态LLM&#xff1a;大语言模型预训练指令微调强化学习 总结 VIT ViT&#xff08;Vision Transformer&#xff09; 首次将 Transformer架构成功应用于计算机视觉领域&#xff08;尤其是图像分类任务&#xff09;。传统视觉任务主要依赖卷…...

定义模型生成数据表

1. 数据库配置 js import { Sequelize, DataTypes } from sequelize; // 创建一个 Sequelize 实例&#xff0c;连接到 SQLite 数据库。 export const sequelize new Sequelize(test, sa, "123456", { host: localhost, dialect: sqlite, storage: ./blog.db })…...

C++与C的基本不同

文章目录 变量定义规则1. 基本语法2. 初始化3. 作用域4. 存储类别 函数定义规则1. 基本语法2. 函数声明和定义3. 默认参数4. 内联函数 解析输出流void BluetoothA2DPSink::start(const char* name)class BluetoothA2DPSink : public BluetoothA2DPCommon C是在C语言基础上发展而…...

React19源码系列之createRoot的执行流程是怎么的?

2024年12月5日&#xff0c;react发布了react19版本。后面一段时间都将学习它的源码&#xff0c;并着手记录。 react官网&#xff1a;react19新特性 https://react.dev/blog/2024/12/05/react-19 在用vite创建react项目的使用&#xff0c;main.tsx主文件都会有以下代码。 //i…...

【CXX-Qt】1.5 使用CMake构建

在本示例中&#xff0c;我们将演示如何使用CMake将CXX-Qt代码集成到C应用程序中。Cargo将CXX-Qt代码构建为静态库&#xff0c;然后CMake将其链接到C可执行文件中。 我们首先需要修改项目结构&#xff0c;以分离项目的不同部分。 tutorial cpp qml rust将Rust项目移动到rust文…...

前端面试项目拷打

Axios相关 1.在Axios二次封装时&#xff0c;具体封装了哪些内容&#xff0c;如何处理请求拦截和响应拦截&#xff1f; axios二次封装的目的&#xff1a;为了统一处理请求和响应拦截器、错误处理、请求超时、请求头配置等&#xff0c;提高代码可维护性和复用性。 首先创建axios…...

“Ubuntu禁止root用户通过SSH直接登录”问题的解决

目录 1 前言 2 问题的解决 2.1 修改sshd_config文件 2.2 重启 SSH 服务 1 前言 最近在做毕设的时候&#xff0c;由于使用普通用户&#xff0c;在MobaXterm的图形界面上&#xff0c;无法正常查看/root文件夹内容&#xff0c;如下图所示&#xff1a; 于是我就想直接想用oot…...

Kafka的零拷贝

Kafka的零拷贝&#xff08;Zero-Copy&#xff09;技术是其实现高吞吐量的关键优化之一&#xff0c;主要通过减少数据在内核空间和用户空间之间的冗余复制及上下文切换来提升性能。以下是其核心要点&#xff1a; 1. 传统数据拷贝的问题 多次复制&#xff1a;传统文件传输需经历…...

《大语言模型》学习笔记(三)

GPT系列模型的技术演变 2022 年11月底&#xff0c;OpenAI推出了基于大语言模型的在线对话应用—ChatGPT。由于具备出色的人机对话能力和任务解决能力&#xff0c;ChatGPT一经发布就引发了全社会对于大语言模型的广泛关注&#xff0c;众多的大语言模型应运而生&#xff0c;并且…...

华为OD机试 - 最长回文字符串 - 贪心算法(Java 2024 E卷 100分)

题目描述 如果一个字符串正读和反读都一样(大小写敏感),则称之为一个「回文串」。例如: level 是一个「回文串」,因为它的正读和反读都是 level。art 不是一个「回文串」,因为它的反读 tra 与正读不同。Level 不是一个「回文串」,因为它的反读 leveL 与正读不同(因大小…...

K8S-etcd服务无法启动问题排查

一、环境、版本信息说明 k8s&#xff1a;v1.19.16 etcdctl version: 3.5.1 3台etcd&#xff08;10.xxx.xx.129、10.xxx.xx.130、10.xxx.xx.131&#xff09;组成的集群。 二、问题根因 129节点的etcd数据与其他两台数据不一致&#xff0c;集群一致性校验出错导致无法加入集…...

基于WebRTC的嵌入式音视频通话SDK:EasyRTC跨平台兼容性技术架构实时通信的底层实现

EasyRTC的核心架构围绕WebRTC技术构建&#xff0c;同时通过扩展信令服务、媒体服务器和NAT穿透机制&#xff0c;解决了WebRTC在实际部署中的痛点。其架构可以分为以下几个核心模块&#xff1a; 1&#xff09;WebRTC基础层 媒体捕获与处理&#xff1a;通过getUserMediaAPI获取…...

SpringBoot-已添加并下载的依赖,reload和mvn clean 后还是提示找不到jar包问题

背景&#xff1a; 添加spring-jdbc依赖时&#xff0c;原来是指定版本的&#xff0c;担心版本冲突&#xff0c;就改成依赖托管&#xff0c;悲剧的是反复reload和mvn clean&#xff0c;import到类的该包一直标红&#xff0c;提示jar包找不到。。。 解决方案&#xff1a; Idea左上…...

HTML5扫雷游戏开发实战

HTML5扫雷游戏开发实战 这里写目录标题 HTML5扫雷游戏开发实战项目介绍技术栈项目架构1. 游戏界面设计2. 核心类设计 核心功能实现1. 游戏初始化2. 地雷布置算法3. 数字计算逻辑4. 扫雷功能实现 性能优化1. DOM操作优化2. 算法优化 项目亮点技术难点突破1. 首次点击保护2. 连锁…...

机器学习——数据清洗(缺失值处理、异常值处理、数据标准化)

数据清洗(缺失值处理、异常值处理、数据标准化) 在数据处理与分析流程中,数据清洗占据着极为关键的地位。原始数据往往充斥着各种问题,如缺失值、异常值,且数据的尺度和分布也可能存在差异,这些问题会严重影响后续数据分析和机器学习模型的准确性与性能。因此,有效的数据…...

【综述】An Introduction to Vision-Language Modeling【一】

介绍 发表在预印本上的综述&#xff0c;长达76页&#xff0c;其中正文46页。 来自Meta 在Meta工作期间完成 ‡蒙特利尔大学, Mila ♡麦吉尔大学, Mila †多伦多大学 ♠卡内基梅隆大学 ♣麻省理工学院 ∧纽约大学 △加州大学伯克利分校 ▽马里兰大学 ♢阿卜杜拉国王科技大学 •…...

MySQL常用函数详解及SQL代码示例

MySQL常用函数详解及SQL代码示例 引言当前日期和时间函数字符串函数数学函数聚合函数结论 引言 MySQL作为一种广泛使用的关系型数据库管理系统&#xff0c;提供了丰富的内置函数来简化数据查询、处理和转换。掌握这些函数可以大大提高数据库操作的效率和准确性。本文将详细介绍…...