包管理器npm,cnpm,yarn和pnpm
npm (Node Package Manager)
核心技术与工作原理
-
依赖解析:
- 广度优先搜索(BFS):npm 使用 BFS 算法来解析依赖树,尽量扁平化
node_modules
目录以减少重复的依赖项。 - 冲突处理:如果两个包需要同一个依赖的不同版本,npm 会在
node_modules
中创建嵌套结构来解决冲突,确保每个包都能找到它所需要的版本。
- 广度优先搜索(BFS):npm 使用 BFS 算法来解析依赖树,尽量扁平化
-
锁文件机制:
package-lock.json
:从 npm 5 开始引入,该文件详细记录了项目中所有依赖的确切版本,并包含了一个哈希值用于校验完整性,确保构建的一致性。- 作用:保证不同开发者在不同的环境中安装相同的依赖版本,避免“在我的机器上能工作”的问题。
- 生成与更新:每当运行
npm install
或者更改package.json
中的依赖时,package-lock.json
文件会自动更新。
-
安装过程:
- 下载:npm 安装依赖时首先检查本地缓存,若存在则直接使用;否则从远程仓库下载整个包到本地的
node_modules
目录中。 - 链接:根据需要解析和链接子依赖,对于有同名依赖的不同版本,它会在
node_modules
中创建嵌套结构来解决冲突。 - 全局 vs. 局部:npm 支持全局和局部安装,全局安装通常用于 CLI 工具,而局部安装则是针对特定项目的依赖。
- 下载:npm 安装依赖时首先检查本地缓存,若存在则直接使用;否则从远程仓库下载整个包到本地的
-
缓存机制:
- 全局缓存目录:默认位于用户主目录下的
.npm
文件夹中。每次安装都会检查缓存,如果存在相同的包版本,则直接使用缓存副本,不再重新下载。 - 持久化缓存:通过设置
.npmrc
文件中的cache-min
和其他选项,可以延长缓存的有效期或指定缓存位置。
- 全局缓存目录:默认位于用户主目录下的
性能优化
- 增量更新:npm 支持增量更新,即只更新发生变化的依赖,而不是每次都重装整个依赖树。
- 并发请求:npm 在较新版本中实现了并发请求功能,可以同时下载多个依赖,提高了安装速度。
- 零安装(Zero Install):虽然 npm 本身没有像 Yarn 那样的“零安装”概念,但可以通过
.npmrc
文件配置来实现类似的效果,例如通过设置cache-min
来延长缓存的有效期。 npm ci
命令:在 CI/CD 环境中推荐使用,它严格按照package-lock.json
中的版本安装依赖,确保环境一致性。
安全特性
- 审计功能:npm 提供了
npm audit
命令,可以扫描项目的依赖关系图,识别潜在的安全漏洞并给出修复建议。 - 签名验证:支持对发布到 npm 的包进行数字签名,确保来源可靠性和完整性。
- 两步验证(2FA):npm 支持为账户启用两步验证,增强账户安全性。
- 私有模块的安全发布:npm 提供了私有模块的发布和管理功能,允许企业级项目保护敏感代码。
高级配置与最佳实践
.npmrc
文件:可用于自定义 npm 行为,如指定注册表、代理服务器等。还可以通过.npmrc
设置环境变量,控制 npm 的行为。- 私有模块:npm 支持私有模块的发布和管理,适合企业级项目。
npm init
和npm init <initializer>
:快速初始化项目或使用特定模板初始化项目。npm link
:开发期间方便地测试本地模块。npm scripts
:强大的脚本功能,可以用来定义和执行各种任务,如构建、测试、部署等。
实际应用案例
- 开源项目:npm 是大多数开源 JavaScript 项目的默认选择,因为它拥有最广泛的社区支持和资源。
- CI/CD 管道:使用
npm ci
确保构建管道中的依赖一致性。 - 大型企业项目:利用 npm 私有模块功能保护敏感代码。
常见问题及解决方案
- 网络连接问题:可以尝试使用
cnpm
或者配置.npmrc
使用国内镜像源。 - 依赖冲突:利用
npm ls
查看依赖树,找到冲突的依赖并手动调整版本。 - 权限问题:使用
sudo
或者修改.npmrc
配置以解决权限不足的问题。 - 缓存问题:清理缓存(
npm cache clean --force
)或者调整.npmrc
中的缓存设置。
cnpm (China npm)
核心技术与工作原理
- 镜像加速:cnpm 是基于 npm 的一个分支,它使用了位于中国的镜像源,从而加快了包的下载速度。它的命令行接口和行为几乎完全与 npm 兼容。
- 安装过程:除了使用不同的注册表外,cnpm 的安装流程与 npm 几乎相同,但它能够显著改善国内用户的下载体验。
- 缓存机制:cnpm 也利用了 npm 的缓存机制,但通过使用本地镜像源,减少了对国际网络连接的依赖,进一步提升了速度。
实际应用
- 中国开发者首选:由于其对国内网络环境的优化,cnpm 成为中国地区开发者的首选工具之一,尤其是在企业级项目中,它可以有效提高团队的工作效率。
常见问题及解决方案
- 同步延迟:有时 cnpm 的镜像可能不会立即同步最新的 npm 包,这时可以等待一段时间或者直接使用官方 npm 源。
- 权限问题:与 npm 类似,遇到权限问题时可以使用
sudo
或者修改.npmrc
配置。 - 缓存问题:清理缓存或者调整
.npmrc
中的缓存设置。
Yarn
核心技术与工作原理
-
依赖解析:
- 确定性算法:Yarn 使用了一种确定性的算法来进行依赖解析,这意味着相同的
yarn.lock
文件总是会产生相同的node_modules
结构。 - 冲突处理:通过锁定依赖版本和依赖关系图,确保不同环境中依赖的一致性。
- 确定性算法:Yarn 使用了一种确定性的算法来进行依赖解析,这意味着相同的
-
锁文件机制:
yarn.lock
:不仅记录了依赖的确切版本,还包括了详细的依赖关系图,使得跨平台和跨团队协作更加可靠。- 作用:确保所有开发者安装相同的依赖版本,避免不一致的问题。
- 生成与更新:每当运行
yarn add
或者更改package.json
中的依赖时,yarn.lock
文件会自动更新。
-
安装过程:
- 并行下载:Yarn 支持并行下载和安装依赖,大大提高了效率。
- 缓存恢复:它会先尝试从本地缓存恢复依赖,只有当缓存失效时才会进行远程下载。
- 全局 vs. 局部:Yarn 同样支持全局和局部安装,全局安装通常用于 CLI 工具,而局部安装则是针对特定项目的依赖。
-
插件系统:Yarn 提供了一个可扩展的插件架构,允许用户添加额外的功能,如安全扫描、代码分析等。
性能优化
- 零安装:Yarn 引入了“零安装”概念,即可以通过共享同一份
yarn.lock
和.yarn/cache
目录来加速开发环境的初始化。 - 并行化:通过并行处理依赖安装任务,Yarn 显著缩短了大型项目的安装时间。
yarn install --frozen-lockfile
:在 CI/CD 环境中推荐使用,它严格按照yarn.lock
中的版本安装依赖,确保环境一致性。
安全特性
- 签名验证:Yarn 支持对包进行签名验证,确保下载的包未被篡改。
- 审计功能:类似于 npm,Yarn 也有自己的安全审计工具。
- 两步验证(2FA):Yarn 支持为账户启用两步验证,增强账户安全性。
高级配置与最佳实践
- Workspaces:Yarn 的 Workspaces 功能非常适合 monorepo,可以简化多包之间的依赖管理和同步。
yarn add
和yarn remove
:这些命令提供了细粒度的控制,允许你精确地添加或移除依赖。yarn global
:用于全局安装工具,便于管理多个版本的工具链。yarn exec
和yarn run
:用于执行脚本和运行命令,支持在多个包之间共享脚本。
实际应用案例
- monorepo 项目:Yarn 的 Workspaces 功能非常适合管理多个包的 monorepo 项目。
- CI/CD 管道:使用
yarn install --frozen-lockfile
确保构建管道中的依赖一致性。 - 大型企业项目:利用 Yarn 的安全特性和插件系统,适用于复杂的企业级项目。
常见问题及解决方案
- 依赖冲突:使用
yarn why
命令查找特定包的来源,帮助理解为什么某些包会被安装。 - 网络问题:可以通过配置
.yarnrc
文件使用国内镜像源来加速下载。 - 权限问题:与 npm 类似,遇到权限问题时可以使用
sudo
或者修改.yarnrc
配置。 - 缓存问题:清理缓存(
yarn cache clean
)或者调整.yarnrc
中的缓存设置。
pnpm
核心技术与工作原理
-
依赖解析:
- 全局存储(store):pnpm 使用了一个全局存储(store)来保存所有安装过的包,然后为每个项目创建符号链接到这些包。这样就避免了重复下载相同的包,并保持了原生的
node_modules
层级结构。 - 冲突处理:通过严格的
node_modules
结构,确保每个包都能找到它所需要的版本,避免冲突。
- 全局存储(store):pnpm 使用了一个全局存储(store)来保存所有安装过的包,然后为每个项目创建符号链接到这些包。这样就避免了重复下载相同的包,并保持了原生的
-
严格的 node_modules 结构:pnpm 不改变
node_modules
的层级结构,而是通过符号链接指向全局存储中的包,确保与所有工具的兼容性。 -
锁文件机制:
pnpm-lock.yaml
:用于锁定项目的依赖版本,确保所有开发者使用相同的依赖组合。- 作用:保证不同开发者在不同的环境中安装相同的依赖版本,避免“在我的机器上能工作”的问题。
- 生成与更新:每当运行
pnpm add
或者更改package.json
中的依赖时,pnpm-lock.yaml
文件会自动更新。
-
工作区支持:pnpm 提供了强大的多包仓库(monorepos)支持,方便管理和同步多个包之间的依赖关系。
性能优化
- 节省磁盘空间:通过共享全局存储,pnpm 大大减少了磁盘空间的占用,尤其适用于拥有大量依赖的项目。
- 快速安装:由于符号链接机制,pnpm 的安装速度通常比 npm 和 Yarn 更快,特别是在处理大型项目或 monorepo 时表现尤为突出。
- 高效缓存:pnpm 使用高效的缓存策略,首次安装后,后续安装只需创建新的符号链接,极大提高了效率。
pnpm install --shamefully-hoist
:可以在某些情况下模仿 npm 的扁平化node_modules
结构,但这可能会破坏 pnpm 的性能优势。
安全特性
- 签名验证:pnpm 支持对包进行签名验证,确保下载的包未被篡改。
- 审计功能:pnpm 也有自己的安全审计工具,帮助识别和修复潜在的安全漏洞。
- 两步验证(2FA):pnpm 支持为账户启用两步验证,增强账户安全性。
高级配置与最佳实践
pnpm-workspace.yaml
:用于定义 monorepo 中的包,简化多包管理。pnpm add
和pnpm remove
:这些命令提供了细粒度的控制,允许你精确地添加或移除依赖。pnpm exec
和pnpm run
:用于执行脚本和运行命令,支持在多个包之间共享脚本。pnpm recursive
:特别适用于 monorepo,允许在一个命令中对多个包执行相同的操作。
实际应用案例
- 大型项目和 monorepo:pnpm 特别适合处理大型项目或 monorepo,因为它的符号链接机制可以显著节省磁盘空间并加快安装速度。
- CI/CD 管道:使用
pnpm install
确保构建管道中的依赖一致性。 - 大型企业项目:利用 pnpm 的安全特性和性能优势,适用于复杂的企业级项目。
常见问题及解决方案
- 依赖冲突:使用
pnpm why
命令查找特定包的来源,帮助理解为什么某些包会被安装。 - 符号链接问题:某些工具可能不完全支持符号链接,这时可以考虑使用
--shamefully-hoist
选项。 - 权限问题:与 npm 类似,遇到权限问题时可以使用
sudo
或者修改.npmrc
配置。 - 缓存问题:清理缓存(
pnpm cache clean
)或者调整.npmrc
中的缓存设置。
实际应用场景与选择建议
-
npm:适合希望使用官方工具且不需要特别的速度优化或磁盘空间节省的开发者。它提供了最广泛的社区支持和资源,非常适合初学者和小型项目。
-
cnpm:对于中国地区的开发者来说,cnpm 提供了更快的下载速度和更好的用户体验,尤其是在面对国际网络连接不稳定的情况下。它也是企业级项目的好选择,因为它可以显著提高团队的工作效率。
-
Yarn:如果你重视快速安装体验、依赖版本的一致性和可靠性,Yarn 是一个很好的选项。它的插件系统也为高级用户提供更多的灵活性。特别是对于那些需要在多个包之间共享依赖的 monorepo 项目,Yarn 的 Workspaces 功能非常有用。
-
pnpm:如果你在处理大型项目或 monorepo,并且关心磁盘空间和安装速度,那么 pnpm 提供了显著的优势。它严格遵守
node_modules
结构,确保与所有工具的兼容性,同时也提供了优秀的性能和资源利用率。
综上所述,选择哪个包管理器取决于你的具体需求、团队的工作流、地理位置等因素。
相关文章:

