Go并发编程实战

第一章 go语言

  • 语言特性
    
    1. 开放源代码
    2. 静态类型和编译型
    3. 跨平台
    4. 自动垃圾回收
    5. 原生的并发编程
    6. 完善的构建工具
    7. 多编程范式
    8. 代码风格强制统一
    9. 高效的编程和运行
    10. 丰富的标准库
  • 安装和设置
    
    1. API文件夹:依照GO版本顺序的API增量列表文件
    2. bin文件夹:主要的标准命令文件,包括(go/godoc/gofmt)
    3. blog文件夹:官方博客文章
    4. lib文件夹:特殊库文件
    5. misc文件夹:辅助类的说明和工具
    6. pkg文件夹:安装Go标准库后的所有归档文件
    7. src文件夹:存放Go自身、Go标准工具以及标准库的所有源码文件
    8. test文件夹:测试和验证Go本身的所有相关文件
  • 工程结构
    
    1. src目录:用于以代码包的形式组织并保存Go源码文件
    2. pkg目录:用于存放通过go install命令安装后的代码包的归档文件
    3. bin目录:保存由Go命令源码文件生成的可执行文件
  • 标准命令简述
    
    1. go工具包子命令
    build :编译指定Go语言源码文件
    cleam :清除执行go命令遗留下来的临时目录和文件
    doc :Go语言代码包以及程序实体文档
    env :打印GO语言相关的环境信息
    fix :修正指定代码包的源码文件和包含的过时语法和代码调用
    fmt :格式化指定代码包中的GO源码文件
    generate :识别指定代码包中源码文件的go:generate注释
    get :用于下载、编译并安装指定的代码包及依赖包
    install :编译并安装指定的代码包及其依赖包
    list :显示指定代码包的信息
    run :编译并运行指定的命令源码文件
    test :测试指定的代码包
    tool :运行Go语言的特殊工具
    vet :检查指定代码包中的Go语言源码
    version :显示当前安装的GO语言的版本信息及计算环境
    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)
        }
    }
    

第二章 语法概览

  • 基本构成要素
    
    • 标识符
      go特殊标识符即预定义标识符:
      1. 所有基本数据类型的名称
      2. 接口类型error
      3. 常量true、false、iota
      4. 内建函数的名称:append、cap、close、complex、copy、delete、imag、len、make、new、panic、print、println、real、recover
      ~~~强调:空标识符~:由下划线_表示
      
    • 关键字
    类别    | 关键字
    --------|--------
    程序申明    | import和packege
    程序实体声明和定义  | chan/const/func/interface/map/struct/type/var
    程序流程控制  | go/select/break/case/continue/default/defer/else/fallthrough/for/goto/if/range/return/switch

- 字面量
    1. 用于表示基础数据类型值的各种字面量
    2. 用于构造各种自定义的符合数据类型的类型的类型字面量
    3. 用于表示复合数据类型的值的复合字面量
- 操作符
~~重点:操作符优先级~~
- 表达式
    示例:
    ```
    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
      )
      ```
    
  • 高级类型
    
    • 自定义数据类型的模版或制作工具
    • 数组
    • 切片
    • 字典
    • 函数和方法
      示例
      type myInt int
      func(i myInt) add(another int) myInt{
          i = i + myInt(another)
          return i
      }
      
    -接口
  • 流程控制
    
    • Go在流程控制方面特点如下:
    1. 没有do 和 while循环,只有一个更广义的for语句
    2. switch语句灵活多变,还可以用于类型判断
    3. if语句和switch语句都可以包含一条初始化子语句
    4. break语句和continue语句可以后跟一条标签(label)语句,以标识需要终止或继续的代码块
    5. defer语句可以使我们更加方便的执行异常捕获和资源回收人物
    6. select语句也用于多分之选择,但只与通道配合使用
    7. go语句用于异步启用goroutine并执行指定函数
    
    
    • 代码块和作用域
      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

第三章 并发编程综述

  • 并发编程基础
    
  • 多进程编程
    
  • 多线程编程
    
  • 多线程与多进程
    
  • 多核时代的并发编程
    

第四章 go的并发机制

  • 原理探究
    
  • goroutine
    
  • channel
    
  • 实战演练:载荷发生器
    

第五章 同步

  • 锁的作用
    
  • 条件变量
    
  • 原子操作
    
  • 只会执行一次
    
  • WaitGroup
    
  • 临时对象池
    
  • 实战-ConcurrentMap
    

第六章 网络爬虫框架设计和实现

  • 网络爬虫与框架
    
  • 功能需求与分析
    
  • 总体设计
    
  • 详细设计
    
  • 工具的实现
    
  • 组件的实现
    
  • 调度器的实现
    
  • 简单图片爬虫
    
  • 扩展与思路
    

你可能感兴趣的:(Go并发编程实战)