当前位置: 首页 > news >正文

《Armv8-A virtualization》学习笔记

1.MAIR 的全称是 Memory Attribute Indirection Register。它是ARM架构中的一种寄存器,用于定义内存的属性,并提供一种间接访问内存属性的机制。MAIR寄存器包含多个字段,这些字段指示不同类型内存的属性,例如是否可以缓存、是否为设备内存等。这些寄存器在不同的异常级别(EL1、EL2、EL3)中具有不同的用途(见Armv8-A手册P3335)。

2.VMID和ASID是在虚拟化环境中用于区分不同虚拟机和进程的标识符。VMID标识每个虚拟机,确保它们的地址翻译可以同时存在于TLB中,而ASID用于区分同一虚拟机内的不同进程,提高上下文切换效率。在ARM架构中,VMID存储在VTTBR_EL2寄存器,而ASID通常存储在TTBR寄存器。两者结合使用,允许多个虚拟机和进程共享硬件资源,同时保持它们地址空间的隔离。

3.VTTBR_EL2的全称是Virtualization Translation Table Base Register。是一个64位的寄存器,用于在ARMv8-A架构中处理虚拟化。它保存了用于EL1&0翻译机制第一阶段查找的转换表的基础地址,以及其他信息(如虚拟机ID,VMID,用于选择转换表)。

4.HCR_EL2(Hypervisor Configuration Register for Exception Level 2)是ARM架构中用于控制虚拟化配置的寄存器。它提供了多种控制位,用于定义各种操作是否应该被捕获(trap)到EL2。例如:

  • 第0位是VM,表示虚拟化支持。当EL2在当前安全状态下启用时,为el1和el0转换机制启用阶段2地址转换;
  • 第6/7/8位分别是VI/VF/VSE,置1分别表示生成vIRQ/vFIQ/vSerror中断,相当于中断控制器向 vCPU 发出中断信号;
  • 第13位是TWI,用于控制当执行在EL2以下异常级别时,WFI(Wait For Interrupt)指令的行为,设置为0时,在EL0或EL1执行WFI指令不会被捕获到EL2,即WFI指令可以正常执行,使处理器等待中断。设置为1时,任何在EL0或EL1执行的WFI指令尝试都会被捕获到EL2,这意味着处理器不会直接进入等待中断的低功耗状态,而是触发一个到EL2的异常。这允许运行在EL2的虚拟机监视器(hypervisor)介入并处理这个等待操作;
  • 第27位是TGE,用来控制异常陷入情况,设置为0时对EL0的执行没有影响(此时,TGE位关闭了对EL0执行的异常路由到EL2的陷阱。这意味着,当EL2在当前安全状态下未启用时,EL0的异常处理不受影响,即EL0的异常(如中断)将按照正常的异常处理流程进行,不会被路由到EL2),设置为1时当EL2在当前安全状态下未启用时,对EL0没有影响。当EL2在当前安全状态下启用时,所有异常路由到EL2;
  • 第32位是CD,将其设置为0b1时,会禁用虚拟化环境中第二阶段数据访问和翻译表遍历的缓存(如果页表数据被缓存,并且这些数据被修改(例如,由于动态内存管理),那么CPU可能从缓存中获取过时的页表信息,导致地址翻译错误),确保内存访问的一致性和虚拟机之间的隔离,但可能会影响性能;
  • 第34位是E2H,这个位用于启用或禁用(0表示禁用,1表示启用)在EL2上运行宿主机操作系统(Host Operating System)的配置,同时宿主机操作系统的应用程序在EL0(异常级别0)上运行;
  • 第46位是FWB,它是HCR_EL2寄存器中的一个控制位,全称是“Force Write Back”,用于定义在两阶段翻译机制中组合的缓存属性。具体来说,这个位影响如何结合第一阶段(EL1)和第二阶段(EL0)的内存类型和缓存属性;
  • 第4位是IMO,用来控制物理IRQ路由,设置为0时:物理IRQ中断不会被送达EL2、当HCR_EL2.TGE的值为0时,如果处理器执行在EL2使用AArch64,物理IRQ中断不会被采取,除非它们被路由到EL3由SCR_EL3.IRQ位决定、虚拟IRQ中断被禁用。设置为1时:当在任何异常级别执行,并且EL2在当前安全状态下被启用时:物理IRQ中断会被送达EL2,除非它们被路由到EL3、当HCR_EL2.TGE的值为0时,虚拟IRQ中断被启用。如果EL2在当前安全状态下被启用,并且HCR_EL2.TGE的值为1:不管IMO位的值如何,物理IRQ中断目标为EL2,除非它们被路由到EL3。如下图所示:

