原文转载自「刘悦的技术博客」https://v3u.cn/a_id_206

举凡后端面试,面试官不言数据库则已,言则必称SQL优化,说起SQL优化,网络上各种“指南”和“圣经”难以枚举,不一而足,仿佛SQL优化已然是妇孺皆知的理论常识,然后根据多数无知(Pluralistic ignorance)理论,人们印象里觉得多数人会怎么想怎么做,但这种印象往往是不准确的。那SQL优化到底应该怎么做?本次让我们褪去SQL华丽的躯壳,以最浅显,最粗俗,最下里巴人的方式讲解一下SQL优化的前因后果,前世今生。

SQL优化背景

首先要明确一点,SQL优化不是为了优化而优化,就像冬天要穿羽绒服,不是因为有羽绒服或者羽绒服本身而穿,是因为天儿太冷了!那SQL优化的原因是什么?是因为SQL语句太慢了!从广义上讲,SQL语句包含增删改查,但一般的业务场景下,SQL的读写比例应该是一比十左右,而且写操作很少出现性能问题,即使出现,大多数也是慢查询阻塞导致。生产环境中遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是第一要务。

那我们怎么知道那条SQL慢?开启慢查询日志(slow_query_log)

将 slow_query_log 全局变量设置为“ON”状态

mysql> set global slow_query_log='ON';

设置慢查询日志存放的位置

mysql> set global slow_query_log_file='c:/log/slow.log';

查询速度大于1秒就写日志:

mysql> set global long_query_time=1;

当然了,这并不是标准化流程,如果是实时业务,500ms的查询也许也算慢查询,所以一般需要根据业务来设置慢查询时间的阈值。

当然了,本着“防微杜渐”的原则,在慢查询出现之前,我们完全就可以将其扼杀在摇篮中,那就是写出一条sql之后,使用查询计划(explain),来实际检查一下查询性能,关于explain命令,在返回的表格中真正有决定意义的是rows字段,大部分rows值小的语句执行并不需要优化,所以基本上,优化sql,实际上是在优化rows,值得注意的是,在测试sql语句的效率时候,最好不要开启查询缓存,否则会影响你对这条sql查询时间的正确判断:

SELECT SQL_NO_CACHE

SQL优化手段(索引)

除了避免诸如select *、like、order by rand()这种老生常谈的低效sql写法,更多的,我们依靠索引来优化SQL,在使用索引之前,需要弄清楚到底索引为什么能帮我们提高查询效率,也就是索引的原理,这个时候你的脑子里肯定浮现了图书的目录、火车站的车次表,是的,网上都是这么说的,事实上是,如果没坐过火车,没有使用过目录,那这样的生活索引样例就并不直观,作为下里巴人,我们一定吃过包子:

毫无疑问,当我们在吃包子的时候,其实是在吃馅儿,如果没有馅儿,包子就不是包子,而是馒头。那么问题来了,我怎么保证一口就能吃到馅儿呢?这里的馅儿,可以理解为数据,海量数据的包子,可能直径几公里,那么我怎么能快速得到我想要的数据(馅儿)?有生活经验的吃货一定会告诉你,找油皮儿,因为馅儿里面有油脂,更贴近包子皮儿的地方,或者包子皮儿簙的地方,都会被油脂浸透,也就形成了油皮儿,所以如果照着油皮儿下嘴,至少要比咬其他地方更容易吃到馅儿,那么,索引就是油皮儿,有索引的数据就是有油皮儿的大包子,没有索引的数据就是没有油皮儿的大包子,如此一来,索引的原理显而易见,通过缩小数据范围(油皮儿)来筛选出最终想要的结果(馅儿),同时把随机的查询(随便咬)变成顺序的查询(先找油皮儿),也就是我们总是通过同一种查询方式来锁定数据。

SQL索引的数据结构B+tree

知道了背景,了解了原理,现在我们需要某种容器(数据结构)来帮我们实现包子的油皮儿,这种容器可以协助我们每次查找数据时把咬包子次数控制在一个很小的数量级,最好是常数数量级。于是B+tree闪亮登场。

