谷粒学院知识点总结


前言

谷粒学院知识点总结,准备实习面试


一、项目功能点

1.后台管理系统功能

  • 登录功能(SpringSecurity框架)

  • 权限管理功能
    (1)菜单管理:列表、添加、修改、删除
    (2)角色管理:列表、添加、修改、删除(批量删除)、分配菜单
    (3)用户管理:列表、添加、修改、删除、分配角色
    (4)权限管理表和关系 (重点)

    5张表:权限、角色、用户、角色-权限、用户-角色
    权限管理表


  • 讲师管理模块(条件查询分页列表、添加、修改、删除)

  • 课程分类模块
    (1)添加课程分类(读取Excel数据添加到数据库——EasyExcel)
    (2)课程分类列表(使用树型结构)

  • 课程管理模块
    (1)课程列表功能
    (2)添加课程(填写课程基本信息——添加课程大纲(章节和小节)——课程信息确认——课程发布)

    课程如何判断是否已经被发布了? 课程信息中使用status字段,默认为draft,发布时更改为norm >如何找到之前没有发布完成课程,继续进行发布? 点击下一步时已经将课程存入数据库,所以到课程列表中根据课程状态查询未发布的课程,点击课程右边超链接把课程继续发布完成

    可不可以在没点下一步时依然保存数据?

    (3)添加小节上传课程视频(阿里云OSS)


  • 统计分析模块 (生成统计数据、统计数据图表显示echarts)

2.前台系统功能

  • 首页数据显示 (幻灯片、热门课程、名师,根据sort/view_count/id排序选择前几位展示)

  • 注册功能 (获取手机验证码——阿里云短信)

  • 登录功能
    (1)普通登录(单点登录SSO:session广播机制、cookie+redis、token)

    session(重点)
    (1) 当一个session开始时,Servlet容器将创建一个HttpServlet对象,在HttpServlet对象中可以存放客户的状态信息;
    (2) Servlet容器为HttpSession分配一个唯一的标识符,称为Session ID。Servlet容器将Session ID作为Cookie保存在客户的浏览器中。
    (3) 每次客户发出Http请求时,Servlet容器可以从HttpServletRequest对象中读取Session ID ,然后根据Session ID找到相应的HttpServlet对象,从而获取客户额状态信息。参考exmexm简书

    token(重点) 服务端根据用户身份信息生成 Token,通过响应体发放给客户端。客户端收好 Token,并在之后的数据请求中在请求头的Authentication字段带上 Token,服务端接到请求后校验并解析 Token 得出用户身份 参考黯羽轻扬的博客

    JWT(重点):生成字符串的规则,头信息(Token 类型、加密方式)、有效载荷(Token 携带的数据及其它 Token 元信息)、签名哈希(通过 HMAC SHA-256 算法(Header 中alg字段指定的加密算法)加密得到)
    三种登录机制

    (2)微信扫码登录(OAuth2:特定问题的解决方案(令牌)——开放系统间授权、分布式访问)

    如何获取扫码人信息? 扫描之后微信接口返回code(临时票据),拿着code值请求微信固定地址,得到两个值:access_token(访问凭证)和openid(微信唯一标识),通过这两个值再去请求微信固定的地址,得到微信扫描人信息(比如昵称,头像等等)

  • 名师列表功能

  • 名师详情功能

  • 课程列表功能(条件查询分页列表)

  • 课程详情页 (课程信息显示、判断课程是否需要购买)

  • 课程视频在线播放 (阿里云视频点播)

  • 课程支付功能 (生成课程订单、生成微信支付二维码、微信支付)

    微信支付流程: 课程收费时,点击立即购买生成课程订单;点击去支付生成微信支付二维码,扫码支付;支付后每3s查询支付状态,等待 or 更新订单状态并向支付记录表添加支付成功记录

