MongoDB基礎命令筆記

来源:http://www.cnblogs.com/blueness-sunshine/archive/2016/12/07/6139092.html
-Advertisement-
Play Games

一、創建資料庫 use foobar 二、創建集合 db.persons.insert({name:"zhaomin",age:23}) 三、查找 db.persons.find() db.persons.findOne() db.persons.find() db.persons.findOne( ...


一、創建資料庫
use foobar
二、創建集合
db.persons.insert({name:"zhaomin",age:23})
三、查找
db.persons.find() db.persons.findOne() 四、修改
db.persons.update({name:"zhaomin"},{$set:{age:18}}) #不會影響其他屬性列 ,主鍵衝突會報錯 db.persons.update({name:"zhaomin"},{$set:{age:18}},true)#第三個參數為true 則執行insertOrUpdate操作,查詢出則更新,沒查出則插入,或者 var p = db.persons.findOne(); db.persons.update(p,{name:"zhaomin1"}) #會刪除其他的屬性列 五、刪除
db.persons.remove({age:1}) #刪除滿足條件的第一條 只刪除數據 不刪除索引 #刪除集合 db.persons.drop(); #刪除資料庫 db.dropDatabase(); 六、查看集合
show collections
查看資料庫
show dbs
七、插入數據
db.persons.insert() #不允許鍵值重覆 db.persons.save() #若鍵值重覆,可改為插入操作 八、批量更新
db.persons.update({name:"zhaomin"},{$set:{name:"zhanmin11"}},false,true);
  批量操作需要和選擇器同時使用,第一個false表示不執行insertOrUpdate操作,第二個true表示執行批量 九、更新器使用$set : 指定一個鍵值對,若存在就進行修改,不存在則添加   $inc :只使用於數字類型,可以為指定鍵值對的數字類型進行加減操作:
db.persons.update({name:"zhangsan"},{$inc:{age:2}})
  執行結果是名字叫“zhangsan”的年齡加了2   $unset : 刪除指定的鍵
db.persons.update({name:"zhangsan"},{$unset:{age:1}})
  $push : 數組鍵操作:1、如果存在指定的數組,則為其添加值;2、如果不存在指定的數組,則創建數組鍵,並添加值;3、如果指定的鍵不為數組類型,則報錯;   $pushAll : 批量想數組鍵插入值
db.persons.update({name:"zhangsan"},{$pushAll:{classes:["English","Math","Chinese"]}});
  $addToSet : 當指定的數組中有這個值時,不插入,反之插入
db.persons.update({name:"zhangsan"},{$addToSet:{classes:"English"}}); #則不會添加到數組裡
  $pop:刪除指定數組的值,當value=1 刪除最後一個值,當value=-1 刪除第一個值
db.persons.update({name:"zhangsan"},{$pop:{classes:1}}) #刪除了最後一個值
  $pull : 刪除指定數組指定的值
db.persons.update({name:"zhangsan"},{$pull:{classes:"Chinese"}}) $pullAll批量刪除指定數組指定的值 指定一定是數組,否則會報錯
db.persons.update({name:"zhangsan"},{$pull:{classes:["Chinese"]}}) #若數組中有多個Chinese,則全刪除
  $ : 修改指定數組時,若數組有多個對象,但只想修改其中一些,則需要定位器:
db.persons.update({"classes.type":"AA"},{$set:{"classes.$.sex":"male"}})
  $addToSet$each結合完成批量數組更新操作
db.persons.update({name:"zhangsan"},{$set:{classes:{$each:["chinese","art"]}}})
十、runCommand函數和findAndModify函數
runCommand({   findAndModify:"persons",   query:{查詢器},   sort:{排序},   update:{修改器},   new:true 是否返回修改後的數據 });   runCommand函數可執行mongdb中的特殊函數   findAndModify就是特殊函數之一,用於返回執行返回update或remove後的文檔   例如:
ps=db.runCommand({   findAndModify:"persons",   query:{name:"zhangsan"},   update:{$set:{name:"lisi"}},   new:true }) ps.value 十一、查詢詳講
db.persons.find({},{_id:0,name:1})
  第一個空括弧表示查詢全部數據,第二個括弧中值為0表示不返回,值為1表示返回,預設情況下若不指定主鍵,主鍵總是會被返回;   db.persons.find({條件},{指定鍵});   比較操作符:$lt: < $lte: <= $gt: > $gte: >= $ne: !=   1、查詢條件
db.persons.find({age:{$gte:25,$lte:27}},{_id:0,name:1,age:1}) #查詢年齡大於等於25小於等於27的人 
db.persons.find({country:{$ne:"南韓"}},{_id:0,name:1,country:1}) #查詢出所有國籍不是南韓的人的數學成績 
  2、包含與不包含(僅針對於數組)     $in$nin
db.persons.find({country:{$in:["China","USA"]}},{_id:0,name:1:country:1}) #查詢國籍是中國或美國的學生信息 
  3、$or查詢
db.persons.find({$or:[{c:{$gt:85}},{e:{$gt:90}}]},{_id:0,name:1,c:1,e:1}) #查詢語文成績大於85或者英語大於90的學生信息
db.persons.update({country:"China"},{$set:{sex:"m"}},false,true) #把中國國籍的學生上增加新的鍵sex 
db.persons.find({sex:{$in:[null]}},{_id:0,name:1,sex:1}) #查詢出sex為null的人 
  4、正則表達式
db.persons.find({name:/li/i},{_id:0,name:1}) #查詢出名字中存在”li”的學生的信息
  5、$not的使用     $not$nin的區別是$not可以用在任何地方兒$nin是用到集合上的
db.persons.find({name:{$not:/li/i}},{_id:0,name:1}) #查詢出名字中不存在”li”的學生的信息
  6、$all與index的使用
db.persons.find({books:{$all:["JS","MONGODB"]}},{_id:0,name:1}) #查詢喜歡看MONGOD和JS的學生
db.persons.find({"books.1":"JAVA"},{_id:0,name:1,books:1}) #查詢第二本書是JAVA的學習信息
  7、$size的使用,不能與比較查詢符同時使用
db.persons.find({books:{$size:4}},{_id:0,name:1}) #查詢出喜歡的書籍數量是4本的學生
  8、查詢出喜歡的書籍數量大於4本的學生本的學生   1)增加size鍵
