新一代Python管理UV完全使用指南|附实际体验与效果对比
简介
uv是新一代的Python项目管理工具,具备开发一个完整项目的所有功能点:
功能点 | 描述 |
---|---|
包管理 | 完全替代pip的功能,支持包的安装、升级、卸载等操作 |
虚拟环境管理 | 内置虚拟环境创建和管理,无需额外安装virtualenv或venv |
依赖解析与锁定 | 提供智能依赖解析算法并生成锁定文件(uv.lock ) |
Python版本管理 | 能够自动安装和管理不同版本的Python解释器 |
项目初始化 | 通过uv init 快速创建新项目并生成标准结构 |
脚本运行 | 支持在虚拟环境中直接运行脚本而无需手动激活环境 |
包发布 | 内置支持将项目打包并发布到PyPI等仓库 |
安装
# On Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh# On macOS
brew install uv# On Windows.
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"# With pip.
pip install uv
用法
1. 命令简介
uv包含以下命令,前几个是比较常用的。
命令 | 描述 |
---|---|
run | 运行命令或脚本 |
init | 创建一个新项目 |
add | 向项目中添加依赖项 |
remove | 从项目中移除依赖项 |
sync | 更新项目的环境 |
lock | 更新项目的锁定文件 |
export | 将项目的锁定文件导出为其他格式 |
tree | 显示项目的依赖树 |
tool | 运行和安装由 Python 包提供的命令 |
python | 管理 Python 版本和安装 |
pip | 使用兼容 pip 的接口管理 Python 包 |
venv | 创建虚拟环境 |
build | 将 Python 包构建为源代码分发包和 wheels |
publish | 将分发包上传到索引 |
cache | 管理 uv 的缓存 |
self | 管理 uv 可执行文件 |
version | 显示 uv 的版本 |
generate-shell-completion | 生成 shell 自动补全脚本 |
help | 显示某个命令的文档 |
2. 文件结构
首先执行以下命令初始化一个项目:
uv init test-uv
项目结构:
test-uv├─ .git├─.gitignore├─.python-version├─README.md├─main.py├─pyproject.toml
可以看到项目中除了Python相关的脚本外,还生成了git
,用于版本管理。
# pyproject.toml
[project]
name = "test-uv"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.9"
dependencies = []
pyproject.toml
是项目配置信息,类似于JS中的package.json
。
# python-version
3.10
.python-version
记录了当前项目使用的Python环境版本,可以自行编辑修改。
3. 运行脚本
uv中执行脚本的启动命令为:
# 与JS中`npm run dev`类似
uv run xxx
uv run
的执行逻辑为:
- 检查当前目录中是否存在
.venv
目录,若不存在则创建新环境 - 验证环境是否包含脚本所需依赖,如果缺失依赖则自动安装
- 在当前的虚拟环境中执行命令,不会与其他环境产生冲突
以下是uv启动命令与常规Python启动命令的对比:
执行命令 | 环境处理 |
---|---|
uv run xxx | 自动关联虚拟环境: - 优先使用当前目录下的 .venv - 若不存在会自动创建 - 无需手动激活/停用 |
python xxx.py | 依赖当前Shell环境: - 需手动激活虚拟环境 |
4. 管理依赖
4.1 add
用于安装包并自动更新项目配置文件(pyproject.toml
)和锁定文件(uv.lock
)
# 安装最新版包
uv add requests# 安装指定版本
uv add "flask>=2.0.0"uv add git+https://github.com/psf/requests.git
uv add 可以理解为 uv pip install的增强版,底层同样是利用了pip进行安装,但是uv add额外增加了更新项目配置文件的功能
4.2 remove
用于卸载包并更新项目配置
# 同步所有依赖(包括dev)
uv sync# 仅同步生产依赖
uv sync --production# 同步并清理多余包
uv sync --clean
4.3 sync
根据锁定文件精确还原依赖环境
# 同步所有依赖(包括dev)
uv sync# 仅同步生产依赖
uv sync --production# 同步并清理多余包
uv sync --clean
4.4 lock
创建/更新 uv.lock
文件,用于跨平台精确版本记录
# 生成新锁定文件
uv lock# 检查更新但不写入(dry-run)
uv lock --check# 强制重新解析
uv lock --update
4.5 tree
用于可视化展示依赖关系
# 显示完整依赖树
uv tree# 仅显示指定包的依赖路径
uv tree flask# 反向追溯依赖(谁依赖了这个包)
uv tree --reverse sqlalchemy# 输出为JSON格式
uv tree --format json
5. 管理Python环境
基本命令:
uv python [OPTIONS] <COMMAND>
可选参数如下:
命令 | 描述 |
---|---|
list | 列出可用的Python安装版本 |
install | 下载并安装Python版本 |
find | 显示当前Python安装位置 |
pin | 固定使用特定Python版本 |
dir | 显示uv Python安装目录 |
uninstall | 卸载Python版本 |
uv python list
cpython-3.14.0a5+freethreaded-macos-aarch64-none <download available>
cpython-3.14.0a5-macos-aarch64-none <download available>
cpython-3.13.2+freethreaded-macos-aarch64-none <download available>
cpython-3.13.2-macos-aarch64-none /opt/homebrew/opt/python@3.13/bin/python3.13 -> ../Frameworks/Python.framework/Versions/3.13/bin/python3.13
cpython-3.13.2-macos-aarch64-none <download available>
cpython-3.12.9-macos-aarch64-none /opt/homebrew/opt/python@3.12/bin/python3.12 -> ../Frameworks/Python.framework/Versions/3.12/bin/python3.12
cpython-3.12.9-macos-aarch64-none <download available>
cpython-3.11.11-macos-aarch64-none /opt/homebrew/opt/python@3.11/bin/python3.11 -> ../Frameworks/Python.framework/Versions/3.11/bin/python3.11
cpython-3.11.11-macos-aarch64-none <download available>
cpython-3.10.16-macos-aarch64-none /Users/.local/share/uv/python/cpython-3.10.16-macos-aarch64-none/bin/python3.10
cpython-3.9.21-macos-aarch64-none /opt/homebrew/opt/python@3.9/bin/python3.9 -> ../Frameworks/Python.framework/Versions/3.9/bin/python3.9
cpython-3.9.21-macos-aarch64-none <download available>
cpython-3.9.12-macos-aarch64-none /Users/opt/anaconda3/bin/python3.9
cpython-3.9.12-macos-aarch64-none /Users/opt/anaconda3/bin/python3 -> python3.9
cpython-3.9.12-macos-aarch64-none /Users/opt/anaconda3/bin/python -> python3.9
cpython-3.9.6-macos-aarch64-none /Library/Developer/CommandLineTools/usr/bin/python3 -> ../../Library/Frameworks/Python3.framework/Versions/3.9/bin/python3
cpython-3.8.20-macos-aarch64-none <download available>
pypy-3.11.11-macos-aarch64-none <download available>
pypy-3.10.16-macos-aarch64-none <download available>
pypy-3.9.19-macos-aarch64-none <download available>
pypy-3.8.16-macos-aarch64-none <download available>
python环境并不完全都是新的,会根据本地已有的环境添加软连接,如brew安装的python3.11~python3.13和conda的python3.9都被添加软连接进行复用。
而<download available>
则表示当前本地环境没有,uv可以下载的版本。
uv python install python3.6
error: No download found for request: cpython-3.6-macos-aarch64-none
这是因为上面的list中不支持3.6
uv python install python3.8
Installed Python 3.8.20 in 3.98s
安装Python3.8就可以了
执行以下命令可以查看uv中的Python环境:
ll ~/.local/share/uv/python/
.gitignore
.lock
.temp
cpython-3.10.16-macos-aarch64-none
cpython-3.8.20-macos-aarch64-none
显示已安装了2个Python环境:
- 3.10是项目的
.python-version
中指定的,在项目初始化或者创建venv环境的适合就会创建该Python环境; - 3.8是前面通过
uv python install python3.8
进行安装的。
6. 下载速度对比
安装一个torch
进行对比,执行以下命令:
time pip install torch
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting torchDownloading https://pypi.tuna.tsinghua.edu.cn/packages/b3/17/41f681b87290a1d2f1394f943e470f8b0b3c2987b7df8dc078d8831fce5b/torch-2.6.0-cp39-none-macosx_11_0_arm64.whl (66.5 MB)|████████████████████████████████| 66.5 MB 41.9 MB/s
Requirement already satisfied: jinja2 in /Users/wuzisheng/opt/anaconda3/lib/python3.9/site-packages (from torch) (3.1.6)
Requirement already satisfied: typing-extensions>=4.10.0 in /Users/wuzisheng/opt/anaconda3/lib/python3.9/site-packages (from torch) (4.12.2)
Requirement already satisfied: filelock in /Users/wuzisheng/opt/anaconda3/lib/python3.9/site-packages (from torch) (3.6.0)
Collecting sympy==1.13.1Downloading https://pypi.tuna.tsinghua.edu.cn/packages/b2/fe/81695a1aa331a842b582453b605175f419fe8540355886031328089d840a/sympy-1.13.1-py3-none-any.whl (6.2 MB)|████████████████████████████████| 6.2 MB 30.9 MB/s
Requirement already satisfied: fsspec in /Users/wuzisheng/opt/anaconda3/lib/python3.9/site-packages (from torch) (2025.3.1)
Requirement already satisfied: networkx in /Users/wuzisheng/opt/anaconda3/lib/python3.9/site-packages (from torch) (2.7.1)
Requirement already satisfied: mpmath<1.4,>=1.1.0 in /Users/wuzisheng/opt/anaconda3/lib/python3.9/site-packages (from sympy==1.13.1->torch) (1.2.1)
Requirement already satisfied: MarkupSafe>=2.0 in /Users/wuzisheng/opt/anaconda3/lib/python3.9/site-packages (from jinja2->torch) (2.0.1)
Installing collected packages: sympy, torchAttempting uninstall: sympyFound existing installation: sympy 1.10.1Uninstalling sympy-1.10.1:Successfully uninstalled sympy-1.10.1
Successfully installed sympy-1.13.1 torch-2.6.0
pip install torch 7.38s user 3.69s system 51% cpu 21.551 total
总共耗时21秒。
执行以下命令使用uv进行下载
time uv pip install torch --python .venv/bin/python
Resolved 9 packages in 2.68s
Prepared 9 packages in 7.64s
Installed 9 packages in 199ms+ filelock==3.18.0+ fsspec==2025.3.2+ jinja2==3.1.6+ markupsafe==3.0.2+ mpmath==1.3.0+ networkx==3.4.2+ sympy==1.13.1+ torch==2.6.0+ typing-extensions==4.13.2
uv pip install torch --python .venv/bin/python 1.40s user 1.73s system 29% cpu 10.710 total
总共耗时10s,比传统pip下载快了一倍。
通过日志可以看到,使用pip下载是串行安装所有模块的,而使用uv进行下载使用的是多线程的并行下载,因此速度会提高不少,同时重用已下载的包减少磁盘I/O,减少CPU总工作时间。
7. 依赖冲突对比
创建一个requirements.txt
,填入以下内容
langchain==0.3.23
langchain-core==0.1.0
lxml==5.2.0
传统pip安装:
pip install -r requirements.txt
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting langchain==0.3.23Using cached https://pypi.tuna.tsinghua.edu.cn/packages/d4/49/6e933837da1931c9db745967282ff8bfff51bc3faec0eade846b12203b75/langchain-0.3.23-py3-none-any.whl (1.0 MB)
Collecting langchain-core==0.1.0Using cached https://pypi.tuna.tsinghua.edu.cn/packages/e9/aa/3d3e8a410d1b717e17cf162d9a1b043508a24d1c43f73749e8c854829535/langchain_core-0.1.0-py3-none-any.whl (189 kB)
Collecting lxml==5.2.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/84/1a/7442ed2964faf81746ee58358f18da42ce263999cafcd40e02d51db39755/lxml-5.2.0-cp39-cp39-macosx_10_9_universal2.whl (8.5 MB)|████████████████████████████████| 8.5 MB 3.2 MB/s
Requirement already satisfied: pydantic<3.0.0,>=2.7.4 in /Users/wuzisheng/opt/anaconda3/lib/python3.9/site-packages (from langchain==0.3.23->-r requirements.txt (line 1)) (2.10.6)
Requirement already satisfied: SQLAlchemy<3,>=1.4 in /Users/wuzisheng/opt/anaconda3/lib/python3.9/site-packages (from langchain==0.3.23->-r requirements.txt (line 1)) (1.4.32)
Collecting langchain-text-splitters<1.0.0,>=0.3.8Downloading https://pypi.tuna.tsinghua.edu.cn/packages/8b/a3/3696ff2444658053c01b6b7443e761f28bb71217d82bb89137a978c5f66f/langchain_text_splitters-0.3.8-py3-none-any.whl (32 kB)
Collecting langsmith<0.4,>=0.1.17Downloading https://pypi.tuna.tsinghua.edu.cn/packages/67/64/87a103a6a1cdca06559b09aa270e5dbfe018df4fd1b8327ce5a720441629/langsmith-0.3.32-py3-none-any.whl (358 kB)|████████████████████████████████| 358 kB 62.4 MB/s
ERROR: Cannot install -r requirements.txt (line 1) and langchain-core==0.1.0 because these package versions have conflicting dependencies.The conflict is caused by:The user requested langchain-core==0.1.0langchain 0.3.23 depends on langchain-core<1.0.0 and >=0.3.51To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflictERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies
使用uv进行安装:
uv pip install -r requirements.txt --python .venv/bin/python --index-url https://pypi.tuna.tsinghua.edu.cn/simple
× No solution found when resolving dependencies:╰─▶ Because langchain==0.3.23 depends on langchain-core>=0.3.51,<1.0.0 and you require langchain==0.3.23, we can conclude that you require langchain-core>=0.3.51,<1.0.0.And because you require langchain-core==0.1.0, we can conclude that your requirements are unsatisfiable.
pip会按照文件中列出的顺序依次下载所有模块,直到触发版本冲突就报错,而且不会列出所有的冲突,修改完之后重新下载还需要重新开始,直到遇到下一个冲突,依次循环,直到手动解决所有冲突为止。
相比之下uv显得更加智能,不会先下载所有的模块,而是检查依赖是否满足,会把所有的依赖冲突都抛出来,方便一次性修改解决冲突。
总结
uv越来越频繁的出现在一些新的项目中,如最近特别多的MCP项目,基本都是用uv进行管理的。比pip更快,比conda更可靠,具备软件开发的完整功能,对于不熟悉Python项目的其他软件开发者来说也降低了学习门槛。如果是开发新的项目,不妨使用uv来进行管理吧,相信会有全新的体验。
相关文章:
新一代Python管理UV完全使用指南|附实际体验与效果对比
简介 uv是新一代的Python项目管理工具,具备开发一个完整项目的所有功能点: 功能点描述包管理完全替代pip的功能,支持包的安装、升级、卸载等操作虚拟环境管理内置虚拟环境创建和管理,无需额外安装virtualenv或venv依赖解析与锁定…...

