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

【MySQL】索引(一)

索引

  • 一、磁盘
    • 1、物理结构
    • 2、示意图
    • 3、定位扇区
    • 4、读写操作的基本方式
  • 二、页
    • 1、介绍
    • 2、示例
    • 3、作用与结构
    • 4、类型
      • (1)数据页
      • (2)其他
    • 5、组织与管理
    • 6、性能优化
    • 7、示意图(B+树)
  • 三、索引
    • 1、作用
    • 2、注意事项
  • 四、非聚簇索引(Non-Clustered Index)
    • 1、介绍
    • 2、特点
    • 3、MyISAM
      • (1)示例
      • (2)说明
    • 4、示意图
  • 五、聚簇索引(Clustered Index)
    • 1、介绍
    • 2、特点
    • 3、innodb
      • (1)示例
      • (2)功能与作用
    • 4、示意图

一、磁盘

1、物理结构

  • 磁盘通常由一个或多个坚硬的盘片组成,盘片表面涂有磁性材料用于记录信息。每个盘片都有上下两面,都可用来记录数据。磁盘还包括磁头、电动机、主控芯片与排线等部件。
  • 磁头:每个盘片的每一面都对应一个读写磁头,用于在盘片上进行数据的读写操作。磁头悬浮在盘片上方几微米的距离,可以读取和写入数据。
  • 磁道:盘片在格式化时会被划分成许多同心圆轨迹,这些同心圆称为磁道。磁道从盘片的最外圈开始向内依次编号,最外圈的磁道编号为0。
  • 扇区:将每个磁道等分成若干个扇形的区域,每个区域称为一个扇区。扇区是磁盘存储数据的最小单位,通常每个扇区可存储512字节的数据(现在也有一些磁盘采用了更大的扇区尺寸,如4KB等)。
  • 柱面:不同盘片上相同半径的磁道所组成的圆柱称为柱面。柱面的概念在磁盘数据存储和寻址中具有重要意义,它可以简化数据的定位和访问操作。

2、示意图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、定位扇区

  • CHS定位法:CHS定位法通过指定柱面(Cylinder)号、磁头(Head)号和扇区(Sector)号来定位磁盘上的一个扇区。这种定位方法适用于早期的硬盘,但随着硬盘容量的增加和物理结构的复杂性,CHS方法逐渐显得不再适用。
  • LBA定位法:LBA(Logic Block Address)是操作系统内部使用的逻辑块地址,它简化了磁盘的寻址方式。操作系统为磁盘的每个扇区划分了逻辑地址,这些地址在操作系统内部是连续的。当需要访问某个扇区时,操作系统只需将逻辑地址转换为对应的磁盘物理地址(即CHS地址)即可。
  • 相比于CHS定位法,LBA定位法通过逻辑地址来定位扇区,提高了磁盘的寻址效率和灵活性。

4、读写操作的基本方式

  • 随机访问(Random Access):在磁盘读写操作中,本次IO所给出的扇区地址与上次IO给出的扇区地址不连续,磁头需要在两次IO操作之间做较大的移动才能重新开始读/写数据。
  • 连续访问(Sequential Access):在磁盘读写操作中,当次IO给出的扇区地址与上次IO结束的扇区地址连续或接近,磁头能够快速地开始下一次IO操作。
  • 性能差异:随机访问由于磁头需要频繁移动,因此读写速度相对较慢;连续访问由于磁头无需频繁移动,因此读写速度相对较快。

二、页

1、介绍

  • MySQL与磁盘交互的基本单位是页(Page),这一点在MySQL的InnoDB存储引擎中尤为明显。页代表了每次从磁盘读取或写入到内存的数据量。
  • InnoDB存储引擎中,页的默认大小是16KB。但可以通过系统变量innodb_page_size进行调整,不过调整时需要保证设置的值是操作系统“数据块”4KB的整数倍。而这意味着每次从磁盘读取或写入到内存的数据量都是16KB(页大小)。

2、示例

  • MySQL 与磁盘交互基本单位
show global status like 'innodb_page_size';

在这里插入图片描述

