MongoDB 聚合管道(Aggregation)高級用法:數據統計與分析

MongoDB 聚合管道(Aggregation)高級用法:數據統計與分析

    • 第一章:聚合管道核心概念與架構設計
      • 1.1 聚合管道的本質與價值
      • 1.2 管道階段深度解析
      • 1.3 執行引擎與優化機制
    • 第二章:高級分組與多維統計分析
      • 2.1 復合分組與層次化分析
      • 2.2 時間序列分析與窗口函數
    • 第三章:復雜數據關聯與多集合整合
      • 3.1 高級關聯查詢模式
      • 3.2 圖數據遍歷與層次分析
    • 第四章:數組與復雜數據結構高級處理
      • 4.1 多維數組分析與統計
      • 4.2 JSON文檔的深度查詢與轉換
    • 第五章:性能優化與生產環境最佳實踐
      • 5.1 高級索引策略
      • 5.2 查詢性能分析與優化
      • 5.3 分片集群中的聚合優化
    • 第六章:安全性與數據治理
      • 6.1 聚合管道的安全考慮
      • 6.2 審計與合規性
    • 第七章:實際業務場景綜合案例
      • 7.1 電商平臺綜合分析系統

第一章:聚合管道核心概念與架構設計

1.1 聚合管道的本質與價值

MongoDB的聚合管道是一個基于數據處理流水線概念的強大框架,它通過一系列有序的階段(stages)對文檔進行轉換和處理。每個階段接收前一個階段的輸出文檔,進行特定操作后,將結果傳遞給下一個階段。這種設計模式使得復雜的數據轉換和分析任務能夠被分解為可管理的步驟。
聚合管道的核心優勢:

  • 數據庫層面處理:減少網絡傳輸開銷,直接在數據存儲位置進行處理
  • 靈活的數據轉換:支持復雜的數據重塑和計算
  • 高性能優化:利用索引和內存管理機制提供高效執行
  • 實時分析能力:支持流式數據處理和實時分析需求

1.2 管道階段深度解析

聚合管道包含多種類型的階段,每種階段承擔特定的數據處理職責:
過濾類階段:

  • $match:基于查詢條件過濾文檔,應盡早使用以減少后續處理量
  • $limit:限制處理文檔數量,常用于分頁或采樣
  • $skip:跳過指定數量的文檔
    轉換類階段:
  • $project:重塑文檔結構,選擇、添加或計算字段
  • $addFields:添加新字段而不影響現有字段
  • set:與set:與set:與addFields類似,用于添加或修改字段
  • $unset:移除指定字段
    分組統計類階段:
  • $group:按指定鍵分組并計算聚合值
  • $bucket:基于指定范圍進行分桶統計
  • $bucketAuto:自動分桶統計
  • $sortByCount:按計數排序的分組操作
    關聯查詢類階段:
  • $lookup:執行左外連接操作,關聯其他集合
  • $graphLookup:執行圖遍歷查詢,處理層次結構數據
    數組操作類階段:
  • $unwind:展開數組字段,為每個數組元素創建新文檔
  • $redact:基于數據內容控制文檔訪問
    窗口函數類階段(MongoDB 5.0+):
  • $setWindowFields:執行窗口函數操作,支持排名、移動平均等

1.3 執行引擎與優化機制

MongoDB聚合引擎采用多種優化策略來提升性能:
流水線優化:

// 優化前的管道
[{ $group: { _id: "$category", total: { $sum: "$amount" } } },{ $match: { total: { $gt: 1000 } } },{ $sort: { total: -1 } }
]// 優化后的管道(引擎自動重排)
[{ $match: { amount: { $gt: 1000 } } },  // 提前過濾{ $group: { _id: "$category", total: { $sum: "$amount" } } },{ $sort: { total: -1 } }
]

索引利用策略:

  • $match階段:使用查詢字段的索引
  • $sort階段:使用排序字段的索引
  • $lookup階段:使用被關聯集合的外鍵索引
    內存管理機制:
// 啟用磁盤使用選項
db.collection.aggregate([{ $match: { ... } },{ $group: { ... } }
], { allowDiskUse: true })// 內存限制配置
db.collection.aggregate([{ $match: { ... } },{ $group: { ... } }
], { allowDiskUse: true,maxTimeMS: 30000,  // 30秒超時comment: "大型聚合查詢" 
})

第二章:高級分組與多維統計分析

2.1 復合分組與層次化分析

在實際業務場景中,經常需要從多個維度對數據進行分組統計。MongoDB支持使用復合鍵進行多層次分組:
多維度銷售分析:

db.sales.aggregate([{$match: {saleDate: {$gte: ISODate("2023-01-01"),$lt: ISODate("2024-01-01")},status: "completed"}},{$group: {_id: {year: { $year: "$saleDate" },quarter: { $ceil: { $divide: [{ $month: "$saleDate" }, 3] } },region: "$region",productLine: "$productLine",salesPerson: "$salesPersonId"},totalRevenue: { $sum: { $multiply: ["$quantity", "$unitPrice"] } },totalUnits: { $sum: "$quantity" },averageOrderValue: { $avg: "$amount" },orderCount: { $sum: 1 },uniqueCustomers: { $addToSet: "$customerId" },maxOrderValue: { $max: "$amount" },minOrderValue: { $min: "$amount" }}},{$group: {_id: {year: "$_id.year",quarter: "$_id.quarter",region: "$_id.region"},productLines: {$push: {productLine: "$_id.productLine",totalRevenue: "$totalRevenue",totalUnits: "$totalUnits",salesPerformance: {$divide: ["$totalRevenue", "$totalUnits"]}}},regionalRevenue: { $sum: "$totalRevenue" },regionalUnits: { $sum: "$totalUnits" }}},{$project: {timePeriod: {year: "$_id.year",quarter: "$_id.quarter"},region: "$_id.region",productLines: 1,regionalRevenue: 1,regionalUnits: 1,averageRegionalPrice: {$cond: [{ $gt: ["$regionalUnits", 0] },{ $divide: ["$regionalRevenue", "$regionalUnits"] },0]},productLineCount: { $size: "$productLines" }}},{$sort: {"timePeriod.year": 1,"timePeriod.quarter": 1,"regionalRevenue": -1}}
])

2.2 時間序列分析與窗口函數

MongoDB 5.0引入的窗口函數為時間序列分析提供了強大支持:
移動平均與累計計算:

db.stockPrices.aggregate([{$match: {symbol: "AAPL",date: {$gte: ISODate("2023-01-01"),$lt: ISODate("2024-01-01")}}},{ $sort: { date: 1 } },{$setWindowFields: {partitionBy: "$symbol",sortBy: { date: 1 },output: {movingAverage7Days: {$avg: "$close",window: {documents: ["unbounded", "current"]}},movingAverage30Days: {$avg: "$close",window: {range: [-29, 0],unit: "day"}},cumulativeVolume: {$sum: "$volume",window: {documents: ["unbounded", "current"]}},priceChangePercentage: {$multiply: [{$divide: [{ $subtract: ["$close", { $first: "$close" }] },{ $first: "$close" }]},100]}}}},{$project: {symbol: 1,date: 1,open: 1,high: 1,low: 1,close: 1,volume: 1,movingAverage7Days: { $round: ["$movingAverage7Days", 2] },movingAverage30Days: { $round: ["$movingAverage30Days", 2] },cumulativeVolume: 1,priceChangePercentage: { $round: ["$priceChangePercentage", 2] },aboveMovingAverage: {$gt: ["$close", "$movingAverage30Days"]}}}
])

排名與分位數計算:

