-
Notifications
You must be signed in to change notification settings - Fork 8
论文 绪论
随着计算机技术的发展与大学程序设计竞赛的广泛开展,越来越多的高校和学生参与到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智能集训管理系统。
- 业务功能设计
- 队员做题、比赛分析
- 在线测评系统题目与训练书籍题目分析
- 队员、队伍的评价、排名、选拔系统
- 系统技术实现分析
- Spring、SpingMVC、JPA等JavaWeb开发技术
- 多线程并发增量式爬虫技术
- RESTful接口设计
- TrueSkill排名系统
- 聚类等机器学习算法技术
- 大型网站架构升级
- 反向代理、CDN等大型网站架构优化
- 服务数据分离、缓存、业务拆分实践
- 渐进式JavaScript前端框架应用
- DevOps解决方案实践
- 自动化发布、持续交付等基础设施解决方案
- 容器云集群技术应用
- 弹性伸缩技术应用
第一章 “绪论”综合阐述了本文所做研究的背景,相关研究现状,本文主要研究内容与论文组织结构。
第二章 “相关技术简介”简单介绍了本文设计与开发过程中所使用的相关技术。
第三章 “需求分析”进行了业务分析,系统功能分析与非功能分析,建立了系统的业务模型,系统用例模型,并得到了其他相关需求。
第四章 “系统设计”针对系统架构,系统静态结构以及数据库进行了详细设计。
第五章 “系统实现”主要说明了系统实现过程中的细节,给出了主要类代码,核心过程代码和系统功能的相关说明。
第六章 “总结与展望”对ACM智能集训管理系统的开发工作进行了总结,并对于该系统未来的发展方向进行了展望。