黄懋贤 - 博客园

寒假作业(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.设计实现过程

RUNOOB 图片
查看原图

  1. statement类对输出日志中每一行语句进行拆分:provinceName,ip,sp,cure,dead,并且有五种参数的print和set方法,provinceName是String类型,其余四个是指确诊、疑似、治愈和死亡人数,为int类型。

  2. HashMap commandLine 将args中的参数和参数值以键值对形式存储,方便后面进行正则匹配和提取。

  3. RegularMatch正則匹配工具类:输入日志有以下8种语句格式

    <省> 新增 感染患者 n人
    <省> 新增 疑似患者 n人
    <省1> 感染患者 流入 <省2> n人
    <省1> 疑似患者 流入 <省2> n人
    <省> 死亡 n人
    <省> 治愈 n人
    <省> 疑似患者 确诊感染 n人
    <省> 排除 疑似患者 n人

    在这个类中用八个正则语句去匹配,并且有8个相应函数处理每种语句在provinceName,ip,sp,cure,dead五个参数的变化,最后统计全国情况。

  4. readFile函数 读取目录下的所有日志内容,一次读一行,忽略最后的注释行

  5. commandLinePrasing是对命令行解析后功能实现,检索到三个参数log province out并用三个相关函数实现相应的功能

5.代码说明

  • statement类:输出日志中的五种参数provinceName,ip,sp,cure,dead,以及对应的get和set方法
    RUNOOB 图片
    查看原图

  • commandLine方法:建立hashmap,把args中的参数和参数值以键值对形式存储
    RUNOOB 图片
    查看原图

  • RegularMatch正则匹配工具类:根据输入日志的8种语句格式,用八个正则语句去匹配,并且有8个相应函数处理每种语句在provinceName,ip,sp,cure,dead五个参数的变化,最后统计全国情况。
    RUNOOB 图片
    查看原图
    RUNOOB 图片
    查看原图

  • readFile方法,读取目录下的所有日志的内容,与getFileName方法结合使用
    RUNOOB 图片
    查看原图

  • commandLineParsing方法,检索到三个参数log province out并通过三个函数实现相应的功能
    RUNOOB 图片
    RUNOOB 图片
    RUNOOB 图片
    RUNOOB 图片

  • main主函数,调用commandLine和commandLineParsing来实现
    RUNOOB 图片

  • 还有一些其他方法如判断日期格式正确与否,在此不一一列举了

6.单元测试截图和描述

  • 单元测试代码很多就不一一贴图了,举一个例子,测试compareDate方法时会定义几个随机日期的字符串,然后用boolean类型去检查这个方法返回值是否正确,这个测试对于不同年月日都有检查
    RUNOOB 图片

7.单元测试覆盖率优化和性能测试

单元测试覆盖率如下,测试的数据均正确
RUNOOB 图片
性能测试(并没有对代码进行优化)
RUNOOB 图片

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 基础知识、底层原理、算法详解。也有上层应用设计,其中不乏一些大厂面试真题。

posted @ 2020-02-18 09:40  hmx1  阅读(204)  评论(2编辑  收藏  举报