美文网首页
Go并发编程实战

Go并发编程实战

作者: Blue_Sky_2017 | 来源:发表于2018-12-02 21:45 被阅读30次

    第一章 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并发编程实战

          本文链接:https://www.haomeiwen.com/subject/zevscqtx.html