sduoj
文章平均质量分 74
孤名为義
摸鱼!摸鱼!摸鱼!
展开
-
【sduoj】记录访问日志
2021SC@SDUSC 在 sduoj 项目的开发中,日志是一个难以回避的存在。虽然就算没有日志的记录系统也能运行,但是当系统出现异常的时候,我们便可以通过查看日志来寻找异常出现的地点,以便于达到快读定位、快速解决异常的目的。我们需要对每个访问都进行记录,这时我们可以编写一个中间件,每个请求到来的时候,都会通过这个中间件。这样的话,我们便可比较容易的获取它的请求方法、响应码、方法调用开始时间、方法调用结束时间等信息。原创 2021-11-05 09:33:45 · 224 阅读 · 0 评论 -
【sduoj】导入 Excel
2021SC@SDUSC 学生管理是 sduoj 项目中不可或缺的一部分,系统中的许多功能都需要用户在完成学生认证后才能进行。学生认证就是建立虚拟账号与现实身份的一对一对应关系,创建账号的工作可以由学生自己完成,而现实身份的数据可能就需要教师或管理员来上传。为了尽可能简化管理员或教师的操作流程,在能够上传单个学生数据的同时,这些角色应该也能通过上传 Excel 文件的方式来实现快速批量上传。原创 2021-11-03 22:17:44 · 331 阅读 · 0 评论 -
【sduoj】RPC应用
2021SC@SDUSC 在 oj 项目中,服务端并不是一个不可分割的整体,而是可以根据职责划分为成多个子服务,比如能够处理前端请求的服务、能进行判题的服务等。那么这些服务之间要如何进行通信呢?这里我们选用 RPC。相比于 Restful,RPC 更加轻量级,也更加高效,适合系统内的服务通信。原创 2021-11-02 09:37:56 · 253 阅读 · 0 评论 -
【sduoj】用 validator 进行接口校验
2021SC@SDUSC 在 sduoj 项目中,服务端需要接收来自前端的请求,根据不同的请求来进行不同的业务处理。如果没有一个规范化的约束的话,服务端就有可能接收到不合理的请求。为了避免参数的错误导致业务逻辑的混乱,我们需要一种接口校验机制,来退回这些不合理的请求。原创 2021-10-26 15:29:24 · 321 阅读 · 0 评论 -
【sduoj】身份认证与获取令牌
2021SC@SDUSC 在上一篇文章中我们提到了如何生成和解析 JWT,接下来我们逐步分析如何去使用它。首先,在我们的系统中,对于每个用户来说,他们的账号和密码是不同的,我们要根据这些信息,来生成一个 Token 令牌,以后进行接口调用的时候,只需要出示令牌即可,不需要重新输入账号密码。原创 2021-10-25 21:04:57 · 285 阅读 · 0 评论 -
【sduoj】生成和解析 JWT
2021SC@SDUSC 在sduoj项目中,我们有四种角色:管理员、教师、学生、普通用户。如果仅仅是通过调用的接口路径的不同来区分这些角色的话,容易引发一些危险的行为。比如,当一个普通用户知道了该项目的管理员接口,那他的行为就有可能造成系统的混乱。因此,我们需要给项目加一点防御,对接口进行访问控制。原创 2021-10-20 11:01:44 · 740 阅读 · 0 评论 -
【sduoj】开启文件服务
2021SC@SDUSC引言上一期提到,我们可以向服务器发送文件,那我们怎么从服务器获取到这些文件呢?func NewRouter() *gin.Engine { r := gin.New() r.StaticFS("/static", http.Dir(global.AppSetting.UploadSavePath)) ...}源码分析r.StaticFS方法对relativePath禁用了:和*,使得该方法不能接收 URL 参数,然后它调用createStaticHandler获得原创 2021-10-17 16:36:31 · 245 阅读 · 0 评论 -
【sduoj】实现文件上传功能
2021SC@SDUSC 在sduoj项目中,文件上传是必不可少的,上传用户头像需要提交图片,上传测试点文件需要提交压缩文件,那么我们的服务器是如何接收来自用户的上传文件请求呢?原创 2021-10-16 22:38:23 · 205 阅读 · 0 评论 -
【sduoj】后端框架的引入
2021SC@SDUSC sduoj是一个web应用,为了提高该项目的开发效率,我们可以选用一个后端框架。这里选用的是gin框架,它具有高性能、小巧、易用的优点,并深受gopher的喜爱。原创 2021-10-11 21:09:14 · 356 阅读 · 0 评论 -
【sduoj】打造命令行应用
2021SC@SDUSC 作为一个oj系统,它往往不能只判断一种语言的提交结果,它甚至可能支持所有常见的语言类型。但是,不同的语言所需要的编译运行命令是不同的,如果把判断语言类型的工作交给判题机来完成的话,当新增一门新的支持语言或移除一门过时的语言时,我们可能需要修改判题机的源码,这无疑不利于系统的维护。 这时,我们需要一个能够连接判题机和不同语言的编译器的桥梁,来满足我们的需求。原创 2021-10-07 23:01:29 · 117 阅读 · 0 评论 -
【sduoj】让程序执行外部命令
2021SC@SDUSC 与选择题、填空题不同的是,编程题很难用比较字符串是否相同的方式来判断正误。对于某些稍微复杂点的题目,一千个人可能提交一千份不同的代码。评判某份代码是否是正确的,只要看它能不能跑出正确的结果就行了。 那么如何让计算机来执行判题操作呢?原创 2021-10-06 21:01:13 · 352 阅读 · 3 评论 -
【sduoj】深入理解缓冲区
2021SC@SDUSC 在一个oj系统中,最核心的内容是判题部分。无论是现实中的用户,还是一台判题机,要检测用户写出的代码是否是正确,只需要编译运行代码所在的源文件,然后比较程序输出结果与标准答案是否相同。 在不同的题目中,程序读取的值的数量不同,在某些比较复杂的题目中,程序读取的值可能多得难以想象。这时,我们需要一个存储这些数据的结构,这里选用的是缓冲区。原创 2021-10-04 22:11:46 · 275 阅读 · 1 评论 -
【sduoj】系统综述
2021SC@SDUSC 本项目名称为学生程序设计能力提升平台,是山东大学软件学院学生开发的一套程序在线评测系统。 开发该系统的目的是丰富教学活动。在一些编程相关的课程中,教师可以通过该系统为学生布置一系列编程题目,让整个教学活动不再局限于过去死板的教学方式,使得学生能在实践中加深对知识的理解。原创 2021-09-29 19:57:44 · 747 阅读 · 0 评论 -
【sduoj】项目环境配置
2021SC@SDUSC 对oj的环境做一下配置原创 2021-09-25 22:21:04 · 181 阅读 · 1 评论