这是我参与「第三届青训营 -后端场」笔记创作活动的的第6篇笔记
队号:qxyxfd 队伍名称:野指针队
组长:宋闻昕 组员:齐俊达 范彬 刘永泰
1. 项目介绍与演示
极简版抖音的后端实现。极简抖音app提供的基础接口全部实现,包括用户注册、登录,关注、关注列表,视频流、发布视频,对视频点赞和评论等功能。 开发过程中主要用到了gin框架,gorm,数据库选择了mysql,中间件用jwt实现token鉴权json序列化,文件流传输等等 我们的Github地址: github.com/qjd1217/byt…
展示:
pamedh5n3q.feishu.cn/docx/doxcnc…
2. 成员分工
基础接口:
宋闻昕-视频投稿
齐俊达-登录注册
范彬—发布列表
刘永泰-用户信息 视频流
拓展接口:
范彬-赞 点赞
宋闻昕-评论 评论列表
齐俊达-关系操作
刘永泰-关注列表 粉丝列表
3. 技术说明
3.1 数据库设计
3.2整体架构
4. 项目亮点
4.1 开发架构
本项目采用了MVC三层架构的开发模式:
-
降低了代码耦合性,方便维护,可以利于分工协作。所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其他层中的代码。
-
大大提高了组件的复用率。如控制层可独立成一个能用的组件,表示层也可做成通用的操作界面。可以为一个模型在运行时同时建立和使用多个视图。
4.2 性能优化
对于slice与map采用了预分配内存的处理。如果提前能预估切片容量,那最好提前在make时就分配好容量,避免后续go底层的再次扩容,在一定程度上能提升代码执行效率。
5. 项目难点
5.1 使用 jwt-go 实现用户鉴权,增加了用户登录的可扩展性,从而实现了feed流,视频投稿,喜欢操作,关注操作等接口无需登录即可访问。在实现方面,将jwt的鉴权验证作为中间件放在路由中,减少了代码的冗余,提高了内聚,降低了耦合。
5.2 用户信息加密:基本的用户注册功能中,用户提交的用户密码都是明文存储在数据库中,非常不安全。所以本项目采用Bcrypt加密,验证密码的方式变成了验证用户提交的密码经过BCrypt加密处理后,校验是否和数据库中的加密密码相同,从而保证了数据库中存储用户信息的安全性。
6. 项目例会记录
6.1 第一次会议:
会议时间:6.9 21:30-22:30 p.m.
会议内容:
明确了项目要求
确定了项目的各个实体并且设计了数据库
对项目的各个基础接口进行了分工
制定了开发计划:
6.10 17:00前 完成基础接口部分
宋闻昕-视频投稿
齐俊达-登录注册
范彬-发布列表
刘永泰-用户信息
6.11 17:00 完成拓展接口。
6.12 12:00,完成对于项目的优化,同时完成对应部分的项目文档
6.13 12:00 测试项目并完成项目文档。
6.13 15:30 检查一遍项目和文档,并提交。
6.2 第二次会议:
会议时间:6.10 21:30-22:30
会议内容:
汇报前一阶段所取得的成果与遇到的问题,并与组员讨论
6.3 第三次会议:
会议时间:6.11 21:30-22:30
会议内容:
汇报前一阶段所取得的成果与遇到的问题,并与组员讨论
讨论项目优化的方向