db.persons.update({},{$set:{size:4}},false,true)
  2)添加書籍,同時更新size
db.persons.update({name:"jim"},{$push:{books:"ORACL"},$inc:{size:1}})
  3)查詢大於3本的
db.persons.find({size:{$gt:4}},{_id:0,name:1,size:1})
  9、$slice操作符返迴文檔中指定數組的內部值
db.persons.find({name:"jim"},{_id:0,name:1,books:{$slice:[1,3]}}) #查詢出Jim書架中第2~4本書
db.persons.find({name:"jim"},{_id:0,name:1,books:{$slice:-1}}) #查詢出最後一本書
  10、文檔查詢     查詢出在K上過學且成績為A的學生   1)絕對查詢,順序和鍵個數要完全符合
db.persons.find({school:{school:"K","score":"A"}},{_id:0,name:1})
  2)對象方式,但是會出錯,多個條件可能會去多個對象查詢
db.persons.find({"school.school":"K","school.score":"A"},{_id:0,name:1})
  3)正確做法單條條件組查詢$elemMatch
db.persons.find({school:{$elemMatch:{school:"K",score:"A"}},{_id:0,name:1}) db.persons.find({age:{$gt:22},books:"C++",school:"K"},{_id:0,name:1,age:1,books:1,school:1})   11、分頁與排序   1)limit返回指定條數 查詢出persons文檔中前5條數據:
db.persons.find({},{_id:0,name:1}).limit(5)
  2)指定數據跨度 查詢出persons文檔中第3條數據後的5條數據
 db.persons.find({},{_id:0,name:1}).limit(5).skip(3)
  3)sort排序 1為正序,-1為倒序 
