簡單了解MongoDB數據存儲

官方文檔:MongoDB中文手冊|官方文檔中文版 | MongoDB-CN-Manual

什么是MongoDB?

MongnDB是一個分布式文件存儲數據庫(或叫文檔數據庫),是一個介于 關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫,最接近關系型數據庫的。

MongoDB中的記錄是一個文檔,它是由字段和值(key:value)對組成的數據結構。MongoDB文檔類似于JSON的BSON類型,BSON就是JSON的二進制表示,文檔的字段的值可以包括其他文檔,數組和文檔數組。

MongoDB 特點

MongoDB 的一些關鍵特點:

  • 文檔導向:MongoDB 存儲 BSON(二進制 JSON)文檔,這些文檔可以包含復雜的數據結構,如數組和嵌套對象。
  • 高性能:MongoDB 提供了高性能的數據持久化和查詢能力,特別是對于寫入密集型的應用。
  • 水平擴展:通過分片(sharding)技術,MongoDB 可以在多個服務器之間分布數據,實現水平擴展。
  • 高可用性:MongoDB 支持副本集(replica sets),提供數據的自動故障轉移和數據冗余。
  • 靈活的聚合框架:MongoDB 提供了一個強大的聚合框架,允許執行復雜的數據處理和聚合操作。
  • 豐富的查詢語言:MongoDB 的查詢語言(MQL)支持豐富的查詢操作,包括文本搜索、地理位置查詢等。
  • 存儲過程:MongoDB 支持在數據庫內部執行 JavaScript 代碼,允許定義和執行復雜的數據處理邏輯。
  • GridFS:對于存儲大于 BSON 文檔大小限制(16MB)的文件,MongoDB 提供了 GridFS,一種用于存儲和檢索大文件的規范。
  • 安全性:MongoDB 提供了多層次的安全特性,包括認證、授權和加密。
  • 驅動程序和工具:MongoDB 擁有廣泛的驅動程序支持,適用于不同的編程語言,以及各種管理工具和可視化界面。
  • 社區和生態系統:MongoDB 擁有一個活躍的開發者社區,提供了大量的教程、文檔和第三方工具

MongoDB三大核心概念

1. 數據庫(Database)

數據庫是集合的物理容器,每個數據庫在文件系統上有自己的文件集,一個MongoDB服務器通常有多個數據庫,類似于關系型數據庫中的數據庫。

2. 集合(Collection)

集合是一組MongoDB文檔的集合,相當于RDBMS的表。集合存在于一個單獨的數據庫中。集合不強制執行模式,集合中的文檔可以具有不同的字段,通常,集合中的所有文檔具有相似或相關的目的。類似于關系型數據庫中的表。

3. 文檔(Document)

文檔是一組鍵值對。文檔具有動態模式,動態模式意味著同一個集合中的文檔不需要具有相同的字段或結構,并且集合的文檔中的共同字段可能包含不同類型的數據。類似于關系型數據庫中的行(row),以 BSON 格式存儲。

一條文檔示例:(博客)

{_id: ObjectId(7df78ad8902c)title: 'MongoDB Overview', description: 'MongoDB is no sql database',by: 'tutorials point',url: 'http://www.tutorialspoint.com',tags: ['mongodb', 'database', 'NoSQL'],likes: 100, comments: [  {user:'user1',message: 'My first comment',dateCreated: new Date(2011,1,20,2,15),like: 0 },{user:'user2',message: 'My second comments',dateCreated: new Date(2011,1,25,7,45),like: 5}]
}

其中"_id"是自動生成的,可以自己另外設置一個“_id”的值覆蓋自動生成“_id”的值。但是如果文檔已經生成了就無法直接去修改“_id”的值,但是可以通過“刪除-添加”的方式實現

RDBMS術語與MongoDB之間的關系

關系型數據庫管理系統(RDBMS)

MongoDB

數據庫(Database)

數據庫(Database)

表(Table)

集合(Collection)

元組/行(Tuple/Row)

文檔(Document)

列(Column)

字段(Field)

表連接(Table Join)

嵌入式文檔(Embedded Documents)

主鍵(Primary Key)

主鍵(默認鍵_id由MongoDB自身提供)

MongoDB的安裝

下載地址:Download MongoDB Community Server | MongoDB

選擇合適的版本下載:

安裝步驟鏈接:Windows(超詳細保姆級教學)安裝mongodb數據庫_windows安裝mongodb-CSDN博客

