论坛项目技术总结【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

我们都有光明的未来

祝大家考研上岸
祝大家工作顺利
祝大家得偿所愿
祝大家如愿以偿
点赞收藏关注哦