Go語言高級開發(fā)與實戰(zhàn)聚焦Go語言的高級開發(fā)技巧和應(yīng)用實戰(zhàn)。《Go語言高級開發(fā)與實戰(zhàn) 》共6章,分別為Go語言基礎(chǔ)實戰(zhàn)、Go語言高級編程技巧、Go Web編程、Go語言并發(fā)編程、分布式系統(tǒng)、Go語言秒殺系統(tǒng)實戰(zhàn)。Go語言高級開發(fā)與實戰(zhàn)簡潔而不失技術(shù)深度,內(nèi)容豐富全面,以極簡的文字介紹了復(fù)雜的案例,是學(xué)習(xí)Go語言高級開發(fā)的實用教程。
Go語言高級開發(fā)與實戰(zhàn)適合Go語言初學(xué)者、Go語言中高級開發(fā)人員、Web開發(fā)工程師閱讀,還可作為大中專院校相關(guān)專業(yè)和培訓(xùn)學(xué)校師生的學(xué)習(xí)用書。
目錄
前言
Go語言基礎(chǔ)實戰(zhàn)/
1.1Go語言基礎(chǔ)/
1.1.1基礎(chǔ)語法/
1.1.2變量/
1.1.3常量/
1.1.4運算符/
1.1.5流程控制語句/
1.2字符串實戰(zhàn)技巧/
1.2.1字符串基礎(chǔ)/
1.2.2中文字符串的截取/
1.2.3按單詞或字節(jié)反轉(zhuǎn)字
符串/
1.2.4生成隨機字符串/
1.2.5控制大小寫/
1.2.6去除字符串首尾的空格/
1.2.7生成CSV數(shù)據(jù)/
1.2.8解析CSV數(shù)據(jù)/
1.2.9獲取中文字符串/
1.2.10按指定函數(shù)分割字符串/
1.2.11合并與分割字符串/
1.2.12按照指定函數(shù)截取字
符串/
1.2.13【實戰(zhàn)】生成可下載的CSV
文件/
1.2.14【實戰(zhàn)】用Go運行Shell腳本
程序/
1.3數(shù)組和切片基礎(chǔ)技巧/
1.3.1數(shù)組和切片基礎(chǔ)/
1.3.2迭代處理數(shù)組/
1.3.3從數(shù)組中刪除元素/
1.3.4將數(shù)組轉(zhuǎn)換為字符串/
1.3.5檢查某個值是否在數(shù)
組中/
1.3.6查找一個元素在數(shù)組中的
位置/
1.3.7查找數(shù)組中最大值或最小值
元素/
1.3.8隨機打亂數(shù)組/
1.3.9刪除數(shù)組中重復(fù)的元素/
1.4數(shù)組高級技巧/
1.4.1一維數(shù)組的排序/
1.4.2二維數(shù)組的排序/
1.4.3多維數(shù)組聲明/
1.4.4多維數(shù)組遍歷/
1.4.5多維數(shù)組的查詢/
1.4.6多維數(shù)組的修改/
1.4.7三維數(shù)組生成器/
1.4.8【實戰(zhàn)】從數(shù)據(jù)庫中獲取數(shù)據(jù)并
進行合并處理和導(dǎo)出/
1.5map常見實戰(zhàn)技巧/
1.5.1map基礎(chǔ)/
1.5.2檢查一個鍵是否在
map中/
1.5.3json與map互相轉(zhuǎn)化/
1.5.4map排序示例/
1.5.5map高級使用技巧/
1.5.6map排序技巧/
1.5.7【實戰(zhàn)】從數(shù)據(jù)庫中獲取數(shù)據(jù)
并導(dǎo)出特定CSV文件/
1.6結(jié)構(gòu)體的使用技巧/
1.6.1結(jié)構(gòu)體基礎(chǔ)/
1.6.2結(jié)構(gòu)體初始化/
1.6.3繼承/
1.6.4結(jié)構(gòu)體組合/
1.6.5匿名結(jié)構(gòu)體/
1.6.6結(jié)構(gòu)體嵌套/
1.6.7結(jié)構(gòu)體字段標簽/
1.6.8Go語言面向?qū)ο缶幊?
1.6.9【實戰(zhàn)】模擬二維矢量移動
小游戲/
1.7接口常用技巧/
1.7.1接口的賦值/
1.7.2接口的查詢/
1.7.3接口的組合/
1.7.4接口的常見應(yīng)用/
1.7.5接口使用注意事項/
目錄
Go語言高級開發(fā)與實戰(zhàn)1.8Go語言模塊管理/
1.9通道實戰(zhàn)技巧/
1.9.1通道基礎(chǔ)/
1.9.2創(chuàng)建定時通知/
1.9.3使用通道傳送通道/
1.9.4檢查通道的長度和容量/
1.9.5速率限制/
1.10回顧和啟示/
Go語言高級編程技巧/
2.1函數(shù)與指針技巧/
2.1.1遞歸函數(shù)/
2.1.2匿名變量和匿名函數(shù)/
2.1.3指針/
2.1.4函數(shù)的參數(shù)傳遞/
2.1.5函數(shù)使用的常見
注意事項/
2.2反射應(yīng)用技巧/
2.2.1反射原理/
2.2.2反射3大法則簡介/
2.3Go語言編譯/
2.3.1編譯基礎(chǔ)知識/
2.3.2Go語言編譯原理/
2.3.3Go語言編譯器入口/
2.3.4編譯器調(diào)試/
2.4CGO編程技巧/
2.4.1CGO基礎(chǔ)使用/
2.4.2CGO使用的問題和挑戰(zhàn)/
2.5錯誤和異常處理技巧/
2.5.1錯誤和異常簡介/
2.5.2錯誤處理的技巧/
2.5.3異常處理的技巧/
2.6密碼學(xué)算法技巧/
2.6.1Hash算法/
2.6.2對稱與非對稱加密算法/
2.6.3橢圓曲線加密算法/
2.6.4字符串編碼與解碼/
2.7性能剖析與事件追蹤/
2.7.1pprof性能剖析/
2.7.2trace事件追蹤/
2.8回顧和啟示/
Go Web編程/
3.1Go Web基礎(chǔ)/
3.1.1Go語言接收HTTP請求/
3.1.2Go語言處理HTTP請求/
3.2Go HTTP2編程/
3.2.1HTTP簡介/
3.2.2Go HTTP2編程實例/
3.3Go HTTP3編程/
3.3.1HTTP3簡介/
3.3.2Go HTTP3編程實例/
3.4Go Socket編程/
3.4.1什么是Socket/
3.4.2TCP Socket/
3.4.3UDP Socket/
3.4.4【實戰(zhàn)】用Socket開發(fā)簡易
聊天程序/
3.5Go MySQL使用技巧/
3.5.1Go 使用MySQL/
3.5.2MySQL常見ORM/
3.6Go Redis使用技巧/
3.6.1Go Redis常見處理技巧/
3.6.2使用Go Redis實現(xiàn)排行榜
功能/
3.7Go gRPC使用/
3.7.1什么是gRPC/
3.7.2Go gRPC的使用/
3.8【實戰(zhàn)】使用gRPC開發(fā)一個簡易分
布式爬蟲系統(tǒng)/
3.9回顧和啟示/
Go語言并發(fā)編程/
4.1并發(fā)編程基礎(chǔ)/
4.2計算機常見并發(fā)模型/
4.2.1線程和鎖/
4.2.2演員模型/
4.2.3通信順序進程/
4.3Go語言并發(fā)模型/
4.4Go語言常見并發(fā)設(shè)計模式/
4.4.1屏障模式/
4.4.2未來模式/
4.4.3管道模式/
4.4.4扇出和扇入模式/
4.4.5協(xié)程池模式/
4.4.6發(fā)布-訂閱模式/
4.5同步常用技巧/
4.5.1競態(tài)/
4.5.2互斥鎖/
4.5.3讀寫互斥鎖/
4.5.4只執(zhí)行一次/
4.5.5等待組/
4.5.6競態(tài)檢測器/
4.5.7并發(fā)安全字典/
4.6goroutine使用技巧/
4.6.1限制并發(fā)數(shù)量/
4.6.2節(jié)拍器/
4.6.3使用select多路復(fù)用/
4.7【實戰(zhàn)】開發(fā)一個并發(fā)任務(wù)
系統(tǒng)/
4.8回顧和啟示/
分布式系統(tǒng)/
5.1分布式系統(tǒng)原理/
5.1.1什么是分布式系統(tǒng)/
5.1.2分布式系統(tǒng)的常見一致性
算法/
5.2負載均衡簡介/
5.3常見負載均衡算法/
5.3.1輪詢調(diào)度算法/
5.3.2隨機算法/
5.3.3一致性哈希算法/
5.3.4鍵值范圍算法/
5.4分布式鎖/
5.4.1分布式鎖簡介/
5.4.2基于MySQL數(shù)據(jù)庫表實現(xiàn)
分布式鎖/
5.4.3用ZooKeeper實現(xiàn)分布
式鎖/
5.4.4使用Redis的SETNX實現(xiàn)
分布式鎖/
5.4.5使用etcd實現(xiàn)分布式鎖/
5.4.5分布式鎖的選擇/
5.5Go實現(xiàn)常見的分布式應(yīng)用/
5.5.1用Snowflake框架生成分布
式ID/
5.5.2Go 語言實現(xiàn) Paxos一致性
算法/
5.6Go語言常見分布式框架/
5.6.1Go Micro框架/
5.6.2Consul框架/
5.7回顧和啟示/
Go語言秒殺系統(tǒng)實戰(zhàn)/
6.1秒殺系統(tǒng)簡介/
6.1.1高并發(fā)系統(tǒng)簡介/
6.1.2秒殺系統(tǒng)簡介/
6.2秒殺系統(tǒng)架構(gòu)/
6.2.1架構(gòu)原則/
6.2.2秒殺系統(tǒng)架構(gòu)/
6.3HTML靜態(tài)頁面開發(fā)/
6.3.1秒殺頁面設(shè)計/
6.3.2秒殺頁面靜態(tài)化/
6.3.3客戶端限流/
6.4服務(wù)器端開發(fā)/
6.4.1代理層設(shè)計/
6.4.2應(yīng)用層實現(xiàn)/
6.4.3數(shù)據(jù)庫層隔離/
6.5壓力測試/
6.6回顧與啟示/