3、作用与结构

  • 作用:页作为磁盘和内存之间交互的基本单位,有助于优化磁盘IO效率。通过以页为单位进行数据的读写操作,可以减少磁盘IO的次数,从而提高整体性能。
  • 页的头部(Page Header)记录了页的状态信息,如页的编号、类型、上一页和下一页的页号等。
  • 页的尾部(File Trailer)则用于检测数据完整性的校验。
  • 页的中间部分(User Records)存放了实际的数据行记录。
  • 一个页内部通常包含多个行记录,即数据库中的多条数据。
  • 此外,为了加快数据查找速度,页内部还会生成一个页目录(Page Directory),用于记录与二叉查找相关的信息。

4、类型

(1)数据页

  • 数据页(Data Page)也称为索引页,因为InnoDB中“索引即数据”。主要用于存储表中的数据行记录,包含页头(Page Header)、页尾(File Trailer)、用户记录(User Records)、空闲空间(Free Space)和页目录(Page Directory)等部分。
  • 页头包含页的元数据信息,如页号、页类型、校验和等。
  • 页尾用于检测数据完整性的校验。
  • 用户记录区存储实际的数据行,数据行之间通过链表连接。
  • 页目录用于提高数据查找效率,通过二分查找快速定位到数据行。

(2)其他

类型作用
系统页(System Page)存储系统级别的元数据信息
Undo页(Undo Log Page)存储事务的回滚信息,用于支持事务的原子性和一致性
事务数据页存储与事务相关的其他数据
Change Buffer页用于存储对二级索引的修改操作,以延迟写回磁盘,提高写入性能
Extent Descriptor(XDES)页存储区的描述信息,一个区包含多个连续的页
InnoDB段信息页存储段的信息,段是区的上级结构,由一个或多个区组成

5、组织与管理

  • 页链表:多个页通过双向指针连接在一起,形成双向链表。即使页在物理空间上不连续,也可以通过链表在逻辑上保持连续。
  • 页分裂与合并:当一个页中的数据量过多导致空间不足时,MySQL会进行页分裂操作,将部分数据迁移到新的页中。相反,当一个页中的数据量减少导致空闲空间过大时,MySQL会进行页合并操作,将相邻的页合并为一个大的页。
  • 缓存管理:MySQL使用Buffer Pool来缓存数据页和索引页,以减少磁盘IO操作。当需要访问某个页时,可以先从Buffer Pool中查找,如果找到了就可以直接在内存中进行操作。

6、性能优化

  • 调整页大小:根据实际情况和数据量的大小,选择合适的数据页大小。较小的数据页可以提高磁盘利用率,但可能会增加随机IO操作;较大的数据页可以加快顺序IO操作,但可能会浪费空间。
  • 优化索引:定期进行索引重建,避免索引的碎片化,从而提高索引的查询性能。
  • 合理配置缓存:通过合理配置Buffer Pool等缓存参数,可以提高数据页的访问速度和性能。

7、示意图(B+树)

在这里插入图片描述

  • 上方为MySQL中innode db存储引擎下的索引结构,一般建表插入数据的时候,是在该结构下进行CURD操作。当表没有主键时也是如此,因为会有默认主键存在。
  • 叶子节点保存有数据,而路上节点没有。即非叶子节点不需要数据,只需要目录项。因此,非叶子节点不存数据就可以存储更多的目录项,而存储目录项可以管理更多的叶子page。
  • 这种方式下的树是一个“矮胖型”的树,而途径的路上节点减少,找到目标数据只需要更少的page,IO次数更少,在IO层面上提高了效率。即每一个节点都有目录项,可以大大提高搜索效率。
  • 叶子节点全部用链表级联起来是B+树的特点,而用户也比较希望进行范围查找。

三、索引

1、作用

  • 提高查询速度:索引可以显著加快数据检索速度,因为数据库系统可以利用索引快速定位到表中的数据行,而无需扫描整个表。
  • 提高排序和分组效率:索引可以帮助数据库系统更快地执行排序和分组操作,因为这些操作通常需要对数据进行扫描和比较。
  • 优化连接操作:在多表连接查询中,索引可以加速表之间的连接过程,因为数据库系统可以利用索引快速找到匹配的记录。

