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

package.json 文件配置

创建 Node.js 的配置文件 package.json

npm init -y

package.json 文件配置说明

配置说明示例
name指定项目的名称,必须是小写字母,可以包含字母、数字、连字符(-)或下划线(_),不能有特殊字符,除非是 scoped 包名使用@符号{
  "name": "my-project"
}
version

指定项目的版本号。它遵循 语义版本控制(SemVer) 规范,格式为 MAJOR.MINOR.PATCH,每个部分都是数字。

稳定版本:"version": "1.0.0"
先行版本:"version": "1.0.0-beta"
构建版本:"version": "1.0.0+build1234"
先行版本和构建版本:"version": "1.0.0-beta+build1234"

{
  "version": "1.2.3"
}
description简要描述项目或包的功能和目的。{
  "description": ""
}
 
main用于指定项目的入口文件,通常是模块的主文件路径。如果没有显式指定 main,Node.js 会查找默认的文件 index.js。主要用于CommonJS的旧环境。{
  "main": "index.js"            // 指向根目录的文件
  "main": "dist/main.mjs"        // 使用 ES 模块
  "main": "dist/index.ts"        // 使用 TypeScript 文件
}
module如果你的项目包含了同时支持 CommonJS 和 ES 模块格式的代码,module 字段通常用于指定适合 ESM 环境的入口{
  "main": "dist/index.js",
  "module": "dist/index.mjs"
}
exports 为不同的环境、路径和模块系统提供不同的模块导出。{
  "exports": {
    "import": "./esm/index.js",  // 用于支持 ES Modules 的环境
    "require": "./cjs/index.js", // 用于 CommonJS 环境
    ".": "./index.js"            // 默认导出
  }
}
imports是 exports 的配套功能(Node.js 16 和后续版本中引入),用于在 ESM 环境中提供特定模块路径的映射。通过 imports,你可以定义模块路径的别名、重定向以及其他解析规则。// 导入 my-lib/* 的代码都会被映射到 ./src/my-lib/* 下,而导入 utils/* 的代码会映射到 ./src/utils/*
{
  "imports": {
    "my-lib/*": "./src/my-lib/*",
    "utils/*": "./src/utils/*"
  }
}
import { feature } from 'my-lib/feature';
scripts用于自定义 npm 脚本。这些脚本可以通过 npm run <script-name> 来执行,允许你自动化常见任务,如构建、测试、发布等。{
  "scripts": {
    "start": "node server.js",
    "test": "mocha test/**/*.js"
  }
}
keywords用于指定一组关键字,这些关键字可以帮助其他开发者更容易地找到你的项目或包,尤其是在发布到 npm 等包管理平台时。{
  "keywords": [
    "utility",
    "javascript",
    "library",
    "tools"
  ]
}
author用于指定项目或包的作者。通常这个字段包含作者的名称、电子邮件和网址等信息,以便其他人能够联系到作者,或了解项目的维护者是谁。

{
  "author": "Tom"
}

{
  "author": "Tom <tom@example.com> (https://tom.com)"
}
{
  "author": {
    "name": "Tom",
    "email": "tom@example.com",
    "url": "http://tom.com"
  }
}

license用于指定项目的许可类型。它说明了项目的使用、复制、修改和分发的规则。常见的开源许可协议包括 MIT、Apache-2.0、GPL 等。{
  "license": ["MIT", "Apache-2.0"]
}
type

用于指定包的模块类型,它主要影响 Node.js 如何解析项目中的文件。

module:指示项目使用 ES 模块(支持 import/export)。

commonjs:指示项目使用 CommonJS 模块(支持 require/module.exports)。

默认是 commonjs,但可以通过 .mjs 和 .cjs 来混合使用这两种模块类型。

{
  "type": "module"
}
types用于 TypeScript 项目中,指示该项目的类型定义文件位置。(类型定义是一种帮助 TypeScript 理解 JavaScript 代码结构的机制)。{
  "types": "lib/index.d.ts"
}
typings同 types 相似,官方推荐使用types。{
  "typings": "lib/index.d.ts"
}
homepage指定包的主页或相关网站的 URL。这通常是指向项目的官方网站、文档、GitHub 仓库等信息的链接。{
  "homepage": "https://github.com/username/project-name"
}
bugs用于指定与包相关的错误报告和问题追踪的 URL。当你希望用户报告 bug 或提出问题时请使用此配置。{
  "bugs": {
    "url": "https://github.com/username/project-name/issues",
    "email": "bugs@example.com"
  }
}
man用于指定与包相关的手册页文件(man pages)的路径。当你的项目包含命令行工具或者实用程序,且希望在安装时自动安装手册页,请使用此配置{
  "man": [
    "man/my-command.1"
  ]
}
repository用于指定开源包的版本控制系统(如 Git)的仓库地址。这个字段提供了包的源码仓库位置用于让其他人访问源码,通常是 GitHub、GitLab 或其他托管平台上的仓库 URL。{
  "repository": {
    "type": "git",
    "url": "https://github.com/username/project-name.git"
  }
}
contributors用于指定参与项目的贡献者信息。这个字段可以包含一个或多个贡献者的姓名、电子邮件地址以及其他联系信息。它通常用于开源项目中,以便记录对项目做出贡献的开发者或其他成员。{
  "contributors": [
    "John Doe",
    "Jane Smith"
  ]
}
funding用于指定如何支持项目的资金来源,特别是对于开源项目。它可以包含一个 URL 或多个 URL,这些链接指向可以帮助资助项目的资源,比如赞助页面、捐款平台、支持者名单等。{
  "funding": "https://github.com/sponsors/username"
}
dependencies用于列出项目运行时(生产环境)所需的所依赖的其他包或模块。通常包括你在项目中引用的外部库和工具。它们会在执行 npm install 时被安装。// 远程npm仓库
{
  "dependencies": {
    "express": "^4.17.1",        
    "lodash": "^4.17.20"
  }
}
// GitHub 仓库 URL 作为依赖
{
  "dependencies": {
    "my-package": "https://github.com/username/my-package.git"
  }
}
// 本地项目路径作为依赖
{
  "dependencies": {
    "my-local-package": "file:./path/to/local-package"
  }
}
 
