云计算基础-快照与克隆

快照及克隆

什么是快照

快照是数据存储的某一时刻的状态记录,也就是把虚拟机当前的状态保存下来(快照不是备份,快照保存的是状态,备份保存的是副本)

快照优点

速度快,占用空间小

快照工作原理

在了解快照原理前,首先需要知道两个概念:索引/数据和差分盘

索引和数据(index node / data block)

首先要了解,每一个文件系统都是有两部分组成的:索引和数据(index node / data block),

索引有时候也称为元数据metadata,如图:

index node 有时候也称为metadate(元数据),也叫元素,它是描述数据的数据,比如文件的名字,文件的大小,文件的权限,文件的指针(指针指向文件在硬盘上的物理位置)

所以,快照也叫:基于索引的快照(快照中只包含虚拟机磁盘文件的元数据,不包含真实的文件内容),元数据中只保存文件的描述信息和文件的指针,一个元数据占用256字节的空间大小,查找文件时,先读取文件的元数据,通过元数据的指针找到文件在硬盘的物理位置,从而找到文件。

总结一下:

metadate(元数据):文件的描述信息(文件的名字、大小、时间等及文件的指针:真实的物理数据在硬盘上的位置)

data block:真实的文件

举个不是太恰当的例子:比如有一张图片,放在硬盘上第三行第五列这个小格子内,我们想要打开这个文件,首先操作系统要先找到这个文件的索引(元数据metadate),我们这时可以看到这个文件名字叫“123.jpg”,大小是1MB等信息,当我们打开这个文件时,通过matedate中的指针,该指针指向了硬盘上第三行第五列这个小格子,操作系统找到这个小格子里的文件,从而可以打开文件让我们看到这个图片

差分盘

差分盘是一种与基础盘关联的磁盘类型,它记录了基础盘和自身之间的差异。具体来说,差分盘只存储了对基础盘的修改或增量数据,而不保存基础盘上已存在的数据。

创建快照其实就是创建了一块差分盘,当创建快照时,基础磁盘会置于只读状态,差分盘(快照空间)中会保留基础磁盘的索引信息,所以ROW快照后,虚拟机所有对磁盘的增删改查操作都会重定向到差分盘,从而不影响基础磁盘中已有的数据

计算快照(旧)

功能介绍

虚拟化计算层是基于KVM来实现的,KVM采用的是qcow2的磁盘格式,qcow2支持的快照方式为cow(写时复制),KVM在虚拟化计算层给qcow2打快照的时候,会将生成的快照空间一起保存在原有的qcow2文件中,在删除或恢复快照的时候调用底层的文件系统指令来清理qcow2文件中的快照空间

cow快照在写入(修改)数据时,IO会被放大三倍,更加消耗存储的IO性能,即需要将要修改的数据读出来,写到快照空间内,然后再将新的数据覆盖写到原位置,这样会带来写惩罚:一次写带来了更多的读操作

注意事项

1. 性能影响是因为KVM支持的COW快照技术导致的,打完快照之后数据写入的时候会放大IO(消耗存储的IO性能,新增数据不会对性能产生影响,修改数据时才会影响性能)

2. KVM的快照方案中,快照数据保存在原有的qcow2文件中,如果要满足删除快照对qcow2文件内快照区域进行清理,需要调用底层文件系统指令(如果底层使用ext3,ext4的文件系统,那就可以通过调用KVM的指令,来清除qcow2文件中的快照空间)

3. 深信服超融合使用的是自己开发的aSAN虚拟存储,aSAN文件系统的底层指令不支持删除qcow2文件中的快照空间,所以只能删除快照的索引数据

存储快照

深信服aSAN文件系统无法删除qcow2文件中的快照空间,为了解决这个问题,aSAN开发出了存储快照

存储快照就是在打快照的时候生成的快照空间,写在一个单独的qcow2文件里,而不是放在原来的qcow2文件里

存储快照在清理快照空间的时候,只需要将生成的qcow2文件删除掉即可

采用基于存储的快照方式

1. 采用ROW快照技术,减小对虚拟机性能的影响

2. aSAN底层支持删除快照时释放空间

注意事项

1. 存储快照只能存在于虚拟存储上,外置存储的虚拟机会使用老版本的快照方式

2. 两主机场景不支持存储快照及相关功能,包括快速克隆

COW快照原理(旧)

