项目面试题整理(SSM+在线教育项目)

视频上传,点播,权限是怎么实现的?

主要是通过阿里云服务实现

视频数据库表设计

注释
id视频id
course_id课程id
chapter_id章节id
title节点名称
video_source_id云端视频资源
video_original_name原始文件名称
sort排序字段
play_count播放次数
is_free是否可以试听 (0收费 1 免费)
duration视频时长
statusEmpty未上传,Transcoding转码中,Normal正常
size视频源文件大小(字节)
version乐观锁
gmt_create创建时间
gmt_modified更新时间

此项功能于service_vod模块中,后端主要提供以下API

  • 上传视频到阿里云
  • 根据视频id删除阿里云视频
  • 删除多个阿里云视频
  • 根据视频id获取视频凭证

视频上传

流程
在这里插入图片描述

视频删除

在这里插入图片描述

删除多个视频,在request中传入多个视频即可

视频凭证获取

在这里插入图片描述

阿里云OSS上传服务是怎么做的?

数据库设计
在这里插入图片描述

阿里云OSS主要用于上传头像,在数据库中设计一个头像阿里云地址

后端接口

  • uploadOssFile 上传头像,返回头像阿里云地址(url)

在这里插入图片描述

项目中用redis做了什么?

首页缓存

首页中的数据更改不频繁,查询相对较多,所以在这里查询时引入Redis缓存(K:V键值对存储,数据类型是字符串)

  • 引入redis到项目中
  • 配置redis
  • 在需要缓存的方法上加@Cacheable注解

存放验证码

在短信注册登录时,需要设置验证码过期时间,正好redis中可以设置键的过期时间,所以这里采用redis实现

  • 客户端用户点击发送短信
  • 服务端判断redis中是否有这个键,有则不做发送操作,没有就发送并将验证码放入redis中

注册功能是怎么做的?

手机号注册

  • 发送短信服务(调用阿里云API)
    在这里插入图片描述
    注册流程(后端接口)
  • 判断手机号,密码,验证码,昵称是否为空
  • 判断验证码是否正确
  • 判断手机号是否重复
  • 加密密码,封装用户对象,加入数据库

登录之后状态如何保持(访问不同的页面,如何确保登录状态)?

手机号登录流程

MD5特性,同一字段加密后相同

  • 验证手机号和密码(密码先加密后验证)
  • 返回jwtToken

微信登录流程

  • 后端提供callback接口,获取扫码人的信息

流程
在这里插入图片描述

两种方式登录后,都会返回一个jwt,这是验证状态的关键,jwt中包含着用户信息.jwt由三部分构成,第一部分我们称它为头部(header),第二部分我们称其为载荷(payload, 类似于飞机上承载的物品),第三部分是签证(signature).
基于jwt的token验证、原理及流程

单点登录和OAuth2

单点登录(cookie,session),单点登录(Single Sign On),简称为 SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

传统登录 cookie session 应用于单台服务器

如果一定要用session呢?
分布式session

  • 通过redis集中存储session
  • session复制(session广播机制)
  • nginx使同一客户端请求都落在同一服务器上

session默认过期时间30分钟

本项目中使用jwt+cookie来实现单点登录

OAuth2是什么?

OAuth2是针对特定问题的一种解决方案

OAuth2主要可以解决两个问题

  1. 开放系统间授权
  2. 分布式访问问题

登录状态的保持

  1. 在项目某个模块进行登录,登录之后,按照规则生成字符串,把登录之后用户信息包含到字符串里面,把字符串返回
    • 可以把字符串通过cookie返回
    • 把字符串通过地址栏返回
  2. 再去访问项目其他模块,每次访问在地址栏带着生成字符串,在访问模块里面获取地址栏字符串,根据字符串获取用户信息,如果可以获取到,就是已经登录

如何数据库中要将微信用户和手机注册用户关联,怎么做?

通过微信api中提供的唯一标志open_id作为共同列即可

订单功能是怎么做的?

主要负责后端接口部分和数据库设计

数据库表设计

订单表

在这里插入图片描述

订单支付表

后端提供接口

核心接口主要是两个,生成订单和订单支付,查询订单状态,生成二维码

  • 根据课程id和用户id生成订单
    在这里插入图片描述
  • 生成二维码
    • 使用map封装参数
    • 发送httpclient,传递参数xml格式给微信支付提供的固定地址
    • 得到请求后,用map集合获得返回数据
  • 查询订单支付状态
    • 封装参数
    • 发送httpclient
    • 得到请求返回内容
    • 转成map返回
  • 添加支付记录和更新状态
    • map 查到订单号
    • 根据订单号查到订单信息
    • 更新订单状态
    • 向支付表添加支付记录

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
运行SSM(Spring+SpringMVC+MyBatis)与Vue项目的步骤如下: 1. 克隆或下载项目代码:在GitHub或其他代码托管平台上找到项目的代码仓库,将其克隆到本地,或者下载项目的压缩包并解压。 2. 启动后端SSM项目: a. 导入项目:使用IDE(如IntelliJ IDEA、Eclipse等)将后端SSM项目导入到工作空间中。 b. 配置数据库连接:在项目的配置文件(如`application.properties`或`application.yml`)中配置数据库连接相关信息,包括数据库地址、用户名、密码等。 c. 运行项目:执行项目的启动命令,通常是右键点击项目,选择“Run”或“Debug”来启动项目。 3. 启动前端Vue项目: a. 安装依赖:打开命令行终端,切换到前端项目的目录下,执行命令`npm install`安装项目所需的依赖。 b. 配置API地址:在前端项目的代码中,找到与后端API请求相关的配置文件或配置项,将其中的API地址修改为后端项目的地址。 c. 运行项目:执行命令`npm run serve`来启动前端项目。 4. 访问项目:等待后端和前端项目启动完毕后,打开浏览器,输入前端项目的访问地址(通常是`http://localhost:8080`或其他自定义端口号),即可访问运行中的SSM+Vue项目。 注意事项: - 确保本地已经安装了JDK、Maven、Node.js等所需的软件环境。 - 在运行前端项目之前,需要先安装项目所需的依赖,可以使用`npm install`命令来一次性安装所有依赖。 - 在修改后端配置文件或前端代码后,需要重启项目才能使修改生效。 - 在运行项目过程中,可能会遇到一些问题,如依赖安装失败、端口被占用等,需要根据具体情况进行排查和解决。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值