CPU 缓存一致性协议 MESI
CPU 高速缓存(Cache Memory)
CPU 为何要有高速缓存
CPU 在摩尔定律的指导下以每 18 个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及 CPU。这就造成了高性能能的内存和硬盘价格及其昂贵。然而 CPU 的高度运算需要高速的数据。为了解决这个问题,CPU 厂商在 CPU 中内置了少量的高速缓存以解决 I\O 速度和 CPU 运算速度之间的不匹配问题。
在 CPU 访问存储设备时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就被称为局部性原理。
时间局部性(Temporal Locality):如果一个信息项正在被访问,那么在近期它很可能还会被再次访问。
比如循环、递归、方法的反复调用等。
空间局部性(Spatial Locality):如果一个存储器的位置被引用,那么将来他附近的位置也会被引用。
比如顺序执行的代码、连续创建的两个对象、数组等。
带有高速缓存的 CPU 执行计算的流程
-
程序以及数据被加载到主内存
-
指令和数据被加载到 CPU 的高速缓存
-
CPU 执行指令,把结果写到高速缓存
-
高速缓存中的数据写回主内存
目前流行的多级缓存结构
由于 CPU 的运算速度超越了 1 级缓存的数据 I\O 能力,CPU 厂商又引入了多级的缓存结构。
多级缓存结构
多核 CPU 多级缓存一致性协议 MESI
多核 CPU 的情况下有多个一级缓存,如何保证缓存内部数据的一致, 不让系统数据混乱。这里就引出了一个一致性的协议 MESI。
MESI 协议缓存状态
MESI 是指 4 中状态的首字母。每个 Cache line 有 4 个状态,可用 2 个 bit 表示,它们分别是:
缓存行(Cache line): 缓存存储数据的单元。
状态 | 描述 | 监听任务 |
---|---|---|
M 修改 (Modified) | 该 Cache line 有效,数据被修改了,和内存中的数据不一致,数据只存在于本 Cache 中。 | 缓存行必须时刻监听所有试图读该缓存行相对就主存的操作,这种操作必须在缓存将该缓存行写回主存并将状态变成 S(共享)状态之前被延迟执行。 |
E 独享、互斥 (Exclusive) | 该 Cache line 有效,数据和内存中的数据一致,数据只存在于本 Cache 中。 | 缓存行也必须监听其它缓存读主存中该缓存行的操作,一旦有这种操作,该缓存行需要变成 S(共享)状态。 |
S 共享 (Shared) | 该 Cache line 有效,数据和内存中的数据一致,数据存在于很多 Cache 中。 | 缓存行也必须监听其它缓存使该缓存行无效或者独享该缓存行的请求,并将该缓存行变成无效(Invalid)。 |
I 无效 (Invalid) | 该 Cache line 无效。 | 无 |
注意:
对于 M 和 E 状态而言总是精确的,他们在和该缓存行的真正状态是一致的,而 S 状态可能是非一致的。如果一个缓存将处于 S 状态的缓存行作废了,而另一个缓存实际上可能已经独享了该缓存行,但是该缓存却不会将该缓存行升迁为 E 状态,这是因为其它缓存不会广播他们作废掉该缓存行的通知,同样由于缓存并没有保存该缓存行的 copy 的数量,因此(即使有这种通知)也没有办法确定自己是否已经独享了该缓存行。
从上面的意义看来 E 状态是一种投机性的优化:如果一个 CPU 想修改一个处于 S 状态的缓存行,总线事务需要将所有该缓存行的 copy 变成 invalid 状态,而修改 E 状态的缓存不需要使用总线事务。
MESI 状态转换
理解该图的前置说明:
1. 触发事件
触发事件 | 描述 |
---|---|
本地读取(Local read) | 本地 cache 读取本地 cache 数据 |
本地写入(Local write) | 本地 cache 写入本地 cache 数据 |
远端读取(Remote read) | 其他 cache 读取本地 cache 数据 |
远端写入(Remote write) | 其他 cache 写入本地 cache 数据 |
2.cache 分类:
前提:所有的 cache 共同缓存了主内存中的某一条数据。
本地 cache: 指当前 cpu 的 cache。
触发 cache: 触发读写事件的 cache。
其他 cache: 指既除了以上两种之外的 cache。
注意:本地的事件触发 本地 cache 和触发 cache 为相同。
上图的切换解释:
状态 | 触发本地读取 | 触发本地写入 | 触发远端读取 | 触发远端写入 |
---|---|---|---|---|
M 状态(修改) | 本地 cache:M 触发 cache:M 其他 cache:I | 本地 cache:M 触发 cache:M 其他 cache:I | 本地 cache:M→E→S 触发 cache:I→S 其他 cache:I→S 同步主内存后修改为 E 独享, 同步触发、其他 cache 后本地、触发、其他 cache 修改为 S 共享 | 本地 cache:M→E→S→I 触发 cache:I→S→E→M 其他 cache:I→S→I 同步和读取一样, 同步完成后触发 cache 改为 M,本地、其他 cache 改为 I |
E 状态(独享) | 本地 cache:E 触发 cache:E 其他 cache:I | 本地 cache:E→M 触发 cache:E→M 其他 cache:I 本地 cache 变更为 M, 其他 cache 状态应当是 I(无效) | 本地 cache:E→S 触发 cache:I→S 其他 cache:I→S 当其他 cache 要读取该数据时,其他、触发、本地 cache 都被设置为 S(共享) | 本地 cache:E→S→I 触发 cache:I→S→E→M 其他 cache:I→S→I 当触发 cache 修改本地 cache 独享数据时时,将本地、触发、其他 cache 修改为 S 共享. 然后触发 cache 修改为独享,其他、本地 cache 修改为 I(无效),触发 cache 再修改为 M |
S 状态 (共享) | 本地 cache:S 触发 cache:S 其他 cache:S | 本地 cache:S→E→M 触发 cache:S→E→M 其他 cache:S→I 当本地 cache 修改时,将本地 cache 修改为 E, 其他 cache 修改为 I, 然后再将本地 cache 为 M 状态 | 本地 cache:S 触发 cache:S 其他 cache:S | 本地 cache:S→I 触发 cache:S→E→M 其他 cache:S→I 当触发 cache 要修改本地共享数据时,触发 cache 修改为 E(独享), 本地、其他 cache 修改为 I(无效), 触发 cache 再次修改为 M(修改) |
I 状态(无效) | 本地 cache:I→S 或者 I→E 触发 cache:I→S 或者 I →E 其他 cache:E、M、I→S、I 本地、触发 cache 将从 I 无效修改为 S 共享或者 E 独享,其他 cache 将从 E、M、I 变为 S 或者 I | 本地 cache:I→S→E→M 触发 cache:I→S→E→M 其他 cache:M、E、S→S→I | 既然是本 cache 是 I,其他 cache 操作与它无关 | 既然是本 cache 是 I,其他 cache 操作与它无关 |
下图示意了,当一个 cache line 的调整的状态的时候,另外一个 cache line 需要调整的状态。
M | E | S | I | |
---|---|---|---|---|
M | × | × | × | √ |
E | × | × | × | √ |
S | × | × | √ | √ |
I | √ | √ | √ | √ |
举个栗子来说:
假设 cache 1 中有一个变量 x = 0 的 cache line 处于 S 状态 (共享)。
那么其他拥有 x 变量的 cache 2、cache 3 等 x 的 cache line 调整为 S 状态(共享)或者调整为 I 状态(无效)。
多核缓存协同操作
假设有三个 CPU A、B、C,对应三个缓存分别是 cache a、b、 c。在主内存中定义了 x 的引用值为 0。
单核读取
那么执行流程是:
CPU A 发出了一条指令,从主内存中读取 x。
从主内存通过 bus 读取到缓存中(远端读取 Remote read), 这是该 Cache line 修改为 E 状态(独享).
双核读取
那么执行流程是:
CPU A 发出了一条指令,从主内存中读取 x。
CPU A 从主内存通过 bus 读取到 cache a 中并将该 cache line 设置为 E 状态。
CPU B 发出了一条指令,从主内存中读取 x。
CPU B 试图从主内存中读取 x 时,CPU A 检测到了地址冲突。这时 CPU A 对相关数据做出响应。此时 x 存储于 cache a 和 cache b 中,x 在 chche a 和 cache b 中都被设置为 S 状态 (共享)。
修改数据
那么执行流程是:
CPU A 计算完成后发指令需要修改 x.
CPU A 将 x 设置为 M 状态(修改)并通知缓存了 x 的 CPU B, CPU B 将本地 cache b 中的 x 设置为 I 状态 (无效)
CPU A 对 x 进行赋值。
同步数据
那么执行流程是:
CPU B 发出了要读取 x 的指令。
CPU B 通知 CPU A,CPU A 将修改后的数据同步到主内存时 cache a 修改为 E(独享)
CPU A 同步 CPU B 的 x, 将 cache a 和同步后 cache b 中的 x 设置为 S 状态(共享)。
MESI 优化和他们引入的问题
缓存的一致性消息传递是要时间的,这就使其切换时会产生延迟。当一个缓存被切换状态时其他缓存收到消息完成各自的切换并且发出回应消息这么一长串的时间中 CPU 都会等待所有缓存响应完成。可能出现的阻塞都会导致各种各样的性能问题和稳定性问题。
CPU 切换状态阻塞解决 - 存储缓存(Store Bufferes)
比如你需要修改本地缓存中的一条信息,那么你必须将 I(无效)状态通知到其他拥有该缓存数据的 CPU 缓存中,并且等待确认。等待确认的过程会阻塞处理器,这会降低处理器的性能。应为这个等待远远比一个指令的执行时间长的多。
Store Bufferes
为了避免这种 CPU 运算能力的浪费,Store Bufferes 被引入使用。处理器把它想要写入到主存的值写到缓存,然后继续去处理其他事情。当所有失效确认(Invalidate Acknowledge)都接收到时,数据才会最终被提交。
这么做有两个风险
Store Bufferes 的风险
第一、就是处理器会尝试从存储缓存(Store buffer)中读取值,但它还没有进行提交。这个的解决方案称为 Store Forwarding,它使得加载的时候,如果存储缓存中存在,则进行返回。
第二、保存什么时候会完成,这个并没有任何保证。
value = 3;void exeToCPUA(){value = 10;isFinsh = true;
}
void exeToCPUB(){if(isFinsh){//value一定等于10?!assert value == 10;}
}
试想一下开始执行时,CPU A 保存着 finished 在 E(独享) 状态,而 value 并没有保存在它的缓存中。(例如,Invalid)。在这种情况下,value 会比 finished 更迟地抛弃存储缓存。完全有可能 CPU B 读取 finished 的值为 true,而 value 的值不等于 10。
即 isFinsh 的赋值在 value 赋值之前。
这种在可识别的行为中发生的变化称为重排序(reordings)。注意,这不意味着你的指令的位置被恶意(或者好意)地更改。
它只是意味着其他的 CPU 会读到跟程序中写入的顺序不一样的结果。
~顺便提一下 NIO 的设计和 Store Bufferes 的设计是非常相像的。~
硬件内存模型
执行失效也不是一个简单的操作,它需要处理器去处理。另外,存储缓存(Store Buffers)并不是无穷大的,所以处理器有时需要等待失效确认的返回。这两个操作都会使得性能大幅降低。为了应付这种情况,引入了失效队列。它们的约定如下:
- 对于所有的收到的 Invalidate 请求,Invalidate Acknowlege 消息必须立刻发送
- Invalidate 并不真正执行,而是被放在一个特殊的队列中,在方便的时候才会去执行。
- 处理器不会发送任何消息给所处理的缓存条目,直到它处理 Invalidate。
即便是这样处理器已然不知道什么时候优化是允许的,而什么时候并不允许。
干脆处理器将这个任务丢给了写代码的人。这就是内存屏障(Memory Barriers)。
写屏障 Store Memory Barrier(a.k.a. ST, SMB, smp_wmb) 是一条告诉处理器在执行这之后的指令之前,应用所有已经在存储缓存(store buffer)中的保存的指令。
读屏障 Load Memory Barrier (a.k.a. LD, RMB, smp_rmb) 是一条告诉处理器在执行任何的加载前,先应用所有已经在失效队列中的失效操作的指令。
void executedOnCpu0() {value = 10;//在更新数据之前必须将所有存储缓存(store buffer)中的指令执行完毕。storeMemoryBarrier();finished = true;
}
void executedOnCpu1() {while(!finished);//在读取之前将所有失效队列中关于该数据的指令执行完毕。loadMemoryBarrier();assert value == 10;
}
引用文章
http://www.importnew.com/10589.html
https://www.cnblogs.com/yanlong300/p/8986041.html
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- JeeSite、Sqoop学习 day01
今天,我开始了JeeSite和Sqoop的学习。 JeeSite:进行了初步了解、学习了环境部署、快速开发体验、Error解决。 Sqoop:学习了简介、原理、架构、应用场景、环境安装、导入导出工具、MySqlToHDFS。 总结一下: 1.Sqoop简介(…...
2024/4/28 12:28:28 - CI/CD持续集成/交付/发布
CI/CD持续集成/交付/发布 一 git github gitlab区别 git版本控制系统 github是git的代码托管服务. gitlab是免费的私人的repo Git与SVN区别 git是一个版本控制系统,是一个内容管理系统,工作管理系统,没有完整的版本号,数据相对于完整,是一个分布式的,按照元数据的存储方式存…...
2024/4/27 21:32:12 - Mac上最强大好用的的右键工具「超级右键」(2)--新建文件/拷贝路径
下面详细介绍一下「超级右键」的新建文件、拷贝路径功能 1、新建文件 《iRightMouse超级右键》允许用户直接使用右键新建文件, App内置了很多常用的文件格式,用户也可以自己新增需要的文件格式,自定义程度很高。 2、拷贝路径 App提供了拷贝…...
2024/4/28 19:28:59 - CTF-Web26(涉及SQL注入--基础题)
26.这个看起来有点简单! 分析: 这一道题很明显是一道SQL注入题,这里我们手工注入: 1、判断是否存在注入点 http://ctf5.shiyanbar.com/8/index.php?id1 and11 http://ctf5.shiyanbar.com/8/index.php?id1 and12 回显不同,说明…...
2024/4/7 19:02:57 - 静态实验
静态实验: 1.地址划分 为各节点配置合法IP地址 2.R1配置: 3.R2配置 4.R3配置 5.R4配置 6.R5配置...
2024/4/7 19:08:06 - 词霸天下---词根273【-pan- 面 包】
...
2024/4/8 3:10:46 - hive自定义UDAF函数
hive自定义UDAF函数 函数类需要继承UDAF类,内部类Evaluator实UDAFEvaluator接口。 Evaluator需要实现 init、iterate、terminatePartial、merge、terminate这几个函数。 a)init函数实现接口UDAFEvaluator的init函数。 b)iterate接收传入的参…...
2024/4/8 5:08:00 - Java猜数小游戏(GUI版)
Java猜数小游戏(GUI版)上一次的连点器坑还没有补,因为我懒得写了,就几个按钮和robot类就可完成。这次写一个简单的游戏(猜数)。三天应该就写好了。 本人为六年级苦逼小学生 以下为java代码 java package g…...
2024/4/11 8:03:55 - 【ACWING刷题】有向图的拓扑序列
【ACWING刷题】有向图的拓扑序列 通过队列与层次遍历实现,每次用该点的入度d[i]进行判定 bool topsort() {queue<int>q;int hh0,tt-1;for (int i1;i<n;i)if(!d[i]) //d[i]存储i点的入度q.push(i);while (!q.empty()){int tq.front();for (…...
2024/4/19 11:39:06 - DSP6678 RapidIO基本原理之一
一、 RapidIO简介 RapidIO是一种非私有的、高带宽的、系统级的互联方式。它是一个包交换的互联,主要作为片间和板件的互联接口。 可用于微处理器、内存、内存映射的IO设备间的连接。RapidIO的基本特征如下: a、灵活的系统架构,支持点对…...
2024/4/17 16:07:03 - 第三代测序技术的主要特点及其在病毒基因组研究中的应用
第三代测序技术的主要特点及其在病毒基因组研究中的应用 来自 万方 喜欢 0 阅读量: 344 作者: 袁易,王铭杰,张欣欣 摘要: 随着基因测序技术的创新和应用,新的高通量测序技术不断涌现,以Pacific Bioscience…...
2024/4/7 22:24:18 - 洛谷P2699 【数学1】小浩的幂次运算
题目思路 :(这应该是普及题里面很水的存在了)暴力判断, 只不过有个小坑就是当sum*w的时候会溢出(long)的问题。 所以我们要改进一下判断条件,从sum * w > r 变为 sum > r/w; 代码如下&a…...
2024/4/26 13:54:13 - MySQL数据库的增删查改
接着我上篇文章继续:MySQL数据库操作 在上篇文章中,我们创建了数据表。 现在我们需要向数据表增加、删除、查询、修改数据 一、创建会话 创建一个会话对象;类似pymysql中的游标,检测我们的sql语句位置 from sqlalchemy.orm import sessionmaker base…...
2024/4/10 7:24:52 - paddedetection目标检测七日打卡营遇到的坑
以下为整理打卡营的遇到的问题,以及QQ群中常见的问题。 1.下载预训练模型太慢 解决方法:1.复制链接下载,解压后把路径添加上去。2,使用百度网盘bypy上传3.使用wget 再把上面的权值地址成解压后文件的地址。 2.上传的结果出错 由于我并没有…...
2024/4/24 14:53:26 - 算法:填充每个节点的下一个右侧节点指针 II
题目 给定一个二叉树。 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。 初始状态下,所有 next 指针都被设置为 NULL。 也就是说对于二叉树的每个节点,next为此…...
2024/4/8 14:06:33 - 小乔皮肤分析-缤纷独角兽/青蛇皮肤
缤纷独角兽/青蛇皮肤人物形象缤纷独角兽青蛇总结独角兽-星元皮肤人物形象 直接上图!!! 缤纷独角兽 【价格】缤纷独角兽是888点券,因为是老皮肤了所以没有打折活动,但是这个皮肤多次进入过碎片商店,若玩…...
2024/4/25 9:38:33 - vue中常见的原理
1 、双向数据绑定的原理 Object.defineProperty()方法有何作用 1、语法 Object.defineProperty(obj, prop, descriptor) 是一个函数,可以对对象里面的属性加一些控制。 2、定义:Object.defineProperty() 直接在一个对象上定义一个新属性,或者…...
2024/4/8 3:38:49 - 2014-06-26
惦念,是一种无法抹杀的伤痛 回忆,总牵连着淡淡的忧伤 往事,触碰着每一根敏感的神经 创作,总根于爱 不恋过去,不问将来 过去的,那么遥远,且遥不可及 将来的,触手可及,却也…...
2024/4/8 8:13:10 - CLUENER 细粒度命名实体识别baseline:BiLSTM-CRF
文章目录数据类别标签类别定义 & 标注规则数据下载地址数据分布数据字段解释数据来源baseline:BiLSTM-CRF运行参考命名实体识别(NameEntity Recognition) 是信息提取的一个子任务,其目的是将文本中的命名实体定位并分类为预定义的类别,如…...
2024/4/28 7:54:57 - 2020年茶艺师(初级)复审模拟考试及茶艺师(初级)模拟考试题库
题库来源:安全生产模拟考试一点通公众号小程序 2020年茶艺师(初级)考试技巧及茶艺师(初级)多少钱,包含茶艺师(初级)考试技巧答案和解析及茶艺师(初级)多少钱…...
2024/4/17 21:02:43
最新文章
- vscode的终端区乱码怎么办呢?
vscode的终端区乱码怎么办呢? 错误效果解决办法一解决办法二(极力推荐方法二)最终效果参考文献 错误效果 解决办法一 解释:你之所以使用了utf8还乱码,是因为你的电脑目前根本无法兼容utf8,只兼容gbk 怎么让你的电脑兼容utf8,我写在方法二 在设置中,输入encoding 解决办法二(极…...
2024/4/29 1:55:23 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - ubuntu添加固定路由
方法: 我的解决方法 添加路由 sudo ip route add 10.xxx.xxx.0/25 via 1.xxx.xxx.xxx(我的是虚拟机)dev ens65 proto static metric122 删除路由 sudo ip route delete 10.xxx.xxx.0/25 gpt答案 添加路由 要在Ubuntu上添加路由,您…...
2024/4/28 13:37:26 - DevOps三步法之反馈:流动是油门,反馈是刹车
打个比方,流动是油门,反馈是刹车。流动是关于行使,反馈是关于安全。车辆要想持续平稳运行,需要油门与刹车良好配合,否则就有可能车毁人亡。核电站需要使核反应处于临界状态,超出临界状态就是核爆炸这也需要…...
2024/4/27 20:47:53 - Vue ts 如何给 props 中的变量指定特定类型,比如 Interface 类的
Vue ts 如何给 props 中的变量指定特定类型,比如 Interface 类的 我有一个这样的变量值类型 一、在没用 ts 之前的 props 类型指定方式 我们都知道之前在没用 ts 之前的 props 变量值类型指定方式: 如下图,billFood 定义方式是这样的&…...
2024/4/28 9:48:25 - 416. 分割等和子集问题(动态规划)
题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满ÿ…...
2024/4/28 4:04:40 - 【Java】ExcelWriter自适应宽度工具类(支持中文)
工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...
2024/4/28 12:01:04 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/4/28 16:34:55 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/4/28 18:31:47 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/4/28 12:01:03 - 【Objective-C】Objective-C汇总
方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...
2024/4/28 12:01:03 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/4/28 12:01:03 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/4/28 16:07:14 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/4/28 23:42:05 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/4/28 9:00:42 - 用欧拉路径判断图同构推出reverse合法性:1116T4
http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai 和 a i 1 a_{i1} ai1 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然࿰…...
2024/4/27 18:40:35 - 【NGINX--1】基础知识
1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...
2024/4/28 4:14:21 - Hive默认分割符、存储格式与数据压缩
目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...
2024/4/27 13:52:15 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/4/27 13:38:13 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/4/28 12:00:58 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/4/28 12:00:58 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/4/27 22:51:49 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/4/28 7:31:46 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/4/28 8:32:05 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/4/27 20:28:35 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) 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 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在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