風中的 FAQ-2

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.還回地址的處理流程
image.png
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ù)組中的元素去掉[]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容