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

RISCV的smstateen-ssstateen扩展

RISC-V 的 Smstateen / Ssstateen 扩展是为了解决安全性和资源隔离性问题而设计的,尤其是针对在多个上下文(如用户线程、多个虚拟机)之间 潜在的隐蔽信道(covert channel) 风险。


🌐 背景:隐蔽信道与上下文切换问题

当 RISC-V 扩展引入新的硬件状态(如新的 CSR 寄存器)时,如果操作系统或 hypervisor 不了解这些状态的存在,就不会在上下文切换时保存和恢复它们。
这会导致:

  • 一个线程或虚拟机修改某些寄存器;
  • 另一个线程/虚拟机读取到这个未清除的状态
  • 从而形成 隐蔽信道,泄露信息。

例子:

  • AIA 扩展增加了多个 supervisor 级 CSR,如 siselect, sireg, stopi 等;
  • 如果 hypervisor 不支持 AIA,就不会保存这些 CSR;
  • 多个 guest OS 就能通过它们通信,违背隔离性原则。

✅ 已有的解决方法(部分)

对于 F(浮点)V(向量) 扩展,RISC-V 定义了:

  • FS 字段(用于浮点扩展);
  • VS 字段(用于向量扩展);
    这些字段位于 sstatus CSR 中,可以禁止访问对应寄存器,防止未管理状态的使用。

❌ 问题:FS/VS 方案的不足

  • 不能为所有扩展都分配 XS 字段;
  • sstatus 位数有限(尤其在 RV32 上),不能无限添加新字段;
  • 所以需要一个专门的新机制来管理“状态访问许可”。

✅ Smstateen / Ssstateen 扩展简介

目标:

提供一种统一方式:

  • 控制低特权级对某些扩展状态的访问;
  • 防止未管理状态造成信息泄露。

🧱 CSR 结构一览

🧭 Machine Level(M-mode)

  • mstateen0mstateen3 (RV64 为 64-bit,共 256 bits)
  • RV32 补充:mstateen0hmstateen3h

🧭 Supervisor Level(S-mode)

  • sstateen0sstateen3(32-bit,共 128 bits)
  • 没有高位 CSR,约定上层 32 位始终为 0

🧭 Hypervisor Level(VS-mode 控制)

  • hstateen0hstateen3(64-bit)
  • RV32 补充:hstateen0hhstateen3h

🔒 每个 stateen bit 的含义

  • 每个 bit 控制一个扩展状态的访问权限
  • 设为 0 时,低特权级访问相关状态(寄存器、CSR)会:
    • 抛出 illegal instruction
    • 或在 VS/VU 模式下抛出 virtual instruction exception
  • 若扩展未实现,或 bit 尚未定义,则该位是只读 0(read-only zero);

🔄 继承与关系(mstateen/hstateen/sstateen)

  • 所有状态权限控制从 M-mode 向下传播:
    • mstateenX[bit] 为 0 → 对应 hstateenX[bit]sstateenX[bit] 为只读 0;
    • hstateenX[bit] 为 0 → sstateenX[bit] 为只读 0;
    • sstateenX[bit] 不能是只读 1,除非对应上层是只读 1;
  • Bit 63
    • 控制是否允许访问对应编号的 sstateenXhstateenX
    • 举例:mstateen0[63] 控制是否允许访问 sstateen0hstateen0

📘 具体字段解释(以 mstateen0 为例)

Bit名称控制内容
63SE0控制访问 sstateen0, hstateen0
62ENVCFG控制访问 senvcfg, henvcfg
60CSRIND控制 siselect, sireg*, vsireg*
59AIA控制 AIA 除 CSRIND/IMSIC 外状态
58IMSIC控制 stopei, vstopei 等中断控制 CSR
57CONTEXT控制 scontext, hcontext
56PIP13控制 hedeleg (1.13 扩展)
55SRMCFG控制 srmcfg(Ssqosid 扩展)
54CTR性能计数器相关状态访问
7JVT控制 jvt(Zcmt 扩展)
6FCSR控制 fcsr(在 misa.F = 0 时有效)