包管理器npm,cnpm,yarn和pnpm
npm (Node Package Manager) 核心技术与工作原理 依赖解析: 广度优先搜索(BFS):npm 使用 BFS 算法来解析依赖树,尽量扁平化 node_modules 目录以减少重复的依赖项。冲突处理:如果两个包需要同一个依赖的不…...

docker-compose部署skywalking 8.1.0
一、下载镜像 #注意 skywalking-oap-server和skywalking java agent版本强关联,版本需要保持一致性 docker pull elasticsearch:7.9.0 docker pull apache/skywalking-oap-server:8.1.0-es7 docker pull apache/skywalking-ui:8.1.0二、部署文件docker-compose.yam…...

Android -- [SelfView] 自定义多行歌词滚动显示器
Android – [SelfView] 自定义多行歌词滚动显示器 流畅、丝滑的滚动歌词控件* 1. 背景透明;* 2. 外部可控制进度变化;* 3. 支持屏幕拖动调节进度(回调给外部);效果 歌词文件(.lrc) 一. 使用…...

记事本建java及java命名规范
1.桌面开发:c# 2. 记事本建java: 以class的名称(类名)为名,名称.java 编译jdk:javac 名称.java 调动运行jre : java 名称 查看名称.java里面的内容:cat 名称.java java 的命名规范 大驼峰(每个单词首…...

