我的Go語言學習經歷

Dennis_Ritchie發表於2021-02-07

學習經歷


2020時間過的很快,在這一年裡,無論是工作,學習還是家庭都發生了很大的變化,今天在這裡介紹一下我go語言的學習路線

基本語法

學習任何一門語言,最基礎的就是語法了,語法沒得說的,但是相對於其它的老式程式語言還是有點差距的,推薦連線:

菜鳥教程

官方文件

web框架學習

作為一名web開發者,學習web框架是有必要的,在這裡我深入研究了Gin和Beego,包括它們的使用和設計,其實原始碼並不複雜,
這2個框架都只是在go http庫上面套個殼而已,沒啥難的,一天即看完所有的原始碼,原始碼不是重點,重點是他們的設計思路

Beego官方連結

Gin官方連結

http2協議

作為http協議的後繼者http2,真可謂是進行了大大闊斧的改革,學習http2,主要是為了學子GRPC,因為GRPC基於http2進行開發,我覺得所有的go開發人員都應該學習下http2協議,
看一下它是如何設計出來的,下面列出http2的retf地址:

HTTP2 RETF 文件

至於HTTP2 的go實現,你應該看看go的官方包:

HTTP2 官方實現

GRPC

GRPC是啥,這裡就不多說了,搞Go開發,不知道這個咋行呢?它的東家是Google,用法嘛,沒啥難的,如果你有興趣的話,可以看看Google的GRPC實現,

Go GRPC實現

原始碼並不複雜,學習它主要是為了理解它的設計,以便用於自己以後多的開發

微服務

我學習的是go-mirco,其實也主要是學習它的設計思路,框架本身沒啥難的,相對於etcd來說,就是小意思了,地址:

go-micro

RAFT 分散式協議

我的Go語言學習經歷

RAFT是一種分散式一致性協議,最初是為了易於理解和工程實踐而設計的,如果你要精通分散式開發的話,RAFT是你繞不過去的攔路虎,首先你要理解什麼是RAFT,那麼請你看它的論文,下面是史丹佛大學多的論文地址:

In Search of an Understandable Consensus Algorithm

RAFT 協議實現

光看論文的,理解還是不夠深刻的,我建議你看看RAFT的go實現,給大家推薦幾個github地址:

hashicorp 的raft實現

hashicorp 沒聽說不要緊,你總聽說過consul吧,consul就是這個公司開發的,牛逼不需要解釋,如果你想要知道這個庫怎麼用的話,沒關係,有人給你寫了個例子:

hashicorp 的raft實現的用法

這哥們的作者也是個Google程式設計師,看他的github主頁,就覺得有點牛逼!

除了上面所說的Raft實現外,還有一個重量級的實現,現在業界廣泛使用的就是etcd-raft,它是etcd的一個模組:

etcd-raft

大型分散式軟體開發

我的Go語言學習經歷

光搞web有啥意思?我們得來點兒有點難度的東西,大型分散式軟體開發才是程式設計師的終極目標啊,在這裡我給大家推薦業界廣泛使用的分散式鍵值儲存軟體etcd,叼的不行,不服不行,連結如下:

etcd
etcd的原始碼寫的很複雜,讀起來不是那麼容易,因為我也是搞了一個多月,才算是完全搞明白了呀,在這裡給大家推薦一本輔助書籍《etcd技術內幕》,相信你看完的那天,終會有所成

學習寄語

我始終相信,做難事,終有所得,學習沒啥大的技巧,唯有堅持才是制勝法寶,還是那句話:

山重水複疑無路,聊暗花明又一村

本作品採用《CC 協議》,轉載必須註明作者和本文連結
如果有不懂的地方,可以加我的qq:1174332406,或者是微信:itshardjs

相關文章