如何在 Windows 10 PC 上获取 iPhone短信
您可以轻松地将媒体数据从 iPhone 传输到 Windows 计算机,并直接访问计算机上的数据。但是,您可以在 Windows 10 PC 上接收 iPhone 短信吗?有什么功能或工具支持它吗?如果您发现在 Windows 10 PC 上接收 iPhone 消息很困难&#x…...
STM32程序运行不了,仿真功能也异常,连断点和复位都异常了
先检查有没有出现复位引脚rst短接0的情况 在检查是否出现明明没配置该外设你却偏偏要使用的情况,比如串口没配置你却偏要发送,引脚没配置你却偏要读取 这几个可能最好的办法就是从开头一行一行注释再运行看看能不能跑起来 还可以用以下方法 检查硬…...

Linux 系统中的软链接与硬链接
目录 一、什么是软链接? 1. 创建软链接 2. 软链接的特性 3. 软链接的用途 二、什么是硬链接? 1. 创建硬链接 2. 硬链接的特性 3. 硬链接的用途 4. 目录硬链接的特殊性 编辑 三、软链接与硬链接的区别 1. inode 编号 2. 路径依赖 3. 删除行…...

Python爬虫第22节- 结合Selenium识别滑动验证码实战
目录 一、引言 二、滑动验证码原理与反爬机制 2.1 验证码原理 2.2 反爬机制 三、工程实战:滑动验证码识别全流程 3.1 工程准备 3.1.1 环境依赖 3.1.2 目标网站与验证码识别案例 3.2 核心破解流程 3.2.1 自动化打开网页与登录 3.2.2 获取验证码图片&#…...
【C/C++】chrono简单使用场景
chrono使用场景举例 1 输出格式化字符串 示例代码 auto now std::chrono::system_clock::now(); auto t std::chrono::system_clock::to_time_t(now); auto ms std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()) % 1000;std::ostrin…...

