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

MySQL 索引介绍和最佳实践

目录

    • 一、前言
    • 二、索引类型
      • 1.1 主键索引(PRIMARY KEY)
      • 1.2 唯一索引(UNIQUE)
      • 1.3 普通索引(NORMAL)
        • 1.3.1 单列普通索引
        • 1.3.2 单列前缀普通索引
        • 1.3.3 多列普通索引
        • 1.3.4 多列前缀普通索引
      • 1.4 空间索引(SPATIAL)
      • 1.5 全文索引(FULLTEXT)
    • 三、表数据准备(后续演示都基于这个表)
    • 四、索引最佳实践
      • 4.1 全值匹配
      • 4.2 最左前缀原则
      • 4.3 在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描
      • 4.4 不能使用索引中范围查询条件右边的列
      • 4.5 尽量使用覆盖索引
      • 4.6 MySQL8.0之前在使用不等于(!=或者<>),not in ,not exists 的时候无法使用索引会导致全表扫描
      • 4.7 is null,is not null 一般情况下也无法使用索引
      • 4.8 like以通配符开头('%abc...')索引失效会变成全表扫描操作
      • 4.9 字符串不加单引号索引失效
      • 4.10 少用or或in,用它查询时,MySQL不一定使用索引
      • 4.11 范围查询索引失效
    • 五、索引使用总结

一、前言

索引是帮助高效获取数据排好序的数据结构,这里都会以MySQL InnoDB 存储引擎做讲解。

  • InnoDB 存储引擎索引有两个特点
    • 聚簇索引
      索引与数据存放在一起、一张表只有一个聚簇索引找到索引的同时也找到了数据,同时聚簇索引具有唯一性,默认是主键,如果表中没有定义主键,InnoDB 会选择一个非空唯一索引代替。如果没有,InnoDB 会定义一个隐藏的_rowid 列来作为聚簇索引。
    • 非聚簇索引
      索引与数据分开存放,索引结构的叶子节点指向了数据的对应行,如:一个表id字段是主键索引,创建一个name字段的普通索引,叶子节点是指向对应主键索引的值,通过name字段的普通索引找到对应id值,然后通过id回表主键索引获取到行数据。

二、索引类型

1.1 主键索引(PRIMARY KEY)

主键索引非空且唯一,在 InnoDB 存储引擎中会作为聚簇索引叶子节点会存放所有行数据。

ALTER TABLE `table_name` ADD PRIMARY KEY (`column`);

1.2 唯一索引(UNIQUE)

唯一索引值唯一,可为NULL值,而且可以多行数据为NULL值,也可以使用多个列作为唯一索引,在存储索引时会对多列组合唯一判断。

ALTER TABLE `table_name` ADD UNIQUE INDEX `index_name`(`column`) USING BTREE;

1.3 普通索引(NORMAL)

普通索引是我们最常用的一类索引,可以使用单个列作为索引,也可以使用多个列作为索引,多列索引也叫做复合索引或者组合索引,在字段的长度超过索引限制(索引最大长度是768字节),可以为字段的部分前缀创建索引。

1.3.1 单列普通索引
ALTER TABLE `table_name` ADD INDEX `index_name`(`column`);
1.3.2 单列前缀普通索引
ALTER TABLE `table_name` ADD INDEX `index_name`(`column`(2));
1.3.3 多列普通索引
ALTER TABLE `table_name` ADD INDEX `index_name`(`column1`, `column2`);
1.3.4 多列前缀普通索引
ALTER TABLE `table_name` ADD INDEX `index_name`(`column1`(2), `column2`(3));

1.4 空间索引(SPATIAL)

空间索引是对空间数据类型的字段建立的索引,MYSQL使用SPATIAL关键字进行扩展,使其能够在空间数据类型的语法上创建空间索引。

