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

系列学习前端之第 9 章:一文搞懂 Node.js 和 nvm,掌握 npm

1、说说 Node.js

Node.js 本质上是一款应用软件(本质上与QQ、微信一样),它可以运行 JavaScript 代码,这样就使得 JavaScript 能够脱离浏览器运行。Node.js 是基于 Google 的 V8 引擎,V8引擎执行 Javascript 的速度非常快,性能非常好。Node.js 可以处理 HTTP 请求,可以操作数据库和缓存等等,它主要是运行在后台服务端。但是,后续的项目开发中,如果涉及到后台开发的,我们优先使用 Java。

2、说说 nvm

nvm(Node Version Manager 翻译:Node.js 版本管理工具),顾名思义它就是用来管理 Node.js 的版本的,方便切换不同版本的 Node.js。

问:为什么要切换 Node.js 的版本?

切换 Node.js 的版本是经常发生的事,特别是新加入一个公司或者团队,开发团队里使用的 Node.js 往往与自己平时使用的版本不同,所以需要切换不同的版本。

问:不能直接删掉自己的版本去迎合团队的版本吗?

可以的,只不过比较麻烦。而且使用 nvm 切换 Node.js 的版本也是 so easy 的事!

3、说说 npm

3.1 白话文理解 npm

npm(Node Package Manager 翻译:Node.js 包管理工具)是 JavaScript 的包管理工具,并且也是 Node.js 默认的包管理工具。如果把 Node.js 比作将军在外打仗,那么 npm 就是将军的妻子,负责相夫教子,管理家里的日常。

npm 中文网:https://npm.nodejs.cn/about-npm

3.2 npm 的组成

npm 由 3 个部分组成

1、网站:是开发者查找 js 包、设置参数以及管理 npm 使用体验的主要途径。

2、注册表(registry):是一个巨大的数据库,保存了每个包(package)的信息。

3、命令行工具(CLI):通过命令行或终端运行,开发者通过 CLI 与 npm 打交道。

3.3 npm 的作用

解决痛点:每当我们需要别人的代码时,根据名字搜索,然后下载、解压、再使用,会非常麻烦。

于是 npm 就做了这个包管理的工作来解决这些痛点,大神们把写好的代码免费上传到 npm 官网上,其他程序员想要使用,直接通过 npm 安装就行了。当然了,有一天你也变成大神,可以上传你的包到 npm 官网给其他人使用。另外,如果我们要使用模块A,而模块A又依赖模块B,模块B又依赖模块C和D,此时 npm 会根据依赖关系,把所有依赖的包都下载下来并且管理起来。这简直就是贤内助!

4、Node.js 和 npm 的关系

刚才提到了,npm 是 Node.js 默认的包管理工具,也就是他们俩是一对的、相辅相成的,很难分开来讨论他们。所以,安装了 Node.js 之后,npm会自动帮你安装上。总的来说:安装 Node.js 默认就会安装 npm,而安装 npm 最简单的方式就是安装 Node.js

5、使用 Vue 必须要用 Node.js 吗?

5.1 理解 Vue 和 Node.js 这2个概念

1、Vue 是一种 JavaScript 前端框架,可以帮助我们构建前端网站,运行在客户端。

2、Node.js 则是一种在后端使用的 JavaScript 运行环境,运行在服务端,可以让我们像使用其他后端语言(例如 Java、PHP、Python 等)一样编写后端代码,也就是不用 Node.js 做后端开发也可以选其他语言来做后端开发。

所以,它们俩的侧重点其实是不同的,Vue 是开发前端的框架,Node.js 是运行 JavaScript 的应用程序。

5.2 Vue 的一些工具和插件配合 Node.js 会更好用

