Go并发编程实战(第2版)
2022-12-25 10:02:59 158.23MB go golang
1
协程(coroutine)是 Go 语言最大的特色之一,goroutine 的实现其实是通过协程。 协程的概念 协程一词最早出现在 1963 年发表的论文中,该论文的作者为美国计算机科学家 Melvi
2022-09-12 09:00:25 1.35MB 技术
1
深入Go并发编程研讨课 Go提供了我们便利的进行并发编程的工具、方法和同步原语,同时也提供给我们诸多的犯错的机会,也就是俗称的“坑”。即使是顶级Go开发的项目,比如Docker、Kubernetes、gRPC、etcd, 都是有经验丰富的Go开发专家所开发,也踩过不少的并发的坑,而且依然源源不断的继续踩着,即便是标准库也是这样。(参考 ) 分析和总结并发编程中的陷阱,避免重复踩在别人的坑中,正式本次培训课的重要内容。只有深入了解并发原语的实现,全面了解它们的特性和限制场景,注意它们的局限和容易踩的坑,才能提高我们的并发编程的能力。通过了解和学习其他人的经验和贡献的项目和库,我们可以更好的扩展我们的视野,避免重复的造轮子,或者说我们可以制作更好的轮子。 语言的内存模型定义了对变量的读写的可见性,可以清晰而准确读写事件的happen before关系。对于我们,可以很好地分析和编排gorout
2022-08-24 11:22:39 90KB Go
1
go并发实战pdf_完整第一版和部分第二版,第二版本目前网上只能找到部分的pdf,没有完整的pdf,压缩包内包含第一版的完整版和第二版的部分内容俩个pdf文件 注意:里面的第二版的pdf只是部分资源
2022-07-07 09:05:17 98.91MB go语言
1
本书作者带你一步一步深入这些方法。你将理解 Go语言为何选定这些并发模型,这些模型又会带来什么问题,以及你如何组合利用这些模型中的原语去解决问题。学习那些让你在独立且自信的编写与实现任何规模并发系统时所需要用到的技巧和工具。 理解Go语言如何解决并发难以编写正确这一根本问题。 学习并发与并行的关键性区别。 深入到Go语言的内存同步原语。 利用这些模式中的原语编写可维护的并发代码。 将模式组合成为一系列的实践,使你能够编写大规模的分布式系统。 学习 goroutine 背后的复杂性,以及Go语言的运行时如何将所有东西连接在一起。 作者简介 · · · · · · Katherine Cox-Buday是一名计算机科学家,目前工作于 Simple online banking。她的业余爱好包括软件工程、创作、Go 语言(igo、baduk、weiquei) 以及音乐,这些都是她长期的追求,并且有着不同层面的贡献。 目录 · · · · · · 前言 1 第1章 并发概述 9 摩尔定律,Web Scale和我们所陷入的混乱 10 为什么并发很难? 12 竞争条件 13 原子性 15 内存访问同步 17 死锁、活锁和饥饿 20 确定并发安全 28 面对复杂性的简单性 31 第2章 对你的代码建模:通信顺序进程 33 并发与并行的区别 33 什么是CSP 37 如何帮助你 40 Go语言的并发哲学 43 第3章 Go语言并发组件 47 goroutine 47 sync包 58 WaitGroup 58 互斥锁和读写锁 60 cond 64 once 69 池 71 channel 76 select 语句 92 GOMAXPROCS控制 97 小结 98 第4章 Go语言的并发模式 99 约束 99 for-select循环103 防止goroutine泄漏 104 or-channel 109 错误处理112 pipeline 116 构建pipeline的最佳实践 120 一些便利的生成器 126 扇入,扇出 132 or-done-channel 137 tee-channel 139 桥接channel模式 140 队列排队143 context包 151 小结 168 第5章 大规模并发 169 异常传递169 超时和取消 178 心跳 184 复制请求197 速率限制199 治愈异常的goroutine 215 小结 222 第6章 goroutine和Go语言运行时 223 工作窃取223 窃取任务还是续体 231 向开发人员展示所有这些信息 240 尾声 240 附录A 241
2021-12-01 16:19:40 140.63MB GO 并发之道 并发模型 内存同步原语
1
完整源码 go.introduce
2021-11-10 21:03:13 6MB go go并发
1
鸟窝老师的Go并发编程120页PPT,懂者进!!! 昨天参加了 Gopher China 2019 大会,分享了《Go并发编程实践》的主题,在这一篇博客中总结一下。 ----------------------------------- 从春节前开始我就有意识的收集和整理Go并发编程的相关知识,以前也有相关的博文进行过分享,本来是想以电子书的方式进行分享,正好Asta Xie邀请在Gopher China 2019上做一个分享,就毫不犹豫的答应了。
2021-09-02 16:18:40 4.77MB Go 并发编程 go语言 gopher
1
Go语言高级编程.tar
2021-08-03 22:05:23 162.16MB go 并发编程
1
郝林第二版 Go并发编程书籍PDF版,带高清目录 第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
2021-07-18 16:21:37 156.22MB Go语言 并发编程
1
深入Go并发编程研讨课 Go提供了我们便利的进行并发编程的工具、方法和同步原语,同时也提供给我们诸多的犯错的机会,也就是俗称的“坑”。即使是顶级Go开发的项目,比如Docker、Kubernetes、gRPC、etcd, 都是有经验丰富的Go开发专家锁开发,也踩过不少的并发的坑,而且依然源源不断的继续踩着,即便是标准库也是这样。 分析和总结并发编程中的陷阱,避免重复踩在别人的坑中,正式本次培训课的重要内容。只有深入了解并发原语的实现,全面了解它们的特性和限制场景,注意它们的局限和容易踩的坑,才能提高我们的并发编程的能力。通过了解和学习其他人的经验和贡献的项目和库,我们可以更好的扩展我们的视野,避免重复的造轮子,或者说我们可以制作更好的轮子。 语言的内存模型定义了对变量的读写的可见性,可以清晰而准确读写事件的happen before关系。对于我们,可以很好地分析和编排goroutine的运行,避免数据的竞争和不一致的问题。 通过本次课程,你可以: 了解基本同步原语的具体实现、hack同步原语进行扩展,了解它们的使用场景和坑,已经别人是怎么踩的 了解一些扩展的同步源于,对于标准库sync包的补充 对于规模很大的项目,分布式同步原语是必不可少的,带你了解便利的分布式同步原语 atomic可以保证对数据操作的一致性,利用CAS可以设计lock-free的数据结构 channel是Go语言进行并发编程的很好的工具,带你了解它的使用姿势 了解Go语言的内存模型
2021-05-13 22:31:41 22.93MB go 并发
1