寒假作业(2/2)

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、思路描述

寒假作业(2/2)

这次作业,我的基本思想是,通过命令行读入的数据进行一个处理,将得到的数据进行一个解析并分别进行存储。在通过命令行的要求读入对应的文件,并通过正则表达式去匹配符合条件的数据,并提取出我们需要的部分,再对其进行合并存储。最后通过条件存入指定的文件夹。

4、实现过程

寒假作业(2/2)

5、代码说明

程序主要由六个类构成,分别为CommandLine(命令行数据存储类),CommandLineAnalytic(命令行解析类),RegexUtil(正则表达式工具类),LogUtil(文件数据处理类),LogDao(文件输入输出控制类),CommandLineApplication(启动类)。

代码地址

1、存放命令行参数的数据结构:

寒假作业(2/2)寒假作业(2/2)

2、解析命令行参数:

寒假作业(2/2)

3、正则表达式匹配,并定义函数getString来获取数据:

寒假作业(2/2)

寒假作业(2/2)

寒假作业(2/2)

4、存储文件数据结构,并将正则表达式匹配得到的数据存入

寒假作业(2/2)

寒假作业(2/2)

5、合并得到的同省数据

寒假作业(2/2)

6、读入文件,数据整理。

如果log的参数是一个文件

寒假作业(2/2)

如果log的参数是一个目录

寒假作业(2/2)

重新定义compar方法

寒假作业(2/2)

7、按要求输出数据

对province数据先进行一次排序

寒假作业(2/2)

如果province不为空

寒假作业(2/2)

反之

寒假作业(2/2)

6、单元测试截图和描述

1、CommandLine

主要测试commandLine中,command和record的构造函数以及setter和getter函数

寒假作业(2/2)

寒假作业(2/2)

2、CommandLineAnalytic

主要测试方法analytic是否正确解析命令行

寒假作业(2/2)

寒假作业(2/2)

3、RegexUtil

主要测试正则表达式是否无误,以及得到的数据是否正确

寒假作业(2/2)

寒假作业(2/2)

4、LogUtil

主要测试存储数据,数据排序及合并

寒假作业(2/2)

寒假作业(2/2)

5、LogDao

主要测试文件的读入和输出

寒假作业(2/2)

寒假作业(2/2)

7、单元测试覆盖率优化及性能测试

1、代码覆盖率

使用eclipse中junit5

寒假作业(2/2)

2、性能测试

使用JProfiler 11.1进行性能分析

寒假作业(2/2)

3、优化策略

  • InfectResult,与RegexUtil中存在大量setter函数,但却基本没有用,进行删除。
  • 字符串String调用次数过多,在函数循环体中定义了过多String局部变量,导致多次不必要调用。
  • I/O操作时,在使用完毕,没有及时关闭以释放资源,产生较大的开销。

8、github仓库链接、代码规范链接

仓库链接
代码规范链接

9、心路历程和收获

最大的感受是,好多东西没用过,折腾的我人都有点不好了。因为第一次接触单元测试和覆盖率,性能测试,折腾了好久,才搞好。英文又很烂,有些按键实在是没懂什么意思,看的迷迷糊糊,基本都是乱点,点出套路。

这次作业让我再次复习了java,从大二后比较少写,发现有些生疏。让我重新再认识了一遍正则表达式的使用。

撰写代码风格,有些陌生,平常都是怎么喜欢怎么写。通过这次作业获益良多。

10、技术路线图相关的5个仓库

新冠肺炎地图,涉及很多地图相关营业厅,以及很多eCharts特性的实践

javaGuide,一份java学习直男,涵盖大部分需要掌握的核心知识

新冠肺炎数据:对丁香园网站的新冠肺炎数据爬取,并且用echarts进行汇总展示

java-design-patterns,是程序员在设计应用程序或系统时用来解决常见问题的最佳实践手册

Netty,一个广泛用于Java网络编程框架,用以快速开发高性能,高可靠性的服务器和客服端程序