🧩 使用规范(Usage)

启动时:

  • 所有 mstateen* 位默认初始化为 0(不能访问);
  • 若 M-mode 允许访问某状态 → 显式设置对应 bit;
  • 设置后,还必须:
    • hstateen*sstateen* 对应位初始化为 0;
    • 因为它们的初始内容由上级决定;

S-mode OS 启动时:

  • 初始化 sstateen* 全为 0;
  • 按需启用对应 bit,前提是该 OS 会管理该状态(例如在上下文切换中保存/恢复);

Hypervisor 模式下:

  • 需要保存/恢复 sstateen*,因为它是 Guest OS 的状态;
  • 如果要禁止访问某个 sstateen*,设置对应 hstateen* 的 bit 为 0 即可;

🧩 mstateen.X[63]=1hstateen.X[63]=1sstateen.X[63] 的 bit 63 才能为 1

即 hstateen 为 1,VS mode 的 OS 可以访问 sstateen,此时配置 VU 模式下 用户空间的寄存器组(浮点寄存器组、计数器寄存器组等)的访问权限。

✅ 这是为了逐级控制,防止越权访问

  • mstateenX[63] 控制是否允许访问 hstateenXsstateenX,控制 S/VU/VS;
  • hstateenX[63] 控制是否允许访问 sstateenX,控制 VS/VU;
  • sstateenX[63] 控制是否允许 U-mode / VU-mode 访问某个状态,控制 U/VU。

🚫 若上层 bit 为 0,则下层 无权设置为 1

因此,如果:

  • mstateenX[63] == 0:machine 模式根本不允许访问 sstateenXsstateenX[63] 被强制为只读 0;
  • hstateenX[63] == 0:hypervisor 模式不允许访问 sstateenXsstateenX[63] 同样为只读 0;
  • 只有当这两个都为 1,sstateenX[63] 才能为可写 1。

⚠️ 作用:

确保低权限级别不能启用状态访问,除非所有更高层都授权了该访问权限。这相当于一个层级访问控制链,任何一层禁用,即全链条断开。


🧩 hstateen 的角色

hstateenX 是在 VS/VU 模式下,控制虚拟机对状态访问的权限。它位于 hypervisor 级别(H-mode),作用是:

🎯 控制哪些扩展状态可供 guest OS 使用:

  • 当虚拟机运行于 VS-mode / VU-mode 时,访问某扩展状态前:
    • 需要 hstateenX[bit] = 1
    • 也需要 mstateenX[bit] = 1
    • 否则触发虚拟异常或非法指令异常。

🛡️ 控制 sstateenX 的可访问性:

  • hstateenX[63] 控制是否允许 guest OS 访问 sstateenX
  • 这是为了确保 hypervisor 能决定 guest OS 是否能配置用户态访问某些扩展状态。

🔁 总结依赖关系图(权限链):

               M-mode│┌───────▼────────┐│ mstateenX[bit] │  ← 顶层授权:控制所有下层访问└───────┬────────┘│+------+------+|             |hstateenX[bit]   (if H ext.)│             |▼             ▼VS-mode        sstateenX[bit]│▼U-mode/VU-mode
  • 若任何一级为 0,下层该 bit 就强制为只读 0。
  • mstateenX[63] → 允许访问 hstateenXsstateenX
  • hstateenX[63] → 允许访问 sstateenX
  • sstateenX[bit] → 允许 U/VU 模式使用扩展状态。

总结

完结撒花!

相关文章:

RISCV的smstateen-ssstateen扩展

RISC-V 的 Smstateen / Ssstateen 扩展是为了解决安全性和资源隔离性问题而设计的,尤其是针对在多个上下文(如用户线程、多个虚拟机)之间 潜在的隐蔽信道(covert channel) 风险。 🌐 背景:隐蔽信道与上下文切换问题 当…...

C++ 与 Lua 联合编程

