包管理工具 nvm npm nrm yarn cnpm npx pnpm详解

包管理工具 nvm npm yarn cnpm npx pnpm

npm、cnpm、yarn、pnpm、npx、nvm的区别:https://blog.csdn.net/weixin_53791978/article/details/122533843
npm、cnpm、yarn、pnpm、npx、nvm的区别:https://blog.csdn.net/weixin_53791978/article/details/122533843
包管理工具:npm、npx、yarn、cnpm、pnpm:https://blog.csdn.net/March_Q__/article/details/126675476
包管理工具详解npm 、 yarn 、 cnpm 、 npx 、 pnpm:https://blog.csdn.net/weixin_52851967/article/details/128620143
第六节:pnpm剖析(简介、硬/软链接、实操、配置、原理:https://www.cnblogs.com/yaopengfei/p/17203131.html

1. nvm

nvm npm cnpm nrm yarn pnpm:https://www.jianshu.com/p/c62023b475a7

1.1 nvm 安装

  1. 作用
  • 进行nodejs版本控制
  1. 下载
  • https://github.com/coreybutler/nvm-windows/releases
  1. 安装
  • nvm-noinstall.zip: 这个是绿色免安装版本,但是使用之前需要配置
  • nvm-setup.zip:这是一个安装包,下载之后点击安装,无需配置就可以使用,方便。
  • Source code(zip):zip压缩的源码
  • Sourc code(tar.gz):tar.gz的源码,一般用于Linux系统

安装步骤属于傻瓜式操作,一直next就行了,在此不做截图演示,其中有一步是选择已安装的nodejs的路径

  1. 配置路径和下载源

在nvm安装路径下 setting.txt 文件中配置如下信息:

#设置nvm路径
nvm root E:\JAVA\nvm
#设置nvm路径(相当于setting.txt中的root:):
nvm node_mirror https://npm.taobao.org/mirrors/node/
#设置nodejs路径(相当于setting.txt中的path:):
nvm npm_mirror https://npm.taobao.org/mirrors/npm/
  1. 测试

在电脑命令行输入nvm出现如下信息代表安装成功

image-20230816031631883

  1. 常用命令
命令说明
nvm list查看已经安装的版本
nvm list installed查看已经安装的版本
nvm list available查看网络可以安装的版本
nvm arch查看当前系统的位数和当前nodejs的位数
nvm install [arch]安装指定版本的node 并且可以指定平台 version 版本号 arch 平台
nvm on打开nodejs版本控制
nvm off关闭nodejs版本控制
nvm proxy [url]查看和设置代理
nvm node_mirror [url]设置或者查看setting.txt中的node_mirror,如果不设置的默认是 https://nodejs.org/dist/
nvm npm_mirror [url]设置或者查看setting.txt中的npm_mirror,如果不设置的话默认的是 https://github.com/npm/npm/archive/
nvm uninstall卸载指定的版本
nvm use [version] [arch]切换指定的node版本和位数
nvm root [path]设置和查看root路径
nvm version查看当前的版本

1.2 node npm 安装

#安装指定版本node
nvm install 14.18.0
#使用指定版本node
nvm use 14.18.0
#卸载指定版本node
nvm uninstall 14.18.0
#查看已安装的node版本
nvm list

#安装激活使用版本后查看 node 和 npm 版本
node -v
npm -v

npm配置

#查看npm配置信息
npm config list
#全局npm,修改npm的包的全局安装路径
npm config set prefix "E:\JAVA\nvm\v14.18.0"
#修改npm的包的全局cache位置
npm config set cache "E:\JAVA\nvm\v14.18.0\npm-cache"
#全局安装npm
npm install npm -g

#配置环境变量
在系统变量中添加 NPM_HOME=E:\JAVA\nvm\v14.18.0, path中添加%NPM-HOME%

#常用命令
#g全局 D开发环境 S生产环境
npm install xxx -g -D -S
#卸载依赖
npm uninstall xxx
#查看下载源
npm config get registry
#修改为taobao源
npm config set registry https://registry.npm.taobao.org

1.3 cnpm 安装

npm install -g cnpm --registry=http://r.cnpmjs.org
npm install -g cnpm --registry=https://registry.npm.taoba.org

1.4 nrm 安装

作用

  • nrm(npm registry manager )是npm的镜像源管理工具,有时候国外资源太慢,使用这个就可以快速地在 npm 源间切换
#安装(自测安装后不能使用)
npm install nrm -g
#使用
nrm ls
#bug: 不出现星号
#C:\dev\dev-tools\npm\node_modules\nrm\cli.js   && 改为 ||
if (hasOwnProperty(customRegistries, name) && (name in registries || customRegistries[name].registry === registry.registry)) {
  registry[FIELD_IS_CURRENT] = true;
  customRegistries[name] = registry;
}
if (hasOwnProperty(customRegistries, name) || (name in registries || customRegistries[name].registry === registry.registry)) {
  registry[FIELD_IS_CURRENT] = true;
  customRegistries[name] = registry;
}

20669848-8993ec15d097792b

1.5 yarn 安装

#安装
npm install yarn -g

#查看源
yarn config get registry
#修改为taobao源
yarn config set registry https://registry.npmmirror.com

#查看配置列表
yarn config list
#查看 yarn 全局bin位置(prefix)
yarn global bin
#查看 yarn 全局安装位置(folder)
yarn global dir
#查看 yarn 全局cache位置(cache)
yarn cache dir

#改变 yarn 全局bin位置(prefix)
yarn config set prefix "C:\dev\dev-tools\npm\bin"
#改变 yarn 全局安装位置(folder)
yarn config set global-folder "C:\dev\dev-tools\yarn"
#改变 yarn 全局cache位置(cache)
yarn config set cache-folder "C:\dev\dev-tools\yarn-cache"

#初始化
yarn init

yarn add [package]
yarn add [package]@[version]
yarn add [package]@[tag]

#安装所有的依赖包
yarn
yarn install

npm 与 yarn命令比较

image-20230816012631289

1.6 pnpm 安装

#安装
npm i -g pnpm
#pnpm版本
pnpm --version

#列出已缓存的每个包
pnpm cache list
#返回全局缓存位置
pnpm cache dir
#清除缓存
pnpm cache clean

#pnpm全局仓库路径(类似 .git 仓库)
pnpm config set store-dir "D:\dev\dev-tools\.pnpm-store"
#pnpm全局安装路径
pnpm config set global-dir "D:\dev\dev-tools\pnpm-global"
#pnpm全局bin路径
pnpm config set global-bin-dir "D:\dev\dev-tools\nodejs"
#pnpm创建pnpm-state.json文件的目录
pnpm config set state-dir "D:\dev\dev-tools\pnpm"
#pnpm全局缓存路径
pnpm config set cache-dir "D:\dev\dev-tools\nodejs\pnpm\cache"

#安装示例
pnpm install -g @vue/cli
pnpm install -g webpack webpack-cli
pnpm i -g nodemon
pnpm i -g concurrently

2. npm

#安装完node,cmd能运行npm,但是PowerShell无法运行 npm
get-executionpolicy
set-executionpolicy remotesigned
#查看安装了哪些
npm list --depath=0 -g

2.1 概述

  • 包管理工具npm: Node Package Manager,也就是Node包管理器;
  • 如何下载和安装npm工具呢?
  • npm属于node的一个管理工具,所以需要先安装Node;
  • node管理工具:https://nodejs.org/en/,安装Node的过程会自动安装npm工具;
  • npm管理的包可以在哪里查看、搜索呢?
    • https://www.npmjs.org/ 这是安装相关的npm包的官网;

2.2 npm install 命令

#安装某依赖包
npm install xxx
npm i xxx
#卸载某个依赖包:
npm uninstall package
#--save-dev 等同于 -D
npm uninstall package --save-dev
npm uninstall package -D

#强制重新build
npm rebuild
#清除缓存
npm cache clean

npm的命令其实是非常多的:

  • https://docs.npmjs.com/cli-documentation/cli
  • 更多的命令,可以根据需要查阅官方文档

安装npm包分两种情况:

  • 全局安装(global install)npm install webpack -g
  • 项目(局部)安装(local install):npm install webpack

全局安装

依赖包想要实现全局安装 通过指令 npm install 插件包名字 -g

这样就可以在任意层级目录下面执行插件包里面的安装了
比如全局安装yarn:npm install yarn -g

但是很多人对全局安装有一些误会:

  • 通常使用npm全局安装的包都是一些工具包:yarn、webpack等;
  • 并不是类似于 axios、express、koa等只想在项目中使用的库文件;
  • 所以全局安装了之后并不能让我们在所有的项目中使用 axios等库;

局部安装

安装在特定项目的文件夹里面

他只会将插件包放置到当前文件夹下面的node_modules里面

只有当前这个项目才能使用这个插件包,其他项目是使用不了的

局部安装又分为开发依赖和生产依赖

安装指定版本

npm i yarn@0.28.4 安装0.28.4版本的yarn

npm install 原理

很多同学之前应该已经会了 npm install ,但是你是否思考过它的内部原理呢?

  • 执行 npm install它背后帮助我们完成了什么操作?
  • 我们会发现还有一个称之为package-lock.json的文件,它的作用是什么?
  • 从npm5开始,npm支持缓存策略(来自yarn的压力),缓存有什么作用呢?

这是一幅我画出的根据 npm install 的原理图:

4744dd21581f4e22b62a2ac0fbef0abf

npm install会检测是否存在package-lock.json文件:

没有lock文件

  1. 分析依赖关系,这是因为我们可能包会依赖其他的包,并且多个包之间会产生相同依赖的情况;
  2. 从registry仓库中下载压缩包(如果我们设置了镜像,那么会从镜像服务器下载压缩包);
  3. 获取到压缩包后会对压缩包进行缓存(从npm5开始有的);
  4. 将压缩包解压到项目的node_modules文件夹中

有lock文件

  • 检测lock中包的版本是否和package.json中一致(会按照semver版本规范检测);

不一致,那么会重新构建依赖关系,直接会走顶层的流程;

  • 一致的情况下,会去优先查找缓存

没有找到,会从registry仓库下载,直接走顶层流程;

  • 查找到,会获取缓存中的压缩文件,并且将压缩文件解压到node_modules文件夹中;

package-lock.json

package-lock.json文件解析:

  • name:项目的名称;
  • version:项目的版本;
  • lockfileVersion:lock文件的版本;
  • requires:使用requires来跟踪模块的依赖关系;
  • dependencies:项目的依赖
  • 当前项目依赖axios,但是axios依赖follow-redireacts;
  • axios中的属性如下:
    • version表示实际安装的axios的版本;
    • resolved用来记录下载的地址,registry仓库中的位置;
    • requires/dependencies记录当前模块的依赖;
    • integrity用来从缓存中获取索引,再通过索引去获取压缩包文件;

29157e649dfa42cf8a0961bdcf1ebbb9

2.3 版本号管理

semver版本规范是X.Y.Z

版本号就是包名后面的一串数字

  • x.y.z
    x :主版本号(major):做了不兼容的API修改(可能不兼容之前的版本);
    y :次版本号(minor):做了向下兼容的功能性新增(新功能增加,但是兼容之前的版本);
    z :修订号(patch):做了向下兼容的问题修正(没有新功能,修复之前版本的bug);

  • ^和~的区别

    在package.json文件中,每个包后面都有相应的版本号
    x.y.z:表示一个明确的版本号;
    ^x.y.z:表示x是保持不变的,y和z永远安装最新的版本;
    ~x.y.z:表示x和y保持不变,z永远安装最新的版本;

3. npx

npx是npm5.2之后自带的一个命令

npx运用

  • npx可以说是一个比较特殊的命令,使用npx执行某个包时,它会到当前目录的node_modules/.bin目录下查找对应的命令,有的话就会调用本地的包,如果本地没有找到该包,那么它就会临时下载该包,在执行之后立即删除,好处是不占用本地存储,如果遇到一些不常用的包,就比较适合使用这个方法
  • 以yarn为例,那么如何使用项目(局部)的命令,常见的是两种方式:
    • 方式一:修改package.json中的scripts
      “scripts”: {
      “yarnstart”: “yarn --version”
      }
    • 方式二:使用npx
      npx yarn --version

4. yarn

4.1 概述

使用之前需要先安装yarn:npm install yarn -g 全局安装yarn
npm下载比较慢时,又不想更改npm下载地址 ,就可以使用yarn来进行下载其他的依赖包

注意:使用的时候不再是npm install …… 而是yarn add …… 因为他是依托于node

#下载包:
yarn add 包名
#移除包:
yarn remove 包名

#例如
#(安装到开发和生产环境dependencies)
yarn add vue 
#(安装到开发环境devDependencies)
yarn add webpack 
#(移除vue)
yarn remove vue
#(移除webpack)
yarn remove webpakc

4.2 yarn基本使用示例

  1. npm init -y 新建项目并初始化,生成package.json文件

  2. yarn add axios dayjs (包名可连写) 安装插件指令

    • 默认安装到开发和生产依赖(dependencise)
  3. 新建src文件夹,并在src里面新建main.js文件

  • 在main.js文件里面声明常量,并打印
const dayjs = require("dayjs");
console.log(dayjs);
  1. 在package.json文件里面配置指令,在"调试"的下面,有一个"scripts",配置start,后面写 node 空格 路径 注意路径不要出错
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node ./main.js"
},

