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. 结构型模式(七) 代理模式(Proxy)

    一.动机(Motivate) 在面向对象系统中,有些对象由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等),直接访问会给使用者.或者系统结构带来很多麻烦.如何在不 ...

  2. python - django authenticate 返回结果一直是None

    # 不论怎么测试 authenticate 返回结果一直是None,查了查原因好像是 django 2.1 版本的问题 ( 我用的是 2.1.7) 解决方法: 1. 先导入 from django.c ...

  3. KMP 最小循环节

    博客  

  4. ASM磁盘组的监控

    ASM磁盘组的监控可以使用oracle数据库查询,需要使用到的是sql语句和oracle数据库的相关操作. 还可以使用命令行进行查询,然后用awk进行文本拆分,拿到需要的值.这个需要使用到的是sudo ...

  5. Pycharm使用技巧:Split Vertically/Horizontally(垂直/水平拆分窗口)

    Split Vertically或者Split Horizontally可以把当前编辑窗口垂直或者水平拆分成两个. 使用: 在编辑窗口中打开你要展示的两个文件(如图中的  "郭靖" ...

  6. 关于Ubuntu中snap安装软件太慢解决办法

    两种方法,一是下载好包手动安装,二设置snap的代理. 下载安装包方式 到 https://uappexplorer.com/snaps 搜索需要的 snap 包,然后下载 下载的时候选择对应的平台. ...

  7. Python里面如何生成随机数?

    import randomrandom.random()它会返回一个随机的0和1之间的浮点数

  8. Android启动活动的最佳写法

    1.我们一般启动另一个活动的方式是: Intent intent = new Intent(MainActivity.this,SecondActivity.class); intent.putExt ...

  9. 【CSP模拟赛】坏天平(数学&思维)

    蹭兄弟学校的题目做还不用自己出题的感觉是真的爽 题目描述 nodgd有一架快要坏掉的天平,这架天平右边的支架有问题,如果右边的总重量比左边多太多,天平就彻底坏掉了.现在nodgd手上有n种砝码,质量分 ...

  10. 【洛谷】P3537 [POI2012]SZA-Cloakroom

    题目描述  有n件物品,每件物品有三个属性a[i], b[i], c[i] (a[i]<b[i]).  再给出q个询问,每个询问由非负整数m, k, s组成,问是否能够选出某些物品使得:  1. ...