Go并发编程实战 第2版

目录

第1章 初识Go语言 1 
1.1 语言特性 1 
1.2 安装和设置 2 
1.3 工程结构 3 
1.3.1 工作区 3 
1.3.2 GOPATH 4 
1.3.3 源码文件 5 
1.3.4 代码包 8 
1.4 标准命令简述 11 
1.5 问候程序 13 
1.6 小结 14 
第2章 语法概览 15 
2.1 基本构成要素 15 
2.1.1 标识符 15 
2.1.2 关键字 16 
2.1.3 字面量 17 
2.1.4 操作符 17 
2.1.5 表达式 19 
2.2 基本类型 20 
2.3 高级类型 22 
2.3.1 数组 23 
2.3.2 切片 23 
2.3.3 字典 24 
2.3.4 函数和方法 25 
2.3.5 接口 28 
2.3.6 结构体 29 
2.4 流程控制 30 
2.4.1 代码块和作用域 30 
2.4.2 if语句 32 
2.4.3 switch语句 32 
2.4.4 for语句 34 
2.4.5 defer语句 36 
2.4.6 panic和recover 38 
2.5 聊天机器人 40 
2.6 小结 44 
第3章 并发编程综述 45 
3.1 并发编程基础 45 
3.1.1 串行程序与并发程序 46 
3.1.2 并发程序与并行程序 46 
3.1.3 并发程序与并发系统 47 
3.1.4 并发程序的不确定性 47 
3.1.5 并发程序内部的交互 47 
3.2 多进程编程 48 
3.2.1 进程 48 
3.2.2 关于同步 55 
3.2.3 管道 60 
3.2.4 信号 65 
3.2.5 socket 74 
3.3 多线程编程 97 
3.3.1 线程 98 
3.3.2 线程的同步 107 
3.4 多线程与多进程 125 
3.5 多核时代的并发编程 126 
3.6 小结 130 
第4章 Go的并发机制 131 
4.1 原理探究 131 
4.1.1 线程实现模型 132 
4.1.2 调度器 142 
4.1.3 更多细节 158 
4.2 goroutine 160 
4.2.1 go语句与goroutine 160 
4.2.2 主goroutine的运作 166 
4.2.3 runtime包与goroutine 166 
4.3 channel 169 
4.3.1 channel的基本概念 169 
4.3.2 单向channel 180 
4.3.3 for语句与channel 184 
4.3.4 select语句 185 
4.3.5 非缓冲的channel 190 
4.3.6 time包与channel 192 
4.4 实战演练:载荷发生器 198 
4.4.1 参数和结果 199 
4.4.2 基本结构 201 
4.4.3 初始化 206 
4.4.4 启动和停止 212 
4.4.5 调用器和功能测试 221 
4.5 小结 231 
第5章 同 步 232 
5.1 锁的使用 232 
5.1.1 互斥锁 232 
5.1.2 读写锁 236 
5.1.3 锁的完整示例 238 
5.2 条件变量 244 
5.3 原子操作 247 
5.3.1 增或减 247 
5.3.2 比较并交换 249 
5.3.3 载入 250 
5.3.4 存储 251 
5.3.5 交换 251 
5.3.6 原子值 252 
5.3.7 应用于实际 256 
5.4 只会执行一次 257 
5.5 WaitGroup 258 
5.6 临时对象池 262 
5.7 实战演练——Concurrent Map 265 
5.8 小结 280 
第6章 网络爬虫框架设计和实现 281 
6.1 网络爬虫与框架 281 
6.2 功能需求和分析 283 
6.3 总体设计 284 
6.4 详细设计 286 
6.4.1 基本数据结构 286 
6.4.2 接口的设计 293 
6.5 工具的实现 309 
6.5.1 缓冲器 309 
6.5.2 缓冲池 311 
6.5.3 多重读取器 317 
6.6 组件的实现 318 
6.6.1 内部基础接口 319 
6.6.2 组件注册器 321 
6.6.3 下载器 323 
6.6.4 分析器 325 
6.6.5 条目处理管道 328 
6.7 调度器的实现 329 
6.7.1 基本结构 329 
6.7.2 初始化 331 
6.7.3 启动 333 
6.7.4 停止 343 
6.7.5 其他方法 344 
6.7.6 总结 345 
6.8 一个简单的图片爬虫 346 
6.8.1 概述 346 
6.8.2 命令参数 346 
6.8.3 初始化调度器 348 
6.8.4 监控调度器 354 
6.8.5 启动调度器 364 
6.9 扩展与思路 365 
6.10 本章小结 368 
附录A Go语言的学习资源 369

下载地址:https://pan.baidu.com/s/1kNJxoFXAalf-1Gf4TcVmVg

关注微信公众号获取提取码:

  输入:go01     获取提取码