"start": "node ./src/main.js"
  1. 在控制台运行 yarn start
  • 使用yarn start运行 等同于 node ./main.js运行,在文件夹较多,跳转路径太麻烦时,这个方法就很方便

    • “start”: “node ./main.js”
    • “start”: “node ./src./main.js”
    • “start”: “node ./aaa./main.js”
  • yarn start == yarn run start (run可以省略)

    运行结果如下

6cd4ef6733774971addec57852d9629c

  1. yarn remove 包名 -------- 删除某个包
yarn remove dayjs
yarn remove axios
#连写 
yarn remove dayjs axios

5. cnpm

5.1 概述

安装cnpm :npm i cnpm -g 全局安装

由于一些特殊的原因,某些情况下我们没办法很好的从 https://registry.npmjs.org下载下来一些需要的包,这时可以使用镜像

  • npm config get registry 查看当前下载地址
    • 默认都是国外的服务器:https://registry.npmjs.org/
  • 切换为国内的中国镜像服务器:npm config set registry https://www.npmmirror.com/
    • 切换后课用 npm config get registry 查看是否切换成功
    • 淘宝镜像:https://registry.npm.taobao.org
      淘宝镜像似乎不再维护了,建议使用中国镜像
  • 可能对于一些人来说,并不希望将npm修改为某一镜像
    • 第一,不太希望随意修改npm原本从官方下来包的渠道;
    • 第二,担心某镜像挂了或者不维护了,又要改来改去;
  • 这个时候,我们可以使用cnpm,并且将cnpm设置为中国镜像: 不改变npm的下载地址
  • 也就是说 如果我们使用npm i 包名 就是从国外官网下载安装 如果使用cnpm i 包名 就是从中国镜像服务器仓库下载插件

