• 聚沙成塔:Go语言构建高性能、分布式爬虫项目
  • 聚沙成塔:Go语言构建高性能、分布式爬虫项目
21年品牌 40万+商家 超1.5亿件商品

聚沙成塔:Go语言构建高性能、分布式爬虫项目

未开封 实拍

50 3.1折 159 全新

库存2件

河北保定
认证卖家担保交易快速发货售后保障

作者郑建勋

出版社电子工业出版社

出版时间2023-08

版次1

装帧其他

货号13-1

上书时间2024-10-24

永和书店

十年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
图书标准信息
  • 作者 郑建勋
  • 出版社 电子工业出版社
  • 出版时间 2023-08
  • 版次 1
  • ISBN 9787121460401
  • 定价 159.00元
  • 装帧 其他
  • 开本 16开
  • 页数 456页
  • 字数 0.82千字
【内容简介】
本书是颇具创新性的 Go 语言实战指南,巧妙地将理论知识与实践案例串联起来,为读者搭建了一套完整的知识体系和方法论。本书以爬虫项目为基础,全面阐述了 Go 语言在网络服务开发中的卓越性能,并深入探讨了如何利用 Go 语言打造高并发的爬虫系统、高性能的分布式系统,以及可扩展的领域驱动的微服务系统。本书有助于 Go 语言开发者根据编码规范,编写出简洁、高效、健壮且易于扩展的代码。同时,本书可以作为高等院校计算机和软件工程等相关专业师生的参考资料。
【作者简介】
成都慧眸科技创始人《Go语言底层原理剖析》作者极客时间专栏作家
【目录】
第1篇  项目准备

1  基础知识:磨刀不误砍柴工2

1.1  Go语言的历史与设计理念2

1.1.1  Go语言的“祖先”3

1.1.2  Go的特性4

1.2  开发环境5

1.3  基础语法6

1.4  语法特性12

1.5  并发编程18

1.6  项目组织与依赖管理20

1.7  工具与库22

1.8  总结27

2  大型项目的开发模式与流程28

2.1  开发模式28

2.1.1  瀑布模式28

2.1.2  敏捷开发29

2.1.3  其他开发模式31

2.2  开发流程31

2.2.1  需求阶段32

2.2.2  设计阶段33

2.2.3  研发实现阶段34

2.2.4  联调测试阶段38

2.2.5  上线部署阶段38

2.2.6  运维阶段39

2.2.7  运营阶段40

2.3  总结40

第2篇  项目设计

3  冰川之下:深入Go高并发网络模型42

3.1  网络的基本概念42

3.1.1  阻塞与非阻塞42

3.1.2  文件描述符与Socket43

3.1.3  I/O模型44

3.2  Go语言网络模型46

3.2.1  协程调度46

3.2.2  同步编程模式48

3.2.3  非阻塞I/O48

3.2.4  I/O多路复用49

3.3  总结50

4  高性能设计:自顶向下的高性能Go语言程序设计与优化51

4.1  系统级别52

4.2  程序设计和组织级别52

4.3  代码实施级别53

4.3.1  合理的代码53

4.3.2  刻意的优化53

4.3.3  冒险的尝试54

4.4  操作系统级别54

4.5  硬件级别56

4.6  总结56

5  微服务探索:深度解析架构演进与治理实践57

5.1  微服务架构演进57

5.1.1  单体服务与微服务57

5.1.2  微服务的优点61

5.1.3  微服务的缺点62

5.1.4  微服务的边界63

5.1.5  微服务的通信63

5.1.6  服务发现与负载均衡65

5.2  微服务治理体系与实践66

5.2.1  分布式日志与监控67

5.2.2  分布式Metric与监控68

5.2.3  分布式追踪68

5.2.4  微服务测试69

5.2.5  微服务降级71

5.2.6  微服务总体架构71

5.3  总结72

6  协调之谜:深入剖析分布式一致性与共识算法74