虽然 Node.js 和 Vue 之间没有必然的关系,但在使用 Vue 开发过程中,如果你希望使用一些 Vue 的工具或者插件,例如 Vue CLI、Vue Router、Vuex 等,那么你在项目中使用 Node.js 会事半功倍。

  • Vue CLI 是一个 Vue 的命令行工具,可以帮助我们快速搭建 Vue 项目的基础框架。安装 Vue CLI 需要使用 npm 这一 node.js 的包管理器。
  • Vue Router 是 Vue 官方提供的路由管理工具,尤其适合单页面应用开发。使用 Vue Router 需要在 Vue 项目中安装 vue-router 的依赖包,这也需要使用 Node.js 的 npm 包管理器来完成。
  • Vuex 是一个针对 Vue 应用程序的状态管理模式,可以使组件之间的状态共享变得更加容易。使用 Vuex 时,你需要在 Vue 项目中安装 vuex 的依赖包,同样需要使用 Node.js 的 npm 包管理器。

总的来说:Vue 不需要依赖 node.js,但如果你需要使用 Vue 的相关工具和插件,那么在项目中使用 Node.js 可能会更加方便和高效。同时,使用什么后端技术栈并不会影响 Vue 的使用,只要你能提供后端 API,就能在前端使用 Vue 构建网站。

6、包管理工具的拓展内容

在很多语言中都有包管理工具,比如:

语言包管理工具
JavaScriptnpm、yarn、cnpm
JavaMaven、Gradle
PHPcomposer
Pythonpip
Gogo mod
RubyrubyGems

除了编程语言领域有包管理之外,操作系统也有包管理工具,比如:

操作系统包管理工具网址
CentOSyumhttps://packages.debian.org/stable
Windowschocolateyhttps://chocolatey.org
MacOShomebrewhttps://brew.sh
Ubuntuapthttps://packages.ubuntu.com

7、安装 Node.js

7.1 Node.js 官网

官网:https://nodejs.org/en/download

中文网站:https://nodejs.cn/download/

说明:中文网站不是官网,是国内一些程序员自己搭建的

我们下载中文网站“长期支持版本” 18.20.0(2024年4月3日)也叫稳定版本或 LTS 版本。

如果想查看历史版本,点击中文网站的“全部安装包”。找到你需要的版本下载即可。

然后把下载好的 .msi 后缀文件进行安装。

7.2 验证 Node.js 是否安装完成

使用 cmd 命令行查看,输入命令

查看 Node.js 安装版本:node -v

查看 npm 安装版本: npm -v

至此,Node.js 安装成功,npm 也一同安装成功了。

8、安装 nvm

注意:Node.js 只是默认安装 npm,并不会默认安装 nvm,所以 nvm 需要我们单独安装。

github官网地址:https://github.com/coreybutler/nvm-windows/releases

这里提供百度网盘下载地址:https://pan.baidu.com/s/1A2vWZh6AM_ozvNd0gJqRpg?pwd=8hhi 提取码: 8hhi

往下拉,找到 Assets,下载 nvm-setup.exe 文件

然后傻瓜式安装。安装过程会检测我们已经安装的 Node 版本,加入到管理即可。

8.1 nvm 常用操作

使用 cmd 命令行工具操作,常用命令如下:

1、显示所有可以下载的 Node.js 版本: nvm list available

2、显示已安装的 Node.js 版本: nvm list

3、安装指定的 Node.js 版本: nvm install 18.20.1

4、安装最新的 Node.js 版本: nvm install latest

5、删除某个版本的 Node.js:  nvm uninstall 18.20.0

6、切换到某个版本的 Node.js: nvm use 18.20.1

8.2 环境变量

 有人会提出疑问:为什么安装好了 Node.js,能通过 cmd 命令行查询到它的版本号呢?

回答:

这个其实跟环境变量设置有关。环境变量可以设置一些文件夹的路径,在当前工作目录下找不到可执行文件时,就会在环境变量的目录中挨个的查找,如果找到则执行,如果没有找到就会报错。

因此,如果我们在环境变量里设置了某些软件,就可以通过 cmd 命令行来启动该软件。

我们可以查看一下,我们计算机的环境变量是否设置了 Node.js。新版的 Node.js 在安装的时候,自动帮我们设置好环境变量了。

9、npm 的使用(重点)

9.1 npm 配置淘宝镜像