5.2 cnpm基本使用

#下载某个包
cnpm add 包名
#删除某个包
cnpm remove 包名
#运行配置过的文件
cnpm start

使用方法与yarn区别不大,参考yarn的使用,把yarn写成cnpm就行了

6. pnpm

中文文档:https://www.pnpm.cn/

6.1 概述

  • npm和yarn的问题

    当使用 npm 或 Yarn 时,如果你有 100 个项目,并且所有项目都有一个相同的依赖包,那么, 你在硬盘上就需要保存 100 份该相同依赖包的副本。

  • pnpm运行起来非常的快,超过了npm和yarn

  • pnpm采用了一种巧妙的方法,利用硬链接和符号链接来避免复制所有本地缓存源文件,这是yarn的最大的性能弱点之一

  • 使用链接并不容易,会带来一堆问题需要考虑。

  • pnpm继承了yarn的所有优点,包括离线模式和确定性安装

6.2 什么是pnpm?

f10e95162b224e4c8666c55d40df3bc4

6.3 硬链接和软连接的概念

02529399470244b588fdad9a17eececf

6.4 硬链接和软连接的演练

0618f010ab1941c88ceca8489e4defcb

6.5 pnpm的原理

544ba20ab6eb428fbd46a897e3468ae8

6.6 pnpm创建非扁平的 node_modules 目录

