图书介绍
Go语言高级编程2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

- 柴树杉,曹春晖著 著
- 出版社: 北京:人民邮电出版社
- ISBN:9787115510365
- 出版时间:2019
- 标注页数:366页
- 文件大小:131MB
- 文件页数:384页
- 主题词:程序语言-程序设计
PDF下载
下载说明
Go语言高级编程PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 语言基础1
1.1 Go语言创世纪1
1.1.1 来自贝尔实验室特有基因3
1.1.2 你好,世界4
1.2 “Hello,World”的革命5
1.2.1 B语言——Ken Thompson,19695
1.2.2 C语言——Dennis Ritchie,1972—19895
1.2.3 Newsqueak——Rob Pike,19897
1.2.4 Alef——Phil Winterbottom,19939
1.2.5 Limbo——Sean Dorward,Phil Winterbottom,Rob Pike,199510
1.2.6 Go语言——2007—200911
1.2.7 你好,世界!——V2.013
1.3 数组、字符串和切片13
1.3.1 数组14
1.3.2 字符串17
1.3.3 切片21
1.4 函数、方法和接口27
1.4.1 函数27
1.4.2 方法31
1.4.3 接口35
1.5 面向并发的内存模型39
1.5.1 Goroutine和系统线程40
1.5.2 原子操作40
1.5.3 顺序一致性内存模型44
1.5.4 初始化顺序45
1.5.5 Goroutine的创建46
1.5.6 基于通道的通信46
1.5.7 不靠谱的同步48
1.6 常见的并发模式49
1.6.1 并发版本的“Hello,World”50
1.6.2 生产者卐消费者模型52
1.6.3 发布卐订阅模型53
1.6.4 控制并发数56
1.6.5 赢者为王57
1.6.6 素数筛58
1.6.7 并发的安全退出59
1.6.8 context包62
1.7 错误和异常64
1.7.1 错误处理策略65
1.7.2 获取错误的上下文67
1.7.3 错误的错误返回69
1.7.4 剖析异常70
1.8 补充说明73
第2章 CGO编程74
2.1 快速入门74
2.1.1 最简CGO程序74
2.1.2 基于C标准库函数输出字符串75
2.1.3 使用自己的C函数75
2.1.4 C代码的模块化76
2.1.5 用Go重新实现C函数77
2.1.6 面向C接口的Go编程78
2.2 CGO基础79
2.2.1 import“C”语句79
2.2.2 #cgo语句81
2.2.3 build标志条件编译82
2.3 类型转换83
2.3.1 数值类型83
2.3.2 Go字符串和切片85
2.3.3 结构体、联合和枚举类型86
2.3.4 数组、字符串和切片89
2.3.5 指针间的转换91
2.3.6 数值和指针的转换92
2.3.7 切片间的转换93
2.4 函数调用94
2.4.1 Go调用C函数94
2.4.2 C函数的返回值94
2.4.3 void函数的返回值95
2.4.4 C调用Go导出函数96
2.5 内部机制97
2.5.1 CGO生成的中间文件97
2.5.2 Go调用C函数98
2.5.3 C调用Go函数101
2.6 实战:封装qsort103
2.6.1 认识qsort()函数103
2.6.2 将qsort()函数从Go包导出104
2.6.3 改进:闭包函数作为比较函数106
2.6.4 改进:消除用户对unsafe包的依赖108
2.7 CGO内存模型110
2.7.1 Go访问C内存110
2.7.2 C临时访问传入的Go内存111
2.7.3 C长期持有Go指针对象113
2.7.4 导出C函数不能返回Go内存115
2.8 C++类包装117
2.8.1 C+++类到Go语言对象117
2.8.2 Go语言对象到C+++类121
2.8.3 彻底解放C+++的this指针125
2.9 静态库和动态库126
2.9.1 使用C静态库126
2.9.2 使用C动态库128
2.9.3 导出C静态库129
2.9.4 导出C动态库131
2.9.5 导出非main包的函数131
2.10 编译和链接参数133
2.10.1 编译参数:CFLAGS巭CPPFLAGS巭CXXFLAGS133
2.10.2 链接参数:LDFLAGS133
2.10.3 pkg-config133
2.10.4 go get链134
2.10.5 多个非main包中导出C函数135
2.11 补充说明135
第3章 Go汇编语言136
3.1 快速入门136
3.1.1 实现和声明136
3.1.2 定义整数变量137
3.1.3 定义字符串变量138
3.1.4 定义main()函数141
3.1.5 特殊字符141
3.1.6 没有分号142
3.2 计算机结构142
3.2.1 图灵机和BrainFuck语言143
3.2.2 《人力资源机器》游戏144
3.2.3 X86-64体系结构145
3.2.4 Go汇编中的伪寄存器146
3.2.5 X86-64指令集147
3.3 常量和全局变量150
3.3.1 常量150
3.3.2 全局变量150
3.3.3 变量的内存布局156
3.3.4 标识符规则和特殊标志157
3.3.5 小结158
3.4 函数158
3.4.1 基本语法158
3.4.2 函数参数和返回值160
3.4.3 参数和返回值的内存布局161
3.4.4 函数中的局部变量163
3.4.5 调用其他函数165
3.4.6 宏函数166
3.5 控制流167
3.5.1 顺序执行167
3.5.2 if巭goto跳转169
3.5.3 for循环171
3.6 再论函数172
3.6.1 函数调用规范172
3.6.2 高级汇编语言173
3.6.3 PCDATA和FUNCDATA176
3.6.4 方法函数177
3.6.5 递归函数:1到n求和178
3.6.6 闭包函数180
3.7 汇编语言的威力182
3.7.1 系统调用182
3.7.2 直接调用C函数184
3.7.3 AVX指令185
3.8 例子:Goroutine ID187
3.8.1 故意设计没有goid187
3.8.2 纯Go方式获取goid187
3.8.3 从g结构体获取goid189
3.8.4 获取g结构体对应的接口对象190
3.8.5 goid的应用:局部存储192
3.9 Delve调试器194
3.9.1 Delve入门194
3.9.2 调试汇编程序198
3.10 补充说明201
第4章 RPC和Protobuf203
4.1 RPC入门203
4.1.1 RPC版“Hello,World”203
4.1.2 更安全的RPC接口205
4.1.3 跨语言的RPC207
4.1.4 HTTP上的RPC209
4.2 Protobuf210
4.2.1 Protobuf入门210
4.2.2 定制代码生成插件212
4.2.3 自动生成完整的RPC代码215
4.3 玩转RPC218
4.3.1 客户端RPC的实现原理218
4.3.2 基于RPC实现监视功能220
4.3.3 反向RPC222
4.3.4 上下文信息223
4.4 gRPC入门224
4.4.1 gRPC技术栈225
4.4.2 gRPC入门225
4.4.3 gRPC流227
4.4.4 发布和订阅模式229
4.5 gRPC进阶233
4.5.1 证书认证233
4.5.2 Token认证236
4.5.3 截取器238
4.5.4 和Web服务共存240
4.6 gRPC和Protobuf扩展241
4.6.1 验证器241
4.6.2 REST接口244
4.6.3 Nginx246
4.7 pbgo:基于Protobuf的框架246
4.7.1 Protobuf扩展语法246
4.7.2 插件中读取扩展信息248
4.7.3 生成REST代码249
4.7.4 启动REST服务250
4.8 grpcurl工具251
4.8.1 启动反射服务251
4.8.2 查看服务列表252
4.8.3 服务的方法列表253
4.8.4 获取类型信息253
4.8.5 调用方法254
4.9 补充说明255
第5章 Go和Web256
5.1 Web开发简介256
5.2 请求路由260
5.2.1 httprouter260
5.2.2 原理262
5.2.3 压缩检索树创建过程263
5.3 中间件267
5.3.1 代码泥潭267
5.3.2 使用中间件剥离非业务逻辑269
5.3.3 更优雅的中间件写法272
5.3.4 哪些事情适合在中间件中做273
5.4 请求校验274
5.4.1 重构请求校验函数275
5.4.2 用请求校验器解放体力劳动276
5.4.3 原理277
5.5 Database和数据库打交道279
5.5.1 从database巭sql讲起279
5.5.2 提高生产效率的ORM和SQL Builder281
5.5.3 脆弱的数据库283
5.6 服务流量限制285
5.6.1 常见的流量限制手段287
5.6.2 原理289
5.6.3 服务瓶颈和QoS291
5.7 常见大型Web项目分层291
5.8 接口和表驱动开发297
5.8.1 业务系统的发展过程297
5.8.2 使用函数封装业务流程298
5.8.3 使用接口来做抽象298
5.8.4 接口的优缺点301
5.8.5 表驱动开发303
5.9 灰度发布和A巭B测试303
5.9.1 通过分批次部署实现灰度发布304
5.9.2 通过业务规则进行灰度发布305
5.9.3 如何实现一套灰度发布系统306
5.10 补充说明310
第6章 分布式系统311
6.1 分布式ID生成器311
6.1.1 worker_id分配312
6.1.2 开源实例313
6.2 分布式锁316
6.2.1 进程内加锁317
6.2.2 尝试锁317
6.2.3 基于Redis的setnx319
6.2.4 基于ZooKeeper321
6.2.5 基于etcd321
6.2.6 如何选择合适的锁322
6.3 延时任务系统323
6.3.1 定时器的实现323
6.3.2 任务分发325
6.3.3 数据再平衡和幂等考量326
6.4 分布式搜索引擎327
6.4.1 搜索引擎328
6.4.2 异构数据同步336
6.5 负载均衡337
6.5.1 常见的负载均衡思路337
6.5.2 基于洗牌算法的负载均衡338
6.5.3 ZooKeeper集群的随机节点挑选问题340
6.5.4 负载均衡算法效果验证340
6.6 分布式配置管理341
6.6.1 场景举例341
6.6.2 使用etcd实现配置更新342
6.6.3 配置膨胀345
6.6.4 配置版本管理345
6.6.5 客户端容错345
6.7 分布式爬虫346
6.7.1 基于colly的单机爬虫346
6.7.2 分布式爬虫347
6.7.3 结合nats和colly的消息生产350
6.7.4 结合colly的消息消费352
6.8 补充说明353
附录A 使用Go语言常遇到的问题354
附录B 有趣的代码片段363
热门推荐
- 29916.html
- 398617.html
- 3020998.html
- 1092410.html
- 3360040.html
- 2790208.html
- 2409323.html
- 1238682.html
- 1049058.html
- 3477302.html
- http://www.ickdjs.cc/book_3679658.html
- http://www.ickdjs.cc/book_2184555.html
- http://www.ickdjs.cc/book_2305909.html
- http://www.ickdjs.cc/book_3678175.html
- http://www.ickdjs.cc/book_1335172.html
- http://www.ickdjs.cc/book_644021.html
- http://www.ickdjs.cc/book_3031853.html
- http://www.ickdjs.cc/book_1659448.html
- http://www.ickdjs.cc/book_414615.html
- http://www.ickdjs.cc/book_1025417.html