如何使用極狐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 命令。

  • publishConfigpackage.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/analyticsAnalytics@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} 后指定默認端口,例如 80443

在包含您 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 installyarn 時候出現 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 字符。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79956.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79956.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79956.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Matlab 基于Hough變換的人眼虹膜定位方法

1、內容簡介 Matlab220-基于Hough變換的人眼虹膜定位方法 可以交流、咨詢、答疑 2、內容說明 略 3、仿真分析 略 4、參考論文 略

chili調試筆記14 畫線 頁面布置 線條導出dxf

2025-05-08 09-05-06 llm畫線 頁面布置 expand有自己的格式 刪了就會按照子元素格式 不加px無效 沒有指定尺寸設置100%無效 怎么把線條導出dxf command({name: "file.export",display: "command.export",icon: "icon-export", }) export class…

藍綠發布與金絲雀發布

藍綠發布與金絲雀發布 一、藍綠發布&#xff1a;像「搬家」一樣安全上線1. 生活化故事2. 技術步驟拆解步驟①&#xff1a;初始狀態步驟②&#xff1a;部署新版本到綠環境步驟③&#xff1a;內部驗證綠環境步驟④&#xff1a;一鍵切換流量步驟⑤&#xff1a;監控與回滾 3. 藍綠發…

【2025五一數學建模競賽B題】 礦山數據處理問題|建模過程+完整代碼論文全解全析

你是否在尋找數學建模比賽的突破點&#xff1f;數學建模進階思路&#xff01; 作為經驗豐富的美賽O獎、國賽國一的數學建模團隊&#xff0c;我們將為你帶來本次數學建模競賽的全面解析。這個解決方案包不僅包括完整的代碼實現&#xff0c;還有詳盡的建模過程和解析&#xff0c…

JavaSE核心知識點02面向對象編程02-02(封裝、繼承、多態)

&#x1f91f;致敬讀者 &#x1f7e9;感謝閱讀&#x1f7e6;笑口常開&#x1f7ea;生日快樂?早點睡覺 &#x1f4d8;博主相關 &#x1f7e7;博主信息&#x1f7e8;博客首頁&#x1f7eb;專欄推薦&#x1f7e5;活動信息 文章目錄 JavaSE核心知識點02面向對象編程02-02&#…

Yolo遷移訓練-帶訓練源碼

目錄 下載Git 拉下yolo模型 下載labelimg 準備訓練集 遷移訓練 繼續訓練 下載Git Git - Downloading Package 拉下yolo模型 然后用克隆腳本拉下yolo模型 python clone_yolo.py import os import subprocess import sys import shutildef check_git_installed():"…

LangChain框架-PromptTemplate 詳解

摘要 本文聚焦于 LangChain 框架中PromptTemplate提示詞模板模塊的深度解析,主要參考langchain_core.prompts源碼模塊與官方文檔。系統梳理 LangChain 對提示詞模板的封裝邏輯與設計思路,旨在幫助讀者構建全面、深入的知識體系,為高效運用LangChain 框架的提示詞模板開發應用…

中小企業設備預測性維護三步構建法:從零到精的技術躍遷與中訊燭龍實踐

在工業4.0浪潮中&#xff0c;中小企業常陷入"設備故障頻發"與"數字化成本高企"的雙重困境。本文基于半導體、食品加工等行業實證數據&#xff0c;結合中訊燭龍系統技術突破&#xff0c;為中小企業提供一套零基礎、低門檻、可擴展的預測性維護實施框架&…

C30-函數

一 函數的優點 避免代碼冗長模塊化的設計思路(十分類似組裝電腦)按功能劃分,每個函數代表一個功能 二 函數的三要素 函數要先定義再使用(就像是變量一樣)三要素: 函數名→體現功能參數列表 比如yf(x)→x就是參數又如yf(x,y)→x,y就是參數→參數的個數取決于需求 返回值:比如…

【Spring Boot 多模塊項目】@MapperScan失效、MapperScannerConfigurer 報錯終極解決方案