根據上面的連接成功連接上mongodb數據庫

注意:安裝過程中是否設置了密碼,我沒有設置所以驗證就是none;

MongoDB的常用操作命令

數據庫操作

a. 創建數據庫

use 數據庫名

使用 use 命令來指定一個數據庫時,如果該數據庫不存在,MongoDB將自動創建它。

b. 查看數據庫列表

show dbs

c. 刪除數據庫

use 數據庫名 //先切換到要刪除的數據庫

db.dropDatabase() //然后刪除當前數據庫

集合操作

操作某個數據庫的集合要記住使用【use 數據庫名】,切換數據庫

a. 創建集合

db.createCollection(name, options)

參數說明:

  • name: 要創建的集合名稱。
  • options: 可選參數, 指定有關內存大小及索引的選項。

options 可以是如下參數:

參數名

類型

描述

示例值

capped

布爾值

是否創建一個固定大小的集合。

true

size

數值

集合的最大大小(以字節為單位)。僅在 capped

為 true 時有效。

10485760

(10MB)

max

數值

集合中允許的最大文檔數。僅在 capped

為 true 時有效。

5000

validator

對象

用于文檔驗證的表達式。

{ $jsonSchema: { ... }}

validationLevel

字符串

指定文檔驗證的嚴格程度。
"off"

:不進行驗證。
"strict"

:插入和更新操作都必須通過驗證(默認)。
"moderate"

:僅現有文檔更新時必須通過驗證,插入新文檔時不需要。

"strict"

validationAction

字符串

指定文檔驗證失敗時的操作。
"error"

:阻止插入或更新(默認)。
"warn"

:允許插入或更新,但會發出警告。

"error"

storageEngine

對象

為集合指定存儲引擎配置。

{ wiredTiger: { ... }}

collation

對象

指定集合的默認排序規則。

{ locale: "en", strength: 2 }

b. 更新集合

db.adminCommand({
renameCollection: "原數據庫.原集合",
to: "目標數據庫.目標集合",
dropTarget: <boolean>
})

參數說明:

  • renameCollection:要重命名的集合的完全限定名稱(包括數據庫名)。
  • to:目標集合的完全限定名稱(包括數據庫名)。
  • dropTarget(可選):布爾值。如果目標集合已經存在,是否刪除目標集合。默認值為 false

c. 刪除集合

db.集合名.drop()

drop() 方法可以永久地從數據庫中刪除指定的集合及其所有文檔,這是一個不可逆的操作,因此需要謹慎使用

文檔操作

a. 添加文檔

方法

用途

是否棄用

insertOne()

插入單個文檔

insertMany()

插入多個文檔

insert()

插入單個或多個文檔

save()

插入或更新文檔

db.集合.insertOne(document, options)

  • document:要插入的單個文檔。
  • options(可選):一個可選參數對象,可以包含 writeConcern 和 bypassDocumentValidation 等。

實例:

db.myCollection.insertOne(

{
name: "Alice",
age: 25,
city: "New York"
}

);

db.集合.insertMany(documents, options)

  • documents:要插入的文檔數組。
  • options(可選):一個可選參數對象,可以包含 ordered、writeConcern 和 bypassDocumentValidation 等。

db.myCollection.insertMany(

[
{ name: "Bob", age: 30, city: "Los Angeles" },
{ name: "Charlie", age: 35, city: "Chicago" }
]

);

從 MongoDB 4.2 開始,db.collection.save() 和 insert()已被標記為棄用

b. 更新文檔

ⅰ. 更新單個文檔

db.集合.updateOne(filter, update, options)

  • filter:用于查找文檔的查詢條件。
  • update:指定更新操作的文檔或更新操作符。
  • options:可選參數對象,如 upsertarrayFilters 等。

示例:

db.myCollection.updateOne(

{ name: "Alice" }, // 過濾條件

{ $set: { age: 26 } }, // 更新操作

{ upsert: false } // 可選參數

);

ⅱ. 批量更新

db.集合.updateMany(filter, update, options)

ⅲ. 單個文檔替換

db.集合.replaceOne(filter, replacement, options)

  • filter:用于查找文檔的查詢條件。
  • replacement:新的文檔,將替換舊的文檔。
  • options:可選參數對象,如 upsert 等。

示例:

db.myCollection.replaceOne(
{ name: "Bob" }, // 過濾條件
{ name: "Bob", age: 31 } // 新文檔
);

ⅳ. 查找并更新

