Skip to content

论文 绪论

kun368 edited this page Apr 17, 2018 · 3 revisions

研究背景

随着计算机技术的发展与大学程序设计竞赛的广泛开展,越来越多的高校和学生参与到ACM相关训练中,并在在线评测系统参加训练和比赛。

于学生而言,如何了解自己在众多评测系统中的综合训练情况,如何选择适合自己的题目进行针对性训练,如何了解自己在集训队中的排名水平,如何选择匹配的队友聚合形成竞争优势,成为一个很重要的话题。

于教师而言,如何了解集训队内所有同学的整体训练水平和进度,如何判断队伍的强弱,如何安排选拔参加外部比赛,如何管理所有集训同学安排日常化比赛,如何通过数学指标对学生和队伍水平进行量化,都是很重要的问题。

基于此,我们设计了ACM智能集训系统,利用Srping、Spring MVC、Spring Data JPA、RESTful、JQuery、Bootstrap、MySQL等技术,上线了V1.0系统。系统陪伴集训队员进项了上千场次的训练,陪伴了近6届队员的程序设计竞赛生涯。

然而,V1.0系统也存在着很多问题需要解决,例如队员越来越多,系统负载越来越大,运行速度缓慢。因此我们需要利用缓存、CDN、负载均衡、JavaScript框架等,做大型网站相关架构优化和升级。

另外,随着参须项目开发和运维团队同学的增加和系统功能的复杂度提升,开发、测试、发布与运维成本大大上升,此时急需研究云计算、容器与容器集群技术、持续交付工具相关方向的最新技术,并进行扩展和应用,实施DevOps。

国内外相关研究

在程序设计竞赛高速发展的今天,国内外各种比赛层出不穷,如ACM-ICPC、ACM-CCPC、Codeforces在线编程竞赛、信息学奥林匹克竞赛(OI)、蓝桥杯、CCF-CSP等。同时,各种比赛网站也越来越多,如Codeforces、杭州电子科技大学的HDU OJ、北京大学的POJ、浙江大学的ZOJ、美国弗吉尼亚大学的UVa等。

虽然比赛平台、参与比赛的大学和学生数、比赛类型越来越多,但是鲜有对参加训练的学生和队伍进行综合管理的平台。本平台所实现的队员做题统计分析、队伍组队选拔、比赛与题目分析功能,在国内国外均为首创。

同时,系统参考了国内外的一些算法,如TrueSkill排名系统。TrueSkill排名系统是针对玩家能力进行设计的,以克服现有排名系统的局限性,确保比赛双方的公平性,可以在联赛中作为排名系统使用。它为玩家排名使用的为贝叶斯定理。 系统的特点是假设每一个玩家的能力不是固定的,其能力水平的表现为一个钟型曲线。

本系统使用了Spring相关Web开发技术。Spring是Pivotal公司的一款开源的Java一站式应用开发解决方案。目前已经发展到Spring 5。Redis是完全开源免费的一个高性能的key-value数据库,Redis支持数据的持久化,可以将内存中的数据保存在磁盘中。

DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障部门之间的沟通、协作与整合。在2017年,DevOps在国内外经历了大规模容器化,许多公司投入了容器化的怀抱。这并不意味着DevOps相关工具已经成熟,但是这些工具为安全改进、容器化和工具集中化奠定了基础。DevOps已经谋求了广泛的认可,将来DevOps将走到舞台中心,被整合成为企业战略的重要组成部分。

主要研究内容

本课题主要是用Java、Kotlin、JavaScript等语言实现一个ACM集训系统,系统提供了程序设计竞赛集训所需的管理功能,并通过研究最新的分布式、机器学习、云计算、容器等技术,利用最新的大型网站开发技术对系统进行架构改造升级,最终实现一个更加具有高性能、高可用性、伸缩性、扩展性、安全性的ACM智能集训管理系统。

  1. 业务功能设计
    1. 队员做题、比赛分析
    2. 在线测评系统题目与训练书籍题目分析
    3. 队员、队伍的评价、排名、选拔系统
  2. 系统技术实现分析
    1. Spring、SpingMVC、JPA等JavaWeb开发技术
    2. 多线程并发增量式爬虫技术
    3. RESTful接口设计
    4. TrueSkill排名系统
    5. 聚类等机器学习算法技术
  3. 大型网站架构升级
    1. 反向代理、CDN等大型网站架构优化
    2. 服务数据分离、缓存、业务拆分实践
    3. 渐进式JavaScript前端框架应用
  4. DevOps解决方案实践
    1. 自动化发布、持续交付等基础设施解决方案
    2. 容器云集群技术应用
    3. 弹性伸缩技术应用

论文组织结构

第一章 “绪论”综合阐述了本文所做研究的背景,相关研究现状,本文主要研究内容与论文组织结构。

第二章 “相关技术简介”简单介绍了本文设计与开发过程中所使用的相关技术。

第三章 “需求分析”进行了业务分析,系统功能分析与非功能分析,建立了系统的业务模型,系统用例模型,并得到了其他相关需求。

第四章 “系统设计”针对系统架构,系统静态结构以及数据库进行了详细设计。

第五章 “系统实现”主要说明了系统实现过程中的细节,给出了主要类代码,核心过程代码和系统功能的相关说明。

第六章 “总结与展望”对ACM智能集训管理系统的开发工作进行了总结,并对于该系统未来的发展方向进行了展望。