CPS攻击案例(一)——基于脉冲宽度调制PWM的无人机攻击
本文系原创,转载请说明出处
Please Subscribe Wechat Official Account:信安科研人,获取更多的原创安全资讯
原论文链接:sec22-dayanikli.pdf (usenix.org)
目录
2.3.2 致动器使用PWM的上升沿和下降沿之间的持续时间确定致动数据
摘要
攻击者通过放置在己方无人机上的电磁干扰部件,构造三种不同的攻击波形,作用到无人机控制器与伺服电机之间通讯的PWM电缆,构造的波形与PWM电缆中的PWM波耦合,因原PWM波携带指令数据,耦合后数据变更,进而阻塞或修改指令数据,进而影响伺服电机的操作,最终对无人机进行攻击,达到干扰进入我方空域的敌方无人机,甚至控制敌方无人机,与常规的炮火对空攻击不同,此攻击方式花费较小。
编辑
一 知识背景
1.1 CPS
CPS是cyber-physical system的缩写,也就是信息物理系统。
CPS由四大组件构成:执行器、传感器、控制器以及被控对象,基本执行流程如下图
编辑
传感器将系统变量(例如加速度)转换为电(数字或模拟)信号并将它们发送到控制器;控制器处理传感器数据并决定如何影响系统的未来状态,并向执行器(例如电机)发送致动信号。
1.2 脉冲宽度调制PWM
脉冲宽度调制(英语:Pulse-width modulation,缩写:PWM),简称脉宽调制,是将模拟信号变换为脉冲的一种技术,一般变换后脉冲的周期固定,但脉冲的工作周期会依模拟信号的大小而改变。
(1)提出背景:模拟信号有很多问题
参考:数字信号和模拟信号_一剑何风情的博客-CSDN博客_数字信号
在模拟电路中,模拟信号的值可以连续进行变化,在时间和值的幅度上都几乎没有限制,基本上可以取任何实数值,所以能通过代表任意值对设备进行操作。
编辑
但模拟电路有诸多的问题:例如控制信号容易随时间漂移,难以调节;功耗大;易受噪声和环境干扰等。生成模拟信号对于数字电路而言往往需要额外的数字-模拟转换器。
数字电路在任何时刻,其输出只可能为ON和OFF两种状态,所以数字信息丢失能力弱,抗干扰能力强。
(2)如何用数字信号表示模拟信号
编辑
模拟信号数字化一般需要三个步骤:采样、量化和编码。
1 采样:按时间间隔进行采样。如上图,每 1s 进行一次采样(采样的频率被称为采样率)。
2 量化:因为模拟信号本质上是一连串连续的值,我们可以对这些值进行等级划分(量化的等级),这样步骤一的采集到的样品就可以被划分到不同的等级。
3 编码:步骤二中的不同等级可以表示不同的编码(如果该采样时间段内,波的面积小于二分之一,则认为是0,大于则是1)。则连续的模拟信号最终可以转化 0101 的数字信号。
综上,不难得出,随着采样率和量化等级的增加,转换后的数字信号的曲线也就越能贴近模拟信号的曲线(对比上图的原曲线和黄色曲线)。
(3)PWM技术
PWM技术是一种对模拟信号电平的数字编码方法,通过使用高分辨率计数器(调制频率)调制方波的占空比,从而实现对一个模拟信号的电平进行编码。
占空比(Duty Ratio,Duty Cycle)表示在一个周期内,工作时间与总时间的比值。
方波示例见下图上往下数第二行
编辑
其最大的优点是从处理器(CPS种抽象为控制器)到被控对象之间的所有信号都是数字形式的,无需再进行数模转换过程;而且对噪声的抗干扰能力也大大增强(噪声只有在强到足以将逻辑值改变时,才可能对数字信号产生实质的影响),这也是PWM在通讯等信号传输行业得到大量应用的主要原因。
模拟信号能否使用PWM进行编码调制,仅依赖带宽,这即意味着只要有足够的带宽,任何模拟信号值均可以采用PWM技术进行调制编码。
在信号接收端,需将信号解调还原为模拟信号。
目前在很多微型控制器(MCU)内部都包含有PWM控制器模块。
(4)PWM信号的调制方法
参考维基百科
先介绍一下调制出的脉冲波:
编辑
调制出的脉冲波为方波,T为周期,D为一个工作循环,低值ymin,高值ymax,波的平均值计算公式为:
编辑
算的结果为:
编辑
很多情况下,ymin为0,所以可以简化为:
编辑
其实就是个长方形面积计算公式。。。。。。。。。
有很多调制方法,包括(太难描述,具体请看维基百科链接):
- 微分调制
- 积分-微分调制
- 空间向量调制
- 直接转矩控制
- 事件比例
最简单的调制方法:只需要使用锯齿波或三角波(可以简单地使用震荡器来产生),以及一个比较器。当参考的信号值(图二的红色波)比锯齿波(图二的蓝色波)来的大,则脉冲调制后的结果会在高状态,反之,则在低状态。
编辑
二 攻击方案研究思路
术语:
- intentional electromagnetic interference (IEMI) 故意电磁干扰,故意电磁干扰 (IEMI) 允许攻击者改变致动信号以干扰或控制致动器。(本文的攻击手法验证方法)
- False Actuation Injection (FAI) 假致动注入(本文的攻击手法)
- electromagnetic (EM)
- unmanned aerial vehicle (UAV) 无人机
2.1 研究背景
编辑
无人机的CPS可以简述为上图,从上图中可以看到无人机的CPS系统主要有三个攻击点:攻击者可以利用EM波来阻碍或操纵致动数据,传感器数据或通信信号,分别见上图中的点1、2和3。本文主要针对FAI攻击提出方案,也就是上图的点1——攻击者旨在通过IEMI阻碍或操纵致动器。
控制器通常将致动数据 (例如电动机的速度或旋转角度) 编码到的脉冲宽度调制 (PWM) 信号用于控制执行器。因此,PWM信号的完整性非常重要,因为致动数据的任何阻塞或改变都会导致物理部件的失去控制。
例如,在对固定翼无人机UAV的攻击期间,如果攻击者阻止控制面 (例如,无人机的副翼) 的致动,则受害者UAV可以容易地坠毁。即使使用特定的致动器,攻击者也可以控制控制面 (例如,副翼) 以迫使UAV遵循不安全的轨迹。
本文关注的是攻击者如何在一定距离内获得这种效果,而又不会破坏传统的数字保护,例如控制器和执行器之间的加密通信。
2.2 灵感与动机
法拉第感应定律指出,垂直于导体回路的时变磁场会在导体的端子处产生感应电压 。
攻击者可以通过使用特定波形来影响传送PWM信号的电路(例如,印刷电路板或电缆上的迹线) 来利用这种现象,从而通过改变表示PWM信号的电压来操纵目标致动器的操作。
在某些条件下 (例如,当攻击者利用共振攻击受害者时),感应电压足够大是可以阻止或操纵致动数据。
现有的IEMI工作都是从传感器、控制器出发,攻击以获取物理设备的控制权,本文参考的论文则是第一个使用IEMI干扰并控制执行器的工作。
2.3 PWM控制执行器的机理
2.3.1 PWM信号携带致动数据
PWM信号通过信号中编码的信息 (例如,旋转角度或速度) 来控制致动器。攻击者旨在阻止成功传输(阻塞攻击)或更改此信息(篡改与注入攻击)以操纵执行器运动。
如图2a所示,PWM信号是具有20 ms的固定周期tPWM的矩形波形。持续时间thigh在1ms和2ms之间变化,并携带致动信息,该致动信息是诸如旋转角度或速度之类的致动数据。
编辑
在本节中,将针对 PWM 携带旋转角度数据的伺服电机应用说明 PWM 操作;然而,相同的机制(即,数据编码到thigh)也被直流电机应用于传递转速 (rpm) 信息。
伺服电机(servo motor )是指在伺服系统中控制机械元件运转的发动机,是一种补助马达间接变速装置。
伺服电机可以控制速度,位置精度非常准确,可以将电压信号转化为转矩和转速以驱动控制对象。
伺服电机转子转速受输入信号控制,并能快速反应,在自动控制系统中,用作执行元件,且具有机电时间常数小、线性度高等特性,可把所收到的电信号转换成电动机轴上的角位移或角速度输出。分为直流和交流伺服电动机两大类,其主要特点是,当信号电压为零时无自转现象,转速随着转矩的增加而匀速下降。
通用伺服电机的总体旋转角度为90 °(注:不难理解一个主机翼顺时针转90°和逆时针转90°基本上能够覆盖所有操作角度),并随着thigh的增加沿顺时针方向旋转。
例如,thigh = 1ms、1.5ms和2ms分别对应于旋转角度-45 ° 、0 ° 和45 °,如下图的2b、2c和2d所示。
编辑
2.3.2 致动器使用PWM的上升沿和下降沿之间的持续时间确定致动数据
致动器有两种选择来处理PWM编码的信号对应的致动数据:
- 首先,通过检查PWM脉冲的上升沿和下降沿;
- 其次,可能用低通滤波器取PWM的平均值。
实验观察到,致动器对施加到PWM输入的低幅度DC信号不响应,这表明用于确定致动数据的是PWM的上升沿和下降沿之间的持续时间。
问题来了,什么是上升沿和下降沿?数字电平从0变为1 的那一瞬间叫作上升沿 ,从1到0的那一瞬间叫作下降沿。
2.4 攻击场景设定
FAI 攻击低功耗且无法追踪,并且只通过 EM 耦合攻击来改变受害者的 PWM 信号。最大攻击功率限制为 20W,可通过 COTS 放大器获得。
场景一
第一种攻击场景中要求功率较低,攻击者旨在阻止驱动数据以使受害者的驱动控制无效,但不注入错误命令。
场景二
在第二种攻击场景中,攻击者需要注入虚假驱动数据来控制受害者的驱动器。
攻击者可以访问放大器和天线等射频组件,以及有关受害系统拓扑的信息,例如 PWM 电缆长度。
三 攻击方案、原理与实验设备
3.1 测试攻击波形对通信信号的影响
编辑
蓝色虚线框是受害者系统,也就是无人机系统,红色虚线框是攻击者。
首先看受害者这边有什么:从左往右看
Futaba是带有地面无线电控制器的无人机系统,该控制器将操作人员的控制命令发送给无人机;
无人机中的自动驾驶仪Pixhawk,将控制器发来的控制信息转为PWM信号,并发送给伺服电机;
再就是Servo Motor,就是接受PWM信号的伺服电机,最底下那个实线蓝色框就是无人机的电机们。
再看看攻击者这边有什么:从右往左看
先是包络发生器,什么是包咯发生器呢?
Envelope generators provide a means for shaping the waveforms to produce a more musical character. Most commonly, envelope generators are used to modulate amplitude over a period of time. They come in a variety of configurations, but the most prevalent type of envelope generator is an ADSR envelope.
包络发生器提供了一种塑造波形的方法,以产生更具音乐性的特征。最常见的是,包络发生器用于在一段时间内调制振幅。它们有多种配置,但最流行的包络生成器类型是ADSR包络。
好好好,说白了就是一种塑造波的仪器,产生攻击波形。
然后送到真正的波形生成器,生成波。
在所有攻击场景中,攻击波形载波都由Rohde&Schwarz SMU 200矢量信号发生器生成。
在其他两种攻击中,Keysight 33600A波形发生器将会被添加到包络生成模块中。
再看看两个圈外的东西
BUFFER,电压缓冲器,用于消除可能使 PWM 波形失真的负载。
Combiner,因为这是个有线实验,而不是直接无限实验,所以这里要这么看:
1、做这个有线系统的实验是为了找到能够产生有效攻击的攻击波形和其他参数
2、要做的是对执行器的攻击,所以需要从控制器到执行器的流程中,找到攻击点,因此,这里的combiner其实就是攻击点,在Pixhawk和伺服电机的通信流程之间。
3、combiner要做的就是将产生的攻击波与正常操作下自动驾驶仪发送的含有控制指令的PWM波相互作用下的结果
3.1.1 攻击波形Ⅰ:BLOCK
实验步骤:
- 通过地面无线电控制器建立伺服控制。
- 注入块波形从 -30 dBm 开始,增量为 1 dBm
- 检测成功攻击的最小 Vp(即地面控制器无法控制伺服旋转)。
攻击原理:
(1)攻击手段
块攻击的攻击波是一个频率为fa的连续波信号,如下图的黑色连续波,然后电缆里面传输的是蓝色框框的PWM波,这连续波能够和PWM耦合,经过包络检波器产生感应电压,阻止伺服电机服务,从而干扰无人机的飞行。
编辑
(2)攻击机理
这个信号能够在受害者的PWM电路中感应出一个电压,从而阻止伺服系统检测到上升沿和下降沿。
问:为什么能够在PWM电路中感应出一个电压?为什么感应出电压就能阻止伺服系统?攻击波和PWM波之间是如何作用的?
编辑
第一个问题为什么能感应出电压,依据是法律第感应定律,即直于导体回路的时变磁场会在导体的端子处产生感应电压,通过传入的电磁波耦合产生电压。
如图,从左至右,分别为耦合攻击波形、保护二极管、修正后的波形和低通滤波器、PWM输入到电机处。
文章说到,保护二极管和低通滤波器中的电容Cv和Rv能够在原理上等价为“envelope detector”,又名包络检波器。
这玩意是用来干什么的呢?包络检波器(英语:envelope detector)是以高频信号为输入信号并提供原始信号的包络(英语:Envelope (waves))的一种电子线路。电路中的电容器会在上升沿充电,并在信号下降时通过电阻器缓慢释放电荷。串联的二极管将输入信号整流,只在正输入端比负输入端电位高的时候允许电流流过。
那么就好解释了:
1、通过PWM电缆耦合的攻击波形由二极管整流,仅留下正周期(水平坐标轴上的波)。
2、在第一个整流周期中,电容器被充电到电压峰值。
3、 然而,由于攻击波形的高频/低周期性质和并联r-c电路的相对较高的时间常数,电容器不能在周期之间放电 。
4、此外,包括二极管和Rv,Cv在内的整个电路只不过是一个包络检测器,在早期的无线电中广泛用作AM解调器 。
5、攻击成功的很大原因是二极管的整流,因为整流引入了攻击者的低频成分,即envelope。
6、实验观察到Futaba和HiTec伺服控制器板由二极管保护组成,这是成功控制这些伺服系统的原因。
(3)攻击效率
攻击的效率取决于频率(fa)和与受害者共振频率(fv)。攻击者可以使用受害者的共振频率来增加攻击距离。下一大节讨论检测受害共振的分析和实验方法。
(4)实验结果
编辑 第二行第一列对应的是上一张实验图中伺服电机的各组成电机,可以观察到,所有伺服模型都可以用不同的攻击功率(VP)来阻塞。
3.1.2 攻击波形 ⅠⅠ :BLOCK & ROTATE
上节的块波的作用简单说就是阻止旋转角数据向致动器传输,那么这一节需要做到,注入错误的致动数据。
具体思想可以简述为:利用一种波形掩盖或消除原有的旋转数据,然后注入构造好的错误致动数据,掩盖方式可以为宽脉冲(thigh>2ms)
编辑
让无人机机翼停转:
(1)上图可以看到,正常旋转的范围是1~2ms,作者实验观察到,当thigh>2ms时,PWM所携带的信号全被覆盖,所有的伺服模型电机都保持原形。
(2)当Eflite和Hitec伺服器锁定时 (即,外部扭矩不能移动它),观察到双叶伺服器自由移动。
(3)当PWM通道中没有旋转角数据时,Eflite和Hitec的响应可能是保持伺服旋转稳定。
注入错误的旋转指令信号:
(1)使用额外的正弦脉冲来注入错误的旋转角度信息 (图4b中的 “旋转” 脉冲)。
编辑
(2)旋转脉冲的持续时间(trotate的宽度)决定了注入受害者系统的错误旋转角度。例如,攻击者可以使用trotate = 1ms的Block & Rotate波形 (图4b) 将伺服机构旋转到-45 °。
批注:很多这种信号注入攻击,注入指令的前一步都是阻塞原有的服务,然后将自己构造的命令注入到这个信道以劫持通信。
3.1.3 攻击波形 III:完全控制
编辑
整个无人机可以操作(即左右旋转45度)的时间范围trotate,从下图可以得知为[1ms,2ms]:
编辑
tPWM为20ms,那么这个占空比就是[1/20,2/20]也就是5%到10%。攻击1和攻击2都是在固定的占空比范围内进行操作,那么超过这个占空比呢?
因为thigh的范围和trotate相关,要做一些电机操作,所以是固定的[1,2],所以只能通过变小tPWM来增大占空比。
实验观察到,当这个tPWM变小到2.5ms的时候,也就是占空比范围到[40%,80%]的时候,在这个范围内,无人机内的每个伺服服务组件都可以通过增加PWM的占空比来控制:
例如,注入thigh=1ms,就能控制无人机往左转。
3.1.4 各波形对比
拿三种攻击波形对比一下:
编辑
黑色的连续波是攻击波形,然后我这上上节也说到了,这个黑色连续波会和蓝色PWM波耦合形成新的波,(注意:这两个蓝色的PWM波的间距就是tPWM,为20ms)然后这个新的波能对伺服电机产生对应的效果,然后本质是切割磁感线产生感应电压。
a是持续不间断的连续波,b和c都是间断的波形,b的间断目的是先覆盖后注入(在tPWM时间内)。
块波形可防止在每个测试频率下传输致动数据传输,并且观察到在所有测试的伺服模型上都是有效的。
Block & Rotate 和 Full Control使攻击者能够通过将旋转角数据注入PWM通道来完全控制特定的伺服模型。
Block & Rotate适用于经过测试的双叶和HiTec伺服器型号。
完全控制波形利用了原始PWM的低占空比特性,并且非常频繁地注入错误的致动数据以在不需要同步的情况下控制受害致动器。
完全控制适用于所有双叶模型,并为攻击者提供伺服旋转的 “完全控制”,即顺时针和逆时针旋转。
3.2 实例攻击
这实验做出来能干什么就不用说了吧,最显而易见的,敌方无人机来了可以直接给他控制辽。
他们要做个什么事捏? 因为这个干扰和注入的距离是有限的,远距离电波容易被反射、吸收、屏蔽,近距离的电波穿透力更强,所以要架设在己方无人机上,飞到敌方无人机附近去干扰和控制。编辑
攻击者系统由光发射器和接收器、电池、射频模块、放大器和ZPSL天线组成,如图9b所示。受害者Pixhawk被编程为根据地面控制器的要求发起攻击。攻击控制信号作为光信号发送,以确保即使在高EMI下也能进行可靠的控制,例如在紧急情况下停止攻击。
RF开关对连续波信号进行调制,以生成块或完全控制波形。来自RF开关的攻击波形以20W的输出功率馈送到RF放大器,并且攻击波形从ZPSL天线辐射,该天线以攻击频率谐振并匹配到50Ω。
受害无人机使用在PX4固件上运行的Pixhawk自动驾驶仪,该自动驾驶仪经过修改以控制来自地面/无线电控制器的IEMI攻击的持续时间和波形。
为了可靠地测量高EMI中的副翼旋转,将正交编码器连接到右副翼伺服器,并在UAV的右翼上安装了隔离的Pixhawk (即,具有单独的DC电源)。作者为PX4固件开发了固件模块,该固件模块充当正交编码器的接口并记录副翼旋转角度。
对于飞行,使用Pixhawk的稳定飞行模式,在此期间,俯仰和滚动设定点由飞行员从无线电/地面控制器提供。
然后,自动驾驶仪分别计算所需的升降舵和副翼旋转,以达到设定值。方向舵旋转和推力直接来自无线电/地面控制器。
四 试验结果
20w的功率足以进行25厘米完全控制和50厘米块攻击。
一些观察结果如下:
- 无论天线大小如何,完全控制都需要比块攻击更多的功率。
- 大型天线比较小的天线所需的功率要少得多。
- 对于在da = 1m处的完全控制,对于大型和小型天线,所需功率分别为611W和3.3kW。但是,如果块的攻击距离为2m,则对于大型和小型天线,所需功率分别为532W和1.38kW。
- 大型天线在近场中产生高磁场的能力是一种已知现象。对于经颅磁刺激 (TMS) 应用,其中磁场刺激大脑的特定区域,较大的环是优选的,以更好地 “穿透” 到大脑内层 。
为了增加攻击距离,增加天线空间,超材料-人造磁导体,其功能为磁反射器,可以用来提高场功率3dB,降低攻击能力,保护追踪器从自己的攻击场。
CPS攻击案例(一)——基于脉冲宽度调制PWM的无人机攻击的更多相关文章
- STM32 基于定时器的PWM发生器
脉冲宽度调制(PWM),是英文"Pulse Width Modulation" 的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术.简单一点,就 ...
- 基于日志数据分析以防御CC攻击的想法
1. What - 什么是CC攻击 CC攻击,即针对应用层HTTP协议的DDos攻击,攻击者在短时间内向目标服务器发送大量的HTTP请求,使得服务器会非常繁忙,资源消耗会增加:同时,如果请求中包含基于 ...
- Quartz应用实践入门案例二(基于java工程)
在web应用程序中添加定时任务,Quartz的简单介绍可以参看博文<Quartz应用实践入门案例一(基于Web应用)> .其实一旦学会了如何应用开源框架就应该很容易将这中框架应用与自己的任 ...
- Mininet实验 基于Mininet实现BGP路径挟持攻击实验
参考:基于Mininet实现BGP路径挟持攻击实验 实验目的: 掌握如何mininet内模拟AS. 掌握BGP路径挟持的原理和分析过程. 实验原理: 互联网是由相互连接的自治系统AS组成的,通过一个通 ...
- IP报文解析及基于IP 数据包的洪水攻击
版本(4bit) 报头长度(4bit) 优先级和服务类型(8bit) 总长度(16bit) 标识(16bit) 标志(3bit) 分段偏移(13bit) 存活期(8bit) 协议(8bit) 报头校验 ...
- Shiro 核心功能案例讲解 基于SpringBoot 有源码
Shiro 核心功能案例讲解 基于SpringBoot 有源码 从实战中学习Shiro的用法.本章使用SpringBoot快速搭建项目.整合SiteMesh框架布局页面.整合Shiro框架实现用身份认 ...
- 基于Armitage的MSF自动化集成攻击实践
基于Armitage的MSF自动化集成攻击实践 目录 0x01 实践环境 0x02 预备知识 0x03 Armitage基础配置 0x04 Nmap:Armitage下信息搜集与漏洞扫描 0x05 A ...
- Httpd服务入门知识-Httpd服务常见配置案例之基于客户端来源地址实现访问控制
Httpd服务入门知识-Httpd服务常见配置案例之基于客户端来源地址实现访问控制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Options 1>.OPTIONS指 ...
- Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制
Httpd服务入门知识-Httpd服务常见配置案例之基于用户账号实现访问控制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.基于用户的访问控制概述 认证质询: WWW-Auth ...
随机推荐
- 2507-AOP- springboot中使用-使用注解方式
Springboot中使用aop,与SSM中使用AOP,整体配置与编写方式都是类似的.但是Springboot简化了很多xml配置,切点的表达式可以直接进行javaconfig. 记录一些示例 spr ...
- 人理解迭代,神则体会递归,从电影艺术到Python代码实现神的逆向思维模式
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_186 "从来如此,便对么?",鲁迅先生在<狂人日记>中借狂人之口在月光下发出的质疑与呐喊,是的,从 ...
- 【AGC】增长服务1-远程配置示例
[AGC]增长服务1-远程配置示例 前言:上一次笔者给大家带来了AGC领域的性能管理服务的学习.这次我们再继续深化学习AGC的相关知识.在文章开始之前,再给读者简单介绍一下AGC,以免第一次来的读 ...
- Redis-浅谈主从同步
主从库集群 Redis 提供了主从库模式,以保证数据副本的一致,在从库执行一下命令可以建立主从库关系: replicaof <dst ip> <dst port> Redis ...
- mosquitto使用的基本流程以及一些遇见的问题
改配置文件 以记事本的方式打开mosquitto.conf更改部分内容,找到# listener port-number [ip address/host name/unix socket path] ...
- error setting certificate verify locations
描述 在使用 git clone 克隆 GitHub 或者 Gitee 上的项目时,报如下错误: error setting certificate verify locations: CAfile: ...
- OpenStack-iaas之“先点”云平台安装
1.认识OpenStack 1.云计算的起源 早在2006年3月,亚马逊公司首先提出弹性计算云服务.2006年8月9日,谷歌公司首席执行官埃里克·施密特(Eric Schmidt)在谷歌搜索引擎大会( ...
- 什么是云计算?云计算三种模式Sass、Paas、Iaas
云计算 云计算的"云"指的是计算机网络(一般指的是 Internet),"计算"指的是多个计算机共同计算巨大的数据的过程.通过云计算平台把任务分解成一个个小的任 ...
- Vue 监听器和计算属性到底有什么不同?
各自的适用场景 计算属性临时快照 官方文档对于计算属性提到了一个重要的点子--"临时快照"(可能就是前面说的计算属性缓存),每当源状态发生变化时,就会创建一个新的快照. 有时候创建 ...
- 【面试题】js 问号(?)的强大之处,你知道吗??
问号(?)的强大之处 点击打开视频讲解更加详细 一.问号点(?.) obj: { name: "末晨曦吖", }, console.log(this.obj.age, " ...