5.FAR_EL1、FAR_EL2和FAR_EL3(Fault Address Register)是ARM架构中的故障地址寄存器,分别对应EL1、EL2和EL3异常级别。它们在发生异常如数据访问违规时存储引起异常的虚拟地址,辅助调试和异常处理。FAR_EL1用于EL1,FAR_EL2用于虚拟化环境中的EL2,FAR_EL3用于最高级别的EL3异常。

6.HPFAR_EL2寄存器用于在ARM架构的虚拟化环境中捕获第二阶段地址翻译(Stage 2 translation)过程中发生异常的中间物理地址(IPA)。当虚拟机尝试访问一个地址,而这个地址的翻译或访问导致了故障(如访问违规)时,HPFAR_EL2会存储引起异常的IPA地址。

7.ESR_ELx(Exception Syndrome Register)是ARMv8架构中用于记录异常详细信息的寄存器,它为EL1、EL2和EL3等异常级别提供服务。ESR_ELx包含异常类别(EC)、指令长度(IL)和指令特定综合症(ISS)字段。EC字段指示异常类型,如数据中止或系统调用;IL字段表示导致异常的指令长度;ISS字段提供关于异常的额外信息,其内容取决于异常类型。ESR_ELx主要在同步异常和SError异常中使用,有助于操作系统或异常处理程序诊断问题并采取行动。

8.从Arm GICv2开始,GIC可以通过提供物理CPU接口和虚拟CPU接口来发出物理和虚拟中断信号,这两个接口是相同的,只是一个接口发出物理中断信号,另一个接口发出虚拟中断信号。虚拟机管理程序可以将虚拟CPU接口映射到VM,从而允许该VM中的软件直接与GIC通信。这种方法的优点是虚拟机管理程序只需要设置虚拟接口,而不需要模拟它。这种方法减少了执行需要被捕获到EL2的次数,因此减少了虚拟化中断的开销,虽然Arm GICv2可以与Armv8-A设计一起使用,但更常见的是使用GICv3或GICv4。

9.ARMv8-A架构中的物理定时器和虚拟定时器是通用定时器框架的两个关键组成部分,它们协同工作以提供精确的时间管理和中断生成。物理定时器与系统计数器相联系,用于生成基于物理时间的中断。它们允许操作系统和应用程序访问一个统一的系统时间视图,这对于性能监控、任务调度和时间戳操作至关重要。物理定时器的中断通常用于实现操作系统的调度和同步机制。物理定时器通过寄存器如CNTPCT_EL0(物理计数器值)和CNTFRQ_EL0(系统计数器频率)来访问。虚拟定时器则是在虚拟化环境中使用的,它们允许虚拟机(VM)拥有自己的私有定时器,独立于物理定时器。这意味着每个VM可以有自己的时间视图,不受其他VM的干扰。虚拟定时器通过寄存器如CNTVCT_EL0(虚拟计数器值)和CNTVOFF_EL2(虚拟计数器偏移)来访问。Hypervisor可以设置虚拟定时器,以便在虚拟环境中生成中断,从而实现虚拟机的调度和时间管理。

10.TTBR0_EL1和TTBR0_EL2是ARM架构中与内存管理单元(MMU)相关的寄存器,用于管理虚拟地址到物理地址的转换。TTBR0_EL1:在EL1(内核态)使用,负责映射用户态(EL0)的虚拟内存。此寄存器存放页表基址,使操作系统能够管理用户应用程序的内存访问,确保虚拟地址正确映射到物理地址。TTBR0_EL2:在EL2(虚拟机管理程序层)使用,负责映射虚拟机管理程序的虚拟内存。它指定EL2的页表基址,允许虚拟机管理程序有效地管理和隔离不同虚拟机的内存空间。

