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

深入理解mysql的explain命令

1 基础

全网最全 | MySQL EXPLAIN 完全解读

1.1 MySQL中EXPLAIN命令提供的字段包括:

  • id:查询的标识符。
  • select_type:查询的类型(如SIMPLE, PRIMARY, SUBQUERY等)。
  • table:查询的是哪个表。
  • partitions:查询中涉及的分区。
  • type:join类型(如ALL, index, range等)。
  • possible_keys:可能用于此查询的索引。
  • key:实际使用的索引。
  • key_len:使用的索引的长度。
  • ref:哪些列或常量被用于查找索引列上的值。
  • rows:估计要检查的行数。
  • filtered:按表条件过滤的行百分比。
  • Extra:关于查询执行的额外信息。

2 关于id字段的疑惑

2.1 id越大越先执行吗?(不完全对)

记住,id字段更多地表示查询中的逻辑顺序,而不一定完全代表物理执行顺序。在涉及复杂查询,尤其是嵌套子查询和UNION的情况下,理解id字段对于分析查询性能至关重要。

在MySQL的EXPLAIN命令中,id字段表示查询中各个SELECT子句的执行顺序或层级。理解id字段有时可能会有些复杂,但以下是一些基本的规则和示例:

  1. 相同的id:具有相同id值的行表示它们是同一层级的查询部分,通常是因为JOIN操作或UNION

  2. 递增的id:通常,id值较小的SELECT会先执行,id值较大的后执行。但在涉及子查询的情况下,子查询(较大的id)实际上会先执行,因为它们的结果通常需要被外层查询(较小的id)所使用。

  3. 子查询:子查询的id通常大于主查询的id。子查询先执行,因为外层查询依赖它们的结果。

  4. UNION:在UNION中,第一个SELECTid最小,随后的SELECT``id逐渐增大。

示例

  • 简单的JOIN查询

    EXPLAIN SELECT * FROM table1 JOIN table2 ON table1.id = table2.id;
    

    这里可能会看到两行输出,每行的id都是1,表示这是一个单一层级的查询。

  • 包含子查询

    EXPLAIN SELECT * FROM (SELECT * FROM table1) AS subquery JOIN table2 ON subquery.id = table2.id;
    

    这里可能会看到两行输出,子查询SELECT * FROM table1id可能是2,而外层的JOIN查询的id可能是1。尽管id值较大,子查询实际上会先执行。

  • UNION查询

    EXPLAIN SELECT * FROM table1 UNION SELECT * FROM table2;
    

    在这种情况下,第一个SELECTid可能是1,第二个SELECTid可能是2。

3 关于select_type字段的疑惑

3.1 select_type有哪些字段值

在MySQL的EXPLAIN命令输出中,select_type字段用于描述SELECT语句的类型。以下是select_type可能的值及其含义:

  1. SIMPLE:简单的SELECT,不涉及子查询或UNION。

  2. PRIMARY:查询中最外层的SELECT。

  3. SUBQUERY:SELECT中的子查询。

  4. DEPENDENT SUBQUERY:子查询中的SELECT,其结果依赖于外部查询。

  5. UNION:UNION操作中的第二个或后续的SELECT。

  6. DEPENDENT UNION:UNION中的第二个或后续的SELECT,其结果依赖于外部查询。

  7. UNION RESULT:UNION查询的结果。

  8. DERIVED:派生表的SELECT,例如,出现在FROM子句中的子查询。

这些不同的select_type值有助于理解复杂查询的执行过程和性能表现。

3.2 针对select_type的字段值,你能各给一个例子吗

当然,以下是select_type字段的各种值及其相应的SQL查询示例:

  1. SIMPLE

    SELECT * FROM table1 WHERE column1 = 'value';
    

    这是一个没有子查询或UNION的简单查询。

  2. PRIMARY

    SELECT * FROM table1 WHERE column1 IN (SELECT column1 FROM table2);
    

    这里,最外层的SELECT是PRIMARY。

  3. SUBQUERY

    SELECT * FROM table1 WHERE column1 IN (SELECT column1 FROM table2);
    

    这里,(SELECT column1 FROM table2)是一个SUBQUERY。

  4. DEPENDENT SUBQUERY

    SELECT * FROM table1 WHERE column1 IN (SELECT column1 FROM table2 WHERE table2.column2 = table1.column2);
    

    子查询依赖于外部查询的结果。

  5. UNION

    SELECT * FROM table1 UNION SELECT * FROM table2;
    

    第二个SELECT(和任何后续的SELECT)被视为UNION。

  6. DEPENDENT UNION
    这种情况较为复杂,通常涉及到外部查询影响UNION部分的子查询。

  7. UNION RESULT

    SELECT * FROM (SELECT * FROM table1 UNION SELECT * FROM table2) AS union_result;
    

    这里,UNION的结果被作为派生表处理。

  8. DERIVED

    SELECT * FROM (SELECT * FROM table1) AS derived_table;
    

    这里,内部的SELECT是一个派生表查询。