COW又叫写时复制(新增数据不会对性能产生影响,修改数据时才会影响性能)

1. 创建快照的时候,COW会为原虚拟磁盘创建一张数据指针表,用于保存原虚拟磁盘的物理指针

2. 然后在创建一张新的指针表,作为快照空间的指针表,快照空间的指针表会占用一部分的存储空间,用于保存快照后原虚拟磁盘中被更新的原数据

3. 当虚拟机要删改数据的时候,先将数据写到缓存里等待,等待存储系统先将删改的原数据复制到快照空间里,然后再将缓存中的数据覆盖写到原虚拟磁盘中的位置

4. 最后将虚拟磁盘和快照空间的数据指针对应写到一张映射表里

简单总结:

数据写入时,直接写到虚拟磁盘内,数据修改时,先把要修改的数据读出来,然后将读出来的数据写到快照空间内,然后把修改后的数据覆盖写入到虚拟磁盘原位置中,最后将虚拟磁盘和快照空间的数据指针保存到映射表中

快照后,数据写入(修改)流程

1. 在对虚拟机创建快照时,系统会生成一个动态增长的新磁盘文件(即快照空间)

2. 快照创建完成后,修改原数据时会先将原磁盘数据复制到快照空间里,然后再将缓存里的数据写到原磁盘文件中,最后将原虚拟磁盘和快照空间逻辑地址的对应关系写到映射表

快照在写入数据时,为什么会放大IO?

如图,图上的蓝色部分是数据指针,白色部分是指针对应的存储空间,紫色和黄色表示的是数据块

此时,虚拟机要将【2】这里的数据块【c】修改为数据块【e】,【e】首先会被写到缓存里,存储系统将原来的【c】读出来,然后再复制到快照空间的【ii】位置,此时,数据经历了一次读和一次写。然后再将缓存里的数据【e】覆盖写到原虚拟磁盘,此时io又经历了一次写。

所以,快照后,数据IO会经历一次读和两次写,假设这个数据块是1KB,这已经有了3KB的数据量了,原本1KB的数据IO变为了3KB的数据IO,所以快照后写入数据会放大数据IO量

写入映射表的操作是写入地址指针,这个数据是非常小的,可以忽略掉

快照后数据读取流程

快照创建后,虚拟机读取数据时直接从原虚拟磁盘读取

虚拟机读取数据时,直接根据原虚拟磁盘的指针表读取即可,不用查询映射表和快照空间了,因为修改的数据都保存在原虚拟磁盘里了

如图,在原虚拟磁盘里,e已经是最新的数据了,所以在读的时候,只需要顺序的将aeioud读出来即可

快照恢复流程

快照恢复时,根据映射表将快照空间里的数据回写到原虚拟磁盘,然后删除快照空间

恢复快照后,原磁盘空间是打快照时的旧数据状态,快照删除后,虚拟机是新数据状态

1. 首先根据映射表,找到快照空间上的数据在原虚拟磁盘所对应的位置

2. 然后将数据回写到原虚拟磁盘上,覆盖掉修改后的数据,每一次回写的动作都会进行一次数据的读和数据的写

3. 数据全部回写完成后,再将快照空间和映射表删除掉

快照删除流程

删除快照时,直接删除快照空间以及地址映射表,即可保证当前虚拟机是最新数据的状态(快照内旧的数据也会跟着一起删除)

ROW快照原理(写时重定向)

快照后,数据写入流程

1. 在对虚拟机创建快照时,系统会将虚拟磁盘置为只读,并生成一个动态增长的新磁盘(即快照空间)

2. 快照创建完成后,该虚拟机的所有新增数据和对原数据的修改都写入到新生成的快照空间,并将原虚拟磁盘和快照空间逻辑地址的对应关系写入映射表

1. 在创建快照时,ROW首先会为原虚拟磁盘创建一张数据指针表,用于保存原虚拟磁盘的物理指针,如上图,蓝色的1-6即原虚拟磁盘的指针,然后将这张指针表的存储空间置为只读模式

2. 再创建一块空的指针表(上图右侧蓝色部分),作为快照空间的数据指针表,他会占用一部分存储空间,用于保存快照后更新的数据,在aSAN上,这块存储空间是动态分配的,并没有一个起始的默认大小,最大不会超过虚拟机配置的磁盘大小