2、注意事项

  • 选择合适的列:通常,在经常用于查询条件、连接条件、排序和分组操作的列上创建索引。避免在很少使用或数据重复率高的列上创建索引。
  • 索引的维护成本:索引会占用额外的存储空间,并且在插入、更新和删除操作时需要维护索引,这会增加额外的开销。因此,需要根据查询需求和表的大小来权衡是否创建索引。
  • 避免冗余索引:不要在同一个表上创建多个冗余的索引,以避免增加维护成本。
  • 使用索引的提示:在查询时,可以使用索引提示(如USE INDEX、IGNORE INDEX等)来指导MySQL优化器使用或忽略特定的索引。
  • 监控和优化索引:定期监控索引的使用情况和性能,并根据需要进行优化。例如,可以使用EXPLAIN语句来分析查询的执行计划,以确定是否使用了索引以及索引的使用是否有效。

四、非聚簇索引(Non-Clustered Index)

1、介绍

  • 非聚簇索引不决定表中数据的物理存储顺序,它只是在数据行之外,为表中的一列或多列创建一个单独的索引结构。
  • 非聚簇索引适用于需要频繁进行精确匹配查询(如=、IN等)的列。也适用于需要快速访问表中特定行的场景,但不需要频繁进行范围查询、排序或分组操作。

2、特点

  • 一个表可以有多个非聚簇索引。
  • 非聚簇索引的叶节点包含了指向实际数据行的指针(或键的副本和指向数据行的行标识符),即当通过非聚簇索引查询数据时,需要先找到索引的叶节点,然后通过指针或行标识符再找到对应的数据行。
  • 插入、删除和更新操作通常比聚簇索引更快,因为不需要维护数据的物理顺序。
  • 查询性能可能不如聚簇索引,特别是当索引列的选择性较低(即索引列中的重复值较多)时。

3、MyISAM

(1)示例

create database myisam_test;
use myisam_test;create table mitest(
id int primary key,
name varchar(20) not null
)engine=MyISAM;show create table mitest\G

在这里插入图片描述

  • Linux命令行操作
cd /var/lib/mysql
cd myisam_test/
ll

在这里插入图片描述

(2)说明

  • .myd文件:是MyISAM存储引擎中用于存储表的实际数据的文件。每个MyISAM表都有一个与之对应的.myd文件,该文件包含了表中所有的数据记录。
  • .myd文件是数据存储的核心。如果此文件损坏或丢失,那么表中存储的所有数据将无法恢复,这将对数据库的完整性和可用性造成直接影响。
  • .myi文件:是MyISAM存储引擎中用于存储表的索引数据的文件。索引是为了加速数据的查询速度而设计的,它包含了表中所有列的索引信息,包括B树索引和其他类型的索引。通过索引,数据库系统可以更快地定位到所需的数据行,从而提高查询效率。
  • .myi文件对于支持快速数据检索至关重要。如果缺失了索引文件,那么数据库系统在执行查询操作时可能需要扫描整个表来查找所需的数据,这将导致查询速度变慢,影响数据库的整体性能。

4、示意图

  • MyISAM 表的主索引,Col1 为主键。
    在这里插入图片描述

五、聚簇索引(Clustered Index)

1、介绍

  • 聚簇索引决定了表中数据的物理存储顺序,即表中的数据行实际上是按照聚簇索引的键顺序来存储的。
  • 聚簇索引适用于需要频繁进行范围查询、排序或分组操作的表。也适用于主键或唯一键,因为这些键通常用于唯一标识表中的每一行。

2、特点

  • 一个表只能有一个聚簇索引,因为数据行本身只能按照一种顺序物理存储。
  • 聚簇索引的叶节点包含了实际的数据行,即当通过聚簇索引查询数据时,可以直接找到对应的数据行,而不需要额外的查找操作。
  • 由于数据行是按照聚簇索引排序的,因此范围查询(如BETWEEN、<、>等)和排序操作(如ORDER BY)的性能通常会更好。
  • 相比于非聚簇索引,插入、删除和更新操作可能会更慢,因为需要维护数据的物理顺序。

3、innodb

