mongoDB學習(docker)

docker 命令創建mongoDB

docker pull mongo
docker run -d --name my-mongo \-e MONGO_INITDB_ROOT_USERNAME=root \-e MONGO_INITDB_ROOT_PASSWORD=123456 \-v /my/data/mongo:/data/db \-p 27017:27017 \mongodocker run -d  --name my-mongo -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=123456 -p 27017:27017 mongodocker exec -it my-mongo mongosh -u root -p 123456

docker-compose創建mongoDB


目錄結構

建議這樣放:

project/

│── docker-compose.yml │

?── init-mongo.js │

?── mongo-data/ (數據會存這里)


init-mongo.js (初始化腳本)

db = db.getSiblingDB('myapp'); // 切換/創建數據庫 myapp// ========== users 集合 ==========
db.createCollection('users');// 插入用戶數據
db.users.insertMany([{ username: "alice", email: "alice@example.com", role: "admin" },{ username: "bob", email: "bob@example.com", role: "user" }
]);// 索引:用戶名唯一
db.users.createIndex({ username: 1 }, { unique: true });// 索引:郵箱唯一
db.users.createIndex({ email: 1 }, { unique: true });// 索引:角色 + 用戶名 組合索引(方便按角色查用戶并排序)
db.users.createIndex({ role: 1, username: 1 });// ========== accounts 集合 ==========
db.createCollection('accounts');// 插入賬戶數據
db.accounts.insertOne({ user: "alice", balance: 1000 });// 索引:user 字段(常用外鍵查詢)
db.accounts.createIndex({ user: 1 });// 索引:余額 balance 降序(方便做排行榜)
db.accounts.createIndex({ balance: -1 });

修改后的 docker-compose.yml

version: '3.8'services:mongodb:image: mongo:6.0container_name: my-mongorestart: alwaysenvironment:MONGO_INITDB_ROOT_USERNAME: rootMONGO_INITDB_ROOT_PASSWORD: 123456ports:- "27017:27017"volumes:- ./mongo-data:/data/db- ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:romongo-express:image: mongo-express:latestcontainer_name: my-mongo-expressrestart: alwaysports:- "8081:8081"environment:ME_CONFIG_MONGODB_ADMINUSERNAME: rootME_CONFIG_MONGODB_ADMINPASSWORD: 123456ME_CONFIG_MONGODB_SERVER: mongodbdepends_on:- mongodb

添加下面的配置可以設置express的用戶名和密碼,包括可以訪問的host

environment:ME_CONFIG_MONGODB_ADMINUSERNAME: rootME_CONFIG_MONGODB_ADMINPASSWORD: 123456ME_CONFIG_MONGODB_SERVER: mongodb# 添加以下配置解決警告ME_CONFIG_BASICAUTH_USERNAME: your_username  # 替換為你的用戶名ME_CONFIG_BASICAUTH_PASSWORD: your_password  # 替換為你的密碼ME_CONFIG_SERVER_ADDR: 127.0.0.1  # 限制只允許本地訪問

使用步驟

  1. init-mongo.js 放在和 docker-compose.yml 同一目錄

  2. 啟動:

    docker-compose up -d

  3. 第一次啟動時,MongoDB 會執行 init-mongo.js

    • 創建數據庫 myapp

    • usersaccounts 集合

    • 插入一些初始化數據

  4. ?打開瀏覽器訪問:
    • http://localhost:8081

      就能看到 Mongo Express 管理界面 ?


    • 📌 說明:MongoDB 數據依舊會保存在 ./mongo-data

    • 默認登錄就是 admin/ pass

    • mongo-express 會自動連到 mongodb 服務


?? 注意:

  • 初始化腳本 只會在容器第一次啟動且數據目錄為空時執行

  • 如果你已經跑過一次,需要先清掉數據目錄:

    docker-compose down -v

這樣 MongoDB 的 root 用戶就是:

  • 用戶名:root

  • 密碼:123456

連接地址:

mongodb://root:123456@localhost:27017

進入容器并打開 mongosh

docker exec -it my-mongo mongosh -u root -p 123456


📌 常見操作命令

1. 查看所有數據庫

show dbs

📌 會顯示已有的數據庫,例如:

admin 40.00 KiB

config 72.00 KiB

local 72.00 KiB

myapp 100.00 KiB