在软件开发的广阔天地里,不同编程语言各有所长。C 以其卓越的性能、强大的功能和对硬件的直接操控能力,在系统开发、游戏引擎、服务器等底层领域占据重要地位,但c编写的程序需要编译,这往往是一个耗时操作,特别对于大型…...

瑞萨 EZ-CUBE2 调试器

瑞萨 EZ-CUBE2 调试器 本文介绍了瑞萨 EZ-CUBE2 调试器的基本信息、调试方式、环境搭建、硬件连接、软件测试等。 包装展示 调试器展示 开关选项 详见:EZ-CUBE2 | Renesas 瑞萨电子 . 环境搭建 使用 Renesas 公司的 e2 studio 开发工具,下载 并安装该…...

MATLAB滤波工具箱演示——自定义维度、滤波方法的例程演示与绘图、数据输出

使用 M A T L A B MATLAB MATLAB的界面做了一个 M A T L A B MATLAB MATLAB滤波工具箱 d e m o demo demo,本文章给出演示:自定义维度、滤波方法的例程演示与绘图、数据输出 文章目录 编辑界面使用方法优势待改进点部分代码 编辑界面 使用 M A T L A B …...

数据库索引优化实战: 如何设计高效的数据库索引

数据库索引优化实战: 如何设计高效的数据库索引 一、理解数据库索引的核心原理 1.1 B树索引的结构特性 数据库索引(Database Index)的本质是通过特定数据结构加速数据检索。现代关系型数据库普遍采用B树(B Tree)作为默认索引结构&…...

TS 安装

TS较JS优势 1 TS静态类型编程语言。编译时发现错误 2 类型系统 强化变量类型概念 3 支持新语法 4 类型推断机制 可以和React框架中的各种hook配合 5 任何地方都有代码提示 tsc 命令 将TS转为JS 1 tsc 文件.ts 生成 js文件 2 执行JS代码...

CMake separate_arguments用法详解

separate_arguments 是 CMake 中用于将字符串分割成参数列表的命令&#xff0c;适用于处理包含空格的参数或复杂命令行参数。以下是其用法详解&#xff1a; 基本语法 separate_arguments(<variable> [UNIX|WINDOWS_COMMAND] [PROGRAM <program>] [ARGS <args&…...

【AI科技】AMD ROCm 6.4 新功能:突破性推理、即插即用容器和模块化部署,可在 AMD Instinct GPU 上实现可扩展 AI

AMD ROCm 6.4 新功能&#xff1a;突破性推理、即插即用容器和模块化部署&#xff0c;可在 AMD Instinct GPU 上实现可扩展 AI 现代 AI 工作负载的规模和复杂性不断增长&#xff0c;而人们对性能和部署便捷性的期望也日益提升。对于在 AMD Instinct™ GPU 上构建 AI 和 HPC 未来…...

2025年- H20-Lc128-240. 搜索二维矩阵 II(矩阵)---java版

1.题目描述 2.思路 遍历矩阵&#xff0c;然后如果遇到矩阵中的值正好等于target&#xff0c;输出true。否则&#xff0c;输出false。 3.代码 public class H240 {public boolean searchMatrix(int[][] matrix, int target) {//1.计算出总的行值&#xff0c;总的列值。int mm…...

LearningFlow:大语言模型城市驾驶的自动化策略学习工作流程

《LearningFlow: Automated Policy Learning Workflow for Urban Driving with Large Language Models》2025年1月发表&#xff0c;来自香港科技大学广州分校的论文。 强化学习&#xff08;RL&#xff09;的最新进展表明了自动驾驶的巨大潜力。尽管有这一前景&#xff0c;但奖励…...

C语言数据类型与内存布局

C语言数据类型内存占用 类型32位系统64位系统格式说明符char1字节1字节%cint4字节4字节%dfloat4字节4字节%fdouble8字节8字节%lflong long8字节8字节%lld...

从原理到实战讲解回归算法!!!