(1)示例

create database innodb_test;use innodb_test;
create table ibtest(
id int primary key,
name varchar(20) not null
)engine=InnoDB;
ll ./innodb_test/

在这里插入图片描述

(2)功能与作用

  • 存储表数据和索引:.ibd文件是InnoDB存储引擎生成的独立表空间文件,它主要用于存储表的数据和索引。每个InnoDB表都有一个与之对应的.ibd文件,该文件包含了表中所有的数据页和索引页。数据页用于存放表中实际的行数据,而索引页则用于存放表的索引信息,以便快速查询。
  • 数据独立性:由于每个表都有独立的.ibd文件,这使得数据的备份和恢复变得更加简单。管理员可以单独备份或恢复某个表的.ibd文件,而无需影响其他表的数据。
  • 空间利用与扩展性:.ibd文件支持表空间的动态扩展和收缩。管理员可以根据表的需求灵活调整表空间大小,从而最大化地利用存储空间。此外,InnoDB还支持对.ibd文件进行压缩操作,以减少表空间的大小并节省磁盘空间。

4、示意图

  • 在InnoDB下,以非聚簇索引中示意图的 Col3 建立辅助(普通)索引。
    在这里插入图片描述
    后续内容参见【MySQL】索引(二)

本文到这里就结束了,如有错误或者不清楚的地方欢迎评论或者私信
本文只是在学习过程中所做的总结,不会涉及过深的概念
创作不易,如果觉得博主写得不错,请点赞、收藏加关注支持一下💕💕💕

相关文章:

【MySQL】索引(一)

索引 一、磁盘1、物理结构2、示意图3、定位扇区4、读写操作的基本方式 二、页1、介绍2、示例3、作用与结构4、类型&#xff08;1&#xff09;数据页&#xff08;2&#xff09;其他 5、组织与管理6、性能优化7、示意图&#xff08;B树&#xff09; 三、索引1、作用2、注意事项 四…...

缩放 对内外参的影响

当你对图像进行同比例缩小时&#xff0c;图像的内参需要相应地变化&#xff0c;但外参通常保持不变。 相机内参 相机内参&#xff08;内参矩阵&#xff09;描述了相机的固有属性&#xff0c;包括焦距和主点&#xff08;光轴与图像平面的交点&#xff09;的坐标。 当你对图像…...

excel设置好的可选择列数据后,如何快速输入到单元格中?

当设置好列的【数据】-【数据有效性】-【序列】后&#xff0c;在单元格中输入可选择数据的开头&#xff0c;就会提示出对应的可选择数据&#xff0c;然后&#xff0c;按一下键盘上的【↓】键&#xff0c;再按回车&#xff0c;即可快速输入到单元格中。...

设计一个流程来生成测试模型安全性的问题以及验证模型是否安全

要使用 Ollama 运行 llama3.3:70b 模型&#xff0c;并设计一个流程来生成测试模型安全性的问题以及验证模型是否安全&#xff0c;可以按照以下步骤进行设计和实现。整个过程包括环境配置、设计安全测试提示词、执行测试以及分析结果。以下是详细的步骤和指导&#xff1a; 1. 环…...

vue3学习日记5 - 项目起步

最近发现职场前端用的框架大多为vue&#xff0c;所以最近也跟着黑马程序员vue3的课程进行学习&#xff0c;以下是我的学习记录 视频网址&#xff1a; Day2-11.项目起步-静态资源引入和ErrorLen安装_哔哩哔哩_bilibili 学习日记&#xff1a; vue3学习日记1 - 环境搭建-CSDN博…...

ESP32,uart安装驱动uart_driver_install函数剖析,以及intr_alloc_flags 参数的意义

在 uart_driver_install 函数中&#xff0c;参数 RX_BUF_SIZE * 2 指定了接收缓冲区&#xff08;RX buffer&#xff09;的大小。这个参数对于 UART 驱动程序来说非常重要&#xff0c;因为它决定了可以存储多少接收到的数据&#xff0c;直到应用程序读取它们为止。下面是对该函数…...

android源码编译后,为什么emulator一直黑屏或者停止android界面

