晚上睡不着觉,仔细研读了洛谷的第四代评测机技术分析后,突然发现自己写的TeenCode评测机竟然有这么多地方可以改进,这不得不让我诞生了实现第二代TeenCode评测机的想法。【第一代评测机挺可怜的,还没有经过公测就将被抛弃了~】
在原评测机的基础上,借鉴洛谷评测机的部分技巧,再加上自己的几个想法,将重构出第二代TeenCode评测机。
 
一、弃用原来利用socket通信向评测机传送测试数据的方法,而是选择让评测机自己去读取数据库中评测数据,并进行缓存,当下次评测时,若发现此题的评测数据在本地拥有缓存,那就无需继续读取数据库内容,以减轻数据库服务器的负担。
二、弃用原先通过系统终端模拟输入、输出的运行模式,改用通过管道技术,定义输入数据和输出数据文件,以更大化减小程序运行时间误差以及程序在输入输出的稳定性。
三、弃用原来通过python内置函数计时方法。原本,程序计时的方法,是先在程序运行前,读取当前设备时间,在程序结束中,循环读取设备时间,并做差计算程序运行时间,若发现程序程序运行时间大于标准时间,即为超时,为了避免误差的过大,还在计算差值时,减去了160ms.这样的计时方法虽然精确到了200ms,但是对于程序每秒可以运行1e9的计算机程序来说,这还是相当不精准的!因此,解决时间判断问题也是一件迫在眉睫的事情。第二代评测机将采用Linux内置命令time来计算程序运行时间,并保留原本的计时方式,用来判断TLE,而time返回的时间,将被用作程序运行时间的计时。
四、加强安全模块,原来是在执行g++ -e删除所有#define,并展开所有宏定义后,使用的是正则表达式匹配一些涉及本机安全与评测异常的函数、库文件,若发现程序调用,则不予评测,返回异常。本次加强将使用Linux命令,关闭待评测程序除测试数据文件夹以外的所有文件的读写权限,并保留原本通过正则表达式匹配核心函数、库文件的功能。
 

暂时就想到这些,再想到再加上去~

【项目】关于TeenCode第二代评测机的技术分析的更多相关文章

  1. 【深度解析】Google第二代深度学习引擎TensorFlow开源

    作者:王嘉俊 王婉婷 TensorFlow 是 Google 第二代深度学习系统,今天宣布完全开源.TensorFlow 是一种编写机器学习算法的界面,也可以编译执行机器学习算法的代码.使用 Tens ...

  2. SpringCloud第二代实战系列:一文搞定Nacos实现服务注册与发现

    一.背景:SpringCloud 生态圈 在正式开始本篇文章之前我们先岔开来讲一下SpringCloud的生态圈. SpringCloud大家都比较熟悉了,它制定了分布式系统的标准规范,做了高度抽象和 ...

  3. GPRS GPRS(General Packet Radio Service)是通用分组无线服务技术的简称,它是GSM移动电话用户可用的一种移动数据业务,属于第二代移动通信中的数据传输技术

    GPRS 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . GPRS(General Packet Radio Service)是通用分组无线服务技术的简称,它是GSM移动电话用户可 ...

  4. 洛谷评测机BUG(应该是)

    此问题由洛谷p1746引出(之前出过类似问题没在意) 传送门 以下是两个差不多的程序,(只有main函数中的输入不同,第一个程序迷之WA,第二个程序AC) #include <bits/stdc ...

  5. 第二代网关GateWay搭建流程

    Spring Cloud第二代网关GateWay是由纯Netty开发,底层为Reactor,WebFlux构建,不依赖任何Servlet容器,它不同于Zuul,使用的是异步IO,性能较Zuul提升1. ...

  6. 「BUAA OO Unit 1 HW1」面向测试小白的简易评测机

    「BUAA OO Unit 1 HW1」面向测试小白的简易评测机 声明:本评测机所使用数据生成来自郭鸿宇同学,这对本评测机非常重要 目录 「BUAA OO Unit 1 HW1」面向测试小白的简易评测 ...

  7. hyperv 创建第二代虚拟机

    环境:宿主机windows 8.1,虚拟机:windows 8.1 硬件:笔记本电脑,无线网络,没有有线网络网络配置先不设置 1.安装hyperv,控制面版-->程序和功能-->启用或关闭 ...

  8. SAP增强总结-第二代增强(SMOD、CMOD)【转载】

    第二代增强比第二代增强安全性提高了很多,第一代增强毕竟是在原标准程序中修改,大部分传递参数都可以直接使用,第二代增强做了一些封装,对用户可以修改的参数做了限制. 1.增强点查找方法 首先根据事物码找到 ...

  9. Unity iOS 项目的一种性能评测方法

    [Unity iOS 项目的一种性能评测方法]

随机推荐

  1. ModuleNotFoundError: No module named 'pip'的解决方案

    python在通过cmd安装pandas时遇到ModuleNotFoundError: No module named 'pip'的报错. 网上查询后通过如下两行cmd命令解决了 python -m ...

  2. 现代企业要求上什么样的MES(四)

    一个制造企业要想盈利,在生产方面要做的无非是提高资源利用效率和缩短生产通过时间(生产周期),而实现这俩步骤需要生产状况的在线透明及避免薄弱环节的分析数据,由此达到改善生产状态的目的.在erp系统中,通 ...

  3. 搜索+简单dp

    前言:即使是简单的递归,在复杂度过高时也可以使用简单的dp. 一般有两种情况,一是利用dp思想求最优子结构进行搜索剪枝,二是利用搜索进行dp数组的填充. 例题一.hdu1978 题目大意:这是一个简单 ...

  4. 封锁阳光大学(染色)P1330

    题目:https://www.luogu.com.cn/problem/P1330 阳光大学的校园是一张由 n 个点构成的无向图,n 个点之间由 m 条道路连接.每只河蟹可以对一个点进行封锁,当某个点 ...

  5. mybatis控制台打印执行的sql语句

  6. 拒绝老土!暗黑风格半透平面化主题—InfinityFreedom正式发布

    经常听到“路由器界面土点就土点吧,凑合能用就成.” 诚然,路由器重要的是功能,但为什么要辣眼睛呢? 拯救喜欢折腾的你,抢救干涩的眼球,原创OpenWrt主题Infinity Freedom正式发布! ...

  7. Java 将鼠标改为图片的两种方法

    一 图片跟着鼠标移动,鼠标隐藏 int x,y; addMouseMotionListener(this);//设置鼠标监听 public void paint(Graphics g) {  g.dr ...

  8. java 实现mongoDB 增加,删除,修改,查看,多条件查询,聚合查询,分组查询(史上最全)

    首先idea创建一手springboot项目 引入如下依赖 <dependency> <groupId>org.mongodb</groupId> <arti ...

  9. java mybatis中大于号小于号的转义

    大于号:  > 小于号:   <

  10. SpringBoot 整合SpringBatch实际项目改造

    SpringBoot整合SpringBatch项目,已将代码开源至github,访问地址:https://github.com/cmlbeliever/SpringBatch 欢迎star or fo ...