229225b2237a4246b5880ef1e2f2c38c

6.7 pnpm的存储store

3c668e62c7eb4ea696afbe173c2be2f2

6.8 pnpm的安装和使用

#官网提供了很多种方式来安装pnpm:https://www.pnpm.cn/installation
#如果已经安装了Node,Node中有npm,所以我们通过npm安装即可;
#(全局安装pnpm)
npm install pnpm -g  
#通过 npx 安装 pnpm
npx pnpm add -g pnpm    
#一旦安装完 pnpm 之后,就无需使用其它软件包管理器来更新 pnpm 了。 你可以让 pnpm 自己来更新自己,如下所示:
pnpm add -g pnpm

#设置pnpm的磁盘存储目录
pnpm config set store-dir E:\JAVA\pnpm\.pnpm-store
#查看pnpm的安装目录
pnpm store path
#从store中删除当前未被引用的包来释放store的空间
pnpm store prune

pnpm命令类似于前面的 yarn 和 cnpm

npm命令npnm 等价命令
npm initpnpm init
npm installpnpm install
npm install 包名pnpm add 包名
npm install 包名 -Dpnpm add 包名 -D
npm uninstall 包名pnpm remove 包名
npm run < cmd >pnpm < cmd >

更多命令和用法可以参考pnpm的官网:https://pnpm.io/zh/

