Go Web編程實(shí)戰(zhàn)派——從入門到精通
定 價:128 元
- 作者:廖顯東
- 出版時間:2021/4/1
- ISBN:9787121408007
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP312
- 頁碼:536
- 紙張:
- 版次:01
- 開本:16開
本書涵蓋從Go語言入門到Go Web開發(fā)高手所需的核心知識、方法和技巧,共分4篇。第1篇“Go語言入門”,介紹Go語言的基礎(chǔ)語法,既使沒有Go語言基礎(chǔ)的讀者也可以學(xué)習(xí)本書。第2篇“Go Web基礎(chǔ)入門”,包括3章:Go Web開發(fā)基礎(chǔ)、接收和處理Go Web請求、用Go訪問數(shù)據(jù)庫。本篇能使讀者快速掌握用Go語言進(jìn)行Web開發(fā)的基礎(chǔ)知識。第3篇“Go Web高級應(yīng)用”,包括4章:Go高級網(wǎng)絡(luò)編程、Go文件處理、Go并發(fā)編程、Go RESTful API接口開發(fā)。本篇能使讀者用Go語言快速開發(fā)各種Web應(yīng)用。第4篇“Go Web項目實(shí)戰(zhàn)”,包括2章:【實(shí)戰(zhàn)】開發(fā)一個B2C電子商務(wù)系統(tǒng)、【實(shí)戰(zhàn)】用Docker部署Go Web應(yīng)用。本篇通過實(shí)例介紹了開發(fā)一個B2C電子商務(wù)系統(tǒng)的全過程,包括開發(fā)商品展示、購物車、結(jié)算、支付等模塊的詳細(xì)講解,讓讀者真正了解大型B2C電子商務(wù)系統(tǒng)的架構(gòu)原理及實(shí)現(xiàn)方法,并開放了源代碼;用Docker實(shí)戰(zhàn)部署Go Web應(yīng)用,幫助讀者向Go Web開發(fā)“精通”級別邁進(jìn)。本書可作為Go語言初學(xué)者、Web開發(fā)工程師的自學(xué)用書,也可作為培訓(xùn)機(jī)構(gòu)和相關(guān)院校的教材。
廖顯東高級軟件架構(gòu)師,全棧開發(fā)者,技術(shù)極客,Gopher,開源愛好者。畢業(yè)于河海大學(xué),先后就職于蘇寧易購等多家大型公司。多年軟件開發(fā)與團(tuán)隊管理經(jīng)驗,精通Java、JavaScript、C/C++/C#、Python、PHP等開發(fā)語言。對Go語言、Rust語言等流行開發(fā)語言有深入實(shí)踐和研究。對大型電子商務(wù)系統(tǒng)開發(fā)、高并發(fā)架構(gòu)、分布式架構(gòu)、微服務(wù)、大數(shù)據(jù)、人工智能算法等領(lǐng)域有深入實(shí)踐和研究。
第1篇 Go語言入門
第1章 Go基礎(chǔ)入門 2
1.1 安裝Go 2
1.2 【實(shí)戰(zhàn)】開啟Go的第一個程序 5
1.3 Go基礎(chǔ)語法與使用 8
1.4 Go數(shù)據(jù)類型 29
1.5 函數(shù) 52
1.6 Go面向?qū)ο缶幊?63
1.7 接口 68
1.8 反射 75
1.9 goroutine簡介 80
1.10 單元測試 81
1.11 Go編譯與工具 83
1.12 小結(jié) 91
第2篇 Go Web基礎(chǔ)入門
第2章 Go Web開發(fā)基礎(chǔ) 94
2.1 【實(shí)戰(zhàn)】開啟Go Web的第1個程序 94
2.2 Web程序運(yùn)行原理簡介 95
2.2.1 Web基本原理 95
2.2.2 HTTP簡介 97
2.2.3 HTTP請求 97
2.2.4 HTTP響應(yīng) 100
2.2.5 URI與URL 104
2.2.6 HTTPS簡介 106
2.2.7 HTTP 2簡介 106
2.2.8 Web應(yīng)用程序的組成 108
2.3 【實(shí)戰(zhàn)】初探Go語言的net/http包 110
2.3.1 創(chuàng)建簡單的服務(wù)器端 110
2.3.2 創(chuàng)建簡單的客戶端 114
2.4 使用Go語言的html/template包 118
2.4.1 了解模板原理 118
2.4.2 使用html/template包 120
2.5 小結(jié) 131
第3章 接收和處理Go Web請求 132
3.1 【實(shí)戰(zhàn)】創(chuàng)建一個簡單的Go Web服務(wù)器 132
3.2 接收請求 134
3.2.1 ServeMux和DefaultServeMux 134
3.2.2 處理器和處理器函數(shù) 146
3.2.3 串聯(lián)多個處理器和處理器函數(shù) 150
3.2.4 構(gòu)建模型 151
3.2.5 生成HTML表單 153
3.3 處理請求 155
3.3.1 了解Request結(jié)構(gòu)體 155
3.3.2 請求URL 158
3.3.3 請求頭 159
3.3.4 請求體 160
3.3.5 處理HTML表單 161
3.3.6 了解ResponseWriter原理 164
3.4 了解session和cookie 171
3.4.1 session和cookie的簡介 171
3.4.2 Go與cookie 173
3.4.3 Go使用session 176
3.5 小結(jié) 181
第4章 用Go訪問數(shù)據(jù)庫 182
4.1 MySQL的安裝及使用 182
4.1.1 MySQL簡介 182
4.1.2 MySQL的安裝 183
4.1.3 MySQL基礎(chǔ)入門 183
4.1.4 用Go訪問MySQL 193
4.2 Redis的安裝及使用 203
4.2.1 Redis的安裝 203
4.2.2 Redis基礎(chǔ)入門 203
4.2.3 Go訪問Redis 208
4.3 MongoDB的安裝及使用 216
4.3.1 MongoDB的安裝 216
4.3.2 MongoDB基礎(chǔ)入門 217
4.3.3 Go訪問MongoDB 223
4.4 Go的常見ORM庫 237
4.4.1 什么是ORM 237
4.4.2 Gorm(性能極好的ORM庫)的安裝及使用 238
4.4.3 Beego ORM——Go語言的ORM框架 242
4.5 小結(jié) 247
第3篇 Go Web高級應(yīng)用
第5章 Go高級網(wǎng)絡(luò)編程 250
5.1 Go Socket編程 250
5.1.1 什么是Socket 250
5.1.2 客戶端Dial()函數(shù)的使用 254
5.1.3 客戶端DialTCP()函數(shù)的使用 256
5.1.4 UDP Socket的使用 261
5.1.5 【實(shí)戰(zhàn)】用Go Socket實(shí)現(xiàn)一個簡易的聊天程序 265
5.2 Go RPC編程 270
5.2.1 什么是RPC 270
5.2.2 Go RPC的應(yīng)用 271
5.3 微服務(wù) 277
5.3.1 什么是微服務(wù) 277
5.3.2 【實(shí)戰(zhàn)】用gRPC框架構(gòu)建一個簡易的微服務(wù) 281
5.4 小結(jié) 286
第6章 Go文件處理 287
6.1 操作目錄與文件 287
6.1.1 操作目錄 287
6.1.2 創(chuàng)建文件 292
6.1.3 打開與關(guān)閉文件 293
6.1.4 讀寫文件 294
6.1.5 移動與重命名文件 299
6.1.6 刪除文件 299
6.1.7 復(fù)制文件 301
6.1.8 修改文件權(quán)限 304
6.1.9 文件鏈接 306
6.2 處理 XML 文件 307
6.2.1 解析XML文件 307
6.2.2 生成XML文件 310
6.3 處理JSON 文件 313
6.3.1 讀取JSON文件 313
6.3.2 生成JSON文件 315
6.4 處理正則表達(dá)式 316
6.4.1 正則表達(dá)式簡介 316
6.4.2 使用Go正則表達(dá)式 322
6.5 【實(shí)戰(zhàn)】從數(shù)據(jù)庫中導(dǎo)出一個CSV文件 329
6.6 處理Go日志記錄 332
6.7 小結(jié) 335
第7章 Go并發(fā)編程 336
7.1 并發(fā)與并行 336
7.2 進(jìn)程、線程和協(xié)程 338
7.3 Go并發(fā)模型簡介 340
7.4 用goroutine和通道實(shí)現(xiàn)并發(fā) 341
7.4.1 goroutine簡介 341
7.4.2 通道 343
7.5 用sync包實(shí)現(xiàn)并發(fā) 351
7.5.1 競態(tài) 351
7.5.2 互斥鎖 352
7.5.3 讀寫互斥鎖 354
7.5.4 sync.Once結(jié)構(gòu)體 358
7.5.5 同步等待組sync.WaitGroup 361
7.5.6 競態(tài)檢測器 364
7.6 用Go開發(fā)并發(fā)的Web應(yīng)用 366
7.6.1 【實(shí)戰(zhàn)】開發(fā)一個自增整數(shù)生成器 366
7.6.2 【實(shí)戰(zhàn)】開發(fā)一個并發(fā)的消息發(fā)送器 366
7.6.3 【實(shí)戰(zhàn)】開發(fā)一個多路復(fù)合計算器 367
7.6.4 【實(shí)戰(zhàn)】用select關(guān)鍵字創(chuàng)建多通道監(jiān)聽器 368
7.6.5 【實(shí)戰(zhàn)】用無緩沖通道阻塞主線 370
7.6.6 【實(shí)戰(zhàn)】用篩法求素數(shù) 371
7.6.7 【實(shí)戰(zhàn)】創(chuàng)建隨機(jī)數(shù)生成器 372
7.6.8 【實(shí)戰(zhàn)】創(chuàng)建一個定時器 373
7.6.9 【實(shí)戰(zhàn)】開發(fā)一個并發(fā)的Web爬蟲 374
7.7 小結(jié) 377
第8章 Go RESTful API接口開發(fā) 378
8.1 什么是RESTful API 378
8.2 Go流行Web框架的使用 382
8.2.1 為什么要用框架 382
8.2.2 Gin框架的使用 382
8.2.3 Beego框架的使用 395
8.3 【實(shí)戰(zhàn)】用Gin框架開發(fā)RESTful API 412
8.3.1 路由設(shè)計 412
8.3.2 數(shù)據(jù)表設(shè)計 412
8.3.3 模型代碼編寫 412
8.3.4 邏輯代碼編寫 413
8.4 【實(shí)戰(zhàn)】用Go開發(fā)OAuth 2.0接口 417
8.4.1 OAuth 2.0簡介 417
8.4.2 用Go開發(fā)OAuth 2.0接口的示例 418
8.5 小結(jié) 423
第4篇 Go Web項目實(shí)戰(zhàn)
第9章 【實(shí)戰(zhàn)】開發(fā)一個B2C電子商務(wù)系統(tǒng) 426
9.1 需求分析 426
9.2 系統(tǒng)設(shè)計 427
9.2.1 確定系統(tǒng)架構(gòu) 427
9.2.2 制定系統(tǒng)流程 428
9.3 設(shè)計軟件架構(gòu) 429
9.4 設(shè)計數(shù)據(jù)庫與數(shù)據(jù)表 430
9.5 搭建系統(tǒng)基礎(chǔ)架構(gòu) 431
9.6 前臺模塊開發(fā) 441
9.6.1 首頁模塊開發(fā) 443
9.6.2 注冊登錄模塊開發(fā) 450
9.6.3 用戶中心模塊開發(fā) 463
9.6.4 商品展示模塊開發(fā) 469
9.6.5 購物車模塊開發(fā) 474
9.6.6 收銀臺模塊開發(fā) 481
9.6.7 支付模塊開發(fā) 489
9.7 后臺模塊開發(fā) 493
9.7.1 登錄模塊開發(fā) 493
9.7.2 商品模塊開發(fā) 495
9.8 小結(jié) 499
第10章 用Docker部署Go Web應(yīng)用 500
10.1 了解Docker組件及原理 500
10.1.1 什么是Docker 500
10.1.2 為什么用Docker 502
10.1.3 Docker引擎 502
10.1.4 Docker構(gòu)架 503
10.1.5 Docker核心概念 503
10.1.6 Docker常用命令 504
10.2 安裝Docker 509
10.2.1 Linux Docker 安裝 509
10.2.2 Windows Docker 安裝 510
10.2.3 Mac OS X Docker 安裝 511
10.3 【實(shí)戰(zhàn)】用Docker運(yùn)行一個Go Web 應(yīng)用程序 512
10.3.1 為什么使用Docker運(yùn)行Go Web應(yīng)用程序 512
10.3.2 創(chuàng)建Go Web應(yīng)用程序 512
10.3.3 用Docker運(yùn)行一個Go Web應(yīng)用程序 513
10.4 【實(shí)戰(zhàn)】通過Docker-Compose快速部署 515
10.4.1 Docker-Compose 簡介 515
10.4.2 通過Docker-Compose實(shí)戰(zhàn)部署 516
10.5 【實(shí)戰(zhàn)】將Docker容器推送至服務(wù)器 520
10.5.1 到Docker Hub官網(wǎng)注冊賬號 520
10.5.2 同步本地和Docker hub的標(biāo)簽(tag) 520
10.5.3 推送鏡像到Docker Hub 521
10.5.4 訪問Docker Hub鏡像 521
10.5.5 使用發(fā)布的Docker Hub鏡像 522
10.6 小結(jié) 523