devDependencies用于列出项目开发过程中所需的依赖包。这些依赖仅在开发、测试和构建过程中使用,而在生产环境中并不需要。{
  "devDependencies": {
    "webpack": "^5.0.0",
    "babel-cli": "^6.0.0",
    "eslint": "^7.10.0"
  }
}
peerDependencies用于指定你开发的公共包与其他包的兼容性。告诉使用你包的开发者,这个包与哪些包的版本兼容。// 告诉使用你的包的开发者需要与 react 的版本 16.x.x 或 17.x.x 兼容。
{
  "peerDependencies": {
    "react": "^16.0.0 || ^17.0.0"
  }
}
optionalDependencies用于列出项目的可选依赖包。这些依赖是“可选的”,意味着如果安装这些包失败,npm 不会视其为错误,也不会阻止安装过程。optionalDependencies 常用于那些不是项目运行所必需的包,但如果安装成功,将为项目提供额外功能或增强功能。{
  "optionalDependencies": {
    "fsevents": "^2.1.3",
    "node-sass": "^4.14.1"
  }
}
bundleDependencies、bundledDependencies用于指定哪些依赖包应该与项目一起打包并包含在发布包中。它主要用于将某些依赖打包到项目的发布版中,以便在项目发布后,这些依赖仍然可用,即使安装者没有显式安装(dependencies )这些依赖。{
  "bundleDependencies": [
    "lodash",
    "moment"
  ]
}
dependenciesMeta相对较新的字段,作用于dependencies用于提供有关项目依赖的附加元数据,尤其是对特定依赖的配置和行为的定制化。该字段允许你为依赖包提供一些额外的属性或指示,以控制它们在安装过程中的某些行为。{
  "dependencies": {
    "lodash": "^4.17.21",
    "axios": "^0.21.1"
  },
  "dependenciesMeta": {
    "lodash": {
      "optional": true            // 设置为可选的依赖,即使安装失败也不会中断安装过程
    },
    "axios": {
      "optional": false            // 设置为必需的依赖,安装时必须成功。
    }
  }
}
peerDependenciesMeta同dependenciesMeta效果一样,作用于peerDependencies。{
  "peerDependencies": {
    "react": "^16.8.0"
  },
  "peerDependenciesMeta": {
    "react": {
      "optional": true
    }
  }
}
optionalDependenciesMeta同dependenciesMeta效果一样,作用于optionalDependencies。{
  "optionalDependencies": {
    "fsevents": "^2.1.3"
  },
  "optionalDependenciesMeta": {
    "fsevents": {
      "optional": true
    }
  }
}
engines用于指定你的项目所支持的 Node.js 版本或 npm 运行时环境的版本要求。{
  "engines": {
    "node": ">=14.0.0 <16.0.0",    // 项目只支持 Node.js 版本在 14.x.x 至 15.x.x 之间
    "npm": ">=6.0.0"            // 要求 npm 版本不能低于 6.0.0
  }
}
private

用来标记一个项目是否为私有项目。设置为 true 时,npm会将这个项目视为私有项目,并禁止将其发布到 npm 仓库中心上。这个选项通常用于库或工具开发,防止意外发布项目。

{
  "private": true
}
files用于控制哪些文件应该被包括在发布到 npm 仓库中心的包中,哪些文件应该被排除。files 是一个数组,每个元素都是一个字符串,表示要发布的文件或目录的路径。路径是相对于 package.json 文件的位置的。

// npm 只会发布 bin/、lib/ 目录和 README.md 文件,其他文件会被忽略

{
  "files": [
    "bin/",
    "lib/",
    "README.md"
  ]
}

