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

uv全功能更新:统一管理Python项目、工具、脚本和环境的终极解决方案

花下猫语:uv 项目自发布起就大受欢迎,目前 Github star 52.6 K,远超过它的同类竞品们。前不久,它的创始人在 X 上披露了一组惊人的数据:uv 曾占据了 PyPI 超过 20% 的流量,用户每天通过它发起约 4-5 亿次下载请求!

在这里插入图片描述

我在去年翻译过 uv 首发时的新闻文章,根据博客后台不完整的统计,从 Google 搜索进入的访问量已经超过 3000,妥妥成为了我博客的搜索访问 TOP 1!这侧面也反映出 uv 的火爆程度!

uv 刚过一周岁不久,如此年轻,成绩斐然啊。趁着这波热点(实际是假期有时间),我抽空把 uv 重要版本更新的文章也翻译出来了,enjoy reading~


作者:@charliermarsh

译者:豌豆花下猫@Python猫

英文:uv: Unified Python packaging (https://astral.sh/blog/uv-unified-python-packaging)

声明:本翻译是出于交流学习的目的,为便于阅读,部分内容略有改动。转载请保留作者信息。

简述: uv 是一个用 Rust 开发的超高性能 Python 包管理器。

我们最初在 2 月份发布了 uv,作为常见 pip 工作流的即插即用替代方案。(译注:uv 在 2024.02 发布,本文写于 2024.08,翻译于 2025.05)

今天,我们发布一系列新功能,这些功能将 uv 从一个 pip 替代品扩展成为一个端到端的解决方案,可用于管理 Python 项目、命令行工具、单文件脚本,甚至 Python 本身。

它就像是 Python 世界的Cargo:提供了一个快速、可靠且易用的统一接口。


在 Astral,我们致力于为 Python 生态系统打造高性能的开发工具。我们最知名的产品是 Ruff,一个超高速的 Python 代码检查器 和 格式化工具。

在 2 月份,我们发布了 uv,这是一个极快的 Python 包安装器和依赖解析器,最初设计为常见 pip 工作流的即插即用替代方案。

今天,我们宣布 uv 自首次发布以来最大规模的功能扩展:

  • 端到端项目管理:uv runuv lockuv sync。uv 现在能基于标准元数据创建跨平台的锁文件,并利用该文件来安装依赖。它是 Poetry、PDM 和 Rye 等工具的高性能替代品。
  • 工具管理:uv tool installuv tool run (别名为 uvx)。uv 能在隔离的虚拟环境中安装命令行工具,还能无需先安装就直接执行命令(如 uvx ruff check)。它是 pipx 等工具的高性能替代品。
  • Python 安装:uv python install。uv 现在可以直接帮你安装 Python,替代 pyenv 等工具。
  • 脚本执行:uv 现在可以管理基于 PEP 723 标准的单文件 Python 脚本,这些脚本内部包含依赖元数据。只需要一个简单的 uv run 命令就能执行这些独立的 Python 脚本。

…所有功能背后都是一个跨平台的超高速依赖解析器在支撑。

在这里插入图片描述

上图展示了启用所有可选依赖项时解析 Transformers 项目的速度对比:上方无缓存状态,下方启用了缓存。

并且所有功能都包含在新的、全面的文档中。

这些新功能每一项都大大扩展了 uv 的能力范围。但更独特的是,它们组合起来形成了一个完整的工具链,大大简化了 Python 开发过程。

结合 uv pip(我们将它作为一等功能,继续维护并改进),uv 适用于任何 Python 工作流,从一次性脚本到大型的多包工作区开发。

你可以通过我们的独立安装程序或从 PyPI 安装 uv:

curl

curl -LsSf https://astral.sh/uv/install.sh | sh

win

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

pip

pip install uv

pipx

pipx install uv

项目

uv 现在可以全面管理 Python 项目了。如果你用过 Poetry、PDM 或 Rye,那么 uv 的项目 API 对你来说一定不陌生。

项目 API 基于 Python 标准构建,使用 pyproject.toml 来定义项目元数据。

例如,你可以运行 uv init && uv add "fastapi>=0.112" 生成以下内容:

[project]
name = "hello-world"
version = "0.1.0"
readme = "README.md"
dependencies = ["fastapi>=0.112"]

从它开始,uv 将基于项目的依赖项创建一个锁文件。以下是一个示例片段:

[[package]]
name = "fastapi"
version = "0.112.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [{ name = "pydantic" },{ name = "starlette" },{ name = "typing-extensions" },
]
sdist = { url = "https://files.pythonhosted.org/packages/2c/09/71a961740a1121d7cc90c99036cc3fbb507bf0c69860d08d4388f842196b/fastapi-0.112.1.tar.gz", hash = "sha256:b2537146f8c23389a7faa8b03d0bd38d4986e6983874557d95eed2acc46448ef", size = 291025 }
wheels = [{ url = "https://files.pythonhosted.org/packages/39/b0/0981f9eb5884245ed6678af234f2cbcd40f44570718caddc0360bdb4015d/fastapi-0.112.1-py3-none-any.whl", hash = "sha256:bcbd45817fc2a1cd5da09af66815b84ec0d3d634eb173d1ab468ae3103e183e4", size = 93163 },
][[package]]
name = "fastapi-cli"
version = "0.0.5"
source = { registry = "https://pypi.org/simple" }
dependencies = [{ name = "typer" },{ name = "uvicorn", extra = ["standard"] },
]
sdist = { url = "https://files.pythonhosted.org/packages/c5/f8/1ad5ce32d029aeb9117e9a5a9b3e314a8477525d60c12a9b7730a3c186ec/fastapi_cli-0.0.5.tar.gz", hash = "sha256:d30e1239c6f46fcb95e606f02cdda59a1e2fa778a54b64686b3ff27f6211ff9f", size = 15571 }
wheels = [{ url = "https://files.pythonhosted.org/packages/24/ea/4b5011012ac925fe2f83b19d0e09cee9d324141ec7bf5e78bb2817f96513/fastapi_cli-0.0.5-py3-none-any.whl", hash = "sha256:e94d847524648c748a5350673546bbf9bcaeb086b33c24f2e82e021436866a46", size = 9489 },
]

