原创 go版本protobuf 在windows系統下安裝環境

1.下載protobuf的編譯器protoc 訪問https://github.com/google/protobuf/releases 下載 下載解壓出protoc.exe文件放入gopath下的bin目錄; 2.下載p

原创 go sync包的讀寫鎖RWMutex的使用

sync包的讀寫鎖RWMutex的使用(sync.RWMutex) 我們使用“讀寫”鎖的場景主要是在多線程的安全操作下,並且讀的情況多於寫的情況,也就是說既滿足多線程操作的安全性,也要確保性能不能太差,這時候,我們可以考慮使用讀寫

原创 go sync.Map使用和介紹

sync.Map使用和介紹 1、首先看下該sync.Map的使用: package main import ( "sync" "fmt" ) func main() { //開箱即用 var sm

原创 go之defer,panic,recover用法

golang中沒有類似Java/C++等面向對象編程語言中的try…catch…finally…語句結構,對於有些童鞋可能不太習慣。對於從C語言轉過來的童鞋,golang提供了一系列相對較好的函數defer,panic,recov

原创 k8s常用的兩種網絡插件: flannel 、 calico簡介

看了一些材料,現在將自己對flannel、calico的自己認識歸納如下 k8s的容器虛擬化網絡方案大體分爲兩種: 基於隧道方案和基於路由方案 一、隧道方案 flannel的 vxlan模式、calico的ipip模式都是隧道模式。 1、

原创 10個常見的Redis面試"刁難"問題

導讀:在程序員面試過程中Redis相關的知識是常被問到的話題。作爲一名在互聯網技術行業打擊過成百上千名的資深技術面試官,本文作者總結了面試過程中經常問到的問題。十分值得一讀。 作者簡介:錢文品(老錢),互聯網分佈式高併發技術十年老兵,

原创 利用快慢指針求鏈表的中值

思想:慢指針slow遍歷鏈表,faster指針速度是slow的兩倍,則當快指針到達鏈表結尾時(next節點爲空),此時slow指針應該位於鏈表的中間(鏈表元素個數是奇數時正中間,偶數應該是一半加1)。 package main

原创 HTTP2特性講解

最近在搞grpc,就看了看H2協議,在網上看到了這篇文章,作者以老司機的口吻將H2的幾大特性娓娓道來: HTTP2.0性能增強的核心:二進制分幀     HTTP 2.0最大的特點: 不會改動HTTP 的語義,HTTP 方法、

原创 常見的Redis面試"刁難"問題

1、Redis有哪些數據結構? 字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。 如果你是Redis中高級用戶,還需要加上下面幾種數據結構HyperLogLog、Geo、Pub/Sub。 如果

原创 go json.Marshal 編組函數講解

go標準庫(源碼版本go1.9)提供了一個將JSON的過程叫編組(marshaling)成slice函數;編組通過調用json.Marshal()函數完成: package main import ( "encoding/jso

原创 go條件變量sync.Cond的使用和思考

源碼採用1.9版本;sync包的Cond,條件變量;在我看來,主要是採用他的wait()方法,來控制被阻塞的go程何時去競爭鎖;我暫且叫它“雙開關控制”(歡迎大神斧正): 廢話少說,來個小例子吧: package main import

原创 go的WaitGroup使用及源碼分析

源碼使用的是1.9版本;sync 包裏的WaitGroup主要用於線程的同步;計數主線程創建的子線程(WaitGoup.Add(i));調用清除標記方法(WaitGroup.Done());使用WaitGroup.Wait()來阻塞,直到

原创 sync.Map使用和介紹

sync.Map使用和介紹 1、首先看下該sync.Map的使用: package main import ( "sync" "fmt" ) func main() { //開箱即用 var sm syn

原创 golang之defer,panic,recover用法

golang中沒有類似Java/C++等面向對象編程語言中的try…catch…finally…語句結構,對於有些童鞋可能不太習慣。對於從C語言轉過來的童鞋,golang提供了一系列相對較好的函數defer,panic,recover。

原创 defer用法

上一篇小文,我們介紹了defer用法,但是還不是特別清楚,下面我們根據具體的代碼深層次理解defer用法(只是個人理解,如有錯誤之處,還請大佬斧正。) 例子一 咱們直接懟代碼: package main import "fmt"