3. 当要对原虚拟磁盘的数据进行删改时,会将删改后的数据写入到快照空间内,然后将原虚拟磁盘的地址指针和快照空间的地址指针对应的写到映射表里

4. 可以看到,ROW在写入的时候只有一次写入操作,只是进行了写、映射表的操作,记录地址的操作影响非常小,是可以忽略掉的

快照后数据读取流程

1. 若读取的数据是快照创建之前已有的数据,且创建快照后未进行修改,则从源虚拟磁盘读取

2. 若读取的数据是快照创建之后增/改的数据,则从快照空间读取

ROW在读数据时会有查询映射表的过程,是对地址指针的查询比起指针写入的影响会大一些,比起数据块的操作(覆盖写入)还是会小很多

快照恢复流程

快照恢复是要回到打快照时旧数据的状态,ROW的旧数据都保存在原虚拟磁盘里,所以快照恢复的时候直接删除快照空间和映射表即可

为什么快照恢复的时候要关闭虚拟机呢?

虚拟机运行的过程中,内存中的数据是会持续的往磁盘中写的,而快照恢复的过程中会对磁盘做回滚操作,不可能做到在新数据写入的同时还能回滚旧数据的

举个直观的例子,现在有一台虚拟机刚装好系统打了个快照然后安装了微信和QQ软件,在正常使用这些软件的时候,突然电脑中毒了,此时想要对虚拟机恢复快照,如果不关闭虚拟机,这些软件会一直向磁盘写数据,占用磁盘上的数据块,而恢复快照是要将这些软件整个给擦除掉,这时候就会发生冲突,现在的快照技术基本上都会将虚拟机重启,不然达不到快照恢复的目的了

快照删除流程

快照删除时,依照映射表将快照空间的数据进行回写,然后删除快照空间

由此可见,COW和ROW的快照删除正好相反,因为COW原虚拟磁盘记录的是新的数据状态,而ROW的原虚拟磁盘记录的是旧的数据状态

COW与ROW对比

读密集型应用:web应用

写密集型应用:数据库应用

删除快照的四种情况

第一种情况

如图,虚拟机当前所处的位置为snap02,当删除snap01的快照时,snap01快照内的增量数据会合并到基础磁盘

第二种情况

虚拟机当前在snap02的位置,当删除snap02的快照时,snap02内的增量数据会合并到快照1

第三种情况

虚拟机当前在snap01的快照位置,删除snap02的快照,snap02的快照会直接删除,无需合并

第四种情况

当前在snap02的快照位置,此时删除所有快照,snap02及以上位置快照内的增量数据都会合并到基础磁盘

ROW删除快照总结

  1. 删除当前位置的快照时,该快照内的增量数据会合并到母盘中
  2. 删除当前位置后面的快照时,后面位置快照空间内的数据会被直接删除,无需合并

快照删除问题

为什么创建快照后,在虚拟机内删除原本属于母盘的文件,快照还能恢复呢?(比如为什么把虚拟机格式化了后,快照还能恢复呢)

因为创建快照后,会将母盘置为只读模式,而快照是基于索引的快照,子盘中保存了母盘所有文件的索引,而快照后虚拟机所有的读写都来自子盘,当删除原本保存在母盘中的文件时,实际上并非真正的将文件删除,只是删除了快照中指向这个文件的索引,所以即使将文件删除,快照也能将该文件恢复

如果创建了多个快照空间,数据增删改查会怎样?

假设创建了两个快照,当前所处的位置在快照2,此时,图片上的原虚拟磁盘就是快照1,快照空间就是快照2,数据写入会写入到快照2所在的差分盘,数据读取也会从快照2内去读取,相当于是,快照1实际上是原虚拟磁盘的差分盘,但是又打了一个快照2,此时,快照1就相当于是快照2的母盘,快照2就是快照1的差分盘

一致性快照与内存快照

内存快照

保存内存的状态,可以保存内存当前的状态,但是占用磁盘空间大,如果虚拟机内存大小是8GB,那么在打内存快照时,8GB内存不管用没用完,内存快照都会将8GB的内存写入到快照

内存快照拍摄完成后,恢复快照会回到打快照那一刻的状态,也就是开机状态

注意:内存是实时变化的,内存快照只保留打快照那一刻的内存状态,后面的它不管

一致性快照

在创建快照前,强制将脏页写回硬盘,再创建快照,类似于执行了一条sync的命令后再打快照,虚拟机需要安装tools

