登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入   新用戶註冊
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / 物流,時效:出貨後2-4日

2024年10月出版新書

2024年09月出版新書

2024年08月出版新書

2024年07月出版新書

2024年06月出版新書

2024年05月出版新書

2024年04月出版新書

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

『簡體書』Go语言中的高效并发技术

書城自編碼: 3987679
分類: 簡體書→大陸圖書→計算機/網絡操作系統/系統開發
作者: [美]波拉克·瑟达 著 黄永强 译
國際書號(ISBN): 9787302659747
出版社: 清华大学出版社
出版日期: 2024-05-01

頁數/字數: /
書度/開本: 16开 釘裝: 平装

售價:NT$ 454

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
人生解忧:佛学入门四十讲
《 人生解忧:佛学入门四十讲 》

售價:NT$ 490.0
浪潮将至
《 浪潮将至 》

售價:NT$ 395.0
在虚无时代:与马克斯·韦伯共同思考
《 在虚无时代:与马克斯·韦伯共同思考 》

售價:NT$ 260.0
日内交易与波段交易的资金风险管理
《 日内交易与波段交易的资金风险管理 》

售價:NT$ 390.0
自然信息图:一目了然的万物奇观
《 自然信息图:一目了然的万物奇观 》

售價:NT$ 640.0
女性史:古代卷(真正意义上的女性大历史)
《 女性史:古代卷(真正意义上的女性大历史) 》

售價:NT$ 560.0
跨代伴侣治疗
《 跨代伴侣治疗 》

售價:NT$ 440.0
心理治疗中的真意:心理治疗师的心灵之旅
《 心理治疗中的真意:心理治疗师的心灵之旅 》

售價:NT$ 440.0

建議一齊購買:

+

NT$ 389
《 Web前端开发 使用ASP.NET Core、Angular和Bootstrap 》
+

NT$ 403
《 CCF CSP第一轮认证一本通 》
+

NT$ 709
《 图解Linux内核(基于6.x) 姜亚华 》
+

NT$ 556
《 Windows信息安全和网络攻防 》
+

NT$ 435
《 直播系统开发:基于Nginx与Nginx-rtmp-module 》
+