哈喽&#xff0c;大家好&#xff0c;我是我不是小upper, 今天系统梳理了线性回归的核心知识&#xff0c;从模型的基本原理、参数估计方法&#xff0c;到模型评估指标与实际应用场景&#xff0c;帮助大家深入理解这一经典的机器学习算法&#xff0c;助力数据分析与预测工作。 …...

linux指令中的竖线(“|”)是干啥的?【含实例展示】

文章目录 一、管道符的基本概念二、管道符的核心作用三、常用实例展示四、进阶技巧五、注意事项总结 实操展示**案例1&#xff1a;统计日志中特定错误的数量****案例2&#xff1a;查找当前运行的进程****案例3&#xff1a;合并排序并去重****案例4&#xff1a;实时监控CPU占用前…...

[HOT 100] 0124. 二叉树中的最大路径和

文章目录 1. 题目链接2. 题目描述3. 题目示例4. 解题思路5. 题解代码6. 复杂度分析 1. 题目链接 124. 二叉树中的最大路径和 - 力扣&#xff08;LeetCode&#xff09; 2. 题目描述 二叉树中的 路径 被定义为一条节点序列&#xff0c;序列中每对相邻节点之间都存在一条边。同一…...

[SoC]AXI总线Performance验证方案

AXI总线Performance验证方案 测试 AXI (Advanced eXtensible Interface) 的性能是 SoC 验证中的重要任务,旨在评估其在不同负载和配置下的表现是否满足设计要求。以下详细说明如何测试 AXI 的性能、需要统计的变量、计算方法、在验证环境中动态计算性能的方法,以及如何…...

EMC PowerStore存储学习之一NVMe磁盘的命名规则

PowerStore的日志中经常会看到类似于/dev/nvme1n1的磁盘&#xff0c;在svc_diag list --show_drives中也可以看到类似这样的输出&#xff0c;如下图&#xff1a; 这里的Drives的显示都是 /dev/nvmeXnY的形式&#xff0c;那么这个磁盘命名规则怎么解读呢&#xff1f; 在Linux系…...

apt-mirror搭建ubuntu本地离线源

参考资料 4 Steps to Setup Local Repository in Ubuntu using APT-mirror 使用 APT-mirror 四步配置 Ubuntu 本地软件仓库 ubuntu下的apt-get内网本地源的搭建...

【记录】新Ubuntu20配置voxelmap的环境安装

因为系统总出问题&#xff0c;仅用于个人纪录。 1. 升级CMake到3.28及以上版本&#xff08;Sophus依赖&#xff09; wget https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-linux-x86_64.sh chmod x cmake-3.28.3-linux-x86_64.sh sudo ./cmake-3.2…...

Python全流程开发实战:基于IMAP协议安全下载个人Gmail邮箱内所有PDF附件

在日常办公场景中&#xff0c;面对成百上千封携带PDF附件的邮件&#xff0c;手动逐一下载往往耗时耗力&#xff0c;成为效率瓶颈。如何通过代码实现“一键批量下载”&#xff1f;本文将以**“Gmail全量PDF附件下载工具”**开发为例&#xff0c;完整拆解从需求分析到落地交付的P…...

CPU:AMD的线程撕裂者(Threadripper)和霄龙(EPYC)的区别

AMD的**线程撕裂者&#xff08;Threadripper&#xff09;和霄龙&#xff08;EPYC&#xff09;**虽然都是面向高性能市场的处理器&#xff0c;但它们在定位、功能和技术规格上有显著区别。以下是两者的主要差异&#xff1a; 1. 目标市场 线程撕裂者&#xff08;Threadripper&…...

【五一培训】Day 2

注&#xff1a; 1. 本次培训内容的记录将以“Topic”的方式来呈现&#xff0c;用于记录个人对知识点的理解。 2. 由于培训期间&#xff0c;作者受限于一些现实条件&#xff0c;本文的排版及图片等相关优化&#xff0c;需要过一段时间才能完成。 3. 关于老板点评的一些思考 你…...

shell_plus