.npmignore.npmignore 文件用于排除不需要的文件。和 files 的作用相反。如果你的 package.json 中有 files 字段,.npmignore 文件将不会生效
config用于存储项目相关的配置项的对象。它可以用来定义在 npm 脚本中访问的自定义配置参数。这些配置项不会影响项目的发布内容,而是帮助开发者在项目的构建或运行过程中传递和访问配置数据。{
  "name": "my-package",
  "version": "1.0.0",
  "config": {
    "apiUrl": "https://api.example.com",
    "port": 8080
  },
  "scripts": {
    "start": "node server.js",
    "build": "webpack --config webpack.config.js",
    "print-api-url": "echo $npm_package_config_apiUrl"    // linux 使用 $符号
    "print-api-url2": "echo %npm_package_config_apiUrl%"    // windows 使用 %%符号
  }
}
packnpm pack 命令通常用于创建一个项目的发布包,但并不将其上传到 npm 中心仓库,而是生成一个 tarball (.tgz)文件,你可以选择何时发布它。// 打包
npm pack
// 在本地测试包
npm install ./my-package-1.0.0.tgz
prepackprepack 是一个 npm 生命周期脚本,prepack 脚本在执行 npm pack、npm publish 时(同时),会被自动执行。prepack 代替了 prepublish 和 prepublishOnly。// 在发布前先编译
{
  "scripts": {
    "prepack": "tsc"
  }
}
postpackpostpack 是一个 npm 生命周期脚本,它会在 npm pack 命令执行后触发,通常用于在创建包的过程中执行一些后处理任务。postpack 在打包操作完成后触发,可以用来执行一些清理工作、记录日志、修改包内容或其他必要的操作。
prepare用于在运行 npm install 或 npm publish 时执行构建、编译、清理等操作。prepare 代替了 prepublish 和 prepublishOnly。{
  "scripts": {
    "prepare": "tsc"
  }
}
postpublishpostpublish 是一个 npm 生命周期脚本,它会在 npm publish 命令执行之后触发。{
  "scripts": {
    "postpublish": "echo '发布成功!'"
  }
}
publishConfig

帮助你控制 npm publish 发布过程中的细节,例如发布的目标注册表、发布的标签、或者发布时的其他元数据。

registry:如果你想将包发布到私有的 npm 注册表,而不是默认的公共 npm 注册表。

tag:在发布新版本时,tag 字段用于指定版本的标签。例如,npm publish --tag beta 将包发布为 beta 标签。

access: 用于指定包的可访问性。它控制谁可以安装该包,可以设置为 public(公开)或 restricted(私有)。

directory: 如果你希望指定某个子目录作为发布目录(而不是整个项目的根目录)。

{
  "name": "my-package",
  "version": "1.0.0",
  "publishConfig": {
    "registry": "https://my-private-registry.com",
    "tag": "next",
    "access": "public"
  }
}
binarybinary 是一个非标准字段,它通常用于描述一个包包含的二进制文件或二进制依赖项的相关信息。这个字段可以帮助自动化工具或脚本识别和处理与包相关的二进制资源,特别是在发布或安装过程中。{
  "name": "example-package",
  "version": "1.0.0",
  "binary": {
    "module_name": "example-bin",
    "module_path": "./bin",
    "version": "1.0.0",
    "host": "https://example.com/binaries/"
  }
}
preinstall用于在 npm install 执行之前运行某些自定义脚本。// 安装依赖之前检查是否安装了某个全局工具(比如 typescript)
{
  "scripts": {
    "preinstall": "echo 'Running preinstall tasks...'; npm install -g typescript"
  }
}
postinstall用于在 npm install 执行之后运行某些自定义脚本。// 安装依赖时需要在完成安装后执行构建脚本
{
  "scripts": {
    "postinstall": "npm run build"
  }
}
pretest用于在 npm test 执行之前运行某些自定义脚本。{
  "scripts": {
    "pretest": "npm run build",
    "test": "jest"
  }
}
posttest用于在 npm test 执行之后运行某些自定义脚本。// 在测试完成后生成一个测试报告
{
  "scripts": {
    "test": "jest",
    "posttest": "npm run generate-report"
  }
}
preferGlobal用于指示包是否应当在全局环境下安装,而不是局部安装。适用于你要开发一个发布到 npm 仓库中心的工具包。{
  "preferGlobal": true
}
bin用于指定模块中可执行文件的路径。这个字段主要用于当你发布一个包,并希望它包含一些可执行命令时。它允许你指定在安装该模块时将可执行文件链接到 node_modules/.bin 中的路径。// 模块被安装后,就会把my-command变成一个命令,命令执行./bin/my-command.js文件中的内容
{
  "name": "my-package",
  "version": "1.0.0",
  "bin": {
    "my-command": "bin/my-command.js"
  }
}
// ./bin/my-command.js 文件中的内容:
#!/usr/bin/env node
console.log('This is my command!');
// 然后在项目根目录终端使用命令,把自己写的命令挂载到全局命令中
npm link
// 然后就可以使用 my-command 命令,执行 bin/my-command.js 文件中的内容
resolutions用于确保项目中的所有依赖使用特定版本的包,从而避免版本冲突或不兼容的依赖版本。Yarn 作为包管理器时。// 无论 package-a 和 package-b 依赖于 lodash 的哪个版本,resolutions 字段都强制要求项目中所有地方使用 lodash 版本 4.17.21。
{
  "name": "my-project",
  "version": "1.0.0",
  "dependencies": {
    "package-a": "^1.0.0",
    "package-b": "^1.0.0"
  },
  "resolutions": {
    "lodash": "4.17.21"
  }
}
overrides用于确保项目中的所有依赖使用特定版本的包,从而避免版本冲突或不兼容的依赖版本。npm 官方支持。// // 无论 package-a 和 package-b 依赖于 lodash 的哪个版本,overrides 字段都强制要求项目中所有地方使用 lodash 版本 4.17.21。
{
  "name": "my-project",
  "version": "1.0.0",
  "dependencies": {
    "package-a": "^1.0.0",
    "package-b": "^1.0.0"
  },
  "overrides": {
    "lodash": "4.17.21"
  }
}
os