11.TTBR1_EL1 和 TTBR0_EL1 都是 ARM 架构中的页表基址寄存器(Translation Table Base Register),它们的作用是为不同的虚拟地址范围提供页表基址,用于将虚拟地址映射到物理地址。不过,它们之间有明确的区别,主要体现在管理的虚拟地址范围不同。TTBR0_EL1 管理较低的虚拟地址空间,主要用于用户态(EL0)程序的内存映射。TTBR1_EL1 管理较高的虚拟地址空间,通常用于操作系统内核(EL1)自身的内存映射。使用两个页表基址寄存器的好处在于能够分离用户态和内核态的地址空间,确保用户态和内核态的内存区域之间的隔离和保护。这样,用户态进程无法访问内核态的地址空间,增强了系统的安全性和稳定性。

12.SCR_EL3(Secure Configuration Register at EL3)是EL3特权级别下的控制寄存器,用于管理系统安全状态和特权级别之间的切换。EEL2(Enable EL2 in Secure State)位的作用是允许在安全状态下启用 EL2。当该位被设置时,处理器能够在安全状态下进入 EL2,从而支持在安全环境下运行虚拟化功能。

13.Arm架构定义了两个物理地址空间:安全和非安全。在非安全状态下,虚拟机(VM)第一阶段转换的输出始终是非安全的。因此,此时只有一个中间物理地址(IPA)空间供阶段2处理。在安全状态下,VM的第1阶段转换可以输出安全地址和非安全地址。转换表描述符中的NS位(NS 位出现在虚拟内存地址到物理地址映射的页表描述符中。具体来说,NS 位是页表中的一部分,用来指定该映射所对应的物理地址是安全状态还是非安全状态)控制是否输出安全或非安全地址空间。如下图所示,这意味着阶段2有两个IPA空间,安全和非安全:

与阶段1表不同,阶段2表条目中没有NS位,对于特定的IPA空间,所有转换都会产生安全物理地址或非安全物理地址。该转换由寄存器位控制。通常,非安全IPA会转换为非安全PA,安全IPA会转换为安全PA。在安全状态下,当第1阶段MMU被禁用时,所有地址都将被视为安全地址。

相关文章:

《Armv8-A virtualization》学习笔记

1.MAIR 的全称是 Memory Attribute Indirection Register。它是ARM架构中的一种寄存器,用于定义内存的属性,并提供一种间接访问内存属性的机制。MAIR寄存器包含多个字段,这些字段指示不同类型内存的属性,例如是否可以缓存、是否为…...

23. 【.NET 8 实战--孢子记账--从单体到微服务】--记账模块--预算

在每个月发工资后很多人会对未来一个月的花销进行大致的计划,这个行为叫做预算。那么在这篇文章中我们将一起开发预算服务。 一、需求 预算需求就是简单的增删改查,虽然比较简单,但是也有几点需要注意。 编号需求说明1新增预算1. 针对每种…...

DOS攻击的原理和实现 (网络安全)hping3和Slowloris的运用

