MongoDB 簡(jiǎn)介
Mongo 并非芒果(Mango)的意思勾习,而是源于 Humongous(巨大的;龐大的)一詞懈玻。
MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的 NoSQL 數(shù)據(jù)庫(kù)巧婶。由 C++ 語(yǔ)言編寫。旨在為 WEB 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案涂乌。關(guān)于什么是 NoSQL 可閱讀《學(xué)了那么多 NoSQL 數(shù)據(jù)庫(kù) NoSQL 究竟是啥》
MongoDB 是一個(gè)介于關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)之間的產(chǎn)品艺栈,是非關(guān)系型數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的湾盒。
MongoDB 使用 BSON(Binary JSON)對(duì)象來(lái)存儲(chǔ)湿右,與 JSON 格式的鍵值對(duì)(key/value)類似,字段值可以包含其他文檔罚勾,數(shù)組及文檔數(shù)組诅需。支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言荧库,幾乎可以實(shí)現(xiàn)類似關(guān)系型數(shù)據(jù)庫(kù)單表查詢的絕大部分功能堰塌,而且還支持對(duì)數(shù)據(jù)建立索引。
MongoDB 歷史
2007 年分衫,Dwight Merriman场刑,Eliot Horowitz 和 Kevin Ryan 成立 10gen 軟件公司,在成立之初,這家的公司目標(biāo)是進(jìn)軍云計(jì)算行業(yè)牵现,為企業(yè)提供云計(jì)算服務(wù)铐懊。在開發(fā)云計(jì)算產(chǎn)品時(shí),他們準(zhǔn)備開發(fā)一個(gè)類似于數(shù)據(jù)庫(kù)的組件瞎疼,為云計(jì)算產(chǎn)品提供存儲(chǔ)服務(wù)科乎。當(dāng)時(shí)是關(guān)系型數(shù)據(jù)庫(kù)一統(tǒng)天下的時(shí)間,他們覺得傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)無(wú)法滿足他們的要求贼急,他們想要一款程序員不懂SQL語(yǔ)言也可以使用的數(shù)據(jù)存儲(chǔ)產(chǎn)品茅茂。
在網(wǎng)絡(luò)上找了一圈,不管是開源的還是閉源的產(chǎn)品太抓,都沒找到讓他們滿意的東西空闲,既然找不到,那就自己開發(fā)吧走敌,反正他們也有那個(gè)技術(shù)實(shí)力碴倾,10gen 的創(chuàng)始人都來(lái)自谷歌,他們創(chuàng)建的網(wǎng)絡(luò)廣告公司 DoubleClick 被谷歌收購(gòu)了掉丽,這是他們的第二次創(chuàng)業(yè)跌榔。
10gen 公司不使用關(guān)系型數(shù)據(jù)庫(kù)是有一定原因的,當(dāng)時(shí)他們還在 DoubleClick 公司的時(shí)候捶障,就吃過(guò)關(guān)系型數(shù)據(jù)庫(kù)的苦頭僧须。DoubleClick 是一家網(wǎng)絡(luò)廣告公司,服務(wù)美國(guó)眾多的知名公司残邀,該公司每秒提供 40 萬(wàn)個(gè)廣告皆辽,但在可伸縮性和敏捷性方面經(jīng)常遇到困難,因此他們不得不經(jīng)常自己開發(fā)和使用許多自定義數(shù)據(jù)存儲(chǔ)來(lái)解決現(xiàn)有關(guān)系型數(shù)據(jù)庫(kù)的不足芥挣,這讓他們很是苦惱驱闷。
因此他們決定開發(fā)一款數(shù)據(jù)庫(kù)產(chǎn)品解決他們?cè)?DoubleClick 時(shí)遇到的問題,并為自己的云計(jì)算產(chǎn)品提供存儲(chǔ)服務(wù)空免。
- MongoDB 最初于 2007 年開發(fā)空另,由位于紐約的一個(gè)名為
10gen
的組織開發(fā),現(xiàn)在被稱為MongoDB Inc.
- 2009 年蹋砚,經(jīng)過(guò)將近 2 年的開發(fā)扼菠,10gen 開發(fā)出了 MongoDB 的雛形并將它開源以及正式命名為 MongoDB,同時(shí)成立開源社區(qū)坝咐,通過(guò)社區(qū)運(yùn)營(yíng) MongoDB循榆。
- 2009 年 02 月 MongoDB 1.0 發(fā)布,提供了大部分基本的查詢功能墨坚。
- 2009 年 12 月 MongoDB 1.2 發(fā)布秧饮,引入了 map-reduce,支持大規(guī)模數(shù)據(jù)處理。
- MongoDB 的第一個(gè)真正產(chǎn)品是從 2010 年 03 月發(fā)布的 MongoDB 1.4 版本開始的盗尸。
- 2010 年 8 月 MongoDB 1.6 發(fā)布柑船,引入了一些主要特性,比如用于水平伸縮的分片泼各、具備自動(dòng)故障轉(zhuǎn)移能力的副本集以及對(duì) IPv6 的支持鞍时。
- 2012 年 05 月 23 日,MongoDB 2.1 發(fā)布扣蜻。該版本采用全新架構(gòu)逆巍,包含諸多增強(qiáng)。
- 2012 年 06 月 06 日弱贼,MongoDB 2.0.6 發(fā)布蒸苇,分布式文檔數(shù)據(jù)庫(kù)磷蛹。
- 2012 年 8 月 MongoDB 2.2 發(fā)布吮旅,引入了聚合管道,可以將多個(gè)數(shù)據(jù)處理步驟組合成一個(gè)操作鏈味咳。
- 2013 年 MongoDB 推出第一款商業(yè)版本 MongoDB Enterprise Advanced庇勃。
- 2013 年 04 月 23 日,MongoDB 2.4.3 發(fā)布槽驶,此版本包括了一些性能優(yōu)化责嚷,功能增強(qiáng)以及 bug 修復(fù)。
- 2013 年 08 月 20 日掂铐,MongoDB 2.4.6 發(fā)布罕拂,仍然是以性能優(yōu)化,功能增強(qiáng)和 bug 修復(fù)為主全陨。
- 2015 年 03 月 MongoDB 3.0 發(fā)布爆班,包含了新的 WiredTiger 存儲(chǔ)引擎、可插拔存儲(chǔ)引擎 API辱姨、增加了 50 個(gè)副本集限制和安全改進(jìn)柿菩。同年晚些時(shí)候又發(fā)布了 3.2 版本,支持文檔驗(yàn)證雨涛、部分索引和一些主要的聚合增強(qiáng)枢舶。
- 2016 年 MongoDB 推出了 Atlas 服務(wù),MongoDB Atlas替久,與公有云服務(wù)廠商(谷歌凉泄、微軟Azure)合作。這一年蚯根,MongoDB 爆出了非常嚴(yán)重的安全門事件后众,黑客通過(guò) MongoDB 的默認(rèn)監(jiān)聽地址 0.0.0.0 刪除數(shù)據(jù),并且通過(guò)此漏洞進(jìn)行勒索,支付 0.2 到 0.5 的比特幣就可以恢復(fù)數(shù)據(jù)吼具。
- 2017 年 10 月 MongoDB 公司成立 10 周年之際僚纷,順利通過(guò) IPO 在紐交所上市。開盤 24 美元拗盒,公司估值達(dá)到 16 億美元怖竭,并獲得 1.92 美元的籌資。
- 2017 年 11 月 MongoDB 3.6 發(fā)布陡蝇,為多集合連接查詢痊臭、變更流和使用 JSON 模式進(jìn)行文檔驗(yàn)證提供了更好的支持。
- 2018 年 06 月 MongoDB 4.0 發(fā)布登夫,這一版本的發(fā)布獲得了廣泛的關(guān)注广匙,提供了跨文檔事務(wù)處理能力。這是一個(gè)重要的里程碑恼策,MongoDB 已經(jīng)為高數(shù)據(jù)完整性需求做好了準(zhǔn)備鸦致。
- 2019 年 03 月 18 日,F(xiàn)orrester 授予 MongoDB NoSQL 領(lǐng)導(dǎo)者稱號(hào)涣楷。
- 2019 年 10 月 MongoDB 4.2 發(fā)布分唾,開始支持分布式事務(wù)。
- 截至 2020 年 10 月狮斗,MongoDB 的社區(qū)版版本是 4.4.1绽乔,擴(kuò)展性和性能增強(qiáng),降低復(fù)制延遲碳褒,可用性和容錯(cuò)性增強(qiáng)折砸,查詢能力和易用性增強(qiáng),MongoDB 云平臺(tái)的功能更新沙峻。MongoDB 逐漸的從一個(gè)專注于數(shù)據(jù)庫(kù)服務(wù)的廠商睦授,轉(zhuǎn)變?yōu)樘峁?shù)據(jù)平臺(tái)服務(wù)的廠商。
截至 2020 年专酗,MongoDB 的全球下載量達(dá)到了 1.1 億次睹逃。MongoDB 公司目前有 2000 多名員工,有超過(guò) 18000 名付費(fèi)客戶祷肯,其中有很多客戶同時(shí)使用 MongoDB Atlas 和 MongoDB 企業(yè)版沉填。大多數(shù)大公司在內(nèi)部的一些場(chǎng)景中仍然使用的是社區(qū)版。MongoDB 社區(qū)版仍然是開源的佑笋,除了一些關(guān)鍵特性外翼闹,它與 MongoDB 企業(yè)版差不多。
MongoDB 支持語(yǔ)言
MongoDB 與關(guān)系型數(shù)據(jù)庫(kù)術(shù)語(yǔ)對(duì)比
SQL 術(shù)語(yǔ)概念 | MongoDB 術(shù)語(yǔ)概念 |
---|---|
database(數(shù)據(jù)庫(kù)) | database(數(shù)據(jù)庫(kù)) |
table(表) | collection(集合) |
row(行) | document or BSON document(文檔) |
column(列) | field(字段) |
index(索引) | index(索引) |
table joins(表連接) | embedded documents and linking(嵌入的文檔和鏈接) |
primary key Specify any unique column or column combination as primary key.(指定任意唯一的列或列組合作為主鍵) | primary keyIn MongoDB, the primary key isautomatically set to the _id field.(在 MongoDB 中蒋纬,主鍵被自動(dòng)設(shè)置為 _id 字段) |
aggregation (e.g. group by) | MongoDB provides three ways to perform aggregation: the aggregation pipeline, the map-reduce function, and single purpose aggregation methods.(聚合操作) |
MongoDB 數(shù)據(jù)類型
數(shù)據(jù)類型 | 描述 |
---|---|
String | 字符串猎荠。存儲(chǔ)數(shù)據(jù)常用的數(shù)據(jù)類型坚弱。在 MongoDB 中,UTF-8 編碼的字符串才是合法的关摇。 |
Integer | 整型數(shù)值荒叶。用于存儲(chǔ)數(shù)值。根據(jù)你所采用的服務(wù)器输虱,可分為 32 位或 64 位些楣。 |
Boolean | 布爾值。用于存儲(chǔ)布爾值(真/假)宪睹。 |
Double | 雙精度浮點(diǎn)值愁茁。用于存儲(chǔ)浮點(diǎn)值。 |
Min/Max keys | 將一個(gè)值與 BSON(二進(jìn)制的 JSON)元素的最低值和最高值相對(duì)比亭病。 |
Arrays | 用于將數(shù)組或列表或多個(gè)值存儲(chǔ)為一個(gè)鍵鹅很。 |
Timestamp | 時(shí)間戳。記錄文檔修改或添加的具體時(shí)間罪帖。 |
Object | 用于內(nèi)嵌文檔促煮。 |
Null | 用于創(chuàng)建空值。 |
Symbol | 符號(hào)胸蛛。該數(shù)據(jù)類型基本上等同于字符串類型污茵,但不同的是樱报,它一般用于采用特殊符號(hào)類型的語(yǔ)言葬项。 |
Date | 日期時(shí)間。用 UNIX 時(shí)間格式來(lái)存儲(chǔ)當(dāng)前日期或時(shí)間迹蛤。你可以指定自己的日期時(shí)間:創(chuàng)建 Date 對(duì)象民珍,傳入年月日信息。 |
Object ID | 對(duì)象 ID盗飒。用于創(chuàng)建文檔的 ID嚷量。 |
Binary Data | 二進(jìn)制數(shù)據(jù)。用于存儲(chǔ)二進(jìn)制數(shù)據(jù)逆趣。 |
Code | 代碼類型蝶溶。用于在文檔中存儲(chǔ) JavaScript 代碼。 |
Regular expression | 正則表達(dá)式類型宣渗。用于存儲(chǔ)正則表達(dá)式抖所。 |
MongoDB 下載與安裝
下載
官網(wǎng):https://www.mongodb.com/
下載地址:https://www.mongodb.com/try/download/community
在頁(yè)面中選擇 MongoDB Community Server
社區(qū)版,根據(jù)自己的系統(tǒng)選擇對(duì)應(yīng)的版本痕囱,我自己使用的是 CentOS
版本田轧。而 MongoDB 只有 RedHat
版本,下載使用即可鞍恢。
CentOS 是 Community ENTerprise Operating System 的簡(jiǎn)稱傻粘,也可以叫它社區(qū)企業(yè)操作系統(tǒng)每窖,是 Linux 操作系統(tǒng)中的一個(gè)發(fā)行版本。
CentOS 并不是全新的 Linux 發(fā)行版弦悉,它是 Red Hat 家族發(fā)行的企業(yè)版的產(chǎn)品 Red Hat Enterprise Linux(以下稱之為 RHEL)的克隆版本窒典。RHEL 是很多企業(yè)采用的 Linux 發(fā)行版本,需要向 Red Hat 付費(fèi)才可以使用稽莉,并能得到付費(fèi)對(duì)應(yīng)的服務(wù)崇败,技術(shù)支持和版本升級(jí)。CentOS 可以像 RHEL 一樣的構(gòu)筑 Linux 系統(tǒng)環(huán)境肩祥,但不需要向 Red Hat 支付任何的產(chǎn)品和服務(wù)費(fèi)用后室,同時(shí)也得不到任何有償技術(shù)支持和升級(jí)服務(wù)。
還可以通過(guò):https://docs.mongodb.com/manual/installation/ 確認(rèn)該版本軟件是否支持你的操作系統(tǒng)混狠。
安裝
將資源上傳至服務(wù)器 /usr/local/src
岸霹,解壓至 /usr/local
并重命名為 mongodb
。
# 創(chuàng)建 mongodb 目錄
mkdir -p /usr/local/mongodb
# 解壓 mongodb 至指定目錄
tar -zxvf /usr/local/src/mongodb-linux-x86_64-rhel70-4.4.1.tgz -C /usr/local/
# 重命名解壓目錄為 mongodb
mv /usr/local/mongodb-linux-x86_64-rhel70-4.4.1/ /usr/local/mongodb
創(chuàng)建數(shù)據(jù)/日志目錄
創(chuàng)建用于存放數(shù)據(jù)和日志的文件夾将饺,并修改其權(quán)限增加讀寫權(quán)限贡避。
# 創(chuàng)建存放數(shù)據(jù)的目錄
mkdir -p /usr/local/mongodb/data/db
# 創(chuàng)建存放日志的目錄
mkdir -p /usr/local/mongodb/logs
# 創(chuàng)建日志記錄文件
touch /usr/local/mongodb/logs/mongodb.log
啟動(dòng) MongoDB
前臺(tái)啟動(dòng)
MongoDB 的默認(rèn)啟動(dòng)方式為前臺(tái)啟動(dòng)。所謂的前臺(tái)啟動(dòng)就是 MongoDB 啟動(dòng)進(jìn)程后會(huì)占用當(dāng)前的終端窗口予弧。
# 切換至指定目錄
cd /usr/local/mongodb/
# 前臺(tái)啟動(dòng)
bin/mongod --dbpath /usr/local/mongodb/data/db/ --logpath /usr/local/mongodb/logs/mongodb.log --logappend --port 27017 --bind_ip 0.0.0.0
-
--dbpath
:指定數(shù)據(jù)文件存放目錄 -
--logpath
:指定日志文件刮吧,注意是指定文件不是目錄 -
--logappend
:使用追加的方式記錄日志 -
--port
:指定端口,默認(rèn)為 27017 -
--bind_ip
:綁定服務(wù) IP掖蛤,若綁定 127.0.0.1杀捻,則只能本機(jī)訪問,默認(rèn)為本機(jī)地址
后臺(tái)啟動(dòng)
所謂的后臺(tái)啟動(dòng)就是以守護(hù)進(jìn)程的方式啟動(dòng) MongoDB蚓庭。命令中添加 --fork
即可致讥。
# 后臺(tái)啟動(dòng)
bin/mongod --dbpath /usr/local/mongodb/data/db/ --logpath /usr/local/mongodb/logs/mongodb.log --logappend --port 27017 --bind_ip 0.0.0.0 --fork
通過(guò)命令啟動(dòng)的方式并不適合管理,畢竟每次輸入命令都需要考慮各參數(shù)的配置器赞。我們可以通過(guò)配置文件來(lái)配置啟動(dòng)參數(shù)垢袱,然后通過(guò)指定配置文件的方式啟動(dòng)服務(wù),這樣在管理 MongoDB 上就比較方便了港柜。
配置文件
在 bin
目錄下增加一個(gè) mongodb.conf
配置文件请契。
# 數(shù)據(jù)文件存放目錄
dbpath = /usr/local/mongodb/data/db
# 日志文件存放目錄
logpath = /usr/local/mongodb/logs/mongodb.log
# 以追加的方式記錄日志
logappend = true
# 端口默認(rèn)為 27017
port = 27017
# 對(duì)訪問 IP 地址不做限制,默認(rèn)為本機(jī)地址
bind_ip = 0.0.0.0
# 以守護(hù)進(jìn)程的方式啟用夏醉,即在后臺(tái)運(yùn)行
fork = true
啟動(dòng)
# 切換至指定目錄
cd /usr/local/mongodb/
# 指定配置文件的方式啟動(dòng)服務(wù)
bin/mongod -f bin/mongodb.conf
客戶端訪問
可以通過(guò) bin
目錄中的 mongo
來(lái)訪問 MongoDB
服務(wù)器爽锥。
命令為:bin/mongo --host 連接的主機(jī)地址(默認(rèn)127.0.0.1) --port 端口(默認(rèn)27017)
[root@localhost mongodb]# bin/mongo
MongoDB shell version v4.4.1
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("2bf54fad-83bc-444c-8bee-166a224445b8") }
MongoDB server version: 4.4.1
---
The server generated these startup warnings when booting:
2020-10-21T10:47:44.855+08:00: ***** SERVER RESTARTED *****
2020-10-21T10:47:47.024+08:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
2020-10-21T10:47:47.024+08:00: You are running this process as the root user, which is not recommended
2020-10-21T10:47:47.024+08:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
2020-10-21T10:47:47.024+08:00: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never'
2020-10-21T10:47:47.024+08:00: Soft rlimits too low
2020-10-21T10:47:47.024+08:00: currentValue: 1024
2020-10-21T10:47:47.024+08:00: recommendedMinimum: 64000
---
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).
The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.
To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
>
help
幫助命令。
> help
db.help() help on db methods
db.mycoll.help() help on collection methods
sh.help() sharding helpers
rs.help() replica set helpers
help admin administrative help
help connect connecting to a db help
help keys key shortcuts
help misc misc things to know
help mr mapreduce
show dbs show database names
show collections show collections in current database
show users show users in current database
show profile show most recent system.profile entries with time >= 1ms
show logs show the accessible logger names
show log [name] prints out the last segment of log in memory, 'global' is default
use <db_name> set current database
db.mycoll.find() list objects in collection mycoll
db.mycoll.find( { a : 1 } ) list objects in mycoll where a == 1
it result of the last line evaluated; use to further iterate
DBQuery.shellBatchSize = x set default number of items to display on shell
exit quit the mongo shell
db.version()
查看版本信息授舟。
> db.version()
4.4.1
show dbs
查看所有數(shù)據(jù)庫(kù)救恨。
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
這里先簡(jiǎn)單通過(guò)客戶端進(jìn)行訪問測(cè)試,后面會(huì)詳細(xì)羅列客戶端操作 MongoDB 數(shù)據(jù)庫(kù)释树、集合肠槽、文檔擎淤、索引、內(nèi)置函數(shù)等相關(guān)的操作秸仙。
關(guān)閉 MongoDB
前臺(tái)啟動(dòng)關(guān)閉
使用 Ctrl + c
即可關(guān)閉嘴拢。
后臺(tái)啟動(dòng)關(guān)閉
使用 --shutdown
參數(shù)即可關(guān)閉。
# 命令啟動(dòng)方式的關(guān)閉
bin/mongod --dbpath /usr/local/mongodb/data/db/ --logpath /usr/local/mongodb/logs/mongodb.log --logappend --port 27017 --bind_ip 0.0.0.0 --fork --shutdown
# 配置文件啟動(dòng)方式的關(guān)閉
bin/mongod -f bin/mongodb.conf --shutdown
kill 命令關(guān)閉
通過(guò) kill -9
的方式強(qiáng)制關(guān)閉進(jìn)程寂纪,一般這種方式都不怎么推薦使用席吴。
# 查看 mongodb 運(yùn)行的進(jìn)程信息
ps -ef | grep mongodb
# kill -9 強(qiáng)制關(guān)閉
kill -9 pid
MongoDB 函數(shù)關(guān)閉
連接到 MongoDB 服務(wù)后,切換到 admin 數(shù)據(jù)庫(kù)捞蛋,并使用相關(guān)函數(shù)關(guān)閉服務(wù)孝冒。
# 連接 mongodb
bin/mongo
# 切換 admin 數(shù)據(jù)庫(kù)
use admin
# 執(zhí)行以下函數(shù)(2選1)即可關(guān)閉服務(wù)
db.shutdownServer()
db.runCommand(“shutdown”)
環(huán)境變量
每次操作 MongoDB 都需要進(jìn)入具體的目錄才行,比如啟動(dòng)服務(wù)拟杉,客戶端進(jìn)行連接等庄涡,可不可以在任意目錄都能進(jìn)行操作。答案當(dāng)然是可以的搬设,只需要將 MongoDB 相關(guān)目錄添加至系統(tǒng)環(huán)境變量即可穴店。
先通過(guò) vim /etc/profile
編輯系統(tǒng)環(huán)境變量文件,添加以下內(nèi)容拿穴。
# 添加環(huán)境變量
export MONGODB_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGODB_HOME/bin
然后通過(guò) source /etc/profile
重新加載系統(tǒng)環(huán)境變量泣洞。這樣在系統(tǒng)任意目錄下都可以直接操作 MongoDB 了。
本文講解了 MongoDB 的一些入門級(jí)內(nèi)容默色,教會(huì)了大家如何基于 Linux 環(huán)境下載與安裝 MongoDB球凰。下文我們先從安全問題入手,看看 MongoDB 未加密導(dǎo)致的慘痛經(jīng)歷與教訓(xùn)该窗,順便再教大家一波實(shí)用的解決方案弟蚀。
本文采用 知識(shí)共享「署名-非商業(yè)性使用-禁止演繹 4.0 國(guó)際」許可協(xié)議
。
大家可以通過(guò) 分類
查看更多關(guān)于 MongoDB
的文章酗失。
?? 您的點(diǎn)贊
和轉(zhuǎn)發(fā)
是對(duì)我最大的支持。
?? 關(guān)注公眾號(hào) 哈嘍沃德先生
「文檔 + 視頻」每篇文章都配有專門視頻講解昧绣,學(xué)習(xí)更輕松噢 ~