python manage.py shell_plus 是由 django-extensions 提供的一个增强版的 Django shell&#xff0c;它自动导入你的所有模型和其他一些便捷功能&#xff0c;使得交互式开发更加方便。 如果你遇到配置或运行问题&#xff0c;特别是与 RQ_SHOW_ADMIN_LINK 相关的 ImproperlyCon…...

基于C++、JsonCpp、Muduo库实现的分布式RPC通信框架

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;RPC框架 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 项目介绍JsonCpp库简单介绍Muduo库简单介绍C11异步操作——std::future1. 使用 std::async 关联异步任务2. std::packaged_task…...

Redis TLS 加密对性能的影响分析

Redis TLS 加密对性能的影响分析 是的&#xff0c;Redis 启用 TLS 加密确实会对性能产生一定影响&#xff0c;但影响程度取决于多种因素。以下是详细分析&#xff1a; 一、性能影响的主要来源 加密/解密开销‌&#xff1a; TLS 握手过程中的非对称加密&#xff08;如 RSA、…...

树与二叉树完全解析:从基础到应用

目录 一、树形结构的基础认知 1.1 树的定义与特点 1.2 核心术语解析 二、二叉树的深度解析 2.1 二叉树定义 2.2 特殊二叉树类型 2.3 重要性质总结 三、二叉树的存储与遍历 3.1 存储方式对比 3.2 遍历算法精讲 四、经典题型训练 4.1 相同树判断&#xff08;LeetCode…...

PostgreSQL:pgJDBC 下载和安装

PostgreSQL 的 pgJDBC 是用于 Java 程序连接和操作 PostgreSQL 数据库的 JDBC 驱动程序。 PostgreSQL&#xff1a;pgJDBC v42.7 下载和安装 点击【Application Stack Builder】 安装目录&#xff1a; 运行 cmd cd D:\PostgreSQL\pgJDBC copy postgresql-42.7.2.jar D:\groovy-…...

正则表达式与文本三剑客grep、sed、awk

目录 一、正则表达式 1.1、字符匹配 1.2、次数匹配 1.3、位置锚定 1.4、分组或其他 二、扩展正则表达式 三、grep 四、awk 4.1、常用命令选项 4.2、工作原理 4.3、基础用法 4.4、内置变量 4.5、模式 4.6、条件判断 4.7、awk中的循环语句 4.8、数组 4.9、脚本 …...

(35)VTK C++开发示例 ---将图片映射到平面2

文章目录 1. 概述2. CMake链接VTK3. main.cpp文件4. 演示效果 更多精彩内容&#x1f449;内容导航 &#x1f448;&#x1f449;VTK开发 &#x1f448; 1. 概述 与上一个示例不同的是&#xff0c;使用vtkImageReader2Factory根据文件扩展名或内容自动创建对应的图像文件读取器&a…...

每日一题洛谷P8635 [蓝桥杯 2016 省 AB] 四平方和c++

P8635 [蓝桥杯 2016 省 AB] 四平方和 - 洛谷 (luogu.com.cn) 直接暴力枚举&#xff0c;不做任何优化的话最后会TLE一个&#xff0c;稍微优化一下就过了&#xff08;数据给的还是太良心了&#xff09; 优化&#xff1a;每层循环用if判断一下&#xff0c;如果大于n就直接跳 当然…...

【python】【UV】一篇文章学完新一代 Python 环境与包管理器使用指南

&#x1f40d; UV&#xff1a;新一代 Python 环境与包管理器使用指南 一、UV 是什么&#xff1f; UV 是由 Astral 团队开发的高性能 Python 环境管理器&#xff0c;旨在统一替代 pyenv、pip、venv、pip-tools、pipenv 等工具。 1.1 UV 的主要功能 &#x1f680; 极速包安装&…...

6.10.单源最短路径问题-Dijkstra算法

一.BFS算法的局限性&#xff1a; 如上图&#xff0c;BFS算法可以解决无权图的单源最短路径问题&#xff0c; 如果是解决带权图的单源最短路径问题&#xff0c;BFS算法就不适用了&#xff0c;如下图&#xff1a; 如上图&#xff0c;比如求G港到其他顶点的最短路径&#xff0c; …...

