Go并发编程实战 PDF 第2版

  • 更新时间:
  • 8103人关注
  • 点击下载

给大家带来的一篇关于Go语言相关的电子书资源,介绍了关于Go、并发、编程实战方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小42.2 MB,郝林编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:7.6分

资源详情相关推荐
Go并发编程实战
  • 出版社:人民邮电出版社
  • 作者:郝林
  • 大小:42.2 MB
  • 类别:Go语言
  • 热度:328
  • Go语言高级编程
  • Go语言核心编程
  • GO专家编程
  • Google C++编程风格指南
  • Go语言编程入门与实战技巧
  • Go并发编程实战(第2版)首先介绍了Go语言的优秀特性、安装设置方法、工程结构、标准命令和工具、语法基础、数据类型以及流程控制方法,接着阐述了与多进程编程和多线程编程有关的知识,然后重点介绍了goroutine、channel以及Go提供的传统同步方法,最后通过一个完整实例——网络爬虫框架进一步阐述Go语言的哲学和理念,同时分享作者在多年编程生涯中的一些见解和感悟。

    与上一版相比,本书不仅基于Go 1.8对上一版进行了全面更新,而且更深入地描绘了Go运行时系统的内部机理,并且大幅改进了示例代码。

    本书适用于有一定计算机编程基础的从业者以及对Go语言编程感兴趣的爱好者,非常适合作为Go语言编程进阶教程。

    目录

    • 第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

    资源下载

    相关资源

    • Go Web编程

      Go Web编程

      本书原名Go Web Programming,帮助读者如何使用请求处理器、多路复用器、模板引擎、存储系统等核心组件去构建一个 Go Web 应用

      大小:117 MBWeb开发

      立即下载
    • Go零基础编程入门教程

      Go零基础编程入门教程

      Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。 Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领

      大小:1.34 MBGo语言

      立即下载
    • Java编程实战宝典

      Java编程实战宝典

      这是一本百科全书式的Java编程秘笈,以J2SE为平台,以新的JDK1.7技术规范为切入点,全面、系统地介绍了Java的基础编程技术和常用开发方法,实例丰富,特别适合想全面自学Java开发技术的人员阅读

      大小:154.4 MBJava

      立即下载
    • Erlang/OTP并发编程实战

      Erlang/OTP并发编程实战

      《 Erlang/OTP并发编程实战 》偏重于生产环境下的Erlang开发设计,关键解读怎样搭建平稳、版本控制优良、可维护保养的商品级编码,汇集了三位Erlang大師很多年的项目经验。《Erlang/OTP并发编程

      大小:48.7 MBOTP开发

      立即下载
    • ASP.NET SignalR编程实战

      ASP.NET SignalR编程实战

      使用SignalR更简便地开发实时多用户应用程序一本SignalR权威指南!SignalR是一个灵活框架,可简化服务器和客户端之间的实时、异步通信的开发工作。ASP.NET SignalR编程实战 面向熟悉HTML和JavaScri

      大小:47.2 MBASP.NET

      立即下载
    • Android编程实战

      Android编程实战

      你是否从事Android操作系统开发,会创建简单的Android应用,但想进一步提升自己的开发技巧?你是否想深入挖掘Android操作系统的特性与功能,挑战现有开发水准?你是否正在想方设法创建高级

      大小:14.5 MBAndroid

      立即下载

    学习笔记

    12小时39分钟前回答

    Django高级编程之自定义Field实现多语言

    自定义数据库字段 扩展默认的models.CharField和models.TextField使之成为支持多语言的字段。 可以轻松实现复用,无需配置多余选项 from django.conf import settingsfrom django.db import modelsfrom django.utils.translation import get_languageclass MultilingualField(models.Field): SUPPORTED_FIELD_TYPES = [models.CharField, models.TextField] def __init__(self, verbose_name=None, **kwargs): self.localized_field_model = None for model in MultilingualField.SUPPORTED_FIELD_TYPES: if issubclass(self.__class__, model): self.localized_field_model = model self._blank = kwargs.get("blank", False) self._editable = kwargs.get("editable", True) super().__init__(verbose_name, **kwargs) @staticmethod def localized_field_name(name, lang_code): lang_code_safe = lang_code.re……

    8小时13分钟前回答

    Python编程django实现同一个ip十分钟内只能注册一次

    很多小伙伴都会有这样的问题,说一个ip地址十分钟内之内注册一次,用来防止用户来重复注册带来不必要的麻烦 逻辑: 取ip,在数据库找ip是否存在,存在判断当前时间和ip上次访问时间之差,小于600不能注册,到登录界面,大于600可以注册,设计一个数据库来存储这个ip地址和访问时间, class Ip(models.Model): ip=models.CharField(max_length=20) time=models.DateTimeField() class Meta: verbose_name = u'访问时间' verbose_name_plural = verbose_name def __str__(self): return self.ip 然后去 python manage.py makemigrations python manage.py migrate 这样来更新我们的数据库,然后我们运行我们的项目可以在后台看到我们新注册的ip的数据 我们根据前面的逻辑,可……