# 建表
CREATE TABLE `gis_position` (`id` INT NOT NULL,`gis` geometry NOT NULL COMMENT '空间位置信息',`geohash` VARCHAR ( 20 ) GENERATED ALWAYS AS (st_geohash ( `gis`, 12 )) VIRTUAL,PRIMARY KEY ( `id` ) 
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COMMENT = '空间位置信息';# 创建空间索引
ALTER TABLE gis_position ADD SPATIAL INDEX `idx_gis` ( `gis` );

1.5 全文索引(FULLTEXT)

全文索引类似于 elasticsearch 这样的搜索引擎,会对索引内容进行分词,当然比起 elasticsearch 还是差一些。

ALTER TABLE `table_name` ADD FULLTEXT INDEX `index_name`(`column`);

三、表数据准备(后续演示都基于这个表)

我这里库使用的字符集为utf8mb4,一个字符占用4个字节,utf8占用3个字节,如果字段为varchar类型,需要加的2字节用来存储字符串长度,因为varchar是变长字符串。

CREATE TABLE `company_staff` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`name` varchar(30) NOT NULL DEFAULT '' COMMENT '姓名',`age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄',`position` varchar(20) NOT NULL DEFAULT '' COMMENT '职位',`interest` varchar(20) DEFAULT NULL COMMENT '兴趣爱好',`entry_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '入职时间',PRIMARY KEY (`id`),KEY `idx_name_age_position` (`name`,`age`,`position`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_as_cs COMMENT='公司员工表';INSERT INTO company_staff(name,age,position,interest,entry_time) VALUES('Kerwin',28,'cto','唱跳',NOW());
INSERT INTO company_staff(name,age,position,interest,entry_time) VALUES('Alia',26,'dev','rap',NOW());
INSERT INTO company_staff(name,age,position,interest,entry_time) VALUES('Coco',26,'dev','篮球',NOW());

四、索引最佳实践

对MYSQL的 explain SQL分析工具不熟的可以看看 MySQL explain SQL分析工具详解与最佳实践

4.1 全值匹配

  • 通过 name 字段精准匹配
EXPLAIN SELECT * FROM company_staff WHERE name= 'Kerwin';

在这里插入图片描述
这里可以看到使用了组合索引idx_name_age_position,我们的name字段为varchar(30),计算出name字段占用字节数为key_len = 30*4+2=122,和我们的执行计划中的key_len相等,同时ref为const,可以确定通过name字段精准匹配,使用到了组合索引idx_name_age_position,但是只使用到了一个name字段。

  • 通过 name + age 字段精准匹配
EXPLAIN SELECT * FROM company_staff WHERE name= 'Kerwin' AND age=28;

在这里插入图片描述
和上面通过name字段匹配执行计划类似,name字段占用字节数为122,age字段为int类型,int类型占用4个字节,name + age 字段一共为126字节和执行计划的key_len相等,同时ref为const,const代表使用了两个字段常量,可以确定使用到了组合索引idx_name_age_position,并且使用到了两个字段name + age。

  • 通过 name + age + position 字段精准匹配
EXPLAIN SELECT * FROM company_staff WHERE name= 'Kerwin' AND age=28 AND position='cto';

在这里插入图片描述
position字段为varchar(20),计算出字节数为20*4+2=82,在加上 name、age占用的字节数合计122+4+82=208字节和执行计划的key_len相等,同时ref为const,const,const代表使用了三个字段常量,确认idx_name_age_position索引中三个字段全部被使用到了。

4.2 最左前缀原则

如果索引了多列,要遵守最左前缀原则,指的是查询从索引的最左前列开始并且不跳过索引中的列。

PS:在MySQL8.0的时候加入了一个跳跃索引,在某些情况下会跳过中间没有被匹配的列去匹配后面的列,如果使用到了跳跃索引那么在Extra中会出现 Index skip scan。

  • 通过 age 字段精准匹配
EXPLAIN SELECT * FROM company_staff WHERE age= 28;

在这里插入图片描述
我们直接使用age查询,这里发现没有使用到索引,因为我们的组合索引第一个值是name,如果查询条件中没有name值是无法使用索引的。

  • 通过 name + position 字段精准匹配
EXPLAIN SELECT * FROM company_staff WHERE name= 'Kerwin' AND position='cto';

在这里插入图片描述
我们这里使用name + position 字段精准匹配,执行计划中显示使用到了索引,但是key_len=122,name字段占用的字节数刚好是122,证明这里虽然使用到了idx_name_age_position索引,但是只使用到了name一个字段匹配。

4.3 在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描

  • 这里将name转化成小写查询
EXPLAIN SELECT * FROM company_staff WHERE LOWER(name)= 'kerwin';

在这里插入图片描述

4.4 不能使用索引中范围查询条件右边的列

  • 通过name + position 精准匹配和age范围查询
EXPLAIN SELECT * FROM company_staff WHERE name= 'Kerwin' AND age<35 AND position='cto';

在这里插入图片描述
我们查询时age条件使用范围查询,这里可以看到key_len=126,name+age字节数为126,没有使用到position

4.5 尽量使用覆盖索引

查询条件和响应结果的列都存在索引中,这样只需要通过索引就能获取需要的数据,就不会在进行回表。

EXPLAIN SELECT name,age,position FROM company_staff WHERE name= 'Kerwin' AND age=28 AND position='cto';

在这里插入图片描述

4.6 MySQL8.0之前在使用不等于(!=或者<>),not in ,not exists 的时候无法使用索引会导致全表扫描

in、< 小于、 > 大于、 <=、>= 这些,MySQL内部优化器会根据检索比例、表大小等多个因素整体评估是否使用索引,MySQL8.0的时候不等于(!=或者<>),not in 也会根据检索比例、表大小等多个因素整体评估是否使用索引。

EXPLAIN SELECT * FROM company_staff WHERE name != 'Kerwin';

在这里插入图片描述

4.7 is null,is not null 一般情况下也无法使用索引

EXPLAIN SELECT * FROM company_staff WHERE name IS NULL;

在这里插入图片描述

4.8 like以通配符开头(‘%abc…’)索引失效会变成全表扫描操作

like查询是可以走索引的,但是只能通过前缀查询,不能以通配符开头。

  • 模糊匹配 name 字段,以win结尾的数据
EXPLAIN SELECT * FROM company_staff WHERE name LIKE "%win";

在这里插入图片描述

  • 模糊匹配 name 字段,以Ker开头的数据
EXPLAIN SELECT * FROM company_staff WHERE name LIKE "Ker%";

在这里插入图片描述

4.9 字符串不加单引号索引失效

字符串字段查询如果不加单引号或者算引号会发生隐式转换导致索引失效,如果是数字类型字段查询时使用单引号索引不会失效。

EXPLAIN SELECT * FROM company_staff WHERE name = 666;

在这里插入图片描述
发生隐式转换后SQL相当于变成SELECT * FROM company_staff WHERE CAST(name AS signed int) = 666;,name字段使用了函数索引失效

4.10 少用or或in,用它查询时,MySQL不一定使用索引

MySQL内部优化器会根据检索比例、表大小等多个因素整体评估是否使用索引,拿我这里的数据来说,表里一共三条数据,我IN查询4个值以内(包含4个值)是可以走索引的,一旦超过4个值到了5个值索引就会失效了,MySQL内部优化器会认为我们要IN查询这5个值全表扫描耗时会比使用索引要快,因为使用非聚簇索引是需要回表的。

EXPLAIN SELECT * FROM company_staff WHERE name IN ('4Kerwin','3Kerwin','2Kerwin','1Kerwin','Kerwin');

在这里插入图片描述

4.11 范围查询索引失效

MySQL内部优化器会根据检索比例、表大小等多个因素整体评估是否使用索引,可能是由于单次数据量查询过大导致优化器最终选择不走索引。

要想看到效果需要先添加10000条数据的样子,如果只有几条数据是会一直走索引。

  • 使用存储过程插入10000条数据
## 创建一个插入数据的存储过程
DROP PROCEDURE IF EXISTS insert_company_staff;
delimiter;;
CREATE PROCEDURE insert_company_staff () 
BEGINDECLARE i INT;SET i = 1;WHILE ( i <= 10000 ) DOINSERT INTO `company_staff`(`name`, `age`, `position`, `interest`, `entry_time`) VALUES (CONCAT('Kerwin',i), 28 + i, 'cto', '唱跳', NOW());SET i = i + 1;END WHILE;
END;;
delimiter;// 调用存储过程插入数据
CALL insert_company_staff ();
  • 给年龄添加单值索引
ALTER TABLE `company_staff` ADD INDEX `idx_age`(`age`);
  • 范围查询数据
EXPLAIN SELECT * FROM company_staff WHERE age >= 1 AND age <= 3000

在这里插入图片描述
如果查询范围比较大索引可能会失效,缩小查询范围是可以走索引的,最终是否走索引还是MySQL内部优化器会根据检索比例根据表大小等多个因素整体评估。

五、索引使用总结

假设有一个组合索引 index(a,b,c)

where语句是否使用索引
where a = 3是:使用到a
where a = 3 and b = 5是:使用到a,b
where a = 3 and b= 5 and c = 4是:使用到a,b.c
where b = 3 或 where b = 3 and c = 4 或 where c = 4
where a = 3 and c = 5是:使用到a,但是c不可以,b中间断了
where a = 3 and b > 4 and c=5是:使用到a和b,c不能用在范围之后,b断了
where a = 3 and b like "kk%’ and c =4是:使用到a,b.c
where a = 3 and b like ‘%kk’ and c = 4是:只用到a
where a = 3 and b like ‘%kk%’ and c =4是:只用到a
where a = 3 and b like ‘k%kk%’ and c = 4是:使用到a,b,c

like KK%相当于=常量,%KK和%KK%相当于范围

相关文章:

MySQL 索引介绍和最佳实践

目录 一、前言二、索引类型1.1 主键索引&#xff08;PRIMARY KEY&#xff09;1.2 唯一索引&#xff08;UNIQUE&#xff09;1.3 普通索引&#xff08;NORMAL&#xff09;1.3.1 单列普通索引1.3.2 单列前缀普通索引1.3.3 多列普通索引1.3.4 多列前缀普通索引 1.4 空间索引&#x…...

区块链(7):p2p去中心化之初始化websoket服务端

1 整个流程梳理 服务开启onStart()连接打开onOpen()处理接收到的消息onMesage()连接关闭onClose()异常处理onError()2 创建p2p实现类 package com.example.demo.service;import com.example.demo.entity.BlockChain; import org.java_websocket.WebSocket; import org.java_we…...

原型、原型链、判断数据类型

目录 作用 原型链 引用类型&#xff1a;__proto__(隐式原型)属性&#xff0c;属性值是对象函数&#xff1a;prototype(原型)属性&#xff0c;属性值是对象 Function&#xff1a;本身也是函数 相关方法 person.prototype.isPrototypeOf(stu) Object.getPrototypeOf(objec…...

pycharm中配置torch

在控制台cmd中安装好torch后&#xff0c;在pycharm中使用torch&#xff0c;需要进行简单设置即可。 在pycharm中新建一个工程&#xff0c;在file文件中打开setting 在setting中找到project interpreter编译器 找到conda environment的环境配置&#xff0c;设置好相应的目录 新…...

什么是Times New Roman 字体

如何评价 Times New Roman 字体&#xff1f;&#xff1a;https://www.zhihu.com/question/24614549?sortcreated 新罗马字体是Times New Roman字体&#xff0c;是Office Word默认自带的英文字体之一。 中英文字体 写作中&#xff0c;英文和数字的标准字体为 Times New Roma…...

企业会议新闻稿怎么写?会议类新闻稿如何撰写?

企业会议新闻稿是企业对外传递信息的重要途径之一&#xff0c;它能够将企业的决策、动态以及成果展示给公众。本文伯乐网络传媒将详细解析企业会议新闻稿的写作要点和技巧&#xff0c;以及常见问题及解决方法&#xff0c;帮助大家更好地完成企业会议新闻稿的撰写工作。 一、企业…...

算法 滑动窗口最大值-(双指针+队列)

牛客网: BM45 题目: 数组num, 窗口大小size, 所有窗口内的最大值 思路: 用队列作为窗口&#xff0c;窗口内存储数组坐标&#xff0c;left window[0], right从数组0开始遍历完数组&#xff0c;每次新增元素时&#xff0c;(1)先对窗口大小进行收缩到size大小范围&#xff0c;即…...

Java 并发编程面试题——BlockingQueue

目录 1.什么是阻塞队列 (BlockingQueue)&#xff1f;2.BlockingQueue 有哪些核心方法&#xff1f;3.BlockingQueue 有哪些常用的实现类&#xff1f;3.1.ArrayBlockingQueue3.2.DelayQueue3.3.LinkedBlockingQueue3.4.PriorityBlockingQueue3.5.SynchronousQueue 4.✨BlockingQu…...

Ubuntu Nacos开机自启动服务

1、创建service文件 在/lib/systemd/system目录下创建nacos.service文件 [Unit] Descriptionalibaba nacos Afternetwork.target Documentationhttps://nacos.io/zh-cn/[Service] Userroot Grouproot Typeforking Environment"JAVA_HOME/usr/local/programs/jdk-8u333-li…...

C++核心编程--继承篇

4.6、继承 继承是面向对象三大特征之一 有些类与类之间存在特殊的关系&#xff0c;例如下图中&#xff1a; ​ 我们发现&#xff0c;定义这些类的定义时&#xff0c;都拥有上一级的一些共性&#xff0c;还有一些自己的特性。那么我们遇到重复的东西时&#xff0c;就可以考虑使…...

小程序 解决自定义弹窗滚动穿透问题,解决弹窗背景内容滚动问题

方法一、catchtouchmove"true"&#xff0c; 可以实现弹框背景不滚动&#xff0c;但是也会导致弹框自身无法滚动&#xff0c;如果你的弹窗本身是不需要滚动的&#xff0c;用这个方法是极佳的。 <view class"pop" catchtouchmove"true"> …...

win10搭建Selenium环境+java+IDEA(2)

接着上一个搭建环境开始叙述&#xff1a;win10系统x64安装java环境以及搭建自动化测试环境_荟K的博客-CSDN博客 上一步结尾的浏览器驱动&#xff0c;本人后面改到了谷歌浏览器.exe文件夹下&#xff1a; 这里需要注意&#xff0c;这个新路径要加载到系统环境变量中。 上一步下…...

抢先一步感受未来:Raspberry Pi 5正式发布!

在经历了几年全球供应链困境导致 Raspberry Pi 单板计算机的产能降低和零售价格上涨之后&#xff0c;今天终于迎来了更新。Raspberry Pi 4 上市四年后&#xff0c;今天Raspberry Pi 5正式发布&#xff01;新推出的 Raspberry Pi 5 配备了经过大幅改进升级的SoC&#xff0c;带来…...

【教程】Ubuntu自动查看有哪些用户名与密码相同的账户,并统一修改密码

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 目录 背景说明 开始操作 修改密码 背景说明 有些用户为了图方便或者初始创建用户默认设置等原因&#xff0c;会将密码设置为与用户名相同&#xff0c;但这就使得非常不安全。甚至如果该用户具有sudo权限&#…...

基于 Python+DenseNet121 算法模型实现一个图像分类识别系统

项目展示 一、介绍 DenseNet&#xff08;Densely Connected Convolutional Networks&#xff09;是一种卷积神经网络&#xff08;CNN&#xff09;架构&#xff0c;2017年由Gao Huang等人提出。该网络的核心思想是密集连接&#xff0c;即每一层都接收其前面所有层的输出作为输…...

贪心算法-点灯问题

1、题目描述 给定一个字符串str&#xff0c;只由 ‘X’ 和 ‘.’ 两种字符构成。‘X’ 表示墙&#xff0c;不能放灯&#xff0c;点亮不点亮都可&#xff1b;’.’ 表示居民点&#xff0c;可以放灯&#xff0c;需要点亮。如果灯放在i位置&#xff0c;可以让 i-1&#xff0c;i 和…...

软件测试之单元测试自动化入门基础

单元测试自动化 所谓的单元测试(Unit Test)是根据特定的输入数据&#xff0c;针对程序代码中的最小实体单元的输入输出的正确性进行验证测试的过程。所谓的最小实体单元就是组织项目代码的最基本代码结构&#xff1a;函数&#xff0c;类&#xff0c;模块等。在Python中比较知名…...

93 # 实现 express 错误处理中间件

上一节实现了 express 的中间件&#xff0c;这一节来实现错误处理中间件 执行某一步出错了&#xff0c;统一规定调用 next 传递的参数就是错误信息 先看 express 实现的demo const express require("express"); const app express();app.use("/", (re…...

PHP 创建 MySQL 表

目录 PHP 创建 MySQL 表 使用 MySQLi 和 PDO 创建 MySQL 表 实例 (MySQLi - 面向对象) 实例 (MySQLi - 面向过程) 实例 (PDO) PHP 创建 MySQL 表 一个数据表有一个唯一名称&#xff0c;并有行和列组成。 使用 MySQLi 和 PDO 创建 MySQL 表 CREATE TABLE 语句用于创建 MySQ…...

中兴R5300 G4服务器iSAC管理员zteroot密码遗失的重置方法及IPV6地址启用设置

本文讲解中兴R5300 G4服务器BMC带外iSAC管理员zteroot密码遗失&#xff0c;无法登录时如何对其进行密码重置&#xff0c;以及iSAC启用IPV6地址的方法。 一、重置中兴R5300 G4服务器iSAC管理员zteroot密码 1、通过SSH登录到iSAC&#xff0c;默认用户名&#xff1a;sysadmin&am…...

大数据分布式处理框架Hadoop

大数据是什么 大数据容量常以TB、PB、甚至EB为单位&#xff0c;远超传统数据库的承载能力&#xff0c;无论入库还是查询都出现性能瓶颈。 Hadoop是什么 Hadoop是开源的分布式计算技术框架&#xff0c;用于处理大规模数据和实现分布式存储。 Hadoop核心组件 HDFS&#xff08;…...

echarts学习总结

一、新建一个简单的Echarts 1、首先新建一个vue2的项目&#xff0c;项目中安装Echarts cnpm install echarts --save2、新建一个ref <template><div ref"myecharts" id"myecharts"></div> </template> 3、引入echarts <scri…...

与初至波相关的常见误解

摘要: 初至波是指检波器首次接收到的波. 对它的误解会使我们失去重要的信息. 1. 波从震源到检波器的传导过程 从震源产生波以后, 有些波通过地面直接传导到检波器, 这些称为直达波 (面波);有些在地层中传播,遇到两种地层的分界面时 产生波的反射,在原来地层中形成一种新波, …...

screenfull全屏、退出全屏、指定元素全屏的使用步骤

文章目录 页面全屏页面全屏完整代码 1.下载插件 建议下载指定版本5.1.0&#xff0c;不然可能有一个报错 npm install --save screenfull5.1.02.页面引入 import screenfull from "screenfull"页面全屏 3.在标签上绑定点击事件 <div click"handleFull"…...

问题 - 谷歌浏览器 network 看不到接口请求解决方案

谷歌浏览器 -> 设置 -> 重置设置 -> 将设置还原为其默认值 查看接口情况&#xff0c;选择 All 或 Fetch/XHR&#xff0c;勾选 Has blocked cookies 即可 如果万一还不行&#xff0c;卸载浏览器重装。 参考&#xff1a;https://www.cnblogs.com/tully/p/16479528.html...

Java:正则表达式的命名捕获组

命名捕获组格式 (?<year>.*)-(?<month>.*)-(?<date>.*)完整示例 package com.example.demo;import java.util.regex.Matcher; import java.util.regex.Pattern;public class RegexTests {public static void main(String[] args) {String text "2…...

ELK 处理 Spring Boot 日志

ELK 处理 Spring Boot 日志&#xff0c;妙啊&#xff01; 来源&#xff1a;ibm.com/developerworks/cn/java /build-elk-and-use-it-for-springboot -and-nginx/index.html ELK 简介 Logstash Elasticsearch Kibana ELK 实现方案 ELK 平台搭建 安装 Logstash 安装 Elas…...

No152.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…...

Flutter:类功能索引(全)

Flutter 类功能索引&#xff08;全&#xff09; 本文以表描述形式收录了Flutter中提供的各个类&#xff0c;旨在方便地进行查询相关组件。 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/133415589 跳转&#xff1a;字母索引 A 组件名称描述Animat…...

电脑技巧:笔记本电脑升级固态硬盘的注意事项,看完你就懂了

目录 1、接口类型 2、接口速率 3、固态硬盘的尺寸 4、发热情况 5、总结 如今的固态硬盘价格越来越便宜了&#xff0c;甚至某品牌4TB的PCIe4.0 M.2还爆出过不到900元的“报恩价”&#xff0c;让不少小伙伴都动了扩容甚至囤货的心思。但对于笔记本电脑用户来说&#xff0c;升…...

网站模板怎么弄/外包公司到底值不值得去

这个semantic 更新版本好快~ 首先是代码的标识<code></code> 具体样式就是红框这样的 圈起来代码感觉不错 不过要在semantic.css里在加上如下样式~ code {background-color: rgba(0, 0, 0, 0.02);box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1);display: inline-block;…...

做移动网站优化优/营销网站优化推广

1、问题的产生&#xff1a; 在github上fork一个开源项目之后&#xff0c;想要修改部分代码后供公司项目使用。发现需要修改源项目中的所有内部import&#xff0c;例如开源模块 M中存在P1、P2等package&#xff0c; 其中P2 import P1的import路径为 “github.com/someone/M/P1”…...

汨罗住房和城乡建设局网站/百度指数爬虫

其实只要掌握了import的用法&#xff0c;export也就分分钟的事就搞定了。因为很多也是通用的&#xff0c;比如–connect,–username,–password,–table,–columns,-m等&#xff0c;还比如上节所说的direct,options-file,job。最大的不同可能就是–target-dir换成了–export-di…...

深圳企业官网网站建设/重庆森林讲了什么故事

点击蓝字关注我们吧&#xff01;输入当我们需要和开发交互式工具的时候&#xff0c;需要接收用户的输入&#xff0c;怎么做呢&#xff1f;name input("Name:") age input("Age:") info ---------- info of %s ---------- Name&#xff1a;%s Age&#…...

哈尔滨网站制作哪儿好薇/广告推广平台

升序排列的整数数组 nums 在预先未知的某个点上进行了旋转&#xff08;例如&#xff0c; [0,1,2,4,5,6,7] 经旋转后可能变为 [4,5,6,7,0,1,2] &#xff09;。 请你在数组中搜索 target &#xff0c;如果数组中存在这个目标值&#xff0c;则返回它的索引&#xff0c;否则返回 -…...

网店代运营的公司有哪些/百度搜索怎么优化

Fiksu是一家帮助移动开发者有效找寻新用户的公司&#xff0c;公司总部位于波士顿。该公司刚刚获得了新一轮由高通风险投资公司领投的1000万美元融资。 “对于我们来说&#xff0c;高通公司可以提供强大的战略帮助。”Fiksu公司业务发展副总裁Craig Palli说&#xff0c;“高通和…...