2023年11月29日发(作者:)

ACM在线判题系统(OJ)的判题实现(java+python

学院⼀直是有⼀个⾃⼰的oj的,但是由于最近判题崩了,需要修复⼀下,拿到判题代码,打开却是⼀⼿,让我⼀个搞Java的

着实懵逼,因为以前学过点js,摸清判题逻辑,⼀步⼀步来调bug,最后还是太复杂,把⼼态调崩了。最后想了了想判题就是那

个流程,还是⾃⼰写⼀个吧,⽽且以前的判题只⽀持python2,现在谁要⽤python2啊。

好吧,直接开始开发:判题需要⼏个步骤:

1.在linux搭建编译器环境:gcc g++ java python2 python3 pascal

2.根据源码的类型创建相应的源⽂件(.c .cpp .java 等)

3.编译对应的源⽂件

4.运⾏程序,使⽤测试⽤例测试得出时间消耗和内存消耗。

这⾥最棘⼿的还是第四步:怎么知道内存和时间消耗?我再⽹上不断的查资料,后来发现⼏乎没有,找了很久找到⼀个前辈有⼀篇开

发oj的博客,纯⽤python写的。由于⾃⼰对于python仅仅是⼊门语法,纯⽤python开发对于我来讲确实有点难度。但是思路是可以借鉴

import sys

if __name__ == '__main__':

if len() != 6:

print('Usage:%s srcfile testdata_pth testdata_total'%len())

}

}

}

}

@Data

@AllArgsConstructor

@Log4j

private static String complie(int compilerId, String path) {

/**

* '1': 'gcc','g++', '3': 'java', '4': 'pascal', '5': 'python',

@Log4j