指定该包或项目适用的操作系统。这个字段的目的是让某些包在特定的操作系统上才被安装或使用,从而避免在不兼容的环境中安装或运行不支持的代码。

darwin: 用于 macOS 系统。
linux: 用于 Linux 系统。
win32: 用于 Windows 系统

{
  "name": "my-package",
  "version": "1.0.0",
  "os": ["darwin", "linux"]
}
cpu

指定该包的支持 CPU 架构。这使得你可以限制包的安装和运行只在特定的 CPU 架构上,类似于 os 字段,它帮助控制包在哪些硬件环境下被安装和运行。

x64: 64 位的 x86 架构(常见的桌面计算机和服务器架构,如 Intel 和 AMD 处理器)。
arm: 基于 ARM 架构的 CPU,通常用于低功耗设备(如智能手机和某些嵌入式系统)。
arm64: 64 位的 ARM 架构,常见于现代的 ARM 服务器和移动设备(如 Apple M1 和一些 Android 设备)。
ia32: 32 位的 x86 架构,较老的计算机和设备可能使用这种架构。
mips、mips64: 另一种架构,主要用于某些嵌入式设备。

{
  "name": "my-package",
  "version": "1.0.0",
  "cpu": ["x64", "arm64"]
}
 
lockfileVersion

lockfileVersion 是一个用于标识 package-lock.json 文件格式版本的字段。帮助 npm 在处理 package-lock.json 时确保正确的版本解析,特别是在版本升级和跨版本兼容性方面。lockfileVersion 会随着 npm 的版本变化而变化,例如 1 是 npm 5.x 的格式,2 是 npm 7.x 的格式,3 是 npm 8.x 的格式。

{
  "name": "my-project",
  "version": "1.0.0",
  "lockfileVersion": 3
}
workspaces用于管理多包仓库(Monorepo)结构的字段。它允许你在一个单独的 npm 项目中管理多个子包(或称为工作空间),使得你可以在一个统一的代码库中同时管理和发布多个模块或包。// 将 packages 和 libs 目录下的所有子包作为工作空间
{
  "workspaces": [
    "packages/*",
    "libs/*"
  ]
}
deprecated用于标记一个包或模块已不再推荐使用。这通常是由包的维护者添加的,表示该包已经过时,可能存在问题,或者不再继续维护。{
  "name": "old-package",
  "version": "1.0.0",
  "deprecated": "This package is no longer maintained. Please use 'new-package' instead."
}
dist包的分发信息。在包发布到 npm registry 后,npm 会自动为该包生成 dist 字段,并将其与包的 tarball、shasum 和 integrity 等信息一起存储。开发者通常不会手动添加 dist 字段,因为 npm 会自动处理这些信息。{
  "name": "my-package",
  "version": "1.0.0",
  "dist": {
    "tarball": "https://registry.npmjs.org/my-package/-/my-package-1.0.0.tgz",
    "shasum": "d41d8cd98f00b204e9800998ecf8427e",
    "integrity": "sha512-XXXXXXXXXXXXXXXXXXXXXXXXXXX"
  }
}
sideEffects

用于优化 JavaScript 模块的打包过程,尤其是在使用诸如 Webpack 这样的打包工具时。它告诉打包工具哪些模块或文件没有副作用,从而可以在树摇(Tree Shaking)过程中安全地移除未使用的代码。

false:整个项目中没有副作用,为使用的代码可以被安全的移除。

true:所有文件都包含副作用。

{
  "sideEffects": true/false
}

// 只有下面配置的文件有副作用

{
  "sideEffects": [
    "./src/some-file.js",
    "./src/some-other-file.js"
  ]
}

browser用于指定在浏览器环境下替代 Node.js 环境中的某些模块或功能。这通常用于开发同时支持 Node.js 和浏览器的库或模块,确保在浏览器中能够使用适当的替代模块或文件。// 假设你有一个包,它在 Node.js 中使用了 fs 和 path 模块,而这些模块在浏览器中并不可用。你可以使用 browser 字段来告诉打包工具(如 Webpack 或 Rollup)使用不同的实现。
{
  "name": "my-library",
  "version": "1.0.0",
  "browser": {
    "fs": false,  // 在浏览器环境中,禁用 'fs' 模块
    "path": "./browser/path.js"  // 在浏览器环境中,使用自定义的 'path.js' 替代 'path' 模块
  }
}
prettier

用于自动格式化代码,使代码风格统一,符合指定的规则。Prettier 支持多种编程语言(如 JavaScript、TypeScript、HTML、CSS、JSON 等),并且可以与各种编辑器(如 VS Code、Sublime Text 等)以及构建工具(如 Webpack、Gulp 等)集成,自动格式化代码。

