多线程重构 项目背景 - xurui742744538/MultithreadedProject GitHub Wiki
项目背景和问题
这个项目来自我所在项目组为电信教育系统设计开发的一套自适应的考试学习系统,面向的用户主要是职业学院的的老师和学生以及短时间脱产学习的在职人员。什么叫自适应呢?就是当时提出一种教育理念,对学员的学习要求经常考试进行检查,学员的成绩出来以后,老师会要求系统根据每个学员的考卷上错误的题目从容量为10万左右的题库中抽取题目,为每个学员生成一套各自个性化的考后复习和练习的离线练习册。所以,每次考完试,特别是比较大型的考试后,要求生成的离线文档数量是比较多的,一个考试2000多人,就要求生成2000多份文档。 问题是离线文档生成的速度非常慢,慢到什么程度呢?一份离线文档的生成平均时长在45秒左右,遇到成绩不好的学生,文档内容多的,生成甚至需要3分钟,2000人,平均45秒,全部生成完,需要2000*55=90000秒,大约是25个小时。为什么如此之慢?这跟离线文档的生成机制密切相关,对于每一个题目要从保存题库的数据库中找到需要的题目,单个题目的表现形式如图,数据库中存储则采用类html形式保存,对于每个题目而言,解析题目文本,找到需要下载的图片,每道题目都含有大量或大型的图片需要下载,等到文档中所有题目图片下载到本地完成后,整个文档才能继续进行处理。