2. 切換數據庫(沒有會自動創建)

use myapp

👉 進入 myapp 數據庫。


3. 查看當前數據庫

db

👉 輸出當前數據庫名字,比如:

myapp


4. 查看當前數據庫里的所有集合

show collections

👉 例如:

users accounts


5. 查看所有用戶

admin 數據庫 里管理用戶。先切換到 admin:

use admin

查看所有用戶:

db.getUsers()

輸出類似:

[ { "_id": "admin.root", "user": "root", "db": "admin", "roles": [ { "role": "root", "db": "admin" } ] } ]


6. 查詢集合里的數據

查詢所有文檔

db.users.find()

格式化輸出

db.users.find().pretty()

查詢條件(例子:用戶名是 alice)

db.users.find({ username: "alice" })


7. 插入數據

db.users.insertOne({ username: "charlie", email: "charlie@example.com", role: "user" })


8. 刪除數據

db.users.deleteOne({ username: "bob" })


9. 更新數據

db.users.updateOne( { username: "alice" }, { $set: { role: "superadmin" } } )


10. 查看集合索引

db.users.getIndexes()


? 這幾個命令基本覆蓋了你日常開發時 建庫 → 切庫 → 查表 → 插入/更新/刪除數據 → 管理用戶 的常見需求。

下面把 MongoDB Shell(mongosh)常用命令速查直接原樣貼出來(含“怎么建庫”的正確做法)。

?? 提醒:MongoDB 沒有獨立的“create database”命令。做法是:use 庫名 之后 創建集合或插入文檔,庫就會真正創建。

# =========================
# 連接(Docker 容器里)
# =========================
docker exec -it my-mongo mongosh -u root -p 123456# 也可以用連接串(本機/外部):
mongosh "mongodb://root:123456@localhost:27017/admin"
# 先連到 admin,再切到業務庫:
use myapp# =========================
# 數據庫相關
# =========================
show dbs                      # 查看所有數據庫
db                           # 查看當前數據庫名
use myapp                    # 切換數據庫(不存在時只是切換上下文)# ——「建庫」正確姿勢(任意一種都會真正創建數據庫)——
use myapp
db.createCollection("users")  # 方式1:創建集合
# 或
db.temp.insertOne({a:1})      # 方式2:插入任意文檔(會自動建庫+集合)db.dropDatabase()             # 刪除當前數據庫(慎用)# =========================
# 集合(表)管理
# =========================
show collections                            # 列出所有集合
db.createCollection("users")                # 新建集合
db.users.renameCollection("members")        # 重命名集合
db.users.drop()                             # 刪除集合# =========================
# 文檔 CRUD
# =========================
db.users.insertOne({username:"alice", role:"admin"})
db.users.insertMany([{username:"bob"},{username:"charlie"}])db.users.find()                             # 查詢全部
db.users.find({username:"alice"})           # 條件查詢
db.users.find({}, {username:1, _id:0})      # 投影(只要某些字段)
#在 MongoDB 中,db.users.find({}, {username:1, _id:0}) 
#這個查詢中 _id 沒有返回,是因為你顯式指定了 _id:0,這表示排除 _id 字段。
#MongoDB 的投影(projection)規則是:
#字段名:1 表示包含該字段
#字段名:0 表示排除該字段
#而 _id 字段是一個特殊情況:
#它默認會被包含在查詢結果中,即使你沒有顯式指定 _id:1
#只有當你顯式指定 _id:0 時,才會排除它db.users.find().sort({username:1}).limit(10).skip(20)  # 排序/分頁db.users.updateOne({username:"alice"}, {$set:{role:"superadmin"}})
db.users.updateMany({role:"user"}, {$inc:{score:1}})
db.users.replaceOne({_id:ObjectId("...")}, {username:"new"})db.users.deleteOne({username:"bob"})
db.users.deleteMany({role:"temp"})db.users.countDocuments({role:"admin"})     # 計數# =========================
# 索引
# =========================
db.users.createIndex({username:1}, {unique:true})   # 唯一索引
db.users.createIndex({role:1, username:1})          # 復合索引
db.users.getIndexes()                               # 查看索引
db.users.dropIndex("role_1_username_1")             # 刪除某個索引
db.users.dropIndexes()                              # 刪除所有二級索引(慎用)# =========================
# 聚合(Aggregation)常用模板
# =========================
db.users.aggregate([{$match: {role: "user"}},                 # 過濾{$group: {_id: "$role", cnt: {$sum: 1}}},# 分組計數{$sort: {cnt: -1}},                      # 排序{$limit: 10}                              # 取前10
])# =========================
# 用戶與權限(需在 admin 庫)
# =========================
use admin
db.getUsers()                               # 查看所有用戶
db.createUser({user: "appuser",pwd: "123456",roles: [{role:"readWrite", db:"myapp"}]
})
db.updateUser("appuser", {roles:[{role:"read", db:"myapp"}]})
db.grantRolesToUser("appuser", [{role:"readWrite", db:"myapp"}])
db.revokeRolesFromUser("appuser", [{role:"readWrite", db:"myapp"}])
db.dropUser("appuser")# 常用內置角色舉例:
#   read, readWrite, dbAdmin, userAdmin
#   clusterAdmin(集群級,慎用)
#   root(最高權限,慎用)# =========================
# 實用命令
# =========================
db.stats()                                  # 當前庫統計信息
db.users.stats()                            # 集合統計信息
db.version()                                # 服務器版本
show roles                                  # 查看角色(在 admin)
show users                                  # 查看用戶(在當前庫)# =========================
# 連接串小技巧(authSource)
# =========================
# 用 admin 創建的 root 賬號訪問 myapp 時,常見報錯是認證失敗;
# 請在連接串加上 ?authSource=admin
# 例:
# mongodb://root:123456@localhost:27017/myapp?authSource=admin

