企業級Go項目開發實戰 作者:孔令飛
出版社:機械工業出版社
出版日期:2023-01-01
語言:簡體中文 規格:平裝 / 639頁 / 19 x 26 x 3.2 cm / 普通級/ 1-1
圖書介紹 - 資料來源:博客來 目前評分: 評分:
圖書名稱:企業級Go項目開發實戰
內容簡介
這是一本手把手教讀者如何零基礎快速掌握企業級Go專案全流程開發的實戰性著作。
內容初稿源於極客時間上的專欄(有超過25000人付費學習),圖書內容在專欄的基礎上做了全面的更新和大量的補充。
作者是騰訊雲的技術專家,有多年的企業級Go專案開發經驗。全書圍繞一個可部署、可運行的企業級Go應用(附源碼,可二次開發)展開,覆蓋專案全生命週期的所有環節,不僅將每個環節涉及的原理、步驟講解得非常詳細,而且把專案涉及的Go語言知識點全部娓娓道來。每個知識點都朝著*佳實踐方向去設計,採用了業界共識程度*高的Go包、Go設計模式、Go開發規範、Go簡潔架構等,不僅能讓讀者事半功倍地掌握企業級Go項目的開發方法,而且能學到一線大廠的實踐經驗。
本書內容翔實,篇幅較大,一共31章,分為六個部分:部分是專案開始前的準備工作,包括貫穿全書的實戰專案IAM的介紹與部署,以及Go開發環境的搭建;第二至六部分詳細講解了專案的設計、管理、開發、測試、部署等。包含了規範設計、文檔編寫、開發流程管理、功能設計與實現、專案測試、性能優化、高可用、高安全、水準擴展等方方面面。旨在幫助讀者徹底學會如何構建企業級 Go 專案,並解決 Go 項目開發所面臨的各類問題。
作者介紹
孔令飛
騰訊雲容器技術專家,曾就職於聯想和Red Hat,擁有多年Go專案開發和管理經驗。
雲計算技術專家,在雲計算領域有非常豐富的實踐經驗。Kubernetes社區貢獻者,對Kubernetes、Docker、Serverless、微服務等技術有深入的理解。
騰訊學院特約講師,極客時間《Go 語言專案開發實戰》專欄作者,掘金《基於 Go 語言構建企業級的 RESTful API 服務》專欄作者。
目錄
第一部分 項目準備
第1章 Go開發環境準備2
1.1 機器選擇2
1.1.1 開發機選擇3
1.1.2 辦公機選擇3
1.2 Windows終端模擬器安裝和配置3
1.3 Linux伺服器申請和配置4
1.3.1 Linux伺服器申請4
1.3.2 登錄Linux伺服器5
1.3.3 Linux伺服器配置6
1.3.4 依賴安裝和配置8
1.4 Go編譯環境安裝和配置9
1.4.1 Go編譯工具安裝和配置10
1.4.2 Protobuf編譯環境安裝11
1.5 Go IDE安裝和配置12
1.6 本章總結14
第2章 快速部署IAM系統15
2.1 為什麼選擇IAM系統作為實戰項目15
2.2 IAM系統概述16
2.2.1 IAM資源授權流程16
2.2.2 IAM系統架構介紹17
2.2.3 通過使用流程理解架構18
2.3 下載IAM項目代碼20
2.4 安裝和配置資料庫21
2.4.1 配置scripts/install/environment.sh21
2.4.2 安裝和配置MariaDB21
2.4.3 安裝和配置Redis22
2.4.4 安裝和配置MongoDB22
2.5 安裝和配置IAM系統24
2.5.1 準備工作25
2.5.2 安裝和配置iam-apiserver28
2.5.3 安裝iamctl32
2.5.4 安裝和配置iam-authz-server34
2.5.5 安裝和配置iam-pump36
2.5.6 安裝和配置 iam-watcher38
2.5.7 安裝 man 檔39
2.5.8 測試IAM系統是否安裝成功40
2.6 彩蛋:一鍵安裝40
2.7 本章總結41
第二部分 項目設計
第3章 規範設計44
3.1 有哪些地方需要制定規範44
3.2 開源規範45
3.2.1 開源協議概述45
3.2.2 開源協議選擇46
3.2.3 開源規範有什麼47
3.2.4 開源規範詳細內容47
3.2.5 運營開源項目48
3.3 文檔規範49
3.3.1 README 文檔規範49
3.3.2 項目文檔規範50
3.3.3 API文檔規範51
3.4 Commit Message規範53
3.4.1 Commit Message規範有哪些53
3.4.2 與Commit Message相關的3個重要內容59
3.4.3 Commit Message規範自動化66
3.5 版本規範67
3.5.1 什麼是語義化版本規範67
3.5.2 語義化版本規範示例69
3.5.3 如何確定版本號69
3.6 本章總結69
第4章 目錄結構設計71
4.1 如何規範目錄71
4.2 平鋪式目錄結構72
4.3 結構化目錄結構73
4.3.1 Go應用:主要存放前後端代碼75
4.3.2 Go應用:主要存放測試相關的檔和代碼78
4.3.3 Go應用:存放與應用部署相關的文件78
4.3.4 項目管理:存放管理Go項目的各類檔79
4.3.5 文檔:主要存放項目的各類文檔80
4.3.6 不建議的目錄82
4.4 一些建議82
4.5 本章總結83
第5章 工作流設計84
5.1 集中式工作流84
5.2 功能分支工作流85
5.3 Git Flow工作流88
5.3.1 Git Flow的5種分支88
5.3.2 Git Flow開發流程88
5.4 Forking工作流91
5.5 本章總結93
第6章 研發流程設計95
6.1 如何設計Go項目的研發流程95
6.2 在設計研發流程時,需要關注哪些點96
6.3 業界相對標準的研發流程96
6.3.1 需求階段96
6.3.2 設計階段98
6.3.3 開發階段98
6.3.4 測試階段100
6.3.5 發佈階段100
6.3.6 運營階段102
6.4 角色與分工102
6.5 如何管理應用的生命週期104
6.6 應用生命週期管理技術有哪些104
6.7 研發模式105
6.8 CI/CD:自動化構建和部署應用106
6.8.1 持續集成107
6.8.2 持續交付107
6.8.3 持續部署107
6.9 DevOps:研發運維一體化108
6.9.1 AIOps:智能運維108
6.9.2 ChatOps:聊著天就把事情給辦了109
6.9.3 GitOps:一種實現雲原生的持續交付模型109
6.9.4 NoOps:無運維110
6.10 如何選擇合適的應用生命週期 管理技術111
6.11 本章總結111
第7章 如何寫出優雅的Go項目112
7.1 優雅Go項目實現思路112
7.2 編寫高品質的Go應用113
7.2.1 代碼結構114
7.2.2 代碼規範115
7.2.3 代碼品質116
7.2.4 程式設計哲學119
7.2.5 軟體設計方法124
7.3 高效管理項目125
7.3.1 高效的開發流程125
7.3.2 使用Makefile管理項目126
7.3.3 自動生成代碼126
7.3.4 善於借助工具127
7.3.5 對接CI/CD127
7.4 編寫高品質的項目文檔128
7.5 本章總結128
第8章 Go語言設計模式?130
8.1 創建型模式131
8.1.1 單例模式131
8.1.2 工廠模式133
8.2 行為型模式136
8.2.1 策略模式136
8.2.2 範本模式138
8.3 結構型模式139
8.3.1 代理模式139
8.3.2 選項模式140
8.4 本章總結144
第三部分 項目管理
第9章 如何編寫Makefile148
9.1 規劃Makefile要實現的功能149
9.2 設計合理的Makefile結構151
9.3 掌握Makefile編寫技巧153
9.3.1 善用萬用字元和自動變數153
9.3.2 善用函數153
9.3.3 依賴需要用到的工具154
9.3.4 把常用功能放在/Makefile中,不常用的放在分類Makefile中154
9.3.5 編寫可擴展的Makefile155
9.3.6 將所有輸出存放在一個目錄下,方便清理和查找156
9.3.7 使用帶層級的命名方式156
9.3.8 做好目標拆分157
9.3.9 設置OPTIONS157
9.3.10 定義環境變數158
9.3.11 自己調用自己159
9.4 本章總結159
第10章 IAM項目研發流程實戰160
10.1 開發階段160
10.1.1 代碼開發160
10.1.2 代碼提交165
10.2 測試階段167
10.3 IAM項目的Makefile項目管理技巧168
10.3.1 Makefile help命令自動解析169
10.3.2 在options中指定變數值169
10.3.3 自動生成CHANGELOG169
10.3.4 自動生成版本號169
10.3.5 保持行為一致170
10.4 本章總結171
第11章 靜態代碼檢查172
11.1 為什麼選擇golangci-lint做靜態代碼檢查172
11.2 golangci-lint命令173
11.3 golangci-lint配置175
11.4 如何使用golangci-lint進行靜態代碼檢查178
11.5 golangci-lint使用技巧180
11.6 本章總結182
第12章 生成Swagger API文檔183
12.1 Swagger介紹183
12.2 Swagger和OpenAPI的區別184
12.3 用go-swagger來生成Swagger API文檔184
12.3.1 安裝swagger工具185
12.3.2 swagger命令列工具介紹185
12.4 如何使用swagger命令生成Swagger文檔186
12.4.1 解析注釋生成Swagger文檔186
12.4.2 go-swagger其他常用功能介紹192
12.5 IAM Swagger文檔194
12.6 本章總結195
第四部分 項目開發
第13章 錯誤處理198
13.1 錯誤碼設計198
13.1.1 期望錯誤碼實現的功能199
13.1.2 常見的錯誤碼實現方式199
13.1.3 錯誤碼設計建議201
13.1.4 業務Code碼設計201
13.1.5 如何設置HTTP狀態碼202
13.2 IAM項目錯誤碼設計規範203
13.2.1 錯誤碼設計規範203
13.2.2 錯誤資訊規範說明204
13.2.3 IAM API返回值說明204
13.3 錯誤包204
13.3.1 錯誤包需要具有哪些功能204
13.3.2 錯誤包的實現208
13.3.3 如何記錄錯誤212
13.4 一個錯誤碼的具體實現215
13.5 錯誤碼實際使用示例218
13.6 本章總結219
第14章 日誌處理220
14.1 如何設計日誌包220
14.1.1 基礎功能220
14.1.2 高級功能222
14.1.3 可選功能224
14.1.4 設計時需要關注的點226
14.2 如何記錄日誌226
14.2.1 在何處列印日誌227
14.2.2 在哪個日誌級別列印日誌228
14.2.3 如何記錄日誌內容229
14.2.4 記錄日誌的佳實踐總結230
14.3 拓展內容:分散式日誌解決方案(EFK/ELK)230
14.4 有哪些優秀的開源日誌包231
14.4.1 標準庫log包232
14.4.2 glog232
14.4.3 logrus232
14.4.4 zap233
14.4.5 開源日誌包選擇233
14.5 從零開始編寫一個日誌包234
14.5.1 定義日誌級別和日誌選項234
14.5.2 創建Logger及各級別日誌列印方法236
14.5.3 將日誌記錄到支援的輸出中237
14.5.4 自訂日誌輸出格式239
14.5.5 測試日誌包239
14.6 IAM項目日誌包設計實戰240
14.7 本章總結244
第15章 GORM ORM應用245
15.1 GORM基礎知識245
15.2 通過示例學習GORM246
15.2.1 自動遷移表結構248
15.2.2 插入表記錄248
15.2.3 獲取符合條件的記錄248
15.2.4 更新表記錄248
15.2.5 刪除表記錄249
15.2.6 獲取表記錄清單249
15.3 GORM常用操作講解249
15.3.1 模型定義250
15.3.2 連接資料庫251
15.3.3 創建記錄251
15.3.4 刪除記錄252
15.3.5 更新記錄253
15.3.6 查詢資料253
15.3.7 高級查詢254
15.3.8 原生SQL255
15.3.9 GORM鉤子255
15.4 iam-apiserver中的CURD操作256
15.5 本章總結260
第16章 Web服務功能實現261
16.1 Web服務的核心功能261
16.1.1 基礎功能262
16.1.2 高級功能262
16.2 Web框架為什麼選擇Gin263
16.3 Gin是如何支援Web服務的基礎功能的264
16.3.1 HTTP/HTTPS支持268
16.3.2 JSON資料格式支援269
16.3.3 路由匹配270
16.3.4 路由分組270
16.3.5 一進程多服務271
16.3.6 參數解析、參數校驗、邏輯處理、返回結果272
16.4 Gin是如何支援Web服務的高級功能的274
16.4.1 中介軟體274
16.4.2 認證、RequestID、跨域277
16.4.3 優雅關停277
16.5 本章總結279
第17章 IAM應用構建280
17.1 如何構建應用框架280
17.2 應用構建三劍客281
17.2.1 命令列參數解析工具:Pflag281
17.2.2 配置解析神器:Viper285
17.2.3 現代化的命令列框架:Cobra291
17.3 構建應用的基礎:應用的三大基本功能297
17.4 iam-apiserver是如何構建應用框架的298
17.5 App包的設計和實現300
17.5.1 構建應用301
17.5.2 命令列程式構建301
17.5.3 命令列參數解析302
17.5.4 設定檔解析305
17.6 IAM應用構建的優秀特性306
17.7 構建應用的注意事項307
17.8 本章總結307
第18章 IAM認證功能實現309
18.1 認證與授權的區別309
18.2 4種基本的認證方式310
18.2.1 基礎認證310
18.2.2 摘要認證311
18.2.3 開放授權認證312
18.2.4 權杖認證314
18.3 基於JWT的Token認證機制實現314
18.3.1 JWT簡介314
18.3.2 JWT認證流程315
18.3.3 JWT格式315
18.4 如何設計IAM項目的認證功能318
18.5 IAM項目是如何實現Basic 認證的320
18.6 IAM項目是如何實現Bearer 認證的326
18.6.1 iam-authz-server Bearer認證
詳細資料
ISBN:9787111716341 規格:平裝 / 639頁 / 19 x 26 x 3.2 cm / 普通級 / 1-1 出版地:中國
66折: $ 165
作者:大衛.希門內斯
出版社:木馬文化事業有限公司
出版日期:2021-12-08
66折: $ 277
66折: $ 1214
66折: $ 693
$ 190
作者:曾寶儀
出版社:遠見天下文化出版股份有限公司
出版日期:2024-10-31
$ 331
作者:佩瑪.丘卓
出版社:心靈工坊文化事業股份有限公司
出版日期:2024-06-07
$ 300
作者:青山千鶴子、楊双子
出版社:春山出版有限公司
出版日期:2020-04-01
$ 300
$ 190
作者:護玄
出版社:蓋亞文化有限公司
出版日期:2024-10-16
$ 236
作者:廣嶋玲子
出版社:親子天下
出版日期:2024-10-31
$ 284
作者:慈濟教師聯誼會(彙編)
出版社:發光體
出版日期:2024-09-25
$ 300