一、前言 最近编译了android12的源码&#xff0c;但是编译完成之后&#xff0c;emulator命令一直卡在android界面上&#xff0c;不会进入系统。经过我多方面的研究&#xff0c;终于找到解决方案。记录下来&#xff0c;希望对遇到这个问题的朋友有所帮助。 二、解决方案 网上…...

ubuntu22.04降级安装CUDA11.3

环境&#xff1a;主机x64的ubuntu22.04&#xff0c;原有CUDA12.1&#xff0c;但是现在需要CUDA11.3&#xff0c;本篇文章介绍步骤。 一、下载CUDA11.3的run文件 下载网址&#xff1a;https://developer.nvidia.com/cuda-11-3-1-download-archive?target_osLinux&target_…...

hive知识体系

hive知识体系 hive知识体系 链接: 1Hive概览 链接: 2Hive表类型 链接: 3Hive数据抽样 链接: 4Hive计算引擎 链接: 5Hive存储与压缩 链接: 6Hive Sql 大全 链接: 6Hive Sql 大全-Hive 函数 链接: 6Hive Sql 大全-窗口函数 链接: 7Hive执行计划 链接: 8Hive SQL底层执行原理 链接…...

【ASP.NET学习】Web Forms创建Web应用

文章目录 什么是 Web Forms&#xff1f;ASP.NET Web Forms - HTML 页面用 ASP.NET 编写的 Hello RUNOOB.COM它是如何工作的&#xff1f;经典 ASP ASP.NET Web Forms - 服务器控件经典 ASP 的局限性ASP.NET - 服务器控件ASP.NET - HTML 服务器控件ASP.NET - Web 服务器控件ASP.N…...

【Qt】QThread总结

目录 成员函数创建方式方式一方式二方式三注意 example总结参考文章 成员函数 创建方式 方式一 QThread 静态成员create auto thd QThread::create([]{});方式二 继承QThread类&#xff0c;重写run run函数它作为线程的入口&#xff0c;也就是线程从run()开始执行&#…...

常见的安全测试漏洞详解

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、SQL注入攻击 SQL 注入攻击主要是由于程序员在开发过程中没有对客户端所传输到服务器端的参数进行严格的安全检查&#xff0c;同时 SQL 语句的执行引用了该参…...

代理模式和适配器模式有什么区别

代理模式&#xff08;Proxy Pattern&#xff09;和适配器模式&#xff08;Adapter Pattern&#xff09;都是结构型设计模式&#xff0c;它们有不同的应用场景和目标&#xff0c;虽然在某些方面看起来相似&#xff0c;但它们的意图和实现方式有显著的区别。 1. 代理模式&#x…...

机器学习头歌(第三部分-强化学习)

一、强化学习及其关键元素 二、强化学习的分类 三、任务与奖赏 import numpy as np# 迷宫定义 maze np.array([[0, 0, 0, 0, 0],[0, -1, -1, 0, 0],[0, 0, 0, -1, 0],[-1, -1, 0, -1, 0],[0, 0, 0, -1, 1] ])# 定义强化学习的参数 gamma 0.8 # 折扣因子 alpha 0.5 # 学习率…...

【Hive】新增字段(column)后,旧分区无法更新数据问题

TOC 【一】问题描述 Hive修改数据表结构的需求&#xff0c;比如&#xff1a;增加一个新字段。 如果使用如下语句新增列&#xff0c;可以成功添加列col1。但如果数据表tb已经有旧的分区&#xff08;例如&#xff1a;dt20190101&#xff09;&#xff0c;则该旧分区中的col1将为…...

智能化的城市管理解决方案,智慧城管执法系统源码,微服务架构、Java编程语言、Spring Boot框架、Vue.js前端技术

智慧城管执法系统是一种高度信息化、智能化的城市管理解决方案&#xff0c;它利用现代信息技术&#xff0c;如微服务架构、Java编程语言、Spring Boot框架、Vue.js前端技术、Element UI组件库、UniApp跨平台开发工具以及MySQL数据库等&#xff0c;构建了一个综合性的执法管理平…...

【区间DP】【hard】力扣1312. 让字符串成为回文串的最少插入次数