Go并发编程实战 第2版 PDF (中文版带书签)的更多相关文章

  1. 《Java并发编程实战》/童云兰译【PDF】下载

    <Java并发编程实战>/童云兰译[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062521 内容简介 本书深入浅出地介绍了Jav ...

  2. 《Go并发编程实战》第2版 紧跟Go的1.8版本号

    文章作者:郝林(<Go并发编程实战 (第2版)>作者) 最终来了! 经过出版社的各位编辑.校对.排版伙伴与我的N轮PK和共同努力,<Go并发编程实战>第2版的全部内容最终全然确 ...

  3. Spring实战(第4版).pdf - 百度云资源

    http://www.supan.vip/spring%E5%AE%9E%E6%88%98 Spring实战(第4版).pdf 关于本书 Spring框架是以简化Java EE应用程序的开发为目标而创 ...

  4. 【Java并发编程实战】----- AQS(四):CLH同步队列

    在[Java并发编程实战]-–"J.U.C":CLH队列锁提过,AQS里面的CLH队列是CLH同步锁的一种变形.其主要从两方面进行了改造:节点的结构与节点等待机制.在结构上引入了头 ...

  5. 【Java并发编程实战】----- AQS(三):阻塞、唤醒:LockSupport

    在上篇博客([Java并发编程实战]----- AQS(二):获取锁.释放锁)中提到,当一个线程加入到CLH队列中时,如果不是头节点是需要判断该节点是否需要挂起:在释放锁后,需要唤醒该线程的继任节点 ...

  6. 【Java并发编程实战】----- AQS(二):获取锁、释放锁

    上篇博客稍微介绍了一下AQS,下面我们来关注下AQS的所获取和锁释放. AQS锁获取 AQS包含如下几个方法: acquire(int arg):以独占模式获取对象,忽略中断. acquireInte ...

  7. 【Java并发编程实战】-----“J.U.C”:Exchanger

    前面介绍了三个同步辅助类:CyclicBarrier.Barrier.Phaser,这篇博客介绍最后一个:Exchanger.JDK API是这样介绍的:可以在对中对元素进行配对和交换的线程的同步点. ...

  8. 【Java并发编程实战】-----“J.U.C”:CountDownlatch

    上篇博文([Java并发编程实战]-----"J.U.C":CyclicBarrier)LZ介绍了CyclicBarrier.CyclicBarrier所描述的是"允许一 ...

  9. 【Java并发编程实战】-----“J.U.C”:CyclicBarrier

    在上篇博客([Java并发编程实战]-----"J.U.C":Semaphore)中,LZ介绍了Semaphore,下面LZ介绍CyclicBarrier.在JDK API中是这么 ...

随机推荐

  1. 找回IntelliJ IDEA中丢失的Run Dashboard视图

    一般项目中包含多个springboot项目的时候都会出现run dashboard视图,但如果一开始它提示的时候,不点击展示,就再也找不到这个视图了,给我们后续启动一个一个的启动项目带来了很大的不便, ...

  2. NETTY框架的使用

    一.Netty 简介 Netty 是基于 Java NIO 的异步事件驱动的网络应用框架,使用 Netty 可以快速开发网络应用,Netty 提供了高层次的抽象来简化 TCP 和 UDP 服务器的编程 ...

  3. Homebrew 更新慢问题

    cd "$(brew --repo)" git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/hom ...

  4. 2019/8/27 Test(luogu 五月天模拟赛)

    \(2019/8/27\)大考 \(\color{#ff0808}{\text{初二诀别赛(SAD)}}\) 题目名称 链接 寿司 \(BSOJ5111\) 秀秀的森林 \(BSOJ5125\) 分组 ...

  5. 微信小程序 图片加载失败处理方法

    微信小程序 官方文档对image 媒体组件加载失败 没有太多的解释,使用中出现了几个小问题,今天抽空记录一下 WXML: <image class="userinfo-avatar&q ...

  6. php 数组的计算

    数组是我们最常用到的类型,那如何计算某个一维数组的个数呢.其实我们可以用到我们之前学过的数学函数里面的一个:count(). 我们来看看count函数的用法: int count ( mixed $变 ...

  7. AtomicIntegerFieldUpdater字段原子更新类

    本文链接:https://blog.csdn.net/anLA_/article/details/78662383前面讲的两个AtomicInteger和AtomicIntegerArray,这两个都 ...

  8. 获取上一个页面的data

    let pages = getCurrentPages();// 获取页面栈 let current = pages[pages.length - 1]; // 当前页面 let url = curr ...

  9. RookeyFrame Bug 表单管理 -> 查看表单 ->编辑字段页面 JS报错

    表单管理 -> 查看表单 ->编辑字段页面 小bug onchange里面直接就是方法,修改:去掉外面的function(){},直接把方法体写在onchange里面就可以了. 后台方法: ...

  10. computed的用法

    其实在摸板中也是可以做简单的计算的,但是会看起来会很乱 ,可以用computed来做计算 <!DOCTYPE html> <html lang="en"> ...