1. 程式人生 > 其它 >Go語言核心36講02

Go語言核心36講02

你好,我是郝林,今天我分享的主題是,學習專欄的正確姿勢。

到了這裡,專欄的全部內容已經都推送到你的面前了。如果你已經同步學習完了,那麼我要給你點一個大大的贊!

還沒有看完的同學也不要著急,因為推送的速度肯定要比你們的學習速度快上不少。如果是我的話,我肯定無法用很快的速度,去認真地學習和理解專欄內容的。不過,粗讀一遍的話,這個時間倒是綽綽有餘的。我今天就想跟你聊聊學習專欄的正確姿勢。

專欄應該怎樣學

我們做網際網路技術的人,應該對這種索引+摘要+詳情的資料存取方案並不陌生。我希望我的專欄文章也可以達成這樣的一種狀態:它是你需要時,即能查閱的知識手冊。

在第一次聽音訊或瀏覽文章的時候,你可以走馬觀花,並不用去細扣每一個概念和每一句話。讓自己對每一個主題、每一個問題和每一個要點都有一個大概的印象就可以了。

如此一來,當想到或遇到某方面的疑惑的時候,你就可以有一個大致的方向,並且知道怎樣從專欄裡找出相應的內容。

這就是所謂的粗讀,相當於在你的腦袋裡面存了一份索引,甚至是一份摘要。利用這種快速的學習方式,你往往可以在有限的精力和無限的知識之間做出適合你的權衡。

極客時間可以讓我們無限期地查閱專欄的全部內容。所以你完全不用心急,可以按照自己的節奏先粗讀、再細讀,然後再拿這個專欄當做知識手冊來用。重要的是真正的理解和積極的實踐,而不是閱讀的速度。

實踐的正確姿勢

最近一段時間,有不少同學問我說:“老師,我快要學完這個專欄了,也買了你的書,那我後邊怎麼去實踐呢?”

問我此類問題的同學,大多數都是很少有機會在工作中使用Go語言的程式設計師,或者是對Go語言感興趣的網際網路領域的從業者,還有一些是在校的大學生。

我給大家的第一個建議一般都是“去寫網路爬蟲吧”。

網際網路絡的世界很龐雜,但又有一定的規律可循,是非常好的技術學習環境。你編寫一個網路服務程式,即使放到了公共的網路上,也還需要考慮清楚一系列的問題,才能讓你有足夠多的技術磨鍊機會,比如,服務的種類、功能、規則、安全、介面、受眾、宣傳和訪問途徑,以及日常的非技術性維護。

我認為,這已經不是純粹的技術實踐了,對於初期的技術技能增長是不利的。當然了,如果你有信心和精力去搞定這一系列問題,並樂於從中學習到各種各樣的技能,那就放手去做吧。

我在我的書和專欄中一直都在釋放這樣幾個訊號:“併發程式”“網際網路絡”“客戶端”“網路爬蟲”。這其實就是我們實踐的最佳切入點。它成本低,收效明顯,既有深度又有廣度。

有的同學還問我:“我的程式爬取了某某網站,可是隻爬了兩三下就好像被人家封掉了”。原因很明顯,你暴力獲取人家的網站內容,肯定會封你的啊。

我們要讓程式去模擬人的行為,模擬人使用網路瀏覽器訪問網站內容的過程,而不是用盡計算力去瘋狂地霸佔人家的頻寬和服務,否則那不就成了網路攻擊了。這是一個非常重要的自我實踐的技巧,請大家記住,“利己,但不要損人”。

注意,正常爬取網站內容並不意味著失去了高併發的應用場景。把內容下載下來只是一個開始,後邊還有不少的工作要做呢。

單單“模擬人”這一點就需要花一些心思。而且,你可以同時爬取成千上萬的同類甚至不同類的網站。這已經足夠你研究和實踐很長一段時間了。我在這裡還要鄭重地提示一下,做這類技術研究一定不要跨越道德的底線,更不能違反法律。

再進一步,我們最好以結構化的形式把爬取到的網路內容儲存下來。當得到足夠多的資料之後,你的選擇就很多了。比如,對某類資料進行整理、提取和分析,從而挖掘出更有價值的東西。這就屬於資料探勘的範疇了。

在如今這個資料過剩的時代,這也是一項很重要的技能。又比如,基於這些資料提供統一的訪問介面,製作成搜尋引擎,甚至對外提供服務。這也是一個很有深度的選擇。

當然,技術實踐的方式遠不止這些。不過鑑於篇幅,我就先說這麼多。

優秀Go專案推薦

最後,我再給大家推薦一些優秀的Go專案。別忘了,閱讀優秀的專案原始碼也是一個很重要的學習途徑。請看下圖。


(長按儲存大圖檢視)

這幅圖包含了我之前私藏的所有高Star,且近期依然活躍的Go專案。不得不說,在Github這個全球最大的程式設計師交友社群中,好東西真的是不少。

在這幅圖的左上角,有我對圖中各種符號的說明,大家在進一步讀圖之前需要先看一下。參看這些專案的順序完全由你自己決定,不過我建議從“貼近你實際工作的那個方面”入手,然後可以是“你感興趣的方面”,最後有機會再看其他的專案。千萬不要貪多,要循序漸進著來。

戳此檢視Go語言專欄文章配套詳細程式碼。