加粗样式给你一个字符串 s &#xff0c;每一次操作你都可以在字符串的任意位置插入任意字符。 请你返回让 s 成为回文串的 最少操作次数 。 「回文串」是正读和反读都相同的字符串。 示例 1&#xff1a; 输入&#xff1a;s “zzazz” 输出&#xff1a;0 解释&#xff1a;字…...

android刷机

android ota和img包下载地址&#xff1a; https://developers.google.com/android/images?hlzh-cn android启动过程 线刷 格式&#xff1a;ota格式 模式&#xff1a;recovery 优点&#xff1a;方便、简单&#xff0c;刷机方法通用&#xff0c;不会破坏手机底层数据&#xff0…...

web-前端小实验8

实现以上图片中的内容 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"wid…...

C++实现设计模式---单例模式 (Singleton)

单例模式 (Singleton) 概念 单例模式 确保一个类在整个程序生命周期中只有一个实例&#xff0c;并提供一个全局访问点。 它是一种创建型设计模式&#xff0c;广泛用于需要共享资源的场景。 使用场景 配置管理器&#xff1a;程序中需要一个全局的配置对象。日志系统&#xff…...

【大数据】机器学习-----线性模型

一、线性模型基本形式 线性模型旨在通过线性组合输入特征来预测输出。其一般形式为&#xff1a; 其中&#xff1a; x ( x 1 , x 2 , ⋯ , x d ) \mathbf{x}(x_1,x_2,\cdots,x_d) x(x1​,x2​,⋯,xd​) 是输入特征向量&#xff0c;包含 d d d 个特征。 w ( w 1 , w 2 , ⋯ ,…...

C#类型转换

C#是静态类型的语言&#xff0c;变量一旦声明就无法重新声明或者存储其他类型的数据&#xff0c;除非进行类型转换。本章的主要任务就是学习类型转换的知识。类型转换有显式的&#xff0c;也有隐式的。所谓显式&#xff0c;就是我们必须明确地告知编译器&#xff0c;我们要把变…...

OpenCV相机标定与3D重建(55)通用解决 PnP 问题函数solvePnPGeneric()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 根据3D-2D点对应关系找到物体的姿态。 cv::solvePnPGeneric 是 OpenCV 中一个更为通用的函数&#xff0c;用于解决 PnP 问题。它能够返回多个可能…...

NVIDIA CUDA Linux 官方安装指南

本文翻译自&#xff1a;https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions NVIDIA CUDALinux安装指南 CUDA工具包的Linux安装说明。 文章目录 1.导言1.1.系统要求1.2.操作系统支持政策1.3.主机编译器支持政策1.3.1.支持的C方言…...

C++中的STL

STL&#xff08;标准模板库&#xff09;在广义上分为&#xff1a;容器&#xff0c;算法&#xff0c;迭代器 容器和算法之间通过迭代器进行无缝衔接 STL大体上分为六大组件:分别为容器&#xff0c;算法&#xff0c;迭代器&#xff0c;仿函数&#xff0c;适配器&#xff0c;空间…...

前端进程和线程及介绍

前端开发中经常涉及到进程和线程的概念&#xff0c;特别是在浏览器中。理解这两个概念对于理解浏览器的工作机制和前端性能优化非常重要。以下是详细介绍&#xff1a; 1. 什么是进程和线程&#xff1f; 进程&#xff1a; 是操作系统分配资源的基本单位。一个程序启动后&#xf…...

本地用docker装mysql

目录 拉取镜像查看镜像 启动容器查看运行中的容器连接到 MySQL 容器其他一些操作 装WorkBench链接mysql——————————————允许远程登录MySql 拉取镜像 docker pull mysql查看镜像 docker image lsREPOSITORY TAG IMAGE ID CREATED SIZE mysq…...

设计模式 行为型 责任链模式(Chain of Responsibility Pattern)与 常见技术框架应用 解析

责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许将请求沿着处理者链进行发送。每个处理者对象都有机会处理该请求&#xff0c;直到某个处理者决定处理该请求为止。这种模式的主要目的是避免请求的发送者和接收者之间…...

Apache Spark中与数据分区相关的配置和运行参数