Escrcpy(安卓手机投屏软件) v1.29.6 中文绿色版
在数字设备日益普及的今天,用户对于设备的控制和管理需求也在不断增加。对于Android设备用户来说,Escrcpy这款强大的工具无疑是一个福音。它不仅提供了直观的图形化界面,让用户能够轻松显示和控制自己的Android设备,还以完全免费开…...
Oracle MOVE ONLINE 实现原理
Oracle MOVE ONLINE 实现原理 Oracle 的 MOVE ONLINE 操作是一种在线重组表的技术,允许在不中断业务的情况下重新组织表数据。以下是其实现原理的详细分析: 基本概念 MOVE ONLINE 是 Oracle 12c 引入的特性,用于替代传统的 ALTER TABLE ..…...

Linux:深入理解网络层
网络层在复杂的网络环境中确定一个合适的路径.传输到指定的网络中 一、网络层的理解 问题1:为什么要有网络层的概念呢?? ——>我们先来讲一个故事: 假设我在学校里被誉为数学大神,是因为我的数学有考满分的能力&…...
【设计模式】简单工厂模式,工厂模式,抽象工厂模式,单例,代理,go案例区分总结
工厂模式三种类型: 一、简单工厂模式(Simple Factory) 定义: 用一个工厂类,根据传入的参数决定创建哪一种具体产品类实例。 面试说法: 由一个统一的工厂创建所有对象,增加新产品时需要修改工…...

