標籤:異常 .com 相關 一個 arch 爬蟲 社區 oss 情況
頂級資深工程師深度講解Go語言
【:https://pan.baidu.com/s/1nx82k7mOn8ErlPSsCdLfTw 】
第1章 課程介紹
歡迎大家來到深度講解Go語言的課堂。本課程將從基本文法講起,逐漸深入,協助同學深度理解Go語言面向介面,函數式編程,錯誤處理,測試,並行計算等元素,並帶領大家實現一個分布式爬蟲的實戰項目。
第2章 基礎文法
量,常量,類型,選擇,迴圈,函數,指標,本章節帶領大家學習一門新語言所需的必備文法知識。讓大家對Go語言有一個初步的認識!
第3章 內建容器
本章節我們來學習數組,切片,Map和字串。在Go語言中,我們一般不直接使用數組,而是使用切片來管理線性表結構,它的文法類似python的list,不過更強大哦。當然,Map和字串的學習也是必不可少。掌握至此,我們就可以寫一些簡單的演算法了,刷刷leetcode不在話下,我們就來試一試。
第4章 面向“對象”
Go語言沒有class,只有struct。我們來看看struct如何使用,Go語言給結構體定義類似方法或者成員函數的做法非常有特色。我們還將學習Go語言的包的概念,以及如何封裝,如何擴充已有類型等。我們還將學習GOPATH和Go語言項目的目錄結構,如何從網上下載依賴包等一系列項目相關的知識。我們將以“樹”的結構和遍曆作為貫穿本章。
第5章 面向介面
這一章我們從duck typing的概念開始學起,還將探討其他語言中對duck typing的支援,由此引出介面的概念。我們將深入理解Go語言介面的內部實現以及使用介面實現組合的模式。
第6章 函數式編程
在其他通用語言中,函數式編程是“進階”概念,但對於Go語言卻非常基本。本章我們將講解函數式編程的概念並且比較其他語言函數式編程的實現方法。我們將重點理解閉包。這章中我們將採用多樣的例題來協助大家更好的理解閉包,函數作為一等公民等及其常見概念和應用方法。
第7章 錯誤處理和資源管理
這將是本課程最“無聊”的一章,但卻是區分出優秀軟體工程師的關鍵能力。Go語言獨特的defer/panic/recover,以及錯誤機制,在社區有著廣泛的爭論。我們來深入理解Go語言的錯誤處理機制,看看Go語言如何區分錯誤以及異常。最後,我們實現一個Web應用微型項目,採用商務服務的錯誤處理思路,結合函數式編程,來示範Go語言錯誤。
第8章 測試與效能調優
Go語言的測試不同於其他如junit,Go語言採用“表格驅動測試”的理念。我們將學習和體會這樣的理念,並用Go語言的測試支援庫來實踐表格驅動測試,並做代碼覆蓋和效能檢測,通過內建的效能調優工具來最佳化我們之前的演算法。最後示範了對http伺服器的多種粒度的測試。...
第9章 Goroutine
這一章開始我們進入並發編程。我們講解Goroutine,協程的概念,以及背後的Go語言調度器。
第10章 Channel
Channel是Goroutine之間通訊的橋樑,它和函數一樣是一等公民。在介紹完Channel的文法及運行方式後,我們將採用數個例題來示範Go語言並發編程中最常見的任務極其解決模式。
第11章 http及其他標準庫
這裡我們簡要介紹一下Go語言中非常重要而且封裝良好的http標準庫,回顧並實現http用戶端和伺服器。我們還介紹了Go語言中其他的標準庫。
第12章 迷宮的廣度優先搜尋
這章我們將綜合運用學過的知識實現一個廣度優先演算法來解迷宮,為接下來的實戰項目做好技術和演算法上的準備。廣度優先演算法不僅是面試和工作中常用的技術,而且實現上相比大部分其它演算法更為複雜,是檢驗是否熟練掌握一門語言的經典例題。讓我們來試一試吧。...
第13章 開始實戰項目
至此為止,恭喜同學完成了這門課Go語言部分的學習。接下來我們來進入實戰項目。本章將介紹項目的具體內容,課題的選擇,技術選型,總體架構,以及實現步驟。
第14章 單任務版爬蟲
在考慮效能之前我們首先應該考慮正確性。單任務版爬蟲確保我們能夠正確爬取我們所需的資訊。我們應用了之前練習的廣度優先演算法,抽象出Parser和Fetcher,學習Regex,成功實現並運行單任務版爬蟲。
第15章 並發版爬蟲
為了提升爬蟲效能,我們抽象出Worker的概念,並添加調度器,實現並發版爬蟲。我們應用介面的概念,完成了由簡至複雜的多個調度器的實現。同學可以在實戰項目中更真實的體會並學習Go語言並發編程的多種模式。
第16章 資料存放區和展示
是時候檢驗我們項目的成果了。我們將採用Docker+Elasticsearch來儲存我們爬取的資訊。在簡單瞭解Docker和Elasticsearch後,我們將使用Elasticsearch的Go語言用戶端將爬取資料寫入。之後我們使用Go語言的模板引擎迅速實現前端網頁展示。至此,我們已經可以嘗試自己喜歡的搜尋條件去查看資料啦。
第17章 分布式爬蟲
本章在簡要介紹分布式概念後,將我們的並發爬蟲改寫成分布式。我們在很少改動的情況下,加入jsonrpc客戶/服務端,實現並部署分布式爬蟲。最後探討實戰項目的更多改進方案。
第18章 課程總結
感謝同學們學到這裡,恭喜同學們給自己的技術棧加上了非常重要的Go語言技能。希望同學們帶著這門課上學到的知識,更好的參與到項目中去,共同推動Go語言的發展。
頂級資深工程師深度講解Go語言