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