《learn_the_architecture_-_aarch64_exception_model》学习笔记
1.当发生异常时,异常级别可以增加或保持不变,永远无法通过异常来转移到较低的权限级别。从异常返回时,异常级别可能会降低或保持不变,永远无法通过从异常返回来移动到更高的权限级别。EL0级不进行异常处理,异常必须在比EL0更高的异常级别处理。
2.ARM A-profile处理器(即A系列)的虚拟内存系统通过内存管理单元(MMU)管理内存访问权限。MMU使用转换表将虚拟地址映射到物理地址,并设置内存区域的属性和访问权限,包括读/写权限。访问权限分为特权和非特权访问,特权访问由高异常级别(如EL1、EL2、EL3)控制,通常用于操作系统内核或虚拟机管理程序,而非特权访问用于低级别的用户模式(EL0)。当应用程序在EL0执行时,内存访问权限会根据非特权访问权限进行检查,确保其不能访问超出权限的区域。而EL1、EL2、EL3的内存访问根据特权访问权限进行检查。MMU的配置存储在系统寄存器中,这些寄存器的访问权限由当前的异常级别控制,确保只有高权限级别才能修改MMU的配置,从而保障系统的安全性和稳定性。
3.SCTLR_ELx,即System Control Register。是ARM架构中用于控制系统行为的关键寄存器之一。不同的异常级别(EL0,EL1,EL2,EL3)都有相应的SCTLR_ELx寄存器,EL1和EL0共享相同的MMU配置,并且控制仅限于在EL1上运行的特权代码。因此没有SCTLR_EL0,所有控制均来自EL1可访问寄存器。较高的异常级别有权访问控制较低级别的寄存器,反之则不行。例如,如果需要,EL2有权访问SCTLR_EL1。无法从EL0访问该寄存器,任何尝试这样做都会生成异常。常见的系统寄存器如下表:
4.ARM架构中,处理元件(PE)在AArch32和AArch64执行状态间的切换只能在异常级别(EL)变化时发生。较低EL到较高EL时,可以保持当前状态或切换为AArch64;较高EL到较低EL时,可以保持或切换为AArch32。64位层可以托管32位层,但32位层不能托管64位层。例如,64位操作系统可运行64位和32位应用程序,而32位操作系统只能运行32位应用程序。AArch32提供与旧32位架构的向后兼容性,从Armv9-A开始在所有异常级别都必须支持AArch64,并且仅可选择在EL0级别支持AArch32。即除EL0其他异常级别均为 AArch64,并且复位时执行状态始终为 AArch64。这意味着旧版应用程序可以运行,但不能运行内核、虚拟机管理程序或固件。
5.AArch64架构支持多种安全状态,主要分为安全状态和非安全状态。想要从一种安全状态切换到另一种安全状态时必须通过EL3。如果实现了TrustZone,则处理器可以处于安全状态或非安全状态,这由SCR_EL3.NS位选择。安全状态下,处理元件(PE)可访问安全和非安全物理地址空间,适用于运行可信软件;而在非安全状态下,PE仅能访问非安全物理地址空间,适用于普通操作系统。EL3 是最高特权的异常级别,EL3 的安全状态是固定的,EL3 能够访问存储系统寄存器的所有副本。在Armv8-A架构中,EL3始终处于安全状态。而在Armv9-A架构中,EL3属于安全状态,除非实现了RME(Root Management Entity)。
Armv9-A新引入了对Realm Management Extension(RME)的支持。当实现RME时,支持两种额外的安全状态:Realm状态和Root状态。在Realm状态下,处理元件(PE)可以访问非安全和Realm物理地址空间;而在Root状态下,PE可以访问所有物理地址空间,且Root状态仅在EL3中可用。
6.对于任何特定处理器,是否实现所有异常级别以及每个实现的异常级别允许哪些执行状态都是可选择的,EL0和EL1是唯一必须实现且强制执行的异常级别,EL2和EL3是可选的。EL2包含许多虚拟化功能,没有EL2的实现无法访问这些功能。EL3是唯一可以更改安全状态的级别,如果实现选择不实现EL3,则该PE将只能访问单个安全状态。在Armv8.0-A中,EL2只存在于Non-secure状态,因为Secure状态下没有虚拟化支持。Armv8.4-A添加了S.EL2作为带有使能位(SCR_EL3.EEL2)的可选功能,以提供向后兼容性。
7.异常是指任何可能导致当前正在执行的程序挂起的事件,发生异常会导致状态发生变化,以执行代码来处理该异常。当发生异常时,处理器不会移至当前代码中的下一条指令,而是停止当前执行并分支到一段代码来处理请求。该代码称为异常处理程序,一旦事件处理完毕,执行就可以返回到原来的程序。Arm架构将异常分为两大类:同步异常和异步异常。同步异常是由当前正在执行的指令引起或与之相关的异常。同步异常与执行流同步,因为它们与当前执行的指令直接相关。例如,尝试写入MMU定义的只读位置的指令将触发同步异常。常见的同步异常有:Invalid instructions and trap exceptions、Memory accesses(内存访问异常是软件层面的问题,通常与页表、虚拟内存和访问权限相关,注意与SError区别)、Exception-generating instructions、Debug exceptions。SVC、HVC、SMC指令分别用于EL0请求EL1操作系统服务、EL1请求EL2虚拟机管理程序服务、普通世界请求EL3安全世界服务。当 PE 在 EL0 上执行时,它无法直接调用EL2上的虚拟机管理程序或EL3上的安全监视器,因为这只能在EL1及更高版本上实现。EL0处的应用程序必须使用对内核的SVC调用,并让内核执行调用更高异常级别的操作。假设已经实现了相应的异常级别,则操作系统内核EL1可以执行HVC指令来调用EL2处的管理程序或使用SMC指令调用EL3处的安全监视器。类似地,从EL2开始,PE可以使用SMC指令来调用EL3安全监视器。如下图所示:
异步异常不直接与当前执行的指令相关,并且通常是来自处理器外部的系统事件。这可能是软件需要响应的系统事件,例如计时器的活动或屏幕的触摸。异步异常也称为中断。常见的异步异常(中断)有:Physical interrupts(如UART中断)、SError(System Error是内存系统为响应意外事件而生成的异常类型,主要与硬件故障或系统层面的严重问题相关,通常是由硬件故障引起的,比如内存、缓存、外设或总线出错)、IRQ and FIQ、Virtual interrupts(如vSError、vIRQ、vFIQ, 这些虚拟中断的功能与物理中断相同,但它们只能向EL1发送信号)。物理和虚拟异步异常都可以被暂时屏蔽,这意味着异步异常可以保持挂起状态,直到它们被取消屏蔽并且异常被处理,这对于处理嵌套异常特别有用。同步异常无法被屏蔽,这是因为同步异常是由指令的执行直接引起的,因此如果它们随后悬而未决或被忽略,则会阻止执行。总结一下,从更大的角度来说,ARM中异常总的分为同步异常、SError、IRQ和FIQ四类,其中后面三个是中断,同步异常和SError是没有与之对应的中断号的,所有的SGI、SPI、PPI、LPI中断最终都是被处理为IRQ或FIQ(可以将IRQ或FIQ理解为中断处理方式,将SGI、SPI、PPI、LPI理解为中断分类)。
8.当处理器遇到异常时,会保存当前处理元件(PE)的状态和异常返回地址,并进入特定模式以处理该异常。当前的处理器状态从PSTATE中获取(在ARMv8架构中,PSTATE 并不是一个单独的寄存器,而是一个处理器状态寄存器的抽象概念,PSTATE中的DAIF位用于屏蔽异常事件。当相应的位被设置时,不会响应相应异常,包括D(调试异常)、A(SError异步异常)、I(IRQ异步异常)和F(FIQ异步异常)),并保存到程序状态寄存器(SPSR_ELx,x为1、2、3),而返回地址会存入异常链接寄存器(ELR_ELx,x为1、2、3)。对于同步异常和SError,还会更新异常综合症寄存器(ESR_ELx,x为1、2、3),记录异常的具体原因。对于与地址相关的异常(如MMU故障),触发异常的虚拟地址会写入故障地址寄存器(FAR_ELx,x为1、2、3)。
9.任何给定异常的异常处理都从称为异常向量的固定内存地址开始,当异常发生时,处理元件(PE)分支到向量表中的某个位置。AArch64 中的向量表与许多其他处理器架构不同,因为它们包含指令,而不是地址。每个条目最多包含32条指令,一个指令4字节(32位);足以执行基本的堆栈和调用特定于异常的处理代码。异常处理与返回如下图所示:
10.每种异常类型都有目标异常级别,可能是根据异常类型隐式决定的,或者由系统寄存器中的配置位定义。同步异常(如SVC、HVC和SMC指令)根据与其指令相关的规则进行路由。其他异常类型(如IRQ、FIQ和SError)可以路由到EL2(虚拟机管理程序)或EL3(安全监视器)。例如,可以配置系统将所有IRQ路由到EL1。每种异常类型(IRQ、FIQ和SError)的路由配置是独立进行的。SCR_EL3寄存器用于指定哪些异常(如IRQ、FIQ和SError)会路由到EL3(安全监视器),HCR_EL2寄存器用于指定哪些异常会路由到EL2(虚拟化层),这些寄存器允许将不同类型的中断路由到不同的异常级别。SCR_EL3和HCR_EL2中的每一位控制特定类型的中断(如IRQ、FIQ、SError),SCR_EL3的配置优先于HCR_EL2配置。当系统复位时,这些路由位的值是UNKNOWN的,必须由软件进行初始化配置。
11.路由到较高异常级别的异常无法被较低EL屏蔽。例如,如果中断在EL1中被屏蔽,并且中断被路由到EL2,则EL1屏蔽将不会影响EL2操作。路由到当前异常级别的异常可以被当前级别屏蔽。路由到较低异常级别的异常始终被屏蔽,异常将被挂起,直到PE更改为等于或低于路由到的异常级别。异常被处理时,处理器在特定异常级别的执行状态(AArch64或AArch32)由更高的异常级别的控制寄存器来决定。如下图:
12.每个异常级别都有自己的向量表,其基地址由其自己的向量基地址寄存器VBAR_ELx(Vector Base Address Register,x为1、2、3)定义。每种异常类型都有特定的地址偏移,这些偏移指向异常处理程序。异常可以分为四大类:来自较低异常级别的异常且较低异常级别使用的都是AArch32、来自较低异常级别的异常且较低异常级别至少有一个使用的是AArch64、来自当前异常级别且使用的堆栈指针是SP_EL0和来自当前异常级别且使用的堆栈指针是SP_ELx(使用哪个SP由PSTATE.SP位来决定)。在ARM架构中,当异常被路由到某个异常级别处理时,所使用的异常向量表是目标异常级别(即接收异常的异常级别)对应的向量表,而不是原始异常发生时的异常级别的向量表。
13.2021年扩展Armv8.8-A和Armv9.3-A中添加了不可屏蔽中断(NMI)支持。具有超级优先级的中断被归类为NMI,即使PSTATE异常掩码通常会阻止它被获取,也可以被获取。
相关文章:
《learn_the_architecture_-_aarch64_exception_model》学习笔记
1.当发生异常时,异常级别可以增加或保持不变,永远无法通过异常来转移到较低的权限级别。从异常返回时,异常级别可能会降低或保持不变,永远无法通过从异常返回来移动到更高的权限级别。EL0级不进行异常处理,异常必须在比…...
密码学原理技术-第十一章-Hash Functions
文章目录 总结Why we need hash functionsDigital Signature with a Hash FunctionBasic Protocol for Digital Signatures with a Hash FunctionPrincipal input–output behavior of hash functions Security propertiesThe three security requirements of hash functionsWh…...
Golang 入门基础知识
快速入门 go 语言笔记,参考了各种大佬的 blog 。 一、下载安装 国内站点 :https://golang.google.cn IDE : Goland (2020.12月以后破解有些困难 见 zhile.io, 无法试用的话可以搜一个注册码,失效的也可以&…...
SQL把字符串按逗号分割成记录
在 SQL 中,可以通过以下方法将字符串按逗号分割,并将每个分割的值作为单独的记录插入到结果集中。以下是针对不同数据库系统的实现方法: 1. 使用 STRING_SPLIT(SQL Server 2016) STRING_SPLIT 是 SQL Server 提供的内置…...
HTML——26.像素单位
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>像素</title></head><body><!--像素:1.指设备屏幕上的一个点,单位px,如led屏上的小灯朱2.当屏幕分辨率固定时&…...
TIM的输出比较(PWM)
OC(Output Compare)输出比较 输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形 每个高级定时器和通用定时器都拥有4个输出比较通道 初始化 1.开启RCC RCC_…...
李宏毅机器学习笔记-Transformer
目录 1. Seq2seq 2. encoder Transformer 中的 Block 结构 3. Decoder 4.Encoder和Decoder间的信息传递 5.Training 6.Tips 1. Seq2seq Transformer 是一个seq2seq的model。Seq2seq指的是input是一个序列,输出也是一个序列,输出的长度是由机器自己…...
【机器学习:三、常见的代价函数】
代价函数的选择与任务类型(回归、分类等)以及模型的具体目标密切相关。 回归任务中的代价函数 均方误差(Mean Squared Error, MSE) 公式: J ( θ ) 1 m ∑ i 1 m ( y i − y ^ i ) 2 J(\theta)\frac{1}{m}\sum_{i1}^m(y_i-\…...
React 数据是怎样传递的
写在前面 在 React 应用程序中,数据传递是非常重要的。它允许我们在组件之间共享信息和状态,从而构建出复杂的用户界面。本文将深入探讨 React 中的数据传递机制,包括 props、state 和 context API。我们还将通过实际例子来演示如何在项目中…...
Python入门教程 —— 高阶函数和装饰器
1.递归函数 什么是递归函数 如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数。 递归函数的作用 举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n 解决办法1:使用循环来完成 def cal(num):result,i = 1,1while i <= num:result *= ii…...
RSA密码的安全性分析(简化版本)
RSA的安全性是基于分解大整数的困难性假定,之所以认为是假定是因为至今还未能证明大整数就是NP问题,也许有尚未发现的多项式时间分解算法。随着人类计算能力的不断提高,原来被认为是不可能分解的大数已经被成功分解。对于大整数的威胁除了人类…...
解决Vue中设置el-select的高度不生效问题
el-select是Element UI框架中的一个选择器组件,它允许用户从多个选项中选择一个或多个项目。但这里确存在一个小坑,我们可以看到直接修改el-select的高度是无法生效的 <template><div id"login"><el-select v-model"role…...
解决openpyxl操纵带公式的excel或者csv之后,pandas无法读取数值的问题
1 功能特点 openpyxl: 这是一个专门用于操作Excel文件(.xlsx/.xlsm)的库。它提供了丰富的功能来读取、写入和修改Excel文件的各个元素,如单元格、行、列、工作表等。例如,可以通过openpyxl轻松地创建一个新的Excel工作…...
高等数学学习笔记 ☞ 无穷小比较与等价无穷小替换
1. 无穷小比较 1. 本质:就是函数的极限趋于0时的速度,谁快谁慢的问题。 2. 定义:若是在同一自变量的变化过程中的无穷小,且,则: ①:若,则称是比的高阶无穷小,记作&…...
计算队列中的‘捣乱分子’对数:一种量化无序程度的方法
计算队列中的‘捣乱分子’对数:一种量化无序程度的方法 前言解题思路关键点实现代码时间复杂度分析前言 在日常生活中,我们经常会遇到需要排队的场景,比如买票、候车、就餐等。在理想的排队情况下,人们会按照某种顺序(如先到先服务)整齐地排成一列。然而,总有一些人不遵…...
如何在不丢失数据的情况下从 IOS 14 回滚到 IOS 13
您是否后悔在 iPhone、iPad 或 iPod touch 上安装 iOS 14?如果你这样做,你并不孤单。许多升级到 iOS 14 beta 的 iPhone、iPad 和 iPod touch 用户不再适应它。 如果您在正式发布日期之前升级到 iOS 14 以享受其功能,但您不再适应 iOS 14&am…...
提升汽车金融租赁系统的效率与风险管理策略探讨
内容概要 在汽车金融租赁系统这个复杂的生态中,提升整体效率是每个企业都渴望达成的目标。首先,优化业务流程是实现高效运行的基础。通过分析目前的流程,找出冗余环节并进行简化,能够帮助企业缩短审批时间,提高客户满…...
Git 入门(一)
git 工作流如下: 命令如下: clone(克隆): 从远程仓库中克隆代码到本地仓库checkout (检出):从本地仓库中检出一个仓库分支然后进行修订add(添加): 在提交前先将代码提交到暂存区com…...
pyinstaller冻结打包多进程程序的bug:无限创建进程直至系统崩溃
前面写过两篇相关的文章: PyQt应用程序打包Python自动按键 这两篇文章都没有提到下面的这个重要问题: 采用Pyinstaller冻结打包多进程程序时,必须非常小心。这个技术线在Windows上会有一个非常严重的Bug。直接运行打包后的程序会造成无限创…...
OSI模型的网络层中产生拥塞的主要原因?
( 1 )缓冲区容量有限;( 1.5 分) ( 2 )传输线路的带宽有限;( 1.5 分) ( 3 )网络结点的处理能力有限;( 1 分…...
服务器开发 的设计模式(Design Patterns)核心知识
服务器开发的设计模式(Design Patterns)核心知识 在现代软件开发中,设计模式是一组为解决特定问题而重用的解决方案。它们是经过时间考验的最佳实践,为开发人员提供了一种有效的解决方案来应对常见的软件设计问题。特别是在服务器…...
智能工厂的设计软件 应用场景的一个例子: 为AI聊天工具添加一个知识系统 之20 再次重建 之5 项目文件三大部 整“拼”项目文档总述
本文要点 ]本项目的项目文件中的三个Part终于“拼”出来的(个别用词可能还需斟酌,但样子、格式和意思 差不多): Part1【凡间-AI众生】 人性化&去中心化-个体人生观 语言有关(语言交流-经验常识实践 信条 行为主义 随机数-本质偶然的 想…...
Lucas-Kanade光流法详解
简介:个人学习分享,如有错误,欢迎批评指正。 光流(Optical Flow)描述的是图像序列中各像素点随时间的运动情况,是计算机视觉中的基本问题之一。光流问题涉及尝试找出一幅图像中的许多点在第二幅图像中移动的…...
基于YOLO5的机械臂视觉抓取实现
前言: 机器人视觉系统标定是保证机器人精确运动和控制的关键环节之一。通过对机器人的运动学进行分析,可以精确计算出机器人末端执行器的位姿信息,从而实现对目标的精准定位和控制。相机标定是计算机视觉和图像处理中的重要步骤,标…...
Git 仓库与文件管理笔记
Git 的三种仓库概念 本地仓库 (Local Repository) 位于本地 .git 文件夹中通过 git init 或 git clone 创建存储完整的项目历史和分支信息 远程仓库 (Remote Repository) 位于 GitHub、GitLab 等平台服务器使用 git remote -v 查看所有远程仓库默认远程仓库名通常为 origin 工…...
Qt 5.14.2 学习记录 —— 오 信号与槽机制(2)
文章目录 1、信号与槽的参数2、为什么要有信号槽机制?3、断开并重新连接4、槽函数lambda写法 1、信号与槽的参数 信号和槽可以带参数,当信号带有参数时,槽的参数必须和信号的一致,此时发送信号就可以给信号函数传递实参ÿ…...
043_小驰私房菜_MTK Camera,Hal层将camera型号写到property属性中
【问题背景】 app层需要知道当前设备的摄像头型号,然后做一些差异化处理。底下如何上报这个摄像头型号? 【分析】 在kernel和hal层,都是有地方能获取到当前摄像头的型号,就看在哪里添加方便。获取到摄像头硬件型号后,将其写入到property属性, 然后app就可以通过读取该…...
Java线程
目录 一、线程入门 二、线程同步 三、死锁 四、线程的方法 五、线程的流程图 六、线程池 一、线程入门 1.进程:每一个软件都是一个进程。 2.线程:进程是由多个线程组成的。 3.进程和线程的关系:一个进程是对应一个或者是多个线程的。…...
JMeter 的 If Controller:开启性能测试的智能大门
嘿,宝子们!今天咱们就来聊聊 JMeter 里超级厉害的 If Controller,它就像是一把神奇的钥匙,能帮我们打开灵活测试的大门,让你的测试计划变得更加智能和高效。 一、If Controller 初印象 想象一下,你正在指…...
node内置模块之---os 模块
os 模块的作用 os 模块是 Node.js 的一个核心模块,提供了与操作系统交互的一些功能。它使得 Node.js 应用可以访问操作系统的底层信息,并执行一些系统级的操作,比如文件系统操作、环境变量、进程管理等。 os 模块的相关api 文件系统路径操…...
PgSQL如何用cmd命令行备份和还原数据库
一、备份 备份为压缩的二进制格式(通常更快且占用空间更少) pg_dump -U username -Fc -h hostname -p port -d dbname -F p -f backup.sql-U username:指定连接数据库的用户名(默认是 postgres)。-Fc:备…...
neo4j学习笔记
图数据库 图数据库是基于图论实现的一种NoSQL数据库,其数据存储结构和数据查询方式都是图论为基础的,图数据库主要用于存储更多的连接数据。 图论(GraphTheory)是数学的一个分支。图论以图为研究对象,图论的图是由若干…...
Halcon 显示异常
//For Halcon System HOperatorSet.SetSystem("clip_region", "false"); set_system( clip_region, false) *旋转 hom_mat2d_identity (HomMat2DIdentity1) hom_mat2d_rotate (HomMat2DIdentity1, rad( 90), 0, 0, HomMat2DRotate) affine_trans_region …...
2021年3月多省联考《申论》B卷真题解析
2021年福建公务员考试申论试题(乡镇卷) 材料一 在传统乡镇布局中,部分乡镇面积小、人口少,但管理机构、干部职数、机构编制、财政投入均不少,行政运行成本较高。合理调整乡镇行政区划,有助于统筹设置乡镇服…...
Mac iTerm2集成DeepSeek AI
1. 去deepseek官网申请api key,DeepSeek 2. 安装iTerm2 AI Plugin插件,https://iterm2.com/ai-plugin.html,插件解压后直接放到和iTerms相同的位置,默认就在/Applications 下 3. 配置iTerm2 4. 重启iTerm2,使用快捷键呼出AI对话…...
主机A与主机B建立TCP连接的三次握手过程
( 1 )主机 A 的 TCP 向主机 B 发出连接请求 SYN 报文段(第一次握手)。( 1 分) ( 2 )一旦包含 SYN 报文段的 IP 数据报到达主机 B , SYN 报文段被从数据报…...
vue3 vite 动态加载路由遇到的问题
记录一下动态加载路由遇到的问题 正常使用import引入静态路由是没问题的 component: () > import(/components/ExampleComponent.vue)动态引入的时候写成import就不行了 由于后端给的路由格式比较反人类…我这边先递归把获取到的数据格式做了一个整合. const processedDa…...
仿生的群体智能算法总结之一(十种)
群体智能算法是一类通过模拟自然界中的群体行为来解决复杂优化问题的方法。以下是10种常见的群体智能算法: 编号 算法名称(英文) 算法名称(中文) 年份 作者 1 Ant Colony Optimization (ACO) 蚁群优化算法 1991 Marco Dorigo 2 Particle Swarm Optimization (PSO) 粒子群优…...
02pandas读取和保存数据的方法
pandas读取和保存数据的方法 一、pandas支持的数据格式二、pandas常用数据读取方法1. 准备工作2. 代码示例1.pandas数据读取常用的方法2. read_excel 方法(1)read_excel()方法:读取excel文件(2)head()方法:…...
【STM32项目】智能物联网驱动的生物样本培育与管理辅助系统(完整工程资料源码)
视频功能演示: 智能物联网驱动的生物样本培育与管理辅助系统 目录: 目录 视频功能演示: 目录:...
家教老师预约平台小程序系统开发方案
家教老师预约平台小程序系统将连接学生/家长与家教老师,提供一站式的家教服务预约体验。 一、用户需求分析1、家教老师:希望获得更多的学生资源,通过平台展示自己的教学特长和经验,管理个人日程,接收并确认预约请求&a…...
uniapp 自定义类微信支付键盘 (微信小程序)
效果图 代码: <view class"popups popupsB"><view class"appreciatePrice"><view class"appreciatePriceTitle">赞赏金额</view><view class"appreciatePriceInput flex ac">¥<input typ…...
推荐5款局域网IP扫描工具,支持电脑+Android!
在日常网络管理中,快速扫描局域网中的设备和IP地址是一项基本但非常重要的任务。无论是排查网络问题还是进行设备管理,一款好用的 IP 扫描工具都能让你事半功倍。 如何选择适合自己需求的局域网 IP 扫描工具?有哪些功能强大又易于上手的工具…...
第十一章 图论
/* * 题目名称:连通图 * 题目来源:吉林大学复试上机题 * 题目链接:http://t.cn/AiO77VoA * 代码作者:杨泽邦(炉灰) */#include <iostream> #include <cstdio>using namespace std;const int MAXN 1000 10;int fathe…...
算法学习(21)—— BFS解决FloodFill问题
关于FloodFill 关于FloodFill算法,我们之前在dfs章节已经介绍过了:算法学习(17)—— FloodFill算法-CSDN博客 下面是用bfs宽搜来解决的实例 部分OJ题详解 733. 图像渲染 733. 图像渲染 - 力扣(LeetCode…...
计算机网络基础(7)中科大郑铨老师笔记
应用层 目标: 网络应用的 原理:网络应用协议的概念和实现方面 传输层的服务模型 客户-服务器模式 对等模式(peerto-peer) 内容分发网络 网络应用的 实例:互联网流行的应用层协 议 HTTP FTP SMTP / POP3 / IMAP DNS…...
CSS 之 响应式设计 前世今生
CSS系列文章目录 CSS 之 display 布局属性详解 CSS 之 position 定位属性详解一文搞懂flex布局 【弹性盒布局】 文章目录 CSS系列文章目录一、前言二、历史上的网站布局三、响应式设计之前的灵活布局四、响应式设计五、媒介查询六、灵活网格七、现代布局技术7.1 多栏布局7.2 伸…...
前端,npm install安装依赖卡在sill idealTree buildDeps(设置淘宝依赖)
输入npm i后,一直卡在sill idealTree buildDeps,一动不动 cnpm可以安装成功,但使用cnpm不会生成package-lock.json文件 设置淘宝依赖,依然卡住,挂梯子也不行 解决方法: // 取消ssl验证 set strict-ssl …...
【Rust自学】9.2. Result枚举与可恢复的错误 Pt.1:match、expect和unwrap处理错误
喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 9.2.1. Result枚举 通常情况下,错误都没有严重到需要停止整个程序的地步。某个函数之所以运行失败或者是遇到错误通常是由一些…...
[241231] CachyOS 2024 年终总结:性能飞跃与社区繁荣 | ScyllaDB 宣布转向开源可用许可证
目录 CachyOS 2024 年终总结:性能飞跃与社区繁荣ScyllaDB 宣布转向开源可用许可证 CachyOS 2024 年终总结:性能飞跃与社区繁荣 CachyOS 2024 年的最后一个版本 (也是第 13 个版本) 已经发布,同时也迎来了辞旧迎新之际。让我们一起回顾 Cachy…...