如何使用极狐GitLab 软件包仓库功能托管 npm?
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有:
- 极狐GitLab 中文文档
- 极狐GitLab 中文论坛
- 极狐GitLab 官网
软件包库中的 npm 包 (BASIC ALL)
npm 是 JavaScript 和 Node.js 的默认包管理器。开发者使用 npm 共享和重用代码,管理依赖项和简化项目工作流。在极狐GitLab 中,npm 包在软件开发生命周期中的重要角色。
对于 npm 包管理器客户端使用的特定 API 端点的文档,请参见 npm API 文档。
了解如何构建 npm 或 yarn 包。
对软件包仓库进行认证
您必须对软件包仓库进行认证来发布或安装来自私有项目或私有群组的软件包。如果项目获群组是公开的,则您无需认证。如果项目是内部的,则您必须是极狐GitLab 实例的注册用户。匿名用户无法从内部项目中拉取软件包。
要进行认证,您可以使用:
- 一个具有
api
范围的个人访问令牌。 - 一个具有
read_package_registry
或/和write_package_registry
范围的部署令牌。 - 一个 CI 作业令牌。
如果您的阻止在使用双因素认证(2FA),您必须使用具有 api
范围的个人访问令牌。如果您通过 CI/CD 流水线发布软件包,则您必须使用 CI 作业令牌。更多详情,可查阅令牌指南。
不要使用文档中未写明的认证方法。未写明的认证方法可能在将来删除。
使用 .npmrc
进行认证
在您 package.json
文件的同一目录中创建或编辑 .npmrc
文件。在 .npmrc
文件中包含以下行:
//your_domain_name/api/v4/projects/your_project_id/packages/npm/:_authToken="${NPM_TOKEN}"
如果您正安装:
- 从实例:
//your_domain_name/api/v4/packages/npm/:_authToken="${NPM_TOKEN}"
- 从群组:
//your_domain_name/api/v4/groups/your_group_id/-/packages/npm/:_authToken="${NPM_TOKEN}"
- 从项目:
//your_domain_name/api/v4/projects/your_project_id/packages/npm/:_authToken="${NPM_TOKEN}"
在这些示例中:
- 将
your_domain_name
替换为您的域名,例如gitlab.com
。 - 将
your_group_id
替换为您在群组主页中找到的群组 ID。 - 将
your_project_id
替换为您在 项目概览页 中找到的项目 ID。 - 将
your_token
替换为部署令牌,群组访问令牌、项目访问令牌或个人访问令牌。
WARNING:千万不要在 .npmrc
文件中直接硬编码极狐GitLab 令牌(或任何令牌),也不要在可以提交到仓库的任何其他文件中硬编码令牌。
使用 npm config set
进行认证
要这么做:
npm config set -- //your_domain_name/:_authToken=your_token
对于版本 7 及更早版本,使用完整的端点 URL。
如果您正在安装:
- 从实例:
npm config set -- //your_domain_name/api/v4/packages/npm/:_authToken=your_token
- 从群组:
npm config set -- //your_domain_name/api/v4/groups/your_group_id/-/packages/npm/:_authToken=your_token
- 从项目:
npm config set -- //your_domain_name/api/v4/projects/your_project_id/packages/npm/:_authToken=your_token
在这些示例中:
- 将
your_domain_name
替换为您的域名,例如gitlab.com
。 - 将
your_group_id
替换为您在群组主页中找到的群组 ID。 - 将
your_project_id
替换为您在 项目概览页 中找到的项目 ID。 - 将
your_token
替换为部署令牌,群组访问令牌、项目访问令牌或个人访问令牌。
NOTE:在 npm 版本 8 及以后版本中,您可以在 _authToken
参数中使用 URI 片段代替完整 URL。然而,群组特定端点不受支持。
设置仓库 URL
要从极狐GitLab 软件包仓库发布或安装软件包,您需要配置 npm 以正确使用仓库 URL。配置方法和 URL 结构取决于您是否发布或安装软件包。
在配置仓库 URL 之前,了解不同配置方法的范围是非常重要的:
-
.npmrc
文件:配置是文件所在文件夹的本地配置。 -
npm config set
命令:这将修改全局 npm 配置,并影响在您系统上运行的所有 npm 命令。 -
publishConfig
在package.json
中:此配置仅适用于发布该软件包,只适用于发布该软件包。
WARNING:运行 npm config set
更改全局 npm 配置。此更改影响您的系统上运行的所有 npm 命令,无论当前工作目录是什么。使用此方法时要小心,尤其是在共享系统上。
发布软件包
当发布软件包时,使用项目端点。URL 结构是:
https://gitlab.example.com/api/v4/projects/<project_id>/packages/npm/
将 gitlab.example.com
替换为您的极狐GitLab 实例域名,将 <project_id>
替换为您的项目 ID。要配置此 URL,使用如下的方法:
::Tabs
:::TabTitle .npmrc file
在您的项目根目录下创建或编辑 .npmrc
文件:
@scope:registry=https://gitlab.example.com/api/v4/projects/<project_id>/packages/npm/ //gitlab.example.com/api/v4/projects/<project_id>/packages/npm/:_authToken="${NPM_TOKEN}"
:::TabTitle npm config
使用 npm config set
命令
npm config set @scope:registry=https://gitlab.example.com/api/v4/projects/<project_id>/packages/npm/
:::TabTitle package.json
将 publishConfig 部分添加到您的 package.json
中:
{"publishConfig": {"@scope:registry": "https://gitlab.example.com/api/v4/projects/<project_id>/packages/npm/"}
}
::EndTabs
用您的软件包范围替换 @scope
。
安装软件包
当安装软件包时,您可以使用项目、群组或实例级端点。端点结构会根据不同情况变化:
您可以使用如下之一的方法来配置这些 URL:
当您安装软件包时,您可以使用项目、群组或实例端点。端点结构会根据不同情况变化。要配置这些 URL,使用以下之一的方法:
::Tabs
:::TabTitle .npmrc file
在您项目的根目录下,创建或编辑 .npmrc
文件。根据需要使用适当的 URL:
- 针对项目:
npm config set @scope:registry=https://gitlab.example.com/api/v4/projects/<project_id>/packages/npm/
- 针对群组:
npm config set @scope:registry=https://gitlab.example.com/api/v4/groups/<group_id>/-/packages/npm/
- 针对实例:
npm config set @scope:registry=https://gitlab.example.com/api/v4/packages/npm/
:::TabTitle npm config
和适当的 URL 一起使用 npm config set
命令:
- 针对项目:
npm config set @scope:registry=https://gitlab.example.com/api/v4/projects/<project_id>/packages/npm/
- 针对群组:
npm config set @scope:registry=https://gitlab.example.com/api/v4/groups/<group_id>/-/packages/npm/
- 针对实例:
npm config set @scope:registry=https://gitlab.example.com/api/v4/packages/npm/
::EndTabs
将 gitlab.example.com
、<project_id>
、<group_id>
和 @scope
替换为您的极狐GitLab 实例和软件包的值。
当您配置玩您的仓库 URL 后,参阅认证部分内容进行认证设置。
发布到极狐GitLab 软件包仓库
要将 npm 软件包发布到极狐GitLab 软件包仓库,您必须是被认证的。
命名约定
取决于您安装的软件包,您可能需要遵循命名约定。
您可以使用三个 API 端点之一来安装软件包:
-
实例:当您有多个 npm 软件包在不同的极狐GitLab 群组或在自己的命名空间中时使用。
-
群组:当您有多个 npm 软件包在不同的项目下,且它们位于相同的群组或子群组时使用。
-
项目:当您有少量的 npm 软件包,它们不在相同的极狐GitLab 群组时使用。
如果您有计划从 项目 或 群组 安装软件包,那么您不必遵循命名约定。
如果您计划从实例 安装软件包,那么您必须使用范围命名您的软件包。范围软件包以 @
开头,格式为 @owner/package-name
。您可以在 .npmrc
文件中设置范围,或通过在 package.json
中使用 publishConfig
选项来设置范围。
- 用于
@scope
的值是托管软件包的项目的根名称,而不是拥有该软件包自身源代码的项目的根名称。作用域名称应该使用小写形式。 - 软件包名称可以是任何您想要的名称
项目 URL | 所在的软件包 | 范围 | 完整的软件包名称 |
---|---|---|---|
https://gitlab.com/my-org/engineering-group/analytics | Analytics | @my-org | @my-org/package-name |
确保您在 package.json
文件中的软件包名称符合此约定:
"name": "@my-org/package-name"
通过命令行发布软件包
当您完成认证后,发布软件包:
npm publish
如果您使用 .npmrc
文件进行认证,设置预期环境变量:
NPM_TOKEN=your_token npm publish
您的软件包现在应该发布到了软件包仓库。
如果上传的软件包有多个 package.json
文件,只使用第一个找到的,并忽略其他的。
通过使用 CI/CD 流水线发布软件包
当使用 CI/CD 流水线发布软件包时,您可以使用预定义变量 ${CI_PROJECT_ID}
和 ${CI_JOB_TOKEN}
来使用您项目的软件包仓库进行认证。我们使用这些变量在 CI/CD 流水线执行时创建 .npmrc
文件来进行认证。
WARNING:当生成 .npmrc
文件时,不要在 ${CI_SERVER_HOST}
后指定默认端口,例如 80
或 443
。
在包含您 package.json
文件的极狐GitLab 项目中,编辑或创建一个 .gitlab-ci.yml
文件。例如:
default:image: node:lateststages:- deploypublish-npm:stage: deployscript:- echo "@scope:registry=https://${CI_SERVER_HOST}/api/v4/projects/${CI_PROJECT_ID}/packages/npm/" > .npmrc- echo "//${CI_SERVER_HOST}/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=${CI_JOB_TOKEN}" >> .npmrc- npm publish
- 将
@scope
替换为要发布的软件包的范围。
当流水线中的 publish-npm
作业运行时,您的软件包将发布到软件包仓库。
安装软件包
如果多个软件包具有相同的名称和版本,当您安装软件包时,最近发布的软件包将被检索。
您可以从极狐GitLab 项目、群组或实例安装软件包:
-
实例:在您有许多 npm 包在不同的极狐GitLab 群组或在自己的命名空间中时使用。
-
群组:在您有许多项目在同一极狐GitLab 群组中时使用。
-
项目:在您有少量软件包,它们不在同一个极狐GitLab 群组中时使用。
从实例安装
WARNING:要从实例安装软件包,软件包必须遵循命名约定来发布。
1.对软件包仓库进行认证。
2.设置仓库:
npm config set @scope:registry https://your_domain_name.com/api/v4/packages/npm/
- 将
@scope
替换为您要从其安装软件包的项目的根级别群组。 - 将
your_domain_name
替换为您的域名,例如gitlab.com
。 - 将
your_token
替换为部署令牌,群组访问令牌、项目访问令牌或个人访问令牌。
3.安装软件包:
npm install @scope/my-package
从群组安装
- 引入于极狐GitLab 16.0,使用名为
npm_group_level_endpoints
的功能标志。默认禁用。- 在极狐GitLab 16.1 中 GA,功能标志
npm_group_level_endpoints
被移除。
1.对软件包仓库进行认证。
2.设置仓库:
npm config set @scope:registry=https://your_domain_name/api/v4/groups/your_group_id/-/packages/npm/
- 将
@scope
替换为您要从其安装软件包的项目的根级别群组。 - 将
your_domain_name
替换为您的域名,例如 gitlab.com。 - 将
your_group_id
替换为您的群组 ID,可以在群组的主页中找到。
3.安装软件包:
npm install @scope/my-package
从项目安装
1.对软件包仓库进行认证。
2.设置仓库:
npm config set @scope:registry=https://your_domain_name/api/v4/projects/your_project_id/packages/npm/
- 将
@scope
替换为您要从其安装软件包的项目的根级别群组。 - 将
your_domain_name
替换为您的域名,例如gitlab.com
。 - 将
your_project_id
替换为您在 项目概览页 中找到的项目 ID。
3.安装软件包
npm install @scope/my-package
软件包转发至 npmjs.com
- 引入于极狐GitLab 12.9。
- 在 GitLab 17.0 中,角色从维护者更改为所有者。
当在软件包仓库中未找到 npm 软件包时,极狐GitLab 将响应 HTTP 重定向,以便请求客户端可以重新发送请求到 npmjs.com。
管理员可以在持续集成设置中禁用此行为。
群组所有者可以在群组的 软件包和仓库 设置中禁用此行为。
弃用一个软件包
- 引入于极狐GitLab 16.0。
您可以弃用一个软件包以便在获取该软件包时显示弃用警告。
先决条件:
-
和删除软件包相同的权限。
-
对软件包仓库进行认证。
从命令行中,运行:
npm deprecate @scope/package "Deprecation message"
CLI 还可以接受 @scope/package
的版本范围。比如:
npm deprecate @scope/package "All package versions are deprecated"
npm deprecate @scope/package@1.0.1 "Only version 1.0.1 is deprecated"
npm deprecate @scope/package@"< 1.0.5" "All package versions less than 1.0.5 are deprecated"
移除弃用警告
要移除软件包弃用警告,请为消息指定空字符串(空字符串)。比如:
npm deprecate @scope/package ""
使用小贴士
从其他组织安装 npm 软件包
您可以将软件包请求路由至极狐GitLab 之外的组织和用户。
要这么做,请在 .npmrc
文件中添加行。替换 @my-other-org
为您的组织或群组,并使用您组织的 URL。名称是大小写敏感的,必须与您的组织或群组名称完全匹配。
@scope:registry=https://my_domain_name.com/api/v4/packages/npm/
@my-other-org:registry=https://my_domain_name.example.com/api/v4/packages/npm/
npm 元数据
极狐GitLab 软件包仓库将如下属性暴露给 npm 客户端:
-
name
-
versions
-
name
-
version
-
deprecated
-
dependencies
-
devDependencies
-
bundleDependencies
-
peerDependencies
-
bin
-
directories
-
dist
-
engines
-
_hasShrinkwrap
-
hasInstallScript
:如果此版本具有安装脚本,则为true
。
-
添加 npm 发行版标签
您可以为新发布的软件包添加发行版标签。标签是可选的,只能为一个软件包分配一个标签。
当您发布一个没有标签的软件包时,默认使用 latest
标签。当您安装一个未指定标签或版本的软件包时,则使用 latest
标签。
支持的 dist-tag
命令示例:
npm publish @scope/package --tag # Publish a package with new tag
npm dist-tag add @scope/package@version my-tag # Add a tag to an existing package
npm dist-tag ls @scope/package # List all tags under the package
npm dist-tag rm @scope/package@version my-tag # Delete a tag from the package
npm install @scope/package@my-tag # Install a specific tag
从 CI/CD
- 引入于极狐GitLab 15.10。
您可以使用CI_JOB_TOKEN
或部署令牌在极狐GitLab CI/CD 作业中运行 npm dist-tag
命令。比如:
npm-deploy-job:script:- echo "//${CI_SERVER_HOST}/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=${CI_JOB_TOKEN}">.npmrc- npm dist-tag add @scope/package@version my-tag
由于 npm 6.9.0 的一个 bug,删除分发标签失败。确保您的 npm 版本是 6.9.1 或更高版本。
支持的 CLI 命令
极狐GitLab npm 仓库支持如下的 npm CLI (npm
) 和 yarn CLI (yarn
) 命令:
-
npm install
:安装 npm 软件包。 -
npm publish
:发布 npm 软件包到仓库。 -
npm dist-tag add
:为 npm 软件包添加发行版标签。 -
npm dist-tag ls
:列出软件包的发行版标签。 -
npm dist-tag rm
:删除发行版标签。 -
npm ci
:直接从您的package-lock.json
文件中安装 npm 软件包。 -
npm view
:展示软件包元数据。 -
npm pack
:从软件包创建 tarball。 -
npm deprecate
:弃用软件包版本。
故障排查
npm 日志显示不正确
您可能会遇到如下错误:
npm ERR! A complete log of this run can be found in: .npm/_logs/<date>-debug-0
如果日志没有出现在.npm/_logs/
目录中,您可以复制日志到根目录,然后在那里查看它:
script:- npm install --loglevel verbose- cp -r /root/.npm/_logs/ .artifacts:paths:- './_logs
npm 日志会想产物一样被拷贝至 /root/.npm/_logs/
。
在执行 npm install
或 yarn
时候出现 404 Not Found
错误
使用 CI_JOB_TOKEN
来安装依赖于另外一个项目中的 npm 软件包时,您可能会遇到 404 Not Found 错误。您需要使用具有访问包和所有依赖项的令牌进行认证。
如果软件包和其依赖项位于不同的项目,但位于同一群组,您可以使用群组部署令牌:
//gitlab.example.com/api/v4/packages/npm/:_authToken=<group-token>
@group-scope:registry=https://gitlab.example.com/api/v4/packages/npm/
如果软件包和它的依赖在多个群组中,您可以使用具有访问所有群组或单个项目用户的个人访问令牌:
//gitlab.example.com/api/v4/packages/npm/:_authToken=<personal-access-token>
@group-1:registry=https://gitlab.example.com/api/v4/packages/npm/
@group-2:registry=https://gitlab.example.com/api/v4/packages/npm/
WARNING:要小心对待个人访问令牌。阅读我们的令牌安全考量来管理个人访问令牌(例如,设置短期到期日期和使用最小范围)。
npm publish
指向默认的 npm 仓库 (registry.npmjs.org)
请确保您软件包的范围在您的 package.json
文件和 .npmrc
文件中一致。
比如,如果您在极狐GitLab 中的项目名称为 @scope/my-package
,那么您的 package.json
文件应该如下所示:
{"name": "@scope/my-package"
}
以及 .npmrc
文件应该如下所示:
@scope:registry=https://your_domain_name/api/v4/projects/your_project_id/packages/npm/
//your_domain_name/api/v4/projects/your_project_id/packages/npm/:_authToken="${NPM_TOKEN}"
npm install
返回 npm ERR! 403 Forbidden
如果您遇到此错误,请确保:
-
在您的项目设置中启用了软件包仓库。尽管默认情况下该功能是启用的,但您可以禁用它。
-
您的令牌没有过期且具有适当的权限。
-
在给定范围内不存在同名或同版本的软件包。
-
给定范围的软件包仓库 URL包含尾随斜杠:
-
正确:
//gitlab.example.com/api/v4/packages/npm/
-
错误:
//gitlab.example.com/api/v4/packages/npm
-
npm publish
返回 npm ERR! 400 Bad Request
如果您遇到此错误,可能是以下问题导致的。
软件包名称不符合名称约定
您的软件包名称可能不符合 @scope/package-name 软件包命名约定。
确保名称符合约定,包括大小写。然后再次尝试发布。
软件包已存在
您的软件包已经发不到了相同 root 命名空间下的其他项目中,因此无法使用相同的名称再次发布。
即使之前发布的软件包名称相同,但版本不同,也是如此。
软件包 JSON 文件过大
请确保您的 package.json
文件不超过 20,000 字符。
相关文章:
如何使用极狐GitLab 软件包仓库功能托管 npm?
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 软件包库中的 npm 包 (BASIC ALL) npm 是 JavaScript 和 Node.js 的默认包管理器。开发者使用 npm 共享和重用代码ÿ…...
uniapp自定义底部导航栏h5有效果小程序无效的解决方案
在使用 uni-app 开发跨端应用时,常见问题之一是自定义底部导航栏(tabbar)在H5端有效,但在小程序端无效。这是因为小程序端的页面结构和生命周期与H5有差异,且小程序端的原生tabbar有更高的优先级,覆盖了自定…...
开发搭载阿里云平台的物联网APP(支持数据接收与发送)
一、开发环境准备 工具安装 HBuilderX:下载并安装最新版(支持Vue.js和uni-app框架)阿里云IoT SDK:使用JavaScript版SDK(如aliyun-iot-mqtt或mqtt.js)插件安装:HBuilderX插件市场搜索安装mqtt相关…...
Flowchart 流程图的基本用法
以下是 Flowchart 流程图 的基本用法整理,涵盖核心概念、符号含义、绘制步骤及注意事项,助你高效表达流程逻辑: 一、流程图的核心作用 可视化流程:将复杂步骤转化为直观图形,便于理解和分析。梳理逻辑:明确…...
Excel模版下载文件导入
工作中经常遇到Excel模板下载,然后填好后再导入的情况,简单记录下,方便下次使用 Excel模版下载(返回Base64) 模板文件存放位置 import java.util.Base64; import org.apache.commons.io.IOUtils; import org.sprin…...
深入了解linux系统—— 进程控制
进程创建 fork函数 在Linux操作系统中,我们可以通过fork函数来创建一个子进程; 这是一个系统调用,创建子进程成功时,返回0给子进程,返回子进程的pid给父进程;创建子进程失败则返回-1给父进程。 我们就可…...
【前端基础】7、CSS的字体属性(font相关)
一、font-size:设置字体大小 设置方法: 具体数值单位 例如:100px 也可以用em为单位:1em代表100%,2em代表200%……0.5em代表50%。 px方式: em方式: 但是设置em的时候具体是多大呢?…...
学习整理使用php将SimpleXMLElement 对象解析成数组格式的方法
学习整理使用php将SimpleXMLElement 对象解析成数组格式的方法 要将 SimpleXMLElement 对象解析成数组格式,您可以使用 PHP 的 json_decode 和 json_encode 函数。首先,将 SimpleXMLElement 对象转换为 JSON 字符串,然后将这个字符串解码成数…...
MSF(3)免杀混淆
声明!本文章所有的工具分享仅仅只是供大家学习交流为主,切勿用于非法用途,如有任何触犯法律的行为,均与本人及团队无关!!! 一、前言 前面说了木马的捆绑,dll,exe,hta等密…...
经典密码学算法实现
# AES-128 加密算法的规范实现(不使用外部库) # ECB模式S_BOX [0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B,0xFE, 0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0,0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0x…...
idea里maven自定义的setting.xml文件不生效问题
问题描述: 内网环境中:maven选择选择自定义的maven文件夹时,使用的是自定义的setting.xml和本地仓库,怎么都读取不到仓库的依赖; 分析: 1.可能是setting.xml文件里没有配置本地仓库的路径; 2…...
注意力机制(Attention)
1. 注意力认知和应用 AM: Attention Mechanism,注意力机制。 根据眼球注视的方向,采集显著特征部位数据: 注意力示意图: 注意力机制是一种让模型根据任务需求动态地关注输入数据中重要部分的机制。通过注意力机制&…...
【java】使用iText实现pdf文件增加水印功能
maven依赖 <dependencies><dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.2.5</version><type>pom</type></dependency> </dependencies>实现代码 前…...
TextIn ParseX重磅功能更新:支持切换公式输出形式、表格解析优化、新增电子档PDF去印章
ParseX重要版本更新内容速读 - 新增公式解析参数 formula_level,支持 LaTeX / Text 灵活切换; - 表格解析优化单元格内换行输出; - 导出excel时,图片链接放在单元格内; - 新增电子档pdf去印章功能。 体验文档解析…...
禁止idea联网自动更新通过防火墙方式
防火墙方式禁止idea更新检测,解决idea无限循环触发密钥填充流程。 1.首先打开控制面板找到高级设置 2.点击出站规则 3.新建规则 4.选择程序 5.找到idea路径 6.下一步 7.阻止连接 8.全选 9.输入禁止idea的名称 10.至此idea自动更新禁用完成...
面向智能体开发的声明式语言:可行性分析与未来图景
面向智能体开发的声明式语言:可行性分析与未来图景 一、技术演进的必然性:从“脚本化AI”到“声明式智能体” 当前AI开发仍停留在“脚本化AI”阶段:开发者通过Python/Java编写条件判断调用LLM API,如同用汇编语言编写操作系统。…...
【Bug经验分享】SourceTree用户设置必须被修复/SSH 主机密钥未缓存(踩坑)
文章目录 配置错误问题原因配置错误问题解决主机密钥缓存问题原因主机密钥缓存问题解决 更多相关内容可查看 配置错误问题原因 电脑太卡,曾多次强制关机,在关机前没有关闭SourceTree,导致配置错误等问题 配置错误问题解决 方式一ÿ…...
http Status 400 - Bbad request 网站网页经常报 HTTP 400 错误,清缓存后就好了的原因
目录 一、HTTP 400 错误的常见成因(一)问题 URL(二)缓存与 Cookie 异常(三)请求头信息错误(四)请求体数据格式不正确(五)文件尺寸超标(六)请求方法不当二、清缓存为何能奏效三、其他可以尝试的解决办法(一)重新检查 URL(二)暂时关闭浏览器插件(三)切换网络环…...
六个仓库合并为一个仓库,保留master和develop分支的bat脚本
利用git subtree可以实现多个仓库合并为一个仓库,手动操作起来太麻烦了,今天花了点时间写了一个可执行的脚本,现在操作起来就方便多了。 1、本地新建setup.bat文件 2、用编辑器打开(我用的是Notepad) 3、把下面代码…...
新能源汽车中的NVM计时与RTC计时:区别与应用详解
在新能源汽车的电子控制系统中,时间管理至关重要,而NVM计时(Non-Volatile Memory Timing)和RTC计时(Real-Time Clock)是两种不同的时间记录机制。虽然它们都与时间相关,但在工作原理、应用场景和…...
✨WordToCard使用分享✨
家人们,今天发现了一个超好用的工具——WordToCard!😜 它可以把WordToCard文档转换成漂亮的知识卡片,学习笔记、知识整理和内容分享都变得超轻松~🤗 支持各种WordToCard语法,像标题、列表、代…...
内网和外网怎么互通?外网访问内网的几种简单方式
在企业或家庭网络中,经常会遇到不同内网环境下网络互通问题。例如,当公司本地局域网内有个办公OA网站,在办公室内电脑上网可以登录使用,但在家带宽下就无法直接通信访问到。这就需要我们采取一些实用的内外网互通技巧来解决这个问…...
Mac中Docker下载与安装
目录 Docker下载安装配置 版本查询以及问题处理配置国内镜像在Docker中安装软件Nginx Docker 下载 官网:https://www.docker.com/get-started/ 或者 安装 配置 这里我们选择 Accept 选择默认配置就行,Docker 会自动设置一些大多数开发人员必要的配…...
固件测试:mac串口工具推荐
串口工具对固件测试来说非常重要,因为需要经常看日志,Windows上有Xshell和secureCRT,用起来很方便,尤其可以保存日志,并且可以进行日志分割。 mac上用什么串口工具呢,今天给大家推荐CoolTerm。 CoolTerm …...
41.防静电的系列措施
静电干扰的处理措施 1. ESD放电特征2. 静电防护电路设计措施3. ESD防护结构措施4. 案例分析 1. ESD放电特征 (1)放电电流tr≈1nS,ESD保护器件响应时间应小于1nS; (2)频率集中在几十MHz到500MHz;…...
Jmeter进行http接口测试
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1、jmeter-http接口测试脚本 jmeter进行http接口测试的主要步骤(1.添加线程组 2.添加http请求 3.在http请求中写入接口的URL,路径&#x…...
Ubuntu也开始锈化了?Ubuntu 计划在 25.10 版本开始引入 Rust Coreutils
上个月,jnsgruk发表了《未来20年的Ubuntu工程》(Engineering Ubuntu For the Next 20 Years)一文,其中概述了打算在未来几年中如何发展Ubuntu的四个关键主题。在这篇文章中,重点讨论 了“现代化”。在很多方面对Ubuntu…...
C++命名空间、内联与捕获
命名空间namespace 最常见的命名空间是std,你一定非常熟悉,也就是: using namespace std;命名空间的基本格式 注意,要在头文件里面定义! namespace namespace_name{data_type function_name(data_type parameter){data_type result;//function contentreturn result;}…...
PostgreSQL 系统管理函数详解
PostgreSQL 系统管理函数详解 PostgreSQL 提供了一系列强大的系统管理函数,用于数据库维护、监控和配置。这些函数可分为多个类别,以下是主要功能的详细说明: 一、数据库配置函数 1. 参数管理函数 -- 查看所有配置参数 SELECT name, sett…...
mdadm 报错: buffer overflow detected
最近跑 blktest (https://github.com/osandov/blktests) 时发现 md/001 的测试失败了 单独执行,最后定位到是 mdadm 命令报错: buffer overflow detected 这个 bug 目前已经修复: https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id827e1870f3205…...
java ReentrantLock
线程同步工具。可以替代 synchronized . private final ReentrantLock reentrantLock new ReentrantLock();void testTask1 () {reentrantLock.lock(); // 获取锁try {System.out.println(Thread.currentThread().getName() " 进入临界区");// 模拟执行业务逻辑Th…...
kettle从入门到精通 第九十六课 ETL之kettle Elasticsearch 增删改查彻底掌握
场景: 群里有小伙伴咨询kettle从Elasticsearch中抽取数据,群里老师们纷纷响应,vip小伙伴是不是有中受宠若惊的感觉。 今天我们使用kettle通过es的原生rest接口来进行操作es,开整。 前提:本篇文章基于elasticsearch:7.…...
Kafka的核心组件有哪些?简要说明其作用。 (Producer、Consumer、Broker、Topic、Partition、ZooKeeper)
Kafka 核心组件解析 1. 基础架构图解 ┌─────────┐ ┌─────────┐ ┌─────────┐ │Producer │───▶ │ Broker │ ◀─── │Consumer │ └─────────┘ └─────────┘ └────────…...
Missashe考研日记-day34
Missashe考研日记-day34 1 专业课408 学习时间:3h学习内容: 今天是学习I/O管理第二小节的内容,听了课也做了题,这是操作系统倒数第二节知识了,还差最后一节就完结了。知识点回顾: 1.I/O核心子系统&#x…...
机器人跑拉松是商业噱头还是技术进步的必然体现
一、机器人跑拉松是商业噱头还是技术进步的必然体现 机器人参与马拉松赛事究竟是营销噱头还是技术进步的必然要求,需要从技术验证、行业推动、公众认知以及争议焦点等多个维度综合分析。基于全球首场人形机器人半程马拉松(2025年北京亦庄赛事࿰…...
传输层协议 1.TCP 2.UDP
传输层协议 1.TCP 2.UDP TCP协议 回顾内容 传输层功能:定义应用层协议数据报文的端口号,流量控制对原始数据进行分段处理 传输层所提供服务 传输连接服务数据传输服务:流量控制、差错控制、序列控制 一、传输层的TCP协议 1.面向连接的…...
LLM :Function Call、MCP协议与A2A协议
LLM 的函数调用、模型上下文协议 (MCP) 和 Agent to Agent (A2A) 协议:概念、区别与实例对比 引言:LLM 不断演进的格局 大型语言模型 (LLM) 的日益精进,使其能力已超越简单的文本生成,迈向与现实世界进行复杂交互的新阶段。为了…...
当当狸智能天文望远镜 TW2 | 用科技触摸星辰,让探索触手可及
当科技邂逅星空,每个普通人都能成为宇宙的追光者 伽利略用望远镜揭开宇宙面纱的 400 年后,当当狸以颠覆传统的设计,让天文观测从专业领域走入千家万户。当当狸智能天文望远镜 TW2,重新定义「观星自由」—— 无需专业知识ÿ…...
白杨SEO:如何查看百度、抖音、微信、微博、小红书、知乎、B站、视频号、快手等7天内最热门话题及流量关键词有哪些?使用方法和免费工具推荐以及注意事项【干货】
大家好,我是白杨SEO,专注SEO十年以上,全网SEO流量实战派,AI搜索优化研究者。 (温馨提醒:本文有点长,看不完建议先收藏或星标,后面慢慢看哈) 最近,不管是在白…...
Spring AI 之 AI核心概念
模型 人工智能(AI)模型是用于处理和生成信息的算法,通常旨在模拟人类的认知功能。这些模型通过从大规模数据集中学习模式和规律,能够生成预测结果、文本、图像或其他形式的输出,从而增强各行业应用的效能。 AI 模型种类繁多,每种模型都适用于特定的应用场景。虽然以 Ch…...
微软输入法常用快捷键介绍以及调教技巧
微软输入法(Microsoft Pinyin Input Method)是 Windows 系统内置的中文输入工具,以其高效、智能化的特点广受用户喜爱。掌握其常用快捷键和特殊模式可以显著提升输入效率。本文将介绍微软输入法在 Windows 10/11 环境下的常用快捷键及 U 模式…...
基于大模型的输卵管妊娠全流程预测与治疗方案研究报告
一、引言 1.1 研究背景与意义 输卵管妊娠作为异位妊娠中最为常见的类型,严重威胁着女性的生殖健康和生命安全。受精卵在输卵管内着床发育,随着胚胎的生长,输卵管无法提供足够的空间和营养支持,极易引发输卵管破裂、大出血等严重并发症,若救治不及时,甚至会导致孕产妇死…...
16.Excel:打印技巧
一 区域打印 不用打印整个表格,比如只想打印框选出来的信息。 选中区域调整列宽。 二 整表打印 选中整个工作表, 如果调完边距后仍然打印不完全,就用缩放功能。 三 居中打印 打印部分区域的时候,预览图不在居中。 四 行号打印 五 …...
AI驱动的Kubernetes管理:kubectl-ai 如何简化你的云原生运维
AI驱动的Kubernetes管理:kubectl-ai 如何简化你的云原生运维 kubectl-ai 项目概览核心能力:AI 如何赋能 kubectl自然语言的魔力:从繁琐命令到简单对话智能的命令生成与执行不仅仅是执行:结果的可解释性广泛的 AI 模型支持…...
maven基本介绍
Maven是一个常用的项目构建工具,用于管理Java项目的构建、依赖管理和项目信息管理。它可以帮助开发人员自动化构建过程,统一项目结构和构建规范,并管理项目所需的外部依赖库。 Maven通过一个项目对象模型(Project Object Model&a…...
SPL量化 BBIC(多空指标)
BBIC 是一种将不同天数移动平均线加权平均之后的综合指标,属于均线型指标,一般选用 3 日、6 日、12 日、24 日等 4 条平均线。BBIC 越小股价越强势,BBIC < 1 为多头行情, BBIC>1 为空头行情。 计算公式: 1. 3 日…...
【ArcGIS Pro微课1000例】0068:Pro原来可以制作演示文稿(PPT)
文章目录 一、新建演示文稿二、插入页面1. 插入地图2. 插入空白文档3. 插入图像4. 插入视频三、播放与保存一、新建演示文稿 打开软件,新建一个地图文档,再点击【新建演示文稿】: 创建的演示文档会默认保存在目录中的演示文稿文件夹下。 然后可以对文档进行简单的设计,例如…...
【论文阅读】Reconstructive Neuron Pruning for Backdoor Defense
我们的主要贡献包括: 我们引入了在相同样本集上进行神经元“遗忘”和“恢复”的新技术,并揭示了这种简单的基于重构的学习过程可以帮助暴露DNNs中的后门神经元。我们提出了一个新的防御方法——重构神经元剪枝(RNP),它…...
[数据处理] 3. 数据集读取
👋 你好!这里有实用干货与深度分享✨✨ 若有帮助,欢迎: 👍 点赞 | ⭐ 收藏 | 💬 评论 | ➕ 关注 ,解锁更多精彩! 📁 收藏专栏即可第一时间获取最新推送🔔…...
Ceph 原理与集群配置
一、Ceph 工作原理 1.1.为什么学习 Ceph? 在学习了 NFS 存储之后,我们仍然需要学习 Ceph 存储。这主要是因为不同的存储系统适用于不同的场景,NFS 虽然有其适用之处,但也存在一定的局限性。而 Ceph 能够满足现代分布式、大规模、…...