MongoDB 基礎

一、MongoDB 基礎概念

1. 什么是 MongoDB

  • MongoDB 是一個文檔型數據庫,數據以類似 JSON 的文檔形式存儲,使用 BSON 格式。
  • 設計理念是應對大數據量1、高性能和靈活性需求。
  • 數據組織方式:數據庫→2集合→文檔,其中集合類似于關系型數據庫的表,文檔類似于行。

2. 主要特點

3456-?文檔導向存儲:以 JSON-like 格式存儲,數據結構靈活。

  • 索引優化查詢:7可對任意屬性創建索引,提升查詢效率。
  • *數據鏡像與擴展性8*:通過副本集實現數據冗余和高可用。
  • 水平擴展與分片9:利用分片技術將數據分布到多個節點。
  • 強大的查詢語言10:支持復雜查詢表達式,包括內嵌對象和數組查詢。
  • 靈活的數據更新11:使用 update () 命令可替換整個文檔或更新指定字段。
  • MapReduce1213批量處理:用于大規模數據處理和聚合操作,Map 和 Reduce 函數用 JavaScript 編寫。
  • GridFS 大文件1415存儲:存儲和檢索大于 BSON 文檔大小限制的文件。
  • 多語言支持:支16持 RUBY、PYTHON、JAVA 等多種編程語言。

3. 核心概念對3比

SQL 術語 / 概念MongoDB 術語 / 概念解釋 / 說明
databasedatabase數據庫
tablecollection數據庫表 / 集合
rowdocument數據記錄行 / 文檔
columnfield數據字段 / 域
indexindex索引
primary keyprimary key主鍵,MongoDB 自動將_id 字段設置為主鍵
table joins-表連接,MongoDB 不支持

二、MongoDB 安裝與啟動

1. 安裝前準備

  • 安裝 Linux 平臺依賴包:dnf install libcurl openssl -y
  • 下載 MongoDB 安裝17包并解壓:tar -zxvf mongodb-linux-x86_64-rhel8-8.0.8.tgz
  • 將解壓包拷貝到指定目錄18:mv mongodb-linux-x86_64-rhel88-8.0.8 /usr/local/mongodb

2. 配置環境變19量

  • 將 MongoDB 可執行文件添加到 PATH 路徑:
echo 'export PATH=/usr/local/mongodb/bin:$PATH' > /etc/profile
source /etc/profile

3. 創建數據庫目20錄

  • 數據存儲目錄:/var/lib/mongodb
  • 日志文件目錄:/va{insert\_element\_16\_}r/log/mongodb
  • 創建目錄并設置權限:
    22```bash
    mkdir -p /var/lib/mongo
    mkdir -p /var/log/mongodb
    chown whoami /var/lib/mongo
    chown whoami /var/log/mongodb
### 4. 編譯安裝Op{insert\_element\_18\_}enSSL11
- 安裝編譯工具:`dnf install -y gcc make perl`。
- 配置、編譯和安裝Ope{insert\_element\_19\_}nSSL:
```bash
tar xzf openssl-1.1.w.tar.gz
cd openssl-1.1.1w
./config -prefix=/opt/openssl11 --openssldir=/opt/openssl/ssl
make -j$(nproc)
make install

5. 設置 Open24SSL11 環境變量

echo 'export LD_LIBRARY_PATH=/opt/openssl11/lib:$LD_LIBRARY_PATH' | sudo tee /etc/profile.d/openssl11.sh
source /etc/profile.d/openssl11.sh

6. 啟動 Mong25oDB 服務

mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork

啟動成功后會顯示子進程啟動信26息。

三、MongoDB27?Shell 使用

1. 安裝 MongoDB Shell

  • 解壓安裝包并復制 mongosh 二進制文件到 PATH 目錄:
tar xzf mongosh-2.5.0-linux-x64-openssl3.tgz
cd mongosh-2.5.0-linux-x64-openssl3/bin
cp mongosh /usr/local/bin/
cp mongosh_crypt_v1.so /usr/local/lib/