3.总结项目技术点

  • 前后端分离开发

  • 前端:Vue + Element-ui + Node.js + Nuxt + Echarts

  • 后端:微服务架构 + SpringBoot + SpringCloud + MyBatisPlus + EasyExcel + SpringSecurity + Redis + Nginx + OAuth2+JWT + HttpClient + Cookie + 微信登录/支付 + 阿里云OSS /视频点播 /短信服务 + Git + Docker+Jenkins

    SpringBoot: 本质是就是Spring,只是快速构建Spring工程脚手架
    (1)启动类包扫描机制: 从启动类所在包开始,扫描当前包及其子级包下的所有文件。可以通过@ComponentScan注解设置
    (2)配置文件详解: 可以读取到的配置文件路径按读取顺序:项目根目录中config目录下、项目根目录下、resources目录中config目录下、项目的resources目录下,以第一次读取到的为准并优先 properties 再 yml;bootstrap – application – application-dev

    SpringCloud: 是很多框架总称,使用这些框架实现微服务架构,基于SpringBoot实现。项目中使用Nacos作为注册中心和配置中心,Feign做服务调用(一个微服务调用另外一个微服务,实现远程调用),Gateway做网关(SpringCloud之前zuul网关,目前Gateway网关)。组成框架包括:
    springboot组成

    MyBatisPlus(待补充): MyBatisPlus就是对MyBatis做增强,要点:自动填充、乐观锁、逻辑删除、代码生成器

    EasyExcel: 添加课程时读取Excel,阿里巴巴提供操作excel工具,代码简洁效率高。poi框架有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,easyexcel重写了poi对07版Excel的解析,依赖POI的sax模式,在上层做了模型转换的封装。(SAX按行取数据,DOM把文件数据都取出)

    Spring Security(待补充): 整合了权限管理,框架包括认证和授权
    (1)登录认证过程:在这里插入图片描述
    (2)SpringSecurity代码执行过程

    Redis: 访问量最大的首页数据通过Redis进行缓存,不太重要或者不经常改变数据适合放到Redis作为缓存。Redis数据类型

    Nginx: 反向代理服务器,功能:请求转发,负载均衡,动静分离。项目中使用请求转发,根据请求路径转发到对应服务器。Nginx介绍

    OAuth2 & JWT: 特定问题解决方案 & 三部分

    HttpClient: 发送请求返回响应的工具,不需要浏览器完成请求和响应的过程。项目中应用:微信登录获取扫描人信息,微信支付查询支付状态。

    cookie: 关闭浏览器cookie默认不存在了,但是可以设置cookie有效时长(setMaxAge)

    微信登录 /支付

    阿里云系列
    (1)OSS:文件存储服务器,添加讲师时候上传讲师头像
    (2)视频点播:视频上传、删除、播放(凭证),整合阿里云视频播放器进行视频播放
    (3)短信服务:注册时候,发送手机验证码

    Git 代码同步

    Docker & Jenkins(待补充) 手动打包和自动化部署


二、项目问题

  1. 前端问题-路由切换问题
    (1)多次路由跳转到同一个vue页面,页面中created方法只会执行一次
    (2)解决方案:使用vue监听

  2. 前端问题-ES6模块化运行问题
    (1)Nodejs不能直接运行ES6模块化代码,需要使用Babel把ES6模块化代码转换ES5代码 执行

  3. mp生成19位id值
    (1)mp生成id值是19位,JavaScript处理数字类型值时候只会处理到16位
    (2)js的number类型有个最大值(安全值),即2的53次方。更改ID为String,并更改策略为ID_WORKER_STR

  4. 跨域问题
    (1)访问协议,ip地址,端口号,这三个如果有任何一个不一样,产生跨域
    (2)跨域解决:在Controller添加注解;通过网关解决

  5. 413问题
    (1)上传视频时候,因为Nginx有上传文件大小限制,如果超过Nginx大小,出现413
    (2)413错误:请求体过大
    (3)在Nginx配置客户端大小
    (4)响应状态码:302(临时重定向)、401(用户凭证不正确)、403 (请求被拒绝)、404(资源未找到)、408(请求超时)、502(网关从上游服务器接收到无效的响应)、511(客户端需要进行身份验证才能获得网络访问权限)

  6. Maven加载问题
    (1)maven加载项目时候,默认不会加载src-java文件夹里面xml类型文件的
    (2)解决方案: 直接复制xml文件到target目录;通过配置实现


三、项目描述

1. 总体介绍

  • 在线教育商城,分为前台网站系统和后台运营平台,采用B2C模式。
  • 使用了微服务架构,前后端分离开发,前端有资源,后端自己做。

2. 项目功能模块 & 主要深入的模块

  • 分为前台系统和后台系统,前台系统包括:首页数据显示、课程列表和详情、课程支付、课程视频播放、微信登录 /支付等;
  • 后台系统包括:权限管理、课程管理、统计分析、课程分类管理等
  • 主要深入的模块为…

3. 项目涉及技术

  • 后端主要技术架构是:SpringBoot + SpringCloud + MyBatisPlus + EasyExcel + Nginx
  • 前端主要技术架构是:Node.js + Vue.js + element-ui + NUXT + ECharts
  • 其它涉及的中间件包括Redis、阿里云OSS和视频点播,业务中使用ECharts做图表展示;使用easyExcel完成分类批量添加;注册分布式单点登录使用了JWT。
  • 系统中包含前台会员和后台系统管理员与运营人员,数据库采用后台分库,每个微服务一个独立的数据库,使用了分布式id生成器
  • RPC
  • 系统架构图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值