### Golang技术栈
- 具备扎实的Golang语言基础,熟悉Go标准库,熟悉slice、map、channel、goroutine、panic、context等底层原理,熟悉GMP调度模型、垃圾回收和错误处理等机制
- 熟练使用Gin框架并了解其原理;了解微服务,掌握gRPC框架、go-zero框架使用,掌握RPC原理
- 熟练使用中间件Zap、JWT、Casbin,了解消息中间件kafka的使用,熟悉常见消息队列特征
- 熟练使用Gorm、go-redis操作数据库;熟悉使用Viper等组件
### 数据库技术
- 熟练使用MySQL常规操作,熟悉索引、存储引擎、MySQL优化、事务隔离级别、锁、日志等
- 熟悉Redis常见数据结构及其使用场景、掌握Redis内存淘汰策略、过期删除策略、持久化等
### 其他
- 熟悉Docker、Nginx、Linux的使用,有容器化部署实践经验,了解etcd使用
- 熟悉计算机网络,操作系统,数据结构等基础知识
- 了解Java及Python语言的基本使用,面向对象的封装,继承,多态以及常用Maven,SpringBoot框架
- 了解HTML,CSS,JS,Vue等前端技术
Zinx 是一个基于Golang的轻量级并发TCP服务器框架,具体使用领域包括:后端模块的消息中转、长链接游戏服务器、Web框架中的消息处理插件等
- 技术栈
Go TCP Channel Goroutine protobuf
- 技术功能
- 对TCP连接进行封装,实现连接创建的自定义控制,
- 借助channel实现消息队列和任务池,有效减少高并发下协程的数量和cpu的消耗
- 对消息封装,采用定长数据包格式,有效解决TCP粘包问题
- 基于zinx服务器的长连接功能,实现游戏中玩家上线,下线,移动以及世界聊天功能。
- 项目介绍:
旅游民宿项目是一个使用go-zero开发的微服务项目,用户可以使用微信小程序登录,浏览民宿和推荐民宿,使用微信支付进行下单,入住民宿。
- 技术栈 go-zero nginx mysql redis asynq go-queue kafka docker
- 技术功能
- 使用nginx作为微服务项目网关,进行反向代理,实现业务分发
- 用户模块支持账号密码登录以及微信小程序登录
- 借助go-zero内置sqlc自动管理缓存,通过singleflight控制线程访问数量,减轻数据库压力
- 订单模块使用延时队列实现订单超时自动关闭,支付模块使用微信支付借助kafka修改订单状态并推送至微信小程序
**GeeWeb**
- 项目介绍:
仿照极客兔兔博客实现仿Gin框架,实现过程中深入理解了Web框架运行的基本原理,主要实现了HTTP基础,上下文,前缀树路由,路由分组,中间件以及错误恢复等功能
- 技术功能:
- 基于go语言的context包实现上下文管理,封装http包下的request以及服务端和客户端连接信息
- Trie树:基于分隔符对每个请求路径中的字段进行分割构建前缀路由树来代替路由map的使用
- 路由匹配:设计并实现了自定义的路由匹配规则,支持基于路径和请求方法的路由匹配
- 调用net包下的http方法监听端口, 实现ServeHTTP接口,并使用Pool复用Context,提高框架整体性能