uv 的锁文件就像项目依赖关系的完整快照,它能确保项目在不同机器上的运行环境保持一致。

这个锁文件最大的优势是跨平台。不管你在哪个系统上生成锁文件,它都能在其它平台上正常工作。uv 为每个平台定义了一个独特的解决方案,生成一个可读且可审计的锁文件,精确地定义了将安装哪些软件包。

例如:如果你在 macOS 上运行 uv lock,uv 仍然会为 Linux 和 Windows 生成解析方案,即使每个平台上所需的依赖集稍有不同。

而且它做得非常快。在没有任何缓存的情况下,uv 可以在大约半秒钟内解析 Jupyter 项目的依赖项(在缓存预热的情况下约为 20 毫秒)。

解析 Jupyter 项目时无缓存(上)和有缓存(下)的对比。

项目 API 的核心是 uv run 命令,它能在项目专属环境中运行命令,而且不需要手动激活虚拟环境。

uv run 非常快速。每次执行时,它都会自动重新锁定和同步项目,确保你的环境始终是最新状态。完全不需要手动干预。

换句话说,uv run 能确保你的命令每次都在一个一致的、受锁文件管理的环境中运行。

使用 uv run 命令启动 FastAPI 应用的示例。

有了 uv run,你再也不需要操心虚拟环境的激活、依赖包的管理或者项目的维护更新。一切都变得无比简单。

想了解更多详情,请查阅项目文档。

本文翻译并首发于 Python猫:uv:统一的 Python 包管理

依赖源:可编辑依赖、相对路径等

uv 基于 Python 标准构建,如 PEP 621。同时,它还添加了一些在标准中没有的功能,这些功能对本地开发至关重要,如相对路径和可编辑依赖。

在标准的 project.dependencies 部分,你可以定义项目的依赖和可发布的元数据。而在开发过程中,uv 还允许你通过 tool.uv.sources 为这些依赖项指定替代来源。

例如,要使用本地的、可编辑版本的 anyio,你可以运行 uv add --editable ../anyio 来生成以下 pyproject.toml