这些例子展示了不同select_type值在实际查询中的应用。理解这些类型有助于分析和优化复杂的SQL查询。

4 索引type字段

4.1 explain的type字段有哪些?

在MySQL的EXPLAIN命令输出中,type字段是一个非常重要的指标,它显示了MySQL决定使用哪种方式来访问表。以下是type字段可能的值,按性能从好到坏排序:

  1. system:表只有一行数据(等同于系统表),是const类型的一个特例。
  2. const:表示通过索引一次就找到了,适用于主键或唯一索引的等值查询,const 查询速度非常快,因为最多只返回一行数据。
  3. eq_ref:一对一关系,唯一索引扫描,用于主键或唯一索引的关联查询。
  4. ref:非唯一索引扫描,返回匹配某个单个值的所有行。
  5. fulltext:全文索引。
  6. ref_or_null:类似ref,但是MySQL会额外搜索包含NULL值的行。
  7. index_merge:表示使用了索引合并优化。
  8. unique_subquery:在IN子句中用到的唯一索引查询,该类型和eq_ref类似,但是使用了IN查询,且子查询是主键或者唯一索引。
  9. index_subquery:在IN子句中用到的非唯一索引查询,和unique_subquery类似,只是子查询使用的是非唯一索引。
  10. range:只检索给定范围的行,使用一个索引来选择行。范围扫描,表示检索了指定范围的行,主要用于有限制的索引扫描。比较常见的范围扫描是带有BETWEEN子句或WHERE子句里有>、>=、<、<=、IS NULL、<=>、BETWEEN、LIKE、IN()等操作符。
  11. index:全索引扫描。
  12. all: 查询条件没有索引,需要全表扫描
    index:全索引扫描,和ALL类似,只不过index是全盘扫描了索引的数据。当查询仅使用索引中的一部分列时,可使用此类型。有两种场景会触发:
  • 如果索引是查询的覆盖索引,并且索引查询的数据就可以满足查询中所需的所有数据,则只扫描索引树。此时,explain的Extra 列的结果是Using index。index通常比ALL快,因为索引的大小通常小于表数据。
  • 按索引的顺序来查找数据行,执行了全表扫描。此时,explain的Extra列的结果不会出现Uses index
  1. ALL:全表扫描,性能最差。

4.2 以下是针对MySQL EXPLAIN中type字段的每个值的SQL查询示例:

当然,以下是针对MySQL EXPLAINtype字段的每个值的SQL查询示例:

  1. system
    -- 假设table1只有一行数据
    SELECT * FROM table1;
    
  2. const
    -- 假设id为主键
    SELECT * FROM table WHERE id = 1;
    
  3. eq_ref
    -- 假设table2的id是table1的外键
    SELECT * FROM table1 JOIN table2 ON table1.id = table2.id;
    
  4. ref
    -- 假设column是非唯一索引
    SELECT * FROM table WHERE column = 'value';
    
  5. fulltext
    -- 假设对column列有全文索引
    SELECT * FROM table WHERE MATCH(column) AGAINST('text');
    
  6. ref_or_null
    -- 假设column是非唯一索引,且可能包含NULL
    SELECT * FROM table WHERE column = 'value' OR column IS NULL;
    
  7. index_merge
    -- 假设对column1和column2有单独的索引
    SELECT * FROM table WHERE column1 = 'value1' OR column2 = 'value2';
    
  8. unique_subquery
    -- 假设id为唯一索引
    SELECT * FROM table WHERE id IN (SELECT id FROM table2 WHERE column = 'value');
    
  9. index_subquery
    -- 假设column为非唯一索引
    SELECT * FROM table WHERE column IN (SELECT column FROM table2 WHERE column2 = 'value');
    
  10. range
    -- 假设对column有索引
    SELECT * FROM table WHERE column BETWEEN 'value1' AND 'value2';
    
  11. index
    -- 假设对column有索引
    SELECT column FROM table;
    
  12. ALL
    -- 无索引的全表扫描
    SELECT * FROM table;
    