npm 的服务器部署在国外,有时候访问的速度非常慢,甚至无法访问。所以配置淘宝镜像可以提高下载速度。配置淘宝镜像有 2 种方式:

9.1.1 直接执行命令配置

npm config set registry https://registry.npmmirror.com/

这种方式比较简单,适用于只下载依赖包的情况(绝大部分程序员首选这种方式)。但是这种方式也有2个问题:

1、修改镜像地址不方便。比如后期有另外的镜像地址,修改起来不方便。

2、淘宝镜像不支持上传自己的包,是只读的镜像。

9.1.2 通过工具配置

使用 nrm 配置 npm 的镜像地址,可以让 nrm 决定去哪个镜像去下载依赖包。

1、安装 nrm

npm i -g nrm

2、查看 nrm 支持的镜像

nrm ls

3、使用淘宝镜像

nrm use taobao

效果: 

4、检查是否配置成功

npm config list

效果:镜像地址指向了 taobao 的镜像地址: https://registry.npmmirror.com/  说明配置成功!

9.2 包初始化

9.2.1 在 Window 某个目录下初始化包

平时我们开发都是在 VSCode 工具下初始化包,也不排除有些时候需要在电脑上某个目录初始化包。步骤如下:

1、进入到具体的目录下,唤起 cmd 命令行。这里提供一个博客链接如何唤起 cmd 命令行

CMD 命令行进入到电脑硬盘的某个目录的几种方式-CSDN博客

2、在 cmd 中输入以下命令行,可以快速创建 package.json

npm init -y    或者  npm init --yes

说明:如果命令行不加 -y 或者 --yes,npm 则会采用“交互式”的方式带领我们去创建 package.json 文件。什么是交互式?就是一问一答的形式。比如:让你确认包的名字、版本号、描述、作者名字、证书等等。一般开发过程我们直接跳过这个交互式。

效果:

这时候 package.json 这个包管理配置文件就创建好了。

注意事项:

1、package name ( 包名 ) 不能使用中文、大写,默认值是 文件夹的名称 ,所以文件夹名称也不能使用中文和大写。

2、version ( 版本号 )要求 x.x.x 的形式定义, x 必须是数字,默认值是 1.0.0

3、ISC 证书与 MIT 证书功能上是相同的。
4package.json 可以手动创建与修改。
5、 使用 npm init - y 或者 npm init -- yes 极速创建 package.json

9.2.2 在 VSCode 工具的项目下初始化包

在 VSCode 的项目下,鼠标右键,找到【在集成终端中打开】

如果这时候会弹出一个终端的框(新版的 VSCode 会有这个问题),请按照以下博客的思路来解决问题:解决 VSCode 编辑器点击【在集成终端中打开】出现新的弹框-CSDN博客

输入命令行

npm init -y

这时候就在 code 的根目录下生成了 package.json 文件 

包初始化完成。下面是针对包初始化的内容做一些介绍。