[project]
name = "hello-world"
version = "0.1.0"
readme = "README.md"
dependencies = ["anyio"][tool.uv.sources]
anyio = { path = "../anyio", editable = true }

当发布到 PyPI 时,上述包会声明对anyio 的依赖。但在本地开发时,使用 uv run 可以将 ../anyio 路径下的可编辑的包加到开发环境中。这样,项目的依赖定义保持不变,只是依赖的来源发生了变化。

详细内容请查阅依赖源文档。

工作区

受 Cargo 相同概念的启发,uv 支持工作区:一组管理在一起的包的集合。

想象这样一个场景:在同一个 Git 仓库中,有一个使用 FastAPI 构建的 Web 应用,还有多个作为独立 Python 包开发和维护的库。

大多数大型 Python 项目最终都会用自己的方式来实现这个概念,它们通常借助手写脚本和自定义工具来管理各个包之间的关系。

uv 的工作区 API 为大规模开发中的各种挑战提供了一致、高效且具有创新性的解决方案。

在工作区中,每个包都有自己的 pyproject.toml,但工作区共享一个锁文件,确保工作区使用一致的依赖集运行。

[project]
name = "fastapi"
version = "0.1.0"
readme = "README.md"
dependencies = ["uvicorn"][tool.uv.sources]
uvicorn = { workspace = true }[tool.uv.workspace]
members = ["libraries/*"]

在工作区的根目录下,你可以运行命令来操作任何工作区包。例如,执行 uv run --package fastapiuv run --package uvicorn

更多细节,请查阅工作区文档。

