【项目】小帽教育(一)

news2025/1/18 17:12:37

小帽教育

第一章 项目开发环境搭建

一、项目背景

1.在线教育市场环境

在线教育行业是一个有着极强的广度和深度的行业,从校内到校外;从早幼教到职业培训;从教育工具到全信息化平台等等。

2020年的新冠疫情外生冲击,让在线教育再次站在聚光灯下。疫情下教育领域获融资最多,而其中在线教育最受资本青睐。据艾瑞咨询统计,2020年教育行业累计融资1164亿元,其中在线教育融资金额1034亿元,占比89%。与此同时,在行业处于困境的情况下,会加速洗牌,资源向好的企业集中。2020年资源向头部集中趋势明显,中小型机构生存更加困难。2020年资本向在线教育行业累计输送的1034亿元中,80%都流向了头部的5家公司。

To C市场

据艾瑞咨询统计核算,2020年中国在线教育行业市场规模2573亿元,过去4年的CAGR达34.5%,其中低幼及素质教育赛道、K12学科培训赛道在线化进程加快是在线教育市场快速增长的最主要贡献因素。疫情影响下,低幼及素质教育领域的在线化范围持续纵深,职业教育领域的在线化进程也在不断加速,新的供给和需求不断产生。但同时,2020年疫情外生冲击加快了2020年的在线教育进程,将会透支一部分2021年的增速,艾瑞预计2021年在线教育行业同比增速将回落到20%左右。

在这里插入图片描述

To B 市场

疫情也加速了整个教育产业链的进化,to B机构快速成长起来,扮演着赋能者的角色,课程内容、招生、师训、直播系统、管理系统等产品及服务大量涌现。随着云服务发展成熟以及疫情对直播课需求的催化,大量提供直播授课系统等PaaS/SaaS服务的机构迅速成长起来,成为各种会展上的主力军。

在这里插入图片描述

2. IT培训市场规模

