谷粒学院知识点总结

2023-05-16

文章目录

  • 前言
  • 一、项目功能点
    • 1.后台管理系统功能
    • 2.前台系统功能
    • 3.总结项目技术点
  • 二、项目问题
  • 三、项目描述
    • 1. 总体介绍
    • 2. 项目功能模块 & 主要深入的模块
    • 3. 项目涉及技术


前言

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


一、项目功能点

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
  • 系统架构图
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

谷粒学院知识点总结 的相关文章

  • vncserver 开机自启动,免敲v…

    需求是我要用Windows下的VNC Viewer连接到Linux Server 我在Linux下面输入 vncserver 设置好密码 xff0c 好现在我就可以在Windows下面使用VNC连接到Linux桌面了 xff0c 这个时候如
  • FreeRTOS消息队列详解第一讲(全网最全)——消息队列概述

    一 队列简介 队列是为了任务与任务 任务与中断之间的通信而准备的 xff0c 可以在任务与任务 任务与中断之间传递消息 xff0c 队列中可以存储有限的 大小固定的数据项目 任务与任务 任务与中断之间要交流的数据保存在队列中 xff0c 叫
  • FreeRTOS消息队列详解第三讲(全网最全)——队列发送消息

    一 队列发送消息函数简介 创建好队列以后就可以向队列发送消息了 xff0c FreeRTOS提供了8个向队列发送消息的API函数 如下表所示 xff1a 1 函数xQueueSend xQueueSendToBack 和xQueueSend
  • FreeRTOS信号量详解第二讲(全网最全)——二值信号量

    一 二值信号量简介 二值信号量通常用于互斥访问或同步 xff0c 二值信号量和互斥信号量非常类似 xff0c 但是还是有一些细微的差别 xff0c 互斥信号量拥有优先级继承机制 xff0c 二值信号量没有优先级继承 因此二值信号另更适合用于
  • FreeRTOS——优先级翻转

    一 优先级翻转 在使用二值信号量的时候会遇到很常见的一个问题 优先级翻转 xff0c 优先级翻转在可剥夺内核中是非常常见的 xff0c 在实时系统中不允许出现这种现象 xff0c 这样会破坏任务的预期顺序 xff0c 可能会导致严重的后果
  • FreeRTOS信号量详解第四讲(全网最全)——互斥信号量

    一 互斥信号量简介 互斥信号量其实就是一个拥有优先级继承的二值信号量 xff0c 在同步的应用中 xff08 任务与任务或中断与任务之间的同步 xff09 二值信号量最适合 互斥信号量适合用于那些需要互斥访问的应用中 在互斥访问中互斥信号量
  • Altium designer AD原理图导入word文档、pdf,生成矢量图的方法;

    文章目录 参数选择 schematic 取消GDI 43 渲染文本 43 gt 减少渲染然后在复制到VISIO里面 xff0c 取消组合 gt 变成矢量图将矢量图粘贴在word 中或者再生成pdf 就不会糊了 参数选择 schematic
  • ROS2的基础概念

    前言 记录ROS2学习的各项核心概念 xff0c 便于后续复习 一 工作空间workshop 1 什么是工作空间 在ROS机器人开发中 xff0c 工作空间是一个存放项目开发相关文件的文件夹 xff0c 各种编写的代码 参数 脚本等文件 x
  • ubuntu多个系统之间文件局域网共享

    前言 xff1a 博主需要在多台主机上进行数据传输 xff0c 由于数据量比较大所以 xff0c 使用移动介质进行传输极为不方便 xff0c 并且也不没有更多的资源在两台主机都进行备份 下面的方式 xff0c 是博主在测试大量的网络上的帖子
  • idea如何清理缓存

    今天运行项目突然报错 检查半天 发现代码没问题 但就是报错 好气啊 最后解决办法就是把以前的缓存清理掉 问题解决 idea清理缓存的方法 File gt Invalidate Caches Restart
  • VNC登录失败:Authentication Failure

    遇到问题 xff1a 解决 xff1a 返回MobaXter xff0c 登录服务器 重置密码 回到VNC Viwer xff0c 重新连接
  • Haar特征

    一 Haar特征 特征是计算机视觉领域一种常用的特征描述算子 xff0c 特征 xff0c 描述图像的特征 xff0c 多用于人脸检测 行人检测 xff0c 等目标检测 xff0c Haar like特征模板内只有白色和黑色两种矩形 xff
  • 在线免费生成IntelliJ IDEA 15.0注册码

    http idea iteblog com key PHP
  • UCOSⅢ简介

    UCOS 简介 简述一 裸机系统与多任务系统二 UCOS 的重要特性三 UCOS 的组成 简述 UCOS xff08 UCOS的第三代内核 xff09 是一个可裁剪 可固化 可剥夺的多任务系统 xff0c 具有高度可移植性 xff0c 没有
  • 树莓派无屏幕无网线远程桌面连接配置方法

    要进行远程连接 xff0c 首先需要让树莓派连上网 xff0c 一种方法是使用网线 xff0c 另一种方法是使用WiFi 本文介绍后者 1树莓派WiFi的配置 没有网线的情况下 xff0c 要远程访问则只能通过WiFi 而由于没有屏幕 xf
  • 【C#可视化工具开发】(Visual Studio2017)利用echarts——1.界面设计

    C 可视化工具开发 近期在做一个可视化工具 xff0c 有关于指标对标相关内容 xff0c 用自己几乎没学到的Visual Studio 2017疯狂开发 xff08 碰壁 xff09 xff0c 由于总体的可视化工具还没做完 xff0c
  • 使用精灵标注助手生成json文件

    使用精灵助手教程 本文主要介绍如何使用精灵标注助手生成json文件 下载精灵标注助手 下载链接 xff1a http www jinglingbiaozhu com 选择windows版本进行下载 安装方式很简单 xff0c 就是一直nex
  • 关于Nginx配置文件在推流取流时的对应模块作用

    关于Nginx配置文件在推流取流时的对应模块作用 前言 xff1a 前提知识1 xff09 xff1a 取流地址只是我们从用于管理路面监控视频的DVR NVR的IP地址 xff0c 这里只需要知道该地址即可 重点是讲述推流和拉流nginx
  • go语言实战-----30-----token机制微信公众号签名验证的方法、XML解析,CDATA解析、交换协议、接收消息协议、被动回复消息协议、正则表达式

    一 token机制微信公众号签名验证的方法 1 token机制 token机制就是使用一个token 通常是一个字符串 xff0c 长度没有特别限制 xff0c 一般是10字节或者16字节 xff0c 然后按照一定的算法生成签名 xff0c

