51.go modules依賴管理
- 簡介
一般從GOPATH、vendor文件夾下尋找依賴包。使用該功能后根據(jù)go.mod文件中的記錄下載依賴。
go.mod中使用//作為注釋
module:定義當前模塊和包路徑
require:定義依賴的模塊和版本
exclude:排除特定模塊和版本的使用
replace:模塊源的替換
使用 go get xxx會自動將依賴模塊添加到go.mod文件中
網(wǎng)絡(luò)訪問不了golang.org/x等谷歌擴展包,可以使用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í)行報錯(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
驗證模塊是否正確:go mod verify
下載指定名稱的模塊到本地緩存中:go mod download
命令行編輯:go mod edit
解釋為什么需要這個模塊: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"` 表示序列化時字段轉(zhuǎn)換為name,類型為string
`json:"age,omitempty"`omitempty忽略空值,當為空值時不序列化
`json:"-"`始終忽略
- 使用標準庫內(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時比較慢:參考http://www.itdecent.cn/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時報錯
結(jié)構(gòu)體中的屬性,需要大寫字母開頭
56.go json 序列化、反序列化時,如何動態(tài)修改字段
使用quicktag包,動態(tài)修改結(jié)構(gòu)體tag
再進行marshal、unnmarshal,這樣就可以動態(tài)處理了。
https://github.com/dovejb/quicktag
57.mongodb 大量insert時報錯
mongodb出現(xiàn)E11000 duplicate key error collection(id重復(fù)的解決辦法)
原因是同時插入時,id為mongodb自動生成的,造成了生成了相同的id插入。
解決方法:只要是在插入的字段中有_id="",MongoDB就不會幫我們生成,那么就解決了這個問題。那么怎么生成一惟一的_id呢,我們可以使用uuid來生成。
import uuid
_id = uuid.uuid3(uuid.NAMESPACE_DNS, "標志性的字段(例如名字等)"+datetime.datetime.now().strftime('%Y-%m-%d')
UUID.randomUUID().toString().replace("-", "").toLowerCase();
如果id為自定義的,可以try catch異常單獨處理。
58.一個請求的網(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更新到最新版
第一步,先查看本機node.js版本:
node -v
第二步,清除node.js的cache:
sudo npm cache clean -f
第三步,安裝 n 工具,這個工具是專門用來管理node.js版本的,別懷疑這個工具的名字,是他是他就是他,他的名字就是 "n"
sudo npm install -g n
第四步,安裝最新版本的node.js
sudo n stable
第五步,再次查看本機的node.js版本:
node -v
第六步,更新npm到最新版:
sudo npm install npm@latest -g --force
第七步,驗證
node -v
npm -v
62.安裝yarn
npm i -g yarn
63.mysqlworkbench安裝時報錯
如何解決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ù)組中的元素去掉[]