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

MySQL 实验 7:索引的操作

MySQL 实验 7:索引的操作

索引是对数据表中一列或多列的值进行排序的一种结构,索引可以大大提高 MySQL 的检索速度。合理使用索引,可以大大提升 SQL 查询的性能。

索引好比是一本书前面的目录,假如我们需要从书籍查找与 xx 相关的内容,我们可以从目录中查找,定位到 xx 内容所在页面,如果没有设置目录(索引),则只能逐字逐页阅读文本查找。

当执行查询操作时,如果不使用索引,MySQL 必须从第一条记录开始读完整个表,直到找出相关的行。如果表中查询的列有一个索引,MySQL 能够快速到达一个位置去搜索数据文件,而不必查看所有数据。

一、索引的优缺点

索引虽然可以提高检索的速度,但创建过多的、不必要的索引还会影响数据增、删、改的效率。

1、索引的优点

(1)索引大大减小了服务器需要扫描的数据量,从而大大加快数据的检索速度,这也是创建索引的最主要的原因。

(2)通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。

(3)可以加速表和表之间的连接。

(4)在使用分组和排序子句进行数据检索时,可以减少查询中分组和排序的时间。

2、索引的缺点

(1)创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

(2)索引需要占物理空间,除了数据表占用数据空间之外,每一个索引还要占用一定的物理空间,如果需要建立聚簇索引,那么需要占用的空间会更大。

(3)对表中的数据进行增、删、改的时候,索引也要动态的维护,降低了数据的维护速度。

3、创建索引的原则

(1)在经常需要检索的列上创建索引可以加快检索的速度。

(2)在作为主键的列上创建聚簇索引可以保证该列的唯一性和组织表中数据的排列顺序。

(3)在经常用在连接的列上,一般是表中的外键创建索引,可以提高连接的速度。

(4)在经常需要根据范围(<,<=,=,>,>=,BETWEEN,IN)进行搜索的列上创建索引。

(4)在经常需要排序(order by)的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间。

(5)在经常使用在 WHERE 子句中的列上面创建索引,可以加快条件的判断速度。

(6)对于那些在查询中很少使用的列不应该创建索引。

(7)对于那些重复值过多的列也不应该增加索引。

(8)经常进行数据更新的列不应该创建索引。

二、索引的分类

MySQL 的索引有两种分类方式:逻辑分类和物理分类。

1、逻辑分类

(1)按功能划分索引可以分为四类:主键索引、唯一索引、普通索引和全文索引。

主键索引:主键索引默认创建为聚簇索引,主键索引会改变表中记录的物理顺序。一张表只能创建一个主键索引,主键索引所包含的列不允许重复、不允许为 NULL。

唯一索引:唯一索引包含的数据列不允许取重复值,但允许为 NULL 值。一张表可以创建多个唯一索引,索引列的值必须唯一,如果是组合索引,则唯一索引包含的所有列的组合必须取值唯一。

普通索引:一张表可以创建多个普通索引,普通索引允许数据重复,索引所包含的列允许取 NULL 值。

全文索引:查找文本中的关键词,主要用于全文检索。

(2)按索引包含的列数可以分为两类:单列索引和多列索引(又叫组合索引)。

单例索引:一个索引只包含一个列,一个表可以有多个单例索引。

组合索引:一个组合索引包含两个或两个以上的列。查询时遵循组合索引的【最左前缀】原则,即使用 where 时条件要按照建立索引的时候字段的排列方式放置索引才会生效。

2、物理分类

按索引的存储结构划分,可以把索引分为聚簇索引(也叫聚集索引)和非聚簇索引。

(1)聚簇索引:聚簇索引(clustered index)不是单独的一种索引类型,而是一种数据存储方式,每张表最多只能拥有一个聚簇索引。表中的数据其实就是按照聚簇索引的顺序进行排列。因此:按照聚簇索引查询速度更快。

(2)非聚簇索引:聚簇索引之外的索引称之为非聚簇索引,又称为辅助索引。查找数据时首先通过非聚簇索引找到主键值,然后到主键索引树中通过主键值找到数据行。

三、创建表的同时创建索引

(1)主键索引和唯一索引的创建请参见【MySQL 实验6:定义数据的完整性】。

