自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 纯JAVA实现Online Judge--6.完整源码

由于上班了,最近任务比较繁重,所以这里先直接放出源码了。web端源码沙箱端源码

2017-06-23 17:55:51 8313 40

原创 纯JAVA实现Online Judge--5.并行运行

前言    如果一道题目有5份(输入+输出为一份)测试数据,对于一份用户的代码,如果串行的运行(假设每一份运行平均要500毫秒),那么5份的话就需要2.5秒了。但是,如果我们采用并行的方式的话,则只需要500毫秒(实际上会多一点)就可以了。但是,因为每个线程运行的用户代码,都需要从标准输入流(System.in)中读取数据,而且读取的时机无法掌控,也读需要将运行的输出结果输出到标准输出流(Sy

2017-06-19 18:58:39 1967

原创 纯JAVA实现Online Judge--4.限时运行(杀死线程)

前言    在上一篇的博客中,我们通过设置SecurityManager已经实现了大部分的安全措施。这里我们将实现最后的安全措施,防止用户提交死循环的代码无止境的消耗服务器的CPU,以及防止用户恶意破坏沙箱运行代码的能力。同时,因为OJ业务要求的限制,每一道题目的答案代码运行都应该是限时的(比如限时1000毫秒内出结果),对于运行超过指定时间还未出结果的,我们就应该终止运行的线程,并判定这个测

2017-06-15 15:05:56 3879 1

原创 纯JAVA实现Online Judge--3.SecurityManager安全管理器

前言    上一篇的博文中,我们通过自己编译用户提交的代码,再通过自定制的类加载器将编译出来后的class信息加载进JVM中,最后再通过反射调用用户代码的main,实现了运行用户代码的目的。具体如何运行用户的代码的部分,将会在后面的博客(多线程跑题)中展开述说,里面将介绍我如何利用多线程的方式,同时对同一份用户代码跑多份测试用例,提升效率的同时,如何解决多线程中遇到的冲突问题。    现在

2017-06-14 14:23:52 2019

原创 纯JAVA实现Online Judge--2.代码编译与类加载

前言作为一个Online Judge系统,最重要的一件事情,就是对用户提交给系统的代码进行编译,然后再将其加载进JVM中,然后才能通过反射的方式,调用入口方法,以此达到运行用户代码的目的。首先需要的说明是,我下面的贴出的代码,由于篇幅等缘故,我只会贴出跟我讲的内容有关的代码,因此并不会贴出所有的代码,代码会因此有些不连贯,也无法直接复制进行使用。整个系统完整的代码,会在这个系列最后的博文中

2017-06-13 23:30:59 4028 1

原创 纯JAVA实现Online Judge--1.前言简介

前言不知不觉,就大四毕业了。由于各个方面的原因吧,我决定了毕业设计做一个Online Judge系统,如今已经答辩完了也准备要继续回去上班了,告别最后的学生生活。虽说我这个Online Judge系统做得不是很好,但是过程的中间也踩过不少的坑,而且发现网上用纯JAVA实现一个完整的Online Judge系统的文章比较少,都是比较零散并且不完整的,因此在这里本着抛砖引玉的想法,有了这么一个

2017-06-13 14:17:38 9127 10

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除