这些示例演示了如何在不同情况下生成特定的type值,帮助理解EXPLAIN输出中的这些类型。

4.3 如何理解这里的index,

index:全索引扫描,和ALL类似,只不过index是全盘扫描了索引的数据。当查询仅使用索引中的一部分列时,可使用此类型。有两种场景会触发:

  • 如果索引是查询的覆盖索引,并且索引查询的数据就可以满足查询中所需的所有数据,则只扫描索引树。此时,explain的Extra 列的结果是Using index。index通常比ALL快,因为索引的大小通常小于表数据。
  • 按索引的顺序来查找数据行,执行了全表扫描。此时,explain的Extra列的结果不会出现Uses index。

当然,这里是两个触发index查询类型的MySQL示例:

  1. 使用覆盖索引的查询

    • 假设user表有一个覆盖索引idx_name_age,包含nameage列。
    • 查询只涉及到这两列,因此MySQL可以只扫描索引而不是整个表:
      SELECT name, age FROM user USE INDEX (idx_name_age);
      
    • 这个查询中,EXPLAIN的结果可能会在Extra列显示Using index
  2. 按索引顺序的全表扫描

    • 假设user表有一个索引idx_ageage列上。
    • 这个查询虽然使用了age索引,但需要返回表中的其他未索引列,导致全表扫描:
      SELECT name, age FROM user ORDER BY age;
      
    • 在这种情况下,EXPLAINExtra列不会显示Using index因为它需要访问表中未被索引的数据。

在第一个例子中,查询可以完全通过索引来满足,而在第二个例子中,虽然查询利用了索引的顺序,但仍然需要访问表中的额外数据。这两种情况都会触发index类型的查询,但由于不同的使用方式,它们在性能上可能有所差异。

5 一些其他的结果列

5.1 possible_keys中有哪些值

展示当前查询可以使用哪些索引,这一列的数据是在优化过程的早期创建的,因此有些索引可能对于后续优化过程是没用的。

5.1.1 key

表示MySQL实际选择的索引

5.1.2 key_len

索引使用的字节数。由于存储格式,当字段允许为NULL时,key_len比不允许为空时大1字节。
key_len计算公式: https://www.cnblogs.com/gomysql/p/4004244.html
在这里插入图片描述

5.1.3 ref

表示将哪个字段或常量和key列所使用的字段进行比较。
如果ref是一个函数,则使用的值是函数的结果。要想查看是哪个函数,可在EXPLAIN语句之后紧跟一个SHOW WARNING语句。

5.1.4 rows

MySQL估算会扫描的行数,数值越小越好。

5.1.5 filtered

表示符合查询条件的数据百分比,最大100。用rows × filtered可获得和下一张表连接的行数。例如rows = 1000,filtered = 50%,则和下一张表连接的行数是500。

TIPS
在MySQL 5.7之前,想要显示此字段需使用explain extended命令;
MySQL.5.7及更高版本,explain默认就会展示filtered

6 extra列

6.1 比较关键的几个信息字段

在MySQL的EXPLAIN命令输出中,Extra列提供了关于查询执行的附加信息,这些信息有助于理解MySQL是如何处理查询的。以下是一些关键的Extra字段及其含义的详细介绍:

  1. Using index:这表示查询仅通过索引来获取所需的数据,而无需额外读取表中的数据行。这通常发生在覆盖索引的情况下,即查询的所有字段都包含在索引中。

  2. Using where:这表示MySQL服务器在从存储引擎接收到数据行后,使用了额外的WHERE条件来进一步过滤结果。

  3. Using index condition:这种情况下,查询的某些列可能未被完全覆盖在索引中。MySQL会首先使用索引来过滤数据,然后使用WHERE子句中的其余条件进一步筛选这些已过滤的数据行。

  4. Using temporary:这表示MySQL为了处理查询,需要创建临时表。这种情况常见于需要对结果进行排序或分组的查询,如使用DISTINCTGROUP BY或某些JOIN操作。

  5. Using filesort:MySQL使用了外部排序方法来对结果进行排序,而不是直接通过索引排序。当数据量较小时,排序可能在内存中完成,但较大数据量可能需要磁盘排序。出现这种情况时,通常考虑使用索引来优化排序操作。

  6. Select tables optimized away:这通常发生在使用聚合函数(如MAX()MIN())查询索引列时。MySQL优化器能够直接从索引中获取所需的最大或最小值,而无需实际扫描表中的行。