MongoDB 查詢進階速查表

# =========================
# 1. 條件查詢運算符
# =========================
db.users.find({ age: { $gt: 18 } })                # > 18
db.users.find({ age: { $gte: 18 } })               # >= 18
db.users.find({ age: { $lt: 30 } })                # < 30
db.users.find({ age: { $lte: 30 } })               # <= 30
db.users.find({ age: { $ne: 20 } })                # != 20db.users.find({ role: { $in: ["admin", "user"] } })  # in
db.users.find({ role: { $nin: ["guest"] } })         # not indb.users.find({ $or: [ {role:"admin"}, {age:{$lt:18}} ] })   # OR 查詢
db.users.find({ $and: [ {age:{$gte:18}}, {age:{$lte:30}} ] }) # AND 查詢# =========================
# 2. 正則 & 模糊查詢
# =========================
db.users.find({ username: /alice/ })               # 模糊包含 "alice"
db.users.find({ username: /^a/ })                  # 以 a 開頭
db.users.find({ username: /e$/ })                  # 以 e 結尾
db.users.find({ email: { $regex: ".*@gmail.com$" } }) # 正則完整寫法# =========================
# 3. 投影(只取某些字段)
# =========================
db.users.find({}, { username:1, email:1, _id:0 })# =========================
# 4. 排序 & 分頁
# =========================
db.users.find().sort({ age: -1 })                  # 按年齡降序
db.users.find().skip(20).limit(10)                 # 跳過20條,取10條
db.users.find().sort({age:-1}).skip(0).limit(5)    # 排序 + 前5條# =========================
# 5. 聚合(Aggregation)
# =========================
# 統計每個角色有多少用戶
db.users.aggregate([{ $group: { _id: "$role", count: { $sum: 1 } } }
])# 統計平均年齡
db.users.aggregate([{ $group: { _id: null, avgAge: { $avg: "$age" } } }
])# 按角色分組,統計平均年齡
db.users.aggregate([{ $group: { _id: "$role", avgAge: { $avg: "$age" } } }
])# 查找年齡大于18的用戶,并按年齡降序,只取前5個
db.users.aggregate([{ $match: { age: { $gt: 18 } } },{ $sort: { age: -1 } },{ $limit: 5 }
])# =========================
# 6. 去重(distinct)
# =========================
db.users.distinct("role")                         # 去重查詢字段值# =========================
# 7. 常見更新技巧
# =========================
db.users.updateOne({ username:"alice" }, { $set: { age: 25 } })   # 修改字段
db.users.updateOne({ username:"bob" }, { $unset: { email: "" } }) # 刪除字段
db.users.updateOne({ username:"bob" }, { $inc: { score: 5 } })    # 數字自增
db.users.updateOne({ username:"bob" }, { $push: { tags: "vip" } })# 數組 push
db.users.updateOne({ username:"bob" }, { $addToSet: { tags: "vip" } }) # 數組去重添加
db.users.updateOne({ username:"bob" }, { $pull: { tags: "old" } })# 從數組移除值# =========================
# 8. 文檔計數
# =========================
db.users.countDocuments({ role:"admin" })         # 統計滿足條件的數量