Apache Spark中与数据分区相关的配置和运行参数涉及多个方面&#xff0c;包括动态分区设置、分区数设置、Executor与并行度配置等。合理配置这些参数可以显著提高Spark作业的执行效率和资源利用率。在实际应用中&#xff0c;建议根据业务需求和计算集群的特性进行相应的调整和测…...

“深入浅出”系列之设计模式篇:(0)什么是设计模式

设计模式六大原则 1. 单一职责原则&#xff1a;一个类或者一个方法只负责一项职责&#xff0c;尽量做到类的只有一个行为原因引起变化。 核心思想&#xff1a;控制类的粒度大小&#xff0c;将对象解耦&#xff0c;提高其内聚性。 2. 开闭原则&#xff1a;对扩展开放&#xf…...

【Git版本控制器--1】Git的基本操作--本地仓库

目录 初识git 本地仓库 认识工作区、暂存区、版本库 add操作与commit操作 master文件与commit id 修改文件 版本回退 撤销修改 删除文件 初识git Git 是一个分布式版本控制系统&#xff0c;主要用于跟踪文件的更改&#xff0c;特别是在软件开发中。 为什么要版本…...

如何在Jupyter中快速切换Anaconda里不同的虚拟环境

目录 介绍 操作步骤 1. 选择环境&#xff0c;安装内核 2. 注册内核 3. 完工。 视频教程 介绍 很多网友在使用Jupyter的时候会遇到各种各样的问题&#xff0c;其中一个比较麻烦的问题就是我在Anaconda有多个Python的环境里面&#xff0c;如何让jupyter快速切换不同的Pyt…...

Python自学 - “包”的创建与使用(从头晕到了然)

<< 返回目录 1 Python自学 - “包”的创建与使用(从头晕到了然) 相对于模块&#xff0c;包是一个更大的概念&#xff0c;按照业界的开发规范&#xff0c;1个代码文件不要超过1000行&#xff0c;稍微有点规模的任务就超过这个代码限制了&#xff0c;必然需要多个文件来管…...

ElasticSearch 同义词匹配

