第一次个人编程作业
https://github.com/Eden8771/031902418
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 15 | 15 |
| · Estimate | · 估计这个任务需要多少时间 | 15 | 15 |
| Development | 开发 | 60 | 180 |
| · Analysis | · 需求分析 (包括学习新技术) | 20 | 20 |
| · Design Spec | · 生成设计文档 | 10 | 10 |
| · Design Review | · 设计复审 | 10 | 10 |
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
| · Design | · 具体设计 | 30 | 70 |
| · Coding | · 具体编码 | 300 | 450 |
| · Code Review | · 代码复审 | 60 | 180 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 30 | 60 |
| Reporting | 报告 | 30 | 50 |
| · Test Repor | · 测试报告 | 40 | 50 |
| · Size Measurement | · 计算工作量 | 20 | 20 |
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 20 | 20 |
| · 合计 | 670 | 1160 |
3.标题二:二、计算模块接口
(3.1)计算模块接口的设计与实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?说明你的算法的关键(不必列出源代码),以及独到之处。(18')设计有
敏感词类MGC(包含编号,词,长度,属性)
行类HANG(编号,内容,长度)
答案类ANS(敏感词的编号,行的编号,对应字段的定位)
检测函数search (对本文进行检测,中英文,同音字,拆字等)
输出函数ANS_print(打印找到的答案)
当看到这道题目时,我首先想到的是利用字典树,将一种敏感词的所有可能表现形式打包起来,然后通过识别文本中的各种表现形式去追述到敏感词的词根,从而找出敏感词。通过网上资料的查找,我找到了一种实现方法,AC自动机。
AC自动机需要有前置知识:Trie树(简单介绍:又称前缀树,字典树,是用于快速处理字符串的问题,能做到快速查找到一些字符串上的信息。)ac自动机,就是在tire树的基础上,增加一个fail指针,如果当前点匹配失败,则将指针转移到fail指针指向的地方,这样就不用回溯,而可以路匹配下去了。
展示一下AC自动机的算法完成方法
(3.2)计算模块接口部分的性能改进。记录在改进计算模块性能上所花费的时间,描述你改进的思路,并展示一张性能分析图(由VS 2019、JProfiler或者Jetbrains系列IDE自带的Profiler的性能分析工具自动生成),并展示你程序中消耗最大的函数。(12')太菜了,时间不够,也暂时无法完成,在学python,但果然临时抱佛脚是行不通的。
(3.3)计算模块部分单元测试展示。展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路。并将单元测试得到的测试覆盖率截图,发表在博客中。(12')
太菜了,暂时无法完成。
(3.4)计算模块部分异常处理说明。在博客中详细介绍每种异常的设计目标。每种异常都要选择一个单元测试样例发布在博客中,并指明错误对应的场景。(6')
太菜了,暂时无法完成。
4.标题三:三、心得
(4.1)在完成本次作业过程的心得体会(3')
本次作业深感到了自己的无能,需要重新开始努力了。本次作业的第一直觉应该就是使用python来完成了,python里应该有很多相应的现成函数库,可以简化作业的工程量。可是我没碰过python,因此要在短短的时间从头自学,去寻找敏感词检索的方法去从头构建,加上以前从未使用过github,因此本次的作业对我个人而言难度是极大的,我只能勉强的去做了。不过由于自学时间不是很够,目前我只能使用C++先完成一部分功能,截止前还是暂时没能完成可运行的程序,抱歉。









浙公网安备 33010602011771号