这些Extra字段值提供了查询优化和性能调整的重要线索。通过理解这些值的含义,可以更好地分析查询效率,并在必要时进行相应的优化。

6.2 分别给我举一个例子

当然,这里是MySQL EXPLAIN命令中Extra列关键字段的示例:

  1. Using index

    -- 假设在name字段上有索引
    EXPLAIN SELECT name FROM users WHERE name = 'Alice';
    -- 这个查询可能显示Using index,因为它只涉及到索引字段
    
  2. Using where

     EXPLAIN SELECT * FROM users WHERE age > 25 AND name = 'Alice';-- 假设在name字段上有索引,但没有在age字段上。这里,MySQL会使用索引找到所有名为'Alice'的行,然后在返回的结果上应用`age > 25`的条件。
    
  3. Using index condition:(索引下推技术)

    -- 假设在(name,age)字段上有联合索引,
    EXPLAIN SELECT name, age FROM users WHERE name LIKE 'A%' AND age > 18;
    -- 这个查询可能显示Using index condition
    
  4. Using temporary

    -- 假设name字段没有索引
    EXPLAIN SELECT DISTINCT name FROM users;
    -- 这个查询可能显示Using temporary,因为需要创建临时表来处理DISTINCT
    
  5. Using filesort

    -- 假设name字段没有索引
    EXPLAIN SELECT * FROM users ORDER BY name;
    -- 这个查询可能显示Using filesort,因为需要对结果进行排序
    
  6. Select tables optimized away

    -- 假设id字段是主键
    EXPLAIN SELECT MIN(id) FROM users;
    -- 这个查询可能显示Select tables optimized away,因为可以直接从索引中获得最小值
    

这些示例展示了不同Extra字段值的典型应用场景。通过这些示例,您可以更好地理解EXPLAIN输出中这些值的含义及其对查询优化的指导意义。

6.3 对于index级别以上的是不是都会导致extra的using index?

在MySQL中,EXPLAIN命令的type字段描述了表的访问类型,而Extra字段则提供了关于查询执行的额外信息。type字段中index级别以上的访问类型并不总是导致Extra字段显示Using indexUsing indexExtra字段中出现的具体情况取决于查询是否满足某些特定条件:

  1. Using index出现在Extra字段中的条件是:

    • 查询操作仅涉及索引中的列,即是所谓的“覆盖索引”。即使查询类型是index(全索引扫描),但如果查询的列不完全在索引中,Using index就不会出现。
  2. 对于type字段中不同级别的类型,Using index的出现情况如下:

    • const、eq_ref:这些类型通常表示索引被有效利用,但是否使用Using index取决于查询的列是否完全由索引覆盖。
    • ref、fulltext、ref_or_null、index_merge、unique_subquery、index_subquery、range:这些类型中的Using index出现也同样依赖于查询是否为覆盖索引的情况。
    • index:尽管表示全索引扫描,但Using index仅当查询列完全由索引覆盖时才会出现。
    • ALL:此类型通常表示全表扫描,不会出现Using index,因为它不依赖于索引来检索数据。

因此,并非type字段中的index级别以上的访问类型都会导致Extra字段出现Using index。是否出现Using index取决于查询是否能够仅通过索引来获取所需数据,而不需要访问表的数据行。

相关文章:

深入理解mysql的explain命令

1 基础 全网最全 | MySQL EXPLAIN 完全解读 1.1 MySQL中EXPLAIN命令提供的字段包括&#xff1a; id&#xff1a;查询的标识符。select_type&#xff1a;查询的类型&#xff08;如SIMPLE, PRIMARY, SUBQUERY等&#xff09;。table&#xff1a;查询的是哪个表。partitions&…...

相交链表(LeetCode 160)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路方法一&#xff1a;暴力法方法二&#xff1a;哈希表方法三&#xff1a;双栈方法四&#xff1a;双指针&#xff1a;记录链表长度方法五&#xff1a;双指针&#xff1a;互换遍历 5.实现示例参考文献 1.问题描述 给两个单链表的…...

C++多态(详解)

一、多态的概念 1.1、多态的概念 多态&#xff1a;多种形态&#xff0c;具体点就是去完成某个行为&#xff0c;当不同的对象去完成时会产生出不同的状态。 举个例子&#xff1a;比如买票这个行为&#xff0c;当普通人买票时&#xff0c;是全价买票&#xff1b;学生买票时&am…...

06、基于内容的过滤算法Tensorflow实现

