论坛项目技术总结【Java面试项目】
- 前言
- 版权
- 推荐
- 项目技术总结
- redis的使用
- Kafka的使用
- es的使用
- Quartz的使用
- 最后
前言
2023-7-15 20:55:14
2023-07-31 19:19:18
公开发布于
2024-5-20 13:12:41
推荐
无
项目技术总结
主要使用了Springboot、Mybatis、MySQL、Redis、Kafka、等工具。
主要实现了用户的注册、登录、发帖、点赞、系统通知、按热度排序、搜索等功能。
另外引入了redis数据库来提升网站的整体性能,实现了用户凭证的存取、点赞关注的功能。
基于 Kafka 实现了系统通知:当用户获得点赞、评论后得到通知。
利用定时任务定期计算帖子的分数,并在页面上展现热帖排行榜。
redis的使用
五种数据结构
string hash list set zset
string
存储登录验证码结果
做缓存 缓存用户信息
先更新数据库再删除缓存
1.优先从缓存中取值
2.取不到初始化缓存数据
3.数据变更时清除缓存数据
set
存储点赞
点赞和取赞是根据redis是否赞列表存储过该用户
无:点赞;存:取赞
事务:添加用户 add() 点赞increment()
事务:移除用户 remove移除 取赞decrement()
查询某实体点赞的数量 size()
查询某人对某实体的点赞状态 isMember()
查询某个用户获得的赞 get()
存储需要书刷新帖子分数的帖子id
key:帖子分数
value:discussPostId
用来定时刷新帖子分数的
zset
存储关注列表、粉丝列表
score 日期 按时间降序排列
事务:关注 add添加 关注列表 粉丝列表
事务:取消关注 remove移除 关注列表 粉丝列表
查询关注|粉丝数量 zCard()
查询当前用户是否已关注该实体 score()
查询某用户关注的人 reverseRange() 取出id再到User表中查询
查询某用户的粉丝 reverseRange() 取出id再到User表中查询
hyperLogLog
统计uv
存储ip add()
指定日期统计union()
bitmap
统计dau
存储userId setBit()
统计指定日期范围内的DAU OR运算 bitCount()
Kafka的使用
系统通知事件:发送系统消息(关注、点赞、评论)
发帖或删帖事件:es数据和MySQL中的同步
es的使用
搜索帖子
Quartz的使用
定时任务刷新帖子分数
// 计算权重=精华分+评论数*10 +点赞数*2
double w = (wonderful ? 75 : 0) + commentCount * 10 + likeCount * 2;
// 分数 = 帖子权重 + 距离天数
double score = Math.log10(Math.max(w, 1))
+ (post.getCreateTime().getTime() - epoch.getTime()) / (1000 * 3600 * 24);
最后
2023-7-31 19:18:39
我们都有光明的未来
祝大家考研上岸
祝大家工作顺利
祝大家得偿所愿
祝大家如愿以偿
点赞收藏关注哦