原创 go 1.12以下,給服務器增加包依賴的自動化腳本

前言 舊版的go不支持module,所以包依賴需要手動引入。本文僅記錄用過的腳本,方便以後複製。需要對具體的包增加具體的腳本 # 本腳本,需要在服務上預先配置好go 1.9, GOPATH,GOROOT. # start cd $

原创 redis 進階

附 以下模塊的使用場景,有些典型場景未考慮進去的情況,歡迎有經驗的讀者前來補充。 前言 假定使用者,已經在業務中熟練掌握了連接,SET,GET,SETEX。Redis還有一些其它的非常好的模塊可以用在業務裏。 1. 原子增減inc

原创 nginx常見問題

前言 本文記載一些nginx常見問題 1. connect() fail 轉發的服務掛了,確保主服務正常運行。可以使用 lsof -i:端口號 確定被轉接的服務的狀態 2. nginx 50X 的錯誤日誌去哪看,配置的默認路徑去哪

原创 go module常見問題

1. 如何兼容GOPATH的舊項目,支持module module 名取 github.com/****/projectName go mod init github.com/fwhezfwhez/errorx go mod ti

原创 使用jenkins部署gitbook

聲明 文章僅記錄jenkins推送腳本和部分註解,方便個人複製使用。有基礎的人可以參考。 # 環境變量 export GOROOT=/data/go1.9 export PATH=${PATH}:${GOROOT}/bin exp

原创 如何給舊版的go倉庫,添加go1.12兼容

需要確認GOROOT在1.12以上,並且,GO111MODULE必須爲on go mod init github.com/****/projectName go mod tidy 當出現依賴的第三方包版本不一致時。 修改go.m

原创 .git文件過大,使用git gc 瘦身

當.git太大了,可以執行git gc來壓縮

原创 golang算法-計算10000個數裏最小的10個數

前言 從包含M個數字的池子裏,取出前k個(最小的)數字。 分析 使用mapreduce思想,將M個數字的池,拆成容量爲vol的子池,對子池取出最小的10個數,將所有子池的最小十個數合併,再取一下最小10個數。 生成M個數字的大數

原创 golang算法—— 使用兩個棧實現一個隊列

前言 閱讀本文,假定已經瞭解了基本數據結構概念。 隊列: 先入先出。 棧: 先進後出。 分析 使用兩個棧串聯,可以實現先進先出。但是,得注意以下兩點: 隊列在入列時,stack2必須爲空,stack1滿員,保證順序。 隊列在出列

原创 如何解決遊戲更新前後,用戶進度格式版本不一致的問題。

項目在更新前後,用戶的進度可能會沿用舊版緩存裏的數據,和新功能出現不兼容。 解決方案就是,在有不一致風險的緩存裏,增加version字段,當緩存裏的version與項目version不一致時,進度從數據庫拉取,並重新同步進緩存裏。

原创 golang 文件夾複製,支持各種嵌套

搜了很久,都沒找到心怡的,幾乎都不支持嵌套,僅僅是複製簡單結果,比如源文件夾裏只有簡單文件,不包含嵌套子文件夾。自己寫了一個。 func FormatPath(s string) string { switch runtime

原创 golang 使用etcd

SEO etcd編譯時,報undefined: strings.Builder錯誤,如何解決? etcd鏡像版本過低,如何拿到高版本的etcd鏡像? etcd爲什麼本機能連,容器連不上? etcd如何進行服務註冊,服務發現? 重點

原创 搭建本地docker倉庫

前言 dockerhub雖然很好,但是對公司的一些集體項目,不方便放上去,而且傳輸拉取時間慢等因素,便想到搭建本地docker倉庫。正好docker官方有docker-registry支持本地倉庫服務,不過可惜,只有服務後端,沒有

原创 初步嘗試了一下gitea,果然很好安裝很好用~

官網 https://try.gitea.io/ 如何本地部署和使用 依賴 postgres/mysql 任選其一,遠程服務器也可以,用來存放倉庫文件。 golang 編譯最新版源碼必備環境,舊release可以直接去官網找 以上

原创 golang如何使用protobuf序列化

前言 protobuf是二進制協議,傳輸效率極高,傳輸體積很小,在tcp/rpc裏的使用很普及。 使用須知 和json不同,protobuf沒有被放入官方的基本庫裏,也就不能直接proto.Marshal(). 使用protobu