6.9 pnpm add -g pnpm报错解决

https://blog.csdn.net/zwl5670/article/details/129598244

使用pnpm的时候突然提示我的pnpm不是最新版本,提示执行“pnpm add -g pnpm”可以更新到最新版本。
然而执行“pnpm add -g pnpm”,结果出现如下提示。

ERROR  Unable to find the global bin directory
Run "pnpm setup" to create it automatically, 
or set the global-bin-dir setting, 
or the PNPM_HOME env variable. The global bin directory should be in the PATH.

执行pnpm setup依然报错。
看提示有“set the global-bin-dir setting”、“PNPM_HOME”、 “PATH”。然后进行如下设置:

  1. 在命令行中执行以下命令

e8779165e310424e9498c6f8a3939c31

#pnpm全局仓库路径(类似 .git 仓库)
pnpm config set store-dir "E:\JAVA\pnpm\store"
#pnpm全局安装路径
pnpm config set global-dir "E:\JAVA\pnpm\global"
#pnpm全局bin路径
pnpm config set global-bin-dir "E:\JAVA\pnpm\global-bin"
#pnpm创建pnpm-state.json文件的目录
pnpm config set state-dir "E:\JAVA\pnpm\state"
#pnpm全局缓存路径
pnpm config set cache-dir "E:\JAVA\pnpm\cache"
  1. 在环境变量中配置。pnpm全局bin路径

