晚上睡不着觉,仔细研读了洛谷的第四代评测机技术分析后,突然发现自己写的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. jQuery简单竖排手风琴折叠菜单代码

    项目需求1.刚开始只显示,每个标题, 2.让每个 li列表隔行换色 3.当我点击某个标题时,下面的列表会缓慢的展开,其他列表展开的内容会收起 <!DOCTYPE html> <htm ...

  2. uniapp自定义简单弹窗组件

    2.0(2019-08-31) 船新版本的信息弹窗组件 插件市场地址:http://ext.dcloud.net.cn/plugin?id=672 可以弹出很多条信息,并单独控制消失时间.点击消失. ...

  3. Coursera课程笔记----计算导论与C语言基础----Week 10

    C程序中的数组(Week 10) 一维数组 数组的定义 类型 数组名[常量表达式] int sheep[10] 定义数组时,[]内必须为常量表达式 可以用const int 可以在main函数前,#d ...

  4. vue滑动吸顶以及锚点定位

    Vue项目中需要实现滑动吸顶以及锚点定位功能.template代码如下: <template> <div class="main"> <div id= ...

  5. python入门及数字、字符串类型

    目录 python开发框架 开发 1. 开发语言 2. 语言比对 3. python安装 4. Python开发IDE:pycharm ,eclipse python入门 1. 第一句Python 2 ...

  6. 设计模式之GOF23观察者模式

    观察者模式Observer 广播机制 场景:多个观察者--被通知改变 CS的时候,人物移动坐标变化,更新每个人地图上的坐标 核心:当目标对象(Subject)的状态值改变时,需要及时告知所有观察者(O ...

  7. 1008 Elevator (20分)

    1008 Elevator (20分) 题目: The highest building in our city has only one elevator. A request list is ma ...

  8. 2018-08-27 jq筛选选择器

    筛选选择器:为了辅助选择器更简便.快速的找到元素: 1.过滤 eq(n) -> 第n个元素(从零开始) $('h1').eq(2) // 第三个h1 first() -> 第一个元素 la ...

  9. python之模块、类、对象

    模块就像字典 字典是python中唯一映射关系,它用一个事物对应另外一个事物,也就是所谓的key->value. 模块包含一些变量和函数,可以导入,并且可以用点(·)来操作访问变量和函数. 记住 ...

  10. MySQL zip解压 安装过程和配置

    MYSQL官网下载地址:https://dev.mysql.com/downloads/mysql/   1.下载mysql-5.7.19-winx64.zip,解压到指定的文件夹, 例如:E:\so ...