06、基于内容的过滤算法Tensorflow实现 开始学习机器学习啦&#xff0c;已经把吴恩达的课全部刷完了&#xff0c;现在开始熟悉一下复现代码。全部工程可从最上方链接下载。 05、基于梯度下降的协同过滤算法中已经介绍了协同过滤算法的基本实现方法&#xff0c;但是这种方法仅…...

html/css中用float实现的盒子案例

运行效果&#xff1a; 代码部分&#xff1a; <!doctype html> <html> <head> <meta charset"utf-8"> <title>无标题文档</title> <style type"text/css">.father{width:300px; height:400px; background:gray;…...

simulink中 Data store memory、write和read模块及案例介绍

目录 1.Data store memory模块 2.data store write模块 3.data store read模块 4.仿真分析 4.1简单使用三个模块 4.2 模块间的调用顺序剖析 1.Data store memory模块 向右拖拉得到Data store read模块&#xff0c;向左拉得到Data write模块 理解&#xff1a;可视为定义变量…...

java设计模式学习之【装饰器模式】

文章目录 引言装饰器模式简介定义与用途实现方式 使用场景优势与劣势装饰器模式在Spring中的应用画图示例代码地址 引言 在日常生活中&#xff0c;我们常常对基本事物添加额外的装饰以增强其功能或美观。例如&#xff0c;给手机加一个保护壳来提升其防护能力&#xff0c;或者在…...

Ubuntu宝塔面板本地部署Emlog个人博客网站并远程访问【内网穿透】

文章目录 前言1. 网站搭建1.1 Emolog网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3. 公网访问测试总结 前言 博客作为使…...

简述IO流的使用以及使用时需要注意的事项

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍介绍IO流的使用以及使用时需要注意的事项以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录获&#xff0c;友友们有任何问题可…...

西工大计算机学院计算机系统基础实验一(函数编写11~14)

稳住心态不要慌&#xff0c;如果考试周冲突的话&#xff0c;可以直接复制这篇博客和上一篇博客西工大计算机学院计算机系统基础实验一&#xff08;函数编写1~10&#xff09;-CSDN博客最后的代码&#xff0c;然后直接提交&#xff0c;等熬过考试周之后回过头再慢慢做也可以。 第…...

Spring 声明式事务

Spring 声明式事务 1.Spring 事务管理概述1.1 事务管理的重要性1.2 Spring事务管理的两种方式1.2.1 编程式事务管理1.2.2 声明式事务管理 1.3 为什么选择声明式事务管理 2. 声明式事务管理2.1 基本用法2.2 常用属性2.2.1 propagation&#xff08;传播行为&#xff09;2.2.2 iso…...

通达OA inc/package/down.php接口存在未授权访问漏洞

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 一. 产品简介 通达OA&#xff08;Office Anywhere网络智能办公系统&am…...

数据库原理: 笛卡儿积

笛卡儿积&#xff08;Cartesian Product&#xff09;是集合论中的一个概念&#xff0c;也在数据库中的查询操作中经常使用。笛卡儿积是指两个集合&#xff08;或更多集合&#xff09;之间所有可能的组合。如果有两个集合A和B&#xff0c;它们的笛卡儿积记作A B&#xff0c;表示…...

docker安装配置prometheus+node_export+grafana

简介 Prometheus是一套开源的监控预警时间序列数据库的组合&#xff0c;Prometheus本身不具备收集监控数据功能&#xff0c;通过获取不同的export收集的数据&#xff0c;存储到时序数据库中。Grafana是一个跨平台的开源的分析和可视化工具&#xff0c;将采集过来的数据实现可视…...

【JavaScript】JS——Map数据类型

【JavaScript】JS——Map数据类型 什么是Map?特性Map与Object的比较 map的创建map的属性map相关方法map的遍历 什么是Map? 存储键值对的对象。 能够记住键的原始插入顺序任何值&#xff08;对象或原始值&#xff09;都可以作为键或值。 特性 Map中的一个键只能出现一次&am…...

【【FPGA的 MicroBlaze 的 介绍与使用 】】

FPGA的 MicroBlaze 的 介绍与使用 可编程片上系统&#xff08;SOPC&#xff09;的设计 在进行系统设计时&#xff0c;倘若系统非常复杂&#xff0c;采用传统 FPGA 单独用 Verilog/VHDL 语言进行开发的方式&#xff0c;工作量无疑是巨大的&#xff0c;这时调用 MicroBlaze 软核…...

PyQt pdf格式保存