db.persons.find({},{_id:0,name:1,age:1}).limit(5).skip(3).sort({age:1})
    註意:mongodb的key可以存不同類型的數據排序就也有優先順序     最小值->null->數字->字元串->對象/文檔->數組->二進位->對象ID->布爾->日期->時間戳->正則->最大值   12、游標     利用游標遍歷查詢數據
var persons = db.persons.find();   while(persons.hasNext()){   obj = persons.next();   print(obj.name) }   游標幾個銷毀條件   1).客戶端發來信息叫他銷毀   2).游標迭代完畢   3).預設游標超過10分鐘沒用也會別清除   13、查詢快照     快照後就會針對不變的集合進行游標運動了,看看使用方法.
db.persons.find({$query:{name:”Jim”},$snapshot:true}) #用快照則需要用高級查詢
  高級查詢選項   1)$query   2)$orderby   3)$maxsan:integer 最多掃描的文檔數   4)$min:doc查詢開始   5)$max:doc查詢結束   6)$hint:doc使用哪個索引   7)$explain:boolean統計   8)$snapshot:boolean 一致快照 十二、索引   1.創建索引
db.books.ensureIndex{{number:1}}
  創建索引同時指定索引的名字
db.books.ensureIndex({number:1},{name:"book_"})
  2.索引使用需要註意的地方   1)創建索引的時候註意1是正序創建索引-1是倒序創建索引   2)索引的創建在提高查詢性能的同事會影響插入的性能 對於經常查詢少插入的文檔可以考慮用索引   3)符合索引要註意索引的先後順序   4)每個鍵全建立索引不一定就能提高性能呢 索引不是萬能的   5)在做排序工作的時候如果是超大數據量也可以考慮加上索引 用來提高排序的性能   3.唯一索引     解決文檔books不能插入重覆的數值
db.books.ensureIndex({name:-1},{unique:true}) #則插入相同的name值會報錯
  4.踢出重覆值     如果建議唯一索引之前已經有重覆數值如何處理
db.books.ensureIndex({name:1},{name:"book_",unique:true,dropDups:true}) #踢出重覆數值
  5.後臺執行創建索引     為瞭解決創建索引鎖表的問題,在不影響查詢功能,可以在後臺運行
db.books.ensureIndex({name:1},{background:true})
  6.強制查詢已經建立好的索引
db.books.find({name:"323book"}).hint({name:1}) #後一個name為索引名,正序倒序依據建立索引的規則,否則會報錯
  7.在shell查看資料庫已經建立的索引
db.system.indexes.find() db.system.namespaces.find()   8.查詢索引信息和查詢狀態信息
db.books.find({name:"123book"}).explain()
  9.批量和精確刪除索引
db.runCommand({dropIndexes : "books" , index:"name_-1"}) db.runCommand({dropIndexes : "books" , index:"*"}) 十三、二維索引   建立二維索引
db.map.ensureIndex({gis:"2d"},{min:-1,max:201}) #預設會建一個[-108,108]的範圍
  1.查詢點(70,180)最近的3個點
db.map.find({gis:{$near:[70,180]}},{_id:0,gis:1}).limit(3)
  2.查詢以點(50,50)和點(190,190)為對角線的正方形中的所有的點
db.map.find({gis:{$within:{$box:[[50,50],[190,190]]}}},{_id:0,gis:1})
  3.查詢出以圓心為(56,80)半徑為50規則下的圓心面積中的點
db.map.find({gis:{$with:{$center:[[56,80],50]}}},{_id:0,gis:1})
十四、Count+Distinct+Group   1.count 查詢結果條數
db.persons.find({country:"USA"}).count()
  2.Distinct 去重   請查詢出persons中一共有多少個國家分別是什麼
db.runCommand({distinct:"persons",key:"country"}).values #key表示去重的鍵
  3.group分組