2. 連接 Mong28oDB 服務器

  • 基本連接命令:mongosh --host <hostname> --port <port>
  • 默認連接本地服務器:{insert\_element\_25\_}mongosh,成功連接后會顯示 MongoDB 和 mongosh 版本信息。

四、數據庫管理、

?1. 查看數據庫

  • 查看所有數據庫:show dbs
  • 查看當前使用的數據庫:31db

2. 創建數據庫32

  • 使用use DATABASE_NAME命令,若數據庫不存在則自動創建。
  • 示例:
use runoob
switched to db runoob

3. 刪除數據庫

34- 使用db.dropDatabase()方法。

  • 示例:
use myDatabase
db.dropDatabase()

4. 默認與系統數36據庫

  • 默認數據庫:test,未指定數據庫時數據默認存儲在此。
  • 系統內置數據庫37:
    • admin:存儲用戶身份信息和全局權限。
    • config:分片38集群中存儲分片元數據。
    • local:存儲當39前節點的副本集狀態和操作日志。

五、集合管理

?1. 查看集合

  • 使用show collectionsshow tables命令。

2. 創建集合

41- 使用db.createCollection(name, options)方法。

  • 示例:創建固定大小集合
db.createCollection("myComplexCollection", {capped: true,size: 10485760,max: 5000,validator: {$jsonSchema: {required: ["name", "email"],bsonType: "object",properties: {name: { bsonType: "string" },email: { bsonType: "string", pattern: ".+@.+" }}}},validationLevel: "strict",storageEngine: { wiredTiger: { configString: "block_compressor=zstd" } }
})

3. 重命名集合

43- 使用db.adminCommand({ renameCollection: "sourceDb.sourceCollection", to: "targetDb.targetCollection" })

4. 刪除集合

44- 使用db.collection.drop()方法。

六、文檔操作

?1. 插入文檔

  • insertOne():插入單個文檔。

    javascri{insert_element_42_}pt

    db.myCollection.insertOne({ name: "Alice", age: 25, city: "New York" })
    
  • insertMany():插入多個文檔。

    javascri{insert_element_43_}pt

    db.myCollection.insertMany([{ name: "Bob", age: 30, city: "Los Angeles" },{ name: "Charlie", age: 35, city: "Chicago" }
    ])
    

2. 查詢文檔

  • find():查找多個文檔。
    • 查找所有:db.{insert\_element\_44\_}myCollection.find()
    • 按條件查找:db.myCollection.find({ age: { $gt: 25 } })
  • findOne()49:查找單個文檔。
    db.myCollection.findOne({ name: "Alice" })
    

3. 刪除文檔

  • deleteOne():刪除單個匹配文檔。
    db.myCollection.deleteOne({ name: "Alice" })
    
  • deleteMany():刪除所有匹配文檔。
    db.myCollection.deleteMany({ name: "Bob" })
    

4. 更新文檔

  • updateOne():更新單個匹配文檔。
    db.myCollection.updateOne({ name: "Alice" }, { $set: { age: 26 } })
    
  • updateMany():更新所有匹配文檔。
    db.myCollection.updateMany({ age: { $lt: 30 } }, { $set: { status: "active" } })
    
  • replaceOne():替換單個匹配文檔。
    db.myCollection.replaceOne({ name: "Bob" }, { name: "Bob", age: 31 })
    

七、MongoDB 備份與恢復

1. 安裝備份與恢復工具

rpm -ivh mongodb-database-tools-rhel70-x86_64-100.12.0.rpm

2. 數據備份(m56ongodump)

  • 基本命令:mongodump -h dbhost -d dbname -o dbdirectory
  • 示例:備份所有數據到當57前目錄下的 dump 目錄
mongodump

3. 數據恢復(m58ongorestore)

  • 基本命令:mongorestore -h <hostname>:<port> -d dbname <path>
  • 示例:從默認 dump 目59錄恢復數據
mongorestore

八、用戶管理

1. 創建用戶