参考文章 pyqt5:利用QFileDialog从本地选择图片\文本文档显示到label、保存图片\label文本到本地&#xff08;附代码&#xff09;_pyqt5中qfiledialog.getopenfileurl-CSDN博客 txt文件的打开与保存 def openTextFile(self): # 选择文本文件上传fd,fp QFileDialog.getOpen…...

微前端介绍

目录 微前端概念 微前端特性 场景演示 微前端方案 iframe 方案 qiankun 方案 micro-app 方案 EMP 方案 无界微前端 方案 无界方案 成本低 速度快 原生隔离 功能强大 总结 前言&#xff1a;微前端已经是一个非常成熟的领域了&#xff0c;但开发者不管采用哪个现…...

工业机器视觉megauging(向光有光)使用说明书(一,轻量级的visionpro)

机器视觉megauging&#xff08;未名之光&#xff0c;向光有光&#xff09;程序软件资源已经发布&#xff0c;欢迎下载尝新 8:11 2023/12/2 首先&#xff0c;既然觉得可以发表了&#xff0c;就发表。 其次&#xff0c;我这个人没写过什么软件使用说明书&#xff0c;既然走到这路…...

Java——面试:String 和 StringBuffer 的区别?

相同点&#xff1a; String 和 StringBuffer&#xff0c;它们可以储存和操作字符串&#xff0c; 即包含多个字符的字符数据。 String 和 StringBuffer 的区别有以下几点&#xff1a; 1.String 类提供了数值不可改变的字符串。而 StringBuffer 类提供的字符串进行修改。 当你知…...

图扑软件受邀出席高交会-全球清洁能源创新博览会

“相聚鹏城深圳&#xff0c;共享能源盛宴” 第二十五届中国国际高新技术成果交易会(简称“高交会”)于 11 月 15-18 日在深圳盛大开幕。高交会由商务部、科学技术部、工业和信息化部、国家发展改革委、农业农村部、国家知识产权局、中国科学院、中国工程院和深圳市人民政府共同…...

vue项目下npm或yarn下安装echarts多个版本

最近在大屏展示的时候&#xff0c;用到了百度的echarts图表库&#xff0c;看完效果图后&#xff0c;又浏览了一下echarts官网案例&#xff0c;大同小异。但是搬砖过程中发现实际效果和demo相差甚远&#xff0c;一番折腾发现&#xff0c;项目中安装的是echarts4.x版本&#xff0…...

在内网开发中使用Nginx代理来访问钉钉新版服务端API

如果你在内网开发中使用Nginx代理来访问钉钉新版服务端API&#xff0c;你可以在Nginx配置文件中进行相应的配置。 以下是一个简单的示例Nginx配置&#xff0c;用于将对指定URL的请求代理到钉钉服务端API&#xff1a; server { listen 80; server_name your_server_domain; l…...

机器学习算法如何进行特征重要性评估

特征重要性评估是机器学习中一种常用的方法&#xff0c;用于确定输入特征对模型预测的贡献程度。以下是几种常见的机器学习算法进行特征重要性评估的方法&#xff1a; 1 决策树算法&#xff08;如随机森林和梯度提升树&#xff09;&#xff1a;决策树算法可以通过计算每个特征…...

运行启动vue项目报报错node: --openssl-legacy-provider is not allowed in NODE_OPTIONS解决

报错的问题就是package.json中的Scripts下的dev 解决方法就是要不升级你的应用代码&#xff0c;支持 新版本的node.js 要不就是删除SET NODE_OPTIONS--openssl-legacy-provider &&代码&#xff0c;如下代码即可正常运行起来...

网工学习5 交换机端口相关配置

交换机的接口属性默认支待一般网络环境&#xff0c;一般情况下是不需要对其接口进行设置的。在某些情况下需 要对其端口属性进行配置时&#xff0c;配置的对象主要有接口隔离、速率、双工等信息。 5.1 接口隔离设置 > 配置接口 GE0/0/1 和 GE0/0/2 的接口隔离功能&#xf…...

使用Pytorch从零开始实现CLIP

生成式建模知识回顾: [1] 生成式建模概述 [2] Transformer I&#xff0c;Transformer II [3] 变分自编码器 [4] 生成对抗网络&#xff0c;高级生成对抗网络 I&#xff0c;高级生成对抗网络 II [5] 自回归模型 [6] 归一化流模型 [7] 基于能量的模型 [8] 扩散模型 I, 扩散模型 II…...

Java网络编程 *TCP与UDP协议*

