✨ 一个集编程竞赛、算法学习、技术交流于一体的全栈式OJ平台
📢 同步于**掘金文章**
同步于**掘金**文章。
本人开发此网站从2024年7月7日开始规划。但是从2024年末开始,要考研,又要开发,又要带带新生,所以开发进度极慢,现在开发功能模块仅20个不到,许多前端和后端的细节处理还有很大问题,部分功能实现可能甚至需要实现重构处理。
可以通过**网站介绍部分直接查看,内容大概有3000**多字。
补充说明:本网站暴露接口共109个小接口。后端主要使用了注册器模式、适配器模式、单例模式等设计模式,后端目前主要配备了Redis、MySQL,使用Nginx部署前端,Docker部署后端,代码沙箱由Go实现。网站用户人数目前未127个。
预计调整: 有时间便会开始引入RocketMQ,同时会开始尝试引入MongoDB(如果服务器撑得住),Elaticsearch 完全带不动,不用尝试,至少得16核起步。
如不希望看下面这么麻烦的纯文字渲染,也可以直接访问网址查看**ByteOJ需求模块介绍**,其实也差不多。
- 普通用户可以在网页进行每10条帖子信息的懒加载模式查看
- 普通用户可以在登录情况下进行评论 + 针对某人进行评论操作
- 普通用户可以删除并修改自己的任意评论和帖子信息信息
- 普通用户可以查看自己发布过的帖子
- 管理员用户可以随意删除任何帖子 + 评论 + 帖子置顶功能
- ByteOJ首页内容介绍**(纯前端,网站开发内容介绍)**
- 普通用户的登录进行QQ邮箱注册
- 图案识别逻辑**(感觉有点麻烦)**
- 注册完毕之后,发短信至Mogullzr的信息当中**(核心仅仅为了了解这个服务)**
- 普通用户登录
- 普通用户忘记密码
- 普通用户个人中心各个信息展示
- 其他用户点击某用户头像显示用户信息
- 用户可上传头像图片并且设置自己的头像
- 用户可上传背景图片并且设置用户图片,管理员上传图片全体用户均可见
- 用户可以删除自己的图片
- 用户可以在编写题解的过程中上传图片到图床当中
- 分页查询题目的标题、题目ID、标签、难度、通过概率等**(每页50个题目)**
- 通过单标签搜索包含标签的题目信息
- 通过多标签搜索包含标签的题目信息
- 通过难度搜素对应难度的题目信息
- 通过搜索框模糊查询题目标题、算法标签相匹配的题目信息并加红显示
- 常见错误代码练习模块设计**(主要针对于用户经常会犯的代码进行更正性练习)**
- 个性化题库表单实现设计**(每个用户可以自定义属于自己的题目表单)**
- 开发每日扑克牌式抽题环节**(抽中完,写完之后可以.........(思考),暂时留个大漏洞给大家玩玩)**
- 管理员创建竞赛功能**(管理员则允许在管理员界面创建还没有公布的题目,同时管理员还可以选择开启摄像头监控功能,实时查询当前的用户的作弊概率)**
- 管理员搜分页查某竞赛所有Record信息
- 管理员进行竞赛排行榜导出功能 + 脚本自动化检测用户是否在其中功能实现
- 用户分页搜索竞赛的标题 + 创建用户 + 具体时间 + 参加人数等展示
- 用户返回上一道编写题目的题目地址记录**(一般题库里的题目 or 竞赛题目均可)**
- 用户查看具体竞赛的描述一系列信息展示
- 用户在竞赛过程中如竞赛前题目不可见、不可提交,提交记录非当前用户不可见等一系列逻辑不错误!!!(Bug已完整修复)
- 用户可多条件组合查找前10页的提交记录**(按照 用户名查找/题号查找/运行结果查找/运行时间排序/内存大小排序/代码长度排序/使用语言查找/提交时间排序等8种查找方式,提高用户体验)**
- 用户查询竞赛开始后的题目列表信息和具体题目信息
- 用户/管理员查看竞赛某Record的具体信息**(管理员允许在任何时间查看;在竞赛当中,用户仅仅允许自己的Record信息,但在竞赛之后允许查看所有用户的Record信息)**
- 用户分页查询竞赛的排名信息**(包括题目通过次数 + 某用户名次 + 某用户通过题目数量 + 某用户通过某题目的第一次AC记录信息 + 某用户未通过题目的尝试次数信息等)**
- 在竞赛时间一过直接进行封榜功能,用户提交不再记录到排名表当中
- 天梯分算法计算服务开通成功,使用的是类似于Codeforces的背后算分机制来进行的。(由于人比较少,因此分数变化可能还是蛮大的)
- 管理员进行代码查重功能**(用于防止两个人使用相似度极高的代码进行编写,使用)**
- 管理员进行AI代码检查功能**(用于检测某用户的提交代码记录是否为AI编写,这个功能即使做出来,准确性还是有很大出入的,核心还是代码查重 + 监控来防作弊)**
- 用户可以查看自己的竞赛曲线**(可参考许多知名OJ竞赛的样式)**
- 用户可以查看自己参加过的竞赛已经自己的表现状况
- 用户在单一大聊天室发送消息
- 分页查询聊天记录**(滚动懒加载实现)**
- 管理员允许随意删除任何用户的任何聊天记录
- 后续功能暂时滞留.............
- 管理员可以对每道题目的测试样例进行修改
- 用户可以随意调试 + 提交任意题目,并且提交代码时会根据后台的逻辑自动判断代码的正确与否
- 用户可以在学习专栏进行分页查找所有的课程信息
- 用户可以在特定的课程当中查看前言、题目、提交记录、排名、学习宝典等多种课程信息
- 用户可以提交每道题目的提交记录**(和acwing一样)**
- 仅仅管理员可以在后台进行课程的创建以及题目的设置、删除、修改功能
- 用户可以联系管理员将自己添加到某课程当中去,但是用户绝对是不允许自己参加课程当中的**(内容比较私密,暂时仅允许内部人员使用)**
- 用户可以查看自己报名的课程
- 管理员可以随机访问任何的课程页面并且管理员可以管理每个课程的用户
- 使用DeepSeek的接口实现对应的算法试题的讲解工作的自动生成**(后置Prompt)**
- 内置网站信息咨询机器人,可以询问关于网站的相关信息,可以让用户了解我们网站的相关信息**(后置Prompt)(可以考虑使用腾讯云的工具,费用估计不低)**
- 聚合搜索 帖子 + 算法试题 + 数学试题+ 408试题 + 用户 + 竞赛 + 课程 + 题解 + 博客
- 可以实现定位人物位置
- 可以进行比如说手指定位,人脸定位等等
- 可以进行简单的人脸识别
- 可以分析用户的微表情 + 感受 + 情绪
- 可以识别用户的各种行为,比如说喝水、吃东西、拿东西、使用手机、起身等等一系列动作,
- 通过对可疑行为的监控进行大范围的模型训练工作,比如说对于拿东西 + 使用手机 + 使眼神 + 说某些话语 + 微表情判定结合来判断当前用户的作弊概率大小以报告监考官。
- 日志通过拦截器进行异步拦截请求并且进行记录,分操作日志和异常日志两种,对应着两张表
- 日志IP定位升级**(每日5000次免费):精确定位至县区域链接**
- 可以多条件查询**(IP归属地、状态码、请求类型、操作人员准确名称、日志时间范围等条件)**
- 可以统计每天、每周、每月的操作日志、异常日志情况、用户访问情况、总用户数、活跃用户数**(当天请求>100)**、新增用户数、访问高峰期、平均响应时间、主要浏览器、操作系统平台等信息
- 可以通过日/周/月来获取日/周/月操作日志、异常日志对应信息从而在前端使用Echarts.js进行图表绘制
-
可以提供一个页面提供给同学们打卡每日所学**(类似于发帖,但是决定单独领出一个模块来处理)**
-
普通用户允许最多创建5个打卡任务**(具体需要什么参数之类,编写程序的时候再做详细处理)**
-
用户可以加入打卡任务并进行打卡,并且每日还会对用户进行提醒打卡任务尚未完成的提示信息**(详细不做声明,对于不打卡者可设定小惩罚之类的)**
-
管理员则是可以对打卡任务和提交记录进行监视管理工作
-
这里注意打卡完成之后可以有点小动画或者设计一些小奖励之类来提高打卡兴趣的措施**(暂定)**
- 用户可以对于测试样例弱、网页样式、功能方面的问题提交bug反馈单,填写对应信息
- 管理员可以查看所有用户提交的反馈单从而进行即使的反馈**(BOSS管理员应该可以收到消息)**
- 管理员可以选择驳回、已修复、暂不修复、修复中等状态
该功能旨在完成以下功能:
- [ ]
该功能旨在完成以下功能:
- 数据自动备份**(每周一的凌晨0点备份)**
- 熔断机制**(如果同一接口或者某种服务型功能出现10s时间段内出现很多次异常请求)**
- 操作行为分析(UEBA)(短时间内出现大量数据删除、导入情况)
- 数据库出现终端操作情况**(类似于高考分数系统的放数据篡改功能)**
- 一键回滚(Rollback)(实现代码的备份 + 回滚)
- 区块链存证(Blockchain Notarization)
该功能旨在完成以下功能:
- 多人在线编辑功能**(OT(Operational Transformation) 或 CRDT(Conflict-free Replicated Data Types) 解决冲突合并;WebSocket + 差分算法(Diff-Match-Patch)减少数据传输量)**
- SPIFFE(身份认证) + BeyondCorp(谷歌零信任模型)。
- AI-Native**(用户输入模糊需求(如“帮我规划一次日本旅行”),AI自动生成完整页面(详细内容再说)LLM(如GPT-4) + RAG(检索增强生成))**
- 免费 + 付费 + KOL**(可通过RBAC改良版本实现)**
- 用户标签系统(RFM模型) + 自动化权益发放(Coupon微服务)。
- 爬虫监控竞品价格(Scrapy) + 定价算法(Python/Pandas) + 规则引擎(Drools)
全面性优化前端样式,实时收集用户体验感,不断优化优化再优化;后端保证性能最大化,多类型数据库协调公用;RabitMQ实现代码调试提交功能,继续全面完成讨论、学习专栏、个性化博客功能。
全面提高作弊监控系统的质量,不断对其进行训练提高作弊监控系统的准确程度直到大学毕业。
针对于以上步骤,主要还是卡在第三阶段,因为开发过程中陆续有学校学生和我反馈bug,这也导致后端的屎山不断堆叠,对于最终的第四阶段,才是最最最核心的最最困难的部分!!!