Go 學習、Go 進階、Go 實用工具類

hwholiday發表於2019-12-11

## learning_tools [原始碼地址](https://github.com/hwholiday/learning_tools)

### [all_packaged_library](https://github.com/hwholiday/learning_tools/tree/master/all_packaged_library) 裡面封裝了一些常用的庫,有詳細的介紹,持續更新
1: base 裡面封裝mysql,redis,mgo,minio檔案儲存庫S3協議,雪花演算法,退出程式方法,redis全域性鎖,日誌庫等(外掛形式可單獨引用)
2: logtool uber_zap日誌庫封裝,可自動切分日誌檔案,壓縮檔案
3: perf ppoof小外掛
4: push 整合蘋果推送,google推送,華為推送
5: quit 優雅的退出程式

### [kafka](https://github.com/hwholiday/learning_tools/tree/master/kafka) (分散式訊息釋出訂閱系統)
1: main 訊息佇列

### [NATS_streaming](https://github.com/hwholiday/learning_tools/tree/master/NATS_streaming)(分散式訊息釋出訂閱系統--是由NATS驅動的資料流系統)
1: main 訊息佇列

### [nsq](https://github.com/hwholiday/learning_tools/tree/master/kafka) (分散式實時訊息平臺)
1: main 訊息佇列

### [grpc](https://github.com/hwholiday/learning_tools/tree/master/grpc) (grpc學習)
1: bidirectional_streaming_rpc 雙向流grpc
2: server_side_streaming_rpc 服務端流grpc,也可以寫成客戶端流grpc
3: simple_rpc 簡單grpc

### [rpc](https://github.com/hwholiday/learning_tools/tree/master/rpc) (rpc學習)
1: main rpc學習

### [prometheus](https://github.com/hwholiday/learning_tools/tree/master/prometheus) (監控報警系統)
1: server Prometheus監控報警系統

### [jaeger](https://github.com/hwholiday/learning_tools/tree/master/jaeger) (jaeger分散式鏈路追蹤)
1: main jaeger分散式鏈路追蹤

### [service_load_balancing](https://github.com/hwholiday/learning_tools/tree/master/service_load_balancing) (負載均衡)
1: fisher_yates_test 新增fisher-yates演算法 負載均衡節點

### [service_registration_discovery](https://github.com/hwholiday/learning_tools/tree/master/service_registration_discovery) (服務註冊與發現)
1: etcdv3 通過etcd實現服務註冊與發現

### [service_req_hystrix](https://github.com/hwholiday/learning_tools/tree/master/service_req_hystrix) (熔斷)
1: hystrix 學習並使用熔斷(Hystrix

### [service_req_limit](https://github.com/hwholiday/learning_tools/tree/master/service_req_limit) (限流)
1: main 使用帶快取的channel實現限流
2: uber_ratelimit 使用uber_ratelimit實現限流

### [ini](https://github.com/hwholiday/learning_tools/tree/master/ini) (配置檔案庫)
1: main 配置檔案ini的讀取,以及自動匹配到結構體裡面

### [minio](https://github.com/hwholiday/learning_tools/tree/master/minio) (物件儲存服務)
1: minio 物件儲存服務使用

### [mysql](https://github.com/hwholiday/learning_tools/tree/master/mysql) (mysql伺服器)
1: main 簡單的mysql使用

### [redis](https://github.com/hwholiday/learning_tools/tree/master/redis) (redis相關)
1: bloom_filter redis 實現BloomFilter過濾器
2: lock redis實現全域性鎖
3: pipeline redis事務
4: subscription redis釋出訂閱

### [mongodb](https://github.com/hwholiday/learning_tools/tree/master/mongodb) (mongodb伺服器)
1: mgo.v2 mgo.v2庫的基礎使用學習
2: mongo-go-driver 官方庫的demo,以及事務提交(不能是單節點)

### [gin](https://github.com/hwholiday/learning_tools/tree/master/gin) (web框架gin學習)
1: mvc 模式,swagger文件 可作為基礎學習gin

### [jwt](https://github.com/hwholiday/learning_tools/tree/master/jwt) (JSON WEB TOKEN)
1: jwt 學習使用

### [zaplog](https://github.com/hwholiday/learning_tools/tree/master/kafka) (uber zap日誌封裝)
1: zap 日誌封裝

### [snow_flake](https://github.com/hwholiday/learning_tools/tree/master/snow_flake) (雪花演算法)
1: main 雪花演算法

### [encryption_algorithm](https://github.com/hwholiday/learning_tools/tree/master/encryption_algorithm) (雙棘輪演算法, KDF鏈,迪菲-赫爾曼棘輪,x3dh)
1: aes ase-(cfb,cbc,ecb)-(128,192,256)加解密方法
2: curve25519 橢圓曲線演算法
3: 3curve25519 雙棘輪演算法,KDF

### [LRU](https://github.com/hwholiday/learning_tools/tree/master/LRU)(快取淘汰演算法)
1: list lru 快取淘汰演算法

### [tcp](https://github.com/hwholiday/learning_tools/tree/master/tcp) (tcp協議實現)
1: 實現網路庫,封包,解包 len+tag+data 模式

### [websocket](https://github.com/hwholiday/learning_tools/tree/master/websocket) (websocket協議實現)
1: 實現網路庫

### [binary_conversion](https://github.com/hwholiday/learning_tools/tree/master/binary_conversion) (進位制轉換)
1: 10to36 10進位制轉36進位制
2: 10to62 10進位制轉62進位制
3: 10to76 10進位制轉76進位制
4: binary 用一個int64來描述開關(使用者設定很多建議使用)

### [job_worker_mode](https://github.com/hwholiday/learning_tools/tree/master/job_worker_mode) (job_worker模式)
1: worker job_worker模式,可提高系統吞吐量

### [filewatch](https://github.com/hwholiday/learning_tools/tree/master/filewatch) (監控檔案變化)
1: main 監控檔案變化 可實現自動構建

### [push](https://github.com/hwholiday/learning_tools/tree/master/prometheus) (一個簡單的推送服務)
1: main 推送服務

### [goquery](https://github.com/hwholiday/learning_tools/tree/master/goquery) (網頁解析工具)
1: main 可以作為爬蟲解析網頁使用

### [active_object](https://github.com/hwholiday/learning_tools/tree/master/active_object)(併發設計模式)
1: active_object Go併發設計模式之Active Object

### [heap](https://github.com/hwholiday/learning_tools/tree/master/container/heap) (優先順序佇列)
1: heap 利用heap建立一個優先順序佇列

### [cli](https://github.com/hwholiday/learning_tools/tree/master/cli) (go命令列互動)
1: main go命令列互動

### [context](https://github.com/hwholiday/learning_tools/tree/master/context) (context包學習)
1: main context包學習

### [err](https://github.com/hwholiday/learning_tools/tree/master/err) (error 相關)
1: main golang 1.13 error 相關

### [interface](https://github.com/hwholiday/learning_tools/tree/master/interface) (interface包學習)
1: main interface包學習

### [syncPool](https://github.com/hwholiday/learning_tools/tree/master/syncPool) (syncPool包學習)
1: main syncPool包學習

### [reflect](https://github.com/hwholiday/learning_tools/tree/master/reflect) (reflect包學習)
1: main reflect包學習

相關文章