{"repo":"lemon-puls/txing-oj-backend","free":true,"listed":false,"github":"https://github.com/lemon-puls/txing-oj-backend","clone":"git clone https://github.com/lemon-puls/txing-oj-backend.git","description":"Txing 是一个基于 Vue3 + SpringBoot 的在线编程学习平台，集成了在线做题、编程竞赛、即时通讯、文章创作、视频教程、技术论坛等功能模块。前端采用 Vue3 + TypeScript + Arco Design 构建，后端使用 SpringBoot + MyBatis-Plus，并集成 Redis、RabbitMQ、ElasticSearch 等中间件，同时基于 Docker 实现代码沙箱。项目架构完整，技术栈丰富，非常适合作为毕业设计参考项目、求职面试项目展示，或作为全栈开发的练手项目。目前已开源全部代码，欢迎 Star 和 Fork。","language":"Java","stars":30,"topics":["elasticsearch","java","mysql","netty","oj","rabbitmq","redis","spring-boot"],"license":null,"category":"databases-storage","readme_excerpt":"Txing 编程在线学习平台 项目简介 本项目旨在为编程爱好者和开发者提供一个高效、便捷的在线学习平台，该平台为集在线做题、编程竞赛、即时通讯、文章创作、视频教程、技术论坛为一体的综合平台，一站式地满足用户的各种编程学习需求，而无需在多个平台间来回切换学习。 系统分为客户端以及后台管理端两部分，两部分均采用前后端分离的架构。在前端中，主要使用 Vue3、TypeScript、CSS 等主流技术进行开发，在后端中，主要使用 SpringBoot、Mybatis-Plus 以及 Redis、Rabbitmq 等中间件以及 ElasticSearch 搜索引擎等技术进行开发。此外，代码沙箱基于 Docker、Shell 等技术进行实现。 代码仓库 名称 仓库地址 :---: :---: 客户端前端 GitHub - lemon-puls/txing-oj 客户端后端（包含代码沙箱）（✔） GitHub - lemon-puls/txing-oj-backend 管理后台前端 GitHub - lemon-puls/txing-admin-vue3 管理后台后端 GitHub - lemon-puls/txing-admin-backend 代码沙箱（单独） GitHub - lemon-puls/tx-code-sandbox 效果展示 做题模块 在题库中心界面，分页展示题目，其中分页查询主要使用了Mybatis-Plus自带的page方法实现，查询结果默认按照创建时间createTime降序排序，在拼接查询条件时，判断用户查询请求是否带上标签参数或者关键字参数，如果有，则在QueryWrapper对象中拼接上对应的参数，最后再到数据库查出目标记录。 题库中心界面如下图所示，找到合适的题目点击“Go”即可前往做题。 在做题界面，可以查看到题目的内容、评论、参考答案以及提交记录，其中代码编辑器是在开源的代码编辑器上进一步封装实现的，支持Java、JavaScript、Python以及C语言等多种编程语言的输入，同时支持代码关键字的高亮。此外，系统中基于字节跳动开源的Bytemd Markdown编辑器进一步封装，得到了用于展示MarkDown语法文本的组件MdView，在本界面中用于展示了题目的内容详情与答案。 用户在完成代码的输入后点击“提交作答”，即可在右下方的运行结果区域查看代码执行结果，如下图所示。 点击页头导航栏的图表图标，即显示用户个人在近10天的做题情况，其中包括折线图以及柱状图显示，如下图所示。可视化图表的实现，主要使用Echarts开源可视化库，使用折线图展示用户的做题数、提交数、通过数等，使用柱状图展示用户的做题通过率。 此外，在用户提交作答后，作答将会交由后端处理，后端调用代码沙箱执行代码，进而获取执行结果以及完成判题。 文章模块 在文章检索界面，可以快速查找到目标文章，并且在检索结果中会高亮显示检索关键字，如下图所示。对于文章记录的请求，主要使用了懒加载的方式，文章记录分页返回，通过监听浏览器滚动条的滚动事件，只有当界面滚动到底部才会触发请求下一页文章记录并且展示，以免造成资源浪费。 在文章撰写界面，左侧基于MarkDown语法撰写文章内容，在界面右侧可以看到文章的实际效果，主要是基于ByteMd编辑器实现，效果如下图所示。 撰写完文章内容后，点击右上角的“发布”按钮，就会弹出可以上传文章封面图、编写文章简介的弹窗，完成后点击“发布文章”即可，如下图所示。 课程模块 在课程检索界面，可以输入关键词查找课程，并且在检索结果中显示每个","default_branch":null,"files":null,"tree":[],"storefront":"/r/lemon-puls","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/lemon-puls/txing-oj-backend/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}