db.集合.findOneAndUpdate(filter, update, options)

  • filter:用于查找文檔的查詢條件。
  • update:指定更新操作的文檔或更新操作符。
  • options:可選參數對象,如 projectionsortupsertreturnDocument

options 參數通常可以包含以下選項:

  • upsert:如果沒有匹配的文檔,是否插入一個新文檔。
  • arrayFilters:當更新嵌套數組時,指定應更新的數組元素的條件。
  • collation:指定比較字符串時使用的排序規則。
  • returnDocument:在 findOneAndUpdate 中使用,指定返回更新前 ("before") 或更新后 ("after") 的文檔。

c. 刪除文檔

ⅰ. 刪除單個文檔

db.集合.deleteOne(filter, options)

  • filter:用于查找要刪除的文檔的查詢條件。
  • options(可選):一個可選參數對象。
ⅱ. 批量刪除

db.集合.deleteMany(filter, options)

ⅲ. 查找并刪除單個文檔

db.集合.findOneAndDelete(filter, options)

  • filter:用于查找要刪除的文檔的查詢條件。
  • options:可選參數對象,如 projectionsort

示例:

db.myCollection.findOneAndDelete(
{ name: "Charlie" },
{ projection: { name: 1, age: 1 } }
);

刪除操作options 參數通常可以包含以下選項:

  • writeConcern:指定寫操作的確認級別。
  • collation:指定比較字符串時使用的排序規則。
  • projection(僅適用于 findOneAndDelete):指定返回的字段。
  • sort(僅適用于 findOneAndDelete):指定排序順序以確定要刪除的文檔。

d. 查詢文檔

ⅰ. 簡單查詢

db.集合.find(query, projection)

  • query:用于查找文檔的查詢條件。默認為 {},即匹配所有文檔。
  • projection(可選):指定返回結果中包含或排除的字段。

示例

db.myCollection.find(
{ age: { $gt: 25 } },
{ name: 1, age: 1, _id: 0 }
);

如果你需要以易讀的方式來讀取數據,可以使用 pretty() 方法,語法格式如下:

db.集合.find().pretty()

pretty() 方法以格式化的方式來顯示所有文檔。

示例

db.col.find().pretty()

結果:
{
"_id" : ObjectId("56063f17ade2f21f36b03133"),
"title" : "MongoDB 教程",
"description" : "MongoDB 是一個 Nosql 數據庫",
"by" : "菜鳥教程",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}

db.集合.findOne(query, projection)

ⅱ. 高級查詢方法
1. 使用比較操作符

MongoDB 支持多種比較操作符,如 $gt、$lt、$gte、$lte、$eq、$ne 等。

操作符

描述

示例

$eq

等于

{ age: { $eq: 25 } }

$ne

不等于

{ age: { $ne: 25 } }

$gt

大于

{ age: { $gt: 25 } }

$gte

大于等于

{ age: { $gte: 25 } }

$lt

小于

{ age: { $lt: 25 } }

$lte

小于等于

{ age: { $lte: 25 } }

$in

在指定的數組中

{ age: { $in: [25, 30, 35] } }

$nin

不在指定的數組中

{ age: { $nin: [25, 30, 35] } }

示例:

查找年齡大于 25 的文檔:

db.myCollection.find({ age: { $gt: 25 } });

2. 使用邏輯操作符

MongoDB 支持多種邏輯操作符,如 $and、$or、$not、$nor 等。

操作符

描述

示例

$and

邏輯與,符合所有條件

{ $and: [ { age: { $gt: 25 } }, { city: "New York" } ] }

$or

邏輯或,符合任意條件

{ $or: [ { age: { $lt: 25 } }, { city: "New York" } ] }

$not

取反,不符合條件

{ age: { $not: { $gt: 25 } } }

$nor

邏輯或非,均不符合條件

{ $nor: [ { age: { $gt: 25 } }, { city: "New York" } ] }

示例:

找年齡大于 25 且城市為 "New York" 的文檔:

db.myCollection.find({
$and: [
{ age: { $gt: 25 } },
{ city: "New York" }
]
});

'where likes>50 AND (by = '菜鳥教程' OR title = 'MongoDB 教程')'

db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鳥教程"},{"title": "MongoDB 教程"}]}).pretty()

結果:
{
"_id" : ObjectId("56063f17ade2f21f36b03133"),
"title" : "MongoDB 教程",
"description" : "MongoDB 是一個 Nosql 數據庫",
"by" : "菜鳥教程",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}

3. 使用元素操作符