NT$ 301
《 OpenHarmony开发与实践——基于红莓RK2206开发板 》
編輯推薦:
一旦完成了本书中提供的所有示例,就会对使用并发解决问题更有信心。每个人都在抱怨并发很难,但是,正确使用语言将使开发人员可以更轻松地生成正确的程序。你应该永远记住的经验法则是:正确性优先于性能。因此,我们首先要让它正常工作,然后才能让它更快地工作。
內容簡介:
《Go语言中的高效并技术》详细阐述了与Go语言并发技术相关的基本知识,主要包括并发—高级概述、Go并发原语、Go内存模型、一些众所周知的并发问题、工作池和管道、错误和恐慌处理、Timer和Ticker、并发处理请求、原子内存操作、解决并发问题等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学用书和参考手册。
關於作者:
Burak Serdar是一位软件工程师,在设计和开发可扩展的分布式企业应用程序方面拥有 30多年的经验。他曾在多家初创公司和大型公司(包括Thomson和Red Hat)担任工程师和技术主管。他是Cloud Privacy Labs的联合创始人之一,致力于中心式和去中心化系统的语义互操作性和隐私技术。Burak拥有电气和电子工程学士学位和硕士学位,以及计算机科学硕士学位。
目錄
第1章 并发—高级概述 1
1.1 技术要求 1
1.2 并发和并行 1
1.3 共享内存与消息传递 8
1.3.1 共享内存 8
1.3.2 消息传递 10
1.4 原子性、竞争、死锁和饥饿 11
1.4.1 竞争 11
1.4.2 原子性 13
1.4.3 死锁 15
1.4.4 饥饿 17
1.5 程序的属性 20
1.6 小结 21
1.7 思考题 22
1.8 延伸阅读 22
第2章 Go并发原语 23
2.1 技术要求 23
2.2 goroutine基础知识 23
2.2.1 进程 23
2.2.2 线程 24
2.2.3 调度程序 24
2.2.4 goroutine 24
2.2.5 线程和goroutine之间的区别 25
2.2.6 goroutine的运行研究 25
2.2.7 闭包 28
2.2.8 停止正在运行的goroutine 30
2.2.9 Go运行时管理goroutine的方式 30
2.3 通道和select语句 31
2.3.1 声明通道 32
2.3.2 发送和接收值 32
2.3.3 通道的初始化和关闭 33
2.3.4 无缓冲通道 35
2.3.5 使用单向通道 37
2.3.6 使用多个goroutine和通道协调工作 37
2.3.7 select语句 39
2.4 互斥体 45
2.5 等待组 50
2.6 条件变量 52
2.7 小结 57
2.8 思考题 57
第3章 Go内存模型 59
3.1 关于内存模型 59
3.2 内存操作之间的happened-before关系 60
3.3 Go并发原语的同步特性 63
3.3.1 包初始化 63
3.3.2 goroutine 64
3.3.3 通道 64
3.3.4 互斥体 66
3.3.5 原子内存操作 67
3.3.6 Map、Once和WaitGroup 68
3.4 小结 69
3.5 延伸阅读 70
第4章 一些众所周知的并发问题 71
4.1 技术要求 71
4.2 生产者-消费者问题 71
4.3 哲学家就餐问题 75
4.4 速率限制 80
4.5 小结 87
第5章 工作池和管道 89
5.1 技术要求 89
5.2 工作池 89
5.3 管道、扇出和扇入 95
5.3.1 简单管道示例 95
5.3.2 同步管道 97
5.3.3 异步管道 98
5.3.4 扇出/扇入 100
5.3.5 有序扇入 105
5.4 小结 109
5.5 思考题 110
第6章 错误和恐慌处理 111
6.1 错误处理机制 111
6.1.1 常见错误处理模式 112
6.1.2 常见错误处理模式的变体 115
6.1.3 管道 117
6.1.4 服务器 117
6.2 恐慌 118
6.3 小结 121
第7章 Timer和Ticker 123
7.1 技术要求 123
7.2 Timer—稍后运行一些东西 123
7.3 Ticker—定期运行一些东西 126
7.4 心跳 128
7.5 小结 130
第8章 并发处理请求 131
8.1 技术要求 131
8.2 上下文、取消和超时 131
8.2.1 上下文 132
8.2.2 取消 132
8.2.3 超时 134
8.2.4 处理上下文中的值 135
8.3 后端服务 137
8.3.1 构建一个简单的TCP服务器 137
8.3.2 容器化后端服务 139
8.3.3 构建一个简单的HTTP服务 140
8.3.4 分配工作和收集结果 142
8.3.5 信号量—限制并发 145
8.4 流传输数据 146
8.4.1 构建一个流传输应用程序 146
8.4.2 处理多个流 155
8.5 小结 160
第9章 原子内存操作 161
9.1 技术要求 161
9.2 原子内存操作的内存保证 161
9.3 比较和交换操作 163
9.4 原子的实际用途 164
9.4.1 计数器 164
9.4.2 心跳和进度表 165
9.4.3 取消 168
9.4.4 检测变化 169
9.5 小结 169
第10章 解决并发问题 171
10.1 技术要求 171
10.2 解读堆栈跟踪信息 171
10.2.1 哲学家进餐程序的死锁问题 171
10.2.2 链表指针问题 174
10.3 检测故障并修复 176
10.3.1 正确认识失败 177
10.3.2 找出失败的原因 177
10.3.3 尝试从失败中恢复 182
10.4 调试异常 183
10.5 小结 185
10.6 延伸阅读 185
內容試閱
语言表达了我们的思维方式。我们如何处理问题并制定解决方案取决于我们可以使用语言表达的概念。这对于编程语言也是如此。给定一个问题,为解决该问题而编写的程序可能因为语言的不同而有较大的差异。本书讲述的是如何用Go语言来表达并发算法并编写程序,以及如何了解这些程序的行为方式。
Go语言与许多流行语言的不同之处在于它强调可理解性。这与可读性不同。许多用易于阅读的语言编写的程序是难以理解的。过去,我也曾陷入使用使编程变得容易的框架来编写组织良好的程序的陷阱。这种方法的问题在于,一旦编写完成,程序就开始了自己的生命周期,而其他人则接管了它的维护工作。在开发阶段形成的专有知识丢失了,如果没有原始开发团队中最后一个人的帮助,那么团队留下的程序将无法理解。开发程序与写小说没有太大区别。小说是为了让别人读而写的,程序也是如此。你的程序如果没有人能理解,那么肯定无法长期运行。
本书将尝试解释如何在Go语言中使用并发结构进行思考,以便你在获得一段代码时能够清晰地理解该程序将如何运行,并且其他人也可以更轻松地理解你编写的程序。本书首先对并发以及Go语言的处理方式进行较高层次上的阐释,然后使用并发算法解决若干个实用的数据处理问题。毕竟,编写程序就是为了处理数据。本书希望你理解并发模式是如何在解决现实问题的同时全面发展的,这可以帮助你获得高效使用该语言的技能。本书后面的章节还介绍更多示例,这些示例涉及计时、周期性任务、服务器编程、流媒体和原子内存操作等。最后一章则讨论故障排除和调试等。
限于篇幅,本书无法讨论与并发相关的所有主题。还有很多领域没有被探索。但是我相信,你一旦完成了本书中提供的所有示例,就会对使用并发解决问题更有信心。每个人都在抱怨并发很难,但是,正确使用语言将使开发人员可以更轻松地生成正确的程序。你应该永远记住的经验法则是:正确性优先于性能。因此,我们首先要让它正常工作,然后才能让它更快地工作。
本书读者
如果你是一名具有Go语言基础知识并希望获得高并发后端应用程序开发专业知识的开发人员,那么这本书就是适合你的。本书还将吸引各种经验水平的Go开发人员,让他们的后端系统更加健壮和可扩展。
内容介绍
本书共分10章,各章内容如下。
第1章“并发—高级概述”,详细阐述“并发”是什么以及不是什么,特别是它与并行的关系。本章还介绍共享内存和消息传递范式,以及常见的并发概念,如竞争、原子性、死锁和饥饿等。
第2章“Go并发原语”,介绍用于并发编程的Go语言原语,包括goroutine、通道、互斥体、等待组和条件变量等。
第3章“Go内存模型”,详细探讨内存操作的可见性保证,介绍happened-before关系,这允许你推理并发行为。本章还讨论并发原语和一些标准库函数的内存可见性保证。
第4章“一些众所周知的并发问题”,研究著名的生产者/消费者问题、哲学家就餐问题和速率限制算法。
第5章“工作池和管道”,详细介绍工作池的机制,这是在有限并发下处理大量数据的常用方法。本章还演示多种并发数据管道实现,以帮助你编写高效的数据处理应用程序。
第6章“错误和恐慌处理”,深入探讨如何处理并发程序中的错误和恐慌,以及如何传递错误。
第7章“Timer和Ticker”,介绍一次性定时器Timer和周期性定时器Ticker。 Timer用于稍后运行一些东西,而Ticker则可用于定期运行一些东西。
第8章“并发处理请求”,主要讨论服务器编程。本章讨论的许多概念涉及处理多种请求,因此它们可以广泛应用于各种场景。本章描述如何有效地使用上下文、如何分配工作和收集结果、如何限制并发以及如何流传输数据。
第9章“原子内存操作”,详细阐释原子内存操作和它们的内存保证,并演示原子的一些实际用途。
第10章“解决并发问题”,讨论读取堆栈跟踪信息这一被低估但必不可少的技能,以及如何在运行时检测故障并修复它们。
充分利用本书
你需要对Go语言以及适合你的操作系统运行的Go开发环境有基本的了解。本书不依赖任何第三方工具或库,你只需使用你最熟悉的代码编辑器即可。所有示例和代码示例都可以使用Go构建系统进行构建和运行。
下载示例代码文件
本书的代码包已经托管在GitHub上,其网址如下:
https://github.com/PacktPublishing/Effective-Concurrency-in-Go
代码如果有更新,则会在现有GitHub存储库上被更新。
下载彩色图像
我们还提供了一个PDF文件,其中包含本书中使用的屏幕截图/图表的彩色图像。你可以访问以下网址下载该文件:
https://packt.link/3rxJ9
本书约定
本书中使用了许多文本约定。
(1)代码格式文本:表示文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL、用户输入和Twitter句柄等。以下段落就是一个示例:
本章源代码可在本书配套的GitHub存储库中找到,其网址如下:
https://github.com/PacktPublishing/Effective-Concurrency-in-Go/tree/main/chapter4
(2)有关代码块的设置如下所示:
1: chn := make(chan bool) // 创建一个无缓冲通道
2: go func() {
3: chn <- true // 发送到通道
4: }()
5: go func() {
6: var y bool
7: y <-chn // 从通道接收
8: fmt.Println(y)
9: }()
(3)任何命令行输入或输出都是采用如下形式编写的:
{”row”:65,”height”:172.72,”weight”:97.61}
{”row”:64,”height”:195.58,”weight”:81.266}
{”row”:66,”height”:142.24,”weight”:101.242}
{”row”:68,”height”:152.4,”weight”:80.358}
{”row”:67,”height”:162.56,”weight”:104.87400000000001}
(4)术语或重要单词采用中英文对照形式给出,括号内保留其英文原文,方便读者进行对照和查看。示例如下:
多年来,人们已经开发出了若干种数学模型来分析和验证并发系统的行为。通信顺序进程(communicating sequential processes,CSP)就是影响Go语言设计的模型之一。在CSP中,系统由多个并行运行的顺序进程组成。
(5)本书还使用了以下两个图标。
表示警告或重要的注意事项。
表示提示信息或操作技巧。

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 台灣用户 | 香港/海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.