随机推荐

  • python下划线的5种类型

    python中5中下划线 学习的原文章1链接 学习的原文章2 双前导下划线解释 链接 1 单前导下划线 以单个下划线开头的变量或方法仅供内部使用 xff0c 有私有声明的作用 xff0c 但这并不是python语法的强制规定 xff0c 而
  • JAVA课后习题(一)——我是歌手

    大家好 xff01 我是小黄 xff0c 很高兴又跟大家见面啦 xff01 今天更新的是 xff1a JAVA程序设计课后习题 我是歌手往期检索 xff1a 程序设计学习笔记 目录 创建时间 xff1a 2020年10月23日 软件版本 x
  • 解决git时出现error: src refspec master does not match any问题

    问题复现 xff1a 今天在使用gitee创建仓库后上传写好的代码时报错 在远程关联仓库后无法正常推送 键入下图代码时报错error src refspec master does not match any xxx 解决方法 xff1a
  • 如何购买云服务器----以华为云服务器为例

    进入华为云官网 https activity huaweicloud com 登入自己注册的账户 进入控制台 点击界面里我的资源 弹性云服务器ECS 点击右上角 购买弹性云服务器 按照自己的需求选择 xff0c 重点注意 xff1a 计费方
  • Java编写MapReduce的步骤

    Mapper 自定义类继承Mapper类重写自定义类中的map方法 xff0c 在该方法中将K1和V1转为K2和V2将生成的K2和V2写入上下文中 二 Reduce 自定义类继承Reduce类重写Reducer中的reduce方法 xff0
  • PX4入门及开发指南

    PX4入门及开发指南 用户手册开发者手册 用户手册 https docs px4 cc master zh index html 开发者手册 https dev px4 cc master zh index html
  • 树莓派编译工作空间卡死

    树莓派编译程序时遇到卡死 1 树莓派安装的Ubuntu mate 16 04 系统默认设置的swap交换空间不够 xff0c 而编译某些文件的时候需要较大的交换空间 xff0c 树莓派的交换空间被用满所以树莓派看起来好像是死机了的样子 xf
  • 超好用但是很多人不知道的的串口(网络)调试助手推荐

    小众但是超好用的串口 xff08 网络 xff09 调试助手 前言O ComToll xff08 串口 xff09 格西烽火串口网络调试助手伏特加串口 xff08 网络 xff09 调试助手windows自带的串口调试助手总结 前言 这里的
  • STM32上可用的的SM 2 3 4国密算法

    可在STM32上使用的国密算法 SM 2 3 4 SM2SM3SM4 下面直接给出代码 xff0c 有问题可评论 xff0c 自己改动的 xff0c 测试不到的地方可能有bug xff0c 欢迎指正 SM2 由于SM2算法牵扯到一些较为复杂
  • Stm32下环境传感器-Stlm75-hts221-spg30(Hal)

    Stm32下环境传感器 Stlm75 hts221 spg30 xff08 Hal xff09 简介IIC驱动接口Stlm75hts221Spg30 简介 Stlm75与Hts221都是ST的传感器 xff0c 有官方例程 xff0c 我只
  • vscode makefile编译方法实例

    c出来 o 使用 o出来 bin NB二人组走天下 xff0c 目标 xff1a 依赖 xff0c 下一行tab 加命令 感觉时比较块上手的教程 xff0c 手写AI c语言中文网的makefile c语言中文网的就是按部就班 xff0c
  • 树莓派(三):将你的树莓派进行镜像备份

    0 前言 就像备份电脑一样 xff0c 你一定不想树莓派出错后重新配置树莓派 xff0c 将你的树莓派进行备份 1 建立img镜像文件 随便找一个地方 xff0c 新建一个文本文档 xff0c 命名为 你喜欢的名字 img 这时候就会生成一
  • 接口的理解、接口匿名实现类的创建

    接口的概述 xff1a 一方面 xff0c 有时必须从几个类中派生出一个子类 xff0c 继承它们所有的属性和方法 但是 xff0c Java不支持多重继承 xff0c 有了接口 xff0c 就可以得到多重继承的效果 另一方面 xff0c
  • 关于大疆经纬M100进行二次开发视觉跟踪和视觉SLAM的求助

    本人第一次接触大疆的二次开发 xff0c 现在的需求是使用M100进行二次开发能够实现视觉跟踪目标 xff0c 并能够实现视觉SLAM xff0c 但是我没有接触过二次开发 xff0c 希望各位有过经验的大佬能够不吝留言给我说一下具体实现的
  • 定义一个接口CanFly,描述会飞的方法public void fly();

    1 使用类与接口的知识完成如下要求 xff1a xff08 1 xff09 定义一个接口CanFly xff0c 描述会飞的方法public void fly xff08 2 xff09 分别定义类飞机和鸟 xff0c 实现CanFly接口
  • 在Keil4中新建51单片机工程模板详细步骤

    本文主要介绍51单片机学习和开发中的第一步 新建工程模板 对于刚开始学单片机的同学 xff0c 首先要在电脑上装好MDK4软件和CH340驱动 xff0c 然后也要有一个单片机烧录软件 xff08 一般买回来的单片机附带的资料里都会有这三个
  • Java笔试常用库函数

    字符串转数组 String s span class token operator 61 span span class token string 34 13 34 span span class token punctuation spa
  • Pytorch极简入门教程(十六)——DenseNet提取特征

    Pytorch之DenseNet提取特征 导入必要的模块 span class token keyword import span torch span class token keyword from span torch span cl
  • 1. 创建一个功能包(package)

    一 ros所有的进程都需要在工作空间下进行 首先 xff0c 在 home文件夹 任何目录都可以 下创建一个工作空间 xff1a source span class token operator span opt span class to
  • 谷粒学院知识点总结

    文章目录 前言一 项目功能点1 后台管理系统功能2 前台系统功能3 总结项目技术点 二 项目问题三 项目描述1 总体介绍2 项目功能模块 amp 主要深入的模块3 项目涉及技术 前言 谷粒学院知识点总结 xff0c 准备实习面试 一 项目功