操作符

描述

示例

$exists

字段是否存在

{ age: { $exists: true } }

$type

字段的 BSON 類型

{ age: { $type: "int" } }

示例:

查找包含 age 字段的文檔:

db.collection.find({ age: { $exists: true } })

查找 age 字段為整數類型的文檔:

db.collection.find({ age: { $type: "int" } })

4. 使用數組操作符

操作符

描述

示例

$all

數組包含所有指定的元素

{ tags: { $all: ["red", "blue"] } }

$elemMatch

數組中的元素匹配指定條件

{ results: { $elemMatch: { score: { $gt: 80, $lt: 85 } } } }

$size

數組的長度等于指定值

{ tags: { $size: 3 } }

5. 使用其他操作符

操作符

描述

示例

$regex

匹配正則表達式

{ name: { $regex: /^A/ } }

$text

進行文本搜索

{ $text: { $search: "coffee" } }

$where

使用 JavaScript 表達式進行條件過濾

{ $where: "this.age > 25" }

$near

查找接近指定點的文檔

db.collection.find({ location: { $near: [10, 20], $maxDistance: 1000 } })

$geoWithin

查找在指定地理區域內的文檔

db.collection.find({ location: { $geoWithin: { $centerSphere: [[10, 20], 1] } } })

6. 使用正則表達式

可以使用正則表達式進行模式匹配查詢。

示例:

查找名字以 "A" 開頭的文檔:

db.myCollection.find({ name: /^A/ });

7. 投影(指定返回結果字段)

投影用于控制查詢結果中返回的字段。可以使用包含字段和排除字段兩種方式。

示例:

只返回名字和年齡字段:

db.myCollection.find(
{ age: { $gt: 25 } },
{ name: 1, age: 1, _id: 0 }
);

8. 排序

示例:

按年齡降序排序:

db.myCollection.find().sort({ age: -1 });

9. 限制與跳過(分頁)

可以對查詢結果進行限制和跳過指定數量的文檔。

示例1:

返回前 10 個文檔:

db.myCollection.find().limit(10);

示例2:

跳過前 5 個文檔,返回接下來的 10 個文檔:

db.myCollection.find().skip(5).limit(10);

e. 聚合統計

MongoDB 中聚合(aggregate)主要用于處理數據(諸如統計平均值,求和等),并返回計算后的數據結果。

ⅰ. aggregate() 方法

db.集合.aggregate(AGGREGATE_OPERATION)

表達式

描述

實例

$sum

計算總和。

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])

$avg

計算平均值

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])

$min

獲取集合中所有文檔對應值得最小值。

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])

$max

獲取集合中所有文檔對應值得最大值。

db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])

$push

將值加入一個數組中,不會判斷是否有重復的值。

db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])

$addToSet

將值加入一個數組中,會判斷是否有重復的值,若相同的值在數組中已經存在了,則不加入。

db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])

$first

根據資源文檔的排序獲取第一個文檔數據。

db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])

$last

根據資源文檔的排序獲取最后一個文檔數據

db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])

ⅱ. 管道操作

管道在Unix和Linux中一般用于將當前命令的輸出結果作為下一個命令的參數。

MongoDB的聚合管道將MongoDB文檔在一個管道處理完畢后將結果傳遞給下一個管道處理。管道操作是可以重復的。

表達式:處理輸入文檔并輸出。表達式是無狀態的,只能用于計算當前聚合管道的文檔,不能處理其它的文檔。

聚合框架中常用的幾個操作:

  • $project:修改輸入文檔的結構。可以用來重命名、增加或刪除域,也可以用于創建計算結果以及嵌套文檔。
  • $match:用于過濾數據,只輸出符合條件的文檔。$match使用MongoDB的標準查詢操作。
  • $limit:用來限制MongoDB聚合管道返回的文檔數。
  • $skip:在聚合管道中跳過指定數量的文檔,并返回余下的文檔。
  • $unwind:將文檔中的某一個數組類型字段拆分成多條,每條包含數組中的一個值。
  • $group:將集合中的文檔分組,可用于統計結果。
  • $sort:將輸入文檔排序后輸出。
  • $geoNear:輸出接近某一地理位置的有序文檔。

示例:

db.articles.aggregate( [
{ $match : { score : { $gt : 70, $lte : 90 } } }, //第一個管道
{ $group: { _id: null, count: { $sum: 1 } } } //第二個管道
] );