Python基于深度学习的网络舆情分析系统(附源码,部署)

大家好&#xff0c;我是Python徐师兄&#xff0c;一个有着7年大厂经验的程序员&#xff0c;也是一名热衷于分享干货的技术爱好者。平时我在 CSDN、掘金、华为云、阿里云和 InfoQ 等平台分享我的心得体会。 &#x1f345;文末获取源码联系&#x1f345; 2025年最全的计算机软件毕…...

mysql--索引

索引作为一种数据结构&#xff0c;其用途是用于提升检索数据的效率。 分类 普通索引&#xff08;INDEX&#xff09;&#xff1a;索引列值可重复 唯一索引&#xff08;UNIQUE&#xff09;&#xff1a;索引列值必须唯一&#xff0c;可以为NULL 主键索引&#xff08;PRIMARY KEY&a…...

【算法题】荷兰国旗问题[力扣75题颜色分类] - JAVA

一、题目 二、文字解释 1.1 前言 本题是经典的「荷兰国旗问题」&#xff0c;由计算机科学家 Edsger W. Dijkstra 首先提出。如同图中所示的荷兰国旗&#xff0c;其由红、白、蓝三色水平排列组成。在算法领域&#xff0c;该问题可类比为将一个由特定的三种元素&#xff08;可…...

【数据结构】堆的完整实现

堆的完整实现 堆的完整实现GitHub地址前言堆的核心功能实现重温堆的定义堆结构定义1. 堆初始化与销毁2. 元素交换函数3. 堆化操作向上调整&#xff08;子→父&#xff09;向下调整&#xff08;父→子&#xff09; 4. 堆元素插入5. 堆元素删除6. 辅助功能函数堆的判空获取堆顶元…...

软考 系统架构设计师系列知识点之杂项集萃(51)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;50&#xff09; 第80题 设三个煤场A1、A2、A3分别能供应煤7、12、11万吨&#xff0c;三个工厂B1、B2、B3分别需要10、10、10万吨&#xff0c;从各煤场到各工厂运煤的单价&#xff08;百元/吨&…...

patch命令在代码管理中的应用

patch 是一个用于将差异文件&#xff08;补丁&#xff09;应用到源代码的工具&#xff0c;常用于修复 bug、添加功能或调整代码结构。在您提供的代码中&#xff0c;patch 命令通过一系列补丁文件&#xff08;.patch&#xff09;修改了 open-amp 库的源代码。 patch 命令的核心作…...

Qt结构体运算符重载指南

在 Qt 中&#xff0c;结构体&#xff08;struct&#xff09;或类&#xff08;class&#xff09;中重载运算符是一种常见的做法&#xff0c;用于实现自定义类型的逻辑操作&#xff08;如比较、算术运算等&#xff09;。以下是一些常见的运算符重载示例和注意事项&#xff1a; 1.…...

基于bert预训练模型的垃圾短信分类系统

文章目录 任务介绍数据说明注意事项数据处理数据准备数据集划分数据集类构建模型构建与训练模型构建模型训练模型推理附录任务介绍 随着移动通信技术的飞速发展,短信(Short Message Service, SMS)已成为人们日常生活中不可或缺的沟通方式之一。然而,垃圾短信(Spam SMS)的…...

[Android] 网易爆米花TV 2.0.0.0429(原网易Filmly,支持多网盘的TV版、电脑版带海报墙播放器)

[Android] 网易爆米花 链接&#xff1a;https://pan.xunlei.com/s/VOPDuQS9D7qixvAnoy7-he2PA1?pwdhzvh# [Android] 网易爆米花TV 2.0.0.0429&#xff08;原网易Filmly&#xff0c;支持多网盘的TV版、电脑版带海报墙播放器&#xff09; 详细介绍直接上主页截图&#xff0c;…...

# 前后端分离象棋对战项目开发记录

