第一次个人编程作业

github

一、PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 120
· Estimate · 估计这个任务需要多少时间 600 800
Development 开发 500 700
· Analysis · 需求分析 (包括学习新技术) 10 20
· Design Spec · 生成设计文档 10 20
· Design Review · 设计复审 5 30
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 10 20
· Design · 具体设计 30 60
· Coding · 具体编码 300 600
· Code Review · 代码复审 50 50
· Test · 测试(自我测试,修改代码,提交修改) 30 50
Reporting 报告 90 60
· Test Repor · 测试报告 30 30
· Size Measurement · 计算工作量 10 20
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 10 30
· 合计 895 1670

二、计算模块接口

  • 2.1计算模块接口的设计与实现过程

    • 2.1.1概述

      看到了这个作业,就开始百度搜索各种资料,基本上查阅到的都是ac自动机河dfa算法。但是百度上的这些算法无法直接照搬实现本次作业的要求,于是就开始头脑风暴,并且和同学深度交流。于是确立了解决问题的方法,即拿到文本后,首先删除特殊字符号和空格,然后将利用拼音包和偏旁部首包,将中文转化成拼音、首字母和拆分成偏旁部首,并把这些拼音,首字母和偏旁部首映射成数字码,建立字典树。
  • 2.1.2项目设计结构

    运用两个包,一个拼音包和一个偏旁部首包。每个包对应一个函数,将拆分成的拼音和偏旁部首及首字母映射成单一的数字码。读入敏感词汇表,建立敏感词字典树。读入文本,与敏感词字典树进行匹配,最后输出结果。
  • 2.1.3思路设计

    拿到文本后,首先删除特殊字符号和空格,然后将利用拼音包和偏旁部首包,将中文转化成拼音、首字母和拆分成偏旁部首,并把这些拼音,首字母和偏旁部首映射成数字码,建立字典树。

    以图本为例子

  • 2.1.4关键算法DFA




    2.1.5单元测试模块

  • 使用的是cprofile测试工具,但因为代码没完全实现,所以测试结果不理想

三、心得

  • 这次作业对我而言难度比较大,刚拿到这份作业时候抵触情绪很高涨,以至于前期浪费了很多时间,后面时间匆忙,无法保证作业的完整度,算法只实现了一半而没有全部实现。但其实如果前期有做准备和提前打算,这次作业尽力是可以做出来的。因此给我的教训即是凡事不要有抵触情绪,其实尽力自己也是可以完成的。这次作业学到的东西有很多,如github的搜索,dfa算法和python语法及运用,也了解到以前从未知道的单元测试,查看覆盖率等等。
  • 很久没打过这么多很这么难的代码,也确实够锻炼人的耐心和毅力。debug和思考代码,建立字典树花费了我很多时间,锻炼了代码能力。虽然过程真的很痛苦,但也算是尽力了打出了一些符合本次作业要求的算法。下次作业再加油吧。
posted @ 2021-09-16 16:05  朝如青丝暮成雪6  阅读(67)  评论(0编辑  收藏  举报