📌 總結:

  • 基本查詢$gt/$lt/$in/$or/$regex

  • 分頁排序.sort().skip().limit()

  • 聚合管道$match + $group + $sort + $limit

  • 去重distinct

  • 更新操作符$set / $unset / $inc / $push / $pull / $addToSet

MongoDB 聚合管道(Aggregation Pipeline)進階清單

# =========================
# 1. 基礎:過濾 + 分組 + 統計
# =========================
# 按角色統計用戶數量
db.users.aggregate([{ $group: { _id: "$role", count: { $sum: 1 } } }
])# 按角色統計平均年齡
db.users.aggregate([{ $group: { _id: "$role", avgAge: { $avg: "$age" } } }
])# =========================
# 2. 排序 & 限制
# =========================
# 查找年齡 > 18 的前 5 個用戶(按年齡降序)
db.users.aggregate([{ $match: { age: { $gt: 18 } } },{ $sort: { age: -1 } },{ $limit: 5 }
])# =========================
# 3. 投影 & 字段重命名
# =========================
# 只保留 username 和 email,并重命名 email -> contact
db.users.aggregate([{ $project: { username: 1, contact: "$email", _id: 0 } }
])# =========================
# 4. 字段計算
# =========================
# 增加一個新字段 isAdult(true/false)
db.users.aggregate([{ $addFields: { isAdult: { $gte: ["$age", 18] } } }
])# 年齡換算成年份(假設 age 表示歲數)
db.users.aggregate([{ $project: { username: 1, birthYear: { $subtract: [2025, "$age"] } } }
])# =========================
# 5. 多表關聯($lookup)
# =========================
# users 表 和 accounts 表關聯
db.users.aggregate([{ $lookup: {from: "accounts",          # 關聯的集合localField: "username",    # 當前集合字段foreignField: "user",      # 關聯集合字段as: "accountInfo"          # 輸出字段名}}
])# =========================
# 6. 拆分數組($unwind)
# =========================
# 用戶文檔里有 tags: ["vip", "premium"]
db.users.aggregate([{ $unwind: "$tags" },   # 每個 tag 拆成一行{ $group: { _id: "$tags", count: { $sum: 1 } } }
])# =========================
# 7. 分組統計 + 條件過濾
# =========================
# 按角色統計平均年齡,但只看 count > 2 的角色
db.users.aggregate([{ $group: { _id: "$role", avgAge: { $avg: "$age" }, count: { $sum: 1 } } },{ $match: { count: { $gt: 2 } } }
])# =========================
# 8. 多階段管道綜合示例
# =========================
# 找出余額最高的前 3 個用戶(users + accounts 聯合查詢)
db.users.aggregate([{ $lookup: {from: "accounts",localField: "username",foreignField: "user",as: "accountInfo"}},{ $unwind: "$accountInfo" },{ $project: { username: 1, balance: "$accountInfo.balance", _id: 0 } },{ $sort: { balance: -1 } },{ $limit: 3 }
])

🔑 常用聚合階段速記

階段作用
$match過濾文檔(相當于 WHERE
$group分組統計(相當于 GROUP BY
$sort排序
$limit限制條數
$skip跳過條數(分頁用)
$project投影、重命名字段
$addFields新增計算字段
$lookup關聯另一張集合(相當于 SQL JOIN
$unwind拆分數組字段為多行
$count輸出統計結果
$facet一次執行多個子管道(多維統計)

📊 用這套組合拳,你基本可以在 MongoDB 里實現 報表系統 / 數據分析 的 80% 需求。

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

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

相關文章

軟件測試(四):等價類和判定表

1.等價類劃分表例&#xff1a;qq號等價類測試用例&#xff1a;無論有效無效&#xff0c;對應的用例都只舉一個數據例子&#xff08;例子在其對應的用例情況區間任選一個即可&#xff09;自測案例寫完測試用例后執行測試用例驗證&#xff08;借助工具DDSP&#xff09;實際結果與…

week5-[二維數組]翻轉

week5-[二維數組]翻轉 題目描述 給定一個 nnn\times nnn 的正方形二維數組&#xff0c;將它旋轉 180180180 度后輸出。 輸入格式 輸入共 n1n 1n1 行。 第 111 行 111 個正整數 nnn。 接下來 nnn 行&#xff0c;每行 nnn 個正整數 aija_{ij}aij? 表示這個二維數組。 輸出格式 …

微調大模型并部署服務提供外部調用

微調大模型并部署服務提供外部調用1.背景知識介紹說明LoRA 微調算法LoRA原理&#xff1a;微調常見框架2. 環境搭建下載并使用docker compose部署 LLaMA-Factory3. 微調微調結束之后導出模型4. 本地運行模型5. 服務http調用驗證應用到的技術 微調框架&#xff08; LLama-Factory…

命令行操作:邏輯運算符、重定向與管道

命令行操作&#xff1a;邏輯運算符、重定向與管道前言一、邏輯運算符1.1. 邏輯運算符 && (AND)1.2. 邏輯運算符 || (OR)1.3. 標準文件描述符 (FD)二、重定向2.1 重定向: > 與 >>2.2 重定向錯誤輸出: 2>/ 與 2>>2.3 POSIX 推薦(經常使用)三、管道 (順…

IDA Pro 逆向安卓 SO 庫實戰指南:從靜態分析到動態調試

IDA Pro 逆向安卓 SO 庫是一個系統性的工程。下面我將為你提供一個從環境準備、基礎靜態分析到高級動態調試的完整實戰指南。一、 準備工作與環境搭建 所需工具IDA Pro: 主力逆向工具&#xff0c;建議使用 7.7 或更高版本&#xff0c;對 ARM/ARM64 架構支持更好。目標 APK:…

Python爬蟲(47)Python異步爬蟲與K8S彈性伸縮:構建百萬級并發數據采集引擎

目錄一、背景與行業痛點二、核心技術架構解析2.1 異步爬蟲引擎設計2.2 K8S彈性伸縮架構三、生產環境實踐數據3.1 性能基準測試3.2 成本優化效果四、高級優化技巧4.1 協程級熔斷降級4.2 預測式擴容五、總結&#x1f308;Python爬蟲相關文章&#xff08;推薦&#xff09;一、背景…

處理器的雙發射是什么?

處理器的雙發射是什么? 這是一個處理器微架構層面的概念,對于理解現代高性能CPU(包括一些Cortex-M7/M55/M85等高端MCU內核)如何提升性能至關重要。 核心摘要 雙發射 是一種處理器設計技術,允許CPU的譯碼器在一個時鐘周期內,同時解碼并派發兩條指令到不同的執行單元中去…

麒麟操作系統掛載NAS服務器

前言&#xff1a;因信創整改&#xff0c;需將原服務器的服務全部遷移到信創服務器&#xff0c;在部署完應用后&#xff0c;發現外掛了NAS服務&#xff08;可用df -h查看掛載文件&#xff09;&#xff0c;于是在信創服務器上需要掛載NAS服務器。在Linux上掛載NAS服務器可以通過多…

qt配置ros2環境,簡單版本

因為不同的系統環境會有差異&#xff0c;先把我的環境介紹如下&#xff1a; 系統&#xff1a;Ubuntu22.04 ROS版本&#xff1a;ros2 humble Qt版本&#xff1a;qt-5.14.2 要配置Qt中的ros環境&#xff0c;需要在Qt的系統環境中添加2個變量&#xff0c;一個是編譯環境變量、一個…

【基于C# + HALCON的工業視覺系統開發實戰】三十六、PCB焊點缺陷檢測:0漏檢的局部變形匹配技術

摘要:針對PCB焊點檢測中虛焊、錫珠、偏移三大核心缺陷,本文提出基于局部變形匹配與黃金模板的工業級解決方案。系統采用"同軸光源+四向可調支架"的硬件布局消除器件陰影,結合HALCON 24.11的局部變形匹配算法適應PCB熱膨脹形變。通過多尺度模板庫自學習機制實現8秒…

諾基亞無人機網絡(NDN-Nokia Drone Networks):面向工業運營的全自動無人機解決方案

諾基亞無人機網絡(NDN-Nokia Drone Networks)&#xff1a;面向工業運營的全自動無人機解決方案諾基亞無人機網絡 (NDN) 是一款先進的全自動無人機一體化解決方案&#xff0c;旨在提升和數字化各種工業和公共安全用例。這款多功能 BVLOS 解決方案基于先進的蜂窩連接&#xff0c;…

OpenTelemetry 在 Spring Boot 項目中的3種集成方式

目錄 1. 自動埋點&#xff08;Java Agent&#xff09; 2. 注解驅動&#xff08;WithSpan&#xff09; 3. 手動埋點&#xff08;SDK 編程&#xff09; 配置關鍵點 方案選擇建議 OpenTelemetry 在 Spring Boot 項目中的應用主要有以下三種方式&#xff0c;按實現復雜度由低到…

nvue文件text標簽 不同樣式的文本在同一段落顯示

參考鏈接&#xff1a;nvue中處理text為塊級元素的替代解決方法_nvue 塊級元素-CSDN博客 實現效果&#xff1a; nvue的text是塊級元素&#xff0c;用上層加粗的絕對定位覆蓋底層的文本實現 <view class"cus-text-area"><!-- nvue的text是塊級元素&#xff0…

STM32的ADC寄存器操作

ADC硬件電路ADC的硬件電路主要由輸入電路&#xff0c;觸發信號電路&#xff0c;數據寄存器電路&#xff0c;中斷電路還有數據總線這及部分構成。輸入信號通道ADC的通道輸入到轉換器&#xff0c;每個ADC有多達18個通道&#xff0c;可測量16個外部和2個內部信號源&#xff0c;溫度…

Java 實現HTML轉Word:從HTML文件與字符串到可編輯Word文檔

在實際開發中&#xff0c;將HTML頁面或內容轉換為Word文檔是一項常見需求。無論是將網頁報表導出為正式文檔&#xff0c;還是將合同、發票等頁面內容生成可編輯的Word文件&#xff0c;這種轉換都能顯著提升文檔的復用性和歸檔價值。然而&#xff0c;HTML與Word在結構和渲染機制…

華為L420國產筆記本(統信UOS桌面專業版1070)安裝openEuler2403虛擬機

本文探討在華為L420國產筆記本&#xff08;操作系統為統信UOS桌面專業版1070&#xff09;中安裝openEuler2403的arm版虛擬機。 一、測試環境 1、硬件設備 華為L420國產筆記本&#xff0c;CPU為華為麒麟9006C&#xff0c;內存16G 2、操作系統 統信UOS桌面專業版1070 二、安…

【STM32】將 FreeRTOS移植到STM32F103RCT6 詳細流程

這篇文章是將 FreeRTOS移植到STM32F103RCT6 詳細流程。創建用于移植的根文件夾&#xff0c;如 FreeRTOS-F103。也可以命名為別的名稱。進入 FreeRTOS-F103 文件夾&#xff0c;在其內創建以下幾個子文件夾&#xff1a;apps&#xff0c;doc&#xff0c;drivers&#xff0c;FreeRT…

京東招java開發

java開發&#xff08;崗位信息經過jobleap.cn授權&#xff0c;可在CSDN發布&#xff09;京東 四川職位描述1、負責企業金融資金、支付基礎支撐相關系統建設&#xff1b; 2、負責重點項目、日常需求的承接&#xff0c;按期保質保量交付&#xff1b; 3、負責系統的日常維護及技術…

文本處理與模型對比:BERT, Prompt, Regex, TF-IDF

1. BERT (Bidirectional Encoder Representations from Transformers) BERT是一種基于Transformer架構的深度雙向預訓練語言模型。它通過在海量文本上進行預訓練&#xff08;如掩碼語言模型任務&#xff09;&#xff0c;學習到豐富的語言表征&#xff0c;并可以通過微調&#x…

流量迷局 - 理解負載均衡(L4/L7)與CDN背后的“隱形路由

《網絡迷蹤:SRE的TCP/IP故障排查藝術》 系列第七篇:流量迷局 - 理解負載均衡(L4/L7)與CDN背后的“隱形路由” “案發現場”: 你在排查一個問題時,讓用戶提供他ping你服務域名的結果。 在北京的用戶,ping app.mycompany.com,顯示的IP地址是 111.222.1.100。 在廣州的用戶…