semi:是否在每行代码末尾加分号,默认为 true。设置为 false 表示不加分号。
singleQuote:是否使用单引号,默认为 false(即使用双引号)。设置为 true 表示使用单引号。
tabWidth:缩进的空格数,默认是 2。
trailingComma:多行对象、数组等的最后一个元素是否加逗号。可以是 none、es5 或 all。

{
  "name": "my-project",
  "version": "1.0.0",
  "prettier": {
    "semi": true,  // 使用分号
    "singleQuote": false,  // 使用双引号
    "tabWidth": 4,  // 缩进为 2 个空格
    "trailingComma": "all"  // 在多行对象或数组最后一个元素后添加逗号
  }
}
directories用于指定项目中的目录结构。它主要用于指定项目中需要特别关注的目录,通常是用于某些工具或发布工具(如 npm)了解项目的结构,或者用于决定要包含哪些文件。
lib:指定项目的库文件目录,通常是源代码所在的目录。
bin:指定包含可执行文件的目录。
test:指定项目的测试文件目录。
doc:指定项目的文档目录。
man:指定手册页目录。
{
  "name": "my-package",
  "version": "1.0.0",
  "directories": {
    "lib": "src",
    "bin": "bin",
    "test": "tests",
    "doc": "docs"
  }
}

相关文章:

package.json 文件配置

创建 Node.js 的配置文件 package.json npm init -y package.json 文件配置说明 配置说明示例name指定项目的名称&#xff0c;必须是小写字母&#xff0c;可以包含字母、数字、连字符&#xff08;-&#xff09;或下划线&#xff08;_&#xff09;&#xff0c;不能有特殊字符…...

相机模数转换

模拟图像是什么&#xff1f; 模拟图像是指连续变化的图像&#xff0c;它通常来源于现实世界的物理场景&#xff0c;并通过光学系统&#xff08;如相机镜头&#xff09;投射到感光介质上。模拟图像是连续的&#xff0c;这意味着它在空间和颜色值上都有无穷的细节。例如&#xf…...

mysql大数据量分页查询

一、什么是‌MySQL大数据量分页查&#xff1f; MySQL大数据量分页查‌是指在使用MySQL数据库时&#xff0c;将大量数据分成多个较小的部分进行显示&#xff0c;以提高查询效率和用户体验。分页查询通常用于网页或应用程序中&#xff0c;以便用户能够逐步浏览结果集。 二、为什…...

组织结构改革:激活企业活力的 “源头活水”

难以适应市场变化、内部沟通与协作不畅、决策效率低下、运营成本增加、人才流失严重、员工士气下降、战略目标难以实现……企业如何根据市场环境变化和自身发展需求&#xff0c;灵活调整组织框架&#xff0c;赋能企业的持续健康发展&#xff1f; 某国有投资建设集团旗下的二级…...

金融风控项目-1

文章目录 一. 案例背景介绍二. 代码实现1. 加载数据2. 数据处理3. 查询 三. 业务解读 一. 案例背景介绍 通过对业务数据分析了解信贷业务状况 数据集说明 从开源数据改造而来&#xff0c;基本反映真实业务数据销售&#xff0c;客服可以忽略账单周期&#xff0c;放款日期账单金…...

Java常用设计模式面试题总结(内容详细,简单易懂)

设计模式的分类 创建型模式&#xff1a;通过隐藏对象创建的细节&#xff0c;避免直接使用 new 关键字实例化对象&#xff0c;从而使程序在判断和创建对象时更具灵活性。常见的模式包括&#xff1a; 工厂模式抽象工厂模式单例模式建造者模式原型模式 结构型模式&#xff1a;通…...

【Elasticsearch】文本分析Text analysis概述

文本分析概述 文本分析使 Elasticsearch 能够执行全文搜索&#xff0c;搜索结果会返回所有相关的结果&#xff0c;而不仅仅是完全匹配的结果。 如果你搜索“Quick fox jumps”&#xff0c;你可能希望找到包含“A quick brown fox jumps over the lazy dog”的文档&#xff0c…...

ATF系统安全从入门到精通

CSDN学院课程连接&#xff1a;https://edu.csdn.net/course/detail/39573...

C# 上位机--变量

C# 上位机--变量 在 C# 上位机开发领域&#xff0c;变量是构建程序逻辑的基础元素之一。它就像是一个容器&#xff0c;用于存储各种类型的数据&#xff0c;从简单的数值到复杂的对象。正确理解和使用变量&#xff0c;对于开发出高效、稳定且易于维护的上位机程序至关重要。本文…...

π 的奥秘:如何用有理数逼近无理数?

本文将围绕有理数、无理数、连续统以及它们之间的深刻联系展开讨论&#xff0c;并结合具体的数学理论如康托尔区间套定理、戴德金分割、柯西施瓦茨不等式等&#xff0c;进行简要探讨 由于本文并未深入探讨&#xff0c;可能存在部分不严谨的地方&#xff0c;也欢迎各位进行纠正…...

LeetCode --- 436周赛

题目列表 3446. 按对角线进行矩阵排序 3447. 将元素分配给有约束条件的组 3448. 统计可以被最后一个数位整除的子字符串数目 3449. 最大化游戏分数的最小值 一、按对角线进行矩阵排序 直接模拟&#xff0c;遍历每一个斜对角线&#xff0c;获取斜对角线上的数字&#xff0c;排…...