db.createUser({user: "testuser",pwd: "password123",roles: [{ role: "readWrite", db: "database_name" },{ role: "dbAdmin", db: "database_name" }]
})

2. 驗證用戶

### 3. 啟用身份驗證{insert\_element\_58\_}
- 編輯配置文件`mongod.conf`,添加:
```yaml
security:authorization: "enabled"

  • 或在啟動命令中添加--{insert\_element\_59\_}auth參數。

4. 使用用戶登錄

mongosh --host hostname --port port -u "testuser" -p "password123" --authenticationDatabase "database_name"

5. 刪除用戶

{insert\_element\_62\_}

九、索引管理

1. 索引基礎

  • 索引作用:優化查詢性能,基于集合字段創建數據結構。
  • 創建索引d{insert\_element\_0\_}b.collection.createIndex( { field: 1 }, { options } ),1 為升序,-1 為降序。
  • 唯一索引db.users.createIndex( { email: 1 }, { unique: true } ),確保字段值唯一。

2. 復合索引

  • 基于多個字段創建索引,語法:db.collection.createIndex( { field1: 1, field2: -1 } )
  • 注意:查詢條件需包含索引前綴字段才能有效利用復合索引。

3. 索引查看與刪除

  • 查看所有索引:db.collection.getIndexes()
  • 刪除指定索引:db.collection.dropIndex( "indexName" )
  • 刪除所有索引:db.collection.dropIndexes()

4. 地理空間索引

  • 用于地理位置相關查詢,創建 2dsphere 索引:db.places.createIndex( { location: "2dsphere" } )
  • 查詢示例:查找半徑 5 公里內的地點:
db.places.find( {location: {$near: {$geometry: { type: "Point", coordinates: [116.4074, 39.9042] },$maxDistance: 5000}}
} )

十、聚合框架(Aggregation Framework)

1. 聚合管道概念

  • 通過多個階段(stage)處理數據,每個階段對文檔進行轉換。
  • 常見階段:、group、、sort、$limit 等。

2. 基本聚合操作

  • $match:過濾文檔,類似 find 的查詢條件:
    db.sales.aggregate( [ { $match: { category: "electronics", price: { $gt: 100 } } } ] )
    
  • $group:分組聚合,_id 指定分組字段,可使用聚合表達式:
    db.sales.aggregate( [{ $group: { _id: "$category", totalSales: { $sum: "$price" } } }
    ] )
    
  • $project:投影字段,控制輸出內容:
    db.sales.aggregate( [{ $project: { product: 1, price: 1, discount: { $multiply: [ "$price", 0.8 ] } } }
    ] )
    

3. 高級聚合操作

  • $lookup:左關聯查詢,類似 SQL 的 LEFT JOIN:
    db.orders.aggregate( [{$lookup: {from: "customers",localField: "customerId",foreignField: "_id",as: "customerInfo"}}
    ] )
    
  • $unwind:展開數組字段,將每個數組元素轉為獨立文檔:
    db.products.aggregate( [ { $unwind: "$tags" } ] )
    

4. 聚合表達式

  • 數學表達式:、avg、、max。
  • 條件表達式:、ifNull、$switch。
  • 字符串表達式:、substr、$toUpper。

十一、分片集群(Sharding)

1. 分片架構組件

  • 分片節點(Shard):存儲實際數據,可由副本集組成。
  • 配置服務器(Config Server):存儲分片元數據(如數據分布信息)。
  • 路由節點(MongoS):客戶端連接入口,負責轉發請求到對應分片。

2. 分片部署步驟

  1. 啟動配置服務器:mongod --configsvr --dbpath /data/config --port 27019
  2. 啟動分片節點(副本集):
    mongod --shardsvr --dbpath /data/shard1 --port 27017 --replSet rs1
    mongod --shardsvr --dbpath /data/shard2 --port 27018 --replSet rs1
    
  3. 初始化副本集:rs.initiate()
  4. 啟動路由節點:mongos --configdb configServerHost:27019
  5. 將分片添加到集群:sh.addShard( "rs1/host1:27017,host2:27018" )
  6. 啟用分片:sh.enableSharding( "databaseName" )
  7. 設置分片鍵:sh.shardCollection( "databaseName.collectionName", { shardKey: 1 } )

3. 分片鍵選擇

  • 范圍分片鍵:如時間字段,數據按范圍分布,適合時序數據。
  • 哈希分片鍵:如用戶 ID 的哈希值,數據均勻分布,適合高并發寫入。
  • 復合分片鍵:如 {region: 1, date: 1},結合范圍和哈希優勢。

十二、副本集(Replica Set)

1. 副本集架構

  • 主節點(Primary):處理所有寫入操作,同步數據到從節點。
  • 從節點(Secondary):復制主節點數據,處理讀請求。
  • 仲裁節點(Arbiter):不存儲數據,僅參與選舉決策。

2. 副本集初始化

// 連接到主節點
mongosh --port 27017
// 定義副本集配置
config = {_id: "rs0",members: [{ _id: 0, host: "server1:27017" },{ _id: 1, host: "server2:27017" },{ _id: 2, host: "server3:27017", arbiterOnly: true }]
}
// 初始化副本集
rs.initiate( config )

3. 故障轉移與讀偏好

  • 自動故障轉移:主節點故障時,從節點通過選舉產生新主節點。
  • 讀偏好(Read Preference)
    • primary:只從主節點讀取(默認)。
    • primaryPreferred:優先從主節點讀取,不可用時從從節點。
    • secondary:只從從節點讀取。
    • secondaryPreferred:優先從從節點讀取,不可用時從主節點。
    • nearest:從最近的節點讀取。

十三、事務管理

1. 事務特性

  • ACID 特性:MongoDB 4.0 + 支持分布式事務,確保原子性、一致性、隔離性、持久性。
  • 多文檔事務:跨文檔、跨集合、跨數據庫的操作作為原子單元。

2. 事務使用示例

// 開始事務
const session = db.getMongo().startSession();
try {session.startTransaction();// 操作1:更新賬戶A余額db.accounts.updateOne({ _id: "A" },{ $inc: { balance: -100 } },{ session });// 操作2:更新賬戶B余額db.accounts.updateOne({ _id: "B" },{ $inc: { balance: 100 } },{ session });// 提交事務await session.commitTransaction();console.log("轉賬成功");
} catch (error) {// 回滾事務await session.abortTransaction();console.error("轉賬失敗:", error);
} finally {session.endSession();
}

3. 事務注意事項

  • 事務超時時間默認 60 秒,可通過maxTransactionTimeMS參數調整。
  • 分片集群中事務需使用 MongoDB 4.2+,且配置服務器為副本集。
  • 避免長事務,減少鎖競爭。

十四、存儲引擎

1. WiredTiger(默認)

  • 特點:支持文檔級鎖、壓縮、加密,性能均衡,適合大多數場景。
  • 壓縮算法
    • zlib:壓縮率高,CPU 消耗大。
    • snappy:壓縮率低,速度快。
    • zstd:平衡壓縮率和速度(默認)。
  • 配置示例:在 mongod.conf 中設置storage.wiredTiger.engineConfig.compressor = zstd

2. MMAPv1(舊版)

  • 特點:使用文件映射內存,支持表級鎖,不推薦新部署。
  • 適用場景:遺留系統兼容,或需要特定功能(如稀疏集合)。

3. In-Memory

  • 特點:數據全部存儲在內存,適合對響應時間要求極高的場景。
  • 注意:重啟后數據丟失,需搭配持久化存儲。

十五、監控與性能調優

1. 內置監控命令

  • 查看服務器狀態db.serverStatus(),獲取內存、CPU、IO 等指標。
  • 查看當前操作db.currentOp(),查看正在執行的命令。
  • 慢查詢日志:啟用慢查詢日志(默認超過 100ms):

    bash

    mongod --slowms 50 --logpath /var/log/mongodb/mongod.log
    

2. 性能調優策略

  • 索引優化:為頻繁查詢的字段創建索引,避免全表掃描。
  • 批量操作:使用 insertMany、bulkWrite 替代單條插入,減少網絡開銷。
  • 連接池優化:調整驅動程序的連接池大小,默認值通常足夠。
  • 內存配置:WiredTiger 存儲引擎建議將 50% 物理內存分配給緩存。
  • 磁盤 IO:使用 SSD 存儲數據,避免頻繁寫入導致磁盤瓶頸。

3. 監控工具

  • MongoDB Compass:圖形化工具,查看性能指標和查詢分析。
  • MongoDB Atlas:云服務自帶監控儀表盤。
  • Prometheus + Grafana:通過 MongoDB Exporter 采集指標并可視化。

十六、應用場景

1. 內容管理系統

  • 靈活的數據結構適合存儲博客、文章等內容,支持動態字段擴展。
  • 案例:WordPress 插件、新聞門戶網站。

2. 實時數據分析

  • 聚合框架和 MapReduce 支持快速處理海量數據,如用戶行為分析。
  • 案例:電商平臺商品瀏覽統計、廣告點擊分析。

3. 物聯網(IoT)數據存儲

  • 分片集群支持海量設備數據存儲,時間序列數據查詢優化。
  • 案例:智能家居設備日志、工業傳感器數據采集。

4. 社交網絡應用

  • 文檔模型適合存儲用戶關系、動態等復雜結構,支持高并發讀寫。
  • 案例:社交平臺消息系統、用戶資料管理。

5. 移動應用后端

  • 多語言驅動和云服務(MongoDB Atlas)簡化移動應用開發。
  • 案例:移動游戲進度存儲、社交 APP 用戶數據。

十七、最佳實踐

1. 數據模型設計

  • 嵌入 vs 引用
    • 多對一關系:嵌入子文檔(如用戶包含地址)。
    • 多對多關系:使用引用 + 索引(如用戶與角色關聯)。
  • 避免過度規范化:適當冗余字段減少查詢關聯。

2. 安全配置

  • 啟用身份驗證,分配最小權限角色。
  • 禁止公網直接訪問 MongoDB 服務,使用 VPN 或防火墻限制。
  • 啟用 TLS/SSL 加密通信:mongod --ssl --sslCertificateKeyFile cert.pem

3. 備份與恢復策略

  • 定期全量備份(如每天)+ 增量備份(如每小時)。
  • 測試備份恢復流程,確保數據可恢復。
  • 異地災備,防止物理故障導致數據丟失。

4. 版本升級

  • 先在測試環境驗證新版本兼容性,尤其注意廢棄功能。
  • MongoDB 4.4 + 支持滾動升級,減少服務中斷時間。
  • 升級前備份數據,準備回滾方案。

十八、常見問題與解決方案

1. 性能問題排查

  • 慢查詢分析:使用db.currentOp()和慢查詢日志定位問題查詢。
  • 索引缺失:檢查查詢是否使用索引,explain()分析執行計劃。
  • 鎖競爭:查看db.serverStatus().locks,優化寫入頻率或分片。

2. 磁盤空間問題

  • WiredTiger 預分配:使用db.repairDatabase()回收未使用空間。
  • 刪除過期數據:定期刪除不再需要的歷史數據,或使用 TTL 索引。
  • 分片擴容:當單個分片數據量過大時,添加新分片并重新平衡數據。

3. 副本集異常

  • 選舉失敗:確保多數節點可用(如 3 節點副本集至少 2 節點在線)。
  • 數據不一致:使用rs.syncFrom("primaryHost")手動同步數據。
  • 仲裁節點配置:奇數個節點或添加仲裁節點避免腦裂。

4. 事務相關問題

  • 事務超時:優化事務內操作,減少執行時間或增加maxTransactionTimeMS
  • 并發沖突:使用樂觀鎖(如版本號字段)或調整隔離級別。

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

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

相關文章

RNN:從記憶困境到序列建模革命

在自然語言處理的戰場上&#xff0c;一個句子中的每個單詞都承載著前文的記憶。當傳統神經網絡面對這種時序依賴束手無策時&#xff0c;循環神經網絡&#xff08;RNN&#xff09; 以獨特的循環結構開啟了序列建模的新紀元。它像人類閱讀般記憶上下文&#xff0c;卻也因記憶衰減…

陽臺光伏配套電表ADL200N-CT/D16-Wf-1

安科瑞 華楠 18706163979 引言 在“雙碳”目標推動下&#xff0c;綠色能源正逐步走進日常生活。陽臺光伏作為一種新型分布式發電方式&#xff0c;憑借靈活安裝、高效節能的特點&#xff0c;成為城市家庭和工商業用戶的新選擇。安科瑞推出的ADL200N-CT/D16-Wf-1陽光光伏電表&a…

功能測試—軟件的生命周期

市場需求調研 可行性研究 從企業的人力儲備、技術儲備、資金儲備等方面出發&#xff0c;論證經濟效益或者社會效益能否達到預期 項目立項 需求開發 輸出&#xff1a;需求規格說明書需求評審&#xff08;需求測試&#xff09;&#xff1a;測試&#xff08;測試負責人、資深測…

PostgreSQL 日常維護

目錄 前言 基本使用 1. 登錄數據庫 2. 數據庫操作 2.1 列出庫 2.2 創建庫 2.3 刪除庫 2.4 切換庫 2.5 查看庫大小 3. 數據表操作 3.1 列出表 3.2 創建表 3.3 復制表 3.4 刪除表 3.5 查看表結構 4. 模式操作命令 4.1 創建模式 4.2 默認模式 4.3 刪除模式 4.4…

STM32F4通用定時器TIM9-TIM14講解及PWM呼吸燈實例解讀

STM32F4通用定時器TIM9-TIM14講解及PWM呼吸燈實例解讀 前言小貼士 通用定時器原理定時器的內部時鐘源通用定時器TIM9-TIM14的對比共同點區別 TIM9-TIM14功能說明時基單元計數模式時鐘選擇 定時器框圖理解和分析TIM10/TIM11/TIM13/TIM14輸入捕獲輸出比較 TIM9和TIM12獨立通道輸入…

whttpserver:一個命令極速搭建文件上傳與下載服務器

whttpserver 是一個簡單的HTTP服務器&#xff0c;類似于python -m http.server&#xff0c;但增加了文件上傳和編輯的功能。 1. 安裝 whttpserver 模塊 # 臨時設置環境變量 PYTHONUTF81&#xff0c;強制 Python 使用 UTF-8 編碼 set PYTHONUTF81 pip install whttpserver 2.…

【0.2 漫畫操作系統原理】

??? 漫畫操作系統原理 ?? 學習目標:深入理解操作系統核心原理,為Java并發編程和性能優化打下堅實基礎 ?? 第一章:操作系統初識篇 ?? 什么是操作系統? 想象一下,你是一個大型圖書館的館長… ?? 沒有操作系統 vs 有操作系統沒有操作系統: 讀者1 → 直接找書架…

第1章 C# 和 .NET 框架 筆記

第1章 C# 和 .NET 框架 1.1 在 .NET 之前 C#為在.NET框架上開發程序而設計的編程語言。 MFC&#xff08;Microsoft Foundation Class&#xff0c;微軟基礎類庫&#xff09; 微軟公司提供的一個類庫&#xff0c;以 C 類的形式封裝了 Windows 的 API&#xff0c;并包含一個應…

Django全棧開發實戰與架構思考

一、框架選型與開發范式 作為Python生態最成熟的Web框架&#xff0c;Django的"電池全包"理念在2.3版本后得到更徹底的貫徹。項目初期通過django-admin startproject生成的腳手架已包含&#xff1a; 自動化ORM遷移系統 內置Admin后臺管理界面 基于WSGI的中間件管道…

微服務--Gateway網關

1. Gateway簡介 Gateway網關是微服務架構中不可或缺的組件&#xff0c;是微服務架構中的統一入口&#xff0c;它作為所有客戶端請求的第一道防線&#xff0c;負責請求的路由、過濾和聚合。 Gateway核心功能 路由(Routing) 根據請求路徑、Header、參數等將請求路由到不同微服…

區塊鏈與人工智能的融合:從信任到智能的IT新引擎

在信息技術&#xff08;IT&#xff09;的飛速發展中&#xff0c;兩大顛覆性技術的交匯正掀起一場革命——區塊鏈與人工智能&#xff08;AI&#xff09;的融合。2025年&#xff0c;隨著數據隱私需求的激增、去中心化應用的爆發以及企業對可信智能系統的追求&#xff0c;區塊鏈與…

Javascript什么是原型和原型鏈,八股文

原型:函數都有prototype屬性,稱之為原型&#xff0c;也稱為原型對象 原型可以放一些屬性和方法&#xff0c;共享給實例對象使用 原型可以做繼承 原型鏈:對象都有__proto__屬性,這個屬性指向它的原型對象,原型對象也是對象,也有__proto__屬性,指向原型對象的原型對象,這樣一層一…

生日悖論理論及在哈希函數碰撞中的應用

目錄 一、生日悖論&#xff08;Birthday Paradox&#xff09;介紹 二、生日悖論的數學解釋 &#xff08;一&#xff09;計算所有人生日都不同的概率 數學推導 示例計算 &#xff08;二&#xff09;至少有兩個人生日相同的概率 三、哈希函數碰撞與生日悖論的關系思考 &a…

探索數據的力量:Elasticsearch中指定鏈表字段的統計查詢記錄

目錄 一、基本的數據結構說明 二、基本的統計記錄 &#xff08;一&#xff09;統計當前索引中sellingProducts的所有類型 &#xff08;二&#xff09;檢索指定文檔中sellingProducts的數據總量 &#xff08;三&#xff09;檢索指定文檔中sellingProducts指定類型的數量統計…

細節致勝:如何重塑反向海淘用戶體驗

在反向海淘的激烈競爭中&#xff0c;客戶體驗已成為決定勝負的關鍵。一次流暢的購物旅程、一個貼心的服務細節&#xff0c;都可能讓海外消費者成為品牌的忠實傳播者。易境通代購商城系統正是以極致體驗為核心&#xff0c;通過精細化服務管理&#xff0c;助力企業贏得用戶口碑與…

Docker 分階段構建

Docker 分階段構建 Docker 分階段構建&#xff08;Multi-stage Build&#xff09;是一種高效的鏡像構建技術&#xff0c;允許在一個 Dockerfile 中使用多個構建階段&#xff0c;每個階段可以使用不同的基礎鏡像&#xff0c;最終只保留需要的文件&#xff0c;從而顯著減小鏡像體…

人工智能學習23-BP-圖像編碼

人工智能學習概述—快手視頻 人工智能學習23-BP-圖像編碼—快手視頻

k8s的開篇學習和安裝

k8s的開篇學習 學習網站 參考資料 1。 K8S能干什么 [概述 | Kubernetes](https://kubernetes.io/zh-cn/docs/concepts/overview/#why-you-need-kubernetes-and-what-can-it-do)需要開代理 2。docker資料 https://docs.docker.com/get-started/3.prometheus資料 https://promet…

CS144 lab0: warmup

Lab 0: networking warmup 1. 環境 依賴配置 sudo apt update && sudo apt install git cmake gdb build-essential clang \clang-tidy clang-format gcc-doc pkg-config glibc-doc tcpdump tsharkg13配置 ppa中科大源 # deb https://ppa.launchpadcontent.net/ubu…

StarRocks

StarRocks 是一個高性能的 分布式 MPP(Massively Parallel Processing)數據庫,主要用于 實時數據分析(Real-Time Analytics),是新一代的 OLAP 數據庫,對標 ClickHouse、Apache Doris 等。 ?? 一、StarRocks 是什么? StarRocks 是一個面向實時分析場景、支持高并發、高…