J2GO 小组协作项目,支持多存储方式的“抖声”服务端。
本项目的汇报文档 »
Demo地址
·
报告Bug
·
提出新特性
包名遵守以下规则:
- 只由小写字母组成。不包含大写字母和下划线等字符
- 简短并包含一定的上下文信息
- 不要与标准库同名
- 不使用常用变量名作为包名
- 使用单数而不是复数
- 谨慎地使用缩写
├── bootstrap 初始化相关函数包
├── config 定义配置
├── config.{GO_ENV}.yaml 本地配置文件
├── config.yaml 配置文件模版
├── dao 数据库 CRUD 函数包
├── driver 实现存储驱动
├── global 全局变量
├── handler 路由的处理方法 作用等同于 MVC controller
├── logs 日志默认输出路径
├── middleware 中间件包
├── model 数据库实体定义、实体生成相关函数包
├── response 定义返回体结构,并附带通用的返回处理方法
├── router 定义路由
└── util 工具类
- 在启动项目前配置终端环境变量
GO_ENV={{env}} - 项目初次启动后会生成
config.{{env}}.yaml配置文件,请根据config.yaml对其中数据库配置进行重写(必须)
-
Go-Cache,在视频流接口中存在非常多次的用户信息查询。
- 开发过程中使用的是外置数据库+逻辑外键
- 在一次网络环境较差的情况下我花了将近 10s 才获取到 5 条视频的数据
- 使用 go-cache 本地 user-info,10s 过期
- 消除大部分重复的 SQL 请求
-
GORM,项目中重要的 SQL 框架
- 定义了数据库连接池,复用数据库连接提高性能
- 规范使用( where c = ? ) 使用 Gorm 提供的预编译功能,有效防止 SQL 注入,项目中预留对接口输入参数的检查函数
-
Gin 项目 Web 框架,编写中间件非常简单
-
Viper 项目配置管理,采用环境变量重载默认配置的方式完成配置读入
-
go-snowflak 简易实现的雪花算法,用于生成全局唯一 id
-
qiniu/go-sdk 用于实现七牛对象存储
-
jwt-go 用于 jwt 生成、解密 token
-
go-redis 用于操作 Redis
-
go.uber.org/zap 高性能的日志库
-
moul.io/zapgorm2 用于替换 gorm 默认的日志 -> zap
该项目使用Git进行版本管理。您可以在repository参看当前可用版本。
| Github 主页 | 联系方式 |
|---|---|
| evlic | email: evlic.kr@icloud.com |
| isdongrl | email: |
| niyaoquna | email: |