今天跟大家伙儿唠唠我最近搞的这个“云阅卷系统”,一开始我心里也没底,感觉这玩意儿挺高大上的,但真做起来,发现也就那么回事儿。
老板丢给我这个活儿,说要搞个云阅卷,提高效率,我当时就懵了,啥是云阅卷?这玩意儿我没接触过!赶紧上网搜资料,看了不少“云阅卷系统”,什么“五岳云阅卷”、“鑫考云阅卷”的,看得我眼花缭乱。不过总算搞明白个大概,就是把试卷扫描上传到云端,老师在电脑上阅卷,还能自动统计分析啥的。
第一步,选技术。 我寻思着,这东西得稳定、安全,还得方便维护。前端我选了Vue,上手快,组件化开发也方便。后端嘛本来想用Java的,毕竟老本行,但后来一想,这玩意儿并发量估计挺大的,还是用Go,性能而且最近也一直在学Go,正好练练手。数据库就用MySQL,成熟稳定。
第二步,搭框架。 用Go写后端,我选了个轻量级的框架,叫Gin,路由啥的配置起来很方便。前端Vue就用Vue CLI快速生成了一个项目,然后开始一点一点往里面加东西。数据库连接池、日志、配置文件,这些基础的东西先搞定。
第三步,实现核心功能。 这才是重头戏。是试卷上传,这块儿我用了七牛云的存储服务,方便,省心。然后是试卷的图像处理,涉及到图像识别,这块儿我直接调用的百度的AI接口,识别手写体,识别选择题,虽然准确率不是百分百,但也能大大减轻老师的工作量。阅卷这块儿,我设计了一个在线阅卷的界面,老师可以在电脑上直接打分、写评语。最难的是自动统计分析,各种维度的报表,班级平均分、最高分、最低分、等等,这块儿我写了好多的SQL语句。
第四步,测试和优化。 功能都实现了,接下来就是不停的测试,找bug。刚开始问题一大堆,什么上传失败、图像识别错误、统计数据不对,真是焦头烂额。一点一点的改,优化代码,提高性能。特别是并发这块儿,我用了Go的goroutine,大大提高了系统的吞吐量。
第五步,部署上线。 把系统部署到阿里云服务器上,用Docker容器化部署,方便快捷。配置好Nginx反向代理,设置好域名,总算上线了!
遇到的坑
- 图像识别:百度的AI接口一开始用着挺后来发现识别率忽高忽低,不稳定。后来我加了一些图像预处理的步骤,比如图像增强、降噪,稍微好了一些。
- 并发问题:刚开始没考虑并发,结果几个老师同时阅卷,系统就卡死了。后来用了goroutine和channel,解决了并发问题。
- 数据库连接:数据库连接池的大小一开始设置的不合理,导致数据库连接数不够用。后来根据实际情况调整了连接池大小。
这回搞“云阅卷系统”,虽然过程很痛苦,但学到了很多东西。不仅巩固了Vue和Go的技术,还了解了图像识别、云计算、数据库优化等方面的知识。最重要的是,让我明白,再高大上的东西,只要一步一个脚印,也能把它搞出来。
对了,顺便说一句,现在这个系统还在不断完善中,后续还会加入更多功能,比如自动生成错题本、个性化学习推荐啥的,敬请期待!