51.go modules依賴管理
- 簡介
一般從GOPATH未妹、vendor文件夾下尋找依賴包。使用該功能后根據(jù)go.mod文件中的記錄下載依賴逢渔。
go.mod中使用//作為注釋
module:定義當(dāng)前模塊和包路徑
require:定義依賴的模塊和版本
exclude:排除特定模塊和版本的使用
replace:模塊源的替換
使用 go get xxx會自動將依賴模塊添加到go.mod文件中
網(wǎng)絡(luò)訪問不了golang.org/x等谷歌擴(kuò)展包完箩,可以使用replace
replace (
golang.org/x/crypto => github.com/golang/crypto latest
golang.org/x/sys => github.com/golang/sys latest
)
- go mod 命令:
go mod <命令> [可選參數(shù)]
初始化目錄:go mod init
執(zhí)行報(bào)錯(cuò)(outside GOPATH, no import comments)
方法1)手動創(chuàng)建go.mod文件泵喘,寫入module your_module_name,執(zhí)行g(shù)o mod tidy
方法2)main包加入import聲明秆乳,package main // import "your_module_name"懦鼠,執(zhí)行g(shù)o mod init / go mod tidy
更新整理依賴:go mod tidy
更新無用模塊、添加缺失模塊
將依賴復(fù)制到vendor文件夾下:go mod vendor
驗(yàn)證模塊是否正確:go mod verify
下載指定名稱的模塊到本地緩存中:go mod download
命令行編輯:go mod edit
解釋為什么需要這個(gè)模塊:go mod why
52.golang中使用json
序列化
支持:string屹堰、bool肛冶、數(shù)字類型、數(shù)組和切片双藕、結(jié)構(gòu)體淑趾、map
不支持:channel、complex忧陪、function類型扣泊,結(jié)構(gòu)體中的循環(huán)數(shù)據(jù)結(jié)構(gòu)
結(jié)構(gòu)體中自定義字段名稱
`json:"name,string"` 表示序列化時(shí)字段轉(zhuǎn)換為name,類型為string
`json:"age,omitempty"`omitempty忽略空值嘶摊,當(dāng)為空值時(shí)不序列化
`json:"-"`始終忽略
- 使用標(biāo)準(zhǔn)庫內(nèi)建JSON包
Marshal:序列化為JSON
Unmarshal:JSON反序列化為結(jié)構(gòu)體 - 高性能JSON庫推薦jsoniter
快6倍以上延蟹;支持java、go叶堆;一行代碼遷移到j(luò)soniter阱飘;go get github.com/json-iterator/go
var json = jointer.ConfigCompatibleWithStandardLibrary
53.刷新DNS緩存
訪問github時(shí)比較慢:參考http://www.reibang.com/p/0493dcc15d6f
刷新DNS緩存:參考http://cnzhx.net/blog/how-to-flush-dns-cache-in-linux-windows-mac/
54.ubuntu安裝jdk8
apt-get install software-properties-common
apt-get install software-properties-common python-software-properties
add-apt-repository ppa:webupd8team/java
apt-get update
apt-get install oracle-java8-installer
java -version
55.xorm Sync2 table struct to database時(shí)報(bào)錯(cuò)
結(jié)構(gòu)體中的屬性,需要大寫字母開頭
56.go json 序列化、反序列化時(shí)沥匈,如何動態(tài)修改字段
使用quicktag包蔗喂,動態(tài)修改結(jié)構(gòu)體tag
再進(jìn)行marshal、unnmarshal高帖,這樣就可以動態(tài)處理了缰儿。
https://github.com/dovejb/quicktag
57.mongodb 大量insert時(shí)報(bào)錯(cuò)
mongodb出現(xiàn)E11000 duplicate key error collection(id重復(fù)的解決辦法)
原因是同時(shí)插入時(shí),id為mongodb自動生成的散址,造成了生成了相同的id插入乖阵。
解決方法:只要是在插入的字段中有_id="",MongoDB就不會幫我們生成,那么就解決了這個(gè)問題预麸。那么怎么生成一惟一的_id呢瞪浸,我們可以使用uuid來生成。
import uuid
_id = uuid.uuid3(uuid.NAMESPACE_DNS, "標(biāo)志性的字段(例如名字等)"+datetime.datetime.now().strftime('%Y-%m-%d')
UUID.randomUUID().toString().replace("-", "").toLowerCase();
如果id為自定義的吏祸,可以try catch異常單獨(dú)處理对蒲。
58.一個(gè)請求的網(wǎng)絡(luò)流程
https://www.cnblogs.com/tymagic/p/11533517.html
59.還回地址的處理流程
60.tcpdump使用
https://www.cnblogs.com/golinux/p/11012781.html
https://blog.csdn.net/lgh1117/article/details/80213397
61.mac node更新到最新版
第一步,先查看本機(jī)node.js版本:
node -v
第二步贡翘,清除node.js的cache:
sudo npm cache clean -f
第三步齐蔽,安裝 n 工具,這個(gè)工具是專門用來管理node.js版本的床估,別懷疑這個(gè)工具的名字含滴,是他是他就是他,他的名字就是 "n"
sudo npm install -g n
第四步丐巫,安裝最新版本的node.js
sudo n stable
第五步谈况,再次查看本機(jī)的node.js版本:
node -v
第六步,更新npm到最新版:
sudo npm install npm@latest -g --force
第七步递胧,驗(yàn)證
node -v
npm -v
62.安裝yarn
npm i -g yarn
63.mysqlworkbench安裝時(shí)報(bào)錯(cuò)
如何解決Mysql workbench requires the visual C++ 2019 redistributable package
去這里下載
https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
選擇提示要求的版本碑韵,安裝完后就可以安裝Mysql workbench了
64.jq使用
cat deploy.conf | jq -r '.hosts[]'
{
"name": "host1",
"ip": "xxx.xxx.xx.xxx",
"user": "root",
"passwd": "xxx"
}
{
"name": "host2",
"ip": "xxx.xxx.xx.xxx",
"user": "root",
"passwd": "xxx"
}
{
"name": "host3",
"ip": "xxx.xxx.xx.xxx",
"user": "root",
"passwd": "xxx"
}
cat deploy.conf | jq -r '.hosts[]|select(.name=="host1")|.user+"@"+.ip'
root@xxx.xxx.xx.xxx
-r:去掉引號
select()過濾選擇
[]拿到數(shù)組中的元素去掉[]