Linux_编辑器Vim基本使用
✨✨ 欢迎大家来到小伞的大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:LInux_st 小伞的主页:xiaosan_blog 制作不易!点个赞吧!!谢谢喵!&a…...

vue展示修改前后对比,并显示修改标注diff
动态父组件 <template><el-buttontype"primary"size"small"plainclick"showDiffDialog(subItem)">查看修改内容</el-button><TextDiffDialogv-model:visible"diffDialogVisible":before"currentDiffItem?.…...

LiveWallpaperMacOS:让你的 Mac 桌面动起来
随着桌面美化需求的不断提升,用户对于桌面壁纸的要求已经不再局限于静态图片。越来越多的 Mac 用户希望桌面能像 Windows 一样,拥有动态壁纸,展现个性、提升体验。LiveWallpaperMacOS 正是这样一款让你的 Mac 桌面焕发活力的开源项目。 本文将详细介绍 LiveWallpaperMacOS …...
[预训练]Encoder-only架构的预训练任务核心机制
原创文章1FFN前馈网络与激活函数技术解析:Transformer模型中的关键模块2Transformer掩码技术全解析:分类、原理与应用场景3【大模型技术】Attention注意力机制详解一4Transformer核心技术解析LCPO方法:精准控制推理长度的新突破5Transformer模…...