一致性快照拍摄完成后,保留硬盘当前的状态,恢复快照后,虚拟机自动重新开机

什么是脏页

脏页也叫脏数据,数据在写入时,并不是直接写到硬盘,而是先写入到内存中,在内存中整合后再写到硬盘,已经在内存中改变还没有写到硬盘的数据叫脏数据

内存中的脏数据有30秒存活时间,30秒后数据会被写到硬盘

为什么需要延时30秒再写入硬盘:这样可以防止瞬间的高IO将磁盘占用率打满的情况

查看脏数据存活时间

sysctl -a | grep dirty

【vm.dirty_expire_centisecs = 3000】就是脏数据的存活时间,单位:百分之一秒

实时监控脏页:watch -n 1 'cat /proc/meminfo | grep Dirty',可以看到,当前有40KB的脏数据

脏数据测试

首先查看当前系统的脏数据大小

首先我们拷贝两个文件到家目录的test文件夹下,可以看到,脏数据变大了

这时,我们在30秒内关闭虚拟机电源(非正常关机,正常关机的话脏数据会被写到硬盘),然后再开机,查看那两个文件是否已写入到硬盘,可以看到,数据并没有写到硬盘

执行sync命令可以强制将脏数据写到硬盘,可以看到,执行完sync后,脏页数据直接变为0kB了,此时就算在30秒内关闭虚拟机电源,数据也会被写到硬盘

差分盘体验

首先查看虚拟机的ID号和所属主机,ID号可以理解为系统给这个虚拟机起的名字,可以看到,这台虚拟机运行在CNA01上的

登录CNA01,进去KVM的配置目录 /etc/libvirt/qemu,可以看到这台虚拟机的配置文件

查看这个配置文件,找到虚拟机虚拟磁盘所处的目录,找到如图这一段</disk>开头,</disk>结尾,这一块括起来的中可以看到虚拟机虚拟磁盘文件所处的目录(蓝色框选出来的)

进入这个目录,可以看到虚拟机的虚拟磁盘

此时,我们给虚拟机打个快照

再看一下虚拟机虚拟磁盘所在目录,可以看到,虚拟机多了一块虚拟磁盘,这块虚拟磁盘就是差分盘,差分盘初始大小一般不会超过16MB,这16M中保存了母盘的文件索引

但是有个问题,所有的新数据都是写在快照后的差分盘中的,那虚拟机是怎么知道要往这块盘中写数据的呢

我们再来看一下虚拟机的配置文件(/etc/libvirt/qemu/xxxx.xml)

可以看到,当前虚拟机使用的磁盘就是刚刚的那块差分盘(蓝色),还可以看到这块差分盘的母盘(绿色),所以,虚拟机会把所有的新数据写入差分盘

此时所有的读写操作都是在这块差分盘中进行的,所以母盘对于虚拟机来说是只读模式

克隆

克隆分为链接克隆和完整克隆,完整克隆就是将虚拟机配置文件及磁盘文件(vmid会更改)完整复制,克隆出来的虚拟机与源虚拟机独立存在。

全量克隆:

全量克隆是指对原虚拟机数据进行一份完整的复制,数据复制完成后,克隆出来的虚拟机才能开机,克隆出来的虚拟机和原虚拟机是完全独立的,原虚拟机损坏不影响全量克隆出来的虚拟机

全量克隆特点:

  1. 克隆出来的虚拟机需要等数据复制完成之后才可以启动,时间取决于源虚拟机数据量大小
  2. 全量克隆出来的的虚拟机数据始终保持独立
  3. 克隆完成后虚拟机性能无任何影响

链接克隆使用的就是快照技术,同样会复制虚拟机的配置文件,但会生成差分盘作为克隆后虚拟机的磁盘,链接克隆的虚拟机依赖源虚拟机的磁盘文件。链接克隆的特点和全量克隆相反

克隆的作用

  1. 业务变更失败方便回退
  2. 业务测试(在测试业务时,如果新搭建测试环境场景有可能耗时较长,或和当前环境有差别,所以可以选择克隆来完全模拟测试环境)
  3. 改变磁盘模式等

虚拟机在克隆的时候,会自动创建一个快照

