原创 Go學習:[email protected]模塊遍歷查詢Mongodb表(Find)

示例: package main import ( "context" "fmt" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/

原创 redis 5 cluster集羣增加節點動態擴容的步驟

redis 5的集羣支持在有負載的情況下增加節點動態擴容。 已有集羣爲6個節點127.0.0.1:7000 - 127.0.0.1:7005,3組主從節點。現要增加第4組主從節點127.0.0.1:7006,127.0.0.1:7007.

原创 Go學習:Mongo客戶端mongo-go-driver 報錯undefined: readpref

官網給的示例漏了引用部分“import go.mongodb.org/mongo-driver/mongo/readpref" ctx, _ = context.WithTimeout(context.Background(), 2*t

原创 Go語言:用goutils包獲取HTTP請求客戶端IP,支持優先從代理轉發的請求頭讀取IP

goutils包的GetClientIP()函數封裝了優先從代理轉發的請求頭讀取IP,若找不到則讀取http.Request.RemoteAddr的功能。 源碼: // GetClientIP return the client IP

原创 Go語言的go-redis模塊連接池參數配置

版權所有,請勿轉載 go-redis模塊自帶連接池,所有參數都是可選的,參數配置說明示例如下: package main import ( "fmt" "github.com/go-redis/redis" "net/http"

原创 Go學習:常量報錯 const initializer is not a constant

Go的常量const是屬於編譯時期的常量,即在編譯時期就可以完全確定取值的常量。只支持數字,字符串和布爾,及上述類型的表達式。而切片,數組,正則表達式等等需要在運行時分配空間和執行若干運算才能賦值的變量則不能用作常量。這一點和Java,N

原创 Go語言:谷歌google的uuid模塊的基本用法

uuid是谷歌開發的生成16字節UUID的模塊,實現了RFC4122;對UUID的v1,v2,v3,v4,v5等各個版本都有實現。一般來說,如果只是要生成唯一序列號的話,通常用v4版本,New()和NewRandom()都可以生成v4,

原创 Linux crontab調用Shell腳本傳中文參數顯示亂碼

問題描述: 在Centos 6上,shell腳本通過環境變量向一個java程序傳遞一箇中文變量,這裏是郵件標題“系統指標日報”。通過命令行直接運行沒有問題,但是通過crontab來執行郵件標題顯示亂碼。 export JAVA_HOME

原创 Go語言gomap模塊獲取map的keys切片

gomap模塊定製了一組常用的map[K]V類型,主要是爲了增加GetKeys() ([]K)方法,執行效率和單獨寫GetKeys方法是一樣的。因爲Go 1.x不能支持泛型,所以只實現了6種常用的map[K]V。 實現原理: type

原创 Go語言的go-redis模塊如何在啓動階段檢測連接是否可創建

go-redis模塊自帶連接池,在啓動階段如果沒有請求的話則不會主動創建連接。因此,如果想在啓動階段檢測連接是否可創建,可以調用Ping()函數,示例如下: package main import ( "fmt" "github.

原创 Nodejs Protobuf協議報錯TypeError: Illegal str: Length not a multiple of 4

protobufjs模塊要求bytes類型的字段如果傳入字符串需要先做base64轉換,否則會報上述錯誤。或者直接傳入Buffer也是可以的。示例如下: message WiFi { optional bytes mac = 1

原创 Nodejs 字符串string轉字節數組byte[]

Nodejs目前還沒有原生支持從string到byte[]的轉換,需要自己寫。可以給String對象加一個原型函數,如下示例: String.prototype.toBytes = function(encoding){ var by

原创 Go日誌滾動模塊logrotator的使用方法及性能

logrotator是一款非常小巧的Go語言日誌滾動輸出模塊,而日誌寫入速度較go-file-rotatelogs顯著提升。模塊本身只實現日誌滾動輸出和舊日誌刪除兩個功能;由於模塊實現了io.Writer接口,所以可以結合其它日誌框架如l

原创 Go語言採用go-redis模塊對Redis進行批量操作(MULTI和EXEC) 的示例及性能

go-redis對redis執行批量操作的類是Pipeliner,具體示例如下. 運行該示例可在redis服務端依次接收到: MULTI  incr tx_pipeline_counter expire tx_pipeline_count

原创 獲取本地時區和UTC(格林威治)時區之間的時差 Go , Java , Nodejs(javascript)

中國的時區比UTC時區快8個小時,爲了避免手工配置這個數字,可以通過程序動態獲取: Go package main import ( "fmt" "time" ) func main() { name, offset :