寒假作业(2/2)
这个作业属于哪个课程 | 2020春|W班 |
---|---|
这个作业要求在哪里 | 寒假作业(2/2) |
这个作业的目标 | 完成疫情统计的程序以及博客 |
作业正文 | ... |
其他参考文献 | ... |
1. github仓库
2. PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 60 |
Estimate | 估计这个任务需要多少时间 | 60 | 60 |
Development | 开发 | 1800 | 2000 |
Analysis | 需求分析 (包括学习新技术) | 120 | 180 |
Design Spec | 生成设计文档 | 60 | 60 |
Design Review | 设计复审 | 60 | 100 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 50 |
Design | 具体设计 | 240 | 200 |
Coding | 具体编码 | 600 | 800 |
Code Review | 代码复审 | 100 | 100 |
Test | 测试(自我测试,修改代码,提交修改) | 60 | 90 |
Reporting | 报告 | 40 | 60 |
Test Report | 测试报告 | 60 | 60 |
Size Measurement | 计算工作量 | 30 | 30 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 60 | 60 |
合计 | 3380 | 3910 |
3.解题思路描述
作业发布前几天还是不知从何做起,在查阅了资料和询问同学后有如下思路:
- 提取命令行args来解析出各个参数:log和date参数读取txt文件内容,type参数确定输出,province选择省份,最后输出到out参数指定文件
- 用hashmap来存储命令中的参数与参数值(这里认定只有list命令)
- 用正则表达式来匹配以及提取匹配和提取“省份”和“感染患者”、“疑似患者”、“治愈”、“死亡”的人数,将其存放到类RegularMatch里。
4.设计实现过程
-
statement类对输出日志中每一行语句进行拆分:provinceName,ip,sp,cure,dead,并且有五种参数的print和set方法,provinceName是String类型,其余四个是指确诊、疑似、治愈和死亡人数,为int类型。
-
HashMap commandLine 将args中的参数和参数值以键值对形式存储,方便后面进行正则匹配和提取。
-
RegularMatch正則匹配工具类:输入日志有以下8种语句格式
<省> 新增 感染患者 n人
<省> 新增 疑似患者 n人
<省1> 感染患者 流入 <省2> n人
<省1> 疑似患者 流入 <省2> n人
<省> 死亡 n人
<省> 治愈 n人
<省> 疑似患者 确诊感染 n人
<省> 排除 疑似患者 n人在这个类中用八个正则语句去匹配,并且有8个相应函数处理每种语句在provinceName,ip,sp,cure,dead五个参数的变化,最后统计全国情况。
-
readFile函数 读取目录下的所有日志内容,一次读一行,忽略最后的注释行
-
commandLinePrasing是对命令行解析后功能实现,检索到三个参数log province out并用三个相关函数实现相应的功能
5.代码说明
-
statement类:输出日志中的五种参数provinceName,ip,sp,cure,dead,以及对应的get和set方法
查看原图 -
commandLine方法:建立hashmap,把args中的参数和参数值以键值对形式存储
查看原图 -
RegularMatch正则匹配工具类:根据输入日志的8种语句格式,用八个正则语句去匹配,并且有8个相应函数处理每种语句在provinceName,ip,sp,cure,dead五个参数的变化,最后统计全国情况。
查看原图
查看原图 -
readFile方法,读取目录下的所有日志的内容,与getFileName方法结合使用
查看原图 -
commandLineParsing方法,检索到三个参数log province out并通过三个函数实现相应的功能
-
main主函数,调用commandLine和commandLineParsing来实现
-
还有一些其他方法如判断日期格式正确与否,在此不一一列举了
6.单元测试截图和描述
- 单元测试代码很多就不一一贴图了,举一个例子,测试compareDate方法时会定义几个随机日期的字符串,然后用boolean类型去检查这个方法返回值是否正确,这个测试对于不同年月日都有检查
7.单元测试覆盖率优化和性能测试
单元测试覆盖率如下,测试的数据均正确
性能测试(并没有对代码进行优化)
8.代码规范
github地址:codestyle
9. 心路历程和收获
这次作业的知识的确确是我以前没认真学过的,对于git和github只是有耳闻,直到这次作业我才了解了。在真正写代码前学习了一两天的github初使用,终于也拥有自己的仓库了。但是对于这次作业从何下手我还是一头雾水,询问了几个大佬同学才确定下来用正则表达式和哈希表来完成,还有很多其他东西都是第一次接触,比如单元测试和性能检测(这两个任务也着实让我这个小白苦恼),希望以后我能学习到更多新东西,在实践中学习,对以后工作会有所帮助。
10.技术路线图相关的5个仓库
1. SpringAll
链接:https://github.com/wuyouzhuguli/SpringAll
简介:该仓库为个人博客中Spring系列源码,包含Spring Boot、Spring Boot & Shiro、Spring Cloud,Spring Boot & Spring Security & Spring Security OAuth2。
2. cat
链接:https://github.com/dianping/cat
简介:CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。
3. vhr
链接:https://github.com/lenve/vhr
简介:微人事是一个前后端分离的人力资源管理系统,项目采用SpringBoot+Vue开发。
4. Java音乐器
链接:https://github.com/sacert/SoundSea
简介:歌曲的下载来自于http://Pleer.com,你可以通过高,低或者VBR比特率来进行过滤。如果你比较幸运,你甚至可以立刻下载作为最终结果的第一个搜索结果。此外,它还拥有一个迷你播放器,无需重载音乐库就可以简单倾听歌曲。
5. Java-Interview
链接:https://github.com/crossoverJie/JCSprout
简介:多数是一些 Java 基础知识、底层原理、算法详解。也有上层应用设计,其中不乏一些大厂面试真题。