因为在克隆过程中,原虚拟机数据会持续变化,克隆时会自动生成快照,克隆是从快照中克隆,从而保持数据的一致性,当克隆完成后,系统会自动删除快照,快照中的数据会自动还原到基础磁盘中

模板

模板作用

  1. 批量部署虚拟机
  2. 制作模板流程:
    1. 安装OS,安装tools
    2. 安装所需的应用程序
    3. 将IP地址设置为DHCP方式
    4. 去除个性化信息(MAC地址,计算机名,SID)

WINDOWS自带去除个性化信息的程序 C:\Windows\System32\Sysprep\sysprep.exe

选择进入系统全新体验,勾选通用,选择关机,如果选择重新启动又会生成个性化 信息

  1. 虚拟机关机后,制作为模板
    1. 转换为模板:如,将虚拟机磁盘vhd格式转换为vhdx格式,源虚拟机不存在(模板也可以转换为虚拟机)
    2. 克隆为模板:通过该虚拟机创建一个新的模板,源虚拟机继续存在
    3. 导出为模板,将虚拟机导出为模板文件,方便导入到其他系统或留作备份

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/685669.shtml

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

相关文章

文生图提示词:天气条件

天气和气候 --天气条件 Weather Conditions 涵盖了从基本的天气类型到复杂的气象现象&#xff0c;为描述不同的天气和气候条件提供了丰富的词汇。 Sunny 晴朗 Cloudy 多云 Overcast 阴天 Partly Cloudy 局部多云 Clear 清晰 Foggy 雾 Misty 薄雾 Hazy 朦胧 Rainy 下雨 Showers …

【C++】实现Date类的各种运算符重载

上一篇文章只实现了operator操作符重载&#xff0c;由于运算符较多&#xff0c;该篇文章单独实现剩余所有的运算符重载。继续以Date类为例&#xff0c;实现运算符重载&#xff1a; 1.Date.h #pragma once#include <iostream> #include <assert.h>using namespace …

Leecode之面试题消失的数字

一.题目及剖析 https://leetcode.cn/problems/missing-number-lcci/description/ 方法有很多,这里将两种时间复杂度为O(N)的方法 二.思路引入 第一种方法 先将0-n的总和求出来,在求出数组的总和,在做差就能得到消失的数字,不过要注意的是数据有可能溢出,这个方法很简单就不再…

【MySQL】Java的JDBC编程

数据库编程 1. 数据库编程的必备条件2. Java的数据库编程&#xff1a;JDBC3. JDBC工作原理4. JDBC使用4.1 JDBC开发案例4.2 JDBC使用步骤总结 5. JDBC常用接口和类5.1 JDBC API5.2 数据库连接Connection5.3 Statement对象5.4 ResultSet对象 面试问答&#xff1a; 1. 数据库编程…

腾讯云幻兽帕鲁服务器配置怎么选择合适?

腾讯云幻兽帕鲁服务器配置怎么选&#xff1f;根据玩家数量选择CPU内存配置&#xff0c;4到8人选择4核16G、10到20人玩家选择8核32G、2到4人选择4核8G、32人选择16核64G配置&#xff0c;腾讯云百科txybk.com来详细说下腾讯云幻兽帕鲁专用服务器CPU内存带宽配置选择方法&#xff…

如何在CSS中实现背景图片的渐变?

--引言 在CSS中&#xff0c;实现背景图片的渐变通常需要使用linear-gradient或者radial-gradient函数&#xff0c;这些函数可以与背景图像一起使用来创建渐变效果。然而&#xff0c;CSS的渐变并不直接支持使用图像作为渐变的颜色停止点。但你可以通过一些技巧来实现类似的效果…

MySQL篇----第十九篇

系列文章目录 文章目录 系列文章目录前言一、什么是存储过程?用什么来调用?二、如何通俗地理解三个范式?三、什么是基本表?什么是视图?四、试述视图的优点?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这…

Linux项目自动化构建工具-make/Makefile

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 背景 理解 实例代码 依赖关系 依赖方法 原理 项目清理 总结 前言 世上有两种耀眼的光芒&#xff0c;一种是正在升起的太阳&#xff0c;一种是正在努力学习编程…

Ansible fetch 模块 该模块用于从远程某主机获取(复制)文件到本地

这里写目录标题 参数实例查看返回结果在这里插入图片描述 参数 dest&#xff1a;用来存放文件的目录 src&#xff1a;在远程拉取的文件&#xff0c;并且必须是一个file&#xff0c;不能是**目录* 实例 ansible slave -m fetch -a src/data/hello.txt dest/data/可以看到一个…