那么,假设数据库中有1-7条数据,一次查询,B+tree到底怎么帮我们快速检索到数据呢?

SELECT SQL_NO_CACHE id from article where id = 4

如图所示,如果要查找数据4,那么首先会把B+tree的根节点加载到内存,此时发生一次咬包子(IO读操作),在内存中用二分查找确定4在3和5之间,通过根节点所存储的指针加载叶子节点(3,4)到内存中,发生第二次咬包子,结束查询,总计两次。如果不使用索引,我们需要咬四口包子才能把4咬出来。而在生产环境中,2阶的B+树可以表示上百万的数据,如果上百万的数据查找只需要两次IO读操作,性能提高将是巨大的,如果没有索引,每个数据项都要发生一次IO读取,那么总共需要百万次的IO,显然成本是巨大的。

同时,我们知道IO次数读写取决于B+树的层级,也就是高度h,假设当前数据表的数据为N,每个存储容器的数据项的数量是m,则有h=㏒(m+1)N,当数据量N一定的情况下,m越大,h越小;而m = 存储容器的大小 / 数据项的大小,存储容器的大小也就是一个数据页的大小,是固定的,如果数据项占的空间越小,数据项的数量越多,树的高度越低。这就是为什么每个数据项,即索引字段要尽量的小,比如int占4字节,要比bigint8字节少一半。这也是为什么B+树要求把真实的数据放到叶子节点而不是非叶子节点,一旦放到非叶子节点,存储容器的数据项会大幅度下降,导致树的层数增高。当数据项等于1时将会退化成线性表,又变成了顺序查找,所以这也是为啥索引用B+tree,而不用B-tree,根本原因就是叶子节点存储数据高度就会减小,而高度减小才能帮我们更快的吃到馅儿。

说白了就是B-tree也能实现索引,也能让我们更快的访问数据,但是B-tree每个节点上都带着一点儿馅儿,而这个馅儿占据了本来油皮的空间,所以为了扩容,只能增加B-tree的高度进行扩容,随着馅儿越来越多,导致B-tree的高度也越来越高,高度越高,我们咬包子的次数也越来越频繁,读写效率则越来越慢。

当B+树的数据项是复合的数据结构,即所谓的联合索引,比如(name,age,sex)的时候,B+树是按照从左到右的顺序来建立搜索树的,比如当(小明,20,男)这样的数据来检索的时候,B+树会优先比较name来确定下一步的所搜方向,如果name相同再依次比较age和sex,最后得到检索的数据;但当(20,男)这样的没有name的数据来的时候,B+树就不知道下一步该查哪个节点,因为建立搜索树的时候name就是第一个比较因子,必须要先根据name来搜索才能知道下一步去哪里查询。比如当(小明,F)这样的数据来检索时,B+树可以用name来指定搜索方向,但下一个字段age的缺失,所以只能把名字等于小明的数据都找到,然后再匹配性别是男的数据了, 这个是非常重要的性质,即索引的最左匹配特性,关于最左原则可以参照这篇文章:mysql联合索引的最左前缀原则以及b+tree。

最基本的索引建立原则无外乎以下几点:

1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。

2.=和in可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的形式。

3.尽量选择区分度高的列作为索引,区分度的公式是count(distinct col)/count(*),表示字段不重复的比例,比例越大我们扫描的记录数越少,唯一键的区分度是1,而一些状态、性别字段可能在大数据面前区分度就是0,那可能有人会问,这个比例有什么经验值吗?使用场景不同,这个值也很难确定,一般需要join的字段我们都要求是0.1以上,即平均1条扫描10条记录。

4.索引列不能参与计算,保持列“干净”,比如from_unixtime(create_time) = ’2020-01-01’就不能使用到索引,原因很简单,b+树中存的都是数据表中的字段值,但进行检索时,需要把所有元素都应用函数才能比较,显然成本太大。所以语句应该写成create_time = unix_timestamp(’2020-01-01’)。

5.尽量的扩展索引,不要新建索引。比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可。

索引类型(聚簇(一级)/非聚簇(二级))

聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据。