07-后端Web实战(部门管理)
5. 修改部门 对于任何业务的修改功能来说,一般都会分为两步进行:查询回显、修改数据。 5.1 查询回显 5.1.1 需求 当我们点击 "编辑" 的时候,需要根据ID查询部门数据,然后用于页面回显展示。 5.1.2 接口描述 参照参照…...

mysql ACID 原理
序言:ACID 是一组数据库设计原则,他是业务数据和关键业务程序的可靠性保障。 1、atomicity(原子性) 依赖如下能力 autocommit commit rollback2、一致性 2.1 double write buffer 1、定义:double write buffer 是…...

[Rust_1] 环境配置 | vs golang | 程序运行 | 包管理
目录 Rust 环境安装 GoLang和Rust 关于Go 关于Rust Rust vs. Go,优缺点 GoLang的优点 GoLang的缺点 Rust的优点 Rust的缺点 数据告诉我们什么? Rust和Go的主要区别 (1) 性能 (2) 并发性 (3) 内存安全性 (4) 开发速度 (5) 开发者体验 Ru…...

二十五、面向对象底层逻辑-SpringMVC九大组件之HandlerMapping接口设计
一、引言:MVC架构的交通枢纽 在Spring MVC框架中,HandlerMapping接口扮演着"请求导航仪"的关键角色,它决定了HTTP请求如何被路由到对应的Controller处理器。作为MVC模式的核心组件之一,HandlerMapping在请求处理的生命…...
构建安全高效的邮件网关ngx_mail_ssl_module
一、快速上手:最小配置示例 worker_processes auto;mail {server {# 监听 IMAP over TLSlisten 993 ssl;protocol imap;# TLS 协议与密码套件ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;# 证书与私钥ssl_…...

HUAWEI交换机配置镜像口验证(eNSP)
技术术语: 流量观察口:就是我们常说的镜像口,被观察的流量的引流目的端口 流量源端口:企业生产端口,作为观察口观察对象。 命令介绍: [核心交换机]observe-port [观察端口ID或编号(数字&am…...

前端vue3实现图片懒加载
场景和指令用法 场景:电商网站的首页通常会很长,用户不一定能访问到页面靠下面的图片,这类图片通过懒加载优化手段可以做到只有进入视口区域才发送图片请求 核心原理:图片进入视口才发送资源请求 首先:我们需要定义一个全局的指令&#x…...
网站每天几点更新,更新频率是否影响网站收录
1. 每天几点更新网站最合适?总怕时间选错影响收录? 刚开始搞网站的时候,是不是老纠结啥时候更新合适?早上刚上班?半夜没人的时候?选不对时间,总担心搜索引擎爬虫来了没抓到新内容,影…...
主流Markdown编辑器的综合评测与推荐
根据2025年最新资料,结合功能特性、用户体验和技术适配性,以下是对主流Markdown编辑器的综合评测与推荐: 一、核心对比维度与评估方法 功能完整性:支持数学公式、流程图、代码高亮等复杂格式。跨平台兼容性:Windows/m…...

计算机网络-MPLS VPN应用场景与组网
上一篇文章我们通过一个基础实验实现了企业分支间的MPLS VPN互联,如果还不理解的可以多看几遍前面的文章或者多敲下实验。今天来学习几种常见的MPLS VPN应用场景与这些场景下MPLS VPN的部署方法。 一、MPLS VPN典型应用 目前,MPLS VPN的主要应用包括企…...
AugmentFree:解除 AugmentCode 限制的终极方案 如何快速清理vscode和AugmentCode缓存—windows端
AugmentFree1.0工具包:解除 AugmentCode 免费试用限制的终极方案 Augment VIP 是一个专为 VS Code 用户设计的实用工具包,旨在帮助用户管理和清理 VS Code 数据库,解除 AugmentCode 免费试用账户的限制。 augment从根源上解决免费额度限制问…...
WPF【11_7】WPF实战-重构与美化(ViewModel的嵌套与分解、海量数据不要Join)
11-12 【重构】ViewModel的嵌套与分解 目前我们的代码中有一个不易发现的致命问题,如果工作中这样写代码大概率会被打回去重做。那么这个问题是什么呢? --\ViewModels\MainViewModel.cs 视图模型中的 LoadCustomers() 方法,考虑一下在这里我…...

Linux 的编辑器--vim
1.Linux编辑器-vim使⽤ vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,⽽且还有⼀些新的特性在⾥⾯。例如语法加亮,可视化操作不仅可以在终端运⾏,也可以…...
Oracle 慢sql排查
Oracle慢sql排查步骤 1.1. 前言 Oracle 慢查询的排查方向包括以下几个方向 : 基准测试 (吞吐量): 包括 Oracle 本身吞吐量和磁盘 I/O 吞吐量硬件分析 (资源情况): 包括查看服务器 CPU , 硬盘的使用情况SQL分析:分析 SQL 中是否存在慢查询 , 是否命中索引配置优化…...

[Protobuf] 快速上手:安全高效的序列化指南
标题:[Protobuf] (1)快速上手 水墨不写bug 文章目录 一、什么是protobuf?二、protobuf的特点三、使用protobuf的过程?1、定义消息格式(.proto文件)(1)指定语法版本(2)package 声明符 2、使用protoc编译器生成代码&…...
uniapp开发企业微信小程序时 wx.qy.login 在uniapp中使用的时候,需要导包吗?
在 UniApp 中使用 “wx.qy.login” 不需要手动导包,但需要满足以下条件: 一、环境要求与配置 1� 企业微信环境判断 必须确保当前运行环境是企业微信客户端,通过 “uni.getSystemInfoSync().environment” 判断是否为 “wxwork”…...