db.runCommand({ group:{   ns:"集合的名字",   key:"分組鍵對象",   initial:"初始化累加器",   $reduce:"分解器",   condition:"條件",   finalize:"組完成器" }})   分組首先會按照key進行分組,每組的 每一個文檔全要執行$reduce的方法,他接收2個參數一個是組內本條記錄,一個是累加器數據.   請查出persons中每個國家學生數學成績最好的學生信息(必須在90以上)
db.runCommand({   group:{   ns:"persons",   key:{"country":true},   initial:{m:0},   $reduce:function(doc,prev){     if(doc.m>prev.m){       prev.m = doc.m;       prev.name = doc.m;       prev.country = doc.country;     }   },   condition:{m:{$gt:90}},   finalize:function(prev){     prev.m = prev.name+" comes from "+prev.country+" ,Math score is "+prev.m;   }  } })   4.函數格式化分組鍵   如果集合中出現鍵CounrtycounTry同時存在
$keyf:function(doc){   if(doc.country){     return {country:doc.country}   }   return {country:doc.counTry} } 十五、常用命令舉例   1.查詢伺服器版本號和主機操作系統
db.runCommand({buildInfo:1})
  2查詢執行集合的詳細信息,大小,空間,索引等
db.runCommand({collStats:"persons"})
  3查看操作本集合最後一次錯誤信息
db.runCommand({getLastError:"persons"})
十六、固定集合   1.特性     固定集合預設是沒有索引的就算是_id也是沒有索引的     由於不需分配新的空間他的插入速度是非常快的     固定集合的順是確定的導致查詢速度是非常快的     最適合就是日誌管理   2.創建固定集合     創建一個新的固定集合要求大小是100個位元組,可以存儲文檔10個
db.createCollection("mycoll",{size:100,capped:true,max:10})
    把一個普通集合轉換成固定集合
db.runCommand({convertToCapped:"persons",size:1000})
  3.對固定集合反向排序,預設情況是插入的順序排序
db.mycoll.find().sort({$natural:-1})
十七、GridFS   GridFS是mongoDB自帶的文件系統他用二進位的形式存儲文件,大型文件系統的絕大多是特性GridFS全可以完成   使用GridFS使用mongofiles.exe命令行   1.上傳文件
mongofiles -d foobar -l "E:\1.jpg" put "1.jpg"
  2.查看文件內容
mongofiles -d foobar get "1.jpg"
  3.查看所有文件
mongofiles -d foobar list
  4.刪除已經存在的文件
mongofiles -d foobar delete '1.jpg'
十八、Eval   1.伺服器端運行eval
db.eval("function(name){return name}","Jim")
  2.javascript的存儲,在伺服器上保存js全局變數     把變數加入到特殊集合system.js中
db.system.js.insert({_id:"uname",value:"Jim"})
db.eval("return uname") #用eval調用
    System.js相當於Oracle中的存儲過程,因為value不單單可以寫變數,還可以寫函數體也就是javascript代碼 十九、啟動配置   1.利用config配置文件來啟動資料庫改變埠為8888     mongodb.conf文件 dbpath = D:\sortware\mongod\db port = 8888   啟動文件 cd C:\Users\thinkpad\Desktop\MONGODB\mongodb-win32-x86_64-2.0.6 bin\mongod.exe --config ../mongodb.conf   shell文件   mongo 127.0.0.1:8888   2.停止MongoDB服務   1)ctrl+c 組合鍵可以關閉資料庫   2)admin資料庫命令關閉數據 use admin db.shutdownServer   3.導出數據(中斷其他操作)   使用mongoexport命令行   -d指明使用的庫   -c指明要導出的表   -o指明要導出的文件名   -csv指定導出的csv格式   -q過濾導出   --type<json|csv|tsv>   把數據好foobar中的persons導出
mongoexport -d foobar -c persons -o D:/persons.json   導出其他主機資料庫的文檔
mongoexport --host 192.168.0.16 --port 37017   4.導入數據(中斷其他操作) mongoimport --db foobar --collections persons --file d:/persons.json   5.運行時備份 mongodump.exe     API: http://cn.docs.mongodb.org/manual/reference/mongodump mongodump --host 127.0.0.1:27017 -d foobar -o d:/foobar   6.運行時恢復 mongorestore.exe     API:http://cn.docs.mongodb.org/manual/reference/mongorestore     恢複數據庫 db.dropDatabase() mongorestore --host 127.0.0.1:27017 -d foobar -directoryperdb d:/foobar/foobar   7.mongoDB是文件資料庫這其實就可以用拷貝文件的方式進行備份   8.上鎖和解鎖
db.runCommand({fsync:1,lock:1}) #上鎖
db.currentOp() #解鎖
  9.數據修複     當停電等不可逆轉災難來臨的時候,由於mongodb的存儲結構導致     會產生垃圾數據,在數據恢復以後這垃圾數據依然存在,這是資料庫     提供一個自我修複的能力.使用起來很簡單 