6.1  数据一致性74

6.1.1  诞生背景74

6.1.2  CAP定理76

6.1.3  共识算法77

6.2  分布式协调服务77

6.2.1  分布式锁78

6.2.2  配置管理78

6.2.3  服务发现78

6.3  无信网络中的共识问题79

6.4  共识算法80

6.4.1  Paxos算法80

6.4.2  Raft算法81

6.5  总结85

7  谋定而动:爬虫项目分析与设计86

7.1  网络爬虫概述86

7.1.1  网络爬虫合法吗86

7.1.2  网络爬虫的商业价值87

7.1.3  网络爬虫的流程与技术栈88

7.1.4  常见的反爬虫措施90

7.2  爬虫项目需求分析与架构设计91

7.2.1  需求调研与分析91

7.2.2  功能性模块的设计92

7.2.3  非功能性模块的设计93

7.2.4  架构设计94

7.3  总结96

8  众人拾柴:高效团队的Go编码规范97

8.1  编码规范的重要性97

8.2  Go语言编码规范97

8.2.1  整洁一致98

8.2.2  高效103

8.2.3  健壮性104

8.2.4  扩展性105

8.2.5  工具106

8.3  总结106

第3篇  Worker开发

9  从正则表达式到CSS选择器:4种网页文本处理手段108

9.1  项目启动108

9.1.1  初始化Git仓库108

9.1.2  抓取一个简单的网页109

9.2  标准库110

9.3  正则表达式112

9.4  XPath115

9.5  CSS选择器116

9.6  总结116

10  网络爬虫:HTTP请求的魔幻旅途117

10.1  最简单的HTTP服务器与请求117

10.2  分层网络模型118

10.2.1  应用层119

10.2.2  传输层120

10.2.3  TLS协议120

10.2.4  网络层121

10.2.5  网络接入层123

10.3  数据传输与路由协议124

10.4  操作系统处理数据包流程125

10.5  HTTP协议详解127

10.6  HTTP的困境129

10.7  HTTP标准库底层原理129

10.8  总结133

11  采集引擎:接口抽象与模拟浏览器访问实战134

11.1  接口实战134

11.2  模拟浏览器访问135

11.3  远程访问浏览器138

11.3.1  浏览器驱动协议138

11.3.2  谷歌开发者工具协议139

11.4  总结142

12  面向组合:接口的使用场景与底层原理143

12.1  Go接口及其优势143

12.2  Go接口的设计理念143

12.3  接口的最佳实践144

12.3.1  模块解耦144

12.3.2  依赖注入146

12.4  接口原理147

12.5  总结147

13  依赖管理:Go Modules用法与原理149

13.1  GOPATH149

13.1.1  什么是GOPATH149

13.1.2  GOPATH的落幕与依赖管理的历史151

13.2  Go Modules151

13.2.1  Go Modules概述151

13.2.2  Go Modules实践153

13.2.3  Go Modules最小版本选择原理157

13.2.4  验证最小版本选择原理159

13.3  语义版本161

13.3.1  v2版本161

13.3.2  伪版本162

13.4  总结163

14  优雅离场:Context超时控制与原理164

14.1  为什么需要Context164

14.2  context.Value166

14.3  Context实践169

14.4  Context底层原理172

14.5  总结173

15  移花接木:为爬虫安上代理的翅膀174

15.1  代理的分类和实现机制174

15.1.1  正向代理174

15.1.2  HTTP隧道代理175

15.1.3  MITM代理177

15.1.4  透明代理177

15.1.5  反向代理178

15.2  如何在实际项目中实现代理179

15.2.1  如何访问代理服务器180

15.2.2  如何选择代理地址180

15.3  总结182

16  日志处理:日志规范与最佳实践183

16.1  标准库的log包183

16.2  Zap185

16.3  日志切割186

16.4  日志分级187

16.5  日志格式规范187