网络编程 什么是计算机网络? 把分布在不同地理区域的具有独立功能的计算机,通过通信设备与线路连接起来&#xff0c;由功能完善的软件实现资源共享和信息传递的系统 简单来说就是把不同地区的计算机通过设备连接起来,实现不同地区之前的数据传输 网络编程是干什么的? 网络…...

校园外卖小程序源码系统 附带完整的搭建教程

随着大学生消费水平的提高&#xff0c;对于外卖服务的需求也在不断增加。很多学生都面临着课业繁重、时间紧张等问题&#xff0c;无法亲自到餐厅就餐。因此&#xff0c;开发一款适合校园外卖市场的应用软件&#xff0c;将为广大学生提供极大的便利。 以下是部分代码示例&#…...

TiDB专题---1、TiDB简介和特性

什么是TiDB TiDB 是一个分布式 NewSQL 数据库&#xff0c;它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议&#xff0c;具有数据强一致的高可用特性&#xff0c;是一个不仅适合 OLTP 场景还适合 OLAP 场景的混合数据库。 TiDB 是 PingCAP 公司自主设计、研发…...

如何二次封装一个Vue3组件库?

为什么要二次封装组件库 目前开源的Vue3组件库有很多&#xff0c;包括Element Plus、Ant Design Vue、Naive UI、Vuetify、Varlet等等。 在大部分场景中&#xff0c;我们直接使用现有组件库中的组件即可实现功能。如果遇到部分组件的特殊配置或者特殊逻辑&#xff0c;或者当前…...

