晚上睡不着觉,仔细研读了洛谷的第四代评测机技术分析后,突然发现自己写的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. 学习vue第五节,vue中使用class和style的css样式

    vue中使用class样式 数组 <h1 :class="['red', 'thin']">这是一个H1</h1> 数组中使用三元表达式 <h1 :c ...

  2. 第3章:关系数据库标准语言 SQL

    目录 第3章:关系数据库标准语言 SQL 3.1.SQL概述 3.1.1.历史 3.3.2.SQL语言的功能 3.3.3.SQL的特点 3.3.4.基本概念 3.2.学生-课程数据库 3.3.数据定义 ...

  3. Java模拟UDP通信

    目录 Java基础:模拟UDP通信 1.一次发送,一次接收 1.1.发送方 1.2.接收方 2.多次发送,多次接收 2.1.发送方 2.2.接收方 3.模拟双方通信 3.1.发送方的线程 3.2.接收 ...

  4. 【2020Java最新学习路线】写了很久,这是一份最适合普通大众、科班、非科班的路线

    点赞再看,养成习惯,微信搜索[三太子敖丙]关注这个互联网苟且偷生的工具人. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的 ...

  5. 解决编码问题:AttributeError: 'str' object has no attribute 'decode'

    1. 问题发现: 出现:读取文件,对其进行解码,出现错误,AttributeError: 'str' object has no attribute 'decode' 解释:属性错误,str对象不包含 ...

  6. Vue3语法快速入门以及写一个倒计时组件

    Vue3写一个倒计时组件 vue3 beta版本发布已有一段时间了,文档也大概看了一下,不过对于学一门技术,最好的方法还是实战,于是找了一个比较简单的组件用vue3来实现,参考的是vant的count ...

  7. python语法学习第十天--类与对象相关的BIF、魔法方法

    一些相关的BIF: issubclass(class,classInfo)#判断是否为子类,classInfo可以为多个类的元组,其中一个是,返回true,一个类也被认为是自己的子类,object是所 ...

  8. POJ1321棋盘问题(DFS)

    Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子 ...

  9. css概述四

    八.文本格式化 2.文本属性 ①文本颜色 color:合法的颜色值 ②文本对齐方式 text-align: 取值 left/center/right/justify 注意  1.一个元素写了text- ...

  10. day02:三元运算、布林非、列表等(20170214)

    #1:三元运算(满足条件就返回值,不简洁的代码):a= 1b= 3c= 5if a > b : d = aelse: d = cprint (d) #2:三元运算(满足条件就返回值,简洁的代码) ...