非聚簇索引:将数据存储于索引分开结构,索引结构的叶子节点指向了数据。

上文说了,由于数据本身会占据索引结构的存储空间,因此一个表仅有一个聚簇索引,也就是我们通常意义上认为的主键(Primary Key),如果表中没有定义主键,InnoDB 会选择一个唯一的非空索引代替。如果没有这样的索引,InnoDB 会隐式定义一个主键来作为聚簇索引。InnoDB 只聚集在同一个页面中的记录。包含相邻键值的页面可能相距甚远。如果你已经设置了主键为聚簇索引,必须先删除主键,然后添加我们想要的聚簇索引,最后恢复设置主键即可。除了聚簇索引,其他的索引都是非聚簇索引,比如联合索引,需要遵循“最左前缀”原则。

一般情况下,主键(聚簇索引)通常建议使用自增id,因为聚簇索引的数据的物理存放顺序与索引顺序是一致的,即:只要索引是相邻的,那么对应的数据一定也是相邻地存放在磁盘上的。如果主键不是自增id,那么可以想 象,它会干些什么,不断地调整数据的物理地址、分页,当然也有其他一些措施来减少这些操作,但却无法彻底避免。但,如果是自增的,那就简单了,它只需要一 页一页地写,索引结构相对紧凑,磁盘碎片少,效率也高。

非索引优化

是的,SQL优化包含但并不限于索引优化,索引可以帮助我们优化效率,但索引也并非万能,比如著名的SQL分页偏移优化问题:

select * from table_name limit 10000,10  select * from table_name limit 0,10

limit 分页算法带来了极大的遍历,但数据偏移量一大,limit 的性能就急剧下降。

造成效率问题的根源是查询逻辑:

1.从数据表中读取第N条数据添加到数据集中

2.重复第一步直到 N = 10000 + 10

3.根据 offset 抛弃前面 10000 条数

4.返回剩余的 10 条数据

一般情况下,可以通过增加筛选条件限制查询范围而优化:

select * from table_name where (id >= 10000) limit 10

这种优化手段简单粗暴,但是需要有一些前提:首先必须要有聚簇索引列,而且数据在逻辑上必须是连续的,其次,你还必须知道特征值,也就是每页的最后一条逻辑数据id,如果增加其他的范围筛选条件就会很麻烦。

所以,单纯的关键字优化又需要索引的参与:

Select * From table_name Where id in (Select id From table_name where ( user = xxx ))

给user字段设置索引,子查询只用到了索引列,没有取实际的数据,只取主键,我们知道,聚簇索引是把数据和索引放在一起的,所以把原来的基于 user 的搜索转化为基于主键(id)的搜索,主查询因为已经获得了准确的索引值,所以查询过程也相对较快。

但优化并未结束,由于外层查询没有where条件(因为子查询还未执行),结果就是将分页表的全部数据都扫描了出来load到了内存,然后进行nested loop,循环执行子查询,根据子查询结果对外层查询结果进行过滤。

select * from table_name a inner join ( select id from table_name where (user = xxx) limit 10000,10) b on a.id = b.id

所以,如果外层没有筛选范围,慎用in关键字,因为in子查询总是以外层查询的table作为驱动表,所以如果想用in子查询的话,一定要将外层查询的结果集降下来,降低io次数,降低nested loop循环次数,即:永远用小结果集驱动大的结果集。

SQL优化瓶颈(成也优化,败也优化)

SQL优化能解决所有问题吗?并非如此:

select TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE,TABLE_ROWS,TABLE_COLLATION,ENGINE,group_concat(case CONSTRAINT_NAME when NULL then '' else CONSTRAINT_NAME end) CN,group_concat(case CONSTRAINT_TYPE when NULL then '' else CONSTRAINT_TYPE end) PF from (select a.TABLE_SCHEMA,a.TABLE_NAME,a.TABLE_TYPE,a.TABLE_ROWS,a.TABLE_COLLATION,a.ENGINE,b.CONSTRAINT_NAME,b.CONSTRAINT_TYPE,b.key_cols  
from INFORMATION_SCHEMA.TABLES a  
LEFT JOIN  
(SELECT  
t.TABLE_SCHEMA,  
t.TABLE_NAME,  
t.CONSTRAINT_NAME,  
t.CONSTRAINT_TYPE,  
group_concat(c.COLUMN_NAME) key_cols  
FROM  
INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS t,  
INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS c  
WHERE  
t.TABLE_NAME = c.TABLE_NAME  
AND t.CONSTRAINT_TYPE in ('PRIMARY KEY','FOREIGN KEY')  
AND t.CONSTRAINT_NAME=c.CONSTRAINT_NAME  
and c.table_schema=t.table_schema  
group by TABLE_SCHEMA,TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE) b  
on (a.TABLE_NAME = b.TABLE_NAME and a.table_schema=b.table_schema)  
WHERE a.TABLE_TYPE='BASE TABLE' and a.TABLE_SCHEMA = database()) ccc GROUP BY TABLE_SCHEMA,TABLE_NAME,TABLE_COLLATION,ENGINE;

是的,有时候,我们往往忽略了一个关键问题,就是需求,当出现了上面这种SQL的时候,我们脑子里想的不应该是优化,因为就算优化了,也是饮鸩止渴,由于SQL用例回归时落掉一些极端情况,可能会造成比原来还严重的后果。

那我们应该怎么解决这种“非优化之罪”的情况呢?答案从业务出发,对业务进行解耦,复杂SQL的出现,往往是因为业务频繁变动导致之前设计的表结构无法支撑业务的原子性扩容,所以,从源头出发,对表结构重新设计,或者干脆写一个脚本将慢查询结果集导入到一张新的结果表中,这样往往更加简单和节省时间。

结语:任何一款开源数据库,国内外大厂在用,三流的草台班子也在用,但是用起来的效果不尽相同,同样地,一套太祖长拳,在寻常武师和丐帮帮主乔峰手底下施展出来的威力更是天差地别,其实这道理与武学一般,看似简单的业务更能提现个人实力,貌似稀松平常的索引优化才能检测出一个人的SQL功底,能在平淡之中现神奇,才说得上是大宗匠的手段。