2024年网络安全比赛--系统渗透测试(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 1.在渗透机中对服务器主机进行信息收集&#xff0c;将服务器开启的端口号作为 Flag 值提交; 2.在渗透机中对服务器主机进行渗透&#xff0c;在服务器主机中获取服务器主机名称&#xff…...

高效的单行python脚本

#-- coding: utf-8 -- “”" Created on Wed Dec 6 13:42:00 2023 author: czliu “”" 1. 平方列表推导 #使用列表推导法计算从 1 到 10 的数字平方 squares [x**2 for x in range(1, 11)] print(squares)2.求偶数 #可以使用列表推导式从列表中筛选偶数。还可以…...

如何通过内网穿透实现无公网IP也能远程访问内网的宝塔面板

文章目录 一、使用官网一键安装命令安装宝塔二、简单配置宝塔&#xff0c;内网穿透三、使用固定公网地址访问宝塔 宝塔面板作为建站运维工具&#xff0c;适合新手&#xff0c;简单好用。当我们在家里/公司搭建了宝塔&#xff0c;没有公网IP&#xff0c;但是想要在外也可以访问内…...

【广州华锐互动】VR沉浸式体验铝厂安全事故让伤害教育更加深刻

随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经逐渐渗透到各个领域&#xff0c;为我们的生活带来了前所未有的便捷和体验。在安全生产领域&#xff0c;VR技术的应用也日益受到重视。 VR公司广州华锐互动就开发了多款VR安全事故体验系统&#xff0c…...

CFLAGS、CXXFLAGS、FFLAGS、FCFLAGS、LDFLAGS、LD_LIBRARY_PATH区别

这些环境变量在编译和链接过程中扮演着重要的角色。下面是对每个环境变量的详细说明及示例&#xff1a; CFLAGS&#xff1a;用于设置C编译器的编译选项。 示例&#xff1a;将优化级别设置为最高&#xff0c;启用所有警告信息&#xff0c;并指定目标体系结构为x86-64。 export C…...

阿里云租赁费用_阿里云服务器多配置报价表

阿里云服务器租用费用&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、轻量应用服务器2核2G3M带宽轻量服务器一年87元&#xff0c;2核4G4M带宽轻量服务器一年165元12个月&#xff0c;ECS云服务器e系列2核2G配置99元一年、2核4G配置365元一年、2核8G配置522元一年…...

网络层(1)——概述

一、概述 网络层毫无疑问是最复杂的一层&#xff0c;涉及到大量的协议与结构的内容。在如今主流的设计中&#xff0c;大家都会把网络层分成两个部分&#xff1a;数据平面、控制平面。其中数据平面指的是网络层中每台路由器的功能&#xff0c;它决定了到达路由器端口输入链路之一…...

计算机网络——网络层

目录 一、网络层的作用 二、网络层的协议 &#xff08;一&#xff09;ARP地址解析协议 &#xff08;二&#xff09;ICMP国际控制报文协议 &#xff08;三&#xff09;IGMP网际组织管理协议 三、ip地址 &#xff08;一&#xff09;ip地址的概念 &#xff08;二&#xff…...

Antd search input无中框

发现input.search&#xff0c; 搜索图标的左侧有个竖线&#xff0c;不是很好看 把它改掉, 新建一个自己的CSS .custom-search-input{.ant-input-affix-wrapper{border-right: none !important;}.ant-input-group-addon{.ant-btn{border-left: none !important;}}}应用 <S…...

【PyTorch】概述

文章目录 1. PyTorch是什么&#xff1f;2. PyTorch的特点3. PyTorch的架构 1. PyTorch是什么&#xff1f; PyTorch是一个深度学习框架&#xff0c;由Facebook于2016年开源发布。PyTorch是基于Torch框架的Python接口&#xff0c;旨在提供易用的强大工具来进行神经网络的构建和训…...

非对象集合交、并、差处理

对于集合取交集、并集的处理其实有很多种方式,这里就介绍3种 第一种 是CollectionUtils工具类 第二种 是List自带方法 第三种 是JDK1.8 stream 新特性 1、CollectionUtils工具类 下面对于基本数据(包扩String)类型中的集合进行demo示例。 public static void main(String[]…...

时间序列预测实战(二十五)PyTorch实现Seq2Seq进行多元和单元预测(附代码+数据集+完整解析)

一、本文介绍 本文给大家带来的时间序列模型是Seq2Seq&#xff0c;这个概念相信大家都不陌生了&#xff0c;网上的讲解已经满天飞了&#xff0c;但是本文给大家带来的是我在Seq2Seq思想上开发的一个模型和新的架构&#xff0c;架构前面的文章已经说过很多次了&#xff0c;其是…...

电子学会C/C++编程等级考试2022年09月(三级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:课程冲突 小 A 修了 n 门课程, 第 i 门课程是从第 ai 天一直上到第 bi 天。 定义两门课程的冲突程度为 : 有几天是这两门课程都要上的。 例如 a1=1,b1=3,a2=2,b2=4 时, 这两门课的冲突程度为 2。 现在你需要求的是这 n 门课…...

【数据库】基于时间戳的并发访问控制,乐观模式,时间戳替代形式及存在的问题,与封锁模式的对比

使用时间戳的并发控制 ​专栏内容&#xff1a; 手写数据库toadb 本专栏主要介绍如何从零开发&#xff0c;开发的步骤&#xff0c;以及开发过程中的涉及的原理&#xff0c;遇到的问题等&#xff0c;让大家能跟上并且可以一起开发&#xff0c;让每个需要的人成为参与者。 本专栏会…...

Python 日志(略讲)

日志操作 日志输出&#xff1a; # 输出日志信息 logging.debug("调试级别日志") logging.info("信息级别日志") logging.warning("警告级别日志") logging.error("错误级别日志") logging.critical("严重级别日志")级别设置…...

C++ 指针进阶

目录 一、字符指针 二、指针数组 三、数组指针 数组指针的定义 &数组名 与 数组名 数组指针的使用 四、数组参数 一维数组传参 二维数组传参 五、指针参数 一级指针传参 二级指针传参 六、函数指针 七、函数指针数组 八、指向函数指针数组的指针 九、回调函…...

stm32中滴答定时器与普通定时器的区别

1、两者在单片机中的位置不一样 滴答定时器在内核上&#xff0c;普通定时器在外设上。 由于位置不同&#xff0c;滴答定时器的程序可以移植到所有相同内核的芯片上&#xff0c;但普通定时器的程序却不可以。 2、两者的中断优先级不一样 滴答定时器优先级高&#xff0c;普通定…...

某60区块链安全之薅羊毛攻击实战一学习记录

区块链安全 文章目录 区块链安全薅羊毛攻击实战一实验目的实验环境实验工具实验原理实验内容薅羊毛攻击实战一 实验步骤EXP利用 薅羊毛攻击实战一 实验目的 学会使用python3的web3模块 学会分析以太坊智能合约薅羊毛攻击漏洞 找到合约漏洞进行分析并形成利用 实验环境 Ubun…...

Java程序员,你掌握了多线程吗?(文末送书)

目录 01、多线程对于Java的意义02、为什么Java工程师必须掌握多线程03、Java多线程使用方式04、如何学好Java多线程送书规则 摘要&#xff1a;互联网的每一个角落&#xff0c;无论是大型电商平台的秒杀活动&#xff0c;社交平台的实时消息推送&#xff0c;还是在线视频平台的流…...