uv run 都做了什么?
-
uv run
都做了什么?uv run <命令> [参数...]
的主要作用是:在一个由uv
管理或发现的 Python 虚拟环境中,执行你指定的<命令>
。- 它会临时配置一个子进程的环境,使其表现得如同该虚拟环境已经被激活一样。这意味着:
- 如果你运行的命令是
python
或依赖于python
,它会使用虚拟环境中的 Python 解释器。 - 任何安装在虚拟环境
Scripts
(Windows) 或bin
(Linux/macOS) 目录下的可执行脚本(比如pytest
,flask
,black
等)都可以直接通过名字调用。 - 被执行的 Python 代码可以访问到安装在该虚拟环境中的所有包。
- 如果你运行的命令是
- 这样做的好处是,你无需先手动激活 (
source .venv/bin/activate
或.venv\Scripts\activate.bat
) 虚拟环境,就能运行与该环境相关的命令。这在自动化脚本(如 CI/CD)或执行单个项目特定的命令时非常方便。
-
本质是什么?
uv run
的本质是为单个命令提供临时的、隔离的 Python 环境上下文注入。它模拟了环境激活的效果,但仅限于它所启动的那个子进程,并且不会改变你当前 Shell 的永久状态。
-
这个
uv
是哪个uv
?是exe
吗?- 是的。这里的
uv
指的是由 Astral 公司开发的那个uv
可执行程序(在 Windows 上通常是uv.exe
,在 Linux/macOS 上是uv
)。 run
是这个uv
程序的一个子命令,就像uv pip install
或uv venv
一样。
- 是的。这里的
-
这个
uv
可以使用绝对路径吗?- 可以。和绝大多数命令行程序一样,你可以通过提供完整的绝对路径来调用
uv
可执行文件,例如:- Windows:
C:\path\to\your\uv.exe run python --version
- Linux/macOS:
/path/to/your/uv run python --version
- Windows:
- 如果
uv
所在的目录没有被添加到系统的PATH
环境变量中,你就必须使用绝对路径或相对路径来运行它。
- 可以。和绝大多数命令行程序一样,你可以通过提供完整的绝对路径来调用
-
uv run
本质还是用 Python 执行吗?- 不完全是,要区分开来看:
uv run
命令本身:uv run
这个命令的执行逻辑(解析参数、发现环境、设置子进程环境、启动子进程)是由uv
可执行文件处理的,而uv
是用 Rust 语言编写的。所以,uv run
的准备和启动阶段不是用 Python 执行的。- 被
uv run
运行的<命令>
:uv run
后面你指定的那个<命令>
通常会涉及 Python。例如:uv run python myscript.py
:uv
(Rust) 启动了环境中的python
解释器 (C 或其他语言实现) 来执行myscript.py
(Python 代码)。uv run pytest
:uv
(Rust) 启动了环境中的pytest
命令(通常是一个 Python 脚本的入口点)。uv run echo "Hello"
:uv
(Rust) 启动了 Shell 的echo
命令(通常是内置或系统命令,不是 Python)。
- 总结:
uv run
本身是 Rust 程序的一部分,但它使你能够方便地在正确的 Python 环境下运行通常需要 Python 或其相关工具的命令。
- 不完全是,要区分开来看:
-
uv run
可以指定使用哪个环境的 Python 吗?- 通常是间接指定的,通过环境发现机制。
uv run
需要知道在哪个环境中运行命令。它确定环境的方式通常是:- 自动发现:
uv
会检查当前工作目录及父目录,寻找虚拟环境的标记。最常见的是查找名为.venv
的目录(这是uv venv
默认创建的环境名,也是 PEP 推荐的名称)。它也可能检查pyproject.toml
文件来确定项目根目录,并在那里寻找虚拟环境。 - 激活的环境: 如果当前 Shell 中已经有一个虚拟环境被激活,
uv
通常会优先使用这个已激活的环境。
- 自动发现:
- 直接指定 (不太常见/可能需查阅文档):
uv
的设计倾向于自动发现。虽然某些工具允许使用--prefix
或类似参数直接指定环境路径,但这似乎不是uv run
当前(截至 2024 年初/中期)主要的或推荐的使用方式。它的设计理念更偏向于在项目内自动找到对应的.venv
。 - 结论: 你通常不直接给
uv run
传递一个 Python 解释器的路径。而是确保你的命令行位于项目目录下(或者项目内某个子目录),并且项目根目录下有一个uv
能识别的虚拟环境(比如.venv
),uv run
会自动找到并使用该环境中的 Python。如果uv
无法找到合适的环境,命令可能会失败。
- 通常是间接指定的,通过环境发现机制。
第一:详细步骤讲解 uv run python myscript.py
- 输入命令: 你在命令行终端输入
uv run python myscript.py
并按下回车。 - Shell 调用
uv
: 你的命令行 Shell(如 Bash, Zsh, CMD, PowerShell)根据系统的PATH
环境变量找到uv
这个可执行程序(或者你直接使用了绝对路径C:\path\to\uv.exe
)。Shell 启动uv
程序。 uv
解析参数:uv
程序(用 Rust 编写)开始执行。它首先解析你给它的命令行参数:run
,python
,myscript.py
。它识别出run
是它需要执行的一个子命令。- 环境发现 (关键步骤):
uv
的run
子命令逻辑开始工作。它的首要任务是确定要在哪个 Python 虚拟环境中运行后续命令 (python myscript.py
)。它会按一定策略查找:- 检查激活环境: 它可能会检查当前 Shell 是否已经激活了某个虚拟环境(通过检查
VIRTUAL_ENV
环境变量)。 - 查找
.venv
: 它会从当前工作目录开始,向上查找名为.venv
的文件夹(这是uv venv
默认创建的环境名,也是常用的约定)。 - 查找
pyproject.toml
: 它可能查找pyproject.toml
文件来确定项目根目录,然后在项目根目录下寻找.venv
。 - 我们假设
uv
成功找到了一个虚拟环境,比如在当前目录下的.venv
文件夹。
- 检查激活环境: 它可能会检查当前 Shell 是否已经激活了某个虚拟环境(通过检查
- 获取环境路径:
uv
确定了目标虚拟环境的路径(例如./.venv
)。 - 准备子进程环境:
uv
现在准备启动一个新的子进程来执行python myscript.py
。在启动前,它会为这个子进程准备一套临时的环境变量,这些变量是对当前 Shell 环境变量的修改:- 修改
PATH
: 它会将找到的虚拟环境的脚本目录(如./.venv/Scripts
on Windows 或./.venv/bin
on Linux/macOS)添加到PATH
环境变量的最前面。 - 设置
VIRTUAL_ENV
: 它会设置VIRTUAL_ENV
环境变量,指向虚拟环境的根目录路径(如./.venv
)。 - 其他相关变量也可能被设置。
- 修改
- 启动子进程:
uv
使用准备好的、包含修改后环境变量的配置,启动一个新的操作系统进程,让这个进程执行命令python myscript.py
。 - 子进程执行
python
: 在这个新启动的子进程中,操作系统根据其(被uv
修改过的)PATH
变量查找python
可执行文件。由于虚拟环境的脚本目录被放在了PATH
的最前面,操作系统会找到并执行位于./.venv/Scripts/python.exe
(或./.venv/bin/python
) 的那个 Python 解释器。 - Python 解释器执行脚本: 虚拟环境中的 Python 解释器启动后,接收到参数
myscript.py
。它开始读取并执行myscript.py
这个 Python 脚本文件。 - 脚本访问包: 在
myscript.py
内部,如果有import some_package
这样的语句,Python 解释器会查找其自身的site-packages
目录(位于./.venv/lib/pythonX.Y/site-packages
)。由于uv run
确保了使用的是虚拟环境的解释器,因此脚本可以成功导入所有已安装到这个.venv
环境中的包。 - 脚本执行完毕:
myscript.py
执行完成。 - 子进程退出: Python 解释器退出,步骤 7 中启动的那个子进程随之终止。
uv
进程退出:uv
主进程(步骤 3 启动的)完成了run
命令的任务,也退出。- 返回 Shell: 控制权交还给你的命令行 Shell。重要的是,你原始 Shell 的环境变量(如
PATH
)没有被改变,uv run
的效果仅限于它启动的那个子进程。
第二:uv run
是新建了一个环境吗?还是调用了环境?调用的是已有的 Python 环境吗?
uv run
调用(或 使用)一个已有的 Python 环境。- 它不会为执行
run
命令而动态地创建一个全新的环境。 - 它的核心功能之一就是发现与当前项目或目录相关联的那个已经存在的虚拟环境。这个环境通常是你之前通过
uv venv .venv
或python -m venv .venv
等命令创建好的。
第三:这个 Python 部分可以使用指定的 Python 吗?
- 你不能直接通过参数告诉
uv run
使用任意路径的 Python 解释器。 uv run
使用哪个 Python 解释器,取决于它发现了哪个虚拟环境。它会使用那个被发现的虚拟环境内部自带的 Python 解释器。- 所以,如果你想让
uv run
使用特定版本的 Python(比如 Python 3.10),你需要确保它发现的那个虚拟环境是用 Python 3.10 创建的。例如,你在创建环境时就这样做:uv venv .venv --python 3.10
(如果uv
支持这种指定) 或者python3.10 -m venv .venv
。 - 控制方式是间接的:控制
uv run
找到哪个环境,从而决定了它使用哪个 Python。
第四:怎么知道是哪个包?uv
本身存包了吗?
uv run
如何知道包?uv run
本身不直接“知道”包。它只负责启动正确的 Python 解释器(属于被发现的虚拟环境的那个)。- 是那个 Python 解释器知道去哪里查找包。Python 解释器在启动时,会自动知道其对应的
site-packages
目录的位置(例如.venv/lib/pythonX.Y/site-packages
)。 - 当你的
myscript.py
执行import some_package
时,是 Python 解释器在自己的site-packages
目录里查找some_package
。 - 所以,
uv run
确保了你的脚本由正确的解释器运行,而这个解释器负责在其自己的地盘 (site-packages
) 里找包。包必须是预先通过uv pip install
或pip install
安装到这个环境里的。
uv
本身存包了吗?uv
维护一个全局的包缓存(通常在你的用户主目录下的某个隐藏文件夹里,比如~/.cache/uv
)。当你使用uv pip install
安装包时,uv
会先把包(通常是.whl
文件)下载到这个全局缓存中。然后,它会从缓存中将包解压并安装到你指定的或当前活动的虚拟环境的site-packages
目录里。- 这个缓存是为了加速后续安装。如果下次你在另一个项目需要安装同一个包的同一个版本,
uv
可以直接从缓存中获取,而无需重新下载。 - 但是,
uv run
命令本身在执行时,并不直接依赖或操作这个全局缓存。它依赖的是目标虚拟环境site-packages
目录中实际安装好的包。缓存是uv pip install
等安装命令使用的。
第五:uv run
的 py 文件和直接使用 python
运行的有什么区别?
这是关键的区别,主要在于执行上下文(哪个 Python 解释器和哪些可用的包)的确定性:
-
python myscript.py
(直接运行)- 依赖当前 Shell 状态:它使用的是 Shell 当前
PATH
环境变量中找到的第一个python
可执行文件。 - 如果环境已激活: 假设你先手动运行了
source .venv/bin/activate
,那么PATH
会指向.venv
里的python
,这时python myscript.py
会使用虚拟环境的解释器和包,效果与uv run python myscript.py
相同。 - 如果环境未激活:
PATH
会指向系统的全局 Python (或其他非项目环境的 Python)。脚本会用这个全局 Python 执行,并且只能访问全局安装的包。如果myscript.py
依赖于只安装在.venv
中的包,它会因为ModuleNotFoundError
而失败。 - 易出错: 这种方式依赖于你是否记得激活了正确的环境,容易出错。
- 依赖当前 Shell 状态:它使用的是 Shell 当前
-
uv run python myscript.py
- 不依赖当前 Shell 激活状态: 它会主动去发现项目关联的虚拟环境(通常是
.venv
)。 - 保证使用环境内的 Python: 它确保启动的
python
是被发现的虚拟环境内部的那个解释器。 - 保证访问环境内的包: 因此,脚本运行时总能访问到安装在那个特定虚拟环境中的所有包。
- 更可靠: 这种方式更可靠,因为它不依赖于你当前 Shell 是否激活了环境,直接将命令绑定到目标环境上执行。特别适用于自动化脚本和避免忘记激活环境的场景。
- 不依赖当前 Shell 激活状态: 它会主动去发现项目关联的虚拟环境(通常是
总结来说: uv run
提供了一种无需手动激活环境就能可靠地在指定项目虚拟环境上下文中运行命令(包括执行 Python 脚本)的方法。而直接运行 python
则完全依赖于当前 Shell 的环境状态。
相关文章:
uv run 都做了什么?
uv run 都做了什么? uv run <命令> [参数...] 的主要作用是:在一个由 uv 管理或发现的 Python 虚拟环境中,执行你指定的 <命令>。它会临时配置一个子进程的环境,使其表现得如同该虚拟环境已经被激活一样。这意味着&am…...
Maven 依赖坐标与BOM统一管理
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
UV: Python包和项目管理器(从入门到不放弃教程)
目录 UV: Python包和项目管理器(从入门到不放弃教程)1. 为什么用uv,而不是conda或者pip2. 安装uv(Windows)2.1 powershell下载2.2 winget下载2.3 直接下载安装包 3. uv教程3.1 创建虚拟环境 (uv venv) 4. uvx5. 此pip非…...
32单片机——GPIO的工作模式
1、GPIO GPIO(General Purpose Input Output,通用输入输出端口)是控制或者采集外部器件的信息的外设,即负责输入输出。它按组分配,每组16个IO口,组数视芯片而定。STM32F103ZET6芯片是144脚的芯片࿰…...
Science Robotics 新型层级化架构实现250个机器人智能组队,“单点故障”系统仍可稳定运行
近期,比利时布鲁塞尔自由大学博士生朱炜煦与所在团队提出了一种创新的机器人群体架构——“自组织神经系统”(SoNS,Self-organizing Nervous System)。 它通过模仿自然界中的生物神经系统的组织原理,为机器人群体建立了…...
【HFP】蓝牙HFP协议来电处理机制解析
目录 一、协议概述与技术背景 1.1 HFP协议演进 1.2 核心角色定义 1.3 关键技术指标 二、来电接入的核心交互流程 2.1 基础流程概述:AG 的 RING 通知机制 2.2 HF 的响应:本地提醒与信令交互 三、带内铃声(In-Band Ring Tone࿰…...
03-谷粒商城笔记
一个插件的install和生命周期的报错是不一样的 Maven找不到ojdbc6和sqljdbc4依赖包 这时候我找到了jar包,然后我就先找到一个jar安装到了本地仓库。 在终端上进行命令了: mvn install:install-file -DfileD:\ojdbc6-11.2.0.4.jar -DgroupIdcom.oracle …...
PHP 反序列化CLI 框架类PHPGGC 生成器TPYiiLaravel 等利用
# 反序列化链项目 -PHPGGC&NotSoSecure -NotSoSecure https://github.com/NotSoSecure/SerializedPayloadGenerator 为了利用反序列化漏洞,需要设置不同的工具,如 YSoSerial(Java) 、 YSoSerial.NET 、 PHPGGC 和它的先决条件。 Deserializati…...
LeetCode热题100——283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: nums [0] 输出:…...
C++入门小馆: 探寻vector类
嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的pa…...
力扣hot100_链表(3)_python版本
一、25. K 个一组翻转链表 1.1、206. 反转链表 py代码 class ListNode:def __init__(self, val0, next node):self.val valself.next next class Solution:def reverseList(self, head):pre Nonecur headwhile cur:next cur.nextcur.next prepre curcur nextreturn p…...
Lua 第9部分 闭包
在 Lua 语言中,函数是严格遵循词法定界的第一类值。 “第一类值”意味着 Lua 语言中的函数与其他常见类型的值(例如数值和字符串)具有同等权限: 一个程序可以将某个函数保存到变量中(全局变量和局部变量均可&a…...
【Linux】冯诺依曼体系结构及操作系统架构图的具体剖析
目录 一、冯诺依曼体系结构 1、结构图 2、结构图介绍: 3、冯诺依曼体系的数据流动介绍 4、为什么在该体系结构中要存在内存? 二、操作系统架构图介绍 1、操作系统架构图 2、解析操作系统架构图 3、为什么要有操作系统? 前些天发现了一…...
解析虚拟机与Docker容器化服务的本质差异及Docker核心价值
解析虚拟机与Docker容器化服务的本质差异及Docker核心价值 1.1 硬件虚拟化与操作系统级虚拟化 虚拟机(VM)基于硬件级虚拟化技术(Hypervisor),通过模拟完整硬件栈(CPU、内存、存储、网络)创建独…...
FreeRTOS深度解析:队列集(Queue Sets)的原理与应用
FreeRTOS深度解析:队列集(Queue Sets)的原理与应用 什么是队列集? 在FreeRTOS中,队列集(Queue Sets,英文名xQueueSet)是一种强大的数据结构,用于高效管理多个队列。它的…...
java将pdf转换成word
1、jar包准备 在项目中新增lib目录,并将如下两个文件放入lib目录下 aspose-words-15.8.0-jdk16.jar aspose-pdf-22.9.jar 2、pom.xml配置 <dependency><groupId>com.aspose</groupId><artifactId>aspose-pdf</artifactId><versi…...
网络原理 - 6
目录 4. 滑动窗口 滑动窗口出现丢包 情况一:数据报已经抵达,ACK 被丢了编辑 情况二:数据报直接就丢了 5. 流量控制 完! 4. 滑动窗口 这个滑动窗口是 TCP 中非常有特点的机制。 我们知道,TCP 是通过确认应答&…...
【Linux网络】构建类似XShell功能的TCP服务器
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
Spring AI - Redis缓存对话
先看效果 对话过程被缓存到了Redis 中。 原理 在上一节我们快速入门了SpringAI,具体文章请查看:快速入门Spring AI 创建 ChatClient 的代码如下: this.chatClient ChatClient.builder(chatModel).defaultSystem(DEFAULT_PROMPT).defaultAd…...
rk3588 驱动开发(二)第四章嵌入式 Linux LED 驱动开发实验
4.1 Linux 下 LED 灯驱动原理 Linux 下的任何外设驱动,最终都是要配置相应的硬件寄存器。所以本章的 LED 灯驱动 最终也是对 RK3588 的 IO 口进行配置,与裸机实验不同的是,在 Linux 下编写驱动要符合 Linux 的驱动框架。开发板上的 LED 连接…...
第49讲:AI驱动的农业碳汇估算与生态价值评估 —— 打造更“绿”的智慧农业未来
目录 🌍 一、农业碳汇:我们为什么要关心它? 🤖 二、AI是如何介入农业碳汇评估的? 🛠 三、案例实战:AI估算区域农田碳汇储量 📍 场景设定: 📊 数据来源: 🔁 处理流程: 📈 四、生态价值评估:从碳储量到生态效益 🧭 五、平台与工具推荐 💬 六、…...
springmvc入门案例
目录 前言 springmvc概述 springmvc入门案例(使用配置类替代原本的web.xml) 第一步、创建一个web工程 第二步、引入相应的依赖(servlet-api、spring-webmvc、) 第三步、编写 SpringMVC配置类,并开启包扫描功能 第四步、编写…...
Node.js学习
概述 Node.js 是一个基于 Chrome V8 引擎 的 JavaScript 运行时环境,允许在服务器端运行 JavaScript 代码。它采用事件驱动和非阻塞 I/O 模型,适合构建高性能、可扩展的网络应用,尤其擅长处理实时应用和大规模数据密集型场景 背景 JavaScri…...
SQL注入漏洞中会使用到的函数
目录 一、信息获取函数 1. 通用函数 2. 元数据查询(INFORMATION_SCHEMA) 二、字符串操作函数 1. 字符串连接 2. 字符串截取 3. 编码/解码 三、报错注入专用函数 1. MySQL 2. SQL Server 3. PostgreSQL 四、时间盲注函数 1. 通用延迟 2. 计…...
MIT IDSS深度解析:跨学科融合与系统科学实践
麻省理工学院的IDSS(Institute for Data, Systems, and Society, IDSS)是一个致力于通过先进分析方法推动教育与研究的前沿机构。它将工程学、信息科学和数据科学的方法与社会科学的分析方法相结合,以应对复杂的社会挑战。 MIT IDSS 建立在统计学、计算机科学和特定应用领域…...
重塑智慧出行新生态,德赛西威全新战略愿景发布
4月22日,上海车展开幕前夕,德赛西威以“智新境,向远大”为主题,正式对外发布全新发展战略及使命、愿景;同时,代表未来AI出行趋势的智慧出行解决方案Smart Solution 3.0重磅亮相。 一、把握变革节点 创领产…...
全面解析 classification_report:评估分类模型性能的利器
解读 classification_report 的使用:评估分类模型性能的关键工具 在机器学习中,分类任务是最常见的应用场景之一。无论是垃圾邮件过滤、图像识别还是情感分析,分类模型的性能评估都是至关重要的一步。而 classification_report 是 Scikit-le…...
Qt案例 使用QFtpServerLib开源库实现Qt软件搭建FTP服务器,使用QFTP模块访问FTP服务器
本以为搭建和访问FTP服务器的功能已经是被淘汰的技术了,只会在学习新技术的时候才会了解学习学习,WinFrom版本,和windows Api版本访问FTP服务器的功能示例也都写过。没想到这次会在项目中再次遇到, 这里记录下使用Qt开源库QFtpSer…...
图像后处理记录
图像后处理记录 ocr后处理记录 opencv裁剪 编译命令 cmake -S . -B build-x64 -DBUILD_LIST"core,imgproc,imgcodecs,highgui" -DBUILD_SHARED_LIBSOFF -DBUILD_opencv_appsOFF -DBUILD_opencv_jsOFF -DBUILD_ANDROID_PROJECTSOFF -DBUILD_ANDROID_EXAMPLESOFF -…...
解决element中的el-anchor链接被作为路由跳转导致页面404
解决element中的el-anchor链接被作为路由跳转导致页面404 问题: 在使用elementPlus时,el-anchor-link中的href被识别为路由进行跳转,导致不能正常跳转到锚点,且页面显示404。 解决:自定义方法解决 <!--添加hand…...
Mapreduce中maven打包
MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序(例如:jar包),并发运行在…...
C++初阶——string的使用(下)
C初阶——string的使用(下) 一、string类对象的容量操作 对于string的容量操作,我们可以通过顺序表来理解,顺序表是通过动态数组来实现的,在数据结构专栏的第一篇就是顺序表的详细讲解,链接如下ÿ…...
AIGC vs 人类创作者:是竞争还是协作?
AIGC vs 人类创作者:是竞争还是协作? 随着人工智能技术的飞速发展,特别是生成式AI(AIGC, AI-Generated Content)的崛起,越来越多的领域开始出现AI的身影。从文本创作、图像生成到音乐制作,AIGC…...
Stable Baselines3 结合 gym 训练 CartPole 倒立摆
视频讲解: Stable Baselines3 结合 gym 训练 CartPole 倒立摆 今天介绍下stable_baselines3和gym,可以方便实现DL的实现,应用在机械臂catch、reach等场景 测试代码仓库:https://github.com/LitchiCheng/DRL-learning.git https:…...
ctfshow web8
前言 学习内容:简单的盲注脚本的书写 web8 这个题目题目手动注入很麻烦 主要是他过滤了 union 空格和 过滤了union的解决方法 1、使用盲注(报错注入和盲注) 2、使用时间盲注 3、堆叠注入 盲注脚本的书写 首先他是有注入点的 然后熟悉requests包的使用 …...
Linux程序地址空间
目录 研究背景 程序地址空间回顾 来段代码感受一下 进程地址空间 Linux2.6内核进程调度队列 一个CPU拥有一个runqueue 优先级 活跃队列(只出不进) 过期队列(只进不出) active指针和expired指针 总结 研究背景 Linux内核版本&#…...
破茧成蝶:阿里云应用服务器让传统 J2EE 应用无缝升级 AI 原生时代
丝滑升级拥抱大模型:详解AI时代的应用智能化升级路径 破茧成蝶:阿里云应用服务器让传统 J2EE 应用无缝升级AI原生时代 ——十年代码无需重写,三步开启智能化跃迁 作者:孤弋、孚阳 序幕:一场跨越 20 年的技术对话 在杭…...
游戏引擎学习第240天:将渲染器移至第三层
这节又枯燥又无聊简直了 回顾并为今天的内容做铺垫 昨天我们说到,想对渲染器和平台层的集成方式做一些修改。我们之前简单讲了一下修改的目的:我们希望游戏本身不再直接调用 OpenGL 的渲染代码,而是只生成一组渲染指令缓冲区,然…...
2025.04.23华为机考第三题-300分
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 时空旅行者的最优路径 问题描述 A先生是一名时空旅行者,他可以在不同的时空点之间穿梭。每次从一个时空点跳跃到另一个时空点需要消耗一个时间单位。在每个时空点,都有一些特…...
Kafka 保证多分区的全局顺序性的设计方案和具体实现
Kafka 本身无法直接保证多分区的全局顺序性,因为分区设计旨在并行处理以提升吞吐量。 要实现多分区的顺序性,可尝试通过以下方法在系统层面或业务逻辑上解决: 一、方案设计 单一分区路由(还是将消息发送到同一分区)&a…...
数据结构初阶:二叉树(四)
概述:本篇博客主要介绍链式结构二叉树的实现。 目录 1.实现链式结构二叉树 1.1 二叉树的头文件(tree.h) 1.2 创建二叉树 1.3 前中后序遍历 1.3.1 遍历规则 1.3.1.1 前序遍历代码实现 1.3.1.2 中序遍历代码实现 1.3.1.3 后序遍历代…...
华为开发岗暑期实习笔试(2025年4月16日)
刷题小记: 第一题怀疑测试样例不完整,贪心法不应该能够解决该题。第二题使用0-1BFS解决单源最短路径的问题,往往搭配双端队列实现。第三题是运用动态规划解决最大不重叠子区间个数的问题,难点在于满足3重判断规则,所需…...
第一篇:Django简介
第一篇:Django简介 文章目录 第一篇:Django简介一、纯手写一个简易版的web框架1、软件开发架构2、HTTP协议3、简易的socket服务端4、wsgiref模块5、动静态网页6、后端获取当前时间展示到html页面上7、字典数据传给html文件8、数据从数据库中获取的展示到…...
2025年渗透测试面试题总结-拷打题库13(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 2025年渗透测试面试题总结-拷打题库13 一、GitHub等三方敏感信息泄漏防御 二、业务逻辑漏洞技术规避 …...
(09)Vue脚手架的使用(Vite、vue-cli、create-vue)
本系列教程目录:Vue3Element Plus全套学习笔记-目录大纲 文章目录 第3章 Vue脚手架3.1 vite3.3.1 Vite使用1)创建Vite项目2)Vite项目打包 3.1.2 组件化开发3.1.4 Vite工程运行原理1)分析main.js2)自定义根组件 3.2 vue…...
Unity 将Excel表格中的数据导入到Mysql数据表中
1.Mysql数据表users如下: 2.即将导入的Excel表格如下: 3.代码如下: using System; using System.Data; using System.IO; using Excel; using MySql.Data.MySqlClient; using UnityEngine; using UnityEditor;public class ImportExcel {// …...
【QT】信号与槽中多个按钮(pushbutton)共用一个槽函数的两种实现方式
两种方法的对比 方法1:sender() 优点:代码简洁,无需额外参数 缺点:依赖运行时类型转换,安全性较低 适用场景:简单场景,少量按钮 方法2:Lambda (推荐) 优点:安全直观&…...
Python----深度学习(神经网络的过拟合解决方案)
一、正则化 1.1、正则化 正则化是一种用于控制模型复杂度的技术。它通过在损失函数中添加额外的项(正则 化项)来降低模型的复杂度,以防止过拟合。 在机器学习中,模型的目标是在训练数据上获得较好的拟合效果。然而,过…...
【金仓数据库征文】从 HTAP 到 AI 加速,KingbaseES 的未来之路
国产数据库早已实现 “可替代”,但要真正与国际头部厂商掰手腕,必须在 HTAP(Hybrid‑Transaction/Analytical Processing)与 AI 加速 两条技术赛道上实现跨越。KingbaseES 自 V8R3 调整为多进程架构后,历经 V8R6、KSOn…...
创建第一个Spring Boot项目
什么是Spring Boot 随着Spring的快速发展,项目中的XML文件越来越多,繁琐的配置以及,整合第三方框架的配置问题,导致大大增加了开发和部署的效率,使开发者无法专心于业务的开发。Spring Boot就相当于使Spring框架的脚手…...