DoS攻击的原理和实现 DoS攻击(Denial of Service Attack,拒绝服务攻击)是指通过恶意手段使目标服务器、服务或网络资源无法正常提供服务,从而影响正常用户的访问。DoS攻击通常通过消耗目标系统的资源(如带宽、内存、处…...

十三、Vue 过渡和动画

文章目录 一、Vue过渡和动画概述1. 过渡的基本原理2. 动画的基本原理二、使用 CSS 过渡1. 单元素过渡2. 过渡模式in - out 模式out - in 模式三、使用 CSS 动画1. 单元素动画2. 动画结合过渡四、JavaScript 钩子函数实现过渡和动画1. 基本概念2. 示例五、列表过渡1. 基本原理2.…...

Dubbo 关键知识点解析:负载均衡、容错、代理及相关框架对比

1.Dubbo 负载均衡策略? Dubbo 是一个分布式服务框架,它提供了多种负载均衡策略来分发服务调用。在 Dubbo 中,负载均衡的实现是基于客户端的,即由服务消费者(Consumer)端决定如何选择服务提供者&#xff08…...

仿生的群体智能算法总结之三(十种)

群体智能算法是一类通过模拟自然界中的群体行为来解决复杂优化问题的方法。以下是30种常见的群体智能算法,本文汇总第21-30种。接上文 : 编号 算法名称(英文) 算法名称(中文) 年份 作者 1 Ant Colony Optimization (ACO) 蚁群优化算法 1991 Marco Dorigo 2 Particle Swar…...

《量子比特大阅兵:不同类型量子比特在人工智能领域的优劣势剖析》

在科技的前沿,量子比特与人工智能的融合正开启一扇全新的大门。不同类型的量子比特,如超导、离子阱、光量子等,在与人工智能结合时展现出独特的优势与劣势。 超导量子比特 超导量子比特是目前应用较为广泛且研究相对成熟的量子比特类型。它…...

el-input输入框需要支持多输入,最后传输给后台的字段值以逗号分割

需求&#xff1a;一个输入框字段需要支持多次输入&#xff0c;最后传输给后台的字段值以逗号分割 解决方案&#xff1a;结合了el-tag组件的动态编辑标签 那块的代码 //子组件 <template><div class"input-multiple-box" idinputMultipleBox><div>…...

机器人领域的一些仿真器

模拟工具和环境对于开发、测试和验证可变形物体操作策略至关重要。这些工具提供了一个受控的虚拟环境&#xff0c;用于评估各种算法和模型的性能&#xff0c;并生成用于训练和测试数据驱动模型的合成数据。 Bullet Physics Library 用于可变形物体模拟的一个流行的物理引擎是 B…...

前端-动画库Lottie 3分钟学会使用

目录 1. Lottie地址 2. 使用html实操 3. 也可以选择其他的语言 1. Lottie地址 LottieFiles: Download Free lightweight animations for website & apps.Effortlessly bring the smallest, free, ready-to-use motion graphics for the web, app, social, and designs.…...

腾讯云智能结构化 OCR:驱动多行业数字化转型的核心引擎

在当今数字化时代的汹涌浪潮中&#xff0c;数据已跃升为企业发展的关键要素&#xff0c;其高效、精准的处理成为企业在激烈市场竞争中脱颖而出的核心竞争力。腾讯云智能结构化 OCR 技术凭借其前沿的科技架构与卓越的功能特性&#xff0c;宛如一颗璀璨的明星&#xff0c;在交通、…...

【开源免费】基于SpringBoot+Vue.JS精品在线试题库系统(JAVA毕业设计)

本文项目编号 T 115 &#xff0c;文末自助获取源码 \color{red}{T115&#xff0c;文末自助获取源码} T115&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

c# CodeFirst生成表字段加注释

前置&#xff1a;ORM框架工具使用的FreeSql 背景&#xff1a;开发环境中运行接口&#xff0c;所有的表字段以及备注会自动加上&#xff0c;但是在测试环境时运行就只生成了表&#xff0c;没有把每个字段的注释加上 问题检查&#xff1a; FreeSql CodeFirst 支持将 c# 代码内的注…...

MySQL8.0复制原理和部署配置步骤

1. mysql 主从复制原理 在从库上执行change master to&#xff1b;会将主库的信息保存到从库中的master.info文件中在从库执行start slave;开启io_thread, sql_thread线程;io_thread工作&#xff1b;io_thread通过master.info文件中主库的连接信息去连接主库&#xff1b;连接成…...

Unity热更新文件修改后缀并拷贝到指定路径的工具类

最近在学习Hybrid热更新。每次编译完&#xff0c;需要修改后缀名和拷贝到特定路径覆盖旧文件&#xff0c;就叫AI写了个工具类。现在记录一下&#xff0c;毕竟ai写完还需要修改。 代码如下&#xff0c;放到Assets/Editor/路径下即可。 可根据需求自行改变路径和文件名。 using…...

前端vue+el-input实现输入框中文字高亮标红效果(学习自掘金博主文章)

学习自掘金文章https://juejin.cn/post/7295169886177918985 该博主的代码基于原生textarea控件和js实现&#xff0c;基于该博主的代码和思路&#xff0c;在vue下实现了相应功能 思路 生成html字符串来实现文字高亮标红效果&#xff0c;但是input输入控件不能渲染html字符串…...

SAP系统中的标准价、移动平均价是什么?有何区别?物料分类账的优点

文章目录 前言一、SAP系统中的价格控制二、移动平均价、标准价是什么&#xff1f;三、S价&#xff08;标准价&#xff09;的优势四、S价&#xff08;标准价&#xff09;的劣势五、V价&#xff08;移动平均价&#xff09;的优势六、V价&#xff08;移动平均价&#xff09;的劣势…...

通往O1开源之路

“Scaling of Search and Learning: A Roadmap to Reproduce o1 from Reinforcement Learning Perspective”由复旦大学和上海人工智能实验室的研究者撰写。该论文从强化学习视角出发&#xff0c;深入分析了实现类似OpenAI o1模型性能的路线图&#xff0c;聚焦于策略初始化、奖…...

【QT】实现RestFul接口

在这个教程中&#xff0c;我们将介绍如何在 Qt 中使用 QHttpServer 类来创建一个简单的 HTTP 服务器。QHttpServer 是 Qt 6 引入的新类&#xff0c;用于提供 HTTP 服务。这个类非常适合快速开发restful接口。 准备工作 确保你的 Qt 版本是 Qt 6 或更高版本&#xff0c;因为 Q…...

ARP攻击的原理和实现 (网络安全)

ARP攻击的原理和实现 ARP&#xff08;Address Resolution Protocol&#xff0c;地址解析协议&#xff09;是一种网络协议&#xff0c;用于在局域网内将IP地址映射到MAC地址。在以太网中&#xff0c;设备通过广播ARP请求来查询目标IP地址对应的MAC地址&#xff0c;从而建立通信…...

大脑特训,自信 “满格”

编辑&#xff1a;念小艺 在追求自信的漫漫长路上&#xff0c;诸多因素如同闪耀的星光&#xff0c;为人们指引着方向。保持良好的饮食习惯&#xff0c;让身体摄取充足且均衡的营养&#xff0c;为精神的饱满提供坚实后盾&#xff1b;持续投身于锻炼之中&#xff0c;在挥洒汗水的…...

如何备份和恢复 PostgreSQL 数据库 ?

对于数据库管理员和开发人员来说&#xff0c;在 PostgreSQL 中创建数据库副本是一项至关重要的任务。此过程对于测试、备份、数据分析等都是必不可少的。在本指南中&#xff0c;我们将深入研究创建 PostgreSQL 数据库副本的步骤&#xff0c;以确保数据完整性和系统性能。 必要…...

逆向入门(6)汇编篇-外挂初体验

代码分析部分 游戏里面还是体验了不少自己CV来的外挂的&#xff0c;自己编写的程序还是头一次体验&#xff0c;程序源码如下 void startAcctack() {printf("开始攻击\n");// 获取当前系统时间time_t now time(0); // 获取当前时间的时间戳struct tm *local_time …...

HTML——77.网页编码及乱码处理

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>网页编码及乱码处理</title></head><body><!--网页编码&#xff1a;指网页中特定的字符编码&#xff0c;通过解析编码成为我们知道的文字--><!-…...

(leetcode算法题)382. 链表随机节点

如果给你一个 智能记录 k行内容的小笔记本&#xff0c;从一本你也不知道有多少行的 C Primer 中进行摘抄&#xff0c;你应该怎么做才能让抄写的时候能让书中的每一行都等概率的出现在小笔记本中&#xff1f; 答&#xff1a;准备好一个公平的轮盘和一个巨大的摇奖机&#xff0c…...

Git 如何在IDEA中进行使用

1. 2. 3....

【Pytorch报错】AttributeError: cannot assign module before Module.__init__() call

代码&#xff1a; import torch.nn as nnclass Model(nn.Module):def __init__(self, input_dim, output_dim):self.linear nn.Linear(input_dim, output_dim) def forward(self, x):out self.linear(x)return outmodel Model(1, 1)报错&#xff1a; --------------------…...

深入理解计算机系统—虚拟内存(一)

一个系统中的进程是与其他进程共享 CPU 和主存资源的。然而&#xff0c;共享主存会形成特殊的挑战。随着对 CPU 需求的增长&#xff0c;进程以某种合理的平滑方式慢了下来。但是如果太多的进程需要太多的内存&#xff0c;那么它们中的一些就根本无法运行。 为了更加有效地管理内…...

[Qt] 输入控件 | Line | Text | Combo | Spin | Date | Dial | Slider

目录 输入类控件 1、Line Edit 录入个人信息 使用正则表达式验证输入框的数据 验证两次输入的密码一致 切换显示密码 2、Text Edit 获取多行输入框的内容 验证输入框的各种信号 3、Combo Box 使用下拉框模拟麦当劳点餐 从文件中加载下拉框的选项 4、Spin Box 调整…...

【信息系统项目管理师】高分论文:论信息系统项目的风险管理(数字化联合审查管理系统)

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文一、全盘考虑,编制项目风险管理计划二、务实高效,做好项目的风险识别三、客观严谨,进行定性风险分析四、客观严谨,进行定量风险分析五、未雨绸缪,做好规划风险应对六、控制执行,实施风险应对七、做好…...

设计模式 结构型 外观模式(Facade Pattern)与 常见技术框架应用 解析

外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;它的核心思想是将一个复杂的子系统封装在一个外观类中&#xff0c;为子系统提供一个统一的接口。通过这个接口&#xff0c;客户端可以简化对子系统的访问&#xff0c;而无需直接与子系统中的各…...

《learn_the_architecture_-_generic_interrupt_controller_v3_and_v4__lpisn》学习笔记

1.LPI&#xff08;Locality-specific Peripheral Interrupts&#xff09;是一种基于消息的中断&#xff08;Message Signaled Interrupt&#xff0c;MSI&#xff09;&#xff0c;由中断翻译服务(ITS)提供翻译。这是因为LPI的设计目标是为系统中大量的设备提供高效的中断管理&am…...

java 常量池详解

目录 java 常量池详解一 静态常量池&#xff08;Static Constant Pool&#xff09;1.1 概述1.2 存储内容1.3 特点1.4 示例 二 运行时常量池&#xff08;Runtime Constant Pool&#xff09;2.1 概述2.2 存储内容2.3 特点2.4 示例 三 基础类型常量池&#xff08;Primitive Type C…...

aardio —— 虚表 —— 模拟属性框

写了个简单的属性框例程&#xff0c;抛砖引玉&#xff0c;期待你做出更丰富强大的功能。 可折叠行、可输入文本、可下拉选择、支持下拉选择图片、颜色等功能。 只有想不到&#xff0c;没有做不到&#xff0c;发挥你的想象力吧。 import win.ui; import godking.comboboxEx im…...

企业微信——智能表格学习

智能表格 应用限制条件 获取 token https://developer.work.weixin.qq.com/document/10013#%E5%BC%80%E5%8F%91%E6%AD%A5%E9%AA%A4 开发步骤 你可以通过以下步骤&#xff0c;使用access_token来访问企业微信的接口。需要注意的是&#xff0c;所有的接口需使用Https协议、Js…...

2501d,jingo优化

原文 大家好,我重构和优化了一下jin.go这里: 我去掉了vibe.d依赖,因为它又慢又大,而且我无法与2版本交朋友.当仅运行1000个vibe纤程时,不仅应用崩溃,甚至图形系统驱动也崩溃一次,这需要重启笔记本电脑. 当前,我用小栈大小的本地流(4kb)解决. 我真很期待photon的稳定性,以恢复支…...

实景三维点云处理专业软件ArcGIS根据DSM生成地表点云集

常见的实景三维处理软件及其特色功能如下&#xff1a; 一、专业实景三维建模软件 Agisoft Metashape 高精度建模&#xff1a;能够生成高精度的三维模型&#xff0c;精度可以达到厘米级甚至毫米级&#xff0c;适用于需要详细测量和分析的项目&#xff0c;如文物保护和建筑测量。…...

山东大学人工智能导论期末复习概念汇总

人工智能概念汇总V2 —Nevertheless 简介 [!NOTE] 本文是在原版的基础上&#xff0c;面向期末而进行的删减版本 建议使用pdf版本&#xff0c;排版和图片显示完全。如有需要&#xff0c;可私信发送邮箱地址 PDF版本&#xff1a; 山东大学人工智能导论概念汇总pdf版 山东大学软…...

Ubuntu下安装Android Sdk

下载android sdk命令行工具 https://developer.android.com/studio?hlzh-cn#command-tools mkdir android-sdk cd android-sdk unzip commandlinetools-linux-11076708_latest.zip 添加环境变量到~/.bashrc export ANDROID_HOME$HOME/android-sdk export PATH$PATH:$ANDRO…...

c语言中GHashTable的使用

前言:最近在c代码中需要用到键值对的存储&#xff0c;由于没有map&#xff0c;需要自己实现或者使用库函数&#xff0c;g_hash_table_new是GLib中的库函数&#xff0c;但使用起来会有很多坑&#xff0c;记录一下 构建hash表g_hash_table_new GHashTable* g_hash_table_new(GH…...

Conda清理缓存

参考&#xff1a;1、2...

【每日学点鸿蒙知识】导入cardEmulation、自定义装饰器、CallState状态码顺序、kv配置、签名文件配置

1、HarmonyOS 无法导入cardEmulation&#xff1f; 在工程entry mudule里的index.ets文件里导入cardEmulation失败 可以按照下面方式添加SystemCapability&#xff1b;在src/main/syscap.json(此文件需要手动创建&#xff09;中添加如下内容 {"devices": {"gen…...

【从零开始入门unity游戏开发之——C#篇42】C#补充知识——随机数(Random)、多种方法实现string字符串拼接、语句的简写

文章目录 一、随机数1、Random.Next()生成随机整数示例&#xff1a;生成一个随机整数生成指定范围内的随机整数 2、Random.NextSingle生成随机浮点数示例&#xff1a;生成随机浮点数 3、 生成随机字母或字符示例&#xff1a;生成随机字母示例&#xff1a;生成随机小写字母 二、…...

深入解析 Conda 安装的默认依赖包及其作用:conda create安装了哪些包(中英双语)

深入解析 Conda 安装的默认依赖包及其作用 当我们使用 Conda 创建新环境时&#xff0c;例如执行命令&#xff1a; conda create -n olmes python3.10Conda 会自动为我们安装一系列基础依赖包&#xff0c;保证 Python 环境能够正常运行。这些包不仅是我们开发的基础工具&#…...

《Vue3实战教程》35:Vue3测试

如果您有疑问&#xff0c;请观看视频教程《Vue3实战教程》 测试​ 为什么需要测试​ 自动化测试能够预防无意引入的 bug&#xff0c;并鼓励开发者将应用分解为可测试、可维护的函数、模块、类和组件。这能够帮助你和你的团队更快速、自信地构建复杂的 Vue 应用。与任何应用一…...

Mysql监视器搭建

Mysql监视器搭建 资源下载在&#xff1a;Mysql监视器资源包 查询问题&#xff1a;CPU、连接数、慢查询 --> 暴增 1、exporter进行Mysql信息采集 修改my.cnf [client] userroot password数据库密码 host:数据库URL port3306启动命令 mysqld_exporter.exe --config.my-c…...

Linux(centos)安装 MySQL 8 数据库(图文详细教程)

前言 前几天写了个window系统下安装Mysql的博客&#xff0c;收到很多小伙伴私信需要Linux下安装Mysql的教程&#xff0c;今天这边和大家分享一下&#xff0c;话不多说&#xff0c;看教程。 一、删除以前安装的MySQL服务 一般安装程序第一步都需要清除之前的安装痕迹&#xff…...

软件工程大作业——图书管理系统/图书个性化推荐与实现系统

目录 1 绪论 1.1研究背景 1.2研究现状 1.3研究内容 2 系统关键技术 2.1 Spring Boot框架 2.2 JAVA技术 2.3 MYSQL数据库 2.4 B/S结构 3 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2经济可行性 3.1.3操作可行性 3.2 系统性能分析 3.3 系统功能分析 3.4系统流程分析 3.4.1登…...

Linux下编译安装PETSc

本文记录在Linux下编译安装PETSc的流程。 零、环境 操作系统Ubuntu 22.04.4 LTSVS Code1.92.1Git2.34.1GCC11.4.0CMake3.22.1oneAPI2024.2.1 一、安装依赖 1.1 安装oneAPI 参见&#xff1a;Get the Intel oneAPI Base Toolkit , Get the Intel oneAPI HPC Toolkit 1.2 安…...

检索增强生成

概述 检索增强生成&#xff08;Retrieval-Augmented Generation&#xff0c;RAG&#xff09;是一种将信息检索与语言模型相结合的技术。由Facebook AI Research于2020年提出&#xff0c;它把数据库的优势与语言模型的优势相结合。它能让模型从外部知识库中检索信息&#xff0c…...