心链1---项目介绍和项目初始化

心链 — 伙伴匹配系统

介绍:帮助大家找到志同道合的伙伴,移动端 H5 网页(尽量兼容 PC 端)

需求分析

  1. 用户去添加标签,标签的分类(要有哪些标签、怎么把标签进行分类)学习方向 java / c++,工作 / 大学
  2. 主动搜索:允许用户根据标签去搜索其他用户
    1. Redis 缓存
  3. 组队
    1. 创建队伍
    2. 加入队伍
    3. 根据标签查询队伍
    4. 邀请其他人
  4. 允许用户去修改标签
  5. 推荐
    1. 相似度计算算法 + 本地分布式计算

技术栈

前端

  1. Vue 3 开发框架(提高页面开发的效率)
  2. Vant UI(基于 Vue 的移动端组件库)(React 版 Zent)
  3. Vite 2(打包工具,快!)
  4. Nginx 来单机部署

后端

  1. Java 编程语言 + SpringBoot 框架
  2. SpringMVC + MyBatis + MyBatis Plus(提高开发效率)
  3. MySQL 数据库
  4. Redis 缓存
  5. Swagger + Knife4j 接口文档

开发页面经验

  1. 多参考
  2. 从整体到局部
  3. 先想清楚页面要做成什么样子,再写代码

前端项目初始化

用脚手架初始化项目

  1. Vue CLI : Vue CLI
  2. 使用Vite 脚手架: Vite
# 使用yarn
yarn create vite
# 使用NPM
npm init vite@latest

整合组件库

Vant : Vant

前端主页 + 组件概览

设计

导航条:展示当前页面名称

主页搜索框 => 搜索页 => 搜索结果页(标签筛选页)

内容

tab 栏:

  • 主页(推荐页 + 广告 )
    • 搜索框
    • banner
    • 推荐信息流
  • 队伍页
  • 用户页(消息 - 暂时考虑发邮件)
开发

很多页面要复用组件 / 样式,重复写很麻烦、不利于维护,所以抽象一个通用的布局(Layout)

组件化

添加导航组件

底部Tabbar 标签栏

主页内容添加

数据库表设计

标签的分类(要有哪些标签、怎么把标签进行分类)

新增标签表(分类表)

建议用标签,不要用分类,更灵活。

性别:男、女

方向:Java、C++、Go、前端

正在学:Spring

目标:考研、春招、秋招、社招、考公、竞赛(蓝桥杯)、转行、跳槽

段位:初级、中级、高级、王者

身份:小学、初中、高中、大一、大二、大三、大四、学生、待业、已就业、研一、

研二、研三

状态:乐观、有点丧、一般、单身、已婚、有对象

字段:

id int 主键

标签名 varchar 非空(必须唯一,唯一索引)

上传标签的用户 userId int(如果要根据 userId 查已上传标签的话,最好加上,普

通索引)

父标签 id ,parentId,int(分类)

是否为父标签 isParent, tinyint(0 不是父标签、1 - 父标签)

创建时间 createTime,datetime

更新时间 updateTime,datetime

是否删除 isDelete, tinyint(0、1)

怎么查询所有标签,并且把标签分好组?按父标签 id 分组,能实现 √

根据父标签查询子标签?根据 id 查询,能实现 √

SQL 语言分类:

DDL define 建表、操作表

DML manage 更新删除数据,影响实际表里的内容

DCL control 控制,权限

DQL query 查询,select

https://www.cnblogs.com/fan-yuan/p/7879353.html

修改用户表

用户有哪些标签?

根据自己的实际需求来!!! 此处选择第一种

  1. 直接在用户表补充 tags 字段,[‘Java’, ‘男’] 存 json 字符串 优点:查询方便、不

    用新建关联表,标签是用户的固有属性(除了该系统、其他系统可能要用到,标

    签是用户的固有属性)节省开发成本查询用户列表,查关系表拿到这 100 个用

    户有的所有标签 id,再根据标签 id 去查标签表。哪怕性能低,可以用缓存。缺

    点:用户表多一列,会有点

  2. 加一个关联表,记录用户和标签的关系关联表的应用场景:查询灵活,可以正查

    反查缺点:要多建一个表、多维护一个表重点:企业大项目开发中尽量减少关联

    查询,很影响扩展性,而且会影响查询性能

开发后端接口

搜索标签
  1. 允许用户传入多个标签,多个标签都存在才搜索出来 and。like ‘%Java%’ and like ‘%C++%’。
  2. 允许用户传入多个标签,有任何一个标签存在就能搜索出来 or。like ‘%Java%’ or like ‘%C++%’

两种方式:

  1. SQL 查询(实现简单,可以通过拆分查询进一步优化)
  2. 内存查询(灵活,可以通过并发进一步优化)
  • 如果参数可以分析,根据用户的参数去选择查询方式,比如标签数
  • 如果参数不可分析,并且数据库连接足够、内存空间足够,可以并发同时查询,谁先返回用谁。
  • 还可以 SQL 查询与内存计算相结合,比如先用 SQL 过滤掉部分 tag

建议通过实际测试来分析哪种查询比较快,数据量大的时候验证效果更明显!

解析 JSON 字符串:

序列化:java对象转成 json

反序列化:把 json 转为 java 对象

java json 序列化库有很多:

  1. gson(google 的)
  2. fastjson alibaba(ali 出品,快,但是漏洞太多)
  3. jackson
  4. kryo
  • 36
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值