中国IT人才供给报告(https://new.qq.com/rain/a/20210831A01JI600)

IT人才总体供不应求,高中低人才分别占比8%、41%、51%,详见下图:

在这里插入图片描述

IT服务是贯穿IT应用系统全生命周期的各项服务的统称,下图是IT服务产品图谱,本项目属于IT培训产业。

在这里插入图片描述

下图是IT培训市场规模:
在这里插入图片描述

二、项目介绍(面试)

请添加图片描述

1. 项目介绍

小帽教育项目借鉴了MOOC(大型开放式网络课程,即MOOC(massive open online courses))的设计思想,是一个提供IT职业课程在线学习的平台,它为即将和已经加入IT领域的技术人才提供在线学习服务,用户通过在线学习、在线练习、在线考试等学习内容,最终掌握所学的IT技能,并能在工作中熟练应用。

在线教育的模式出现多种多样,包括:B2C、C2C、B2B2C等业务模式。小帽教育采用B2B2C业务模式,即向企业或个人在线教育平台提供教学服务,老师和学生通过平台完成整个教学和学习的过程,市场上类似的平台有:网易云课堂、腾讯课堂等,学成在线的特点是IT职业课程在线教学。

2. 功能模块与演示

本项目包括门户、个人学习中心、教学机构管理平台、运营平台、社交系统、系统管理6个模块 。

在这里插入图片描述

本项目主要包括三类用户角色:学生、教学机构的老师、平台运营人员。

主要讲解下边的业务流程:

1、教学机构的老师登录教学管理平台,编辑课程信息,发布自己的课程。

2、平台运营人员登录运营平台审核课程、视频等信息,审核通过后课程方可发布。

课程编辑与发布流程如下:

在这里插入图片描述

3、课程发布后学生登录平台进行选课、在线学习。

免费课程可直接学习,收费课程需要下单购买。

学生选课流程如下:
在这里插入图片描述

三、项目的技术架构(面试)

1. 项目技术架构

​ 小帽教育项目采用当前流行的前后端分离架构开发,由以下流程来构成:用户层、CDN内容分发和加速、负载均衡、UI层、微服务层、数据层。

项目技术架构图

在这里插入图片描述

技术架构列表

序号名称功能描述
1用户层用户层描述了本系统所支持的用户类型包括:pc用户、app用户、h5用户。pc用户通过浏览器访问系统、app用户通过android、ios手机访问系统,H5用户通过h5页面访问系统。
2CDNCDN全称Content Delivery Network,即内容分发网络,本系统所有静态资源全部通过CDN加速来提高访问速度。系统静态资源包括:html页面、js文件、css文件、image图片、pdf和ppt及doc教学文档、video视频等。
3负载均衡系统的CDN层、UI层、服务层及数据层均设置了负载均衡服务,上图仅在UI层前边标注了负载均衡。 每一层的负载均衡会根据系统的需求来确定负载均衡器的类型,系统支持4层负载均衡+7层负载均衡结合的方式,4层负载均衡是指在网络传输层进行流程转发,根据IP和端口进行转发,7层负载均衡完成HTTP协议负载均衡及反向代理的功能,根据url进行请求转发。
4UI层UI层描述了系统向pc用户、app用户、h5用户提供的产品界面。根据系统功能模块特点确定了UI层包括如下产品界面类型: 1)面向pc用户的门户系统、学习中心系统、教学管理系统、系统管理中心。 2)面向h5用户的门户系统、学习中心系统。 3)面向app用户的门户系统、学习中心系统。
5微服务层微服务层将系统服务分类三类:业务服务、基础服务、第三方代理服务。 业务服务:主要为学成在线核心业务提供服务,并与数据层进行交互获得数据。 基础服务:主要管理学成在线系统运行所需的配置、日志、任务调度、短信等系统级别的服务。 第三方代理服务:系统接入第三方服务完成业务的对接,例如认证、支付、视频点播/直播、用户认证和授权。
6数据层数据层描述了系统的数据存储的内容类型,关系性数据库: 持久化的业务数据使用MySQL。 消息队列:存储系统服务间通信的消息,本身提供消息存取服务,与微服务层的系统服务连接。 索引库: 存储课程信息的索引信息,本身提供索引维护及搜索的服务,与微服务层的系统服务连接。 缓存: 作为系统的缓存服务,作为微服务的缓存数据便于查询。 文件存储: 提供系统静态资源文件的分布式存储服务,文件存储服务器作为CDN服务器的数据来源,CDN上的静态资源将最终在文件存储服务器上保存多份。

流程说明

  1. 用户可以通过pc、手机等客户端访问系统进行在线学习。
  2. 系统应用CDN技术,对一些图片、CSS、视频等资源从CDN调度访问。
  3. 所有的请求全部经过负载均衡器。
  4. 对于PC、H5等客户端请求,首先请求UI层,渲染用户界面。
  5. 客户端UI请求服务层获取进行具体的业务操作。
  6. 服务层将数据持久化到数据库。

2. 项目技术栈

​小帽教育按照技术分层的基础上,需要对主要层次使用具体的技术作说明。下面是小帽教育技术栈结构图。

技术栈(技术结构图)

在这里插入图片描述

四、项目开发环境搭建

1. 开发工具配置

​在项目开发前期,需要将本地开发环境进行统一配置,方便后期开发中出现因环境问题引起的异常。在真实开发中也是一样的,开发前,需要对开发环境进行统一配置。不同的公司会有不同的开发环境配置,这里需要大家引以重视,到公司开发前一定要先将本地开发环境进行统一。

1.1 开发工具版本

服务端开发基础工具版本列表

开发工具版本号
IntelliJ-IDEA2021.x以上版本
JavaJDK-1.8.x
Maven3.6.x以上版本
Mysql8.x
VMware-workstation15.x
CentOS7.x
nacos-server-1.4.1
rabbitmq3.8.34
redis6.2.7
xxl-job-admin:2.3.1

​项目应从基础 JDK 环境开始配起(基础),需要自行做JDK环境变量配置和IDEA中配置JDK。

1.2 IDEA环境配置
1.2.1 IDEA配置环境编码

在这里插入图片描述

上图解释:
注释①:全局字符集设置 UTF-8
注释②:项目(Project)字符集设置 UTF-8
注释③:项目中的properties文件的编码集设置 UTF-8,后面的选项要勾选,这样中文字符会自动转化为16进制

