歡迎光臨
每天分享高質量文章

實現高併發更輕鬆!這個程式語言竟然超過了Java…

本文作者:皓禹

曾任獵豹高階工程師、搜狐社交產品中心服務端負責人,現任區塊鏈創業公司 CTO。文章中,他會詳細介紹自己接觸Golang的經歷,以及Golang語言的優勢。

相信有的同學看到這個標題就猜到我說的是哪個程式語言了,它就是由Google推出的Golang語言,以下是我與Golang的故事。


 初識 Golang 

我第一次接觸 Golang 是在2014年,當時在獵豹工作,換了一個新的專案組,他們正在把基於 Java 寫的核心業務用 Golang 重構一遍。

也是藉著這個專案的契機,我開始學 Golang 。其實工作之後我一直在用動態語言,而開始用 Golang 這種靜態語言之後,給我的程式設計思想帶來了衝擊和震撼,不誇張的說,有一種開啟了另一扇窗的感覺。

如果你之前寫的是 Java,就能一下感受到 Golang 的優越感了,因為 Golang 的語法更簡潔、有函式式程式設計的特性,又不像 Java 做 OOP 那麼複雜,Golang 實現 OOP 非常輕量,上手更容易,而且 Golang 非常容易的就能使程式擁有併發能力。

因為實現高併發更輕鬆,所以可以減少很多人力資源和伺服器資源,這也是我們團隊使用 Golang 重構的原因。

遺憾的是14年的時候 Golang 的第三方庫不太多,所以我們自己寫了一些第三方庫來用,方便自己用著更順手。

 ❷

 從 Golang 到區塊鏈 

回想起來,我現在能到區塊鏈公司做自己喜歡的工作,也和當年下決心把 Golang 啃下來有很大關係。但是當年,我根本就沒想過這些,也沒打算把它當一個吃飯的傢伙。

我只是覺得一個好的程式員不可能只掌握一門語言,而我每年都會為自己制定一個技術學習計劃,當我開始思考什麼最值得學,就會想起看 Golang 程式碼時的那種震撼,既然它能承載那麼大的併發,那它的設計方式是很值得我去學習的,即使我需要去花一些時間成本,我也覺得這是值得付出的。

在15年6月的時候,我跳槽到搜狐工作了。在這做的專案規模更大,所以會直接碰到效能上的問題,而動態語言不太容易解決這些問題。於是我們決定,需要快速業務迭代的用 Python 去寫,需要高併發的技術服務用 Golang 去寫,陸陸續續用 Golang 實現了高併發生成器、推送、長連結服務,還有一部分 API 介面。執行速度更快,也更加節省伺服器成本。

這時候我發現,Golang 的生態環境已經更成熟了,標準庫和第三方庫比以前豐富了很多。不需要再自己重造輪子,可以直接拿來用了。我們專案中用了文字處理的庫、序列化的庫、資料庫連線的庫、高併發 web 框架等等。

這一年,Golang 的社群也開始越來越豐富了,雨痕也開始寫 Go 原始碼解析的學習筆記。雨痕對我的影響很深,也是我敬重的前輩,和他接觸多了之後知道,他從 DOS 時期就開始寫程式碼。所以雨痕會把作業系統層面的東西講解的很深入,如果實踐到一定程度了,發現自己掌握的理論不足以支撐自己繼續往前走了,那很適合回過頭來再深入看底層的這些東西。

把底層知識啃下來之後,我對於程式執行時背後發生的事情都一清二楚。比如我定義了一個變數,呼叫函式的時候該變數是值傳遞好還是取用傳遞好?最後這個值是分配在堆上還是分配在棧上?它是一個什麼情況?這些我都瞭如指掌。

到了2018年,我已經做開發7年了,大公司的工作已經滿足不了我的技術熱情,於是我受邀加入了一家由明星團隊創立的區塊鏈創業公司,站在一個更高的視角去看待技術。


 反思:Golang 需要什麼樣的人才 

這幾年,使用 Golang 的公司越來越多,BAT、今日頭條、小米、京東、七牛雲、滴滴打車、小米等等。Golang 在中國的影響力僅次於美國,這是在其他任何一門語言中都沒有出現過的事情。

我現在自己也在招人,也和同行交流,大家普遍的一個感覺是:Golang 工程師特別難招。

我覺得最主要的原因是 Golang 的學習門檻比較高,讓很多人望而卻步。市面上的書籍、影片是不少的,但很多人遇到的問題是,看過了書、看過了影片,在真正寫東西的時候,還是發現有一些問題沒法解決,如果對 Golang 的 debug 方式不瞭解、對作業系統不瞭解的話,出現異常時會摸不到頭緒,可能一個知識點就卡在這了,很多人都是在這從入門到放棄的。

所以我現在一般都是自己去培養公司需要的 Golang 人才,潛質不錯的人進來之後,讓他嘗試用 Golang 寫東西,加上我在團隊裡去指導他,讓他逐漸成長為合格的 Golang 工程師。

當然,我一個人能帶的新人是有限的,很多人也不具備這種成長環境。所以當受邀加入網易微專業的 Golang 課程團隊時,我想是不是可以透過這次機會,讓 Golang 這門面向未來的語言的學習門檻再降低一點,讓更多人可以開始使用 Golang 並從中受益。

我不想做教條難啃的課程,讓初學者又痛苦又不知道學了用在哪。所以這次課程的整體風格是更實用的,基礎知識部分全程穿插程式碼實體,實戰部分都是我曾經在公司中做過的專案的濃縮版,盡可能的給學習者還原一個在公司中寫 Golang 專案的環境,在實踐中更深的理解。


為了讓同學們更好的認識golang語言,網易雲課堂為大家準備了三大福利:

Part1

golang入門到進階免費直播課


直播導師

皓禹

Golang開發工程師微專業導師

現任區塊鏈創業公司 CTO

前搜狐社交產品中心服務端負責人


10月18日20:00


直播大綱

 、go 語言工程師從入門到進階

二 、go 的前景怎麼樣

三 、go語言工程師的X大必備技能

四、技術小白:如何快速從零開始學習go

五、進階提升:初中級 go 語言工程師如何提升能力

六、核心競爭力: 優秀工程師如何打造自己的競爭優勢

Part2

Golang免費體驗課


2小時快速上手Golang》體驗課


課程簡介

後端最流行的開發語言,相容速度與效能,可零基礎入門,獨立完成程式設計實戰。

課程導師:皓禹

課程大綱

第一章:為什麼學習 Golang

1.1 為什麼學習go


第二章:從零開始用 Golang

2.1 開發環境的安裝與除錯

2.2 Golang 語法快速預覽


第三章:邊用邊學 Golang 基礎語法

3.1 體驗變數

3.2 理解變數

3.3 迴圈

3.4 切片

3.5 函式


第四章:用 Golang 做個小專案

4.1 專案:如何用 Go 實現命令列工具

4.2 專案作業:實現命令列工具的更多功能



Part3

網易內部Golang開發學習資料包

那麼如何獲取以上福利呢?

掃碼加入QQ群

即可領取所有福利

群號:928993707

學習就是對自己最好的投資!

贊(0)

分享創造快樂