16.6  构建项目日志组件188

16.7  总结189

17  运筹帷幄:协程的运行机制与并发模型190

17.1  进程与线程190

17.2  线程与协程190

17.2.1  调度方式191

17.2.2  上下文切换速度191

17.2.3  调度策略191

17.2.4  栈的大小192

17.3  从GM到GMP192

17.4  协程的数据争用193

17.4.1  原子锁193

17.4.2  互斥锁195

17.4.3  读写锁195

17.5  Go并发控制库196

17.5.1  sync.WaitGroup196

17.5.2  sync.Once197

17.5.3  sync.Map197

17.5.4  sync.Cond198

17.6  Go并发模式200

17.6.1  ping-pong模式201

17.6.2  fan-in模式202

17.6.3  fan-out模式203

17.6.4  pipeline模式205

17.7  总结208

18  掘地三尺:实战深度与广度优先搜索算法209

18.1  深度优先搜索算法与实战209

18.2  广度优先搜索算法与实战211

18.3  用Cookie突破反爬封锁214

18.4  总结215

19  调度引擎:负载均衡与调度器实战216

19.1  调度引擎实战216

19.2  函数式选项模式219

19.3  总结222

20  细节决定成败:切片与哈希表的陷阱与原理223

20.1  切片的底层原理223

20.1.1  切片的截取224

20.1.2  切片的扩容225

20.2  哈希表原理226

20.3  总结228

21  辅助任务管理:任务优先级、去重与失败处理229

21.1  设置爬虫最大深度229

21.2  避免请求重复230

21.3  设置优先队列233

21.4  设置随机User-Agent234

21.5  进行失败处理235

21.6  总结235

22  规则引擎:自定义爬虫处理规则236

22.1  静态规则引擎237

22.2  动态规则引擎240

22.3  总结245

23  存储引擎:数据清洗与存储246

23.1  爬取结构化数据246

23.2  数据存储250

23.2.1  数据抽象250

23.2.2  数据底层存储251

23.2.3  存储引擎实现254

23.3  存储引擎验证256

23.4  总结258

24  固若金汤:限速器与错误处理259

24.1  限速器259

24.2  随机休眠262

24.3  错误处理263

24.3.1  基本的错误处理方式264

24.3.2  错误链处理方式266

24.3.3  减少错误处理的实践267

24.4  panic268

24.5  总结270

25  服务注册与监听:Worker节点与etcd交互271

25.1  GRPC与Protocol Buffers271

25.2  go-micro与grpc-gateway273

25.3  注册中心与etcd276

25.4  micro中间件279

25.5  总结280

第4篇  测试与分析

26  未雨绸缪:通过静态扫描与动态扫描保证代码质量282

26.1  静态扫描282

26.2  动态扫描284

26.3  配置文件285

26.4  Makefile287

26.5  总结288

27  测试的艺术:从单元测试到集成测试289

27.1  单元测试289

27.1.1  表格驱动测试291

27.1.2  子测试293

27.1.3  依赖注入296

27.1.4  猴子补丁298

27.2  压力测试299

27.3  基准测试299

27.4  代码覆盖率测试300

27.4.1  cover的基本用法301

27.4.2  测试环境下的代码覆盖率302

27.4.3  cover工具的工作原理302

27.5  模糊测试303

27.6  集成测试306

27.7  总结307

28  调试程序:从日志打印到Delve调试器308

28.1  常见的调试方法和技术308

28.2  Delve的内部架构309

28.3  Delve实战309

28.4  使用Goland+Delve进行本地调试316

28.5  使用Goland+Delve进行远程调试317

28.6  总结318

29  性能分析利器:深入pprof与trace工具319

29.1  pprof及其使用方法319

29.1.1  pprof堆内存分析321

29.1.2  pprof协程栈分析325

29.1.3  pprof CPU占用分析326

29.2  trace及其使用方法327

29.3
点击展开 点击收起

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP