1、前言
这个作业属于哪个课程 | 2020春W班(福州大学) |
---|---|
这个作业要求在哪里 | 作业要求 |
这个作业的目标 | 建立博客、回顾、简历、绘制学习路线 |
作业正文 | 作业正文 |
其他参考文献 | ... |
2、PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 20 |
Estimate | 估计这个任务需要多少时间 | 20 | 20 |
Development | 开发 | 1320 | 1500 |
Analysis | 需求分析 (包括学习新技术) | 120 | 180 |
Design Spec | 生成设计文档 | 30 | 30 |
Design Review | 设计复审 | 30 | 30 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 60 | 90 |
Design | 具体设计 | 240 | 240 |
Coding | 具体编码 | 720 | 840 |
Code Review | 代码复审 | 60 | 30 |
Test | 测试(自我测试,修改代码,提交修改) | 60 | 60 |
Reporting | 报告 | 120 | 150 |
Test Report | 测试报告 | 60 | 60 |
Size Measurement | 计算工作量 | 30 | 30 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 60 |
合计 | 1440 | 1650 |
3、思路描述
这次作业,我的基本思想是,通过命令行读入的数据进行一个处理,将得到的数据进行一个解析并分别进行存储。在通过命令行的要求读入对应的文件,并通过正则表达式去匹配符合条件的数据,并提取出我们需要的部分,再对其进行合并存储。最后通过条件存入指定的文件夹。
4、实现过程
5、代码说明
程序主要由六个类构成,分别为CommandLine(命令行数据存储类),CommandLineAnalytic(命令行解析类),RegexUtil(正则表达式工具类),LogUtil(文件数据处理类),LogDao(文件输入输出控制类),CommandLineApplication(启动类)。
1、存放命令行参数的数据结构:
2、解析命令行参数:
3、正则表达式匹配,并定义函数getString来获取数据:
4、存储文件数据结构,并将正则表达式匹配得到的数据存入
5、合并得到的同省数据
6、读入文件,数据整理。
如果log的参数是一个文件
如果log的参数是一个目录
重新定义compar方法
7、按要求输出数据
对province数据先进行一次排序
如果province不为空
反之
6、单元测试截图和描述
1、CommandLine
主要测试commandLine中,command和record的构造函数以及setter和getter函数
2、CommandLineAnalytic
主要测试方法analytic是否正确解析命令行
3、RegexUtil
主要测试正则表达式是否无误,以及得到的数据是否正确
4、LogUtil
主要测试存储数据,数据排序及合并
5、LogDao
主要测试文件的读入和输出
7、单元测试覆盖率优化及性能测试
1、代码覆盖率
使用eclipse中junit5
2、性能测试
使用JProfiler 11.1进行性能分析
3、优化策略
- InfectResult,与RegexUtil中存在大量setter函数,但却基本没有用,进行删除。
- 字符串String调用次数过多,在函数循环体中定义了过多String局部变量,导致多次不必要调用。
- I/O操作时,在使用完毕,没有及时关闭以释放资源,产生较大的开销。
8、github仓库链接、代码规范链接
9、心路历程和收获
最大的感受是,好多东西没用过,折腾的我人都有点不好了。因为第一次接触单元测试和覆盖率,性能测试,折腾了好久,才搞好。英文又很烂,有些按键实在是没懂什么意思,看的迷迷糊糊,基本都是乱点,点出套路。
这次作业让我再次复习了java,从大二后比较少写,发现有些生疏。让我重新再认识了一遍正则表达式的使用。
撰写代码风格,有些陌生,平常都是怎么喜欢怎么写。通过这次作业获益良多。
10、技术路线图相关的5个仓库
新冠肺炎地图,涉及很多地图相关营业厅,以及很多eCharts特性的实践
javaGuide,一份java学习直男,涵盖大部分需要掌握的核心知识
新冠肺炎数据:对丁香园网站的新冠肺炎数据爬取,并且用echarts进行汇总展示