首页  软件  游戏  图书  电影  电视剧

请输入您要查询的图书:

 

图书 GO底层原理与工程化实践
内容
编辑推荐
1)知名企业资深Go开发专家联合撰写,从原理到实践,助你掌握Go语言精髓,授你项目实战经验
2)深入剖析Go语言的核心原理,从0到1带你实现高性能高可用的Go服务开发,详细介绍10多个线上典型问题以及解决思路
内容推荐
全书分为2篇:
1.第1篇详细介绍Go语言高性能优势是如何实现的,包括经典的GMP调度模型,Go语言调度器的实现,垃圾回收,以及如何基于管道、锁等并发编程。
2.第二篇主要是项目实战,手把手带领读者从0开始搭建高性能、高稳定的Go服务。以及在面对线上问题时,如何调试、分析、解决。
通过学习本书,读者对Go语言的核心——高并发会有一个深刻的认识,具备一定的Go并发编程经验,能够独立完成高性能、高稳定Go服务的架构设计,并且能够基于一些工具进行Go线上问题分析与性能调优。
目录
目    录    Contents<br />前言<br />第1章  为什么要了解Go底层1<br />1.1  Go服务怎么出现502状态码了1<br />1.1.1  服务超时为什么导致502状态码1<br />1.1.2  基于context的超时控制4<br />1.2  Go服务为什么没响应了7<br />1.2.1  谁阻塞了协程7<br />1.2.2  写管道可以不阻塞协程吗10<br />1.3  Uber如何通过GC调优节约<br />     7万个内核11<br />1.3.1  GC概述11<br />1.3.2  Uber半自动化GC调优13<br />1.4  Go语言进阶路线15<br />1.4.1  Go语言快速入门16<br />1.4.2  Go高并发编程20<br />1.4.3  Go语言项目实战22<br />1.5  本章小结24<br />第2章  Go语言并发模型25<br />2.1  GMP调度模型25<br />2.1.1  Go语言并发编程入门25<br />2.1.2  GMP调度模型概述27<br />2.1.3  深入理解GMP调度模型30<br />2.2  协程管理33<br />2.2.1  基础补充33<br />2.2.2  协程创建37<br />2.2.3  协程切换40<br />2.2.4  协程栈会溢出吗42<br />2.2.5  协程退出45<br />2.3  调度器46<br />2.3.1  调度器实现原理46<br />2.3.2  时间片调度49<br />2.3.3  基于协作的抢占式调度52<br />2.3.4  基于信号的抢占式调度53<br />2.4  本章小结54<br />第3章  调度器触发时机55<br />3.1  网络I/O56<br />3.1.1  探索Go语言网络I/O56<br />3.1.2  Go语言网络I/O与调度器59<br />3.1.3  如何实现网络读写超时62<br />3.2  管道65<br />3.2.1  管道的基本用法65<br />3.2.2  管道与调度器67<br />3.3  定时器70<br />3.3.1  定时器的基本用法70<br />3.3.2  定时器与调度器73<br />3.4  系统调用75<br />3.4.1  系统调用会阻塞线程吗75<br />3.4.2  系统调用与调度器77<br />3.5  本章小结79<br />第4章  Go语言并发编程80<br />4.1  什么是并发问题80<br />4.2  CSP并发模型84<br />4.2.1  基于管道-协程的CSP模型84<br />4.2.2  管道与select关键字86<br />4.2.3  如何实现无限缓存管道89<br />4.3  基于锁的协程同步91<br />4.3.1  乐观锁91<br />4.3.2  悲观锁93<br />4.4  如何并发操作map95<br />4.4.1  map的并发问题96<br />4.4.2  并发散列表sync.Map98<br />4.5  并发控制sync.WaitGroup101<br />4.6  并发对象池sync. Pool103<br />4.7  如何实现单例模式104<br />4.8  并发检测105<br />4.9  本章小结106<br />第5章  GC原理、调度与调优108<br />5.1  内存管理108<br />5.1.1  如何设计动态内存分配器108<br />5.1.2  Go语言内存分配器110<br />5.1.3  Go语言内存管理111<br />5.1.4  内存逃逸113<br />5.2  三色标记与写屏障114<br />5.2.1  三色标记115<br />5.2.2  写屏障117<br />5.3  标记与清理119<br />5.3.1  垃圾回收执行阶段120<br />5.3.2  经典的stopTheWorld123<br />5.3.3  辅助标记125<br />5.3.4  内存清理127<br />5.4  GC调度与GC调优128<br />5.4.1  GC触发时机128<br />5.4.2  GC协程调度模式131<br />5.4.3  缓存框架bigcache中的<br />    GC调优133<br />5.5  本章小结135<br />第6章  手把手教你搭建Go项目136<br />6.1  Go项目架构设计 136<br />6.1.1  分层架构136<br />6.1.2  代码布局138<br />6.1.3  命令管理cobra140<br />6.1.4  配置管理Viper142<br />6.2  Web框架Gin145<br />6.2.1  RESTful API145<br />6.2.2  引入Gin框架146<br />6.2.3  中间件149<br />6.2.4  如何记录访问日志152<br />6.3  日志与全链路追踪154<br />6.3.1  引入日志框架Zap154<br />6.3.2  基于context的全链路追踪157<br />6.3.3  基于协程ID的全链路追踪159<br />6.4  访问数据库161<br />6.4.1  引入Gorm框架161<br />6.4.2  CURD165<br />6.4.3  事务170<br />6.4.4  如何记录Trace日志172<br />6.5  HTTP调用173<br />6.5.1  go-resty框架概述174<br />6.5.2  请求追踪176<br />6.5.3  长连接还是短连接178<br />6.5.4  如何记录Trace日志180<br />6.6  单元测试181<br />6.6.1  Go语言中的单元测试181<br />6.6.2  引入单元测试183<br />6.7  本章小结184<br />第7章  高性能Go服务开发186<br />7.1  分库分表186<br />7.1.1  分库分表基本原理186<br />7.1.2  基于Gorm的分表189<br />7.2  使用Redis缓存191<br />7.2.1  go-redis的基本操作191<br />7.2.2  基于Redis的性能优化193<br />7.3  使用本地缓存196<br />7.3.1  自己实现一个LRU缓存196<br />7.3.2  基于bigcache的性能优化198<br />7.4  资源复用200<br />7.4.1  协程复用之fasthttp200<br />7.4.2  连接复用之连接池203<br />7.4.3  对象复用之对象池205<br />7.5  其他207<br />7.5.1  异步化处理207<br />7.5.2  无锁编程209<br />7.6  本章小结210<br />第8章  高可用Go服务开发211<br />8.1  可用性定义与高可用三板斧 211<br />8.1.1  可用性定义211<br />8.1.2  高可用三板斧213<br />8.2  流量治理组件Sentinel215<br />8.2.1  Sentinel快速入门215<br />8.2.2  流量控制218<br />8.2.3  系统自适应流量控制220<br />8.2.4  熔断降级222<br />8.2.5  Sentinel原理浅析224<br />8.3  Go服务监控225<br />8.3.1  运行时监控225<br />8.3.2  自定义监控228<br />8.4  其他231<br />8.4.1  超时控制231<br />8.4.2  错误处理234<br />8.5  本章小结236<br />第9章  Go语言微服务入门238<br />9.1  Go语言RPC标准库238<br />9.1.1  使用入门238<br />9.1.2  原理浅析240<br />9.2  微服务框架Kitex242<br />9.2.1  使用入门243<br />9.2.2  可扩展性245<br />9.2.3  服务治理248<br />9.3  本章小结250<br />第10章  实现Go服务平滑升级251<br />10.1  服务升级导致502状态码251<br />10.2  Go语言信号处理框架252<br />10.3  Go服务平滑退出256<br />10.4  基于gracehttp的Go服务<br />    平滑升级258<br />10.5  本章小结261<br />第11章  Go服务调试262<br />11.1  Go程序分析利器pprof262<br />11.1.1  pprof概述262<br />11.1.2  内存指标分析264<br />11.1.3  CPU指标分析266<br />11.1.4  锁与阻塞指标分析268<br />11.2  性能分析工具Trace269<br />11.3  使用dlv调试Go程序270<br />11.3.1  Go语言调试工具dlv271<br />11.3.2  dlv调试实战272<br />11.4  本章小结276<br />第12章  线上服务实战278<br />12.1  两种导致502状态码的情况278<br />12.1.1  panic异常278<br />12.1.2  长连接为什么会导致502<br />    状态码284<br />12.2  意想不到的并发问题287<br />12.2.1  并发问题引起的JSON<br />    序列化异常287<br />12.2.2  并发问题引起的服务<br />    发现故障290<br />12.3  HTTP服务假死问题292<br />12.3.1  写日志阻塞请求293<br />12.3.2  防缓存穿透组件导致的<br />    服务死锁295<br />12.4  HTTP客户端引发的问题297<br />12.4.1  长连接还是短连接297<br />12.4.2  偶现Connection reset by<br />    peer问题299<br />12.5  类型不匹配导致的线上问题301<br />12.5.1  一个双引号引起的线上事故301<br />12.5.2  自定义JSON序列化与<br />    反序列化302<br />12.6  其他问题305<br />12.6.1  怎么总是空指针异常305<br />12.6.2  诡异的超时问题307<br />12.7  本章小结309
标签
缩略图
书名 GO底层原理与工程化实践
副书名
原作名
作者 李乐 陈雷
译者
编者
绘者
出版社 机械工业出版社
商品编码(ISBN) 9787111758266
开本 16开
页数 310
版次 1
装订
字数 433
出版时间 2024-07-01
首版时间
印刷时间 2024-06-01
正文语种
读者对象
适用范围
发行范围
发行模式 实体书
首发网站
连载网址
图书大类 教育考试-考试-计算机类
图书小类
重量
CIP核字
中图分类号 TP312
丛书名
印张
印次 1
出版地
整理
媒质
用纸
是否注音
影印版本
出版商国别
是否套装
著作权合同登记号
版权提供者
定价
印数
出品方
作品荣誉
主角
配角
其他角色
一句话简介
立意
作品视角
所属系列
文章进度
内容简介
作者简介
目录
文摘
安全警示 适度休息有益身心健康,请勿长期沉迷于阅读小说。
随便看

 

兰台网图书档案馆全面收录古今中外各种图书,详细介绍图书的基本信息及目录、摘要等图书资料。

 

Copyright © 2004-2025 xlantai.com All Rights Reserved
更新时间:2025/5/19 4:29:58