2.用户表3.题目提交表 | | | | |
| | | | |
| | | | |
| | | | |
| | | | 判题结果信息(包含message、memory、time等) |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
四、详细设计
1. 前端设计
注册 / 登录页面:简洁表单布局,支持账号密码校验、密码强度提示,跳转链接居中显示。
题目列表页面:支持名称 / 标签搜索,表格展示题号、标题、通过率、创建时间,分页加载。
题目创建页面:Markdown 编辑器(题目描述 / 答案),判题配置输入框,测试用例动态增删。
代码提交页面:左右分栏布局(左侧题目详情 / 右侧代码编辑器),支持多语言切换,实时保存输入。
判题结果页面:表格展示提交记录、编程语言、判题状态(通过 / 错误)、耗时 / 内存占用。
2. 后端设计
权限控制:通过@AuthCheck注解 + 拦截器实现角色校验,管理员仅可执行题目修改 / 删除操作。
判题逻辑:采用异步处理(CompletableFuture),代码沙箱限制文件操作、网络访问,设置内存 / 时间阈值。
数据处理:MyBatis Plus 实现数据库 CRUD,Redis 缓存热点数据,定时更新缓存与数据库一致性。
异常处理:全局异常拦截,自定义错误码,统一返回格式(成功 / 失败状态 + 数据 / 提示信息)。
3. 安全机制设计
代码安全:禁止文件操作、命令执行、权限提升等危险行为。
资源限制:单用户提交代码内存限制 1000MB,时间限制 1000ms,防止服务器过载。
数据安全:用户密码 MD5 加盐加密存储,敏感接口需登录验证。