1.2.2 IDEA设置 Java 编译级别

在这里插入图片描述
在这里插入图片描述

上图解释:
注释①:设置 JDK 版本
注释②:设置 Java 编译级别

1.2.3 IDEA自动导包设置

IDEA可以自动优化导入包,但是有多个同名的类调用不同的包,必须自己手动Alt+Enter设置
下面可以通过设置来进行导包优化。
在这里插入图片描述

上图解释:
勾选上图面板中的两个选项

1.2.4 IDEA代码提示忽略大小写

IDEA代码提示默认是区分大小写的,设置为提示忽略大小写,编译我们后期的开发。
在这里插入图片描述

上图解释:
注释①:在Code Completion选项面板中,去掉 Match case 前的选项 。

1.2.5 设置代码注释模板

为了规范代码编写,一般在企业中会有自己的开发规范,开发规范中对代码的注释也会有一定的规范,比如下边的规范:

1、所有的类、接口、枚举类型、类的属性、方法的都强制要求编写注释,注释必须使用javadoc规范,使用/***/多行注释格式,不允许使用//xxx单行注释方式。比如下边的注释是不允许的:

//本类是一个测试类
//本类的功能是....
class T1{


}

2、所有的类、接口、枚举类型的注释要求写明作者、功能、日期。

3、代码如果修改需要修改相应的注释。

IDEA提供代码注释模板,方便团队规范代码 的注释。

下边配置IDEA上的代码注释:

1、注释中作者信息非常重要,可以通过虚拟机环境变量进行配置。

点击 Help->Edit Custom VM Options…打开idea.vmoptions文件,在最下面增加一行-Duser.name=用户名。

2、配置类、接口、枚举注释模板。

打开IDEA代码模板配置界面,分别配置Class、Interface、Enum.

在这里插入图片描述
注释模板内容如下:

 /**
 * @description TODO
 * @author ${USER}
 * @date ${DATE} ${TIME}
 * @version 1.0
 */

3、配置方法模板
打开Line Templates界面
在这里插入图片描述
首先添加一个Template Group:
在这里插入图片描述
输入名称,点击“OK”
在这里插入图片描述
在分组下添加代码模板
在这里插入图片描述
点击“Change”,选择Java下的所有项目
在这里插入图片描述
填写模板的内容:

Abbreviation:输入*星号,在方法上输入反斜杠加星号自动生成注释。

Description:模板的描述

Template text: 模板内容

如下:

**
 * @description TODO
 * $params$
 * @return $return$
 * @author $user$
 * @date $data$ $time$
*/

点击Edit Variables编辑模板中用的变量
在这里插入图片描述
对于params方法的参数需要填写脚本,如下:

groovyScript("if(\"${_1}\".length() == 2) {return '';} 
else {
def result=''; 
def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();
for(i = 0; i < params.size(); i++) {
if(i==0){result+='@param ' + params[i] + ' '}
else{result+='\\n' + ' * @param ' + params[i] + ' '}}; 
return result;}", methodParameters()
);

其它项目按照上图填写,点击“OK”。

1.3 Maven仓库配置

​maven使用3.6以上的版本,此项目使用apache-maven-3.8.6-bin.zip。

​复制好maven仓库,在本机中Maven的setting.xml文件中配置maven仓库位置,maven仓库的目录路径不要有特殊字符和中文(切记)

1.3.1 Maven中配置仓库位置

在Maven的conf目录中setting.xml文件中配置好仓库的位置并配置阿里云中央仓库地址。

解压仓库 repository.zip 到本地硬盘

在这里插入图片描述

配置到conf目录中的setting文件中

在这里插入图片描述
在这里插入图片描述

maven的中央仓库设置为阿里云服务

在这里插入图片描述

1.3.2 IDEA中配置maven

下边在idea中配置maven安装目录及本地仓库的位置。

​在IDEA中: File --> Settings --> Build --> Build Tools --> Maven

Maven项配置

在这里插入图片描述

下图中的 ① ② ③ 项要配置成自己本地中的路径位置