{
"name": "code" , #包的名字
"version": "1.0.0", # 包的版本
"description": "", # 包的描述
"main": "index.js", # 包的入口文件
"scripts": { # 脚本配置
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "", # 作者
"license": "ISC" # 开源证书
}

9.3 搜索 npm 的包并引入项目

9.3.1 搜索包的方式有 2 种

1、网站搜索,官网地址是(经常无法访问):https://www.npmjs.com/

所以推荐能搜索包的网址:https://npms.io/

也就是我们可以去这个网站搜索需要的包,让后通过淘宝镜像地址下载某个包。这跟 Java 开发一样,使用 https://mvnrepository.com/ 搜索包,然后通过阿里云镜像去下载包。

2、命令行搜索:npm s xxx   (这种方式比较少用,除非你对包名很了解)

比如我们搜索:uniq,第一个结果出现,二级标题写的是“Removes duplicates from a sorted array in place(从已排序的数组中原位删除重复项)” 

9.3.2 引入包

引入包的命令:

npm i xxx    或者   npm install xxx     i 是 install 的简写

执行结果:

会在项目下多出 2 个内容,一个是 package-lock.json 文件,这个文件里面的内容是固定了我们包的版本信息的,确保我们每次安装的版本是一样的。另一个是 node_modules 文件夹,是用来存放我们下载的包的目录。

9.3.3 使用包

我们在项目下新建 testArr.js 文件,内容如下:

//1、导入 uniq 包
let myUniq = require("uniq");
//2、使用函数(可以参考 uniq 包下的 test.js )
let arr = [5,2,0,2,5,6];
const result = myUniq(arr);
console.log(result);

在控制台输出:

node testArr.js

效果: 

require 导入 npm 包基本流程说明:

默认在当前文件夹下 node_modules 中寻找同名的文件夹。如果在 node_modules 中找不到同名文件,则会在上级目录中下的 node_modules 中寻找同名的文件夹,以此类推,直至找到磁盘根目录。所以我们在导包的时候,要严格按照 require("uniq") 这种写法来,不要写相对路径。如果是自己开发的包,那就写相对路径。

9.4 npm 的生产环境与开发环境

1、开发环境是程序员专门用来写代码的环境,一般是指程序员的电脑,开发环境的项目一般只能程序员自己访问。
2、生产环境是项目代码正式运行的环境,一般是指正式的服务器电脑,生产环境的项目一般每个客户都可以访问。

9.4.1 生产依赖与开发依赖

我们可以在安装时设置选项来区分依赖的类型 ,目前分为两类:

类型命令补充
生产依赖

npm i -S xxx

或者

npm i --save xxx

-S 等效于 --save, -S 是默认选项,npm 会默认加上,

包信息保存在 package.json 中 dependencies 属性

开发依赖

npm i -D xxx

或者

npm i --save-dev xxx

-D 等效于 --save-dev

包信息保存在 package.json 中 devDependencies 属性

开发依赖是只在开发阶段使用的依赖包,而【生产依赖】是开发阶段和最终上线运行阶段都用到
的依赖包。

代码示例:我们在终端引入一个生产包 jQuery,一个开发包 less

npm i -S jQuery

npm i -D less

 效果:jQuery 放在了 dependencies 下,表示在开发阶段和生产阶段都可以使用。less 放在了 devDependencies 下,表示只有开发阶段才用。但是不管是生产依赖还是开发依赖,它们都是放在 node_modules 目录下的。

9.4.2 全局安装

全局安装的命令不受工作目录位置影响,全局安装完成之后就可以在命令行的任何位置运行 nodemon 命令。我们可以执行安装选项 -g 进行全局安装。

npm i -g nodemon

该命令的作用是:自动重启 node 应用程序。

查看全局安装包的位置命令:

 npm root -g

不是所有的包都适合全局安装,只有全局类的工具才适合,可以通过查看包的官方文档来确定
安装方式。

9.5 安装所有包的依赖

问:为什么要有“安装所有包的依赖”这个话题?

回答:

在大部分情况下,我们刚入职一个新团队,或者拿到别人写好的前端代码,此时代码里往往是不会包含 node_modules 这个目录的。实际开发过程,程序员也不会把 node_modules 这个文件夹往 SVN、Git 等代码仓库上传,因为这个文件夹会很大,几百兆或者更大,会导致提交代码或拉取代码非常慢。所以,这个时候就需要我们拉取代码后,一键安装项目所需的包依赖。

安装所有包的依赖命令如下(其实就是去掉之前我们安装指定包的名称):

npm i      或者      npm install

通过该命令可以依据 package.json 和 package-lock.json 的依赖声明安装项目依赖。

注意:node_modules 文件夹大多数情况都不会存入版本库。

9.6 安装指定版本的包

项目中可能会遇到版本不匹配的情况,有时就需要安装指定版本的包,可以使用下面的命令:

npm i 包名@版本号

例如:安装 jquery 3.7.1 版本

npm i jquery@3.7.1

9.7 删除依赖包

项目中可能需要删除某些不需要的包,可以使用下面的命令删除:

1、局部删除

npm r xxx        或者      npm remove xxx

2、全局删除

npm r -g xxx     或者      npm remove -g xxx

9.8 配置命令别名

通过配置命令别名可以更简单的执行命令。主要是针对 package.json 文件中的 scripts 标签来配置。

比如我们配置了 server 和 start 标签,都是指向 testArr.js 文件:

  "scripts": {"test": "echo \"Error: no test specified\" && exit 1","server": "node testArr.js","start": "node testArr.js"},

配置完之后,我们就可以使用别名来执行命令:

npm run server
npm run start   或者   npm start    (start 别名比较特别,可以省略 run)

效果:

补充说明:

1、npm start 是项目中常用的一个命令,一般用来启动项目。

2、npm run 有自动向上级目录查找的特性,跟 require 函数也一样。向上级目录查找这个特性很重要,否则在多层级的目录下,要重复创建相同的包。有了向上查找特别,只需要在最外层创建一个包即可。

3、对于陌生的项目,我们可以通过查看 scripts 属性来参考项目的一些操作

9.9 管理发布包

当有一天,你成为大神之后,写了很多厉害的 js 脚本,就可以往 npm 服务器上发布你的包,给其他人使用。

9.9.1 创建与发布

1. 创建文件夹,并创建文件 index.js, 在文件中声明函数,使用 module.exports 暴露
2. npm 初始化工具包,package.json 填写包的信息 (包的名字是唯一的)
3. 注册账号 https://www.npmjs.com/signup
4. 激活账号 ( 一定要激活账号 )
5. 修改为官方的官方镜像 (命令行中运行 nrm use npm )
6. 命令行下 npm login 填写相关用户信息
7. 命令行下 npm publish 提交包

9.9.2 更新包

后续可以对自己发布的包进行更新,操作步骤如下:

1. 更新包中的代码
2. 测试代码是否可用
3. 修改 package.json 中的版本号
4. 发布更新。npm publish

9.9.3 删除包

执行如下命令删除包:

npm unpublish --force

删除包需要满足一定的条件:https://docs.npmjs.com/policies/unpublish

  1. 你是包的作者
  2. 发布小于 24 小时
  3. 大于 24 小时后,没有其他包依赖,并且每周小于 300 下载量,并且只有一个维护者

— end  —

相关文章:

系列学习前端之第 9 章:一文搞懂 Node.js 和 nvm,掌握 npm

1、说说 Node.js Node.js 本质上是一款应用软件(本质上与QQ、微信一样),它可以运行 JavaScript 代码,这样就使得 JavaScript 能够脱离浏览器运行。Node.js 是基于 Google 的 V8 引擎,V8引擎执行 Javascript 的速度非常…...

超强命令行解析工具Apache Commons CLI

概述 为什么要写这篇文章呢?因为在读flink cdc3.0源码的时候发现了这个工具包,感觉很牛,之前写过shell命令,shell是用getopts来处理命令行参数的,但是其实写起来很麻烦,长时间不写已经完全忘记了,现在才发现原来java也有这种工具类,所以先学习一下这个的使用,也许之后自己在写…...

JAVAEE——多线程进阶,锁策略

文章目录 锁策略乐观锁和悲观锁乐观锁悲观锁两者的比较 读写锁重量级锁和轻量级锁重量级锁轻量级锁 自旋锁公平锁和非公平锁公平锁非公平锁 可重入锁和不可重入锁可重入锁不可重入锁 锁策略 乐观锁和悲观锁 乐观锁 什么是乐观锁呢?我们可以认为乐观锁比较自信&am…...

富文本编辑器Quill全套教程

Quill简介 Quill是一款现代的富文本编辑器,它以其API驱动的设计和对文本格式的深度理解而著称。与传统的富文本编辑器不同,Quill专注于以字符为中心,构建了一个直观且易于使用的API,使得开发者能够轻松地对文本进行格式化和编辑。…...

Swift 代码注释的使用

Swift代码注释的使用 在 iOS 开发中,代码注释是一种很好的实践,可以帮助他人更容易理解你的代码。通常可以在代码中使用注释来解释代码的功能、目的、实现细节等。下面是一些常见的 iOS 代码注释示例: 1. 单行注释: // 这是一个…...

蓝桥杯—DS1302

目录 1.管脚 2.时序&官方提供的读写函数 3.如何使用读写函数 4.如何在数码管中显示在DS1302中读取出的数据? 1.管脚 2.时序&官方提供的读写函数 /* # DS1302代码片段说明1. 本文件夹中提供的驱动代码供参赛选手完成程序设计参考。2. 参赛选手可以自行…...

nginx: 集群环境配置搭建

nginx 集群环境搭建 1 ) 概述 nginx 本身就应该选择性能强劲的机器同时为了满足更多流量的需求, 多台nginx 机器做集群来满足强大的需求故而,我们需要一个负载均衡器,以及多台nginx的机器 这里负载均衡器应该有主从和热备,目前先使用一台来描…...

Linux:进程终止和等待

一、进程终止 main函数的返回值也叫做进程的退出码,一般0表示成功,非零表示失败。我们也可以用不同的数字来表示不同失败的原因。 echo $?//打印最近一次进程执行的退出码 而作为程序猿,我们更需要知道的是错误码所代表的错误信息&#x…...

一、next-auth 身份验证凭据-使用电子邮件和密码注册登录

一、next-auth 身份验证凭据-使用电子邮件和密码注册登录 文章目录 一、next-auth 身份验证凭据-使用电子邮件和密码注册登录一、前言二、前置准备1、环境配置2、相关库安装(1)vercel 配置(2)Yarn 包管理配置 3、next项目初始化与…...

2.SpringBoot利用Thymeleaf实现页面的展示

什么是Thymeleaf? Thymeleaf是一个现代服务器端Java模板引擎,适用于Web和独立环境,能够处理HTML,XML,JavaScript,CSS甚至纯文本。 Thymeleaf的主要目标是提供一种优雅且高度可维护的模板创建方式。为实现这…...

devtool: ‘source-map‘ 和 devtool: ‘#source-map‘的区别

devtool: ‘source-map’ 和 devtool: ‘#source-map’ 之间的区别主要在于前面的#字符。 从Webpack 4开始,就废弃了在devtool选项前加#的用法。 devtool: ‘source-map’ 选项意味着Webpack在构建过程中会生成独立的完整的source map文件。对于测试环境很有用&…...

Flutter Boost 3

社区的 issue 没有收敛的趋势。 设计过于复杂,概念太多。这让一个新手看 FlutterBoost 的代码很吃力。 这些问题促使我们重新梳理设计,为了彻底解决这些顽固的问题,我们做一次大升级,我们把这次升级命名为 FlutterBoost 3.0&am…...

ElementUI响应式Layout布局xs,sm,md,lg,xl

响应式布局 参照了 Bootstrap 的 响应式设计&#xff0c;预设了五个响应尺寸&#xff1a;xs、sm、md、lg 和 xl。 <el-row :gutter"10"><el-col :xs"8" :sm"6" :md"4" :lg"3" :xl"1"><div class…...

机器学习——典型的卷积神经网络

机器学习——典型的卷积神经网络 卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;CNNs&#xff09;是一类在图像处理领域应用广泛的深度学习模型。它通过卷积操作和池化操作来提取图像的特征&#xff0c;并通过全连接层来进行分类或回归任务。在本文中&am…...

速通数据结构与算法第四站 双链表

系列文章目录 速通数据结构与算法系列 1 速通数据结构与算法第一站 复杂度 http://t.csdnimg.cn/sxEGF 2 速通数据结构与算法第二站 顺序表 http://t.csdnimg.cn/WVyDb 3 速通数据结构与算法第三站 单链表 http://t.csdnimg.cn/cDpcC 感谢佬们…...

51单片机学习笔记12 SPI接口 使用1302时钟

51单片机学习笔记12 SPI接口 使用1302时钟 一、DS1302简介1. 功能特性2. 涓流充电3. 接口介绍时钟数据和控制线&#xff1a;电源线&#xff1a;备用电池连接&#xff1a; 二、寄存器介绍1. 控制寄存器2. 时间寄存器3. 日历/时钟寄存器 三、BCD码介绍四、DS1302时序1. 读时序2. …...

php编辑器 ide 主流编辑器的优缺点。phpstorm vscode atom 三者对比

编辑器PhpStormvscodeAtom是否收费收费&#xff0c;有30天试用期免费免费内存占用Java平台&#xff0c;一个进程1G多内存占用好几个进程&#xff0c;合起来1G上下/基本功能都具备&#xff0c;有的功能需要装插件都具备&#xff0c;有的功能需要装插件都具备&#xff0c;有的功能…...

【动手学深度学习】深入浅出深度学习之RMSProp算法的设计与实现

目录 &#x1f31e;一、实验目的 &#x1f31e;二、实验准备 &#x1f31e;三、实验内容 &#x1f33c;1. 认识RMSProp算法 &#x1f33c;2. 在optimizer_compare_naive.py中加入RMSProp &#x1f33c;3. 在optimizer_compare_mnist.py中加入RMSProp &#x1f33c;4. 问…...

大转盘抽奖小程序源码

源码介绍 大转盘抽奖小程序源码&#xff0c;测试依旧可用&#xff0c;无BUG&#xff0c;跑马灯旋转效果&#xff0c;非常酷炫。 小程序核心代码参考 //index.js //获取应用实例 var app getApp() Page({data: {circleList: [],//圆点数组awardList: [],//奖品数组colorCirc…...

数据结构(无图版)

数据结构与算法&#xff08;无图版&#xff0c;C语言实现&#xff09; 1、绪论 1.1、数据结构的研究内容 一般应用步骤&#xff1a;分析问题&#xff0c;提取操作对象&#xff0c;分析操作对象之间的关系&#xff0c;建立数学模型。 1.2、基本概念和术语 数据&#xff1a;…...

软件测试中的顶级测试覆盖率技术

根据 CISQ 报告&#xff0c;劣质软件每年给美国公司造成约2.08 万亿美元的损失。虽然软件工具是企业和行业领域的必需品&#xff0c;但它们也容易出现严重错误和性能问题。人类手动测试不再足以检测和消除软件错误。 因此&#xff0c;产品或软件开发公司必须转向自动化测试&am…...

vscode使用技巧

常用快捷键 代码格式 Windows系统。格式化代码的快捷键是“ShiftAltF” Mac系统。格式化代码的快捷键是“ShiftOptionF” Ubuntu系统。格式化代码的快捷键是“CtrlShiftI”配置缩进 点击左上角的“文件”菜单&#xff0c;然后选择“首选项”>“设置”&#xff0c;或者使用…...

JSP

概念&#xff1a;Java Server Pages&#xff0c;Java服务端页面 一种动态的网页技术&#xff0c;其中既可以定义HTML、JS、CSS等静态内容&#xff0c;还可以定义Java代码的动态内容 JSP HTML Java 快速入门 注&#xff1a;Tomcat中已经有了JSP的jar包&#xff0c;因此我们…...

Mybatis--TypeHandler使用手册

TypeHandler使用手册 场景&#xff1a;想保存user时 teacher自动转String &#xff0c;不想每次保存都要手动去转String&#xff1b;从DB查询出来时&#xff0c;也要自动帮我们转换成Java对象 Teacher Data public class User {private Integer id;private String name;priva…...

网络编程(TCP、UDP)

文章目录 一、概念1.1 什么是网络编程1.2 网络编程中的基本知识 二、Socket套接字2.1 概念及分类2.2 TCP VS UDP2.3 通信模型2.4 接口方法UDP数据报套接字编程TCP流套接字编程 三、代码示例3.1 注意点3.2 回显服务器基于UDP基于TCP 一、概念 首先介绍了什么是网络编程&#xff…...

Python快速入门系列-7(Python Web开发与框架介绍)

第七章:Python Web开发与框架介绍 7.1 Flask与Django简介7.1.1 Flask框架Flask的特点Flask的安装一个简单的Flask应用示例7.1.2 Django框架Django的特点Django的安装一个简单的Django应用示例7.2 前后端交互与数据传输7.2.1 前后端交互7.2.2 数据传输格式7.2.3 示例:使用Flas…...

最长对称子串

对给定的字符串&#xff0c;本题要求你输出最长对称子串的长度。例如&#xff0c;给定Is PAT&TAP symmetric?&#xff0c;最长对称子串为s PAT&TAP s&#xff0c;于是你应该输出11。 输入格式&#xff1a; 输入在一行中给出长度不超过1000的非空字符串。 输出格式&…...

【大模型】大模型 CPU 推理之 llama.cpp

【大模型】大模型 CPU 推理之 llama.cpp llama.cpp安装llama.cppMemory/Disk RequirementsQuantization测试推理下载模型测试 参考 llama.cpp 描述 The main goal of llama.cpp is to enable LLM inference with minimal setup and state-of-the-art performance on a wide var…...

异地组网怎么管理?

在当今信息化时代&#xff0c;随着企业的业务扩张和员工的分布&#xff0c;异地组网已经成为越来越多企业的需求。异地组网管理相对来说是一项复杂而繁琐的任务。本文将介绍一种名为【天联】的管理解决方案&#xff0c;帮助企业更好地管理异地组网。 【天联】组网的优势 【天联…...

Kafka参数介绍

官网参数介绍:Apache KafkaApache Kafka: A Distributed Streaming Platform.https://kafka.apache.org/documentation/#configuration...

临沂网站推广/进入百度搜索首页

有一个很多人都明白的现象&#xff1a;只要不是底层&#xff0c;通常男人想脱单会比女生容易一点&#xff0c;尤其是条件尚可的男性&#xff0c;相比于和自己层次相当的女生&#xff0c;恋爱和结婚的难度都低得多。为什么&#xff1f;有个标准答案&#xff1a;因为男人可以向下…...

给自己的网站做软件测试 步骤/优化服务内容

正题第四题&#xff1a;[SDOI2009]Elaxia的路线这道题好像很麻烦。。。首先我们可以知道&#xff0c;如果边(x,y,c)为x1到y1最短路路径上的一条边&#xff0c;那么它肯定满足d[x1][x]d[y][y1]cd[x][y] || d[x1][y]d[x][y1]cd[x][y]那么知道了这个东西&#xff0c;我…...

石河子做网站的公司/免费职业技能培训网站

网络验证主要分为两种架构 C/S B/S [AppleScript] 纯文本查看 复制代码?010203C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机&#xff0c;并采用大型数据库系统&#xff0c;如Oracle、Sybase、Informix或 SQL Server。客户端需要安装专用…...

建设网站大概要花多少钱/百度网盘网页版入口官网

1.应用场景 主要用于推荐一些架构师应该阅读的优秀书籍。 2.学习/操作 1.文档阅读 架构师必读书单 | “华仔&#xff0c;放学别走&#xff01;” 第5期-极客时间 2.整理输出 原文 你好&#xff0c;我是华仔。 在专栏更新的时候&#xff0c;很多同学留言希望我推荐一些书籍可以…...

英文网站怎么做301跳转/seo推广策划

在一些情况下&#xff0c;一个进程只能产生一个实例来执行。Unix环境&#xff0c;提供了文件-记录锁(file- and record-locking)机制&#xff0c;提供了事项单实例进程的基本解决方案。 假如&#xff0c;一个进程在开始运行时&#xff0c;生成了一个文件&#xff0c;并且&…...

临沂网站公司/电商数据网站

首先&#xff0c;你需要在 Unreal Engine 中创建一个蓝图&#xff0c;然后打开蓝图编辑器。 在蓝图编辑器中&#xff0c;添加一个“事件开始播放”节点。这个节点会在游戏开始时触发。 接下来&#xff0c;添加一个“创建组件”节点&#xff0c;用来创建一个“第三人称摄像机”组…...