db.repairDatabase()
二十、用戶管理   1.添加用戶     為admin添加uspcat用戶和foobar資料庫的yunfengcheng用戶
use foobar db.addUser("uspcat","123") db.system.users.find()   2.啟用用戶
db.auth("名稱","密碼")
  3.安全檢查 --auth     非foobar是不能操作資料庫的,啟用自己的用戶才能訪問     非admin資料庫的用戶不能使用資料庫命令,admin資料庫中的數據經過認證為管理員用戶   4.用戶刪除操作
db.system.users.remove({user:"yunfengcheng"});
二十一、主從複製   1.主資料庫配置:
dbpath = D:\mongodb\data\db\07\8888 #主資料庫地址 port = 8888 #主資料庫埠號 bind_ip = 127.0.0.1 #主資料庫所在伺服器 master = true #確定我是主伺服器   從資料庫配置:
dbpath = D:\mongodb\data\db\07\7777 #從資料庫地址 port = 7777 #從資料庫埠號 bind_ip = 127.0.0.1 #從資料庫所在伺服器 source = 127.0.0.1:8888 #確定從資料庫監聽埠 #這個配置項(source)可以用shell動態添加 slave = true #確定自己是從伺服器   2.主從複製的其他設置項   --only 從節點?指定複製某個資料庫,預設是複製全部資料庫   --slavedelay 從節點?設置主資料庫同步數據的延遲(單位是秒)   --fastsync 從節點?以主資料庫的節點快照為節點啟動從資料庫   --autoresync 從節點?如果不同步則從新同步資料庫   --oplogSize 主節點?設置oplog的大小(主節點操作記錄存儲到local的oplog中   3.利用shell動態添加和刪除從節點   我們只要對集合進行操作就可以動態操作主從關係   掛接主節點:操作之前只留下從資料庫服務
db.sources.insert({host:"127.0.0.1:8888"})
  刪除已經掛接的主節點:操作之前只留下從資料庫服務
db.sources.remove({host:"127.0.0.1:8888"})
二十二、副本集   A是活躍的B和C是用於備份的,當A出現了故障,這時候集群根據權重演算法推選出B為活躍的資料庫,當A恢復後他自動又會變為備份資料庫   1.設置conf文件
dbpath = D:\mongodb\data\db\07\1111 port = 1111 #埠 bind_ip = 127.0.0.1 #服務地址      2.初始化副本集
use admin db.runCommand({"replSetInitiate":   {     "_id":'child',     "members":[{       "_id":1,       "host":"127.0.0.1:1111"     },{       "_id":2,       "host":"127.0.0.1:2222"     },{       "_id":3,       "host":"127.0.0.1:3333"       }]   } })   查看副本集狀態:
rs.status()
  3.節點和初始化高級參數     standard :常規節點:參與投票有可能成為活躍節點     passive :副本節點:參與投票,但是不能成為活躍節點     arbiter :仲裁節點:只是參與投票不複製節點也不能成為活躍節點   4.高級參數     Priority :0到1000之間 ,0代表是副本節點 ,1到1000是常規節點     arbiterOnly : true 仲裁節點 members":[{   "_id":1,   "host":"127.0.0.1:1111",   arbiterOnly : true }]"   5.讀寫分離     一般情況下作為副本的節點是不能進行資料庫讀操作的,但是在讀取密集型的系統中讀寫分離是十分必要的     設置讀寫分離slaveOkay : true 二十三、分片   1.分片步驟   1)創建一個配置伺服器
