云计算基础,虚拟化原理
文章目录
- 一、虚拟化
- 1.1 什么是虚拟化
- 1.2 虚拟化类型
- 二 、存储虚拟化
- 2.1 存储指标
- 2.2 存储类型
- 2.3 存储协议
- 2.4 RAID
- 三、内存 i/O虚拟化
- 3.1 内存虚拟化
- 基本概念
- 地址空间转换原理
- 内存共享与隔离原理
- 3.2 I/O 虚拟化
- 基本概念
- 模拟(Emulation)方式
- 半虚拟化(Para - virtualization)方式
- 硬件辅助 I/O 虚拟化(Hardware - Assisted I/O Virtualization)方式
- 四、网络虚拟化
- 五、为什么虚拟化
- 为什么
- 发展趋势:`
一、虚拟化
1.1 什么是虚拟化

资源池化


1.2 虚拟化类型




二 、存储虚拟化
2.1 存储指标

IOPS(Input/Output Operations Per Second)
定义:IOPS 是指每秒进行的输入 /输出操作次数。
它主要用于衡量存储设备(如硬盘、固态硬盘等)在单位时间内能够处理的读写操作的数量。例如,一个存储设备的 IOPS 为 100,表示它每秒可以执行 100 次读取或者写入操作。 影响因素: 存储设备类型:固态硬盘(SSD)通常比机械硬盘(HDD)具有更高的 IOPS。这是因为 SSD 使用闪存芯片存储数据,数据的读写是通过电信号控制闪存芯片内的晶体管来实现的,其读写速度极快;而 HDD 是通过磁头在高速旋转的盘片上进行数据的读写操作,机械结构导致其读写速度相对较慢。
存储设备的内部架构:
对于 SSD,其内部的闪存芯片通道数量、主控芯片性能等因素都会影响 IOPS。更多的闪存芯片通道可以同时进行数据传输,提高IOPS;高性能的主控芯片能够更好地调度和管理数据读写,优化 IOPS。 文件系统和数据块大小:不同的文件系统对 IOPS也有影响。例如,某些文件系统在处理小文件时可能具有较高的 IOPS,而在处理大文件时性能下降。同时,数据块大小也很关键,较小的数据块大小可能会导致更多的IOPS,因为每次读写的数据量小,操作频繁,但这也可能会增加系统开销。 应用场景: 数据库应用:在数据库系统中,高 IOPS是非常重要的。例如,对于一个频繁进行数据插入、更新和查询的在线交易数据库,大量的事务操作需要快速的读写支持。每一笔交易可能涉及多次数据读写,高IOPS 能够确保数据库系统快速响应,减少交易等待时间,提高系统的并发处理能力。 虚拟桌面基础架构(VDI):在 VDI环境中,多个用户通过虚拟桌面访问存储在服务器上的数据。当用户同时启动应用程序、加载文件等操作时,需要高 IOPS 来保证存储系统能够快速地为每个用户提供数据读写服务,避免用户体验的卡顿。
吞吐量(Throughput)
定义:吞吐量是指单位时间内成功地传输数据的数量。它通常以字节 / 秒(Bps)、千字节 / 秒(KBps)、兆字节 / 秒(MBps)或吉字节 / 秒(GBps)等单位来衡量。例如,一个网络连接的吞吐量为 10MBps,表示每秒可以成功传输 10兆字节的数据。
影响因素:
网络带宽:这是影响吞吐量的一个关键因素。网络带宽就像是一条高速公路的宽度,带宽越高,能够同时传输的数据量就越大。例如,一个 100Mbps的网络连接比 10Mbps 的网络连接理论上具有更高的吞吐量。
传输协议和设备性能:不同的传输协议对吞吐量有不同的影响。例如,在网络传输中,TCP/IP协议的窗口大小、拥塞控制机制等都会影响数据传输的效率。同时,网络设备(如路由器、交换机等)的性能也很重要。高性能的设备能够更好地处理和转发数据,减少传输延迟,提高吞吐量。
数据传输的内容和格式:数据的类型(如文本、音频、视频等)和格式也会影响吞吐量。例如,传输未经压缩的高清视频数据需要比传输简单文本文件更高的吞吐量,因为视频数据量更大。
应用场景: 文件传输服务:在云存储服务或者企业内部的文件共享服务中,吞吐量决定了文件传输的速度。例如,当用户从云存储中下载一个大型文件(如
1GB 的高清电影)时,高吞吐量可以使文件在短时间内下载完成,提高用户体验。
数据中心内部的数据传输:在数据中心中,服务器之间需要大量的数据交换。例如,在分布式存储系统中,数据节点之间需要传输数据块进行数据备份、恢复和负载均衡等操作。高吞吐量能够确保这些数据传输过程高效进行,维持数据中心的正常运转。
相互制约的原理基础
从物理层面看: 存储设备或网络设备都有其物理极限。例如,存储设备的内部总线带宽、网络接口的速率等都是有限的。当追求高 IOPS时,每次读写操作的数据量可能较小,这就像在一个有限带宽的通道里频繁地发送小包裹。如果读写操作过于频繁(高IOPS),可能会因为频繁的请求处理而占用大量的系统资源,导致用于传输大量数据的资源减少,从而限制吞吐量。
反之,当重点关注吞吐量时,每次传输的数据量较大,这可能会导致设备忙于传输这些大数据块,而无法及时响应大量的小读写操作请求,从而降低IOPS。例如,在网络传输中,如果正在传输一个大型文件(以提高吞吐量),此时一些小的数据包(如控制指令等)的处理速度可能会变慢,影响IOPS。
从软件和协议层面看:
操作系统和存储管理软件对设备的调度策略也会影响两者的关系。例如,文件系统的缓存机制,如果为了提高吞吐量而将大量数据缓存在内存中准备传输,可能会占用原本可以用于快速响应小读写操作的缓存空间,从而降低 IOPS。 网络传输协议中的窗口大小和拥塞控制机制也会产生制约。例如,TCP 协议中的拥塞窗口会根据网络状况动态调整每次传输的数据量。如果为了提高吞吐量而增大窗口大小,可能会在网络出现拥塞时,不仅导致吞吐量下降,还会因为需要处理大量的重传等问题而影响IOPS。
不同场景下的制约关系表现 数据库应用场景:
对于一个在线事务处理(OLTP)数据库,如银行的交易系统,高 IOPS 至关重要。因为系统需要快速处理大量的小读写操作,如账户余额查询、转账等。如果过度关注吞吐量,例如,采用一些会合并数据块传输的策略来提高数据传输效率,可能会导致单个小读写操作的响应时间变长,降低 IOPS,从而影响系统的交易处理速度和用户体验。
而在数据仓库应用场景下,数据加载和备份等操作更注重吞吐量。例如,在夜间进行数据仓库的数据批量加载时,需要传输大量的数据块。此时,如果存储设备或网络忙于处理大量小读写操作(高 IOPS),可能会导致数据加载速度变慢,吞吐量降低
2.2 存储类型

DAS:Direct-Attached Storage 开放系统的直连式存储。直连式存储依赖服务器主机操作系统进行数据的IO读写和存储维护管理,数据备份和恢复要求占用服务器主机资源(包括CPU、系统IO等),数据流需要回流主机再到服务器连接着的磁带机(库)。数据备份通常占用服务器主机资源20-30%,因此许多企业用户的日常数据备份常常在深夜或业务系统不繁忙时进行,以免影响正常业务系统的运行。直连式存储与服务器主机之间的连接通常采用SCSI连接

NAS:(Network Attached Storage:网络附属存储)NAS被定义为一种特殊的专用数据存储服务器。NAS本身能够支持多种协议(如NFS、CIFS、FTP、HTTP等),而且能够支持各种操作系统。
NAS其实是一个网络上的瘦服务器,对用户提供文件系统访问的能力NAS其实是一个网络上的瘦服务器,对用户提供文件系统访问的能力,管理存储介质和负责数据备份。平常我们在x86的服务器上开启samba服务,然后在windows上映射一个盘符到samba服务器上就可以像使用本地存储一样使用服务器上的存储,这时,这台服务器也可以看做是一台NAS服务器。直接挂载使用的(例如目前常用的NFS, CIFS文件系统) 侠义如共享文件




SAN和NAS两者还是有点难区别。NAS的文件系统在NAS设备这边,而SAN的文件系统还是在访问端。
NAS 可以看成放在网络上的文件夹,而SAN可以看作是网络上的磁盘,还需格式化系统,比如mkfs 个xfs ext4,自由度高。

NAS与SAN的关联
根据上面提到的NAS与SAN的区别,我们可以知道,SAN是对用户提供的是高速以块为单位的存储接口,而NAS为用户提供的是以文件为单位的存储接口。
可以说SAN可以看成是网络上的硬盘,NAS可以看成是网络上的文件系统。NAS拥有网络文件系统的优势,而SAN有底层高速数据块的存储优势,所以可以把两者结合起来使用,所以有了NAS-SAN这样的东西

2.3 存储协议
iSCSI是由IBM发明的基于以太网的存储协议,该协议与SUN的NFS协议都是为了解决存储资源共享问题的解决方案。两者意图一致,只不过两者是不同的实现方式,前者在客户机上呈现的是一个块设备,而后者则是一个目录树。



iSCSI 协议
iSCSI(Internet Small Computer System Interface,发音为/ˈаɪskʌzi/),Internet小型计算机系统接口,又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术,由IETF提出,并于2003年2月11日成为正式的标准
概括的说,iSCSI是一种存储设备远程映射技术,它可以将一个远程服务器上的存储设备映射到本地,并呈现为一个块设备(大白话就是磁盘)。从普通用户的角度,映射过来的磁盘与本地安装的磁盘毫无差异。
这种映射方式基于是基于SCSI协议的,SCSI协议是计算机与外围设备(例如硬盘、光盘等)通信的协议。而iSCSI则是通过TCP协议对SCSI进行封装的一种协议,也就是通过以太网传输SCSI协议的内容。



2.4 RAID
RAID 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上提高传输速率。RAID通过在多个磁盘上同时存储和读取数据来大幅提高存储系统的数据吞吐量(Throughput)
(1)通过对磁盘上的数据进行条带化,实现对数据成块存取,减少磁盘的机械寻道时间,提高了数据存取速度。
(2)通过对一个阵列中的几块磁盘同时读取,减少了磁盘的机械寻道时间,提高数据存取速度。
(3)通过镜像或者存储奇偶校验信息的方式,实现了对数据的冗余保护。
RAID-加粗样式逻辑卷lun

效率和可靠性

增加校验盘





三、内存 i/O虚拟化
3.1 内存虚拟化

基本概念
内存虚拟化是云计算和虚拟化技术中的一个关键部分。它的目的是在多个虚拟机(VM)之间高效地共享物理内存资源,使得每个虚拟机都认为自己拥有独立的、连续的物理内存空间,而实际上它们是共享主机的物理内存。

地址空间转换原理
物理地址和虚拟地址:在非虚拟化环境中,应用程序使用的是虚拟地址,通过内存管理单元(MMU)转换为物理地址来访问内存。在虚拟化环境下,情况变得更加复杂。虚拟机中的操作系统(Guest OS)管理着自己的虚拟地址空间(Guest Virtual Address,GVA),它认为自己在直接访问物理内存,但实际上这是一种假象。
影子页表(Shadow Page Table)机制:早期的内存虚拟化技术使用影子页表来实现地址转换。当 Guest OS 创建一个页表(将 GVA 映射到 Guest Physical Address,GPA)时,VMM(虚拟机监视器)会为其创建一个影子页表,用于将 GVA 直接映射到主机物理地址(Host Physical Address,HPA)。这种方法的缺点是性能开销较大,因为每次 Guest OS 更新页表时,VMM 都需要更新影子页表。
硬件辅助虚拟化(Hardware - Assisted Virtualization):现代处理器提供了硬件支持来简化内存虚拟化。例如,Intel 的 EPT(Extended Page Tables)和 AMD 的 RVI(Rapid Virtualization Indexing)技术。以 EPT 为例,它在硬件层面扩展了页表结构,使得 MMU 可以直接将 GVA 通过 Guest 页表和 EPT 转换为 HPA,减少了 VMM 的干预,大大提高了性能。
内存共享与隔离原理
内存共享: 为了提高内存利用率,内存虚拟化技术允许不同的虚拟机共享相同的物理内存页。例如,多个虚拟机运行相同的操作系统或相同的应用程序,它们的某些内存区域(如操作系统内核代码)是相同的。VMM 可以识别这些相同的内存区域,并将它们映射到相同的物理内存页,从而节省内存资源。
内存隔离: 虽然虚拟机之间共享物理内存,但必须保证它们之间的内存隔离,以防止一个虚拟机访问另一个虚拟机的内存数据。VMM 通过内存权限管理和地址空间划分来实现隔离。例如,通过设置页表项中的权限位,使得虚拟机只能访问自己被授权的内存区域。如果虚拟机试图访问未授权的区域,会触发处理器的异常机制,由 VMM 进行处理。
3.2 I/O 虚拟化

基本概念
I/O 虚拟化是一种在虚拟化环境中管理和共享 I/O 设备(如磁盘、网络接口卡、USB 设备等)的技术。它的目的是让多个虚拟机(VM)能够高效地共享物理 I/O 设备,并且每个虚拟机都感觉自己拥有独立的、专用的 I/O 设备,就像在非虚拟化的物理机环境中一样。
模拟(Emulation)方式
原理:在 I/O 虚拟化的早期阶段,模拟是一种常用的方法。VMM(虚拟机监视器)会在软件层面模拟各种 I/O 设备的功能。例如,对于一个虚拟机中的虚拟磁盘设备,VMM 会模拟磁盘控制器的行为,包括接收来自虚拟机操作系统(Guest OS)的 I/O 请求(如读 / 写操作),然后将这些请求转换为对真实物理磁盘的操作。
示例:假设一个虚拟机中的应用程序想要从虚拟磁盘的某个扇区读取数据。Guest OS 会向虚拟磁盘控制器发送一个读请求,这个请求会被 VMM 截获。VMM 会解析这个请求,将其转换为对物理磁盘的实际读操作,包括定位磁盘磁头、读取数据等过程。读取到的数据再通过 VMM 返回给虚拟机中的应用程序。这种模拟方式的优点是兼容性好,可以支持各种不同类型的 Guest OS 和 I/O 设备,但缺点是性能较低,因为大量的软件模拟操作会产生较高的 CPU 开销。
半虚拟化(Para - virtualization)方式
原理:半虚拟化技术要求 Guest OS 进行一定的修改,以使其能够更好地与 VMM 协作完成 I/O 操作。在这种模式下,Guest OS 知道自己运行在虚拟化环境中,并且会使用专门的 I/O 接口与 VMM 进行通信。例如,Guest OS 会通过特定的 Hypercall(超级调用)来发送 I/O 请求,而不是像在物理机环境中那样直接与 I/O 设备交互。
示例:当虚拟机中的应用程序发起一个 I/O 操作时,Guest OS 会识别这个操作,并通过 Hypercall 将请求发送给 VMM。VMM 收到请求后,直接与物理 I/O 设备进行交互,完成操作后将结果返回给 Guest OS。这种方式相比模拟方式,减少了中间的软件模拟环节,提高了性能,但它需要对 Guest OS 进行修改,限制了其通用性。
硬件辅助 I/O 虚拟化(Hardware - Assisted I/O Virtualization)方式
原理:现代处理器和 I/O 设备提供了硬件支持来实现 I/O 虚拟化。例如,Intel 的 VT - d(Virtualization Technology for Directed I/O)和 AMD 的 IOMMU(Input/Output Memory Management Unit)技术。这些技术通过在硬件层面提供 I/O 设备的隔离和地址转换功能,使得每个虚拟机可以直接访问物理 I/O 设备的一部分资源,同时保证设备之间的隔离和安全性。
示例:以网络接口卡(NIC)为例,通过硬件辅助 I/O 虚拟化,每个虚拟机可以有自己独立的直接内存访问(DMA)区域,并且可以直接向 NIC 发送和接收数据包,而 IOMMU 会负责将虚拟机的 I/O 地址转换为物理 I/O 地址,确保每个虚拟机只能访问自己被授权的 I/O 设备资源,从而提高了 I/O 操作的效率和安全性。
四、网络虚拟化
虚拟化网络是云计算的关键技术之一,它将物理网络资源虚拟化为多个逻辑网络。例如,在一个数据中心里,通过软件定义网络(SDN)技术,可以把物理交换机、路由器等设备提供的网络功能进行抽象,划分出多个虚拟网络,每个虚拟网络可以分配给不同的用户或应用。
这样做的好处是提高网络资源的利用率,就像把一套大房子(物理网络)隔成多个小房间(虚拟网络),每个小房间可以租给不同的人使用,从而实现资源的高效利用



五、为什么虚拟化
为什么


发展趋势:`



