• 第二次作业——个人项目实战


    作业链接
    GitHub

        在(00:12)终于改完了bug,我的结果也终于和同学的结果一致了。在此感谢
    

    璟哥
    源神
    这个453万的字符串我终于是跑对了。还是代码量太少了,前天璟哥跟我讲了一个小时,从头到尾,我听是听明白了,但是轮到自己写的时候,就开始各种迷茫,乱,先后顺序都很懵。但是学到了一个总体的框架,class类啊,.h文件,类功能的独立,这些倒是学到了。照着他的框架我自己敲了一边代码,璟哥是个很严格的人,不会给我代码,但是允许我去他的电脑上面看他写的代码,不懂可以问。但是他的核心算法我还是知其然,不知其所以然。没办法,我自己开始了自己的想法。

    PSP表格

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

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

        学习了璟哥的框架,写了一个工具类,里面的函数如下:
    
    • static int count(map<string, int> mp)//计算单词总数;
    • static int GetLines(string s)//计算行数;
    • static string GetString(ifstream& in)//得到文本的字符串;
    • static vector<pair<int,string> > getSort(map<string, int> mp)//排序;
    • static map<string, int> countWord(string s)//得到单词映射表;

    计算模块接口部分的性能改进

        性能改进我还没时间去考虑,熬了两天夜才把具体代码肝出来,目前只能想到cin,cout改成scanf,printf之类的小优化。
    

    计算模块单元测试部分

        未完成。
    

    遇到的问题

        我的思路是
        1、先逐个字符读进来,存在一个string里面,读的时候进行预处理,把大写的字母全部处理成小写的字母,其他的不变,得到一个字符串。
    
        2、判断是否为单词:
    
                a版本:先找到一个英文字母,然后找到离它最近的下一个非英文字母非数字的符号,然后把这段字符串截出来,先用.length()判断字符串长度是否大于等于4,不是的话,从刚刚找到的非英文字母非数字的符号继续遍历,再找到下一个英文字符。如果长度大于4,就判断他的前四位是不是英文字符,是的话,这就是一个单词。然而a版本有个致命性的错误,123abcd11,类似这种,abcd11就会被我提取出来,并当作单词。于是乎有了b版本。
    
                b版本:先找到一个英文或数字字符,后面的思路不变。这样子跑出来的结果就是和他们俩的结果一样了。因为我的处理是判断前四位是不是英文字母,并设有一个标志位。如果被判定为英文单词,就把单词放进map中。再利用vector,然后sort一下,结果就出来了(我还是偷懒了,哈哈哈哈哈)。还有一个致命的问题,我的行数统计答案应该还是错误的,理解璟哥的想法,然后自己写一遍,9万多行,到我这里就变成12万了。真的是太真实了。
    

    flag

        买的Java编程思想已经到了,刚刚到的,可以开始看书,敲书上的代码了,在这里欠下的债,慢慢补回来。
  • 相关阅读:
    SpringBoot之旅第三篇-日志
    SpringBoot之旅第二篇-配置
    SpringBoot之旅第一篇-初探
    394. 字符串解码
    1190. 反转每对括号间的子串
    921. 使括号有效的最少添加
    Leetcode 1171. 从链表中删去总和值为零的连续节点
    设计模式之过滤器模式——Java语言描述
    MySQL查询执行的基础
    设计模式之桥接模式——Java语言描述
  • 原文地址:https://www.cnblogs.com/nanjibin/p/9637730.html
Copyright © 2020-2023  润新知