Elasticsearch scroll 之滚动查询
Elasticsearch scroll 之滚动查询 Elasticsearch 的 Scroll API 是一种用于处理大规模数据集的机制,特别是在需要从索引中检索大量数据时。通常情况下,Elasticsearch 的搜索请求会有一个结果集大小的限制 (fromsize 的检索数量默认是 10,000 条记录)&am…...

cartographer建图与定位应用
文章目录 前言一、安装cartographer1.安装环境2.源码编译2.1 下载2.2 编译 二、gazebo仿真2d建图0.准备仿真环境1.编写lua文件2.编写启动文件3.建图保存 三、cartographer定位 move_base导航3.1 编写启动文件3.2 启动launch 总结 前言 本文介绍cartographer在ubuntu18.04下的…...

CEEMDAN-CPO-VMD二次分解(CEEMDAN+冠豪猪优化算法CPO优化VMD)
CEEMDAN-CPO-VMD二次分解(CEEMDAN冠豪猪优化算法CPO优化VMD) 目录 CEEMDAN-CPO-VMD二次分解(CEEMDAN冠豪猪优化算法CPO优化VMD)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 首先运用CEEMDAN对数据进行一次分解ÿ…...

【Golang】Go语言编程思想(二):函数式编程
函数式编程 函数与闭包 支持函数式编程的语言当中,函数是一等公民,参数、变量、返回值都可以是函数。 以 adder 为例,下例实现了一个函数式编程: package mainimport "fmt"func adder() func(int) int {sum : 0retu…...

ros项目dual_arm_pick-place(moveit和gazebo联合仿真)(一)
目录 前言正文创建功能包具体代码运行 总结 前言 dual_arm_pick-place项目中,实现了两套的moveit和gazebo联合仿真。 启动文件分别是bringup_moveit.launch和arm_bringup_moveit.launch。 在这个项目中,我将代码重新创建了一个包,co_simula…...

点线面|点到两点直线距离求解
在点云库(PCL)中,计算点到直线的距离可以借助于向量运算。以下是这种计算方法的步骤以及相应的实现代码。 概念 要计算点 AA 到通过点 BB 和 CC 定义的直线的距离,可以使用以下步骤: 定义两个向量: 向量 …...

等保2.0三级测评华为华三交换机路由器
在使用本博客提供的学习笔记及相关内容时,请注意以下免责声明: 信息准确性:本博客的内容是基于作者的个人理解和经验,尽力确保信息的准确性和时效性,但不保证所有信息都完全正确或最新。 非专业建议:博客中的内容仅供参考,不能替代专业人士的意见和建议。在做出任何重要…...

鸿蒙分享(二):引入zrouter路由跳转+封装
码仓库:https://gitee.com/linguanzhong/share_harmonyos 鸿蒙api:12 鸿蒙第三方库地址:OpenHarmony三方库中心仓 zrouter地址:OpenHarmony三方库中心仓 1.引入zrouter 1.打开终端界面:输入 ohpm install hzw/zrouter 2.在项目…...

欧拉角和旋转矩阵之间的转换
在实际编程实践中,特别是使用C的Eigen库时,需要掌握多种空间旋转表示之间的转换。本文将深入探讨欧拉角与旋转矩阵之间的相互转换,这是使用库时常见的操作。 首先,让我们了解欧拉角。它是指通过围绕三个基本坐标轴旋转来表示三维对…...

Typora的激活
Typora的安装、激活 图文教程 | 2024年最新Typora激活使用教程合集 Typora 激活指南(2024年最新版) 图文教程 | 2024Typora最新版免费激活使用教程(新旧版可用)...

排查bug的通用思路
⭐️前言⭐️ APP点击某个按钮没有反应/PC端执行某个操作后,响应较慢,通用的问题排查方法: 从多个角度来排查问题 🍉欢迎点赞 👍 收藏 ⭐留言评论 🍉博主将持续更新学习记录收获,友友们有任何问题可以在评…...

探秘CSS3 3D转换:打造立体网页动画与视觉效果的魔法
在现代网页设计中,CSS3 3D转换(3D Transforms)已经成为一种强大的工具,用于创建各种动态效果和视觉吸引力。本文将详细介绍CSS3 3D转换的基本概念、常见属性及其应用示例,帮助您掌握这一技术,提升网页设计的…...

Pycharm 安装两种不同版本的解释器
背景 Pycharm使用的解释器是python3.11,python3.9.x之后不支持win7;有同事需要在win7上使用python制作的exe,而了“win7环境下运行python打包exe提示找不到api-ms-win-core-path-l1-1-0.dll”。 过程 查找了一些资料,发现直接将…...

小红薯x-s算法分析最新12-06(x-s 56)(上)
目标-小红薯达人作品:aHR0cHM6Ly93d3cueGlhb2hvbmdzaHUuY29tLw 1、确定目标 打上xhr断点 发现是异步请求,同时各个参数已经生成结束了 2、进入第二个异步函数 打上断点并继续运行 发现在e这个位置也生成了,那么再继续往上找异步参数进行断…...

视频融合×室内定位×数字孪生
随着物联网技术的迅猛发展,室内定位与视频融合技术在各行各业中得到了广泛应用。不仅能够提供精确的位置信息,还能通过实时视频监控实现全方位数据的可视化。 与此同时,数字孪生等技术的兴起为智慧城市、智慧工厂等应用提供了强大支持&#…...

JMS和消息中间件:Kafka/RocketMQ
文章目录 消息传递模型使用JMS还是KafkaKafka与RocketMQ的优缺点Kafka与RocketMQ的使用场景Kafka与RocketMQ的选型指南 TPM 项目中, iflow之间使用了JMS,后端项目与数据库通信使用Kafka MQ和JMS的区别: JMS是 java 用来处理消息的一个API规范…...

FreeRTOS之ARM CR5栈结构操作示意图
FreeRTOS之ARM CR5栈结构操作示意图 1 FreeRTOS源码下载地址2 ARM CR5栈结构操作宏和接口2.1 portSAVE_CONTEXT宏2.1.1 portSAVE_CONTEXT源码2.1.2 portSAVE_CONTEXT宏操作栈结构变化示意图 2.2 portRESTORE_CONTEXT宏2.2.1 portRESTORE_CONTEXT源码2.2.2 portRESTORE_CONTEXT宏…...

【技巧】Mac上如何显示键盘和鼠标操作
在制作视频教程时,将键盘和鼠标的操作在屏幕上显示出来,会帮助观众更容易地理解。 推荐Mac上两款开源的小软件。 1. KeyCastr 这款工具从2009年至今一直在更新中。 https://github.com/keycastr/keycastr 安装的话,可以从Github上下载最…...

三种插入排序算法
目录 1.直接插入排序 直接插入排序的步骤示例 直接插入排序的特点 适用场景 2.折半插入排序 折半插入排序的基本原理 折半插入排序的实现过程 折半插入排序的时间复杂度 折半插入排序的特点 3.希尔排序 希尔排序的基本原理 希尔排序的步骤举例 希尔排序的时间复杂…...

力扣100题--移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2: 输入: nums [0] 输出: […...

第30天:安全开发-JS 应用NodeJS 指南原型链污染Express 框架功能实现审计0
时间轴: 演示案例: 环境搭建-NodeJS-解析安装&库安装 功能实现-NodeJS-数据库&文件&执行 安全问题-NodeJS-注入&RCE&原型链 案例分析-NodeJS-CTF 题目&源码审计 开发指南-NodeJS-安全 SecGuide 项目、 环境搭建-NodeJ…...

1.使用docker 部署redis Cluster模式 集群3主3从
1.使用docker 部署redis Cluster模式 集群3主3从 1.1 先安装docker 启动docker服务,拉取redis镜像 3主3从我们要在docker启动6个容器docker run --name redis-node-1 --net host --privilegedtrue -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-…...

SAP导出表结构并保存到Excel 源码程序
SAP导出表结构并保存到Excel,方便写代码时复制粘贴 经常做接口,需要copy表结构,找到了这样一个程程,特别有用。 01. 先看结果...

李飞飞:Agent AI 多模态交互的前沿探索
发布于:2024 年 11 月 27 日 星期三 北京 #RAG #李飞飞 #Agent #多模态 #大模型 Agent AI在多模态交互方面展现出巨大潜力,通过整合各类技术,在游戏、机器人、医疗等领域广泛应用。如游戏中优化NPC行为,机器人领域实现多模态操作等。然而,其面临数据隐私、偏见、可解释性…...

算法基础学习Day2(双指针)
文章目录 1.题目2.题目解答1.快乐数题目及题目解析算法学习代码提交 2.题目2题目及题目解析算法学习代码提交 1.题目 202. 快乐数 - 力扣(LeetCode)11. 盛最多水的容器 - 力扣(LeetCode) 2.题目解答 1.快乐数 题目及题目解析 …...

信奥常考点:二叉树的构建(已知中序和 前序或后序 的情况下)
一、题目引入 这是来自CCF-GESP C七级认证 2024年9月的题目。 我们在此不解题,只把树画出来。 CCF-GESP 编程能力认证 C 七级 2024年9月份详细解析-CSDN博客 二、解题过程 我们可以根据先序遍历得出根节点是A,然后我们得到了A的左子树[B D](橙…...

《CS2》运行时提示“缺少steam_api_64.dll”文件该如何处理?“找不到steam_api.dll,无法继续执行代码”的修复方法
《CS2》游戏运行时文件丢失、损坏与系统报错处理指南 《CS2》上海 Major 淘汰赛这两天也在如火如荼的进行当中,相信有很多go学长在游戏运行时会遇到各种文件丢失、损坏以及系统报错问题,给玩家带来极大的困扰。今天,我们就来详细探讨一下《C…...

MCPTT 与BTC
MCPTT(Mission Critical Push-to-Talk)和B-TrunC(宽带集群)是两种关键通信标准,它们分别由不同的组织制定和推广。 MCPTT(Mission Critical Push-to-Talk)标准由3GPP(第三代合作伙伴…...

aardio - 汉字笔顺处理 - json转sqlite转png
本代码需要最新版 godking.conn 库,请自行下载! 如果没有安装 odbc for sqlite 驱动,可以使用 godking.conn.driver.sqlite3.install() 安装。 也可以在此下载自行安装:http://www.chengxu.online/show.asp?softid267 1、将js…...

图的遍历之DFS邻接矩阵法
本题要求实现一个函数,对给定的用邻接矩阵存储的无向无权图,以及一个顶点的编号v,打印以v为起点的一个深度优先搜索序列。 当搜索路径不唯一时,总是选取编号较小的邻接点。 本题保证输入的数据(顶点数量、起点的编号等…...

kdenlive 一个视频一左一右拼接(抖音长屏转宽屏)
参考kdenlive 剪裁_Kdenlive中的分层合成-CSDN博客 kdenlive 一个视频一左一右拼接(抖音长屏转宽屏) 按照图片的操作...

深度学习-53-AI应用实战之基于labelImg和labelme的手动标注
文章目录 1 labelImg1.1 简介1.2 安装使用1.3 文件格式1.3.1 pascalVOC格式1.3.2 yolo格式1.4 验证显示2 labelme2.1 简介2.2 安装使用2.3 labelme转换为yolo3 参考附录1 labelImg 1.1 简介 labelImg(label image)是一个开源的图像标注工具,用于创建图像标注数据集。它提供了…...

白鲸优化算法原理,白鲸算法公式,白鲸算法应用(白鲸算法测试效果,白鲸算法优化BP神经网络,白鲸算法路径优化)
目录 白鲸算法主要原理 白鲸算法主要公式 白鲸算法应用案例 白鲸算法主要原理 白鲸优化算法(Beluga Whale Optimization Algorithm,BWO)是一种基于种群的元启发式优化算法,灵感来源于白鲸的生活行为。该算法通过模拟白鲸的游泳、捕食和鲸落行为来实现模型参数的优化…...

KubeEdge、ThingsBoard 和 CnosDB:智能物联网平台的完美组合
概述 在数字化时代,物联网(IoT)正在改变我们的生活和工作方式。KubeEdge、ThingsBoard 和 CnosDB 是三个领先的开源平台,它们在物联网领域各自发挥着重要的作用,并且可以无缝集成,为用户提供强大的解决方案…...

最简单的线性回归神经网络
数据: # 线性回归 import torch import numpy as np import matplotlib.pyplot as plt# 随机种子,确保每次运行结果一致 torch.manual_seed(42)# 生成训练数据 X torch.randn(100, 3) # 100 个样本,每个样本 3 个特征 true_w torch.tenso…...

[软件工程]九.可依赖系统(Dependable Systems)
9.1什么是系统的可靠性(reliability) 系统的可靠性反映了用户对系统的信任程度。它反映了用户对其能够按照预期运行且正常使用中不会失效的信心程度。 9.2什么是可依赖性(dependablity)的目的 其目的是覆盖系统的可用性&#x…...

浏览器解析页面流程
从输入一个url到页面解析完成的流程 1. 网络进程 1. 获取url 浏览器首先判断输入的url是否有http缓存,如果有则直接从http缓存中读取数据并显示。如果没有,则进行下一步。进行DNS解析,获取域名对应的IP地址。 2.下载html文件 浏览器根据I…...

鸿蒙实现视频播放功能
目录: 1、鸿蒙视频功能介绍2、AVPlayer组件实现视频播放2.1、播放功能的逻辑处理2.2、页面调用渲染2.3、缓存播放信息 3、video组件实现视频播放3.1、鸿蒙官网实现代码3.2、通过xml布局文件代码实现I. 创建项目II. 定义布局文件III. 实现音频和视频播放功能IV. 音频…...

RabbitMQ介绍及安装
文章目录 一. MQ二. RabbitMQ三. RabbitMQ作用四. MQ产品对比五. 安装RabbitMQ1. 安装erlang2. 安装rabbitMQ3. 安装RabbitMQ管理界⾯4. 启动服务5. 访问界面6. 添加管理员用户7. 重新登录 一. MQ MQ( Message queue ), 从字⾯意思上看, 本质是个队列, FIFO 先⼊先出ÿ…...

第五节、电机多段运动【51单片机-TB6600驱动器-步进电机教程】
摘要:本节介绍用控制步进电机三个主要参数角度、速度、方向,实现简单的步进电机多段控制 一、目标功能 输入多个目标角度,设定好步进电机速度,实现步进电机多段转动 二、计算过程 2.1 速度计算 根据第三节内容,定时器…...

docker run 设置启动命令
在使用 docker run 命令时,你可以通过指定启动命令来覆盖 Docker 镜像中的默认入口点或命令。具体来说,你可以通过以下两种方式来设置启动命令: 覆盖 CMD: 你可以通过在 docker run 命令的最后部分提供命令来覆盖镜像的默认 CMD 指…...

嵌入式蓝桥杯学习拓展 LCD翻转显示
通过配置SS和GS两个标志位,实现扫描方向的切换。 将lcd.c的REG_932X_Init函数进行部分修改。 将LCD_WriteReg(R1, 0x0000);修改为LCD_WriteReg(R1,0x0100); 将LCD_WriteReg(R96, 0x2700); 修改为LCD_WriteReg(R96, 0xA700); void REG_932X_Init1(void) {LCD_Wr…...

SQLite 语法
SQLite 语法 SQLite 是一种轻量级的数据库管理系统,它遵循 SQL(结构化查询语言)标准。SQLite 的语法相对简单,易于学习和使用。本文将详细介绍 SQLite 的基本语法,包括数据库的创建、表的创建、数据的插入、查询、更新…...

ZLMediaKit+wvp (ffmpeg+obs)推拉流测试
这里使用了两种方式: ffmpeg命令和 OBS OBS推流在网上找了些基本没有说明白的, 在ZLMediaKit的issues中看到了一个好大哥的提问在此记录一下 使用OBS推流,rtmp,报鉴权失败 推流 1. ffmpeg命令推流 官方说明文档地址: 推流规则 rtsp://192.168.1.4:10554…...

【开源免费】基于SpringBoot+Vue.JS高校学科竞赛平台(JAVA毕业设计)
博主说明:本文项目编号 T 075 ,文末自助获取源码 \color{red}{T075,文末自助获取源码} T075,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…...

lvgl9 Line(lv_line) 控件使用指南
文章目录 前言主体1. **Line 控件概述**2. **使用场景**3. **控件的样式**4. **设置点**5. **自动大小**6. **y 坐标反转**7. **事件处理**8. **示例代码** 总结 前言 在图形界面设计中,直线绘制是非常常见且重要的功能之一,尤其是在需要进行图形表示、…...

“撬锁开灯”是权力任性和法治意识淡薄的表现!
2月3日深夜,山西大同古城一网友岳先生发视频称,因店铺未按要求开灯,被多名工作人员撬锁进店将灯打开。岳先生表示,他因家中有刚满月的孩子无法前往开灯,结果就遭遇了此事。岳先生报警后,派出所称“管不了”。岳先生就选择将室内监控拍摄到的画面发布到…...

红歌会网给大家拜年暨春节遭受多轮高强度攻击的通告
通 告蛇年已到,再给我们的诸位读者们、作者们以及常年支持红歌会网的前辈们、同志们拜个年!祝大家新春康健,全家幸福!本来时至春节,大家高高兴兴回家过年之际,不想再公布此事,但没想到这两天他们再次搞破坏,加上前面一些同志和读者们也在询问,故通告大家。除夕前夕,红…...

女权大V打拳打到《哪吒之魔童闹海 》?我看你们是神经错乱了!
最近打开手机,各种乱七八糟的文章和信息扑面而来。原来是《哪吒2之魔童闹海》火了,结果一群所谓的“女权分子”开始大放厥词,又是喊着“父权压迫”,又是指责“性别歧视”。更可笑的是,一些微博大V还跳出来为电影中…...

恐无人生还,美两机相撞最新进展
据新华社消息,美国华盛顿特区官员30日说,发生在29日的两机相撞事故中恐无人生还。据俄新社、塔斯社报道,当地时间1月30日,俄罗斯总统新闻秘书佩斯科夫证实称,在美国华盛顿坠毁的飞机上载有俄罗斯的花样滑冰运动员和其他俄罗斯公民。同日早些时间,多家俄媒从知情人士获悉,…...

翁淮南 杨超:春节的历史渊源
春节是从中华大地上生长出来的独特中华文明标识。当我们走进历史深处,回望收藏在博物馆里的文物、陈列在广阔大地上的遗产、书写在古籍里的文字,春节形成和发展的脉络便如画卷般展开。春节呈现了中国人源于自然的时空观。春节文化深刻地体现了人与自然和谐共生的自然伦理价值…...

国家统计局:2024年中国GDP同比增长5%
今天(1月17日)上午,国务院新闻办公室举行新闻发布会介绍2024年国民经济运行情况。国家统计局相关负责人介绍,初步核算,2024年全年,国内生产总值1349084亿元,按不变价格计算,比上年增长5.0%。国家统计局全文如下:2024年经济运行稳中有进 主要发展目标顺利实现2024年,面…...