(2)创建普通索引:可以使用关键字 key 或 index 创建普通索引。语法格式如下:

create table table_name(col_name data_type primary key,col_name data_type,... ,col_name data_type,INDEX|KEY [索引名] (列名[(长度)] , ...)
);
-- 说明:1)索引名:给创建的索引取一个新名称。如果不指定则采用字段名作为索引名。
(2)列名:指定索引对应的列的名称。列名可以有多个,即创建多列索引。
(3)长度:指索引的长度,字符串类型才可以使用。
(4)可以根据表达式创建索引。

例如:

create table emp02(e_id int primary key,e_name char(20),birth date,salary decimal(10,2),phone char(20),address varchar(200),dept_name char(30),key(e_name),                               -- 不指定索引名称index idx_salary(salary),                  -- 指定索引名称index idx_dept_salary(dept_name,salary),   -- 指定多列索引key idx_phone(phone(11))                   -- 指定索引长度
);-- 查看表结构
mysql> desc emp02;
+-----------+---------------+------+-----+---------+-------+
| Field     | Type          | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+-------+
| e_id      | int(11)       | NO   | PRI | NULL    |       |
| e_name    | char(20)      | YES  | MUL | NULL    |       |
| birth     | date          | YES  |     | NULL    |       |
| salary    | decimal(10,2) | YES  | MUL | NULL    |       |
| phone     | char(20)      | YES  | MUL | NULL    |       |
| address   | varchar(200)  | YES  |     | NULL    |       |
| dept_name | char(30)      | YES  | MUL | NULL    |       |
+-----------+---------------+------+-----+---------+-------+
7 rows in set (0.00 sec)-- 查看索引
mysql> show create table emp02\G
*************************** 1. row ***************************Table: emp02
Create Table: CREATE TABLE `emp02` (`e_id` int(11) NOT NULL,`e_name` char(20) DEFAULT NULL,`birth` date DEFAULT NULL,`salary` decimal(10,2) DEFAULT NULL,`phone` char(20) DEFAULT NULL,`address` varchar(200) DEFAULT NULL,`dept_name` char(30) DEFAULT NULL,PRIMARY KEY (`e_id`),KEY `e_name` (`e_name`),KEY `idx_salary` (`salary`),KEY `idx_dept_salary` (`dept_name`,`salary`),KEY `idx_phone` (`phone`(11))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

00试环境进行据库

create table emp02(e_id int primary key,e_name char(20),birth date,salary decimal(10,2),phone char(20),address varchar(200),dept_name char(30),key(e_name),                               -- 不指定索引名称index idx_salary(salary),                  -- 指定索引名称index idx_dept_salary(dept_name,salary),   -- 指定多列索引key idx_phone(phone(11)) 
);

四、添加索引

数据表创建完成后可以使用 alter table 或 create index 命令添加所需的索引。

1、使用 alter table 添加索引

语法格式如下:

ALTER TABLE 表名 
ADD INDEX|KEY [索引名](字段名[(长度)], ...);

例如:

create table emp03(e_id int primary key,e_name char(20),birth date,salary decimal(10,2),phone char(20),address varchar(200),dept_name char(30)
);-- 添加索引,不指定索引名
alter table emp03 add index(e_name);-- 添加索引,指定索引名
alter table emp03 add index idx_salary(salary);-- 添加多列索引,指定索引名
alter table emp03 add index idx_dept_salary(dept_name, salary);-- 添加索引,指定长度
alter table emp03 add index idx_phone(phone(11));-- 查看表结构
mysql> desc emp03;
+-----------+---------------+------+-----+---------+-------+
| Field     | Type          | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+-------+
| e_id      | int(11)       | NO   | PRI | NULL    |       |
| e_name    | char(20)      | YES  | MUL | NULL    |       |
| birth     | date          | YES  |     | NULL    |       |
| salary    | decimal(10,2) | YES  | MUL | NULL    |       |
| phone     | char(20)      | YES  | MUL | NULL    |       |
| address   | varchar(200)  | YES  |     | NULL    |       |
| dept_name | char(30)      | YES  | MUL | NULL    |       |
+-----------+---------------+------+-----+---------+-------+
7 rows in set (0.01 sec)-- 查看索引
mysql> show create table emp03\G
*************************** 1. row ***************************Table: emp03
Create Table: CREATE TABLE `emp03` (`e_id` int(11) NOT NULL,`e_name` char(20) DEFAULT NULL,`birth` date DEFAULT NULL,`salary` decimal(10,2) DEFAULT NULL,`phone` char(20) DEFAULT NULL,`address` varchar(200) DEFAULT NULL,`dept_name` char(30) DEFAULT NULL,PRIMARY KEY (`e_id`),KEY `e_name` (`e_name`),KEY `idx_salary` (`salary`),KEY `idx_dept_salary` (`dept_name`,`salary`),KEY `idx_phone` (`phone`(11))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
2、使用 create index 添加索引

语法格式如下:

CREATE INDEX 索引名 ON 表名(字段名[(长度)], ...);

例如:

create table emp04(e_id int primary key,e_name char(20),birth date,salary decimal(10,2),phone char(20),address varchar(200),dept_name char(30)
);-- 添加单列索引
create index idx_name on emp04(e_name);-- 添加多列索引
create index idx_dept_salary on emp04(dept_name,salary);-- 指定索引长度
create index idx_phone on emp04(phone(11));-- 查看表结构
mysql> desc emp04;
+-----------+---------------+------+-----+---------+-------+
| Field     | Type          | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+-------+
| e_id      | int(11)       | NO   | PRI | NULL    |       |
| e_name    | char(20)      | YES  | MUL | NULL    |       |
| birth     | date          | YES  |     | NULL    |       |
| salary    | decimal(10,2) | YES  |     | NULL    |       |
| phone     | char(20)      | YES  | MUL | NULL    |       |
| address   | varchar(200)  | YES  |     | NULL    |       |
| dept_name | char(30)      | YES  | MUL | NULL    |       |
+-----------+---------------+------+-----+---------+-------+
7 rows in set (0.01 sec)-- 查看索引
mysql> show create table emp04\G
*************************** 1. row ***************************Table: emp04
Create Table: CREATE TABLE `emp04` (`e_id` int(11) NOT NULL,`e_name` char(20) DEFAULT NULL,`birth` date DEFAULT NULL,`salary` decimal(10,2) DEFAULT NULL,`phone` char(20) DEFAULT NULL,`address` varchar(200) DEFAULT NULL,`dept_name` char(30) DEFAULT NULL,PRIMARY KEY (`e_id`),KEY `idx_name` (`e_name`),KEY `idx_dept_salary` (`dept_name`,`salary`),KEY `idx_phone` (`phone`(11))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

五、删除索引

删除索引的语法格式如下:

-- 使用 alter table 命令删除索引
LTER TABLE 表名 DROP INDEX 索引名;
-- 使用 drop index 命令删除索引
DROP INDEX 索引名 ON 表名;

例如:

-- 查看 emp03 表中的索引
mysql> show create table emp03\G
*************************** 1. row ***************************Table: emp03
Create Table: CREATE TABLE `emp03` (`e_id` int(11) NOT NULL,`e_name` char(20) DEFAULT NULL,`birth` date DEFAULT NULL,`salary` decimal(10,2) DEFAULT NULL,`phone` char(20) DEFAULT NULL,`address` varchar(200) DEFAULT NULL,`dept_name` char(30) DEFAULT NULL,PRIMARY KEY (`e_id`),KEY `e_name` (`e_name`),KEY `idx_salary` (`salary`),KEY `idx_dept_salary` (`dept_name`,`salary`),KEY `idx_phone` (`phone`(11))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)-- 删除索引:e_name
alter table emp03 drop index e_name;-- 删除索引:idx_salary
drop index idx_salary on emp03;-- 重新查看 emp03 表中的索引
mysql> show create table emp03\G
*************************** 1. row ***************************Table: emp03
Create Table: CREATE TABLE `emp03` (`e_id` int(11) NOT NULL,`e_name` char(20) DEFAULT NULL,`birth` date DEFAULT NULL,`salary` decimal(10,2) DEFAULT NULL,`phone` char(20) DEFAULT NULL,`address` varchar(200) DEFAULT NULL,`dept_name` char(30) DEFAULT NULL,PRIMARY KEY (`e_id`),KEY `idx_dept_salary` (`dept_name`,`salary`),KEY `idx_phone` (`phone`(11))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

相关文章:

MySQL 实验 7:索引的操作

MySQL 实验 7&#xff1a;索引的操作 索引是对数据表中一列或多列的值进行排序的一种结构&#xff0c;索引可以大大提高 MySQL 的检索速度。合理使用索引&#xff0c;可以大大提升 SQL 查询的性能。 索引好比是一本书前面的目录&#xff0c;假如我们需要从书籍查找与 xx 相关…...

为Floorp浏览器添加搜索引擎及搜索栏相关设置. 2024-10-05

Floorp浏览器开源项目地址: https://github.com/floorp-Projects/floorp/ 1.第一步 为Floorp浏览器添加搜索栏 (1.工具栏空白处 次键选择 定制工具栏 (2. 把 搜索框 拖动至工具栏 2.添加搜索引擎 以添加 搜狗搜索 为例 (1.访问 搜索引擎网址 搜狗搜索引擎 - 上网从搜狗开始 (2…...

如何设置WSL Ubuntu在Windows开机时自动启动

如何设置WSL Ubuntu在Windows开机时自动启动 步骤详解1. 创建批处理脚本2. 添加到Windows启动项 注意事项结语 在使用Windows Subsystem for Linux (WSL) 时,我们可能希望Ubuntu能够在Windows启动时自动运行。本文将介绍如何实现这一功能,让您的开发环境更加便捷。 步骤详解 …...

使用TensorBoard可视化模型

目录 TensorBoard简介 神经网络模型 可视化 轮次-损失曲线 轮次-准确率曲线 轮次-学习率曲线 迭代-评估准确率曲线 迭代-评估损失曲线 TensorBoard简介 TensorBoard是一款出色的交互式的模型可视化工具。安装TensorFlow时,会自动安装TensorBoard。如图: TensorFlow可…...

《深度学习》OpenCV 图像拼接 原理、参数解析、案例实现

目录 一、图像拼接 1、直接看案例 图1与图2展示&#xff1a; 合并完结果&#xff1a; 2、什么是图像拼接 3、图像拼接步骤 1&#xff09;加载图像 2&#xff09;特征点检测与描述 3&#xff09;特征点匹配 4&#xff09;图像配准 5&#xff09;图像变换和拼接 6&am…...

Hive数仓操作(三)

一、Hive 数据库操作 1. 创建数据库 基本创建数据库命令&#xff1a; CREATE DATABASE bigdata;说明&#xff1a; 数据库会在 HDFS 中以目录的形式创建和保存&#xff0c;数据库名称会存储在 Hive 的元数据中。如果不指定目录&#xff0c;数据库将在 /user/hive/warehouse 下…...

TDSQL-C电商可视化,重塑电商决策新纪元

前言&#xff1a; 在数字化浪潮席卷全球的今天&#xff0c;电子商务行业以其独特的魅力和无限潜力&#xff0c;成为了推动全球经济增长的重要引擎。然而&#xff0c;随着业务规模的急剧扩张&#xff0c;海量数据的涌现给电商企业带来了前所未有的挑战与机遇。如何高效地处理、…...

翔云 OCR:发票识别与验真

在数字化时代&#xff0c;高效处理大量文档和数据成为企业和个人的迫切需求。翔云 OCR 作为一款强大的光学字符识别工具&#xff0c;在发票识别及验真方面表现出色&#xff0c;为我们带来了极大的便利。 一、翔云 OCR 简介 翔云 OCR 是一款基于先进的人工智能技术开发的文字识别…...

HTML ASCII:Web 开发中的字符编码基础

HTML ASCII&#xff1a;Web 开发中的字符编码基础 ASCII&#xff0c;全称为美国信息交换标准代码&#xff08;American Standard Code for Information Interchange&#xff09;&#xff0c;是一种用于电子通信的字符编码标准。它最初于1963年提出&#xff0c;用于在不同的计算…...

Meta 首个多模态大模型一键启动!首个多针刺绣数据集上线,含超 30k 张图片

小扎在 Meta Connect 2024 主题演讲中宣布推出首个多模态大模型 Llama 3.2 vision&#xff01;该模型有 11B 和 90B 两个版本&#xff0c;成为首批支持多模态任务的 Llama 系列模型&#xff0c;根据官方数据&#xff0c;这两个开原模型的性能已超越闭源模型。 小编已经迫不及待…...

阿里云ECS服务器仿真

1.首先使用qemu-img对RAW镜像进行转换&#xff0c;qemu-img convert -O vmdk 1.raw 2.vmdk 2.使用WinHex对镜像的root密码进行删除 3.由于这次阿里云ECS使用了CONFIG_SYSTEM_TRUSTED_KEYS验证&#xff0c;无法直接仿真&#xff0c;需使用live系统对内核进行修改。分为以下几步&…...

如何为树莓派安装操作系统,以及远程操控树莓派的两种方法,无线操控和插网线操控

文章目录 一、下载树莓派的系统二、将文件下载到SD卡中1.使用官方软件2.其他选择 三、远程连接电脑安装vnc-viewer1.无线操作&#xff08;配置树莓派&#xff0c;开启VNC&#xff09;电脑远程配置2.有线连接&#xff08;需要一根网线&#xff09; 总结 一、下载树莓派的系统 下…...

【最新华为OD机试E卷-支持在线评测】简单的自动曝光(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…...

每日一练:等差数列划分

413. 等差数列划分 - 力扣&#xff08;LeetCode&#xff09; 题目要求&#xff1a; 如果一个数列 至少有三个元素 &#xff0c;并且任意两个相邻元素之差相同&#xff0c;则称该数列为等差数列。 例如&#xff0c;[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。 给…...

Kotlin真·全平台——Kotlin Compose Multiplatform Mobile(kotlin跨平台方案、KMP、KMM)

前言 随着kotlin代码跨平台方案的推出&#xff0c;kotlin跨平台一度引起不少波澜。但波澜终归没有掀起太大的风浪&#xff0c;作为一个敏捷型开发的公司&#xff0c;依然少不了Android和iOS的同步开发&#xff0c;实际成本和效益并没有太多变化。所以对于大多数公司来说依然风平…...

unity 默认渲染管线材质球的材质通道,材质球的材质通道

标准渲染管线——材质球的材质通道 文档&#xff0c;与内容无关&#xff0c;是介绍材质球的属性的。 https://docs.unity3d.com/2022.1/Documentation/Manual/StandardShaderMaterialParameters.html游戏资源中常见的贴图类型 https://zhuanlan.zhihu.com/p/260973533 十大贴图…...

PostgreSQL升级:使用pg_upgrade进行大版本(16.3)升级(17.0)

1.pg_upgrade工具介绍 pg_upgrade 会创建新的系统表&#xff0c;并以重用旧的数据文件的方式进行升级。 pg_upgrade 的参数选项如下&#xff1a; -b bindir&#xff0c;--old-bindirbindir&#xff1a;旧的 PostgreSQL 可执行文件目录&#xff1b; -B bindir&#xff0c;--new-…...

userdel命令:删除指定Linux用户

一、命令简介 ​userdel​ 命令用于删除 Linux 系统中的用户账号。当您不再需要某个用户账号时&#xff0c;可以使用 userdel​ 命令将其从系统中删除。 ‍ 二、命令参数 userdel [选项] 用户名一些常用的选项包括&#xff1a; -r, --remove: 删除用户的家目录及邮件目录。…...

QT系统学习篇(1)

一、什么是Qt、Qt的优势 QT是一个跨平台的C图形用户界面库&#xff0c;目前包括Qt Creator、Qt Designer等等快速开发工具。支持所有Linux/Unix系统&#xff0c;还支持windows平台。Qt很容易扩展&#xff0c;并且允许真正的组件编程。&#xff08;军工企业项目开发基本离不开Q…...

每日一刷——9.26——ACM训练题——Fibonacci Again

题目描述&#xff1a; There are another kind of Fibonacci numbers: F(0) 7, F(1) 11, F(n) F(n-1) F(n-2) (n>2). Input Input consists of a sequence of lines, each containing an integer n. (n < 1,000,000). Output Print the word "yes" if 3 d…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API&#xff0c;让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API&#xff0c;你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...