绘制中国平安股价的交互式 K 线图

在本文中,探索如何使用 Python 的强大库进行股市数据分析与可视化。我们将以中国平安(股票代码:sh601318)为例,展示如何获取其股票数据,并绘制一张交互式 K 线图。 K 线图是股市分析中不可或缺的工具,它能够直观地显示股票的波动情况,包括开盘价、收盘价、最高价和最低…...

【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第二节】

ISO 14229-1:2023 UDS诊断服务测试用例全解析&#xff08;ECU复位0x11服务&#xff09; 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025-02-12 关键词&#xff1a;UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 二、ECU复位服务&#xff08;0x11服务&…...

Unity URP的2D光照简介

官网工程&#xff0c;包括2d光照&#xff0c;动画&#xff0c;动效介绍&#xff1a; https://unity.com/cn/blog/games/happy-harvest-demo-latest-2d-techniques https://docs.unity3d.com/6000.0/Documentation/Manual/urp/Lights-2D-intro.html 人物脸部光照细节和脚上的阴影…...

自学人工智能大模型,满足7B模型的训练和微调以及推理,预算3万,如何选购电脑

如果你的预算是 3万元人民币&#xff0c;希望训练和微调 7B 参数规模的人工智能大模型&#xff08;如 LLaMA、Mistral 等&#xff09;&#xff0c;你需要一台高性能的深度学习工作站。在这个预算范围内&#xff0c;以下是推荐的配置&#xff1a; 1. 关键硬件配置 (1) GPU (显卡…...

shell脚本自动安装MySQL8

环境&#xff1a;centos7版本&#xff1a;8.0.28安装包&#xff1a;mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz 二进制包要求&#xff1a;安装包和shell脚本在同一目录下执行方式&#xff1a;sudo ./install_mysql8.sh #!/bin/bash# 定义MySQL安装目录和压缩包名称MYSQL_DIR…...

使用亚马逊针对 PyTorch 和 MinIO 的 S3 连接器进行模型检查点处理

2023 年 11 月&#xff0c;Amazon 宣布推出适用于 PyTorch 的 S3 连接器。适用于 PyTorch 的 Amazon S3 连接器提供了专为 S3 对象存储构建的 PyTorch 数据集基元&#xff08;数据集和数据加载器&#xff09;的实现。它支持用于随机数据访问模式的地图样式数据集和用于流式处理…...

DeepAR:一种用于时间序列预测的深度学习模型

介绍 DeepAR是一种基于递归神经网络&#xff08;RNN&#xff09;的时间序列预测模型&#xff0c;由亚马逊在2017年提出。它特别适用于处理多变量时间序列数据&#xff0c;并能够生成概率预测。DeepAR通过联合训练多个相关时间序列来提高预测性能&#xff0c;从而在实际应用中表…...

【无标题】《On Java中文版基础卷+进阶卷》书评

Java语言作为最热门的编程语言之一&#xff0c;关于Java语言的书更是数不胜数&#xff0c;而我选择这本《On Java中文版基础卷进阶卷》作为我学习Java语言的工具书。这本书的作者是《Java编程思想》的Bruce Eckel&#xff0c;《Java编程思想》在之前可谓是鼎鼎有名&#xff0c;…...

【鸿蒙开发】第二十九章 Stage模型-应用上下文Context、进程、线程

目录 1 Stage模型基本概念 1.1 开发流程 3 应用上下文Context的典型使用场景 3.1 获取应用文件路径 3.2 获取和修改加密分区 3.3 获取本应用中其他Module的Context 3.4 订阅进程内UIAbility生命周期变化 4 进程 4.1 概述 5 线程 5.1 线程类型 5.2 使用EventHub进行线…...

AI-Engine-Direct-Helper 快速上手及环境配置

AI-Engine-Direct-Helper 是一个强大的工具&#xff0c;旨在简化和加速在 Qualcomm 平台上开发 AI 应用的过程。通过提供统一的 API、跨平台支持和高效的执行性能&#xff0c;它为开发者提供了一个灵活且高效的开发环境。如果您正在使用 Qualcomm 平台进行 AI 开发&#xff0c;…...

网络安全产品架构图 网络安全相关产品

一、信息安全产品分类 背景 美国将网络和信息安全产品分了9类&#xff1a;鉴别、访问控制、入侵检测、防火墙、公钥基础设施、恶意程序代码防护、漏洞扫描、取证、介质清理或擦除。中国公安部将网络和信息安全产品分了7类&#xff1a;操作系统安全、数据库安全、网络安全、病毒…...

日常知识点之面试后反思裸写string类

1&#xff1a;实现一个字符串类。 简单汇总 最简单的方案&#xff0c;使用一个字符串指针&#xff0c;以及实际字符串长度即可。 参考stl的实现&#xff0c;为了提升string的性能&#xff0c;实际上单纯的字符串指针和实际长度是不够了&#xff0c;如上&#xff0c;有优化方案…...

Linux(socket网络编程)TCP连接

Linux&#xff08;socket网络编程&#xff09;TCP连接 基础文件目录函数系统进程控制函数fork()exec系列函数void abort(void)void assert(int expression)void exit(int status)void _exit(int status)int atexit(void (*func)(void))int on_exit(void (*function)(int,void*)…...