synonym.txt 电脑, 计算机, 主机 复印纸, 打印纸, A4纸, 纸, A3 平板电脑, Pad DELETE /es_sku_index_20_20250109 PUT /es_sku_index_20_20250109 {"settings": {"index": {"number_of_shards": "5","number_of_replicas&quo…...

android 官网刷机和线刷

nexus、pixel可使用google官网线上刷机的方法。网址&#xff1a;https://flash.android.com/ 本文使用google线上刷机&#xff0c;将Android14 刷为Android12 以下是失败的线刷经历。 准备工作 下载升级包。https://developers.google.com/android/images?hlzh-cn 注意&…...

Vue环境变量配置指南:如何在开发、生产和测试中设置环境变量

-## 前言 Vue.js是一个流行的JavaScript框架&#xff0c;它提供了许多工具和功能来帮助开发人员构建高效、可维护的Web应用程序。其中一个重要的工具是环境变量&#xff0c;它可以让你在不同的环境中配置不同的参数和选项。在这篇博客中&#xff0c;我们将介绍如何在Vue应用程…...

蓝桥杯_B组_省赛_2022(用作博主自己学习)

题目链接算法11.九进制转十进制 - 蓝桥云课 进制转换 21.顺子日期 - 蓝桥云课 时间与日期 31.刷题统计 - 蓝桥云课 时间与日期 41.修剪灌木 - 蓝桥云课 思维 51.X 进制减法 - 蓝桥云课 贪心 61.统计子矩阵 - 蓝桥云课 二维前缀和 71.积木画 - 蓝桥云课 动态规划 82.扫雷 - 蓝桥…...

【干货】交换网络环路介绍

定义 以太网交换网络中为了提高网络可靠性&#xff0c;通常会采用冗余设备和冗余链路&#xff0c;然而现网中由于组网调整、配置修改、升级割接等原因&#xff0c;经常会造成数据或协议报文环形转发&#xff0c;不可避免的形成环路。如图7-1所示&#xff0c;三台设备两两相连就…...

unity——Preject3——面板基类

目录 1.Canvas Group Canvas Group 的功能 Canvas Group 的常见用途 如何使用 Canvas Group 2.代码 3.代码分析 类分析:BasePanel 功能 作用 实际应用 代码解析:hideCallBack?.Invoke(); 语法知识点 作用 虚函数(virtual)和抽象类(abstract)的作用与区别 …...

BTC系列 - 启示录

推荐《区块链启示录&#xff1a;中本聪文集》这本书, 原来早在2010年, BTC生态还不完善的时候, 社区中就已经畅想出了未来其它链上的特色方案, 中本聪也都一一做了教父级回应: coinbase币的成熟时间, 交易池, 交易确认机制, 防51%攻击, 防双重消费, 水龙头, 轻量级客户端, 链上…...

C# 25Dpoint

C# 25Dpoint &#xff0c;做一个备份 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace _25Dpoint {public partial cl…...

Kotlin构造函数

class Person {var name: String? nullvar age: Int? nullfun think() {println("Mr./Ms.$name, who is $age years old, is thinking!")} }fun main () {val p Person()p.name "Jimmy"p.age 20p.think() } 在Kotlin中任意一个非抽象类都无法被继承…...

springMVC---resultful风格

目录 一、创建项目 pom.xml 二、配置文件 1.web.xml 2.spring-mvc.xml 三、图解 四、controller 一、创建项目 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi…...

flutter 装饰类【BoxDecoration】

装饰类 BoxDecoration BoxDecoration 是 Flutter 中用于控制 Container 等组件外观的装饰类&#xff0c;它提供了丰富的属性来设置背景、边框、圆角、阴影等样式。 BoxDecoration 的主要属性 1.color 背景颜色。类型&#xff1a;Color?示例&#xff1a; color: Colors.blu…...

自动连接校园网wifi脚本实践(自动网页认证)

目录 起因执行步骤分析校园网登录逻辑如何判断当前是否处于未登录状态&#xff1f; 书写代码打包设置开机自动启动 起因 我们一般通过远程控制的方式访问实验室电脑&#xff0c;但是最近实验室老是断电&#xff0c;但重启后也不会自动连接校园网账户认证&#xff0c;远程工具&…...

微信小程序集成Vant Weapp移动端开发的框架

什么是Vant Weapp Vant 是一个轻量、可靠的移动端组件库&#xff0c;于 2017 年开源。 目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本&#xff0c;并由社区团队维护 React 版本和支付宝小程序版本。 官网地睛&#xff1a;介绍 - Vant Weapp (vant-ui.gith…...

MySQL从库 Last_SQL_Errno: 1197 问题处理过程

记录一个遇到过的错误&#xff0c;今天整理一下。 问题 MySQL error code MY-001197 (ER_TRANS_CACHE_FULL): Multi-statement transaction required morethan max_binlog_cache_size bytes of storage; increase this mysqld variable and try again报错很明显是max_binlog_…...

springboot 加载本地jar到maven

在Spring Boot项目中&#xff0c;如果你想要加载一个本地的jar文件到Maven本地仓库&#xff0c;你可以使用Maven的install-file目标来实现。以下是一个简单的例子&#xff1a; 打开命令行工具&#xff08;例如&#xff1a;终端或者命令提示符&#xff09;。 执行以下Maven命令…...

面向B站商业化场景的广告标题智能推荐

01.背景 大模型的发展也在不断改变广告主/代理商广告创编的过程&#xff0c;为了提高广告主的创作效率&#xff0c;提升广告主投放标题的质量&#xff0c;我们利用大语言模型技术以及B站商业数据&#xff0c;能够让广告主仅需要输入特定的关键词&#xff0c;即可以生成理论上无…...

element plus 使用 upload 组件达到上传数量限制时隐藏上传按钮

最近在重构项目&#xff0c;使用了 element plus UI框架&#xff0c;有个功能是实现图片上传&#xff0c;且限制只能上传一张图片&#xff0c;结果&#xff0c;发现&#xff0c;可以限制只上传一张图片&#xff0c;但是上传按钮还在&#xff0c;如图&#xff1a; 解决办法&…...