$match用于獲取分數大于70小于或等于90記錄,然后將符合條件的記錄送到下一階段$group管道操作符進行處理。

按順序將前一個管道的處理后的數據傳給后一個管道的處理,以此類推

關注我,下一篇講Spring Boot 整合MongoDB

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

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

相關文章

web網站開發,在線%射擊比賽成績管理%系統開發demo,基于html,css,jquery,python,django,model,orm,mysql數據庫

經驗心得 這個也是crud業務單子&#xff0c;第二個聊點其他的&#xff0c;從最早的無分層開發&#xff0c;到三層開發&#xff0c;工廠&#xff0c;各種接口&#xff0c;再到后面多層&#xff0c;代碼無痕aop&#xff0c;各種框架等&#xff0c;都是在方便我們快速打架一個程序…

[QtADS]解析ads.pro

本文來源 &#xff1a; 騰訊元寶subdirs : 子目錄TEMPLATE subdirs的作用????核心功能??&#xff1a;聲明當前項目為“多項目管理”模式。Qt 的構建系統&#xff08;qmake&#xff09;會遍歷 SUBDIRS中列出的子目錄&#xff0c;在每個子目錄中尋找 .pro文件并遞歸構建。…

三方相機問題分析六:【沒用相機,詭異的手電筒不可使用】下拉狀態欄,手電筒置灰,無法打開,提提示相機正在使用

【關注我,后續持續新增專題博文,謝謝!!!】 上一篇我們講了: 這一篇我們開始講: 三方相機問題分析六:【沒用相機,詭異的手電筒不可使用】下拉狀態欄,點擊手電筒,手電筒置灰,無法打開,提提示相機正在使用9348353 目錄 一、問題背景 二、:問題分析過程 2.1:基于…

Java Selenium 自動打開瀏覽器保存截圖

// 代碼 public class ScreenshotExample {public static void main(String[] args) {// 1. 設置瀏覽器驅動路徑&#xff08;根據實際路徑修改&#xff09;System.setProperty("webdriver.chrome.driver", "D:\\chromedriver-win64\\chromedriver.exe");//…

新商機:為了減少輻射,可以用座機打機房中心再轉手機

某些人痛恨自家附近有基站&#xff0c;說是輻射太大。你不能說人家迷信。一般解決辦法就是拆基站。而我覺得&#xff0c;商機來了。現在座機基本沒人裝了。新商機就是座機。附近沒有基站&#xff0c;又要打電話&#xff0c;怎么辦&#xff1f;裝座機。用座機打電話時&#xff0…

【Java|第十九篇】面向對象九——String類和枚舉類

&#xff08;四&#xff09;面向對象11、String類&#xff08;1&#xff09;概述<1>String是一個類&#xff0c;引用數據類型&#xff0c;用來表示字符串&#xff1b;<2>String是Lang包下的類&#xff0c;使用不需要導包&#xff1b;<3>字符串的值不能變&…

超越相似名稱:Elasticsearch semantic text 如何在簡潔、高效、集成方面超越 OpenSearch semantic 字段

作者&#xff1a;來自 Elastic Mike Pellegrini, Nick Chow 及 Libby Lin 比較 Elasticsearch 語義文本和 OpenSearch 語義字段在簡潔性、可配置性和效率方面的表現。 自己動手體驗向量搜索&#xff0c;使用這個自定進度的 Search AI 實操學習。你現在可以開始免費的云試用&am…

OpenAI發布最新大模型GPT5、本地部署GPT開源模型

OpenAI發布最新大模型GPT5、本地部署GPT開源模型 GPT-5概述 北京時間 2025年8月8日 凌晨1點 OPENAI舉行了1個小時的線上發布會&#xff0c;正式推出了其史上最聰明、最強大的大模型GPT-5。 GPT-5是OpenAI發布的最新一代大型語言模型&#xff0c;它基于Transformer架構&#xff…

容器網絡模式選擇在云服務器多節點部署中的連通性驗證方案

容器網絡模式選擇在云服務器多節點部署中的連通性驗證方案在云計算環境中&#xff0c;容器網絡模式的選擇直接影響著多節點部署的通信效率和安全性。本文將從Docker原生網絡驅動對比入手&#xff0c;深入分析Overlay、Host、Bridge等主流網絡模式在跨主機通信場景下的性能表現&…

電商雙11美妝數據分析