78286127bb4942488276bf03c53841c9

  1. 执行pnpm add -g pnpm,没有报错信息

  2. 执行pnpm -v 已经是最新版本了

    c3f26be5e4b4414f8673501c07097e1d

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/75931.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实验三 图像分割与描述

一、实验目的&#xff1a; &#xff08;1&#xff09;进一步掌握图像处理工具Matlab&#xff0c;熟悉基于Matlab的图像处理函数。 &#xff08;2&#xff09;掌握图像分割方法&#xff0c;熟悉常用图像描述方法。 二、实验原理 1.肤色检测 肤色是人类皮肤重要特征之一&#xff…

【wiki】电竞助手掉落提醒 EsportsHelper「Webhook」「钉钉」「饭碗警告」「企业微信」「Discord」

介绍 本项目链接 Github电竞助手链接 github上项目电竞助手(EsportsHelper)的掉落提醒配置教程,当有掉宝的时候会发送你信息提示. 至于这个脚本是怎么使用的简单说一下,就是通过自动观看英雄联盟直播 从而获取奖励(仅限直营服),有兴趣的可以去github上看readme,非常详细,支持…

ppt怎么压缩?试试这样压缩文件

当PPT文件体积过大时&#xff0c;打开的速度就会很慢&#xff0c;演示的时候刘程度也会受到影响&#xff0c;其次&#xff0c;现在很多平台对于上传的文件是有大小限制的&#xff0c;比如超过100M的文件就无法上传、发送等等&#xff0c;那么&#xff0c;怎么才能压缩PPT文件呢…

云曦暑期学习第五周——2022美亚杯个人赛

I.案件详情 于2022年10月&#xff0c;有市民因接获伪冒快递公司的电邮&#xff0c;不慎地于匪徒架设的假网站提供了个人信用咭资料导致经济损失。警方追查下发现当中一名受骗市民男子李大輝 (TaiFai) 的信用卡曾经被匪徒在区内的商舖购物。 后来警方根据IP地址&#xff0c;锁定…

Spring Boot @Validated 验证注解的使用

1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId> </dependency> 2、使用 2.1、非对象参数 参数如果是非对象格式&#xff0c;需要在controller类上面添…

高等数学教材重难点题型总结(二)导数与微分

本章重点题目较少&#xff0c;除了*标题页没什么特别难的&#xff0c;本帖出于总结性的角度考虑并未囊概全部的*标&#xff0c;最后会出一期*标题的全部内容整理&#xff0c;在攻克重难点的基础上更上一层楼。 1.根据定义求某点处的导数值 2.通过定义证明导数 3.左右导数的相关…

vue基础知识四:Vue实例挂载的过程

一、思考 我们都听过知其然知其所以然这句话 那么不知道大家是否思考过new Vue()这个过程中究竟做了些什么&#xff1f; 过程中是如何完成数据的绑定&#xff0c;又是如何将数据渲染到视图的等等 一、分析 首先找到vue的构造函数 源码位置&#xff1a;src\core\instance\…

CentOS防火墙操作:开启端口、开启、关闭、配置

一、基本使用 启动&#xff1a; systemctl start firewalld 关闭&#xff1a; systemctl stop firewalld 查看状态&#xff1a; systemctl status firewalld 开机禁用 &#xff1a; systemctl disable firewalld 开机启用 &#xff1a; systemctl enable firewalld systemctl是…

栈存储结构详解

目录 栈存储结构详解 进栈和出栈 栈的具体实现 栈的应用 什么是队列&#xff08;队列存储结构&#xff09; 栈存储结构详解 同顺序表和链表一样&#xff0c;栈也是用来存储逻辑关系为 "一对一" 数据的线性存储结构&#xff0c;如图 1 所示。 图 1 栈存储结构示意…

Tomcat的部署及优化(多实例和动静分离)