db.sales.aggregate([{$match: {saleDate: {$gte: ISODate("2023-01-01"),$lt: ISODate("2024-01-01")}}},{$setWindowFields: {partitionBy: "$region",sortBy: { amount: -1 },output: {salesRank: { $rank: {} },denseSalesRank: { $denseRank: {} },percentRank: { $percentRank: {} },cumulativeDistribution: { $cumeDist: {} },ntileGroup: { $ntile: { buckets: 4 } }}}},{$project: {saleId: 1,region: 1,amount: 1,salesRank: 1,denseSalesRank: 1,percentRank: { $multiply: ["$percentRank", 100] },cumulativeDistribution: { $multiply: ["$cumulativeDistribution", 100] },performanceQuartile: "$ntileGroup",performanceCategory: {$switch: {branches: [{ case: { $eq: ["$ntileGroup", 1] }, then: "Top 25%" },{ case: { $eq: ["$ntileGroup", 2] }, then: "Above Average" },{ case: { $eq: ["$ntileGroup", 3] }, then: "Below Average" },{ case: { $eq: ["$ntileGroup", 4] }, then: "Bottom 25%" }],default: "Unknown"}}}}
])

第三章:復雜數據關聯與多集合整合

3.1 高級關聯查詢模式

多層級關聯查詢:

db.orders.aggregate([{$match: {orderDate: {$gte: ISODate("2023-01-01"),$lt: ISODate("2024-01-01")}}},{$lookup: {from: "customers",let: { customerId: "$customerId" },pipeline: [{$match: {$expr: { $eq: ["$_id", "$$customerId"] }}},{$lookup: {from: "customerSegments",localField: "segmentId",foreignField: "_id",as: "segmentInfo"}},{ $unwind: "$segmentInfo" },{$project: {firstName: 1,lastName: 1,email: 1,segmentName: "$segmentInfo.name",segmentValue: "$segmentInfo.valueScore"}}],as: "customerDetails"}},{$lookup: {from: "products",let: { productItems: "$items" },pipeline: [{$match: {$expr: {$in: ["$_id", "$$productItems.productId"]}}},{$group: {_id: null,totalCost: {$sum: {$multiply: ["$costPrice", {$arrayElemAt: ["$$productItems.quantity",{ $indexOfArray: ["$$productItems.productId", "$_id"] }]}]}}}}],as: "costAnalysis"}},{ $unwind: "$customerDetails" },{ $unwind: "$costAnalysis" },{$addFields: {profitMargin: {$subtract: ["$totalAmount", "$costAnalysis.totalCost"]},marginPercentage: {$multiply: [{ $divide: [{ $subtract: ["$totalAmount", "$costAnalysis.totalCost"] },"$totalAmount"]},100]}}}
])

3.2 圖數據遍歷與層次分析

組織架構分析:

db.employees.aggregate([{$match: {department: "Engineering"}},{$graphLookup: {from: "employees",startWith: "$managerId",connectFromField: "managerId",connectToField: "_id",as: "managementChain",depthField: "hierarchyLevel",maxDepth: 5}},{$addFields: {managementLevel: {$size: "$managementChain"},directReportsCount: {$size: {$filter: {input: "$managementChain",as: "manager",cond: { $eq: ["$$manager.managerId", "$_id"] }}}}}},{$project: {employeeId: "$_id",name: { $concat: ["$firstName", " ", "$lastName"] },title: "$position",department: 1,managementLevel: 1,directReportsCount: 1,managementChain: {$map: {input: "$managementChain",as: "manager",in: {name: { $concat: ["$$manager.firstName", " ", "$$manager.lastName"] },title: "$$manager.position",level: "$$manager.hierarchyLevel"}}}}}
])

第四章:數組與復雜數據結構高級處理

4.1 多維數組分析與統計

嵌套數組的深度分析:

db.ecommerce.aggregate([{$unwind: "$orders"},{$unwind: "$orders.items"},{$group: {_id: {customerId: "$_id",productCategory: "$orders.items.category"},totalSpent: {$sum: {$multiply: ["$orders.items.quantity", "$orders.items.price"]}},totalItems: { $sum: "$orders.items.quantity" },orderCount: { $sum: 1 },firstOrderDate: { $min: "$orders.orderDate" },lastOrderDate: { $max: "$orders.orderDate" },averageOrderValue: {$avg: {$multiply: ["$orders.items.quantity", "$orders.items.price"]}}}},{$group: {_id: "$_id.customerId",spendingByCategory: {$push: {category: "$_id.productCategory",totalSpent: "$totalSpent",totalItems: "$totalItems",orderCount: "$orderCount"}},overallSpending: { $sum: "$totalSpent" },totalOrders: { $sum: "$orderCount" },customerLifetime: {$divide: [{ $subtract: ["$lastOrderDate", "$firstOrderDate"] },1000 * 60 * 60 * 24 // 轉換為天數]}}},{$addFields: {spendingDistribution: {$arrayToObject: {$map: {input: "$spendingByCategory",as: "category",in: {k: "$$category.category",v: {percentage: {$multiply: [{ $divide: ["$$category.totalSpent", "$overallSpending"] },100]},amount: "$$category.totalSpent"}}}}},averageOrderFrequency: {$cond: [{ $gt: ["$customerLifetime", 0] },{ $divide: ["$totalOrders", "$customerLifetime"] },0]}}}
])

4.2 JSON文檔的深度查詢與轉換

復雜文檔結構處理:

db.contracts.aggregate([{$match: {"metadata.status": "active","effectiveDate": { $lte: new Date() },"expirationDate": { $gte: new Date() }}},{$addFields: {contractDuration: {$divide: [{ $subtract: ["$expirationDate", "$effectiveDate"] },1000 * 60 * 60 * 24 // 轉換為天數]},remainingDuration: {$divide: [{ $subtract: ["$expirationDate", new Date()] },1000 * 60 * 60 * 24]},// 處理嵌套的條款數組importantClauses: {$filter: {input: "$clauses",as: "clause",cond: {$and: [{ $eq: ["$$clause.important", true] },{ $ne: ["$$clause.status", "removed"] }]}}}}},{$unwind: {path: "$importantClauses",preserveNullAndEmptyArrays: true}},{$group: {_id: "$_id",contractData: { $first: "$$ROOT" },importantClauses: { $push: "$importantClauses" },clauseCount: { $sum: 1 }}},{$replaceRoot: {newRoot: {$mergeObjects: ["$contractData",{importantClauses: "$importantClauses",totalImportantClauses: "$clauseCount"}]}}},{$project: {"clauses": 0, // 移除原始clauses數組"metadata.internalNotes": 0 // 移除敏感信息}}
])

第五章:性能優化與生產環境最佳實踐

5.1 高級索引策略

復合索引設計:

// 為時間序列分析創建索引
db.sales.createIndex({"saleDate": 1,"region": 1,"productCategory": 1,"amount": -1
})// 為關聯查詢創建索引
db.orders.createIndex({"customerId": 1,"orderDate": -1,"status": 1
})// 為數組字段創建多鍵索引
db.products.createIndex({"tags": 1,"price": 1,"category": 1
})// 為文本搜索創建索引
db.documents.createIndex({"title": "text","content": "text","metadata.tags": 1
})

5.2 查詢性能分析與優化

執行計劃分析:

// 獲取詳細的執行計劃
const explainResult = db.sales.aggregate([{$match: {saleDate: {$gte: ISODate("2023-01-01"),$lt: ISODate("2024-01-01")},region: { $in: ["North", "South", "East", "West"] }}},{$group: {_id: {month: { $month: "$saleDate" },productCategory: "$productCategory"},totalSales: { $sum: "$amount" }}},{ $sort: { totalSales: -1 } }
], { explain: true })// 分析索引使用情況
console.log(explainResult.stages.map(stage => ({stage: stage.stage,input: stage.inputStage,index: stage.index
})))

性能監控指標:

// 監控聚合查詢性能
db.runCommand({aggregate: "sales",pipeline: [{ $match: { ... } },{ $group: { ... } }],explain: false,allowDiskUse: true,cursor: {},maxTimeMS: 30000,comment: "月度銷售報告"
})// 使用數據庫分析器
db.setProfilingLevel(1, { slowms: 100 })
db.system.profile.find({op: "command","command.aggregate": "sales",millis: { $gt: 100 }
}).sort({ ts: -1 }).limit(10)

5.3 分片集群中的聚合優化

分片策略設計:

// 基于分片鍵的聚合優化
db.sales.aggregate([{$match: {shardKey: { $in: ["shard1", "shard2", "shard3"] },saleDate: {$gte: ISODate("2023-01-01"),$lt: ISODate("2024-01-01")}}},{$group: {_id: "$shardKey",totalSales: { $sum: "$amount" },documentCount: { $sum: 1 }}}
])// 跨分片聚合的最佳實踐
db.adminCommand({moveChunk: "database.sales",find: { shardKey: "specificValue" },to: "targetShard"
})// 監控分片平衡
db.adminCommand({ balancerStatus: 1 })
db.getSiblingDB("config").chunks.find({ns: "database.sales"
}).count()

第六章:安全性與數據治理

6.1 聚合管道的安全考慮

訪問控制:

// 基于角色的數據訪問控制
db.createRole({role: "analystRole",privileges: [{resource: { db: "sales", collection: "orders" },actions: ["find","aggregate","collStats","indexStats"]}],roles: []
})// 字段級別的數據脫敏
db.orders.aggregate([{$project: {orderId: 1,totalAmount: 1,orderDate: 1,// 脫敏敏感信息customerInfo: {$concat: [{ $substr: ["$customerName", 0, 1] },"***",{ $substr: ["$customerName", { $subtract: [{ $strLenCP: "$customerName" }, 1] }, 1] }]},// 哈希處理敏感數據customerEmailHash: {$toLower: { $toString: { $hash: "$customerEmail" } }}}}
])

6.2 審計與合規性

操作審計:

// 啟用詳細審計日志
db.adminCommand({setParameter: 1,auditAuthorizationSuccess: true
})// 監控敏感數據訪問
db.system.profile.find({"command.aggregate": { $exists: true },"command.pipeline": {$elemMatch: {"$match": {"customerEmail": { $exists: true }}}}
})// 數據變更追蹤
db.orders.aggregate([{$lookup: {from: "auditTrail",let: { orderId: "$_id" },pipeline: [{$match: {$expr: { $eq: ["$documentId", "$$orderId"] },operationType: { $in: ["insert", "update", "delete"] }}},{ $sort: { changeDate: -1 } },{ $limit: 5 }],as: "changeHistory"}}
])

第七章:實際業務場景綜合案例

7.1 電商平臺綜合分析系統

完整的業務分析管道:

db.orders.aggregate([// 第一階段:數據準備與過濾{$match: {orderDate: {$gte: ISODate("2023-01-01"),$lt: ISODate("2024-01-01")},status: { $in: ["completed", "shipped"] },totalAmount: { $gt: 0 }}},// 第二階段:數據關聯與擴展{$lookup: {from: "customers",localField: "customerId",foreignField: "_id",as: "customerData"}},{ $unwind: "$customerData" },{$lookup: {from: "products",localField: "items.productId",foreignField: "_id",as: "productData"}},// 第三階段:數據轉換與計算{$addFields: {customerSegment: {$switch: {branches: [{ case: { $gte: ["$customerData.lifetimeValue", 10000] }, then: "VIP" },{ case: { $gte: ["$customerData.lifetimeValue", 5000] }, then: "Premium" },{ case: { $gte: ["$customerData.lifetimeValue", 1000] }, then: "Standard" }],default: "New"}},orderProfit: {$subtract: ["$totalAmount",{$sum: {$map: {input: "$items",as: "item",in: {$multiply: ["$$item.quantity",{$arrayElemAt: ["$productData.cost",{$indexOfArray: ["$productData._id", "$$item.productId"]}]}]}}}}]}}},// 第四階段:多維分組分析{$group: {_id: {timePeriod: {year: { $year: "$orderDate" },quarter: { $ceil: { $divide: [{ $month: "$orderDate" }, 3] } }},region: "$customerData.region",customerSegment: "$customerSegment",productCategory: {$arrayElemAt: ["$productData.category", 0]}},totalRevenue: { $sum: "$totalAmount" },totalProfit: { $sum: "$orderProfit" },orderCount: { $sum: 1 },customerCount: { $addToSet: "$customerId" },averageOrderValue: { $avg: "$totalAmount" },profitMargin: {$avg: {$cond: [{ $gt: ["$totalAmount", 0] },{ $divide: ["$orderProfit", "$totalAmount"] },0]}}}},// 第五階段:結果格式化{$project: {dimensions: "$_id",metrics: {revenue: { $round: ["$totalRevenue", 2] },profit: { $round: ["$totalProfit", 2] },orders: "$orderCount",customers: { $size: "$customerCount" },aov: { $round: ["$averageOrderValue", 2] },margin: { $multiply: [{ $round: ["$profitMargin", 4] }, 100] }},timestamp: new Date()}},// 第六階段:結果存儲{$merge: {into: "analyticsResults",on: "_id",whenMatched: "replace",whenNotMatched: "insert"}}
], { allowDiskUse: true,maxTimeMS: 600000 
})

這個綜合案例展示了如何構建一個完整的分析管道,涵蓋了從數據準備到結果存儲的全過程。每個階段都承擔著特定的職責,共同構成了一個高效、可維護的數據分析解決方案。
通過掌握這些高級技術和最佳實踐,您將能夠充分利用MongoDB聚合管道的強大功能,構建出滿足復雜業務需求的數據分析系統。

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

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

相關文章

Twitter輿情裂變鏈:指紋云手機跨賬號協同機制提升互動率200%

——基于動態設備指紋與智能行為仿真的裂變增長體系??一、Twitter輿情運營的三大核心挑戰?賬號關聯風險?同一設備/IP操作多賬號觸發平臺風控,封號率高達65%,輿情響應鏈路斷裂固定設備參數(如GPU型號/屏幕分辨率)導致賬號權重暴…

【密集目標檢測】停車場車輛(車位)識別數據集:12k+圖像,yolo標注

停車場車輛(車位)識別數據集概述 數據集包含12415張從監控攝像頭畫面中截取的停車場圖像,涵蓋晴天、陰天和雨天場景,標注類別包含車位占用、空車位2類。 標注格式:yolo txt 標注工具:labelme/labelimg 分辨率:416*416 一、學術研究的奠基與迭代 停車場車輛(車位)…

蒼穹外賣項目筆記day02

接下來的筆記都會以難點與一些不常見的方法為主,一些重復的crud并不會出現哦 ThreadLocal類 ThreadLocal 并不是一個Thread,而是Thread的局部變量,它用于創建線程局部變量。 核心思想:每個線程都有自己獨立的變量副本。這意味著,即…

設計模式12-適配器模式

定義 Adapter Partern: 將一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作。 場景 系統需要使用現有的類,而這些類的接口不符合系統的需要。 典型場景:集成第三方庫、遺留系統代…

VGG改進(6):基于PyTorch的VGG16-SE網絡實戰

1. 引言:注意力機制在計算機視覺中的重要性近年來,深度學習在計算機視覺領域取得了巨大成功,從圖像分類到目標檢測,各種復雜任務都獲得了前所未有的性能提升。然而,傳統的卷積神經網絡(CNN)在處…

[電商網站-動態渲染商品-尺寸、尺碼、顏色圖片等];庫存缺貨狀態動態對應。

目錄 描述: 數據結構 組件代碼文件 描述: 自動處理SKU數據生成規格屬性列表 支持用戶選擇不同規格組合 智能禁用無庫存選項 自動匹配當前選擇對應的SKU信息 通過視覺樣式區分可選/不可選狀態 該組件采用Vue實現,通過計算屬性和響應式數據…

論《運動戰》

運動戰的本質是以機動換主動,以時間換空間,通過高度的流動性、主動的位移和靈活的戰術選擇,在動態中創造并捕捉戰機,最終以較小的代價換取最大的勝利。它是一種非對稱的、主動的作戰哲學,其核心不在于一城一地的得失&a…

DVWA靶場通關筆記-CSRF(Impossible級別)

目錄 一、查看源碼 二、功能分析 三、CSRF防范分析 1、CSRF令牌驗證機制 (1)核心原理 (2)防范機制 2、舊密碼確認防御實現 (1)核心原理 (2)為什么舊密碼確認能有效防范CSRF…

深層語義在自然語言處理中的理論框架與技術融合研究

摘要本文章系統闡述了深層語義在自然語言處理(NLP)領域的定義、特征及其與知識圖譜和大型預訓練語言模型的融合方法。基于截至2025年8月的最新研究成果,報告深入分析了深層語義的多維度特性、技術實現路徑以及面臨的挑戰,為研究人…

深入解析HarmonyOS:UIAbility與Page的生命周期協同

深入解析HarmonyOS:UIAbility與Page的生命周期協同 在HarmonyOS應用開發中,理解UIAbility和Page的生命周期是構建高質量應用的關鍵。本文將深入探討這兩大核心概念的生命周期及其協同工作機制,幫助開發者更好地管理應用資源、優化用戶體驗。…

規律作息 + 養成好的習慣 + 考研倒計時 111 天 + 線面積分入門 1 下半部分

文章目錄前言雜進度10.4空間直線一般式方程對稱式方程 點向式方程參數式方程轉換位置關系10.510.610.7平面束方程10.810.9總結前言 規律作息! 雜 欲買桂花同載酒,終不似,少年游。 進度 向量代數和空間解析幾何。 10.4 這題就是算一個…

序列容器(vector,deque,list)

STL 序列式容器(vector、deque、list、array、forward_list)的核心特征是按插入順序存儲元素(元素的邏輯順序與物理存儲順序一致) vector 下圖是底層原理 具體點擊鏈接vector介紹 deque(雙端隊列) 在 C STL 中,deque…

Time-MOE添加MLP分類頭進行分類任務

文章目錄一、背景:Time-MoE 的 4096 長度限制二、數據準備(以帕金森二分類為例)三、標簽對齊(弱監督)四、類別不平衡 & 數據劃分五、模型微調(凍結 backbone,只訓 MLP 頭)六、評…

樸素貝葉斯:用 “概率思維” 解決分類問題的經典算法

一、貝葉斯:從 “逆概” 問題走來的數學家要理解樸素貝葉斯,得先回到它的 “源頭”—— 貝葉斯公式,以及它要解決的核心問題:逆概問題。1. 貝葉斯的 “生不逢時”托馬斯?貝葉斯(Thomas Bayes,約 1701-1761…

Qt/C++開發監控GB28181系統/視頻點播主碼流子碼流/動態切換碼流/支持海康大華/全網唯一

一、前言說明 目前市面上的國標監控系統,沒有看到可以切換碼流的,都是默認主碼流,包括easynvr、livegbs、wvp等,很是奇怪為什么他們不做呢?難道沒有用戶反饋需要這個?我這就遇到過一些用戶需要能夠切換主碼…

【 MYSQL | 基礎篇 四大SQL語句 】資料位于文章末尾

摘要:本文先介紹數據庫 SQL 的核心概念,接著闡述 SQL 通用語法與 DDL、DML、DQL、DCL 四大分類,隨后詳細講解各類語句操作,包括 DDL 的數據庫與表操作及數據類型,DML 的數據增刪改,DQL 的查詢語法與功能&am…

Webrtc支持FFMPEG硬解碼之Intel

Intel QSV下載編譯git clone https://github.com/lu-zero/mfx_dispatch.git1.使用CMake生產VS工程編譯生成libmfx.lib文件 頭文件為mfx文件夾libmfx---include---mfx---lib---libmfx.libWebrtc中ffmpeg的修改因為Webrtc中的ffmpeg是使用gn進行編譯的,所以這里先找到…

【二叉樹(DFS) - LeetCode】437. 路徑總和 III

437. 路徑總和 III 題解:DFS /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullp…

【Python】shutil.make_archive() 方法詳解

文章目錄功能概述函數簽名核心參數詳解1. base_name2. format3. root_dir4. base_dir使用示例將 /home/user/project/data 目錄打包為 data.tar.gz,并保存到 /home/user/backups/打包當前工作目錄下的 docs 文件夾為 zip 文件替代方案總結shutil.make_archive() 是 …

CAN總線(Controller Area Network Bus)控制器局域網總線(二)

6、錯誤幀 總線上所有設備都會監督總線的數據,一旦發現“位錯誤”或“填充錯誤”或“CRC錯誤”或“格式錯誤”或“應答錯誤” ,這些設備便會發出錯誤幀來破壞數據,同時終止當前的發送設備。7、過載幀 當接收方收到大量數據而無法處理時&#…