1、數據初步了解2.數據清洗2.1 重復值處理 直接刪除重復值。2.2 缺失值處理通過上面觀察數據發現sale_count,comment_count 存在缺失值,先觀察存在缺失值的行的基本情況存在的缺失值很可能意味著售出的數量為0或者評論的數量為0&#xff0c;所以我們用0來填補缺失值。2.3 數據挖…

Pytest項目_day14(參數化、數據驅動)

parametrize 參數化可以組裝測試數據。在測試前定義好測試數據&#xff0c;并在測試用例中使用 單參數單次循環 我們可以在裝飾器中使用mark.parametrize&#xff0c;來定義參數名和參數值列表 參數名還需要傳給函數參數名需要用字符串來定義&#xff0c;參數值列表需要用可迭代…

Nest.js、Knex.js、Nuxt.js、Next.js 和 Spring Boot的異同相關概念

總述Nest.js、Knex.js、Nuxt.js、Next.js 和 Spring Boot 是分屬不同技術領域的工具&#xff0c;涵蓋前端框架、后端框架、數據庫工具等角色&#xff0c;它們在開發中既有功能交集&#xff0c;也有明確的定位差異。一、相同點服務端參與能力五者均能在服務端發揮作用&#xff1…

第2節 大模型分布式推理架構設計原則

大模型推理系統的設計過程,本質上是在多重約束下尋找最優解的過程。硬件資源的物理限制、場景對性能的剛性要求、系統的可擴展性需求,共同構成了設計的邊界條件。明確這些約束的具體表現形式,理解性能指標之間的權衡邏輯,確立架構設計的核心原則,是構建高效分布式推理系統…

快速部署一個鑒黃服務

1.安裝依賴pip install opennsfw22.代碼實現import opennsfw2 as n2# 將自動下載預訓練模型 open_nsfw_weights.h5 到 C:\Users\Administrator\.opennsfw2\weights # pip install opennsfw2# 單張預測 image_path 1.jpg nsfw_probability n2.predict_image(image_path) print…

Camera open failed

前言 由前面的幾篇博客可以知道&#xff0c;openCamera&#xff0c;createCaptureSession&#xff0c;setRepeatingRequest&#xff0c;capture是非常重要的過程&#xff0c;如果其中一個環節出了問題時該如何分析呢&#xff0c;這里我們首先從打開相機流程時&#xff0c;打開…

醫美產業科技成果展陳中心:連接微觀肌膚世界與前沿科技的橋梁

作為一名深耕展陳設計施工的從業者&#xff0c;當接到醫美產業科技成果展陳中心的項目時&#xff0c;我深知這不是簡單的 “技術堆砌”&#xff0c;而是要在 “科學嚴謹性” 與 “美學體驗感” 之間找到平衡 —— 讓參觀者既能看懂激光設備的波長原理&#xff0c;又能感知膠原蛋…

在 Android 系統中清理應用數據但保留應用程序本身,可以通過以下幾種方法實現

在 Android 系統中清理應用數據但保留應用程序本身&#xff0c;可以通過以下幾種方法實現在 Android 系統中清理應用數據但保留應用程序本身&#xff0c;可以通過以下幾種方法實現&#xff1a;方法 1: 使用 Android 設置&#xff08;無需 root&#xff09;方法 2: 使用 ADB 命令…

Linux中tty與8250-uart的虐戀(包括雙中斷發送接收機制)

串口通用驅動文件在哪里&#xff1f; drivers/tty/serial/哪一個是正確的compatible&#xff1f; arch/arm64/boot/dts/rockchip/rk3568.dtsi uart3: serialfe670000 {compatible "rockchip,rk3568-uart", "snps,dw-apb-uart";reg <0x0 0xfe670000 0…

GitHub 倉庫代碼上傳指南

文章目錄 ??? 一、環境準備 ?? 二、創建 GitHub 倉庫 ?? 三、本地代碼上傳流程 首次上傳 更新已有代碼 ?? 四、認證問題解決(必看!) 方案 1:個人訪問令牌(PAT) 方案 2:SSH 密鑰(推薦長期使用) ? 五、常見錯誤處理 ?? 六、最佳實踐建議 ?? 高級技巧 ??…

介紹一下 自動駕駛 感知多任務訓練模型設計

自動駕駛感知多任務訓練模型是指在一個統一的模型架構中&#xff0c;同時完成自動駕駛場景下的多個感知任務&#xff08;如目標檢測、語義分割、深度估計、車道線檢測等&#xff09;的模型設計。其核心目標是通過特征共享和任務協同&#xff0c;在提升單任務性能的同時&#xf…