项目描述:
学享云校管理系统:主要是以年级、班级为单位,进行老师和学生信息记录和统计功能。项目采用前后端分离架构思想,前端采用HTML+CSS+VUE来实现页面效果展示,后端采用SpringBoot+MybatisPlus框架实现数据存储等服务。存储层使用高性能的MySQL,服务器使用SpringBoot内置的Tomcat9.x,项目构建工具使用Maven来管理jar包和项目构建。
技术选型:
前端技术栈:HTML、CSS、VUE、Axios
后端技术栈:Spring、SpringBoot、Swagger
数据层:Mysql、MybatisPlus
工具:Maven、Tomcat
项目模块:首页、学生管理模块、教师管理模块、班级管理模块、管理员管理模块、个人信息管理模块
项目亮点:
使用渐进式框架VUE,使项目的分工更加明确:后端:负责处理、存储数据. 前端:负责显示数据 前端和后端开发人员通过 接口 进行数据的交换。
Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地new一个对象,而是让Spring框架帮你来完成这一切,在项目中以粘合剂的形式存在。
SpringMVC在项目中拦截用户请求,核心是Servlet,即DispatcherServlet承担中介或前台的职责,将用户请求通过HandlerMapping匹配Controller。
MyBatis-plus为Mapper接口,Service层提供一些比较全面的CURD的业务逻辑功能,使程序员可以减少在Mapper和Service层的代码编写。
项目描述:
基于Spring Boot + Spring Cloud 微服务 + Docker( + Vue 3 + Arco Design)的编程题目在线评测系统。在系统前台,管理员可以创建、管理题目;用户可以自由搜索题目、阅读题目、编写并提交代码。在系统的后端,能够根据管理员设定的题目测试用例在自主实现的代码沙箱中对代码进行编译、运行、判断输出是否正确。其中,代码沙箱可以作为独立服务,提供给其他开发这使用。
技术选型:
前端:
Vue 3 + Vue-CLI脚手架 + Vuex状态管理
Arco Design 组件库 + 前端工程化:ELint + prettier + TypeScript
后端:
Java Spring Cloud + Spring Cloud Alibaba 微服务 + Spring Boot
Nacos注册中心 + Gateway + Docker
MySQL + Mybatis-Plus + Redis分布式session + RabbitMQ
主要工作:
系统架构:根据功能职责,将系统划分为负责核心业务的后端模块、负责校验结果的判题模块、负责编译执行代码的可复用代码沙箱。各模块之间相互独立,并通过API接口和分包的方式实现协作。
库表设计:根据业务流程自主设计用户表、题目表、题目提交表、并通过给题目表添加userId索引提升检索性能。
自主设计判题机模块的架构,定义了代码沙箱的抽象调用接口和多种实现类(比如远程/第三方代码沙箱),并通过静态工厂模式+spring配置化的方式实现了对多种代码沙箱的灵活调用。
使用代理模式对代码沙箱接口进行能力增强,统一实现了对代码沙箱调用前后的日志记录,减少重复代码。
由于判题逻辑复杂、且不同题目的判题算法可能不同(比如Java题目额外增加空间限制),选用策略模式代替if-else独立封装了不同语言的判题算法,提高系统的可维护性。
为了保证沙箱宿主机的稳定性,选用Docker隔离用户代码,使用Docker Java库创建容器隔离执行代码,并通过tty和Docker 进行传参交互,从而实现了更安全的代码沙箱。
为保证项目各模块的稳定性,选用Spring Cloud Alibaba 重构单体项目,(使用Redis分布式session存储登录用户信息)并将项目划分为用户服务、题目服务、判题服务、公共模块。
根据这两个项目总结个人会的技术点