本文翻译并首发于 Python猫:(https://pythoncat.top/posts/2025-05-05-uv)

工具

uv 现在有两种新能力:

  • 通过 uv tool install 在专用的隔离虚拟环境中安装命令行工具(如 Ruff)
  • 通过 uvx 直接运行一次性命令,无需预先安装

如果你使用过 pipx 或 npx,你会发现 uv 的工具 API 很熟悉。

比如,输入 uvx posting 就能直接运行 Darren Burns 开发的 posting 终端界面程序(TUI)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用 uvx 命令在终端中运行 posting 的示例。

工具 API 让你能集中管理系统上的 Python 工具。你可以:

  • uv tool list 查看所有已安装的工具及其可执行文件
  • uv tool upgrade --all 将所有工具升级到最新版本

uv 的工具 API 非常快,通过 uvx 执行命令几乎没有任何额外开销。

更多工具功能,请查阅工具文档。

Python 引导安装

uv 现在能够安装和管理 Python 本身,使其完全自引导:

$ curl -LsSf https://astral.sh/uv/install.sh | sh
$ uv python install 3.12

如果你的机器上没有安装 Python,或者缺少特定的、所需的 Python 版本,除了显式调用 uv python 外,uv 还可以根据需要,自动下载所需的 Python 版本(如 uv runuv venv 等命令)。

例如,以下是在新的 Ubuntu Docker 镜像上运行 posting 所需的全部命令,没有任何隐藏步骤:

$ apt-get update && apt-get install -y curl
$ curl -LsSf https://astral.sh/uv/install.sh | sh
$ source $HOME/.cargo/env
$ uvx posting

当你运行 uvx 命令时,uv 会一步到位地完成所有工作:

  • 安装 Python 3.12.4(文章写作时的最新稳定版本)
  • 创建虚拟环境
  • 安装必要的依赖包
  • 启动 posting 程序

整个过程无缝衔接,高效快捷。

单文件脚本

最后:uv 现在提供了对单文件 Python 脚本的一等支持,这些脚本可以内嵌依赖元数据,完全符合 PEP-723 标准。

例如,以下文件 main.py,它从 Python 增强提案索引中获取前 10 个 PEP:

import requests
from rich.pretty import pprintresp = requests.get("https://peps.python.org/api/peps.json")
data = resp.json()
pprint([(k, v["title"]) for k, v in data.items()][:10])

这个脚本依赖requestsrich,但不包含任何显式的依赖元数据。早些时候,你需要单独管理这些依赖项,例如使用专门的 requirements.txt 文件。

现在,你可以使用 uv add 自动将依赖声明嵌入到脚本中:

$ uv add --script main.py "requests<3" "rich"
$ cat main.py
# /// script
# requires-python = ">=3.12"
# dependencies = [
#     "requests<3",
#     "rich",
# ]
# ///
import requests
from rich.pretty import pprintresp = requests.get("https://peps.python.org/api/peps.json")
data = resp.json()
pprint([(k, v["title"]) for k, v in data.items()][:10])

有了它,uv run main.py 将在一个隔离的、临时的虚拟环境中执行脚本,并安装所有依赖项。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用 uv run 执行带有内嵌依赖项的单文件脚本的示例。

你也可以使用--with 标记在运行时指定依赖项,例如:uv run --with "requests<3" --with rich main.py

有了 uv 的 Python 引导安装功能,你只需要 uv 就可以运行封闭式的、可重分发的单文件 Python 脚本,再也不用担心虚拟环境、包管理或 Python 版本的问题。

更多细节,请查阅脚本文档。

为规模化而构建

在 Astral,我们的指导原则之一是:“为所有人设计,为规模化构建(Design for everyone, build for scale)。”

我们希望打造的工具对初学者友好,但同时又能满足最大型 Python 项目的需求。

我们相信 uv 已经很好地实现了这两个目标。

如果你在组织里使用 uv,并想一起解决 Python 生态的包管理挑战,欢迎联系我们。让我们携手共创更好的工具。

附录

用 Rust 开发的 Python 包管理工具 uv,可替换 pip、pip-tools 和 virtualenv在这里插入图片描述

相关文章:

uv全功能更新:统一管理Python项目、工具、脚本和环境的终极解决方案

花下猫语&#xff1a;uv 项目自发布起就大受欢迎&#xff0c;目前 Github star 52.6 K&#xff0c;远超过它的同类竞品们。前不久&#xff0c;它的创始人在 X 上披露了一组惊人的数据&#xff1a;uv 曾占据了 PyPI 超过 20% 的流量&#xff0c;用户每天通过它发起约 4-5 亿次下…...

Redis 使用及命令操作

文章目录 一、基本命令二、redis 设置键的生存时间或过期时间三、SortSet 排序集合类型操作四、查看中文五、密码设置和查看密码的方法六、关于 Redis 的 database 相关基础七、查看内存占用 一、基本命令 # 查看版本 redis-cli --version 结果&#xff1a;redis-cli 8.0.0red…...

ROS2:自定义接口文件(无废话)

目录 一、ROS2接口文件定义二、创建接口文件步骤三、验证是否创建成功&#xff0c;以及自定义接口文件的使用 一、ROS2接口文件定义 ROS2中接口文件的格式根据通信的类型可以分为三种&#xff1a; 话题通信&#xff1a;.msg文件 常用格式为&#xff1a;[消息类型] 消息名称 #话…...

如何配置 VScode 断点调试Linux 工程代码

1、Windowns 安装WSL 环境 2、VSCode 中 安装 Romote-SSH扩展&#xff0c;进行连接到WSL下的Linux 环境 安装Romote-SSH成功后&#xff0c;在左下角显示 &#xff0c; 点击此图标 出现 “连接到WSL”, 进行连接 显示&#xff0c;则表明链接成功 3、 VSCode 安装 C/C扩展的调试…...

tinyrenderer笔记(Phong光照模型)

tinyrenderer个人代码仓库&#xff1a;tinyrenderer个人练习代码 前言 在前面的渲染中&#xff0c;我们读取模型的 diffuse 纹理&#xff0c;然后根据法线计算模型的颜色。这次我们引入一种新的光照模型—— Phong 光照模型&#xff0c;Phong 光照模型将光照分为了三类&#x…...

Twin Builder 中的电池等效电路模型仿真

电池单元热设计挑战 电池热管理的主要挑战之一是确保温度低于最大工作限值。较高的温度会导致效率降低、加速老化和潜在的安全隐患。工程师必须了解电池产生的热量&#xff0c;才能充分设计冷却系统。 了解和预测电池模块的热行为需要将电池的热损耗与电池单元的电气机械特性…...

SQLark可以支持PostgreSQL了,有哪些新功能?

SQLark&#xff08;百灵连接&#xff09;是一款国产的数据库开发和管理工具&#xff0c;用于快速查询、创建和管理不同类型的数据库系统&#xff0c;支持达梦、Oracle 和 MySQL 数据库。 最新发布的 SQLark V3.4 版本新增了对 PostgreSQL 数据库的支持。我试用了一下&#xff…...

Redis 7.0中5种新特性及实战应用

Redis 7.0引入了多项革命性的新特性&#xff0c;不仅在性能和可靠性方面有所提升&#xff0c;更在功能和使用体验上有了质的飞跃。本文将介绍Redis 7.0的五大关键新特性&#xff0c;可以根据实际情况利用Redis 7.0的强大功能&#xff0c;构建更高效、更可靠的应用系统。 特性一…...

游戏如何应对AssetStudio解包工具

「游戏解包」是指将游戏文件中被压缩或加密的资源提取出来&#xff0c;通过解包工具对资源进行修改、查看或导出。这个过程通常涉及到将游戏客户端中的数据包进行解压&#xff0c;故称为“解包”。 游戏的资源文件包含代码、图片、视频、音频等重要内容。一旦被解密&#xff0…...

UE5 渲染思路笔记(角色)

参考示例 首先是怎么做到辉光只有部分有而整体没有的 使用的是Bloom内的阈值,控制光的溢光量 Threshold&#xff08;阈值&#xff09;&#xff1a;这个参数决定了图像中哪些像素会参与泛光计算。只有那些亮度超过阈值的像素才会触发泛光效果。阈值越低&#xff0c;更多的像素会…...

Sublime Text快速搭建Lua语言运行环境

第一步 先去Sublime Text官网下载安装 Sublime Text - Text Editing, Done Right 第二步 下载lua编译运行程序 Lua - Joe DFs Builds 第三步 在Sublime Text中配置lua运行环境 {"cmd": ["D:/Lua/lua.exe", "$file"], "file_regex"…...

提示词的 嵌入空间优化

提示词的 嵌入空间优化 提示词的 嵌入空间优化的定义 提示词的嵌入空间优化,是指通过技术手段**调整提示词在低维向量空间(嵌入空间)**中的表示,使其更精准地捕捉语义信息、增强语义关联性,或适配特定任务需求,从而提升模型(如大语言模型)对提示词的理解与处理效果。…...

STM32--GPIO

教程 视频 博主教程 STM32系统结构图 GPIO GPIO&#xff08;General Purpose Input/Output&#xff09;是STM32内部的一种外设。 一个STM32芯片内存在多个GPIO外设&#xff0c;每个GPIO外设有16个引脚&#xff1b; 比如GPIOA&#xff1a;PA0~PA15; GPIOB&#xff1a;PB0~…...

npm下载插件无法更新package.json和package-lock.json文件的解决办法

经过多番查证&#xff0c;使用npm config ls查看相关配置等方式&#xff0c;最后发现全局的.npmrc文件的配置多写了globaltrue&#xff0c;去掉就好了 如果参数很多&#xff0c;不知道是哪个参数引起的&#xff0c;先只保留registryhttp://xxx/&#xff0c;试试下载&#xff0…...

ABAQUS三维CT重建插件CT2Model3D V2版本

插件介绍 CT2Model 3D V2.0插件采用Python 3.10研发&#xff0c;适配2024及以上版本的Abaqus软件&#xff0c;具备在Abaqus平台中基于CT断层扫描图像的三维重建功能&#xff0c;插件支持批量导入tif、tiff、png、jpg等格式的图像文件&#xff0c;推动了数字化建模技术与有限元…...

导入飞帆的网页为组件并注入数据驱动

飞帆制作的网页可以作为 Vue 2 组件导入到你自己的网页中使用。 这里我们来试一下。 并且将数据传入这个组件&#xff0c;驱动里面的仪表盘控件。 https://andi.cn/page/622177.html...

C语言的重要知识点☞static关键字

static译为"静态的"&#xff0c;该关键字可以修饰以下内容&#xff1a; 修饰局部变量修饰全局变量修饰函数 在讲解static的具体作用前需要先知道"作用域"以及"生命周期"的概念&#xff1a; 作用域&#xff1a; 作用域是一个程序设计概念&#…...

unordered_map和unordered_set的设计

#pragma once #include"HashTable.h" namespace aqc {template<class K,class V,class HashHashFunc<K>>class unordered_map{public:struct MapKeyOfT{const K& operator()(const pair<K, V>& kv)//pair对象是const返回值也得是const{ret…...

Servlet--快速入门及HTTP概述

Servlet概述 Servlet&#xff1a;server applet,是用Java编写的服务器端程序&#xff0c;其主要功能在于交互式的浏览和修改数据,生成动态web内容,一般来说,Servlet是指实现了这个Servlet接口的类 在Java中&#xff0c;Servlet是用于创建动态Web内容的服务器端组件。 Servle…...

【LeetCode Hot100 | 每日刷题】二叉树的层序遍历

题目&#xff1a; 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]]示例 2&a…...

编码器型与解码器型语言模型的比较

编码器型与解码器型语言模型的比较 1. 引言 自然语言处理&#xff08;NLP&#xff09;领域近年来取得了革命性进展&#xff0c;这在很大程度上归功于基于Transformer架构的语言模型。在这一技术生态中&#xff0c;编码器型&#xff08;Encoder-only&#xff09;和解码器型&am…...

Java 函数式编程

函数式编程的意义 函数式编程理念强调函数纯粹性和不可变性&#xff0c;这有助于写出更稳定、更易测试的代码&#xff0c;尤其在并发环境下减少 bug lambda 表达式 import java.util.function.Function;public class Strategize {Function<String, String> getString …...

MySQL初阶:基础增删改查(CRUD)

创建&#xff08;Create&#xff09; 先创建一个表 1&#xff09;单独插入一条 insert into 表名 values &#xff08;列名 类型&#xff09;...&#xff1b; 插入的记录要和表一开始创建记录的类型&#xff0c;个数&#xff0c;结构一样。 如果不一样&#xff0c;就会报错。…...

yolo训练用的数据集的数据结构

Football Players Detection using YOLOV11 可以在roboflow上标注 Sign in to Roboflow 训练数据集只看这个data.yaml 里面是train的image地址和classnames 每个image一一对应一个label 第一个位是分类&#xff0c;0是classnames[0]对应的物体&#xff0c;现在是cuboid &…...

vue3+ts继续学习

我们再写点东西&#xff0c;这里面都是vue2的语法&#xff0c;应该都能看明白&#xff01;我们写完直接去运行一下代码&#xff01; 发现什么都没有发生&#xff01;为什么呢&#xff1f;因为我们在App.vue中没有引入&#xff01;哈哈哈哈&#xff01;这样就好了&#xff01;注…...

Oracle01-入门

零、文章目录 Oracle01-入门 1、Oracle简介 &#xff08;1&#xff09;数据库基础 数据库基础请参考&#xff1a;https://blog.csdn.net/liyou123456789/article/details/131207068 &#xff08;2&#xff09;Oracle是什么 ORACLE 数据库系统是美国 ORACLE 公司&#xff…...

即开即用,封装 Flask 项目为 exe 文件实操步骤

见字如面&#xff0c;朋友们&#xff01; 嗨&#xff0c;这里是 AIGC 创意人_竹相左边&#xff01; 正如你们所知&#xff0c;我正在通过 AI 自学软硬件工程师&#xff0c;目标是手搓一台可回收火箭玩具&#xff01; 最近&#xff0c;我被《流浪地球 2》中马兆的那句“没有硬…...

【STM32单片机】#14 PWR电源控制

主要参考学习资料&#xff1a; B站江协科技 STM32入门教程-2023版 细致讲解 中文字幕 开发资料下载链接&#xff1a;https://pan.baidu.com/s/1h_UjuQKDX9IpP-U1Effbsw?pwddspb 单片机套装&#xff1a;STM32F103C8T6开发板单片机C6T6核心板 实验板最小系统板套件科协 目录 PWR…...

FastComposer论文问题与解决

在FastComposer中&#xff0c;跨注意力定位监督&#xff08;Cross-Attention Localization Supervision&#xff09; 的实现是通过以下步骤完成的&#xff0c;核心思想是利用分割掩码约束扩散模型中跨注意力图的分布&#xff0c;确保每个主体的特征仅影响图像中对应的区域。具体…...

51单片机同一个timer 作为定时器和波特率发生器么?

在51单片机中&#xff0c;同一个Timer&#xff08;定时器&#xff09;不能同时作为普通定时器和波特率发生器。这是因为这两种功能都需要对Timer的寄存器进行配置和操作&#xff0c;而它们的配置要求是冲突的。具体来说&#xff1a; 1. 普通定时器功能 配置要求&#xff1a;需…...

爱情的本质是什么--deepseek

爱情的本质是一个跨越生物学、心理学、哲学和社会学的复杂命题。不同学科视角下&#xff0c;爱情呈现出多层次的真相&#xff0c;但核心可以归结为&#xff1a; “爱情是进化塑造的生存策略、神经化学的短暂狂欢&#xff0c;以及人类对抗存在孤独的精神创造。” 以下从四个维…...

Leetcode 刷题记录 07 —— 链表

本系列为笔者的 Leetcode 刷题记录&#xff0c;顺序为 Hot 100 题官方顺序&#xff0c;根据标签命名&#xff0c;记录笔者总结的做题思路&#xff0c;附部分代码解释和疑问解答。 01 相交链表 /*** Definition for singly-linked list.* struct ListNode {* int val;* …...

Android View#post()源码分析

文章目录 Android View#post()源码分析概述onCreate和onResume不能获取View的宽高post可以获取View的宽高总结 Android View#post()源码分析 概述 在 Activity 中&#xff0c;在 onCreate() 和 onResume() 中是无法获取 View 的宽高&#xff0c;可以通过 View#post() 获取 Vi…...

dubbo限流

单机限流 限流过滤器 package com.doudou.filter;import org.apache.dubbo.common.URL; import org.apache.dubbo.common.constants.CommonConstants; import org.apache.dubbo.common.extension.Activate; import org.apache.dubbo.rpc.*;import java.util.concurrent.Concu…...

IBM BAW(原BPM升级版)使用教程:基本概念

本部分为“IBM BAW&#xff08;原BPM升级版&#xff09;使用教程系列”内容的补充。 一、IBM BAW中的流程概念 在IBM Business Automation Workflow&#xff08;BAW&#xff09;中&#xff0c;流程定义是流程设计的核心组成部分&#xff0c;它涵盖了流程的结构、任务、数据流…...

1. 视频基础知识

1. 图像基础概念 像素&#xff1a;像素是一个图片的基本单位&#xff0c;pix是英语单词picture&#xff0c;加上英语单词“元素element”&#xff0c;就得到了pixel&#xff0c;简称px。所以“像素”有“图像元素”之意。分辨率&#xff1a;指的是图像的大小或者尺寸。比如 19…...

docker + K3S + Jenkins + Harbor自动化部署

最近公司在研究自动化部署的一套流程&#xff0c;下面记录一下配置流程 需要提前准备好Jenkins Harbor Git(其他管理工具也可以) 我这里的打包编译流程是Jenkins上配置打包任务-->自动到git目录下找打包文件---->项目编译后打镜像包------>打完镜像包将镜像上传到…...

【算法专题十】哈希表

文章目录 0.哈希表简介1. 两数之和1.1 题目1.2 思路1.3 代码 2.判断是否为字符重排2.1 题目2.2 思路2.3 代码 3. leetcode.217.存在重复元素3.1 题目3.2 思路3.3 代码 4. leetcode.219.存在重复的元素Ⅱ4.1 题目4.2 思路4.3 代码 5. leetcode.49.字母异位词分组5.1 题目5.2 思路…...

鸿蒙系统被抹黑的深层解析:技术、商业与地缘政治的复杂博弈-优雅草卓伊凡

鸿蒙系统被抹黑的深层解析&#xff1a;技术、商业与地缘政治的复杂博弈-优雅草卓伊凡 一、技术过渡期的必然误解 1.1 兼容性设计的双刃剑效应 鸿蒙系统早期版本的兼容性策略为后续争议埋下了伏笔。2019年华为被列入实体清单后&#xff0c;面临着生死存亡的技术断供危机。在这…...

Nginx 安全防护与 HTTPS 安全部署

目录 Nginx 安全防护与 HTTPS 安全部署 一、引言 二、Nginx 安全防护措施 2.1 关闭不必要的服务和端口 2.2 限制访问频率 2.3 防止 SQL 注入和 XSS 攻击 2.4 隐藏 Nginx 版本信息 三、HTTPS 安全部署 3.1 HTTPS 简介 3.2 申请 SSL/TLS 证书 3.3 配置 Nginx 启用 HTTP…...

告别异步复杂性?JDK 21 虚拟线程让高并发编程重回简单

长期以来&#xff0c;Java 的并发编程主要围绕平台线程&#xff08;Platform Threads&#xff09;构建。然而&#xff0c;在现代应用对海量并发的巨大需求面前&#xff0c;传统模型面临着可伸缩性的挑战。JDK 21 引入了一项突破性的特性——虚拟线程&#xff08;Virtual Thread…...

Marin说PCB之POC电路layout设计仿真案例---08

Layers –stackup: RX1_96724F_FAKRA_1仿真原理图信息如下&#xff0c;设计中采用了6Gbps/187Mbps的速率配置&#xff1a; IL的limited&#xff1a; RL的limited&#xff1a; RX1_96724F_FAKRA_1--Return Loss:结果显示&#xff0c;板级设计裕量不是很充足,很接近限值曲线了。 …...

【Python系列】Python 中的 HTTP 请求处理

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

【BUG】mmdetection ValueError: need at least one array to concatenate

问题&#xff1a; 使用mmdetection框架使用COCO格式训练自定义数据集时出现如下错误&#xff1a; ValueError: need at least one array to concatenate 解决方法&#xff1a; 修改mmdet/datasets/coco.py文件&#xff0c;将CocoDataset类中的METAINFO修改为自己数据集的类别信…...

GLIBC:GLIBCXX not found

更多内容&#xff1a;XiaoJ的知识星球 目录 1. GLIBCXX not found2.解决方法&#xff1a;&#xff08;使用预编译库&#xff09;2.1 获取预编译libstdc库2.2 获取预编译libc库 注意&#xff1a;涉及到修改GLIBC库是个危险操作&#xff0c;可能会影响到系统。请谨慎操作&#xf…...

初步认识java

目录 1. java语言概述 1.1 java是什么 1.2 Java语言重要性 1.2.1 语言广泛使用程度 1.2.2 使用领域 1.3 Java语言发展简史 1.4 Java语言的特点 2. Java开发环境安装 2.1 什么是JDK 2.2 什么是JRE 2.3 什么是JVM 2.4 JDK、JRE 和 JVM的包含关系 2.5 JDK的安装和环…...

ShardingJdbc-水平分库

ShardingJdbc-水平分库 水平分库 表结构相同、记录不同、所属库不同多个库中表记录数和才是总的记录数通常根据主键ID进行分表&#xff0c;这里采用奇偶策略 案例 建立库 sharding_demo-1、sharding_demo-2每个库建立表 user_1、user_2 表结构相同id 为主键&#xff0c;big…...

模板模式 VS 建造者模式

模板模式和建造者模式是两种不同的设计模式&#xff0c;下面从定义、结构、应用场景等方面介绍它们的区别&#xff0c;并给出 Python 示例代码。 定义 模板模式&#xff1a;定义了一个操作中的算法骨架&#xff0c;将一些步骤的实现延迟到子类中。这样&#xff0c;子类可以在…...

模态编码器

1.CLIP的textEncoder能输入多少个单词? CLIP 模型中的 context_length 设置为 77&#xff0c;表示每个输入句子会被 tokenized 成最多 77 个token。这个 77 并不是直接对应到 77 个单词&#xff0c; 因为一个单词可能会被拆分成多个 token&#xff0c;特别是对于较长的或不常…...

Python-map从基础到进阶

无论你是打打算法比赛还是做项目map函数肯定都是你必学内置函数&#xff0c;这篇文章小白也能轻松掌握map函数&#xff0c;学习map&#xff0c;理解map&#xff0c;进阶用法map 描述 map() 函数会根据提供的函数对指定序列做映射。 第一个参数 function 以参数序列中的每一个…...