【前端知识】nodejs项目配置package.json深入解读
package.json详细解读
- 文件解读
- 一、文件结构
- 二、字段详解
- 三、使用场景
- 四、注意事项
- 组件版本匹配规则
文件解读
package.json
文件是 Node.js 项目中的一个核心配置文件,它位于项目的根目录下,并包含项目的基本信息、依赖关系、脚本、版本等内容。以下是对 package.json
文件的详细说明:
一、文件结构
package.json
文件是一个 JSON 格式的文件,通常包含以下主要字段:
- name:项目的名称,通常与项目的仓库名称一致。名称应简洁明了,避免使用空格和特殊字符,且不能与 npm 仓库中的其他项目重名。
- version:项目的版本号,遵循语义化版本规范(SemVer)。版本号通常包括主版本号、次版本号和修订号,如
1.0.0
。 - description:项目的简短描述,概述了项目的主要功能和用途。
- author:项目的作者信息,可以包括姓名、邮箱和网址等。
- private:是否为私有项目。设为
true
时,该项目不能发布到 npm 仓库。 - scripts:定义了一系列的脚本命令,可以通过
npm run <script-name>
来执行。常见的脚本包括start
(启动项目)、test
(运行测试)等。 - dependencies:项目运行所依赖的包列表。这些依赖项会在项目安装时被自动安装到
node_modules
文件夹下。 - devDependencies:项目开发过程中依赖的包列表,如测试工具、构建工具等。这些依赖项仅在开发阶段需要,不会在生产环境中使用。
- license:项目的许可证类型,表示开源且允许免费使用的条件。
- repository:项目代码库的地址和类型,通常是一个 Git 仓库的 URL。
- bugs:用于报告项目问题的 URL,通常是一个在线问题跟踪系统的地址。
- homepage:项目的主页 URL,通常是一个在线文档或演示网站的地址。
- packageManager:指定项目使用的包管理器及其版本,如
pnpm
、npm
或yarn
。 - engines:指定项目支持的 Node.js 版本和其他相关环境的版本要求。
二、字段详解
-
name
- 类型:字符串
- 示例:
"name": "my-nodejs-app"
- 说明:项目的唯一标识符,用于 npm 仓库中搜索和引用。
-
version
- 类型:字符串
- 示例:
"version": "1.0.0"
- 说明:遵循语义化版本控制(SemVer)规范,用于标识项目的不同版本。
-
description
- 类型:字符串
- 示例:
"description": "A sample Node.js application"
- 说明:项目的简短描述,用于 npm 仓库中的项目介绍。
-
author
- 类型:字符串或对象
- 示例:
"author": "Your Name"
或{"name": "Your Name", "email": "your-email@example.com", "url": "http://yourwebsite.com"}
- 说明:项目的作者信息,可以包括姓名、邮箱和网址等。
-
private
- 类型:布尔值
- 示例:
"private": true
- 说明:设置为
true
时,防止该项目被发布到 npm 仓库。
-
scripts
- 类型:对象
- 示例:
"scripts": {"start": "node index.js","test": "echo \"Error: no test specified\" && exit 1" }
- 说明:定义了一系列的脚本命令,可以通过
npm run <script-name>
来执行。
-
dependencies 和 devDependencies
- 类型:对象
- 示例:
"dependencies": {"express": "^4.17.1" }, "devDependencies": {"mocha": "^8.3.2" }
- 说明:分别列出了项目运行和开发过程中所需的依赖包及其版本号。
-
license
- 类型:字符串或对象
- 示例:
"license": "ISC"
或{"type": "ISC", "url": "https://opensource.org/licenses/ISC"}
- 说明:项目的许可证类型,表示开源且允许免费使用的条件。
-
repository
- 类型:对象
- 示例:
"repository": {"type": "git","url": "https://github.com/yourusername/yourproject.git" }
- 说明:项目代码库的地址和类型,通常是一个 Git 仓库的 URL。
-
bugs 和 homepage
- 类型:对象或字符串
- 示例:
"bugs": {"url": "https://github.com/yourusername/yourproject/issues" }, "homepage": "https://github.com/yourusername/yourproject"
- 说明:分别用于报告项目问题的 URL 和项目的主页 URL。
-
packageManager
- 类型:字符串
- 示例:
"packageManager": "pnpm@9.0.6"
- 说明:指定项目使用的包管理器及其版本。
-
engines
- 类型:对象
- 示例:
"engines": {"node": ">=16.0.0","pnpm": ">=8.6.0" }
- 说明:指定项目支持的 Node.js 版本和其他相关环境的版本要求。
三、使用场景
- 初始化项目:在创建一个新的 Node.js 项目时,可以通过
npm init
命令生成package.json
文件,并根据提示填写项目相关信息。 - 安装依赖:可以通过
npm install <package-name> --save
或npm install <package-name> --save-dev
命令安装新的依赖,并将其添加到package.json
文件中的dependencies
或devDependencies
字段。 - 运行脚本:可以通过
npm run <script-name>
命令运行package.json
中定义的脚本。 - 发布项目:当项目完成后,可以通过
npm publish
命令将项目发布到 npm 仓库(如果private
字段为false
)。
四、注意事项
- 保持文件整洁:定期清理不再需要的依赖项,避免
package.json
文件变得过于庞大和复杂。 - 使用语义化版本控制:确保项目的稳定性和可维护性,遵循语义化版本控制规范来更新版本号。
- 利用 npm scripts 简化开发流程:将常用的命令封装成脚本,减少重复工作。
- 定期检查并更新依赖:避免安全漏洞和兼容性问题,确保项目的依赖项是最新的。
综上所述,package.json
文件是 Node.js 项目中不可或缺的一部分,它提供了项目的基本信息、依赖关系、脚本命令等关键配置。通过合理利用这些配置,开发者可以构建出更加高效、稳定和用户友好的 Node.js 应用。
组件版本匹配规则
在Node.js项目中,组件(通常称为npm包或模块)的版本匹配规则是通过package.json
文件中的dependencies
或devDependencies
字段来指定的。这些规则基于SemVer(语义化版本控制)规范,并允许你指定所需的包版本范围。以下是一些常见的版本匹配规则:
-
精确版本:
当你需要某个特定版本的包时,可以直接指定版本号,不带任何前缀或操作符。例如:"dependency-name": "1.2.3"
这将确保安装的是该精确版本的包。
-
波浪号(~):
波浪号允许你安装指定主版本和次版本下的最新修订版本。例如:"dependency-name": "~1.2.3"
这将允许安装
1.2.x
中的最新版本,但不会升级到1.3.0
或更高版本。 -
脱字符(^):
脱字符允许你安装指定主版本下的最新次版本和修订版本。但是,它有一个特殊的行为:当主版本号为0时,它将表现得像波浪号一样(即允许修订版本的更新,但不允许次版本的更新)。对于非0的主版本号,它将允许次版本和修订版本的更新。例如:"dependency-name": "^1.2.3"
这将允许安装
1.x.x
中的最新版本,但不会升级到2.0.0
或更高版本。如果主版本号是0(例如0.2.3
),则^0.2.3
将等同于~0.2.3
。 -
大于、小于、大于等于、小于等于:
你可以使用>
、<
、>=
、<=
来指定版本范围。例如:"dependency-name": ">1.2.3" "dependency-name": "<2.0.0" "dependency-name": ">=1.2.3 <=2.0.0"
这些规则允许你更灵活地指定所需的版本范围。
-
范围(使用连字符-或空格):
你可以使用连字符-
或空格来指定一个包含两端的版本范围。例如:"dependency-name": "1.2.3 - 2.0.0" "dependency-name": "1.2.3 2.0.0" // 注意:这种写法在某些情况下可能不被支持,建议使用连字符
这将允许安装
1.2.3
到2.0.0
(包括两端)之间的任何版本。但是,请注意,使用空格作为分隔符在某些npm版本中可能不被支持,因此建议使用连字符-
。 -
*
和latest
:
虽然你可以使用*
或latest
来指定总是安装最新版本,但这通常不推荐用于生产环境,因为它可能导致不可预测的行为。 -
x
范围:
在某些情况下,你可以使用x
、X
或*
来代表任意数字。但是,这种用法现在已经被废弃,并且可能会导致npm发出警告。建议使用上述更明确的版本范围规则。 -
||
(逻辑或):
你可以使用||
来指定多个版本范围中的任何一个。例如:"dependency-name": "^1.2.3 || ^2.0.0"
这将允许安装满足
^1.2.3
或^2.0.0
条件的任何版本。 -
url
:
你也可以直接指定一个包的tarball URL作为版本号,这在某些情况下很有用,比如当你需要从一个私有的或定制的源安装包时。
请注意,npm在处理版本范围时会进行一些逻辑运算,以确保安装的版本与指定的范围兼容。此外,package-lock.json
文件或yarn.lock
文件(如果你使用Yarn)将帮助确保团队成员之间的一致性,因为它们记录了安装时的确切版本。
相关文章:
【前端知识】nodejs项目配置package.json深入解读
package.json详细解读 文件解读一、文件结构二、字段详解三、使用场景四、注意事项 组件版本匹配规则 文件解读 package.json 文件是 Node.js 项目中的一个核心配置文件,它位于项目的根目录下,并包含项目的基本信息、依赖关系、脚本、版本等内容。以下是…...
51c嵌入式~IO合集2
我自己的原文哦~ https://blog.51cto.com/whaosoft/11697814 一、STM32串口通信基本原理 通信接口背景知识 设备之间通信的方式 一般情况下,设备之间的通信方式可以分成并行通信和串行通信两种。并行与串行通信的区别如下表所示。 串行通信的分类 1、按照数据传…...
在应用启动时,使用 UniApp 提供的 API 检查和请求权限。
在使用 UniApp 开发 App 时,如果你需要在应用启动时提示用户获取本地媒体权限,可以按照以下步骤操作: 1. 明确需要的权限 要访问本地媒体(如相机、麦克风或文件存储),需要申请以下权限: Andr…...
前端知识点---伪数组是什么 , 伪数组如何转换为真数组(Javascript)
伪数组是什么 , 伪数组如何转换为真数组(Javascript) 在 JavaScript 中,伪数组对象是具有类似数组特性的对象,但并不是数组(即不继承 Array.prototype)。这些对象通常有一个 length 属性以及以数字索引为键的属性,但不…...
嵌入式 UI 开发的开源项目推荐
嵌入式开发 UI 难吗?你的痛点我懂!作为嵌入式开发者,你是否也有以下困扰?设备资源太少,功能和美观只能二选一?调试效率低,每次调整都要反复烧录和测试?开发周期太长,让你…...
《智能指针频繁创建销毁:程序性能的“隐形杀手”》
在 C编程的世界里,智能指针无疑是管理内存资源的得力助手。它们为我们自动处理内存的分配与释放,极大地减少了因手动管理内存而可能引发的诸如内存泄漏、悬空指针等棘手问题。然而,就像任何工具都有其两面性一样,智能指针在带来便…...
28.<Spring博客系统⑤(部署的整个过程(CentOS))>
引入依赖 Spring-boot-maven-plugin 用maven进行打包的时候必须用到这个插件。看看自己pom.xml中有没有这个插件 并且看看配置正确不正常。 注:我们这个项目打的jar包在30MB左右。 <plugin><groupId>org.springframework.boot</groupId><artif…...
mongodb多表查询,五个表查询
需求是这样的,而数据是从mysql导入进来的,由于mysql不支持数组类型的数据,所以有很多关联表。药剂里找药物,需要药剂与药物的关联表,然后再找药物表。从药物表里再找药物与成分关联表,最后再找成分表。 这里…...
服务器端渲染 (SSR) 与客户端渲染 (CSR)
嘿程序员!我们都知道,新时代的 Javascript 已经彻底改变了现代网站的结构和用户体验。如今,网站的构建更像是一个应用程序,伪装成一个能够发送电子邮件、通知、聊天、购物、支付等的网站。今天的网站是如此先进、互动,…...
【已解决】“EndNote could not connect to the online sync service”问题的解决
本人不止一次在使用EndNote软件时遇到过“EndNote could not connect to the online sync service”这个问题。 过去遇到这个问题都是用这个方法来解决: 这个方法虽然能解决,但工程量太大,每次做完得歇半天身体才能缓过来。 后来再遇到该问…...
HTML5拖拽API学习 托拽排序和可托拽课程表
文章目录 前言拖拽API核心概念拖拽式使用流程例子注意事项综合例子🌰 可拖拽课程表拖拽排序 前言 前端拖拽功能让网页元素可以通过鼠标或触摸操作移动。HTML5 提供了标准的拖拽API,简化了拖放操作的实现。以下是拖拽API的基本使用指南: 拖拽…...
sed使用扩展正则表达式时, -i 要写在 -r 或 -E 的后面
sed使用扩展正则表达式时, -i 要写在 -r 或 -E 的后面 前言 -r 等效 -E , 启用扩展正则表达式 -E是新叫法,更统一,能增强可移植性 , 但老系统,比如 CentOS-7 的 sed 只能用 -r ### Ubuntu24.04-E, -r, --regexp-extendeduse extended regular expressions in the script(fo…...
CSS中Flex布局应用实践总结
① 两端对齐 比如 要求ul下的li每行四个,中间间隔但是需要两段对齐,如下图所示: 这是除了基本的flex布局外,还需要用到:nth-of-type伪类来控制每行第一个与第四个的padding。 .hl_list{width: 100%;display: flex;align-items…...
【前端】CSS修改div滚动条样式
示例 分别是滚动条默认样式和修改后的样式 代码 <div class"video-list"><div class"list-item" onclick"videoinfo(100)"><img src"/index/images/coverimg/方和谦.png"><div class"txt">国医大…...
鸿蒙多线程开发——线程间数据通信对象02
1、前 言 本文的讨论是接续鸿蒙多线程开发——线程间数据通信对象01的讨论。在上一篇文章中,我们讨论了常规的JS对象(普通JSON对象、Object、Map、Array等)、ArrayBuffer。其中讨论了ArrayBuffer的复制传输和转移传输方式。 下面,我们将讨论SharedArra…...
Kotlin的data class
在 Kotlin 中,data class 是一种专门用来存储数据的类。与普通类相比,data class 提供了简化数据存储的语法,并且自动生成了一些常用的方法,例如 toString()、equals()、hashCode() 和 copy()。 1. 定义 data class data class …...
Proxy 在 JavaScript的用法
Proxy 是 JavaScript 提供的一个构造函数,用于创建一个“代理对象”。这个代理对象可以拦截目标对象的基本操作,例如读取属性、赋值、删除、调用函数等。通过它,我们可以修改或扩展对象的默认行为。 Proxy 的基本语法 const proxy = new Proxy(target, handler);target:被…...
vue3的attr透传属性详解和使用法方式。以及在css样式的伪元素中实现
在 Vue 3 和 TypeScript 中,属性透传(attr pass-through)是指将组件的属性传递到其根元素或某个子元素中。这个概念在开发可复用的组件时非常有用,尤其是当你希望将父组件的属性动态地传递给子组件的某个 DOM 元素时。 在 Vue 3 …...
《人工智能深度学习的基本路线图》
《人工智能深度学习的基本路线图》 基础准备阶段 数学基础: 线性代数:深度学习中大量涉及矩阵运算、向量空间等概念,线性代数是理解和处理这些的基础。例如,神经网络中的权重矩阵、输入向量的运算等都依赖于线性代数知识。学习内容…...
Matlab 答题卡方案
在现代教育事业的飞速发展中,考试已经成为现代教育事业中最公平的方式方法,而且也是衡量教与学的唯一方法。通过考试成绩的好与坏,老师和家长可以分析出学生掌握的知识多少和学习情况。从而老师可以了解到自己教学中的不足来改进教学的方式方…...
[Unity]TileMap开发,TileMap地图缝隙问题
环境: windows11 unity 2021.3.14f1c1 tilemap使用的图是美术已经拼接到一起的整图,块与块之间没有留缝隙 问题: TileMap地图直接在Unity中使用时,格子边缘会出现缝隙,移动或缩放地图时较明显。 解决方案&#x…...
pnpm : 无法加载文件 D:\Tool\environment\NodeAndNvm\node\pnpm.ps1,因为在此系统上禁止运行脚本。
问题 在终端(cmd)输入 pnpm -v,报错如下 pnpm : 无法加载文件 D:\Tool\environment\NodeAndNvm\node\pnpm.ps1,因为在此系统上禁止运行脚本。解决 1. 在终端输入get-ExecutionPolicy(查看执行策略/权限) 输出如下: # (受限的) Restricte…...
redis的map底层数据结构 分别什么时候使用哈希表(Hash Table)和压缩列表(ZipList)
在Redis中,Hash数据类型的底层数据结构可以是压缩列表(ZipList)或者哈希表(HashTable)。这两种结构的使用取决于特定的条件: 1. **使用ZipList的条件**: - 当Hash中的数据项(即f…...
通达OA前台submenu.php存在SQL注入漏洞(CVE-2024-10600)
通达OA前台submenu.php存在SQL注入漏洞(CVE-2024-10600) pda/appcenter/submenu.php 未包含inc/auth.inc.php且 $appid 参数未用’包裹导致前台SQL注入 影响范围 v2017-v11.6 fofa app"TDXK-通达OA" && icon_hash"-759108386"poc http://url…...
Flutter:photo_view图片预览功能
导入SDK photo_view: ^0.15.0单张图片预览,支持放大缩小 import package:flutter/material.dart; import package:photo_view/photo_view.dart;... ...class _MyHomePageState extends State<MyHomePage>{overrideWidget build(BuildContext context) {return…...
C++结构型设计模式之使用抽象工厂来创建和配置桥接模式的例子
下面是一个使用抽象工厂模式来创建和配置桥接模式的示例,场景是创建不同操作系统的窗口(Window)及其对应的实现(WindowImpl)。我们将通过抽象工厂来创建不同操作系统下的窗口和实现。 代码示例 #include <iostrea…...
智能合约运行原理
点个关注吧!! 用一句话来总结,智能合约就像是一个自动售货机:你投入硬币(触发条件),选择商品(执行合约),然后机器就会自动给你商品(执行结果&…...
Unity3D基于ECS的游戏逻辑线程详解
前言 Unity3D是一款非常流行的游戏开发引擎,其采用的是组件实体系统(ECS)架构,这种架构可以让游戏开发者更加高效地管理游戏逻辑线程。本文将详细介绍Unity3D基于ECS的游戏逻辑线程,并给出技术详解以及代码实现。 对…...
GIT 操作
全局设置 git config --global user.name "用户名" git config --global user.email "用户邮箱" 创建仓库 mkdir 项目目录 cd 项目目录 git init touch README.md git add README.md git commit -m "first commit" git remote add origin GIT…...
佛山三水戴尔R740服务器黄灯故障处理
1:佛山三水某某大型商场用户反馈一台DELL PowerEdge R740服务器近期出现了黄灯警告故障,需要冠峰工程师协助检查故障灯原因。 2:工程师协助该用户通过笔记本网线直连到服务器尾部的IDRAC管理端口,默认ip 192.168.0.120 密码一般在…...
系统性能优化方法论详解:从理解系统到验证迭代
在当今的企业级和云计算环境中,系统性能优化已成为提升竞争力的关键因素。本文将对系统优化的步骤进行深入解析,帮助读者系统化地进行性能优化,从而显著提升系统的整体表现。 流程概述: 系统性能优化的流程可以分为以下几个关键步骤&#x…...
241120学习日志——[CSDIY] [InternStudio] 大模型训练营 [09]
CSDIY:这是一个非科班学生的努力之路,从今天开始这个系列会长期更新,(最好做到日更),我会慢慢把自己目前对CS的努力逐一上传,帮助那些和我一样有着梦想的玩家取得胜利!!&…...
MySQL创建和管理触发器
1.在教务管理系统数据库d_eams的course表中,创建一个插入事件触发器tr_course,添加一条课程信息时,显示提示信息。 delimiter %% create trigger tr_course after insert on course for each row begin set tr_i 操作成功!; end…...
uniapp rpx兼容平板
问题: 使用uniapp开发平板端时, rpx/upx 内容过小, 没有适应屏幕 原因: uniapp 默认支持最大设备宽度为960px 而平板宽度超出了960 uniapp官方文档https://uniapp.dcloud.io/collocation/pages?idglobalstyle 解决: // pages.json 文件: {//..."globalSt…...
mysql 唯一键
在数据库中,唯一键(Unique Key)是一种约束条件,用于确保表中的某一列或多列组合的数据具有唯一性。这意味着在这列或这些列中不能有两个相同的值。唯一键的主要目的是保证数据的完整性和准确性,防止重复记录的插入。 …...
C++设计模式行为模式———迭代器模式
文章目录 一、引言二、迭代器模式三、总结 一、引言 迭代器模式是一种行为设计模式, 让你能在不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素。C标准库中内置了很多容器并提供了合适的迭代器,尽管我们不…...
Flutter:SlideTransition位移动画,Interval动画延迟
配置vsync,需要实现一下with SingleTickerProviderStateMixinclass _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin{// 定义 AnimationControllerlate AnimationController _controller;overridevoid initState() {super.…...
Ruby Socket 编程
Ruby Socket 编程 Ruby 是一种动态、开放源代码的编程语言,以其简洁明了的语法和强大的功能而受到许多开发者的喜爱。在 Ruby 中,Socket 编程是一种重要的网络编程技术,它允许程序员创建可以在网络中通信的程序。本文将详细介绍 Ruby Socket 编程的基础知识,包括如何创建 …...
内容安全与系统构建加速,助力解决生成式AI时代的双重挑战
内容安全与系统构建加速,助力解决生成式AI时代的双重挑战 0. 前言1. PRCV 20241.1 大会简介1.2 生成式 Al 时代的内容安全与系统构建加速 2. 生成式 AI2.1 生成模型2.2 生成模型与判别模型的区别2.3 生成模型的发展 3. GAI 内容安全3.1 GAI 时代内容安全挑战3.2 图像…...
基于Vue的微前端架构实现与挑战
引言 微前端架构作为一种新兴的前端开发方案,能够有效解决大型应用的复杂性问题。本文将详细探讨基于Vue实现微前端的具体方案及其面临的挑战。 什么是微前端? 微前端是一种将前端应用分解成一系列更小、更易管理的独立应用的架构模式。每个子应用可以…...
UE5 DownloadImage加载jpg失败的解决方法
DownloadImage加载jpg失败的解决方法 现象解决方案具体方法 现象 用UE自带的 DownloadImage 无法下载成功,从 failure 引脚出来。 接入一个由监控器自动保存起的图像,有些可以正常加载成功,有些无法加载成功。 经调查问题出现在,…...
Consumer Group
不,kafka-consumer-groups.sh 脚本本身并不用于创建 Consumer Group。它主要用于管理和查看 Consumer Group 的状态和详情,比如列出所有的 Consumer Group、查看特定 Consumer Group 的详情、删除 Consumer Group 等。 Consumer Group 是由 Kafka 消费者…...
[开源] SafeLine 好用的Web 应用防火墙(WAF)
SafeLine,中文名 “雷池”,是一款简单好用, 效果突出的 Web 应用防火墙(WAF),可以保护 Web 服务不受黑客攻击 一、简介 雷池通过过滤和监控 Web 应用与互联网之间的 HTTP 流量来保护 Web 服务。可以保护 Web 服务免受 SQL 注入、XSS、 代码注…...
vue3 路由守卫
在Vue 3中,路由守卫是一种控制和管理路由跳转的机制。它允许你在执行导航前后进行一些逻辑处理,比如权限验证、数据预取等,从而增强应用的安全性和效率。路由守卫分为几种不同的类型,每种类型的守卫都有其特定的应用场景。 其实路…...
unigui 登陆界面
新建项目,因为我的Main页面做了其他的东西,所以我在这里新建一个form File -> New -> From(Unigui) -> 登录窗体 添加组件:FDConnection,FDQuery,DataSource,Unipanel和几个uniedit,…...
Ubuntu,openEuler,MySql安装
文章目录 Ubuntu什么是Ubuntu概述Ubuntu版本简介桌面版服务器版 部署系统新建虚拟机安装系统部署后的设置设置root密码关闭防火墙启用允许root进行ssh安装所需软件制作快照 网络配置Netplan概述配置详解配置文件DHCP静态IP设置 软件安装方法apt安装软件作用常用命令配置apt源 d…...
LLM( Large Language Models)典型应用介绍 1 -ChatGPT Large language models
ChatGPT 是基于大型语言模型(LLM)的人工智能应用。 GPT 全称是Generative Pre-trained Transformer。-- 生成式预训练变换模型: Generative(生成式):可以根据输入生成新的文本内容,例如回答问题…...
deepin系统下载pnpm cnpm等报错
deepin系统下载pnpm cnpm等报错 npm ERR! request to https://registry.npm.taobao.org/pnpm failed, reason: certificate has expired 报错提示证书过期,执行以下命令 npm config set registry https://registry.npmmirror.com下载pnpm npm install pnpm -g查…...
RPC-健康检测机制
什么是健康检测? 在真实环境中服务提供方是以一个集群的方式提供服务,这对于服务调用方来说,就是一个接口会有多个服务提供方同时提供服务,调用方在每次发起请求的时候都可以拿到一个可用的连接。 健康检测,能帮助从连…...
数据结构-二叉树_堆
目录 1.二叉树的概念 编辑1.1树的概念与结构 1.2树的相关语 1.3 树的表示 2. ⼆叉树 2.1 概念与结构 2.2 特殊的⼆叉树 2.2.2 完全⼆叉树 2.3 ⼆叉树存储结构 2.3.1 顺序结构 2.3.2 链式结构 3. 实现顺序结构⼆叉树 3.2 堆的实现 3.2.2 向下调整算法 1.二叉树的概…...