内容推荐 本书首先介绍了Go语言的优势特性、安装设置方法、工程结构、标准命令和工具、语法基础、数据类型以及流程控制方法,接着阐述了与多进程编程和多线程编程有关的知识,然后重点介绍了goroutine、channel以及Go提供的传统同步方法,之后通过一个完整实例——网络爬虫框架进一步阐述Go语言的哲学和理念,同时分享作者在多年编程生涯中的一些见解和感悟。与上一版相比,本书不仅基于Go 1.8对上一版进行了全面更新,而且更深入地描绘了Go运行时系统的内部机理,并且大幅改进了示例代码。本书适用于有一定计算机编程基础的从业者以及对Go语言编程感兴趣的爱好者,很好适合作为Go语言编程进阶教程。 作者简介 郝林,从业12年有余的软件工匠,靠前知名的Go语言技术布道者,Go语言北京用户组和GoHackers社群的发起人和组织者,多套免费在线Go语言教程的作者,深信Go语言在人工智能时代和机器人时代也能大放异彩的科技信徒。 目录 第1章初识Go语言\t1 1.1语言特性1 1.2安装和设置2 1.3工程结构3 1.3.1工作区3 1.3.2GOPATH4 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.2if语句32 2.4.3switch语句32 2.4.4for语句34 2.4.5defer语句36 2.4.6panic和recover38 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.5socket74 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.2goroutine160 4.2.1go语句与goroutine160 4.2.2主goroutine的运作166 4.2.3runtime包与goroutine166 4.3channel169 4.3.1channel的基本概念169 4.3.2单向channel180 4.3.3for语句与channel184 4.3.4select语句185 4.3.5非缓冲的channel190 4.3.6time包与channel192 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.5WaitGroup258 5.6临时对象池262 5.7实战演练——Concurrent Map265 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 附录AGo语言的学习资源369 |