第一次个人编程作业
https://github.com/929580032/031902123
一、PSP表格
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 60 | 90 |
| · Estimate | · 估计这个任务需要多少时间 | 15 | 20 |
| Development | 开发 | 160 | 200 |
| · Analysis | · 需求分析 (包括学习新技术) | 300 | 400 |
| · Design Spec | · 生成设计文档 | 30 | 40 |
| · Design Review | · 设计复审 | 30 | 40 |
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 60 |
| · Design | · 具体设计 | 300 | 400 |
| · Coding | · 具体编码 | 1000 | 1200 |
| · Code Review | · 代码复审 | 60 | 120 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 120 | 300 |
| Reporting | 报告 | 60 | 120 |
| · Test Repor | · 测试报告 | 10 | 20 |
| · Size Measurement | · 计算工作量 | 20 | 40 |
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 60 |
| · 合计 | 2285 | 3200 |
二、计算模块接口
-
(3.1)计算模块接口的设计与实现过程
-
类和主要函数
class WordNode:用来存储DFA树的节点。
class FilterSet:枚举了0~65535的所有char,判断当前字符是否是敏感词开头。
class WordFilter:用来过滤待检测文件的类。
class FileUtil:用来读写文件
class PinYinConvert:导入jar包pinyin4j来获取汉字小写全拼和获取汉字拼音首字母
class BCConvert:用来实现全角/半角转换
WordFilter中的主要函数:
函数init:初始化,获取敏感词文件和停顿词(当遍历到停顿词时直接跳过,解决敏感词中插入字符的情况)
函数sensitiveWordCombination:递归生成敏感词各种排列组合变形
函数addSensitiveWord:根据敏感词组合添加DFA树的节点
函数doFilter:遍历待检测文件,记录结果 -
算法
在实现文字过滤的算法中,DFA是比较好的实现算法。DFA 即 Deterministic Finite Automaton,也就是确定有穷自动机,它是是通过event和当前的state得到下一个state,即event+state=nextstate。
下面我用Java中的HashMap为例来实现DFA算法。
以“黄片”为例
1、在hashMap中查询“黄”看其是否在hashMap中存在,如果不存在,则证明已“黄”开头的敏感词还不存在,则我们直接构建这样的一棵树。跳至3。
2、如果在hashMap中查找到了,表明存在以“卖”开头的敏感词,设置hashMap = hashMap.get(“黄”),跳至1,依次匹配“片”。
3、判断该字是否为该词中的最后一个字。若是表示敏感词结束,设置标志位 isEnd = 1,否则设置标志位 isEnd = 0;![]()
-
-
(3.2)计算模块接口部分的性能改进

发现消耗最大的是遍历待检测文件的函数。在内存空间占用上,由于函数中频繁地对String进行插入操作,每一次对String的插入操作,String都会在字符串常量池创建对象,所以可以改为用StringBuilder,这样可以占用更少的内存空间。
-
(3.3)计算模块部分单元测试展示
sensitiveWordCombination函数测试:判断是否能够正确生成预期的敏感词排列组合。
![]()
doFilter函数测试:测试部分过滤结果是否正确。
![]()
-
(3.4)计算模块部分异常处理说明
当文件路径格式不正确时会在控制台上打印错误信息和错误提示。
![]()
三、心得
-
(4.1)在完成本次作业过程的心得体会
花了好几天才慢慢完成了这个作业,虽然过程很痛苦,很折磨,但是自己也从中学到了不少东西,学会了Maven工具的使用,如何打包成jar包,获取命令行参数等等。每天不断改善自己的代码,当自己离结果更进一步的时候,自己也会有很强的成就感和满足感




浙公网安备 33010602011771号