CN109189463A - 一种对程序代码自动进行判断的控制方法及控制装置 - Google Patents
一种对程序代码自动进行判断的控制方法及控制装置 Download PDFInfo
- Publication number
- CN109189463A CN109189463A CN201810989345.2A CN201810989345A CN109189463A CN 109189463 A CN109189463 A CN 109189463A CN 201810989345 A CN201810989345 A CN 201810989345A CN 109189463 A CN109189463 A CN 109189463A
- Authority
- CN
- China
- Prior art keywords
- program code
- program
- test
- control method
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种对程序代码自动进行判断的控制方法及控制装置,其用于判断程序代码是否正确,包括如下步骤:a.基于消息队列中的一个或多个程序代码形成与所述一个或多个程序代码相对应的一个或多个容器;b.所述一个或多个程序代码在与所述一个或多个程序代码相对应的一个或多个容器内执行评测,通过形成一个或多个程序代码与所述一个或多个程序代码相对应的一个或多个容器,从而在容器内执行评测,最终实现判断程序代码是否正确的目的,本发明操作简单,使用方便,无安全隐患,功能强大,实用性强,具有极高的商业价值。
Description
技术领域
本发明属于软件技术架构领域,特别涉及一种对程序代码自动进行判断的控制方法及控制装置。
背景技术
随着计算机技术的快速发展和日趋成熟,以网络技术为支撑平台的计算机技术已经具备了较大规模的普及与应用的基础。
近几年来,现有技术已经实现了对程序代码自动进行判断的过程,该技术也被广泛应用于在线判题系统当中,在线判题系统通过将答题者提交的代码编译成可运行的程序,并用系统预设好的多组测试用例来检测程序的输入输出是否跟预设好的结果符合,最后给出测评结果。但是,此种控制技术仍然存在较多问题,它不仅不能够完整的对程序的危险行为进行处理,还没有限制系统敏感文件的访问,这会给开发者及用户带来较大的经济损失,此外,在高并发下该技术也不具有动态负载启动或减少的功能。
而目前,市场上并没有一种能够有效解决上述问题的具体办法,尤其涉及一种对程序代码自动进行判断的控制方法及控制装置。
发明内容
针对现有技术存在的技术缺陷,本发明的目的是提供一种对程序代码自动进行判断的控制方法及控制装置,根据本发明的一个方面,提供了一种对程序代码自动进行判断的控制方法,其用于判断程序代码是否正确,包括如下步骤:
a.基于消息队列中的一个或多个程序代码形成与所述一个或多个程序代码相对应的一个或多个容器;
b.所述一个或多个程序代码在与所述一个或多个程序代码相对应的一个或多个容器内执行评测。
优选地,在所述步骤a之前,包括如下步骤:
i:基于用户行为实现终端与所述评测系统的数据互通;
ii:获取一个或多个程序代码,并将所述一个或多个程序代码归入消息队列。
优选地,所述步骤a包括如下步骤:
a1.相隔时间t,判断所述消息队列中的一个或多个程序代码数量是否超过第一阈值,如超过,则执行步骤a2;
a2.创建新的容器,并将超过第一阈值的程序代码归入所述新创建的容器。
优选地,所述第一阈值的取值为以下任意一种:
20条;
30条;
50条;或者
70条。
优选地,所述相隔时间t的取值为以下任一种:
1分钟;
3分钟;
5分钟;或
10分钟。
优选地,所述步骤b中包括如下步骤:
b1.通过数据中心获取与所述程序代码相对应的配置及数据;
b2.基于与所述程序代码相对应的配置及数据对所述程序代码进行评测。
优选地,所述b步骤之前还包括步骤b′:对所述程序代码进行安全限制。
优选地,所述b′安全限制包括以下任意一种或多种:
对系统敏感文件的访问限制;
对运行时间的限制;
对网络资源的调用限制;或者
对磁盘资源的调用限制。
优选地,在所述步骤b之后,还包括步骤e:基于评测结果生成与所述评测结果相适应的评测报告。
优选地,所述步骤e还包括如下步骤:
e1.判断所述程序代码是否存在错误;
e2.基于判断结果生成评测报告。
优选地,所述步骤e之后,还包括步骤f:将所述程序代码以及与所述程序代码相对应的评测结果归入所述数据中心进行储存。
优选地,所述程序代码包括如下形式中的任一种:
Asp源码;
Php源码;
Jsp源码;或
Net源码。
根据本发明的另一个方面,提供了一种对程序代码自动进行判断的控制装置,包括:
第一处理装置:基于消息队列中的一个或多个程序代码形成与所述一个或多个程序代码相对应的一个或多个容器;
第二处理装置:所述一个或多个程序代码在与所述一个或多个程序代码相对应的一个或多个容器内执行评测。
优选地,还包括:
第三处理装置:基于用户行为实现终端与所述评测系统的数据互通;
第一获取装置:获取一个或多个程序代码,并将所述一个或多个程序代码归入消息队列。
优选地,所述第一处理装置还包括:
第一判断装置:相隔时间t,判断所述消息队列中的一个或多个程序代码数量是否超过第一阈值;
第四处理装置:创建新的容器,并将超过第一阈值的程序代码归入所述新创建的容器。
优选地,所述第二处理装置还包括:
第二获取装置:通过数据中心获取与所述程序代码相对应的配置及数据;
第五处理装置:基于与所述程序代码相对应的配置及数据对所述程序代码进行评测。
优选地,还包括:
第六处理装置:对所述程序代码进行安全限制。
优选地,还包括:
第七处理装置:基于评测结果生成与所述评测结果相适应的评测报告。
优选地,所述第七控制装置包括:
第二判断装置:判断所述程序代码是否存在错误;
第八处理装置:基于判断结果生成评测报告。
优选地,还包括:
第九处理装置:将所述程序代码以及与所述程序代码相对应的评测结果归入所述数据中心进行储存。
本发明提供了一种对程序代码自动进行判断的控制方法及控制装置,通过形成一个或多个程序代码与所述一个或多个程序代码相对应的一个或多个容器,从而在容器内执行评测,最终实现判断程序代码是否正确的目的,本发明操作简单,使用方便,无安全隐患,具有极高的商业价值。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1示出了本发明的具体实施方式的,一种对程序代码自动进行判断的控制方法的具体流程示意图;
图2示出了本发明的第一实施例的,基于消息队列中的一个或多个程序代码形成与所述一个或多个程序代码相对应的一个或多个容器的具体流程示意图;
图3示出了本发明的第二实施例的,判断所述消息队列中的一个或多个程序代码数量是否超过第一阈值,并将超过第一阈值的程序代码归入所述新创建的容器的具体流程示意图;
图4示出了本发明的第三实施例的,通过数据中心获取与所述程序代码相对应的配置及数据,并对所述程序代码进行评测,最后将所述程序代码以及与所述程序代码相对应的评测结果归入所述数据中心进行储存的具体流程示意图;
图5示出了发明的第四实施例的,所述一个或多个程序代码在与所述一个或多个程序代码相对应的一个或多个容器内执行评测的具体流程示意图;
图6示出了发明的第五实施例的,判断所述程序代码是否存在错误,若存在,则基于判断结果生成评测报告的具体流程示意图;以及
图7示出了本发明的另一具体实施方式,一种对程序代码自动进行判断的控制装置的模块连接示意图。
具体实施方式
为了更好的使本发明的技术方案清晰的表示出来,下面结合附图对本发明作进一步说明。
图1示出了本发明的具体实施方式的,一种对程序代码自动进行判断的控制方法的具体流程示意图,具体地,包括如下步骤:
首先,进入步骤S101,基于消息队列中的一个或多个程序代码形成与所述一个或多个程序代码相对应的一个或多个容器,所述第一阈值的取值包括以下任意一种情况:20条、30条、50条、70条,所述相隔时间t的取值包括如下几种情况:1分钟、3分钟、5分钟、10分钟内,本领域技术人员理解,当用户从网站系统发起一次评测请求,该请求会自动归入消息队列中,评测核心会读取消息队列中的任务量,并判断其是否处于堆积状态中,如消息队列处于堆积状态,则自动生成一定数量的容器,如消息队列处于闲置状态中,则立即部署所述程序代码进入容器内进行测评,并自动释放一定容器,让单个容器能够始终处于满载时每秒钟能消化的消息条数的状态,并不断进行测评。
所述容器生成个数通过如下公式获取:扩容目标容器个数=扩容生产速率/单容器满载消化速率*冗余因子,其中,所述生产效率为每秒钟产生的消息条数,所述消化速率,为每秒钟所有容器消化的消息条数,所述扩容生产速率为最近30s内观察到的生产速率(最近30s生产的消息条数/30),所述单容器满载消化速率为单个容器在处于满载时每秒钟能消化的消息条数,所述冗余因子,即为了提供一定的容量余量而设定的因子,现在值为1.3,相当于预留了30%的冗余,所述容器减少个数通过如下公式获取:缩容目标容器个数=缩容生产速率/单容器满载消化速率*冗余因子,其中,所述缩容生产速率为在最近5分钟内观察到的生产速率(最近5分钟生产的消息条数/300),所述单容器满载消化速率根据如下公式获取:单容器满载消化速率=队列堆积时的消化速率/容器个数。
紧接着,进入步骤S102,所述一个或多个程序代码在与所述一个或多个程序代码相对应的一个或多个容器内执行评测,本领域技术人员理解,系统通过数据中心获取所述程序代码对应的输入数据,并与所提交程序代码的输出数据进行比较,自动得到程序运行的时间和内存大小等数据,例如发生超出预设的时间、内存等问题,系统将自动终止程序运行,并将对应结果返回到用户界面。
进一步地,评测核心部署在单个的“容器”中,评测核心将会根据当前的消息队列的堆积量来生成容器,让单个容器能够始终处于满载时每秒钟能消化的消息条数的状态,当系统压力过大时,部署核心会对其状态进行判断,并根据消息队列的状态自动创建或释放更多容器,用于评测使用,所述队列堆积量,则根据队列当中存在有消化速率*120(2分钟)的任务量时,部署核心认为队列处于堆积状态,进而扩容容器。
另外,该容器具有隔离功能,会将所述程序代码与服务器和评测环境隔离,不允许来所述测评程序代码对系统进行干扰,在此基础上评测核心还能够对程序代码运行时间进行限制,保障了系统的安全运行。所有提交的代码均在受限的环境(不允许执行各类危险操作)下运行,并且还需要对所述程序代码进行安全限制,系统要对程序代码进行几种安全限制,首先限制程序代码对系统中的敏感文件进行访问,其次还要限制程序代码调用网络资源,最后则是限制程序代码对磁盘资源进行调用,在此基础上评测核心还能够对程序代码运行时间进行限制。
在一个优选地实施例中,答题人员在提交测评要求后,评测请求自动归入消息队列,部署核心对消息进行处理时发现,消息队列中仍有大量程序代码等待测评,部署核心判断队列处于堆积状态中,智能的计算出所需生成的容器数量,并且所要生成的容器数量高于当前容器数量,且距离上次扩容时间已经超过60s,部署核心立即生成对应数量的容器,部署代码一一进入容器测评。
在一个特殊的变化例中,答题人员在提交测评要求后,评测请求自动归入消息队列,部署核心对消息进行处理时发现,队列中无消息需要评测,认定所述消息队列处于闲置状态中,并智能的对容器进行缩容,释放多余的容器,仅留下基础评测使用的容器。
图2示出了本发明的第一实施例的,基于消息队列中的一个或多个程序代码形成与所述一个或多个程序代码相对应的一个或多个容器的具体流程示意图,本领域技术人员理解,所述图2为所述图1中步骤S101的子步骤,具体地,包括如下步骤:
首先,进入步骤S1011,基于用户行为实现终端与所述评测系统的数据互通,本领域技术人员理解,用户在发出评测要求后,系统的消息队列中会收到该请求,评测核心监听消息队列事件,一旦有未处理的请求时会将请求从消息队列中取出,再由评测核心逐个处理,此时消息队列中该消息不再存在,此后评测核心会从数据中心取得所需要的配置和数据,然后在受限的安全环境下进行评测,并根据配置及时结束不符合安全限制的程序,并将结果返回给网站系统。
最后,进入步骤S1012,获取一个或多个程序代码,并将所述一个或多个程序代码归入消息队列,本领域技术人员理解,用户在对程序代码进行测评时,首先会从界面发起一次评测请求,消息首先进入消息队列里进行等待,自动部署核心会自动将消息一一排列,评测核心将会根据当前的消息队列中的消化速率来生成容器,并提取该测评请求对应的程序代码,在容器内进行测评。
在一个优选地实施例中,答题人员在提交测评要求后,弹出对话框,您的请求已提交,系统页面上显示该请求正在处理中,该请求自动归入消息列表中,自动部署核心在处理该请求时,发现未处理消息,则对其进行处理,用户的消息状态也将显示为测评中,测评结束后,系统界面显示测评结果,用户可详细的查看所述程序代码中的错误。
图3示出了本发明的第二实施例的,判断所述消息队列中的一个或多个程序代码数量是否超过第一阈值,并将超过第一阈值的程序代码归入所述新创建的容器的具体流程示意图,具体地,包括如下步骤:
首先,进入步骤S201,相隔时间t,判断所述消息队列中的一个或多个程序代码数量是否超过第一阈值,超过则创建新的容器,并将超过第一阈值的程序代码归入所述新创建的容器中,所述相隔时间t的取值包括如下几种情况:1分钟、3分钟、5分钟、10分钟内,由于消息队列的第一阈值有限,所述第一阈值的程序代码包括如下几种情况:20条、30条、50条、70条,本领域技术人员理解,消息队列中会不断出现评测要求,因此,当消息队列中评测要求超过一定任务量后,系统判断消息队列处于堆积状态,测评核心将会根据当前的消息队列中的堆积量来生成容器,让单个容器始终处于满载时每秒钟能消化的消息条数,不断进行测评。
进一步地,部署核心判断队列是否处于堆积状态会根据队列当中是否存在有消化速率*120(2分钟)的任务量来进行判断,但扩容目标容器要遵守规则,即当扩容目标容器个数高于当前容器个数,且不处于扩容冷却时间中时,进行扩容,扩容到扩容目标容器个数与扩容上限的最小值,其中所述扩容冷却时间,也就是此次扩容距离上一次容量改变时间间隔的最小值,60s,所述扩容上限为当前容量的1.5倍。减少容器数量时同样遵守规则,当缩容目标容器个数低于当前容器个数,且不处于缩容冷却时间中时,进行缩容,缩容到缩容目标容器个数与缩容上限的最大值,所述缩容冷却时间,即此次缩容距离上一次容量改变时间间隔的最小值,300s,所述缩容上限为当前容量的0.7倍。
然后进入步骤S202,创建新的容器,并将超过第一阈值的程序代码归入所述新创建的容器中,本领域技术人员理解,当未测评程序代码累积到一定任务量时,评测核心将会根据当前的消息队列中的消化速率以及堆积量来生成容器,只保留基础评测使用的容器。
进一步地,用户在提交评测消息后,消息首先进入消息队列里进行等待,评测核心监听消息队列事件,一旦有未处理的请求时评测核心会将请求从消息队列中取出,并放入容器内,之后评测核心会从数据中心取得所需要的配置和数据,然后在受限的容器内进行评测,该容器只需占用很少的计算和内存资源,与主操作系统隔离,并与各个容器之间相互独立。
在一个特殊的变化例中,用户在提交评测要求后,该请求自动进入到消息队列中,系统中的评测核心智能判断当前队列当中未处理的任务量,发现消息队列处于堆积状态,部署核心智能的计算出所要生成的容器数量,这时系统提示部署核心,此次扩充容器时间距离上一次容器数量改变时间间隔不到60s,无法生成容器。
图4示出了本发明的第三实施例的,通过数据中心获取与所述程序代码相对应的配置及数据,并对所述程序代码进行评测,最后将所述程序代码以及与所述程序代码相对应的评测结果归入所述数据中心进行储存的具体流程示意图,具体地,包括如下步骤:
首先,进入步骤S301,通过数据中心获取与所述程序代码相对应的配置及数据,本领域技术人员理解,在对所述程序代码进行测评时,评测核心会从系统的数据中心获取相对应的程序代码配置和输出数据,以便对所述程序代码进行判断。
然后,进入步骤S302,基于与所述程序代码相对应的配置及数据对所述程序代码进行评测,本领域技术人员理解,在获取所需的程序代码后,评测核心会将所述程序代码与正确程序代码的输出数据等进行对比,如发现所述程序代码中有错误,将根据错误之处生成评测报告,用户在查看程序代码检测结果时,可以方便直观的查看程序代码的错误之处与原因。
紧接着,进入步骤S303,基于评测结果生成与所述评测结果相适应的评测报告,本领域技术人员理解,程序代码完成测评后,会出现测评结果,系统可以自动编译程序代码,生成可执行文件,并根据已存储的测试用例,从程序的正确性、程序运行总时间、单用例执行时间、程序返回结果等各方面评测程序代码,并精确返回各方面的评测结果,这个过程中包含了对用户提交的程序源代码进行自动编译、连接、运行、测试、评审等过程。
最后,进入步骤S304,将所述程序代码以及与所述程序代码相对应的评测结果归入所述数据中心进行储存,本领域技术人员理解,所述程序代码包括以下任意一种:Asp源码、Php源码、Jsp源码、Net源码、R、Awk、sh、txt、c、c++、d、pascal、objective-c、go、fortran、haskell、java、kotlin、lua、c#、nodejs、ocaml、octave、perl、php、python2、python3、racket、ruby、common lisp、swift、vala、visual basic,所述程序代码包括但不限于以上程序语言,在程序代码的评测结果出来后,评测核心会直接将评测结果上传至系统的数据库中,并显示在用户界面中,用户可以直观的查看评测结果,并查看错误原因。
在一个优选地实施例中,用户在提交评测请求后,弹出对话框,提交成功,该提交请求的状态显示为正在测评,系统在检测完毕后,会直接基于评测结果生成相适应的评测报告,用户在评测报告中可直接查看提交结果,提交分数、所提交代码对应题目、编译器、耗时及用户名,另外,系统还能够提示用户程序错误原因,用户在查看代码时可看到错误之处,并能够查看正确答案。
图5示出了发明的第四实施例的所述一个或多个程序代码在与所述一个或多个程序代码相对应的一个或多个容器内执行评测的具体流程示意图,本领域技术人员理解,所述图5为所述图4中步骤S302的子步骤,具体地,包括如下步骤:
首先,进入步骤S3011,对所述程序代码进行安全限制,本领域技术人员理解,用户所提交的程序代码在测评的过程中都是在受限制的环境下运行,所有程序代码不允许执行各类危险操作,系统频繁地运行来自各种可能未知源的代码,这些危险的程序代码可能损坏系统数据并泄露私有数据,包含bug或漏洞,被恶意代码所利用,因此评测核心会指定允许程序代码执行的操作,限制程序代码访问系统敏感文件,限制程序代码调用网络资源,限制程序代码调用磁盘资源,限制程序代码的运行时间,这样还可以最大程度地减少程序代码安全漏洞所产生的损害,保障系统顺利运行。
在一个特殊的变化例中,用户在提交评测要求后,该评测要求被评测核心部署到容器内进行测评,在测评中,系统检测用户所提交的代码包含恶意代码,这时容器不允许该程序代码进行危险操作,并将检测结果通知用户,提示用户您所提交的程序代码存在恶意代码,请检查后再次提交。
图6示出了发明的第五实施例的判断所述程序代码是否存在错误,并基于判断结果生成评测报告的具体流程示意图,具体地,包括如下步骤:
首先,进入步骤S401,判断所述程序代码是否存在错误,并基于判断结果生成评测报告,本领域技术人员理解,用户在提交程序代码后,程序代码自动进入到消息队列中,之后评测核心会从数据中心取得所需要的配置和数据,然后在受限的容器内进行评测,读取提供的输入数据,程序自行运行,输出数据,该系统对比用户的输出数据以及正确数据,最后给出得分,如用户所提交的程序代码中无错误,系统将根据结果直接生成评测结果,如用户提交的程序代码中有错误,系统则会根据该错误生成相适应的评测报告。
然后,进入步骤S402,基于判断结果生成评测结果,本领域技术人员理解,完成测评后,系统自动生成评测报告,并将评测报告上传至数据中心,用户可直接查看测评结果。
在一个优选地实施例中,用户在测评c语言程序代码时,评测核心从数据中心取得相对应的题目和正确输出结果,然后在容器内对测评代码进行运行,将运行结果与正确运行结果对比,得出用户的得分,并将用户提交代码中的错误原因和错误之处生成测评报告,用户可通过测评结果,直接在线查看或者下载查看。
图7示出了本发明的另一具体实施方式的,一种对程序代码自动进行判断的控制装置的模块连接示意图,包括:第一处理装置:基于消息队列中的一个或多个程序代码形成与所述一个或多个程序代码相对应的一个或多个容器,当用户从网站系统发起一次评测请求,该请求会自动归入消息队列中,评测核心会读取消息队列中的任务量,并判断其是否处于堆积状态中,如消息队列处于堆积状态,则自动生成一定容器,如消息队列处于闲置状态中,则立即部署所述程序代码进入容器内进行测评,并自动释放一定容器,让单个容器能够始终处于满载时每秒钟能消化的消息条数的状态,并不断进行测评,所述第一处理装置与所述第二处理装置连接,并分别连接所述第一判断装置及所述第四处理装置。
进一步地,还包括第二处理装置:所述一个或多个程序代码在与所述一个或多个程序代码相对应的一个或多个容器内执行评测,系统通过数据中心获取所述程序代码对应的输入数据,并与所提交程序代码的输出数据在容器内进行比较,自动得到程序运行的时间和内存大小数据,如发生超出预设的时间、内存等问题,系统将自动终止程序运行,并将对应结果返回到用户界面,所述第一处理装置与所述第二处理装置及所述第七处理装置连接,并分别连接所述第六确定装置及所述第二处理装置和第五处理装置。
进一步地,还包括第三处理装置:基于用户行为实现终端与所述评测系统的数据互通,用户在发出评测要求后,系统的消息队列中会收到该请求,评测核心监听消息队列事件,一旦有未处理的请求时会将请求从消息队列取出,再由评测核心逐个处理,此时消息队列中该消息不再存在,此后评测核心会从数据中心取得所需要的配置和数据,然后在受限的安全环境下进行评测,所述第三处理装置与所述第一处理装置及所述第一获取装置连接。
进一步地,还包括第一获取装置:获取一个或多个程序代码,并将所述一个或多个程序代码归入消息队列,用户在对程序代码进行测评时,首先会从界面发起一次评测请求,消息首先进入消息队列里进行等待,自动部署核心会自动将消息一一排列,所述第一获取装置与所述第一处理装置及所述第三处理装置连接。
进一步地,还包括第一判断装置:相隔时间t,判断所述消息队列中的一个或多个程序代码数量是否超过第一阈值,消息队列中会不断出现评测要求,当评测要求超过一定的堆积量后,系统判断压力过大时,测评核心将会根据当前的消息队列中的消化速率来生成容器,让单个容器能够始终处于满载时每秒钟能消化的消息条数的状态,并不断进行测评,所述第一判断装置与所述第一处理装置及所述第四处理装置连接。
进一步地,还包括第四处理装置:创建新的容器,并将超过第一阈值的程序代码归入所述新创建的容器,评测要求超过一定的堆积量后,系统判断压力过大时,系统中的自动部署核心会自动创建更多容器,用于评测使用,所述第四处理装置与所述第一处理装置及所述第一判断装置连接。
进一步地,还包括第二获取装置:通过数据中心获取与所述程序代码相对应的配置及数据,在对所述程序代码进行测评时,评测核心会从系统的数据中心获取相对应的程序代码配置和输出数据,以便对所述程序代码进行判断,所述第二获取装置与所述第二处理装置及所述第五获取装置连接。
进一步地,还包括第五处理装置:基于与所述程序代码相对应的配置及数据对所述程序代码进行评测,在获取所需的程序代码后,评测核心会将所述程序代码与正确程序代码的输出数据等进行对比,如发现所述程序代码中有错误,根据错误结果生成评测报告,用户在查看程序代码检测结果时,可以方便直观的查看程序代码的错误之处与错误原因,所述第五处理装置与所述第二处理装置及所述第二获取装置连接。
进一步地,还包括第六处理装置:对所述程序代码进行安全限制,用户所提交的程序代码在测评的过程中都是在受限制的环境下进行,所有程序代码不允许执行各类危险操作,系统频繁地运行来自各种可能未知源的代码,这些危险的程序代码可能损坏系统数据并泄露私有数据,包含bug或漏洞,被恶意代码所利用,因此评测核心会指定允许程序代码执行的操作,限制程序代码访问系统敏感文件,限制程序代码调用网络资源,限制程序代码调用磁盘资源,在此基础上评测核心还能够对程序代码运行时间进行限制,这样还可以最大程度地减少程序代码安全漏洞所产生的损害,所述第六处理装置与所述第二处理装置连接。
进一步地,还包括第七处理装置:基于评测结果生成与所述评测结果相适应的评测报告,程序代码完成测评后,会出现测评结果,系统可以自动编译程序代码,生成可执行文件,并根据已存储的测试用例,从程序的正确性、程序运行总时间、单用例执行时间、程序返回结果等各方面评测程序代码,并精确返回各方面的评测结果,这个过程中包含了对用户提交的程序源代码进行自动编译、连接、运行、测试、评审等过程,所述第七处理装置与所述第二处理装置及所述第八处理装置连接,并分别连接第二判断装置与第二处理装置。
进一步地,还包括第二判断装置:判断所述程序代码是否存在错误,用户在提交程序代码后,程序代码自动进入到消息队列中,之后评测核心会从数据中心取得所需要的配置和数据,然后在受限的容器内进行评测,读取提供的输入数据,运行程序,对比用户的输出数据以及正确数据,最后给出测评结果,如用户所提交的程序代码中无错误,系统将根据结果直接生成评测结果,如评测结果显示有错误,系统则会根据该错误生成相适应的评测报告,所述第二判断装置与所述第七处理装置及所述第八处理装置连接。
进一步地,还包括第八处理装置:基于判断结果生成评测报告,完成测评后,系统自动生成评测结果,并将评测结果上传至数据中心,用户可直接查看,所述第八处理装置与所述第七处理装置及所述第二判断装置连接。
进一步地,还包括第九处理装置:将所述程序代码以及与所述程序代码相对应的评测结果归入所述数据中心进行储存,在程序代码的评测结果出来后,评测核心会直接将评测结果上传至系统的数据中心,显示在用户界面中,用户可以直观的查看评测结果,并查看错误原因和正确答案,所述第九处理装置与所述第七处理装置连接。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。
Claims (20)
1.一种对程序代码自动进行判断的控制方法,其用于判断程序代码是否正确,其特征在于,包括如下步骤:
a.基于消息队列中的一个或多个程序代码形成与所述一个或多个程序代码相对应的一个或多个容器;
b.所述一个或多个程序代码在与所述一个或多个程序代码相对应的一个或多个容器内执行评测。
2.根据权利要求1所述的控制方法,其特征在于,在所述步骤a之前,还包括如下步骤:
i:基于用户行为实现终端与所述评测系统的数据互通;
ii:获取一个或多个程序代码,并将所述一个或多个程序代码归入消息队列。
3.根据权利要求1或2所述的控制方法,其特征在于,所述步骤a包括如下步骤:
a1.相隔时间t,判断所述消息队列中的一个或多个程序代码数量是否超过第一阈值,如超过,则执行步骤a2;
a2.创建新的容器,并将超过第一阈值的程序代码归入所述新创建的容器。
4.根据权利要求3所述的控制方法,其特征在于,所述第一阈值的取值为以下任意一种:
20条;
30条;
50条;或者
70条。
5.根据权利要求3所述的控制方法,其特征在于,所述相隔时间t的取值为以下任一种:
1分钟;
3分钟;
5分钟;或者
10分钟内。
6.根据权利要求1至5中任一项所述的控制方法,其特征在于,所述步骤b包括如下步骤:
b1.通过数据中心获取与所述程序代码相对应的配置及数据;
b2.基于与所述程序代码相对应的配置及数据对所述程序代码进行评测。
7.根据权利要求6所述的控制方法,其特征在于,所述b步骤之前还包括步骤b′:对所述程序代码进行安全限制。
8.根据权利要求7所述的控制方法,其特征在于,所述安全限制包括以下任意一种或多种:
对系统敏感文件的访问限制;
对运行时间的限制;
对网络资源的调用限制;或者
对磁盘资源的调用限制。
9.根据权利要求1至8中任一项所述的控制方法,其特征在于,在所述步骤b之后,还包括步骤e:基于评测结果生成与所述评测结果相适应的评测报告。
10.根据权利要求9所述的控制方法,其特征在于,所述步骤e还包括如下步骤:
e1.判断所述程序代码是否存在错误;
e2.基于判断结果生成评测报告。
11.根据权利要求10所述的控制方法,其特征在于,所述步骤e之后,还包括步骤f:将所述程序代码以及与所述程序代码相对应的评测结果归入所述数据中心进行储存。
12.根据权利要求1至11中任一项所述的控制方法,其特征在于,所述程序代码包括如下形式中的任一种:
Asp源码;
Php源码;
Jsp源码;或
Net源码。
13.一种对程序代码自动进行判断的控制装置,其用于判断程序代码是否正确,其特征在于,包括:
第一处理装置(1):基于消息队列中的一个或多个程序代码形成与所述一个或多个程序代码相对应的一个或多个容器;
第二处理装置(2):所述一个或多个程序代码在与所述一个或多个程序代码相对应的一个或多个容器内执行评测。
14.根据权利要求13所述的控制装置,其特征在于,还包括:
第三处理装置(11):基于用户行为实现终端与所述评测系统的数据互通;
第一获取装置(12):获取一个或多个程序代码,并将所述一个或多个程序代码归入消息队列。
15.根据权利要求13或14所述的控制装置,其特征在于,所述第一处理装置还包括:
第一判断装置(13):相隔时间t,判断所述消息队列中的一个或多个程序代码数量是否超过第一阈值;
第四处理装置(14):创建新的容器,并将超过第一阈值的程序代码归入所述新创建的容器。
16.根据权利要求15所述的控制装置,其特征在于,所述第二处理装置还包括:
第二获取装置(21):通过数据中心获取与所述程序代码相对应的配置及数据;
第五处理装置(22):基于与所述程序代码相对应的配置及数据对所述程序代码进行评测。
17.根据权利要求13至16中任一项所述的控制装置,其特征在于,还包括:
第六处理装置(23):对所述程序代码进行安全限制。
18.根据权利要求17所述的控制装置,其特征在于,还包括:
第七处理装置(33):基于评测结果生成与所述评测结果相适应的评测报告。
19.根据权利要求18所述的控制装置,其特征在于,所述第七控制装置包括:
第二判断装置(34):判断所述程序代码是否存在错误;
第八处理装置(35):基于判断结果生成评测报告。
20.根据权利要求19所述的控制装置,其特征在于,还包括:
第九处理装置(41):将所述程序代码以及与所述程序代码相对应的评测结果归入所述数据中心进行储存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810989345.2A CN109189463A (zh) | 2018-08-28 | 2018-08-28 | 一种对程序代码自动进行判断的控制方法及控制装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810989345.2A CN109189463A (zh) | 2018-08-28 | 2018-08-28 | 一种对程序代码自动进行判断的控制方法及控制装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109189463A true CN109189463A (zh) | 2019-01-11 |
Family
ID=64916487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810989345.2A Pending CN109189463A (zh) | 2018-08-28 | 2018-08-28 | 一种对程序代码自动进行判断的控制方法及控制装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109189463A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110610088A (zh) * | 2019-09-12 | 2019-12-24 | 北京升鑫网络科技有限公司 | 一种基于php的webshell检测方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160239318A1 (en) * | 2014-09-30 | 2016-08-18 | Amazon Technologies, Inc. | Programmatic event detection and message generation for requests to execute program code |
CN106775990A (zh) * | 2016-12-31 | 2017-05-31 | 中国移动通信集团江苏有限公司 | 请求调度方法和装置 |
CN106844198A (zh) * | 2016-12-27 | 2017-06-13 | 浪潮软件集团有限公司 | 一种分布式调度自动化测试平台及方法 |
CN107533470A (zh) * | 2015-02-04 | 2018-01-02 | 亚马逊技术有限公司 | 用于低延时执行程序代码的安全协议 |
CN108427641A (zh) * | 2018-01-29 | 2018-08-21 | 中国互联网络信息中心 | 一种基于Docker容器的多任务调度自动化测试方法及系统 |
-
2018
- 2018-08-28 CN CN201810989345.2A patent/CN109189463A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160239318A1 (en) * | 2014-09-30 | 2016-08-18 | Amazon Technologies, Inc. | Programmatic event detection and message generation for requests to execute program code |
CN107533470A (zh) * | 2015-02-04 | 2018-01-02 | 亚马逊技术有限公司 | 用于低延时执行程序代码的安全协议 |
CN106844198A (zh) * | 2016-12-27 | 2017-06-13 | 浪潮软件集团有限公司 | 一种分布式调度自动化测试平台及方法 |
CN106775990A (zh) * | 2016-12-31 | 2017-05-31 | 中国移动通信集团江苏有限公司 | 请求调度方法和装置 |
CN108427641A (zh) * | 2018-01-29 | 2018-08-21 | 中国互联网络信息中心 | 一种基于Docker容器的多任务调度自动化测试方法及系统 |
Non-Patent Citations (1)
Title |
---|
青岛英谷教育科技股份有限公司: "《云计算与虚拟化技术》", 28 February 2018 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110610088A (zh) * | 2019-09-12 | 2019-12-24 | 北京升鑫网络科技有限公司 | 一种基于php的webshell检测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2017514218A (ja) | サードパーティアプリケーションの実行 | |
CN108446225A (zh) | 模拟接口的创建装置、方法及计算机可读存储介质 | |
CN109636317A (zh) | 业务控制方法、装置、系统及存储介质 | |
CN105022958B (zh) | 一种安卓应用中基于代码库安全规约的应用程序漏洞检测分析方法 | |
CN110401634A (zh) | 一种Web应用漏洞检测规则引擎实现方法及终端 | |
CN107769949A (zh) | 一种应用组件部署方法及部署节点 | |
CN110471834A (zh) | 多交易渠道下的信用卡模拟测试方法及相关设备 | |
EP3182279A2 (en) | Software-as-a-service reference process extension verification framework | |
CN102834806A (zh) | 系统结构管理设备、系统结构管理方法和程序 | |
CN109254914A (zh) | 软件开发包测试方法、系统、计算机装置及可读存储介质 | |
CN109345392A (zh) | 编程题目发布、解答代码发布、解答代码检验方法及系统 | |
CN107679423A (zh) | 分区完整性检查方法及装置 | |
CN109189463A (zh) | 一种对程序代码自动进行判断的控制方法及控制装置 | |
CN110311972A (zh) | 用于应用软件分发的检测方法、装置、设备及介质 | |
CN112379913B (zh) | 基于风险识别的软件优化方法、装置、设备及存储介质 | |
Costantini | Ensuring trustworthy and ethical behaviour in intelligent logical agents | |
US9646252B2 (en) | Template clauses based SAT techniques | |
CN112561690A (zh) | 信用卡分期业务接口的测试方法、系统、设备及存储介质 | |
CN116521530A (zh) | 单元测试方法、装置、设备、存储介质和产品 | |
KR20140084698A (ko) | 철강 공정용 소프트웨어 자동 테스트 시스템 | |
CN109871294A (zh) | 用于校验数据、处理请求的方法和装置 | |
CN112131127B (zh) | 接口测试方法、装置、系统及电子设备 | |
Delima et al. | Automatic Requirements Engineering: Activities, Methods, Tools, and Domains–A Systematic Literature Review | |
CN109766228A (zh) | 一种基于接口的线上验证方法和装置 | |
CN112698885B (zh) | 运行方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190111 |