shardServer.conf dbpath=D:\mongodb\data\db\08\conf port=2000 bind_ip=127.0.0.1 shardServer.bat mongod --conf shardServer.conf   2)創建路由伺服器
mongos --port 1000 --configdb 127.0.0.1:2000
    shell文件: mongo 127.0.0.1:1000/admin   3)添加2個分片資料庫 8081和8082
shard8081.conf dbpath=D:\mongodb\data\db\08\8081 port=8081 bind_ip=127.0.0.1 shard8081.bat mongos --conf shard8081.conf shard8081Shell.bat mongo 127.0.0.1:8081/admin   4)啟動四個資料庫伺服器     打開路由shell命令行,為集群添加分片(允許本地訪問)"切記之前不能使用任何資料庫語句"
db.runCommand({addshard:"127.0.0.1:8081",allowLocal:true}) db.runCommand({addshard:"127.0.0.1:8082",allowLocal:true})   5)指定打開分片功能的資料庫
db.runCommand({enablesharding:"foobar"})
  6)指定集合進行分片,並設置片鍵
db.runCommand({shardcollection:"foobar.persons",key:{_id:1}})
  7)插入大數據量進行測試     進入分片8081查詢數據條數
db.persons.find().count()
  2.查看配置庫對於分片配置存儲信息
db.printShardingStatus()
  3.查看集群對persons的自動分片機制配置信息
mongos> db.shards.find() { "_id" : "shard0000", "host" : "127.0.0.1:8081" } { "_id" : "shard0001", "host" : "127.0.0.1:8082" }    
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 準備工作 註意 mysqldump.exe是MySQL資料庫伺服器的導出數據工具(登錄對應mysql.exe) 1.數據備份 將資料庫伺服器中的數據保存在本地的SQL文件中 mysqldump.exe –h主機名 [–p埠號] –u用戶名 –p密碼 [-d] dbname [tablename] ...
  • 1. 背景 Ubuntu下的mysql安裝教程很多,但是有不少講得過於簡單,沒有考慮到安全問題。比如說,一些教程里,只設置一個root用戶,並且對外網公開,一來容易被破解密碼(用戶名固定,破解難度自然降了一大截,而且總有很多用戶設置的密碼不算複雜),二來,一旦密碼被破解,所有使用該資料庫的網站都遭殃 ...
  • 1. 背景 通常情況下,能用一條sql語句完成的查詢,我們儘量不用多次查詢完成。因為,查詢次數越多,通信開銷越大。但是,分多次查詢,有可能提高緩存命中率。到底使用一個複合查詢還是多個獨立查詢,需要根據實際情況考慮。 2. 一個場景 我們有A、B兩張表,需要做這樣的一個查詢: 當然,我們也可以拆分成兩 ...
  • binlog2sql是我開發的mysql binlog解析工具,它能幫助你從binlog得到你要的SQL。根據不同設置,你可以得到原始SQL、回滾SQL、去除主鍵的INSERT SQL等。 用途 數據回滾 主從切換後數據不一致的修複 從binlog生成標準SQL,帶來的衍生功能 安裝 使用 MySQ ...
  • 1. 普通青年的索引使用方式 假設我們有一個用戶表 tb_user,內容如下: name | age | sex | | jack | 22 | 男 rose | 21 | 女 tom | 20 | 男 ... | ... | ... 執行SQL語句: 預設情況下,MySQL需要遍歷整張表,才能找到 ...
  • 創建函數: 使用方式: 測試語句: 說明: 1、僅支持文本字元串分隔!!! ...
  • 查詢語句: 測試語句: 查詢結果(註:具體結果由自動生成的KeyID決定): 1、單欄位: 1B0EC911-5C2B-4FDE-87BB-62981DE2030D,0527DF18-9EDD-484D-B770-B24B13C68CA1 2、多欄位組合: KeyID:33C28B1E-3F75-4 ...
  • 背景:修改pg內核,在創建表時,表名不能和當前的用戶名同名。 首先我們知道DefineRelation此函數是最終創建表結構的函數,最主要的參數是CreateStmt這個結構,該結構如下 結構中relation中包含了catalogname,schemaname,relname此時的relname就 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...