在这里插入图片描述

上图解释:
注释①:设置自己的maven路径(maven的根目录)
注释②:配置maven的settings文件的位置
注释③:配置maven的仓库位置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/161759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android 深入系统完全讲解(14)

2 如何定位编译问题 编译不出来&#xff0c;编译不生效&#xff0c;都是可以用比对的方式去处理。之前遇见只改资源单编译不生效&#xff0c;跟正常的一比较发现是系统编译机制是判断代码的时间戳&#xff0c;而不管资源目录&#xff0c;于是处理的方式就是单编配置强制&#…

过年了,我采集采集m3u8格式做做动态壁纸不过分吧

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 首先澄清一下&#xff0c;我用Python收集这些视频&#xff0c;绝不是想做别的什么&#xff0c; 真的只是用来做动态壁纸&#xff0c;大家不要误会&#xff01;我不是那样的人~ 这样的不过份吧 &#x1f63b; 环境 Python…

二叉树的深度 | 分治 +回溯 + 迭代

二叉树的最大深度 leetcode https://leetcode.cn/problems/maximum-depth-of-binary-tree/ 回溯基本思路 二叉树的最大深度就是 : 从根节点到叶子节点的最大的深度 定义一个全局变量 int res 0 , 以及局部变量 depth 表示当前层的深度当我们访问到根节点的时候(前序位置), 就…

亿信华辰出席2022DAMA中国数据管理峰会,共话数据治理

2023年1月7日-8日&#xff0c;万众瞩目的2022DAMA中国数据管理峰会在上海成功举办&#xff0c;国内外知名行业领袖、业内优秀企业代表出席了会议。会上&#xff0c;围绕 “数据基础制度和数字化转型”主题&#xff0c;前沿观点高能碰撞、专家学者共话未来。亿信华辰首席运营官毛…

CTP开发(1)CTP开发的概述

CTP是上海期货交易所开发的一套程序化交易的API。这篇文章呢&#xff0c;是进行扫盲和引路的&#xff0c;让你在开发时可以少走弯路。1、如果你要进行CTP开发&#xff0c;那么先是在模拟环境下调试&#xff0c;这就需要去上期的仿真模拟网站simnow下载相应的API包。地址如下&am…

[数字信号处理]时域中的离散时间信号和系统

离散时间信号最基本的形式是定义在等间隔的时间离散值上&#xff0c;且在这些离散时间上的信号振幅值是连续的。离散时间系统则是输入为离散时间信号输出也是离散时间信号的系统。对于线性时不变&#xff08;LTI&#xff09;系统来说&#xff0c;我们可以发现LTI系统与该系统的…

【4】Kubesphere_多租户

目录 创建企业空间角色 邀请新成员 部门管理 准备工作 创建部门 分配用户至部门 从部门中移除用户 删除和编辑部门 进入访问控制 可以配置企业空间、用户和用户角色 企业空间角色页面列出了以下四个可用的内置角色。创建企业空间时&#xff0c;KubeSphere 会自动创建内…

对称加密面临的那些挑战

密码对于多数人&#xff0c;是既熟悉又陌生的存在&#xff0c;注册账户、登录账号、网购&#xff0c;网络上的开展大多数行为都需要基于输入密码这一前提&#xff0c;从这方面谈&#xff0c;我们熟悉且熟知密码。然而这些由简单的字母、数字、符号等构成的简单口令&#xff0c;…

Spring Data默认值的错误

Spring Data有很多配置的默认值&#xff0c;但不一定都适合你。如一个依赖Cassandra 的项目&#xff0c;有时写入数据后&#xff0c;并不能立马读到。这种错误并没有什么报错&#xff0c;一切都是正常的&#xff0c;就是读不到数据。 1 源码解析 直接使用 Spring Data Cassan…

化繁为简,数字化推动企业数据库升级焕新 | 爱分析报告

报告编委 黄勇 爱分析合伙人&首席分析师 洪逸群 爱分析高级分析师 张良筠 爱分析分析师 外部专家&#xff08;按姓氏拼音排序&#xff09; 李远志 柏睿数据 副总裁 谢寅 镜舟科技 资深解决方案架构师 许哲 中信建投证券 数据组VP 姚延栋 YMatrix 创始人&#xff06;CEO 张晨…