相关文章:
云计算基础,虚拟化原理
文章目录 一、虚拟化1.1 什么是虚拟化1.2 虚拟化类型 二 、存储虚拟化2.1 存储指标2.2 存储类型2.3 存储协议2.4 RAID 三、内存 i/O虚拟化3.1 内存虚拟化基本概念地址空间转换原理内存共享与隔离原理 3.2 I/O 虚拟化基本概念模拟(Emulation)方式半虚拟化…...
浮点数在C语言开发中为什么不精确?
在C语言开发中,浮点数的精度问题是一个常见的陷阱,尤其是对于刚接触编程的开发者来说,可能会对浮点数的行为感到困惑。为什么0.1 0.2不等于0.3?为什么浮点数计算会出现微小误差?本文将从计算机底层原理出发࿰…...
ChatGPT网络错误如何解决
在当今的信息化社会,网络技术已无处不在。无论是日常生活中的在线购物,还是工作中的远程会议,网络的稳定性和可靠性成为了我们无时无刻不在关注的重要问题。而在智能技术的快速发展中,像ChatGPT这样的人工智能模型,因其…...
Vue3初学之插槽(slot)使用
在 Vue 3 中,插槽(Slots)是一种强大的内容分发机制,允许你在组件中定义可替换的内容区域,从而使组件更加通用和灵活。以下是 Vue 3 中插槽的几种常见用法: 默认插槽 默认插槽是最基本的插槽类型࿰…...
使用PVE快速创建虚拟机集群并搭建docker环境
安装Linux系统 这里以安装龙蜥操作系统AnolisOS8.9为例加以说明。 通过PVE后台上传操作系统ISO镜像。 然后在PVE上【创建虚拟机】,选定上传的龙蜥操作系统镜像进行系统安装。 注意:在安装过程中,要设定语言、时区、超管用户root的密码、普…...
带格式 pdf 翻译
支持 openAI 接口,国内 deepseek 接口兼容 openAI 接口, deepseek api 又非常便宜 https://pdf2zh.com/ https://github.com/Byaidu/PDFMathTranslate...
【C++】C++11(一)
目录 一、C11简介二、统一的列表初始化2.1 {}初始化2.2 std::initializer_list 三、声明3.1 auto3.2 decltype3.3 nullptr 四、范围for五、智能指针六、STL中一些变化七、右值引用和移动语义7.1 左值引用和右值引用7.2 左值引用与右值引用比较7.3 右值引…...
初学stm32 --- ADC单通道采集
目录 ADC寄存器介绍(F1) ADC控制寄存器 1(ADC_CR1) ADC控制寄存器 2(ADC_CR2) ADC采样时间寄存器1(ADC_SMPR1) ADC采样时间寄存器2(ADC_SMPR2) ADC规则序列寄存器 1(ADC_SQR1) ADC规则序列寄存器 2(ADC_SQR2) ADC规则序列寄存器 3(ADC_SQR3) AD…...
【动态规划篇】欣赏概率论与镜像法融合下,别出心裁探索解答括号序列问题
本篇鸡汤:没有人能替你承受痛苦,也没有人能拿走你的坚强. 欢迎拜访:羑悻的小杀马特.-CSDN博客 本篇主题:带你解答洛谷的括号序列问题(绝对巧解) 制作日期:2025.01.10 隶属专栏:C/C题…...
Java(day7)
字符串练习 生成验证码 package day6; /*生成验证码 内容:可以是小写字母,也可以是大写字,还可以是数字 规则: 长度为5 内容中是四位字母,1位数字。 其中数字只有1位,但是可以出现在任意的位置。*/ impor…...
Word 转成pdf及打印的开源方案支持xp
Word转成pdf、打印的方案几乎没有免费开源的方案,现在提供一个通过LibreOffice实现的方案 操作依赖LibreOffice需要安装,点此下载老版本 5.4.7.2是最后一个支持xp的 版本如需xp要请安装此版本 LibreOffice官方介绍 LibreOffice 是一款开放源代码的自…...
LabVIEW软件侵权分析与应对
问:如果涉及到LabVIEW软件的仿制或模仿,特别是在功能、界面等方面,如何判断是否构成侵权?该如何应对? 答:LabVIEW软件的侵权问题,尤其是在涉及到仿制或模仿其功能、界面、设计等方面࿰…...
【redis】centos7下安装redis7
在CentOS 7下安装Redis7可以通过以下两种方法实现:手动编译安装和使用YUM进行安装。 CentOS 7系统的环境和版本: $ cat /etc/centos-release CentOS Linux release 7.9.2009 (Core)手动编译安装 参考官方文档:https://redis.io/docs/lates…...
[network]回顾:集线器(Hub)
集线器(Hub)的发明是计算机网络发展史上的一个重要里程碑。它最初的设计目的是为了解决局域网(LAN)中多台计算机共享网络资源的需求。 #mermaid-svg-OAmOmKYGAXoglS5z {font-family:"trebuchet ms",verdana,arial,sans-…...
79 Openssl3.0 RSA公钥加密数据
1 引言 最近不小心用到了openssl3.0,项目中需要使用rsa非对称加解密算法,所以把openssl3.0使用公钥加密数据的函数调用摸了一遍。 之所以记录此篇文章,是因为网络上大多数是openssl3.0以前的版本的函数接口,而openssl3.0之后已经丢…...
EFCore HasDefaultValueSql (续2 HasComputedColumnSql)
前情:EFCore HasDefaultValueSql EFCore HasDefaultValueSql (续1 ValueGeneratedOnAdd)-CSDN博客 小伙伴在使用 HasDefaultValueSql 时,对相关的 ValueGeneratedOnAdd, HasComputedColumnSql 也有了疑问: HasComputedColumnSql 对于计算…...
阿里巴巴TransmittableThreadLocal使用指南
前言 ThreadLocal在上下文的数据传输上非常的方便和简洁。工业实践中,比较常用的有三个,ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal,那么他们三个之间有什么区别呢? 常见的三种ThreadLocal比较 ThreadLoc…...
ubuntu20下编译linux1.0 (part1)
author: hjjdebug date: 2025年 01月 09日 星期四 15:56:15 CST description: ubuntu20下编译linux1.0 (part1) 该博客记录了新gcc编译旧代码可能碰到的问题和解决办法, 可留作参考 操作环境: ubuntu20 $ gcc --version gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0 $ as --vers…...
欧拉公式和傅里叶变换
注:英文引文机翻,未校。 中文引文未整理去重,如有异常,请看原文。 Euler’s Formula and Fourier Transform Posted byczxttkl October 7, 2018 Euler’s formula states that e i x cos x i sin x e^{ix} \cos{x} i …...
Jenkins内修改allure报告名称
背景: 最近使用Jenkins搭建自动化测试环境时,使用Jenkins的allure插件生成的报告,一直显示默认ALLURE REPORT,想自定义成与项目关联的名称,如图所示,很明显自定义名称显得高大上些,之前…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
