Go并發(fā)編程實(shí)戰(zhàn)

第一章 go語言

  • 語言特性
    
    1. 開放源代碼
    2. 靜態(tài)類型和編譯型
    3. 跨平臺
    4. 自動垃圾回收
    5. 原生的并發(fā)編程
    6. 完善的構(gòu)建工具
    7. 多編程范式
    8. 代碼風(fēng)格強(qiáng)制統(tǒng)一
    9. 高效的編程和運(yùn)行
    10. 豐富的標(biāo)準(zhǔn)庫
  • 安裝和設(shè)置
    
    1. API文件夾:依照GO版本順序的API增量列表文件
    2. bin文件夾:主要的標(biāo)準(zhǔn)命令文件,包括(go/godoc/gofmt)
    3. blog文件夾:官方博客文章
    4. lib文件夾:特殊庫文件
    5. misc文件夾:輔助類的說明和工具
    6. pkg文件夾:安裝Go標(biāo)準(zhǔn)庫后的所有歸檔文件
    7. src文件夾:存放Go自身、Go標(biāo)準(zhǔn)工具以及標(biāo)準(zhǔn)庫的所有源碼文件
    8. test文件夾:測試和驗(yàn)證Go本身的所有相關(guān)文件
  • 工程結(jié)構(gòu)
    
    1. src目錄:用于以代碼包的形式組織并保存Go源碼文件
    2. pkg目錄:用于存放通過go install命令安裝后的代碼包的歸檔文件
    3. bin目錄:保存由Go命令源碼文件生成的可執(zhí)行文件
  • 標(biāo)準(zhǔn)命令簡述
    
    1. go工具包子命令
    build :編譯指定Go語言源碼文件
    cleam :清除執(zhí)行g(shù)o命令遺留下來的臨時目錄和文件
    doc :Go語言代碼包以及程序?qū)嶓w文檔
    env :打印GO語言相關(guān)的環(huán)境信息
    fix :修正指定代碼包的源碼文件和包含的過時語法和代碼調(diào)用
    fmt :格式化指定代碼包中的GO源碼文件
    generate :識別指定代碼包中源碼文件的go:generate注釋
    get :用于下載、編譯并安裝指定的代碼包及依賴包
    install :編譯并安裝指定的代碼包及其依賴包
    list :顯示指定代碼包的信息
    run :編譯并運(yùn)行指定的命令源碼文件
    test :測試指定的代碼包
    tool :運(yùn)行Go語言的特殊工具
    vet :檢查指定代碼包中的Go語言源碼
    version :顯示當(dāng)前安裝的GO語言的版本信息及計算環(huán)境
    tool pprof:用于以交互的方式訪問一些性能概要文件
    tool trace:用于讀取Go程序蹤跡文件,并以圖形化的方式展示出來
    
    1. go程序示例
    package main
    import(
        “bufio”
        “fmt”
        “os”
    )
    func main(){
        inputReader :=bufio.NewReader(os.Stdin)
        fmt.Println("Please input your name :")
        input,err :=inputReader.ReadString('\n')
        if err !=nil {
            fmt.Printf("Found an error :%\n",err)
        }else{
            input = input[:len(input)-1]
            fmt.Prinf("Hello,%s!\n",input)
        }
    }
    

第二章 語法概覽

  • 基本構(gòu)成要素
    
    • 標(biāo)識符
      go特殊標(biāo)識符即預(yù)定義標(biāo)識符:
      1. 所有基本數(shù)據(jù)類型的名稱
      2. 接口類型error
      3. 常量true、false、iota
      4. 內(nèi)建函數(shù)的名稱:append、cap、close、complex、copy、delete、imag、len、make、new、panic、print、println、real、recover
      ~~~強(qiáng)調(diào):空標(biāo)識符~:由下劃線_表示
      
    • 關(guān)鍵字
    類別    | 關(guān)鍵字
    --------|--------
    程序申明    | import和packege
    程序?qū)嶓w聲明和定義  | chan/const/func/interface/map/struct/type/var
    程序流程控制  | go/select/break/case/continue/default/defer/else/fallthrough/for/goto/if/range/return/switch

- 字面量
    1. 用于表示基礎(chǔ)數(shù)據(jù)類型值的各種字面量
    2. 用于構(gòu)造各種自定義的符合數(shù)據(jù)類型的類型的類型字面量
    3. 用于表示復(fù)合數(shù)據(jù)類型的值的復(fù)合字面量
- 操作符
~~重點(diǎn):操作符優(yōu)先級~~
- 表達(dá)式
    示例:
    ```
    var i1 I1
    var ok bool
    i1,ok = interface{}(v1)(I1)
    簡寫:i1,ok := interface{}(v1)(I1)
    ```
  • 基本類型
      ```
      const DEFAULT_IP_string = "192.168.0.1"
      const DEFAULT_PORT int = 9001
      簡寫:
      const(
          DEFAULT_IP_string = "192.168.0.1"
          DEFAULT_PORT int = 9001
      )
      ```
    
  • 高級類型
    
    • 自定義數(shù)據(jù)類型的模版或制作工具
    • 數(shù)組
    • 切片
    • 字典
    • 函數(shù)和方法
      示例
      type myInt int
      func(i myInt) add(another int) myInt{
          i = i + myInt(another)
          return i
      }
      
    -接口
  • 流程控制
    
    • Go在流程控制方面特點(diǎn)如下:
    1. 沒有do 和 while循環(huán),只有一個更廣義的for語句
    2. switch語句靈活多變,還可以用于類型判斷
    3. if語句和switch語句都可以包含一條初始化子語句
    4. break語句和continue語句可以后跟一條標(biāo)簽(label)語句,以標(biāo)識需要終止或繼續(xù)的代碼塊
    5. defer語句可以使我們更加方便的執(zhí)行異常捕獲和資源回收人物
    6. select語句也用于多分之選擇,但只與通道配合使用
    7. go語句用于異步啟用goroutine并執(zhí)行指定函數(shù)
    
    
    • 代碼塊和作用域
      package main
      import(
      "fmt"
      )
      var v = "1,2,3"
      func main(){
          v := []int{1,2,3}
          if v != 123
          fmt.Printf("%v\n",v)
          }
      }
      
    • if語句/switch語句/for語句/range子句/defer語句/panic和recover

第三章 并發(fā)編程綜述

  • 并發(fā)編程基礎(chǔ)
    
  • 多進(jìn)程編程
    
  • 多線程編程
    
  • 多線程與多進(jìn)程
    
  • 多核時代的并發(fā)編程
    

第四章 go的并發(fā)機(jī)制

  • 原理探究
    
  • goroutine
    
  • channel
    
  • 實(shí)戰(zhàn)演練:載荷發(fā)生器
    

第五章 同步

  • 鎖的作用
    
  • 條件變量
    
  • 原子操作
    
  • 只會執(zhí)行一次
    
  • WaitGroup
    
  • 臨時對象池
    
  • 實(shí)戰(zhàn)-ConcurrentMap
    

第六章 網(wǎng)絡(luò)爬蟲框架設(shè)計和實(shí)現(xiàn)

  • 網(wǎng)絡(luò)爬蟲與框架
    
  • 功能需求與分析
    
  • 總體設(shè)計
    
  • 詳細(xì)設(shè)計
    
  • 工具的實(shí)現(xiàn)
    
  • 組件的實(shí)現(xiàn)
    
  • 調(diào)度器的實(shí)現(xiàn)
    
  • 簡單圖片爬蟲
    
  • 擴(kuò)展與思路
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容