实体店店铺管理软件应该怎么挑?有这几个功能的错不了!

现在开实体店的都是勇士&#xff0c;不仅要和同行竞争&#xff0c;还要和电商、直播竞争&#xff0c;没有点秘密武器根本不能生存。秘密武器之一&#xff0c;就是在做生意路上摸爬滚打多年的实体店老板们都在用的——实体店店铺管理软件&#xff01;它会帮助你从手工记账迈入智…

【敲敲云】零代码平台快速入门指南 — 下篇

敲敲云快速入门指南—上篇&#xff0c;我们已经介绍了工作表、视图的使用&#xff0c;现在我们再来看一下自动化工作流和仪表盘的使用 6、创建自动化工作流 工作流是由触发器和若干自动化任务节点组成。为触发器设置一个触发条件&#xff0c;当数据的变更符合触发条件时&#…

Linux系统中的文件查看和查询命令

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Java案例分…

向“全栈”进发,大型线上商城实战项目,Spring Boot + Vue 前后端分离版本的商城来了(文末有视频)

新蜂商城 Vue 版本&#xff0c;它来了&#xff01;&#xff08;文末有视频&#xff09; 如上图所示&#xff0c;新蜂商城 Vue 版本已经开发完成&#xff0c;这是新蜂商城开源项目的第一个大版本更新&#xff0c;根据大量的用户调研&#xff0c;最终决定将新蜂商城升级为 Spring…

DC-2 靶场实操

靶场搭建 ​ 靶场部署 下载网址&#xff1a;https://www.vulnhub.com/?qDC- tips&#xff1a;强烈建议各位师傅们使用迅雷或idm要不然下载靶场将是一个十分痛苦的环节 之后环境搭建操作步骤一致故此处搭建环境以DC-1为例 将下好的压缩包解压&#xff0c;你就会看到一个.ov…

堆排序(升序降序)

堆排序是利用堆这种数据结构而设计的一种排序算法&#xff0c;堆排序是一种选择排序&#xff0c;它的最坏、最好、平均时间复杂度均为O(nlogn)&#xff0c;是不稳定排序。 小根堆&#xff08;最小堆&#xff09;&#xff1a;每个结点的值都<其左右孩子结点的值。 大根堆&…

跨境电商独立站多语言,fecify saas商城解决方案

跨境独立站&#xff0c;面向的是全球国家&#xff0c;每个国家都有自己的语言&#xff0c;譬如&#xff1a;英语&#xff0c;德语&#xff0c;法语&#xff0c;俄语&#xff0c;西班牙语&#xff0c;葡萄牙语&#xff0c;韩语&#xff0c;日语&#xff0c;阿拉伯语&#xff0c;…

Latex-表格和图片

双栏排版表格跨栏加*号\begin{table*}...\end{table*}表格整体尺寸修改\resizebox{列宽}{行高}{...}列宽、行高可以为数值&#xff08;如50mm&#xff09;&#xff0c;也可以根据文字调整&#xff08;如\textwidth指自适应文字宽度&#xff09;表格内文字居中\begin{tabular}{c…

TypeScript变量声明,声明变量的关键字,变量的类型推导

目录 1.变量声明 2.赋值其他类型的值 3.声明变量的关键字 4.变量的类型推导&#xff08;推断&#xff09; 1.变量声明 声明了类型后TypeScript就会进行类型检测&#xff0c;声明的类型可以称之为类型注解&#xff1b; var/let/const 标识符: 数据类型 赋值; 这里的string是…

拉伯证券|年报行情如火如荼 博弈“超预期”还须警惕“风险点

本周以来&#xff0c;在指数转入高位盘整的背景下&#xff0c;A股商场资金围绕年报头绪展开布局&#xff0c;“年报预增”一跃成为商场最强主线&#xff0c;不少成绩预增公司短期股价收获明显超额收益。 Choice数据显现&#xff0c;截至1月12日盘前&#xff0c;开年以来共136家…