深入 JVM 虚拟机:字符串常量池演变与 intern() 方法工作原理解析

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 仓库主页: GitCode︱ Gitee ︱ Github 💖 欢迎点赞 👍 收藏 ⭐评论 📝 如有错误敬请纠正! 前言 在 Java 开发中,字符串常量池(String Constant…...

从零开始学习人工智能

从零开始学习人工智能可以按照以下步骤进行&#xff1a; 一、了解人工智能的基本概念 学习内容&#xff1a;了解人工智能的定义、发展历程、主要研究方向&#xff08;如机器学习、深度学习、自然语言处理、计算机视觉等&#xff09;、常见应用&#xff08;如语音识别、图像识别…...

解锁电商数据宝藏:淘宝商品详情API实战指南

在电商蓬勃发展的今天&#xff0c;数据已成为驱动业务增长的核心引擎。对于商家、开发者以及数据分析师而言&#xff0c;获取精准、实时的商品数据至关重要。而淘宝&#xff0c;作为国内最大的电商平台&#xff0c;其海量商品数据更是蕴含着巨大的价值。 本文将带你深入探索淘…...

Gui-Guider1.8.1 数字时钟控件找不到定义,无法编译

我们在Gui-Guider中使用的一些控件&#xff0c;生成后会发现在LVGL源码中找不到该控件的定义&#xff0c;这时因为Gui-Guider中的一些控件是其自己编写的而不是LVGL提供的&#xff0c;那么我们该如何应用呢&#xff1f;这里拿Digital Clock数字时钟控件举例&#xff1a; 这里我…...

多模态模型详解

多模态模型是什么 多模态模型是一种能够处理和理解多种数据类型&#xff08;如文本、图像、音频、视频等&#xff09;的机器学习模型&#xff0c;通过融合不同模态的信息来提升任务的性能。其核心在于利用不同模态之间的互补性&#xff0c;增强模型的鲁棒性和准确性。 如何融合…...

Unity3D实现显示模型线框(shader)

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、效果展示👉二、第一种方式👉二、第二种方式👉壁纸分享👉总结👉前言 在 Unity 中显示物体线框主要基于图形渲染管线和特定的渲染模式。 要显示物体的线框,通常有两种常见的方法:一种是利用内置的渲染…...

【实测】用全志A733平板搭建一个端侧Deepseek算力平台

随着DeepSeek 的蒸馏技术的横空出世&#xff0c;端侧 SoC 芯片上运行大模型成为可能。那么端侧芯片跑大模型的效果如何呢&#xff1f;本文将在全志 A733 芯片平台上部署一个 DeepSeek-R1:1.5B 模型&#xff0c;并进行实测效果展示。 端侧平台环境 设备&#xff1a;全志A733平板…...

新数据结构(7)——Object

Object类是所有类的父类&#xff0c;在 Java 中&#xff0c;每个类都直接或间接地继承自Object类&#xff0c;也就是说所有类都是object类的子类可以使用Object里的方法。 equals()和hashCode()是Java中Object类所包含的两个关键方法&#xff0c;下面将介绍两个方法。 和equa…...

数据结构-栈和队列的应用

目录 前言一、栈的应用&#xff08;迷宫问题&#xff09;1.1 问题描述1.2 算法选择1.3 算法精化1.4 算法实现1.5 问题结果 二、队列的应用&#xff08;农夫过河问题&#xff09;2.1 问题描述2.2 算法选择2.3 算法精化2.4 算法实现2.5 问题结果 总结 前言 本篇文章使用两个例子…...

【JavaScript】异步编程汇总

异步编程解决方案&#xff1a; 回调函数PromiseGeneratorawait / async 回调函数 回调函数是早期处理异步编程的主要方式&#xff0c;虽然它本身存在很多的缺陷&#xff0c;比如那个时候对于复杂的异步处理常常会出现回调地狱。 但是因为 JavaScript 中当时并没有很好的API来帮…...

【AI系列】从零开始学习大模型GPT (2)- Build a Large Language Model (From Scratch)

前序文章 【AI系列】从零开始学习大模型GPT (1)- Build a Large Language Model (From Scratch) Build a Large Language Model 背景第1章:理解大型语言模型第2章:处理文本数据第3章:编码Attention机制什么是Attention机制?Attention机制的基本原理数学表示应用总结为什么要…...

动态规划——路径问题②

文章目录 931. 下降路径最小和算法原理代码实现 64. 最小路径和算法原理代码实现 174. 地下城游戏算法原理代码实现 931. 下降路径最小和 题目链接&#xff1a;931. 下降路径最小和 算法原理 状态表示&#xff1a; 经验题目要求&#xff1a;dp[i][j]表示到达[i,j]位置时&…...

【每日关注】科技圈重要动态

时代新动态 2025 年 2 月 12 日科技圈重要动态总结全球 AI 治理新进展巴黎 AI 宣言签署&#xff0c;美英缺席 科技巨头合作与竞争苹果联姻阿里开发中国版AI功能DeepSeek生态持续扩展OpenAI拒绝马斯克收购&#xff0c;矛盾公开化 汽车行业动态小米汽车销量跃居新势力第二比亚迪智…...

Postgresql的三种备份方式_postgresql备份

这种方式可以在数据库正在使用的时候进行完整一致的备份&#xff0c;并不阻塞其它用户对数据库的访问。它会产生一个脚本文件&#xff0c;里面包含备份开始时&#xff0c;已创建的各种数据库对象的SQL语句和每个表中的数据。可以使用数据库提供的工具pg_dumpall和pg_dump来进行…...

Linux 配置 MySQL 定时自动备份到另一台服务器

Linux 配置 MySQL 定时自动备份到另一台服务器这里写自定义目录标题 前言1、配置服务器通信1.1&#xff1a;配置过程 2、编写自动备份sh脚本文件3&#xff1a;设置定时自动执行 前言 此方案可使一台服务器上的 MySQL 中的所有数据库每天 0 点自动转储为 .sql 文件&#xff0c;…...

CCF-GESP 等级考试 2024年6月认证C++二级真题解析

2024年6月真题 一、单选题&#xff08;每题2分&#xff0c;共30分&#xff09; 正确答案&#xff1a;C 考察知识点&#xff1a;计算机基础与编程环境 解析&#xff1a;CCF 组织的 GESP 认证考试第 1 级可选择的认证语言有 Scratch、Python、C &#xff0c;共 3 种。答案为C。 …...

vm虚拟机的一些操作命令

PowerShell命令 // 获取虚拟机列表&#xff1a; get-vm // 创建虚拟机&#xff1a; new-vm -Name "BrioDev75" -MemoryStartupBytes 16GB -Path "D:\Hyper-V" // 删除虚拟机&#xff1a; remove-vm -Name "BrioDev75" -Force (-Force参数是…...

sql难点

一、 假设你有一个查询&#xff0c;需要根据 id 是否为 null 来动态生成 SQL 条件&#xff1a; xml复制 <select id"getResources" resultType"Resource">SELECT * FROM resources<where><if test"id ! null">and id <!…...

【多模态大模型】系列1:Transformer Encoder——ViLT、ALBEF、VLMO

目录 1 ViLT2 ALBEF3 VLMO 1 ViLT ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision 图文多模态任务&#xff0c;关键是提取视觉特征和文本特征&#xff0c;然后对齐。在之前的多模态研究工作中&#xff0c;视觉侧通常需要一个目标检测器来…...

2.4 测试数据与初始化

测试数据与初始化 在 Spring Test 中&#xff0c;合理管理测试数据的初始化和清理是保证测试可靠性的关键。本章将介绍多种数据准备方式&#xff0c;涵盖 SQL 脚本执行、编程式初始化 和 动态数据生成&#xff0c;并提供最佳实践示例。 1. 使用 Sql 执行 SQL 脚本 作用 在测…...

DataBase【MySQL基础夯实使用说明(中)】

MySQL数据库 &#x1f3c6;当领导问你忙不忙&#xff0c;您怎么回复&#xff1f; &#x1f514;要让领导知道你很忙&#xff0c;但是你的事情紧急&#xff0c;我可以优先处理&#xff01; 文章目录 MySQL数据库前言一、SQL&#xff08;Structured Query Language&#xff09;1…...

Unity3D Shader 简析:变体与缓存详解

引言 在 Unity3D 中&#xff0c;Shader 是渲染管线的核心部分&#xff0c;负责控制物体的外观和材质表现。Shader 的变体&#xff08;Variants&#xff09;和缓存机制是优化渲染性能的关键。本文将深入探讨 Unity3D 中 Shader 变体的概念、缓存机制以及如何通过代码实现和管理…...

vuex基础介绍

/store/index.js import Vue from vue import Vuex from vuexVue.use(Vuex)/*** 创建并导出一个 Vuex 仓库实例* 仓库是一个存储应用所有状态的容器&#xff0c;并且提供了修改和获取状态的方法*/ export default new Vuex.Store({// state 是一个对象&#xff0c;用于存储应…...

OpenWRT中常说的LuCI是什么——LuCI介绍(一)

我相信每个玩openwrt的小伙伴都或多或少看到过luci这个东西&#xff0c;但luci到底是什么东西&#xff0c;可能还不够清楚&#xff0c;今天就趁机来介绍下&#xff0c;openwrt中的luci&#xff0c;到底是个什么东西。 什么是LuCI&#xff1f; 首先&#xff0c;LuCI是OpenWRT中…...

singleTaskAndroid的Activity启动模式知识点总结

一. 前提知识 1.1. 任务栈知识 二. Activity启动模式的学习 2.1 standard 2.2 singleTop 2.3.singleTask 2.4.singleInstance 引言&#xff1a; Activity作为四大组件之一&#xff0c;也可以说Activity是其中最重要的一个组件&#xff0c;其负责调节APP的视图&#xff…...

DeepSeek-V3 技术报告

1.摘要 为了减少开源模型与闭源模型的能力差距&#xff0c;我们提出了DeepSeek-V3&#xff0c;一个大的混合专家模型&#xff08;Mixture-of-Experts (MoE) &#xff09;&#xff0c;有6710亿参数&#xff0c;每个token会激活370亿参数。 DeepSeek-V3采用多头隐注意力&#xf…...