1. **结构清晰**&#xff1a;使用更直观的标题、分段和列表&#xff0c;增强可读性。 2. **视觉美观**&#xff1a;添加Markdown格式化&#xff08;如代码块、加粗、斜体&#xff09;&#xff0c;并建议配色和排版风格。 3. **内容精炼**&#xff1a;精简冗余表述&#xff0c;突…...

Android Framework学习二:Activity创建及View绘制流程

文章目录 Window绘制流程Window Manager Service&#xff08;WMS&#xff09;SurfaceSurfaceFlinger 安卓View层次结构ActivityPhoneWindowActivity与PhoneWindow两者之间的关系ViewRootImplDecorViewDecorView 的作用DecorView 的结构总结 Activity创建流程View invalidate调用…...

文章五《卷积神经网络(CNN)与图像处理》

文章5&#xff1a;卷积神经网络&#xff08;CNN&#xff09;与图像处理——让AI学会"看图说话" 引言&#xff1a;你的AI宠物如何认出猫狗&#xff1f; 想象你的手机突然有了"眼睛"&#xff0c;不仅能识别照片里的猫狗&#xff0c;还能告诉你它们的品种&am…...

Ubuntu系统下Firefox浏览器完整指南:故障修复、国内版安装与下载加速

Ubuntu系统下Firefox浏览器完整指南&#xff1a;故障修复、国内版安装与下载加速 一、Firefox无法启动问题修复二、替换国际版安装国内版完整流程准备工作操作步骤验证要点 三、下载延迟问题解决方案现象分析优化配置步骤注意事项 四、进阶技巧补充五、常见问题FAQ 一、Firefox…...

【论文阅读一】掌握高效阅读法,开启学术研究新旅程:S. Keshav教授论文阅读的三遍法

文章目录 一、三遍阅读法1. 初读&#xff1a;10分钟&#xff1a;宏观把握&#xff0c;快速筛选2. 第二遍&#xff1a;1个小时&#xff1a;更仔细的阅读&#xff0c;了解文中论点3. 第三遍&#xff1a;深入理解&#xff0c;注重细节&#xff0c;挑战假设 二、运用三遍阅读法进行…...

多线程编程的常见问题

目录 1. 线程安全和可重入函数问题 2. 死锁的理解 2.1 死锁的概念 2.2 死锁的四个必要条件 3. C中STL容器的线程安全问题 4. C中智能指针的线程安全问题 1. 线程安全和可重入函数问题 线程安全&#xff1a;线程安全是指在多线程环境下&#xff0c;一个函数或者一段代码可…...

算法篇(九)【滑动窗口】

如果在分析一道算法题的时候&#xff0c;发现使用的两个 ”双指针“ &#xff0c; 都是同向的 &#xff0c; 不回退的 &#xff0c; 且一直都在维护 “一段连续的区间” &#xff0c; 此时我们可以考虑使用 “滑动窗口” &#xff01; 一、长度最小的子数组 209. 长度最小的子…...

【AI面试准备】传统测试工程师Prompt Engineering转型指南

介绍技能转型&#xff1a;传统测试工程师需掌握Prompt Engineering优化AI输出。如何快速掌握&#xff0c;以及在实际工作中如何运用。 传统测试工程师向AI时代的技能转型&#xff0c;掌握Prompt Engineering&#xff08;提示工程&#xff09;已成为提升工作效率、适应智能化测…...

数字智慧方案6186丨智慧应急指挥解决方案(43页PPT)(文末有下载方式)

资料解读&#xff1a;智慧应急指挥解决方案 详细资料请看本解读文章的最后内容。 在当今社会&#xff0c;各类突发事件频发&#xff0c;应急管理工作面临着巨大挑战。智慧应急指挥解决方案应运而生&#xff0c;旨在提升应急管理的效率和水平&#xff0c;保障人民生命财产安全。…...

d202552-sql

一、184. 部门工资最高的员工 - 力扣&#xff08;LeetCode&#xff09; 要找到每个部门工资最高的 使用窗口函数 加排序函数 排序函数用rank dense_rank都行 把最高相同的找出来就行 select *, dense_rank() over(partition by departmentId order by Salary desc) as rank …...