目录 绪论 1、tomact 1.1 核心组件 1.2 什么是 servlet 1.3 什么是 JSP? 1.4 Tomcat 功能组件结构 1.5 Tomcat 请求过程 2、Tomcat 服务部署 2.1 tomcat自身优化&#xff1a; 2.2 内核优化 2.3 jvm 2.3.1 jvm配置 2.3.2 Tomcat配置JVM参数 2.3.3 jvm优化 3、tom…

Labview选项卡之实现被选择选项卡工作

文章目录 前言一、使用选项卡二、实现被选择选项卡工作1、需求2、分析3、实现①、前面板②、程序框图 三、效果展示四、源码自取 前言 有些时候&#xff0c;我们做界面&#xff0c;需要好多个界面切换。如果是同一个 VI 里界面切换&#xff0c;一般都是选项卡了。切换不同选项…

OJ练习第147题——字符串中的查找与替换

字符串中的查找与替换 力扣链接&#xff1a;833. 字符串中的查找与替换 题目描述 你会得到一个字符串 s (索引从 0 开始)&#xff0c;你必须对它执行 k 个替换操作。替换操作以三个长度均为 k 的并行数组给出&#xff1a;indices, sources, targets。 要完成第 i 个替换操…

【MySQL--->数据库操作】

文章目录 [TOC](文章目录) 一、操作语句1.增2.删3.改4.查5.备份 二、字符集与校验规则 一、操作语句 1.增 语句格式:create database [if no exists]数据库名[create_specification [,create_specification] …]; 中括号内是可选项,if no exists是指如果数据库不存在就创建,存…

【每日一题】1572. 矩阵对角线元素的和

【每日一题】1572. 矩阵对角线元素的和 1572. 矩阵对角线元素的和题目描述解题思路 1572. 矩阵对角线元素的和 题目描述 给你一个正方形矩阵 mat&#xff0c;请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1&a…

jenkins自动化构建保姆级教程(持续更新中)

1.安装 1.1版本说明 访问jenkins官网 https://www.jenkins.io/&#xff0c;进入到首页 点击【Download】按钮进入到jenkins下载界面 左侧显示的是最新的长期支持版本&#xff0c;右侧显示的是最新的可测试版本&#xff08;可能不稳定&#xff09;&#xff0c;建议使用最新的…

为什么商业基础软件需要开源

Bytebase 本身是一家商业软件公司&#xff0c;而作为最核心资产的代码从 Day 0 却是开源的。同时我们还是 star-history.com 的运营者&#xff0c;大家在各种开源渠道会看到它生成的图&#xff1a; 一直以来&#xff0c;常会被别人问起的一个问题&#xff0c;就是为什么 Byteba…

RocketMQ部署 Linux方式和Docker方式

一、Linux部署 准备一台Linux机器&#xff0c;部署单master rocketmq节点 系统ip角色模式CENTOS10.4.7.126Nameserver,brokerMaster 1. 配置JDK rocketmq运行需要依赖jdk&#xff0c;安装步骤略。 2. 下载和配置 从官网下载安装包 https://rocketmq.apache.org/zh/downlo…

青翼科技自研2路250MSPS DA回放FMC子卡模块

FMC150_V30是一款基于VITA57.1规范的2路125MSPS采样率16位分辨率AD采集、2路250MSPS采样率16位分辨率DA回放FMC子卡模块。该模块遵循VITA57.1规范&#xff0c;可直接与符合VITA57.1规范的FPGA载卡配合使用&#xff0c;板卡ADC器件采用ADI公司的AD9268芯片&#xff0c;板卡DAC器…

LeetCode 33题:搜索旋转排序数组

目录 题目 思路 代码 暴力解法 分方向法 二分法 题目 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 …

【Linux】IO多路转接——epoll

目录 epoll初识 epoll的相关系统调用 epoll工作原理 epoll服务器 epoll的优点 epoll工作方式 对比LT和ET epoll初识 epoll也是系统提供的一个多路转接接口。 epoll系统调用也可以让我们的程序同时监视多个文件描述符上的事件是否就绪&#xff0c;与select和poll的定位是…