在使用 Spring Boot 構建多模塊項目&#xff0c;集成 MyBatis-Plus 時&#xff0c;很多開發者會遇到類似如下啟動報錯&#xff1a; Error creating bean with name mapperScannerConfigurer ... Caused by: java.lang.IllegalArgumentException: Property basePackage is requ…

pimpl與unique_ptr的問題

PImpl與std::unique_ptr組合 pimpl(Pointer to Implementation)是C程序開發中非常常用的技巧之一&#xff0c;它的好處有&#xff1a; 節省程序編譯時間保持程序/庫的二進制兼容性隱藏實現細節 舉例一個常見的pimpl的使用示例&#xff1a; // a.h class Impl; //前置聲明 c…

C++類和對象:構造函數、析構函數、拷貝構造函數

引言 介紹&#xff1a;C類和對象&#xff1a;構造函數、析構函數、拷貝構造函數 _涂色_博主主頁 C基礎專欄 一、類的默認成員函數 先認識一下類中的默認成員函數&#xff1a; 默認成員函數就是用戶沒有顯式實現&#xff0c;編譯器會自動生成的成員函數稱為默認成員函數。?個類…

CTF - PWN之ORW記錄

CTF - Pwn之ORW記錄https://mp.weixin.qq.com/s/uiRtqCSopn6U6NqyKJ8I7Q

RabbitMQ 中的六大工作模式介紹與使用

文章目錄 簡單隊列&#xff08;Simple Queue&#xff09;模式配置類定義消費者定義發送消息測試消費 工作隊列&#xff08;Work Queues&#xff09;模式配置類定義消費者定義發送消息測試消費負載均衡調優 發布/訂閱&#xff08;Publish/Subscribe&#xff09;模式配置類定義消…

民宿管理系統6

普通管理員管理&#xff1a; 新增普通管理員&#xff1a; 前端效果&#xff1a; 前端代碼&#xff1a; <body> <div class"layui-fluid"><div class"layui-row"><div class"layui-form"><div class"layui-f…

vue3+ant design vue + Sortable實現多級表格列拖動

1、最近遇到個需求&#xff0c;需使用vue3ant design vue Sortable實現多級表格的表頭允許用戶拖拽移動。即當用戶拖拽一級表頭時&#xff0c;其對應的子級表頭及數據應同步移動&#xff0c;并且只允許一級非固定表頭允許拖拽。 2、代碼 <a-table:data-source"rowDat…

第五十四篇 AI與數據分析

一、AI數據分析就像做菜 想象你在廚房做一道新菜&#xff0c;AI數據分析的流程其實非常相似&#xff1a; 買菜&#xff08;獲取數據&#xff09; 去市場挑選新鮮蔬菜 從Excel/數據庫獲取數據例&#xff1a;pd.read_csv(超市銷售表.csv) 洗菜切菜&#xff08;清洗數據&#x…

差分OPA verilogaA 模型

做電路設計&#xff0c;需要提前用理想模型如VerilogA模型做驗證。這里分享一個由ahdlib庫里單端opamp改造而來的差分opamp。參考何樂年的《模擬集成電路設計與仿真》10.4節423頁&#xff1b; 描述的小信號模型如上。 VerilogA 用到了SRI/C&#xff0c;GBWgm/C,gaingm*r1等概念…

Solidity語言基礎:區塊鏈智能合約開發入門指南

一、Solidity概述 Solidity是以太坊生態系統中最重要的智能合約編程語言&#xff0c;由Gavin Wood于2014年提出。作為面向合約的高級語言&#xff0c;它結合了JavaScript、Python和C的語法特點&#xff0c;專為在以太坊虛擬機&#xff08;EVM&#xff09;上運行而設計。 核心…

開啟智能Kubernetes管理新時代:kubectl-ai讓操作更簡單!

在如今的科技世界中,Kubernetes 已經成為容器編排領域的標桿,幾乎所有現代應用的基礎設施都離不開它。然而,面對復雜的集群管理和日常運維,許多開發者常常感到無所適從。今天,我們將為大家介紹一款結合了人工智能的強大工具——kubectl-ai。它不僅能幫助開發者更加順暢地與…