原文转载自「刘悦的技术博客」 https://v3u.cn/a_id_206

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 【JAVA】延迟队列DelayQueue的应用

    最近在开发CRM管理系统时遇到一个需求&#xff1a;销售部门的人员在使用该系统时&#xff0c;可以从【线索公海】模块中 “领取” 潜在的客户线索到自己的【线索私海】模块中&#xff0c;成为自己私有的潜在客户线索&#xff0c;以便后期进行跟踪、开发&#xff0c;同时&#x…...

    2024/5/8 13:39:46
  2. 【学习笔记】JavaWeb入门篇—HTML

    【学习笔记】JavaWeb入门篇—HTML &#x1f4d2;博客首页&#xff1a;*铁甲小宝同学* &#x1f4d2; &#x1f31e;文章目的&#xff1a;HTML—入门篇&#x1f31e; &#x1f64f;博主也在学习阶段&#xff0c;如若发现问题&#xff0c;请告知&#xff0c;非常感谢&#x1f64f…...

    2024/4/24 14:36:27
  3. 【九日集训】《LeetCode刷题报告》题解内容 Ⅲ

    &#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是泽En&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流✨ &#x1f3c5;2021年度博客之星物联网与嵌入式开发TOP5, 周榜43, 总榜3343&a…...

    2024/4/12 13:05:06
  4. Express——基于 Node.js 平台的 web 应用开发框架

    Express1. Express 简介2. Express 的基本使用安装创建基本的 Web 服务器监听 GET 请求监听 POST 请求完整代码req.queryreq.paramsexpress.static()1. Express 简介 Express 是基于 Node.js 平台&#xff0c;快速、开放、极简的 Web 开发框架&#xff08;npm 上的第三方包&…...

    2024/4/8 19:48:16
  5. 云原生周报 | CNCF 发布 2021 云原生发展状态报告,Istio 1.13发布

    业界要闻 1. CNCF 发布 2021 云原生发展状态报告 摘要&#xff1a;报告显示&#xff0c;全球云原生开发者数量增速放缓&#xff1b;2021 年边缘计算是应用 Kubernetes 最广泛的行业&#xff0c;无服务器架构对边缘计算开发者也很有吸引力。48% 的边缘计算开发者正在使用…...

    2024/4/20 8:09:30
  6. 5.两种核心配置文件同时存在(springboot-005-allboth-properties-yml)

    同时写application.properties以及application.yml两个核心配置文件 运行之后观察端口号以及路径&#xff0c;查看哪个核心配置起作用...

    2024/4/13 3:36:51
  7. 用ESP32打造一个物联网红外测温打卡机/春节结束急着上班?哒咩,再努力奋斗也要先测体温

    春节结束的第二周大家应该都已经返工了吧&#xff0c;在春运大潮中来来往往一定要注意疫情风险&#xff01; 人体红外测温系统是一套实时监测来访人员的体温&#xff0c;监测到异常体温时&#xff0c;设备会发出蜂鸣器报警以及相应的钉钉推送&#xff0c;监控者可以很快了解到来…...

    2024/4/24 2:49:14
  8. 【Android Gradle 插件】ProductFlavor 配置 ( externalNativeBuild 配置 | cmake 配置 | ndkBuild 配置 )

    文章目录一、ProductFlavor 配置1、externalNativeBuild 配置1、ProductFlavor#externalNativeBuild 配置2、AppExtension#externalNativeBuild 配置3、cmake 配置4、ndkBuild 配置Android Plugin DSL Reference 参考文档 : 文档主页 : https://google.github.io/android-grad…...

    2024/4/19 22:27:06
  9. 静态资源压缩减少带宽压力,访问速度增快

    如果图片过大压缩后模糊&#xff0c;建议使用图片分段形式展示&#xff1b; 1.人工压缩 Css/JS/IMG实现压缩地址&#xff1a;在线 JS/CSS/HTML 压缩 2.Maven自动打包压缩 自动生成.min文件 <parent><groupId>org.springframework.boot</groupId><arti…...

    2024/4/24 17:31:59
  10. 3步上架iOS APP【2022最新教程】

    第一步 去苹果的Apple Developer网站注册一个「Apple Developer Program」&#xff0c;选择个人账号即可&#xff08;功能和企业账号几乎一致&#xff09;。 如果有小可爱发现提示无法注册&#xff0c;可能是因为你的年龄太小&#xff0c;可以再注册一个成人Apple ID。 个人在…...

    2024/4/19 14:07:58
  11. 2022-2028中国电动尾门市场现状研究分析与发展前景预测报告

    报告页码 : 91 图表 : 128 根据QYR&#xff08;恒州博智&#xff09;的统计及预测&#xff0c;2021年全球电动尾门市场销售额达到了 亿美元&#xff0c;预计2028年将达到 亿美元&#xff0c;年复合增长率&#xff08;CAGR&#xff09;为 %&#xff08;2022-2028&#xff09;。…...

    2024/4/13 3:36:46
  12. XShell连接Ubuntu失败Connection failed

    试了网上所有的方法&#xff0c;包括&#xff1a; 1.重启Ubuntu&#xff0c;重启VMware&#xff0c;重启XShell。失败&#xff1b; 2.ssh-server 服务器的问题&#xff1a; //安装ssh sudo apt-get install openssh-server //检查是否安装成功&#xff0c;出现了sshd即成功 p…...

    2024/4/25 21:06:14
  13. 【Grasshopper基础13】创建可在画布上自由传递的自定义类型数据(上)—— IGH_Goo接口的重要性及其实现

    接下来的两章&#xff0c;我们来介绍一下在之前章节尚未介绍到的&#xff0c;但却在Grasshopper中占据极其重要地位的另一批我们早就虎视眈眈但却还没想到理由要去触碰的电池们&#xff08;左侧红色框指示&#xff09;&#xff1a; 是的&#xff0c;就是这一些带黑底的电池们 …...

    2024/4/18 17:12:12
  14. 实战 | 在应用中使用 Compose Material 3

    Material You 是下一代 Material Design 的发展方向&#xff0c;也是一种全新的设计愿景: 方便您打造个性化的样式设计、满足各种需求并自适应各种屏幕&#xff1b;Jetpack Compose 是用于构建原生 Android 界面的新款现代工具包&#xff0c;可以帮助您更快地构建更出色的应用。…...

    2024/5/5 4:54:02
  15. 【爱心代码大全】——情人节将至,10余款浪漫爱心特效送给你爱的那个她

    谁说我们不懂浪漫的&#xff1f; 不&#xff01; 你错了 程序员一旦浪漫起来&#xff0c;那就是个bug&#xff01;&#xff01;&#xff01; 浪漫表白一 代码部分 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/…...

    2024/4/13 11:05:03
  16. 「springcloud 2021 系列」Seata 彻底解决分布式事务问题

    分布式事务 单体应用 单体应用中&#xff0c;一个业务操作需要调用三个模块完成&#xff0c;此时数据的一致性由本地事务来保证。 微服务应用 随着业务需求的变化&#xff0c;单体应用被拆分成微服务应用&#xff0c;原来的三个模块被拆分成三个独立的应用&#xff0c;分别使…...

    2024/5/5 9:42:31
  17. 通用循环bat脚本

    ECHO off chcp 65001 set i1 :LOOP adb shell xxx.xxxx set now_time%time:~0,2%:%time:~3,2%:%time:~6,2% & set /a ii1 & call echo 当前运行第%i%次,当前时间为%now_time% & GOTO LOOP pause...

    2024/5/5 5:47:25
  18. lua中 do end 的用法

    在 Lua 中&#xff0c;使用 do-end 将一条或多条语句包起来作为一个语句块儿&#xff08;block&#xff09;&#xff0c;形成一个作用域&#xff0c;在这个作用域中定义的局部变量只在当前作用域有效&#xff0c;出了作用域之后就会被垃圾回收器自动回收&#xff01; local x1…...

    2024/4/18 14:02:20
  19. stm32,基础led

    首先两个最重要文件led.c与led.h 先写led.h #ifndef __LED_H #define __LED_H #include "sys.h"#define LED0 PBout(5) //我们要用5&#xff0c;所以他是5 #define LED1 PEout(5) //如果不李姐&#xff0c;可以右键看他定义void LED_Init(void); //初始化 #endif我…...

    2024/5/5 7:12:22
  20. 对面向对象编程的理解

    面向对象编程强调的是编程的思想&#xff0c;将客观存在的一切事物都理解为计算机中的对象&#xff0c;当我们通过编写程序的方式去解决一些业务问题时&#xff0c;应该首先想到的是用什么对象去解决这个问题&#xff0c;其次是才是解决这个问题的步骤。也就是先有结构&#xf…...

    2024/5/5 15:45:06