Chat with RTX 安装

1、Chat With RTX 介绍 Chat With RTX 是一个 Demo&#xff0c;用来将您自己的资料&#xff08;文档、笔记、视频或其他数据&#xff09;与大语言模型建立连接&#xff0c;从而令 LLM 更具个性化。利用检索增强生成 (RAG)、TensorRT-LLM 和 RTX 加速&#xff0c;您可以与自定义…

ChatGPT绘图指南:DALL.E3玩法大全(一)

一、 DALLE.3 模型介绍 1、什么是 DALLE.3 模型&#xff1f; DALLE-3模型&#xff0c;是一种由OpenAI研发的技术&#xff0c;它是一种先进的生成模型&#xff0c;可以将文字描述转化为清晰的图片。这种模型的名称"DALLE"实际上是"Deep Auto-regressive Latent …

让每次生成的随机数都相同np.random.seed()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 让每次生成的随机数都相同 np.random.seed() 选择题 关于以下代码输出的结果说法正确的是&#xff1f; import numpy as np np.random.seed(0) print(【执行】print(np.random.rand(3))) prin…

EXTI外部中断

&#xff1f; 难点&#xff1a;中断向量表、看门狗、NVIC的优先级位&#xff1f;EXTI框图&#xff1f; ------------------------ 中断系统 中断&#xff1a;在主程序运行过程中&#xff0c;出现了特定的中断触发条件&#xff08;中断源&#xff09;--->例如&#xff1a;…

C++初阶(十二) stack和queue

一、stack的介绍和使用 1.1 stack的介绍 stack的文档介绍 stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行 元素的插入与提取操作。stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特定类封装作…

python_django高校运动会成绩管理系统4o4c3

田径运动会报名管理系统就是给学生进行网上报名&#xff0c;管理员管理报名信息的一种通用管理平台&#xff0c;从而方便管理人员对运动会的日常报名工作的管理。本系统的前台功能模块包括系统的基本操作、最新公告、运动项目和报名项目&#xff1b;系统的后台功能模块包括系统…

Ubuntu忘记登录密码重置步骤

Ubuntu忘记登录密码重置步骤 1.开机界面长按shitf键&#xff0c;进入grub&#xff0c;并选择Advanced options for ubuntu&#xff0c;按下回车 2.选择一个较新版本的recovery mode&#xff0c;按下回车 3.会跑一些数据&#xff0c;等待跑完后会出现下面的界面&#xff0c;选择…

百家号蓝V认证多少钱?开通蓝V认证的价值

随着互联网的发展&#xff0c;目前已经进入了一个自媒体的时代。百家号就是百度为创作者打造的集创作、发布、实现于一体的内容创作平台&#xff0c;也是内容运营获取低成本流量实现的官方自媒体账号。蓝V认证是平台对百家号的一个认证&#xff0c;通过认证之后头像有蓝V标识&a…

【STM32 CubeMX】I2C查询方式

文章目录 前言一、CubeMX配置IIC二、查询方式的使用2.1 分析一种情况2.2 Master模式2.3 Mem模式 总结 前言 在STM32 CubeMX环境中&#xff0c;I2C&#xff08;Inter-Integrated Circuit&#xff09;通信协议的查询方式是一种简单而常见的通信方式。通过查询方式&#xff0c;微…

JavaScript中数组和字符串有哪些原生方法

JavaScript是一门广泛应用于Web前端开发的高级编程语言&#xff0c;它具有丰富的内置方法和函数&#xff0c;方便我们对数据进行处理和操作。在JavaScript中&#xff0c;数组和字符串是两个常用的数据类型&#xff0c;它们都有许多原生方法可以使用。本文将向您介绍JavaScript中…

中小学信息学奥赛CSP-J认证 CCF非专业级别软件能力认证-入门组初赛模拟题第三套(选择题)

CSP-J入门组初赛模拟练习题第三套 1、以下不是属于国家顶级域名的是 A、.au B、.cn C、.com D、.jp 答案&#xff1a;C 考点分析&#xff1a;主要考查域名相关知识&#xff0c;au是澳大利亚、cn是中国&#xff0c;jp是日本&#xff0c;答案C 2、2个10进制数1111和1010的异…