Skip to main content

掘金

David LiuAbout 4 min

掘金

项目背景

项目介绍

这是一款类掘金的知识分享平台。用户可以发布和收藏文章、评论互动、互相关注,以及获得个性化推荐的文章。我们还利用 TrustSVD 社交推荐算法,实现针对用户的个性化社交推荐。

人员分工

  • 4个同学,2位同学开发前端,2位同学开发后端。
  • 2人前端,SwiftUI 主要界面、ARKit 场景交互页面
  • 2人后端,

个人工作

你这个项目是因为什么写的呀?为什么写的呀?

这个项目是去年我参加中国高校计算机大赛移动应用创新赛的时候设计开发的项目,这是一款基于AR的社交APP,产品定位方面主要是为了填补AR浅社交破冰这方面的市场空白,同时也是希望挑战自己并将所学知识付诸实践。

是一门儿课的作业呀还是怎么回事儿啊?

然后你在这个项目里面扮演什么角色呀,诸如此类的。

在项目中,我主要扮演的是项目组长和负责后端开发的工作。

在团队管理方面,我根据团队成员的兴趣和特长对他们的工作进行了划分、使用Trello看板来进行项目进度管理、定期开研讨会分析项目存在的问题并探讨解决方案。

在后端开发方面,我个人进行了整个后端系统的设计与开发,利用Redis来提高系统的性能和解决一些LBS问题的痛点、同时

项目技术

技术选型

后端

  • Spring Boot 2.8, Spring Cloud Gateway, open feign
  • sa-token
  • MySQL, Redis, Redisson
  • mapstruct, hutool
  • knife4j
  • 腾讯云cos

系统业务

发帖、关注、评分(隐式)

用户注册、登录、注销

关注用户

用户点赞、收藏、点踩文章

项目亮点

一款类掘金的知识分享平台。利用 TrustSVD 社交推荐算法,实现个性化推荐。

  1. 使用 Spring Cloud 基于Spring Cloud + Nacos 实现项目的微服务化,根据业务划分为用户、文章、文件和推送四个服务,提高项目的可拓展性和容错性。
  2. 使用 TrustSVD 社交推荐算法,实现智能推荐 + Timeline 的 Feed 流,实现个性化推荐的同时又避免信息茧房,同时一定程度上解决了推荐系统的冷启动问题。
  3. 基于 Spring Scheduler 实现每日 TrustSVD 推荐数据重新计算,保证推荐的准确性,提升用户的访问体验,并通过 Redisson 分布式锁保证集群中同一时刻的定时任务只执行一次。
  4. 使用腾讯云 COS 存储来集中存管用户图片,并通过限制大小、校验后缀等方式预防文件上传漏洞,增强安全性。
  5. 定义统一的数据返回类和全局异常处理逻辑,规范了数据的传输以及异常的处理。
  6. 对于项目中的推荐系统的配置对象,采用 双检锁单例模式 进行管理,从而复用对象,避免了重复创建对象的开销,便于集中维护管理。
  7. 使用 MD5 + 随机加盐 算法保证用户密码不被泄漏,提高系统的安全性。
  8. 使用 MapStruct 进行 JavaBean 映射的管理,提升性能和代码的精简性。

由于传统的MD5加密,黑客可以通过查散列值字典(例如彩虹表),得到某用户的密码。因此目前可以用MD5加密配合上随机盐值,可极大的防止密码被破解。

用户系统

  • 密码存储:使用 MD5 + 随机加盐 算法保证用户密码不被泄漏,提高系统的安全性。

    和 MD5 摘要值一样

    为什么加盐,随机生成一个 20 位字符串,防止非法用户用字典攻击的方式暴力破解。

  • AOF鉴权:

    • 哪些权限
      • 用户
      • 管理员
      • 超级管理员
      • 封号 ban
    • AOF实现与Filter的区别
      • Filter基于servlet
      • AOF实现更加灵活可以加注解和参数