{"id":23164014,"url":"https://github.com/danny5487401/go_package_example","last_synced_at":"2025-06-10T11:33:25.746Z","repository":{"id":49397515,"uuid":"350011172","full_name":"Danny5487401/go_package_example","owner":"Danny5487401","description":"Gopher常用包: grpc discipline and some common go packages ","archived":false,"fork":false,"pushed_at":"2025-06-01T08:27:01.000Z","size":99874,"stargazers_count":15,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-01T16:50:16.881Z","etag":null,"topics":["canal","clickhouse","consul","elasticsearch","etcd","golang","grpc","hystrix","kafka","mongodb","nacos","rabbitmq","redis","rocketmq","zap"],"latest_commit_sha":null,"homepage":"https://danny5487401.github.io/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Danny5487401.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-03-21T13:45:25.000Z","updated_at":"2025-06-01T08:27:05.000Z","dependencies_parsed_at":"2025-06-01T09:29:43.169Z","dependency_job_id":"c415b565-639f-4982-9c31-c928f52725c2","html_url":"https://github.com/Danny5487401/go_package_example","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Danny5487401%2Fgo_package_example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Danny5487401%2Fgo_package_example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Danny5487401%2Fgo_package_example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Danny5487401%2Fgo_package_example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Danny5487401","download_url":"https://codeload.github.com/Danny5487401/go_package_example/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Danny5487401%2Fgo_package_example/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259066761,"owners_count":22800191,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["canal","clickhouse","consul","elasticsearch","etcd","golang","grpc","hystrix","kafka","mongodb","nacos","rabbitmq","redis","rocketmq","zap"],"created_at":"2024-12-18T00:32:50.839Z","updated_at":"2025-06-10T11:33:25.722Z","avatar_url":"https://github.com/Danny5487401.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n**Table of Contents**  *generated with [DocToc](https://github.com/thlorenz/doctoc)*\n\n- [go_package_example(Go常用包)](#go_package_examplego%E5%B8%B8%E7%94%A8%E5%8C%85)\n  - [第零章 rpc实现选项](#%E7%AC%AC%E9%9B%B6%E7%AB%A0-rpc%E5%AE%9E%E7%8E%B0%E9%80%89%E9%A1%B9)\n  - [第一章 服务注册中心consul](#%E7%AC%AC%E4%B8%80%E7%AB%A0-%E6%9C%8D%E5%8A%A1%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83consul)\n  - [第二章 日志库](#%E7%AC%AC%E4%BA%8C%E7%AB%A0-%E6%97%A5%E5%BF%97%E5%BA%93)\n  - [第三章 消息队列](#%E7%AC%AC%E4%B8%89%E7%AB%A0-%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97)\n  - [第四章 服务注册及配置文件中心 Nacos](#%E7%AC%AC%E5%9B%9B%E7%AB%A0-%E6%9C%8D%E5%8A%A1%E6%B3%A8%E5%86%8C%E5%8F%8A%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E4%B8%AD%E5%BF%83-nacos)\n  - [第五章 关系型数据库](#%E7%AC%AC%E4%BA%94%E7%AB%A0-%E5%85%B3%E7%B3%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93)\n  - [第六章 获取对外可用IP和端口](#%E7%AC%AC%E5%85%AD%E7%AB%A0-%E8%8E%B7%E5%8F%96%E5%AF%B9%E5%A4%96%E5%8F%AF%E7%94%A8ip%E5%92%8C%E7%AB%AF%E5%8F%A3)\n  - [第七章 验证器 go-playground/validator](#%E7%AC%AC%E4%B8%83%E7%AB%A0-%E9%AA%8C%E8%AF%81%E5%99%A8-go-playgroundvalidator)\n  - [第八章 GRPC编程及调优](#%E7%AC%AC%E5%85%AB%E7%AB%A0-grpc%E7%BC%96%E7%A8%8B%E5%8F%8A%E8%B0%83%E4%BC%98)\n  - [第九章 Nosql 非关系型数据库](#%E7%AC%AC%E4%B9%9D%E7%AB%A0-nosql-%E9%9D%9E%E5%85%B3%E7%B3%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93)\n  - [第十章 链路追踪(Distributed Tracing)](#%E7%AC%AC%E5%8D%81%E7%AB%A0-%E9%93%BE%E8%B7%AF%E8%BF%BD%E8%B8%AAdistributed-tracing)\n  - [第十一章 依赖注入容器(Dependency Injection Container)](#%E7%AC%AC%E5%8D%81%E4%B8%80%E7%AB%A0-%E4%BE%9D%E8%B5%96%E6%B3%A8%E5%85%A5%E5%AE%B9%E5%99%A8dependency-injection-container)\n  - [第十二章 time 时间](#%E7%AC%AC%E5%8D%81%E4%BA%8C%E7%AB%A0-time-%E6%97%B6%E9%97%B4)\n  - [第十三章 序列化反序列化-涉及多种协议](#%E7%AC%AC%E5%8D%81%E4%B8%89%E7%AB%A0-%E5%BA%8F%E5%88%97%E5%8C%96%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96-%E6%B6%89%E5%8F%8A%E5%A4%9A%E7%A7%8D%E5%8D%8F%E8%AE%AE)\n  - [第十四章 系统监控](#%E7%AC%AC%E5%8D%81%E5%9B%9B%E7%AB%A0-%E7%B3%BB%E7%BB%9F%E7%9B%91%E6%8E%A7)\n  - [第十五章 分布式事务](#%E7%AC%AC%E5%8D%81%E4%BA%94%E7%AB%A0-%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1)\n  - [第十六章 copier(不同类型数据复制)](#%E7%AC%AC%E5%8D%81%E5%85%AD%E7%AB%A0-copier%E4%B8%8D%E5%90%8C%E7%B1%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%A4%8D%E5%88%B6)\n  - [第十七章 数据加解密](#%E7%AC%AC%E5%8D%81%E4%B8%83%E7%AB%A0-%E6%95%B0%E6%8D%AE%E5%8A%A0%E8%A7%A3%E5%AF%86)\n  - [第十八章 日志收集项目 log_collect](#%E7%AC%AC%E5%8D%81%E5%85%AB%E7%AB%A0-%E6%97%A5%E5%BF%97%E6%94%B6%E9%9B%86%E9%A1%B9%E7%9B%AE-log_collect)\n  - [第十九章 熔断,限流及降级](#%E7%AC%AC%E5%8D%81%E4%B9%9D%E7%AB%A0-%E7%86%94%E6%96%AD%E9%99%90%E6%B5%81%E5%8F%8A%E9%99%8D%E7%BA%A7)\n  - [第二十章 应用的命令行框架](#%E7%AC%AC%E4%BA%8C%E5%8D%81%E7%AB%A0-%E5%BA%94%E7%94%A8%E7%9A%84%E5%91%BD%E4%BB%A4%E8%A1%8C%E6%A1%86%E6%9E%B6)\n  - [第二十一章 配置文件解析:viper(依赖mapstructure,fsnotify,yaml,toml)](#%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%B8%80%E7%AB%A0-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%A7%A3%E6%9E%90viper%E4%BE%9D%E8%B5%96mapstructurefsnotifyyamltoml)\n  - [第二十二章 ETCD](#%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%BA%8C%E7%AB%A0-etcd)\n  - [第二十三章 Go-Micro框架(不推荐)](#%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%B8%89%E7%AB%A0-go-micro%E6%A1%86%E6%9E%B6%E4%B8%8D%E6%8E%A8%E8%8D%90)\n  - [第二十四章 搜索引擎es](#%E7%AC%AC%E4%BA%8C%E5%8D%81%E5%9B%9B%E7%AB%A0-%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8Ees)\n  - [第二十五章 监控sentry](#%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%BA%94%E7%AB%A0-%E7%9B%91%E6%8E%A7sentry)\n  - [第二十六章 图数据库Neo4j](#%E7%AC%AC%E4%BA%8C%E5%8D%81%E5%85%AD%E7%AB%A0-%E5%9B%BE%E6%95%B0%E6%8D%AE%E5%BA%93neo4j)\n  - [第二十七章 Mysql的binlog](#%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%B8%83%E7%AB%A0-mysql%E7%9A%84binlog)\n  - [第二十八章 OLAP(Online Analytical Processing 联机分析处理)](#%E7%AC%AC%E4%BA%8C%E5%8D%81%E5%85%AB%E7%AB%A0-olaponline-analytical-processing-%E8%81%94%E6%9C%BA%E5%88%86%E6%9E%90%E5%A4%84%E7%90%86)\n  - [第二十九章 分布式锁及源码分析](#%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%B9%9D%E7%AB%A0-%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81%E5%8F%8A%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90)\n  - [第三十章 Zookeeper](#%E7%AC%AC%E4%B8%89%E5%8D%81%E7%AB%A0-zookeeper)\n  - [第三十一章 分布式 Id](#%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B8%80%E7%AB%A0-%E5%88%86%E5%B8%83%E5%BC%8F-id)\n  - [第三十二章 Consensus algorithm 共识算法](#%E7%AC%AC%E4%B8%89%E5%8D%81%E4%BA%8C%E7%AB%A0-consensus-algorithm-%E5%85%B1%E8%AF%86%E7%AE%97%E6%B3%95)\n  - [第三十三章 压缩](#%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B8%89%E7%AB%A0-%E5%8E%8B%E7%BC%A9)\n  - [第三十四章 本地缓存](#%E7%AC%AC%E4%B8%89%E5%8D%81%E5%9B%9B%E7%AB%A0-%E6%9C%AC%E5%9C%B0%E7%BC%93%E5%AD%98)\n  - [第三十五章 sonar静态代码质量分析-涉及与golangci-lint对比使用](#%E7%AC%AC%E4%B8%89%E5%8D%81%E4%BA%94%E7%AB%A0-sonar%E9%9D%99%E6%80%81%E4%BB%A3%E7%A0%81%E8%B4%A8%E9%87%8F%E5%88%86%E6%9E%90-%E6%B6%89%E5%8F%8A%E4%B8%8Egolangci-lint%E5%AF%B9%E6%AF%94%E4%BD%BF%E7%94%A8)\n  - [第三十六章 Proto管理工具 Buf](#%E7%AC%AC%E4%B8%89%E5%8D%81%E5%85%AD%E7%AB%A0-proto%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7-buf)\n  - [第三十七章 CI持续集成](#%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B8%83%E7%AB%A0-ci%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90)\n  - [第三十八章 Mergo实现 struct 与 map 之间转换--\u003ek8s中应用](#%E7%AC%AC%E4%B8%89%E5%8D%81%E5%85%AB%E7%AB%A0-mergo%E5%AE%9E%E7%8E%B0-struct-%E4%B8%8E-map-%E4%B9%8B%E9%97%B4%E8%BD%AC%E6%8D%A2--k8s%E4%B8%AD%E5%BA%94%E7%94%A8)\n  - [第三十九章 权限管理 casbin](#%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B9%9D%E7%AB%A0-%E6%9D%83%E9%99%90%E7%AE%A1%E7%90%86-casbin)\n  - [第四十章 规则引擎 rule engine](#%E7%AC%AC%E5%9B%9B%E5%8D%81%E7%AB%A0-%E8%A7%84%E5%88%99%E5%BC%95%E6%93%8E-rule-engine)\n  - [第四十一章 hashicorp/go-plugin 插件使用--\u003ehttprunner 4.0 使用](#%E7%AC%AC%E5%9B%9B%E5%8D%81%E4%B8%80%E7%AB%A0-hashicorpgo-plugin-%E6%8F%92%E4%BB%B6%E4%BD%BF%E7%94%A8--httprunner-40-%E4%BD%BF%E7%94%A8)\n  - [第四十二章 open-api](#%E7%AC%AC%E5%9B%9B%E5%8D%81%E4%BA%8C%E7%AB%A0-open-api)\n  - [第四十三章 go-systemd--\u003ek8s 中使用](#%E7%AC%AC%E5%9B%9B%E5%8D%81%E4%B8%89%E7%AB%A0-go-systemd--k8s-%E4%B8%AD%E4%BD%BF%E7%94%A8)\n  - [参考](#%E5%8F%82%E8%80%83)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n# go_package_example(Go常用包)\n\n![grpc](img/golang.jpeg)\n\n## 第零章 rpc实现选项\n- 1 手动实现rpc\n  - [客户端](00_rpc_options/00_helloworld_without_stub/client/client.go)\n  - [服务端](00_rpc_options/00_helloworld_without_stub/server/server.go)\n- 2 手动实现stub中间人\n  - [客户端](00_rpc_options/02_new_helloworld_withStub/client/client.go)\n  - [客户端中间人stub](00_rpc_options/02_new_helloworld_withStub/client_proxy/client_proxy.go)\n  - [业务方法](00_rpc_options/02_new_helloworld_withStub/handler/handler.go)\n  - [服务端](00_rpc_options/02_new_helloworld_withStub/server/server.go)\n  - [服务端中间人stub](00_rpc_options/02_new_helloworld_withStub/server_proxy/server_proxy.go)\n- 3 json_rpc\n  - [客户端](00_rpc_options/03_json_rpc_test/client/client.go)\n  - [服务端](00_rpc_options/03_json_rpc_test/server/server.go)\n- 4 http_rpc\n  - [服务端](00_rpc_options/04_http_rpc_test/server/server.go)\n\n## [第一章 服务注册中心consul](01_consul/consul.md)\n- [consul架构](01_consul/consul.md)\n- [分布式锁--\u003econsul实现)](01_consul/distributed_lock.md)\n\n- [1 http服务注册发现加健康检查](01_consul/01_http/test/consul_registry_test.go)\n- [2 grpc服务注册发现加健康检查](01_consul/01_http/test/consul_registry_test.go)\n\n## 第二章 日志库\n- [1 标准库 log](02_log/01_log/log.md) \n- [2 slog--\u003ego 1.21 引入](02_log/02_slog/slog.md)\n  - [2.1 自定义 level](02_log/02_slog/01_level/main.go)\n  - [2.2 使用 handler](02_log/02_slog/02_handler/main.go)\n  - [2.3 使用 group 汇总多个属性](02_log/02_slog/03_group/main.go)\n- [3 zap使用及源码分析](02_log/03_zap/zap.md)\n  - [3.1 两种打印风格](02_log/03_zap/01_cosole/main.go)\n  - [3.2 定义多种输出位置: 控制台输出及文件输出](02_log/03_zap/02_file_stdout/main.go)\n  - [3.3 并发安全logger](02_log/03_zap/03_concurrency_safe/main.go)\n  - [3.4 zap(配合 lumberjack 库按文件大小切割或 go-file-rotatelogs 库按日期切割)实现定制化log日志归档](02_log/03_zap/04_customized_log/main.go)\n    - [3.4.1 lumberjack 日志切割](02_log/03_zap/04_customized_log/lumberjack.md)\n  - [3.5 简单的基于Entry实现的hook函数--\u003e无法接收到Fields的相关参数](02_log/03_zap/05_hook/main.go)\n- [4 logrus--\u003e兼容 log 库](02_log/04_logrus/logrus.md)\n- [5 zerolog](02_log/05_zerolog/zerolog.md)\n- [6 C++日志库glog的golang版本](02_log/06_glog/glog.md)\n  - [6.1 vlevel 日志级别小于或等于 level 的日志打印处理](02_log/06_glog/01_vlevel)\n  - [6.2 vmodule: 单独定制模块级别, log_backtrace_at: 打印堆栈](02_log/06_glog/02_vmodule_and_trace_location/main.go)\n- [7 klog--\u003eglog 的 fork 版本,应用 k8s](02_log/07_klog/klog.md) \n## [第三章 消息队列](03_amqp/amqp.md)\n- [1 rabbitmq](03_amqp/01_rabbitmq/introduction.md)\n  - 1.1 消费者：推拉模式\n  - 1.1 生产者\n- [2 kafka](03_amqp/02_kafka/kafka_intro.md)\n  - [2.1 客户端 sarama](03_amqp/02_kafka/01_sarama/sarama.md)\n    - 2.1.1 生产者\n      - 同步\n      - 异步\n    - 2.1.2 消费者\n  - [2.2 客户端 confluent-kafka-go](03_amqp/02_kafka/02_confluent-kafka/confluent_kafka.md)\n    - 2.2.1 生产者\n    - 2.2.2 消费者\n- [3 rocketmq](03_amqp/03_rocketmq/rocketmq.md)\n  - 3.1 消费者：简单消费,延迟消费\n  - 3.2 生产者：简单消息，延迟消息，事务消息\n- [4 Asynq 分布式延迟队列](03_amqp/04_asynq/asynq.md)\n  - [4.1 生产者](03_amqp/04_asynq/producer)\n  - [4.2 消费者](03_amqp/04_asynq/server)\n\n## [第四章 服务注册及配置文件中心 Nacos](04_nacos/nacos.md)\n- 1 [获取配置及监听文件变化](04_nacos/config_center/main.go)\n- 2 服务注册，监听，获取\n  - [V1版本](04_nacos/service_center/v1/main.go)\n  - [V2版本](04_nacos/service_center/v2/main.go)\n\n## 第五章 关系型数据库\n- [MySQL的主流驱动 go-mysql-driver插件源码分析](05_rds/go_mysql_driver.md)\n- 1 GORM\n  - 1.1 GORM原理及实现\n  - 1.2 连接池使用\n- [2 XORM](05_rds/02_xorm/xorm.md)\n  - [2.1 主从连接](05_rds/02_xorm/util/util.go)\n  - [2.2 调用mysql函数](05_rds/02_xorm/function/sum.go)\n  - [2.3 事务处理](05_rds/02_xorm/transaction/transaction.go)\n  - 2.4 crud\n    - 插入Insert\n    - 原生 sql\n    - 获取 retrieve\n    - 更新 update\n- 3 database/sql 源码分析\n  - [3.1 converter 把普通的值转化成 driver.Value的接口](05_rds/03_database_sql/01_converter/converter.md)\n- [4 SQL生成库 Squirrel](05_rds/04_squirrel/quirrel.md)\n\n## 第六章 获取对外可用IP和端口\n- [1 通过google, 国内移动、电信和联通通用的DNS获取对外 Ip 和 port ](06_get_available_ip_port/get_ip/outboundIp_test.go)\n- [2 获取本地可用端口](06_get_available_ip_port/get_port/main.go)\n\n## [第七章 验证器 go-playground/validator](07_gin_form_validator/validator.md)\n- [1 dive 递归结构体字段验证](07_gin_form_validator/01_dive_validate/main.go)\n- [2 前端数据校验](07_gin_form_validator/02_gin_form/main.go)\n- [3 错误处理:验证器校验错误英转中](07_gin_form_validator/03_translate_err_from_en_to_ch/main.go)\n\n## [第八章 GRPC编程及调优](08_grpc/grpc.md)\n*前置知识*\n- [makefile 在 protobuf 中应用,生成 Pb 文件](08_grpc/makefile)\n- [protobuf](08_grpc/protobuf.md)\n  - 引入其他proto文件,支持编译多个proto文件\n  - 编码原理\n- [protobuf 工具:protoc,protoc-gen-go,protoc-gen-go-grpc,protoc-gen-gofast 等](08_grpc/proto_tools.md)\n\n- 1  HelloWorld 入门使用及源码分析\n  - [1.1 客户端 Grpc 源码](08_grpc/01_grpc_helloworld/client/client.md)\n  - [1.2 服务端 Grpc 源码](08_grpc/01_grpc_helloworld/server/server.md)\n- [2  context 中的元数据 metadata](08_grpc/02_metadata/grpc_context.md)\n- 3  流式GRPC\n- [4  jsonpb 包序列化和反序列化: protobuf 转 json](08_grpc/04_jsonpb/jsonpb.md)\n- [5  负载均衡](08_grpc/05_grpc_load_balance/load_balance.md)\n  - [5.1 客户端负载均衡(Resolver接口和Builder接口)](08_grpc/05_grpc_load_balance/client/builder_n_resolver_n_balancer.md)\n    - [第三方consul实现Resolver接口和Builder接口](01_consul/02_grpc/consul_client/main.go)\n    - [自定义实现Resolver接口和Builder接口](08_grpc/05_grpc_load_balance/client/customized_resolver_client/client.go)\n    - [自定义实现nacos服务注册与发现](08_grpc/05_grpc_load_balance/client/nacos_client)\n  - 5.2 服务端\n- [6  retry机制](08_grpc/06_grpc_retry/retry.md)\n- [7  grpc错误抛出与捕获](08_grpc/07_grpc_error/error.md)\n- [8  auth自定义认证](08_grpc/08_grpc_token_auth/credentials.md)\n- [9  Grpc插件-引入第三方proto实现字段验证器--\u003e](08_grpc/09_grpc_validate/proto/helloworld.proto)\n- [10 Grpc插件-使用 gRPC 转码（RPC Transcoding）实现暴露 http服务--\u003egrpc网关在etcd中应用](08_grpc/10_grpc_gateway/grpc_gateway.md)\n  -[buf 在 protobuf 中应用,生成 Pb 文件--\u003e推荐](08_grpc/10_grpc_gateway/buf.work.yaml)\n  -[原始不使用 buf 生成pb文件](08_grpc/10_grpc_gateway/proto_without_buf)\n- [11 Grpc插件-gogo/protobuf](08_grpc/11_protoc_gogofast/gogoprotobuf.md)\n- [12 GRPC生态中间件(拦截器扩展)](08_grpc/12_grpc_middleware/01_grpc_interceptor/server/server.go)\n  - 实现基于 CA 的 TLS 证书认证\n  - go-grpc-middleware 实现多个中间件：异常保护，日志\n- [13 channelz 分析问题](08_grpc/13_channelz/channelz.md)\n- 14 multiplex多路复用\n- [15 自定义 grpc 插件](08_grpc/15_customized_protobuf_plugin/protobuf_extend.md)\n- [16 同目录 proto 文件引入](08_grpc/16_import_proto/proto)\n- [17 field masks](08_grpc/17_fieldmask/fieldmask.md)\n\n## 第九章 Nosql 非关系型数据库\n- [1 MongoDB](09_Nosql/01_mongo/mongo.md)\n  - [mongo和mysql对比：储存引擎及内存结构](09_Nosql/01_mongo/nosql_vs_rds.md)\n  - 1.1 增删改查\n- [2 Redis(协议，原理，持久化方式)](09_Nosql/02_redis/redis.md)\n  - [redis底层数据结构对象源码分析](09_Nosql/02_redis/redis_obj.md)\n  - [redis 集群](09_Nosql/02_redis/redis_cluster.md)\n  - 2.1 redigo使用\n  - 2.2 go-redis使用(官方)\n    - [2.2.1 连接池分析](09_Nosql/02_redis/02_go-redis/go-redis_pool.md)\n    - [2.2.2 连接初始化及命令执行流程](09_Nosql/02_redis/02_go-redis/go-redis_init_n_excute.md)\n    - [2.2.3 protocol协议封装](09_Nosql/02_redis/02_go-redis/go-redis_protocol.md)\n    - [2.2.4 批处理pipeline分析](09_Nosql/02_redis/02_go-redis/go-redis_pipeline.md)\n\n## [第十章 链路追踪(Distributed Tracing)](10_distributed_tracing/introduction.md)\n- [1 OpenTracing-\u003eJaeger](10_distributed_tracing/01_jaeger/jaeger.md)\n  - [1.1 结合XORM](10_distributed_tracing/01_jaeger/01_jaeger_xorm/main_test.go)\n  - [1.2 结合redis](10_distributed_tracing/01_jaeger/02_jaeger_redis/hook.go)\n- [2 OpenTelemetry 两大开源社区合并](10_distributed_tracing/02_openTelemetry/openTelemetry.md)\n  - 跨服务组合tracer代码展示:需开启svc1和svc2两个http服务(url可以是zipkin或则jaeger)\n\n## [第十一章 依赖注入容器(Dependency Injection Container)](11_dependency_injection/dependency_injection.md)\n- [1 dig依赖注入及http服务分层-\u003e不推荐](11_dependency_injection/00_dig/dig.go)\n- 2 wire依赖注入-\u003e推荐\n  - [2.1 不使用wire现状](11_dependency_injection/01_wire/01_without_wire/main.go)\n  - [2.2 使用wire优化](11_dependency_injection/01_wire/02_wire)\n  - [2.3 wire使用-带err返回](11_dependency_injection/01_wire/03_wire_return_err/wire)\n  - [2.4 wire使用-带参数初始化](11_dependency_injection/01_wire/04_wire_pass_params/wire)\n\n\n## 第十二章 time 时间\n- [1 clockwork 虚拟时钟库--\u003eetcd使用](12_time/01_clockwork/clockwork.md)\n- [2 carbon 时间处理](12_time/02_carbon/carbon.md)\n\n## [第十三章 序列化反序列化-涉及多种协议](13_serialize/serialize.md)\n- [1 标准库 json](13_serialize/01_std_json/json.md)\n  - [1.1 omitempty 标签: 忽略空值字段,忽略嵌套结构体空值字段,不修改原结构体忽略空值字段](13_serialize/01_std_json/01_omitempty/main.go)\n  - [1.2 string 标签: 处理字符串格式的数字,json.Number 处理json字符串中的数字](13_serialize/01_std_json/02_number/main.go)\n  - [1.3 自定义的时间格式解析](13_serialize/01_std_json/03_time/main.go)\n  - [1.4 自定义的MarshalJSON方法 和 UnmarshalJSON](13_serialize/01_std_json/04_custom_marshal_unmarshal/main.go)\n  - [1.5 使用匿名结构体添加字段, 使用匿名结构体组合多个结构体](13_serialize/01_std_json/05_anonymous_struct/main.go)\n  - [1.6 inline 标签: 将嵌套结构体字段展开到父结构体中](13_serialize/01_std_json/06_inline/main.go)\n- [2 Jsoniter(完全兼容标准库json，性能较好)-涉及标准库 encoding/json 分析](13_serialize/02_jsoniter/jsoniter.md)\n  - 2.1 序列化\n    - [2.1.1 指针变量，序列化时自动转换为它所指向的值](13_serialize/02_jsoniter/Marshal/01_pointer/main.go)\n    - [2.1.2 结构体成员为interface{}](13_serialize/02_jsoniter/Marshal/02_Interface/main.go)\n    - [2.1.3 extra.SetNamingStrategy 统一更改字段的命名风格](13_serialize/02_jsoniter/Marshal/03_name_field/main.go)\n  - 2.2 反序列化\n    - [2.2.1 反序列化匹配规则](13_serialize/02_jsoniter/Unmarshal/01_json_basic/main.go)\n    - [2.2.2 json 字符串数组](13_serialize/02_jsoniter/Unmarshal/02_jsonArray/main.go)\n    - [2.2.3 json.RawMessage 二次反序列化](13_serialize/02_jsoniter/Unmarshal/03_RawMessage/main.go)\n    - [2.2.4 extra.SupportPrivateFields() 解析私有的字段](13_serialize/02_jsoniter/Unmarshal/04_private_field/main.go)\n- [3 mapstructure 将通用的 map 值解码为 struct ](13_serialize/03_mapstructure/mapstructure.md)\n  - [3.1 无tag标签](13_serialize/03_mapstructure/01_without_tag/main.go)\n  - [3.2 带tag标签mapstructure](13_serialize/03_mapstructure/02_tag/main.go)\n  - [3.3 embeded内嵌标签squash](13_serialize/03_mapstructure/03_embeded/main.go)\n  - [3.4 未映射字段保留标签remain](13_serialize/03_mapstructure/04_remain/main.go)\n  - [3.5 省略字段标签omitempty](13_serialize/03_mapstructure/05_omitempty/main.go)\n  - [3.6 元数据展示源数据未映射字段](13_serialize/03_mapstructure/06_metadata/main.go)\n  - [3.7 错误](13_serialize/03_mapstructure/07_error/main.go)\n  - [3.8 弱解析](13_serialize/03_mapstructure/08_weekDecode/main.go)\n  - [3.9 自定义解析器](13_serialize/03_mapstructure/09_decoder/main.go)\n  - [3.10 time 类型 DecodeHookFunc ](13_serialize/03_mapstructure/10_time_decode_hook/main.go)\n- [4 json patch 两种标准](13_serialize/04_json_patch/json_patch.md)\n  - [4.1 github.com/evanphx/json-patch/v5 使用](13_serialize/04_json_patch/main.go)\n\n## 第十四章 系统监控\n- [1 systemstat包(适合linux系统，已断更)](14_system_monitor/01_systemstat/main.go)\n- [2 gopsutil](14_system_monitor/02_gopsutil/gopsutil.md)\n  - [2.1 cpu,mem,disk](14_system_monitor/02_gopsutil/01_disk_n_cpu_n_mem/main.go)\n  - 2.2 进程信息获取\n    - [物理机和虚拟机](14_system_monitor/02_gopsutil/02_process/01_in_host/main.go)\n    - [容器环境](14_system_monitor/02_gopsutil/02_process/02_in_container/main.go)\n\n- [3 prometheus](14_system_monitor/03_prometheus/prometheus.md)\n  - [3.1 exporter](14_system_monitor/03_prometheus/01_exporter/exporter.md)\n    - [3.1.1 内置 collector](14_system_monitor/03_prometheus/01_exporter/01_embeded_collector/main.go)\n    - [3.1.2 使用自定义 collector](14_system_monitor/03_prometheus/01_exporter/02_customized_collector/main.go)\n  - [3.2 client](14_system_monitor/03_prometheus/02_client/client.md) \n  - [3.3 k8s 部署](14_system_monitor/03_prometheus/03_k8s_deploy/deploy.md)\n    - [3.2.1 原始 yaml --\u003e 测试环境](14_system_monitor/03_prometheus/03_k8s_deploy/01_manual)\n    - [3.2.2 Prometheus Operator --\u003e 生产环境](14_system_monitor/03_prometheus/03_k8s_deploy/02_operator)\n  - [3.4 PromQL(Prometheus Query Language)](14_system_monitor/03_prometheus/PromQL.md)\n  - [3.5 存储模型及监控指标查询性能调优](14_system_monitor/03_prometheus/query.md)\n- [4 AlertManager](14_system_monitor/04_alertmanager/alert_manager.md)\n\n## [第十五章 分布式事务](15_distributed_transaction/distributed_transaction.md)\n- Note: 使用DTM的代码作为案例 \n- [1 两阶段提交2pc/XA](15_distributed_transaction/01_2pc_n_3pc/two_phase_commit.md)\n- [2 saga事务](15_distributed_transaction/02_saga/saga.md)\n- [3 TCC事务](15_distributed_transaction/03_tcc/tcc.md)\n- [4 etcd的STM](15_distributed_transaction/04_stm/stm.md)\n\n## [第十六章 copier(不同类型数据复制)](16_dataCopy/copier.md)\n\n## 第十七章 数据加解密\n- 1 phpserialize(不推荐)\n\n## [第十八章 日志收集项目 log_collect](18_log_collect/log_collect.md)\n- 1 动态选择文件\n- 2 文件内容读取发送\n\n## [第十九章 熔断,限流及降级](19_fuse_currentLimiting_degradation/rate_limit.md)\n- [0 令牌桶官方包 x/time/rate](19_fuse_currentLimiting_degradation/00_tokenBucket/time_rate.md)\n- 1 Sentinel--\u003e滑动窗口\n  - 1.1 基于流量QPS控制\n    - [流量控制器的Token计算策略:direct](19_fuse_currentLimiting_degradation/01_sentinel/01_flow/direct/main.go)\n    - [流量控制器的Token计算策略:warmUp](19_fuse_currentLimiting_degradation/01_sentinel/01_flow/warm_up/main.go)\n  - 1.2 熔断\n    - [ErrorCount](19_fuse_currentLimiting_degradation/01_sentinel/02_circuit_breaker/error_count/main.go)\n    - [ErrorRatio](19_fuse_currentLimiting_degradation/01_sentinel/02_circuit_breaker/error_ratio/main.go)\n    - [SlowRequestRatio](19_fuse_currentLimiting_degradation/01_sentinel/02_circuit_breaker/slow_request_ratio/main.go)\n- [2 Hystrix--\u003e滑动窗口](19_fuse_currentLimiting_degradation/02_hystrix/hystrix.md)\n  - [2.1 客户端](19_fuse_currentLimiting_degradation/02_hystrix/client/client.go)\n  - [2.2 服务端](19_fuse_currentLimiting_degradation/02_hystrix/server/server.go)\n- [3 uber-go/ratelimit--\u003eLeaky Bucket(漏桶)](19_fuse_currentLimiting_degradation/03_ubergo_ratelimit/uber-ratelimit.md)\n- 4 envoyproxy/ratelimit--\u003e计数器\n\n## 第二十章 应用的命令行框架\n- [1 Cobra --\u003e在 k8s 中的应用](20_cli_frame/01_cobra/introdoction.md)\n  - [1.1 cobra 构建 time 展示及解析,flag 使用](20_cli_frame/01_cobra/main.go)\n- [2 Urfave Cli --\u003e在 buildkit 中的应用](20_cli_frame/02_urfave_cli/urfave_cli.md)\n- [3 alecthomas/kingpin --\u003e在 node_exporter 使用](20_cli_frame/03_kingpin/kingpin.md)\n\n## [第二十一章 配置文件解析:viper(依赖mapstructure,fsnotify,yaml,toml)](21_viper/viper.md)\n- [1 viper获取本地文件内容](21_viper/01_read_n_watch_config/main.go)\n- [2 监听文件变化(fsnotify)原理分析](21_viper/02_fsnotify/fsnotify.md)\n- [3 远程读取nacos配置(源码分析)](21_viper/03_remote_config/remote_viper_config.md)\n- [4 gopkg.in/yaml.v3 使用](21_viper/04_yaml/yaml.md)\n- [5 pelletier/go-toml 使用](21_viper/05_toml/toml.md)\n- [6 gopkg.in/ini.v1 使用](21_viper/06_ini/ini.md)\n\n## 第二十二章 ETCD\n- [服务端server--读和写流程分析](22_etcd/etcd_read_n_write.md)\n- [服务端server--鉴权分析](22_etcd/ectd_auth.md)\n- [服务端server--mvcc并发控制](22_etcd/etcd_mvcc.md)\n- [服务端server--watch机制](22_etcd/03_watch/etcd_watch.md)\n- [etcd 指标](22_etcd/etcd-metrics.md)\n- [1 基本操作CRUD及watch监听](22_etcd/01_CRUD/main.go)\n- [2 boltdb基本操作及在etcd中的源码分析](22_etcd/04_boltdb/boltdb.md)\n- [3 bbolt改善boldb](22_etcd/05_bbolt/bbolt.md)\n\n## 第二十三章 Go-Micro框架(不推荐)\n- [1 Config配置加载包](23_micro/01_Config/config.md)\n\n## [第二十四章 搜索引擎es](24_elasticSearch/es.md)\n- [es索引及索引生命周期管理](24_elasticSearch/es_index.md)\n- [1 go-elasticsearch 官方包](24_elasticSearch/01_official_pkg/go_elasticseach.md)\n  - 1.1 批量写入Bulk\n  - 1.2 es日志\n  - 1.3 并发批量BulkIndexer\n\n## [第二十五章 监控sentry](25_sentry/sentry.md)\n- [1 结合gin基本shiyong](25_sentry/gin/main.go)\n- [2 自定义zap core模块收集error级别日志上报sentry](25_sentry/zap_sentry/main.go)\n\n## [第二十六章 图数据库Neo4j](26_neo4j/neo4j.md)\n- [cypher语句](26_neo4j/cypher.md)\n- [1 CRUD在web服务中](26_neo4j/main.go)\n\n## 第二十七章 Mysql的binlog\n- [binlog,gtid介绍](27_mysql_binlog/binlog.md)\n- [canal使用及源码分析](27_mysql_binlog/canal/canal.md)\n\n## [第二十八章 OLAP(Online Analytical Processing 联机分析处理)](28_OLAP/OLAP.md)\n- [1 列数据库 ClickHouse](28_OLAP/01_clickHouse/clickHouse.md)\n  - [1.1 database/sql 接口操作 clickHouse](28_OLAP/01_clickHouse/01_database_sql/main.go)\n  - [1.2 原声接口操作 clickHouse](28_OLAP/01_clickHouse/02_native_interface/main.go)\n  - [驱动 go-clickHouse 源码分析](28_OLAP/01_clickHouse/go-clickHouse.md)\n  - [clickhouse 表引擎](28_OLAP/01_clickHouse/engine.md)\n  - [clickhouse 基本命令](28_OLAP/01_clickHouse/curd.md)\n\n## [第二十九章 分布式锁及源码分析](29_distributed_lock/distributed_lock.md)\n- [1 redsync(RedLock 算法官方实现)](29_distributed_lock/01_redis_distributed_lock/main.go)\n- [2 etcd 实现分布式锁](29_distributed_lock/02_etcd_distributed_lock/main.go)\n- [3 zookeeper 实现分布式锁](29_distributed_lock/03_zookeeper_distributed_lock/main.go)\n\n## [第三十章 Zookeeper](30_zookeeper/zookeeper.md)\n- [Zab协议(Zookeeper Atomic Broadcast 原子广播协议)](30_zookeeper/zab.md)\n- [1 节点管理](30_zookeeper/01_node/node.go)\n- [2 基于 zookeer watch 实现注册于发现](30_zookeeper/02_discovery/main.go)\n\n## [第三十一章 分布式 Id](31_distributed_Id/distribued_id.md)\n- 1 UUID( Universally Unique Identifier 通用唯一标识码)\n  - [1.1 github.com/google/uuid 8个版本使用](31_distributed_Id/01_uuid/main.go)\n- 2 雪花算法\n  - [2.1 bwmarrin/snowflake--\u003e原生 twitter实现](31_distributed_Id/02_snowflake/01_bwmarrin_snowflake/main.gos)\n  - [2.2 SonyFlake--\u003e解决原生算法时间回拨问题](31_distributed_Id/02_snowflake/02_sony_snowflake/main.go)\n\n## [第三十二章 Consensus algorithm 共识算法](32_consensus_algorithm/consensusAlgorithm.md)\n- [1 Paxos 协议](32_consensus_algorithm/01_paxos/paxos.md)\n- [2 Raft 协议](32_consensus_algorithm/02_raft/raft.md)\n  - [hashicorp/raft 在consul实现](32_consensus_algorithm/02_raft/raft_in_consul.md)\n  - [raft 在etcd实现原理分析](32_consensus_algorithm/02_raft/raft_in_etcd.md)\n  - [2.1 使用 hashicorp/raft 调试应用](32_consensus_algorithm/02_raft/main.go)\n- [3 gossip 协议](32_consensus_algorithm/03_gossip/gossip.md)\n  - [3.1 github.com/hashicorp/memberlist 使用](32_consensus_algorithm/03_gossip/main.go)\n\n## [第三十三章 压缩](33_compress/compress.md)\n- [1 snappy 压缩库--\u003eprometheus 使用](33_compress/01_snappy/snappy.md)\n\n\n## [第三十四章 本地缓存](34_local_cache/cache.md)\n- [1 go-cache源码分析及性能分析](34_local_cache/01_go_cache/go_cache.md)\n- [2 free-cache源码分析及性能分析](34_local_cache/02_free_cache/free_cache.md)\n- [3 hashicorp/golang-lru实现及变体](34_local_cache/03_lru/lru.md)\n\n## [第三十五章 sonar静态代码质量分析-涉及与golangci-lint对比使用](35_sonar/sonar.md)\n\n## [第三十六章 Proto管理工具 Buf](36_buf/buf_intro.md)\n\n## [第三十七章 CI持续集成](37_CI/gitlabCI.md)\n- [1 gitlab-runner 源码分析](37_CI/01_runner/runner.md)\n\n## [第三十八章 Mergo实现 struct 与 map 之间转换--\u003ek8s中应用](38_mergo/mergo.md)\n- [1 struct 与 map 之间转换](38_mergo/01_map_to_struct/main.go)\n- [2 override 覆盖选项](38_mergo/02_with_override/main.go)\n- [3 结构体中的切片使用](38_mergo/03_slice/main.go)\n- [4 类型检查](38_mergo/04_type_check/main.go)\n\n## [第三十九章 权限管理 casbin](39_casbin/casbin.md)\n- [1 ACL（access-control-list，访问控制列表)](39_casbin/01_acl/main.go)\n- [2 RBAC (role-based-access-control 基于角色的权限访问控制)](39_casbin/02_rbac/rbac.md)\n- [3 基于domain或tenant租户实现RBAC](39_casbin/03_domain_rbac/main.go)\n- [4 ABAC(Attribute-based access control 基于属性的权限验证)使用 eval()功能构造来实现基于自定义规则](39_casbin/04_abac/main.go)\n\n\n## [第四十章 规则引擎 rule engine](40_rules_engine/rule_engine.md)\n- [1 govaluate--\u003ecasbin 使用](40_rules_engine/01_govaluate/govaluate.md)\n- [2 bilibili/gengine](40_rules_engine/02_gengine/gengine.md)\n- [3 expr-lang/expr--\u003eargo-rollouts 使用](40_rules_engine/03_expr/expr.md)\n\n## [第四十一章 hashicorp/go-plugin 插件使用--\u003ehttprunner 4.0 使用](41_go_plugin/go-plugin.md)\n\n## [第四十二章 open-api](42_go-openapi/open-api.md)\n\n## [第四十三章 go-systemd--\u003ek8s 中使用](43_systemd/systemd.md)\n\n## 参考\n- [awesome-go](https://github.com/avelino/awesome-go)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanny5487401%2Fgo_package_example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanny5487401%2Fgo_package_example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanny5487401%2Fgo_package_example/lists"}