抖声项目开发文档 | 青训营笔记

642 阅读4分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第六篇笔记。

内裤外穿队抖声项目文档

队长: 邹锐涛

队员: 周文浩、李政德

一、项目灵感

近年来,以抖音为代表的短视频平台的出现标志着互联网行业正式进入web2.0时代。产品优秀的数据表现让抖音很快成为字节跳动战略级产品。字节最核心的算法优势也用到了抖音上,一开始就在产品层面加入算法推荐模型保证内容充分符合用户喜好。

为了更好的学习以抖音为代表的短视频平台的前沿技术,并感受字节跳动公司的优秀企业文化,我小组选择了极简抖音(抖声)项目。

二、项目亮点

项目目录结构采用MVC模式:

分为:middleware层、model层、repository层、service层、controller层

使用JWT作为用户验证:

介绍:使用 Go 语言社区中的 jwt 相关库来构建我们的应用

使用ZAP库来提高日志性能:

介绍:使用zap作为日志库,提高日志记录性能以及格化式日志

三、难点突破

对于我们队伍来说,我们队伍都不是有很多开发经验和框架使用经验的大佬。从一开始的gin框架的使用,到JWT的了解到使用,再到MVC框架完成整个项目的代码结构设计。对于其他大佬来说,可能不是什么难题,很朴素,但是对于我们这些菜鸡来说,真的是一种突破。

三、项目目录结构

项目目录结构采用mvc模式

3.1 middleware层

有关中间件的一些操作

| jwt.go        //解析JWT字符串,判断JWT是否合法,合法就将解密信息写入context中;

| logger.go     //注册及配置log对象,记录controller函数调用时间。

3.2 model层

model层即数据库实体层,也被称为entity层。

一般数据库一张表对应一个实体,结构属性同表字段一一对应。

| comment.go     // 评论struct

| favorite.go    // 点赞视频struct

| user.go        // 用户struct

| video.go       // 视频struct

| common.go      // 通用请求和响应的struct

3.3 repository层

repository层即数据持久层。

repository层的作用为访问数据库,向数据库发送sql语句,完成数据的增删改查任务。

| Comment.go         // 有关评论数据库操作

| Favorite.go        // 有关视频点赞数据库操作

| Relation.go        // 有关用户关注数据库操作

| User.go            // 有关用户操作数据库操作

3.4 service层

service层即业务逻辑层。

service层的作用为完成功能设计。

service层调用repository层接口,接收repository层返回的数据,完成项目的基本功能设计。

| Comment.go         // 评论操作函数

| Favorite.go        // 视频点赞函数

| Feed.go            // 视频流函数

| Publish.go         // 视频上传函数

| Relation.go        // 用户关注函数

| User.go            // 用户操作函数

3.5 controller层

controller层即控制层。

controller层的功能为请求和响应控制。

controller层负责前后端交互,接受前端请求,调用service层,接收service层返回的数据,最后返回具体的页面和数据到客户端。

| Comment.go         // 接收前端请求并调用service层评论操作函数

| Favorite.go        // 接收前端请求并调用service层视频点赞函数

| Feed.go            // 接收前端请求并调用service层视频流函数

| Publish.go         // 接收前端请求并调用service层视频上传函数

| Relation.go        // 接收前端请求并调用service层用户关注函数

| User.go            // 接收前端请求并调用service层用户操作函数

3.6 config层

包含数据库配置信息

其他

| .gitattributes         // 文件结尾规范

| .gitignore             // 忽略联网的静态文件

| main.go                // 后端入口文件

| router.go              // 后端路径配置

四、数据库设计

数据库包含User,Video,Relation,Comment,Favorite五个表

无法复制加载中的内容

五、致谢

俗话说,“三人行,必有我师。”感谢字节跳动青训营给我们提供了这个相互交流相互学习的平台,让我们认识到了如此优秀的队友和老师,让我们从go语言的小白一步步劈荆斩棘克服重重困难完成这个项目。感谢青训营的老师们辛勤的付出,感谢我的队友们,与你们一起学习的日子是快乐的,一起奋斗的日子是难忘的。这段青训营的经历将成为我们人生中宝贵的财富!