最新文章

  1. 10000字讲解IoC 思想以及五大注解

    文章目录 IoC 思想通过案例讲解 IoC1.传统的开发方式 SpringIoC 和 DI五大注解ControllerServiceComponentRepositoryConfiguration 为什么要有这么多的类注解类注解之间的关系方法注解 Bean重命名 bean扫描路径 IoC 思想 什么是 Spring 呢&#xff1f; 我们经常听到的都是说…...

    2024/5/8 18:37:55
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. Vue ts 如何给 props 中的变量指定特定类型,比如 Interface 类的

    Vue ts 如何给 props 中的变量指定特定类型&#xff0c;比如 Interface 类的 我有一个这样的变量值类型 一、在没用 ts 之前的 props 类型指定方式 我们都知道之前在没用 ts 之前的 props 变量值类型指定方式&#xff1a; 如下图&#xff0c;billFood 定义方式是这样的&…...

    2024/5/8 4:51:57
  4. 前端学习<二>CSS基础——17-CSS3的常见边框汇总

    CSS3 常见边框汇总 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><title>CSS3 边框</title><style>body, ul, li, dl, dt, dd, h1, h2, h3, h4, h5 {margin: 0;padding: 0;}​body {background-c…...

    2024/5/6 2:11:37
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/8 6:01:22
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/7 14:25:14
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57