第五次作业

  1. 度量分析

因为第五次作业是在第三次作业的基础上改的,所以出现了与第三次作业一样的问题,即圈复杂度超标和嵌套现象严重。同时,由于对多线程的不熟悉,将一些功能集中的放入了一个类里,这也是McCabe Cyclomatic Complexity和Nested Block Depth标红的原因。

  2.类图

从类图可以看出度量分析中体现的问题,即在方法的分配上不平均,将大部分功能都交给了dt类,导致这个类很冗长,从而也影响了整个程序的简洁性。

  3.BUG

对于这一次的电梯作业,第一次用多线程来解决问题,感觉压力很大。在思考,设计和实现的过程中,遇见了很多问题,用了很多的时间。直到最后,对多线程安全的理解也是似懂非懂,导致在公测和互测中出现了很多BUG。首先公测中,出现几个粗心的BUG,(1)没有输出T(2)没有把结果输出到result,输出到了控制台。这两个简单的BUG,都是因为没有仔细的阅读指导书导致的,所以要认真的阅读指导书的要求,才能避免一些简单的BUG。然后出现了指令分配错误,指令执行的时间输出以及指令本身的输出有问题和电梯选择不正确的BUG。而回到程序中去解决BUG的时候,发现主要是qingq类,即分配指令的类出现了问题。而这个类的设计问题,导致出现了一系列的问题,所以对每一个类的设计都应该反复的思考和测试。作为被测者,被发现了两个BUG,一个是测试完后程序的线程没有关闭,这个是因为对多线程的不熟练导致的。作为测试者,发现了对面的公测出现了三个错误,全是关于捎带问题的。这次作业比较难,不仅整体的设计上容易出现问题,在一些细节上的处理也容易出现问题。第一次多线程作业,带来了很多关于多线程的反思和经验。

第六次作业

第六次作业是对文件的各种操作与监控,因为对作业目标和很多新操作的不清楚,没有及时做完提交,就不做分析了。

第七次作业

  1. 度量分析

第一次出租车作业,仍然出现了之前的问题。因为将很多的功能放到了taxi类里,以及if-else的大量使用,导致嵌套严重。因此以后需要注意这些问题。

  2.类图

这次的类图比较简单。

  3.BUG

尽管这是第三次多线程作业,但是对于多线程的理解和具体实现,仍然有很多不明白的地方。就这次作业而言,公测与互测中,出现了两个BUG。公测中有一个BUG,是当输入指令的关键字错误时,没有报错。互测中的BUG是,当没有出租车响应乘客请求时,没有告知乘客。而作为测试者,发现了对方的两个BUG,一个是输出格式的错误,没有输出途径节点的坐标和时刻,另一个BUG,是输出时间不正确,回到对方的程序中,发现他的设计没有问题,只是在计算时间的时候用到了系统时间,而系统时间在调用gui,计算最小距离时,可能出现了延迟,导致最后算出的时间多了100ms或200ms。

心得体会

1.第一次接触学习多线程,发现理解起来有困难。而在用多线程解决问题时,发现对于多线程的项目的架构设计也有困难,因为要清楚建立多少个类,多少个线程,每个类都承担什么功能,线程与线程之间的关系,才能将更好的解决问题。

2.线程安全是多线程的关键。对共用资源的分析,是否对其进行保护,将影响程序是否出现一些不合乎常理的错误。因为多个线程同时运行的情况下,会对公共资源进行争夺,如果不加管控,可能会对公共资源进行难以意料或是不想要的操作和改变。所以在设计时,要分析线程之间的关系,要分析清楚共用资源。

3.虽然尽力的完善设计,但是实现的过程中总会有一些问题。只是在处理这些问题时,需要思考的是这个问题与整体设计的联系,这样才能及时的发现整体设计的问题,不然,这个问题解决了,仅仅是解决了局部的问题。

oo第二次总结的更多相关文章

  1. OO第二次博客作业——电梯调度

    OO第二次博客作业——电梯调度 前言 最近三周,OO课程进入多线程学习阶段,主要通过三次电梯调度作业来学习.从单部电梯的傻瓜式调度到有性能要求的调度到多部电梯的调度,难度逐渐提升,对同学们的要求逐渐变 ...

  2. oo第二单元作业总结

    oo第二单元博客总结 在第一单元求导结束后,迎来了第二单元的多线程电梯的问题,在本单元前两次作业中个人主要应用两个线程,采用“生产者-消费者”模式和共享数据变量的方式解决问题.在第三次作业中加入多个电 ...

  3. OO第二单元优化博客

    OO第二单元优化博客 第五次作业没有性能分,但是,我在这一单元的宗旨就是写一个日常生活中 最常见的那种电梯,所以第五次我没有写傻瓜电梯,而是直接写了个\(look\),和第六次基本相同. 总计一下lo ...

  4. OO第二次博客作业—17373247

    OO第二次博客作业 零.写在前面 OO第二单元宣告结束,在这个单元里自己算是真正对面向对象编程产生了比较深刻的理解,也认识到了一个合理的架构为编程带来的极大的便利. (挂三次评测分数 看出得分接近等差 ...

  5. 【OO学习】OO第二单元作业总结

    OO第二单元作业总结 在第二单元作业中,我们通过多线程的手段实现了电梯调度,前两次作业是单电梯调度,第三次作业是多电梯调度.这个单元中的性能分要求是完成所有请求的时间最短,因此在简单实现电梯调度的基础 ...

  6. OO第二次作业总结

    OO~第二次作业总结 连续三周的电梯作业结束了,总的来说这三次作业做的还算平稳,既没有被刀,也没有刀中别人.那么接下来开始谈谈我对这三次作业的认识. 一.设计策略 我三次作业的设计思路基本上是相同的, ...

  7. OO第二单元小结

    OO第二单元小结 一.三次作业代码分析. 1.第一次作业 第一次作业是单部电梯的傻瓜调度,由于其过分傻瓜,所以第一次作业我只有两个类,一个main,一个电梯,main类负责不断从输入流中读取命令,如果 ...

  8. OO第二单元多线程电梯总结

    OO第二单元多线程电梯总结 第一次作业 设计思路 Input为输入线程,负责不断读取请求并将读到的请求放入调度器中. Dispatcher为调度器,是Input线程和Elevator线程的共享对象,采 ...

  9. OO第二次单元总结

    OO第二次单元总结 前言 第二单元的三次作业:系列电梯与多线程. 第五次作业 (1)设计策略 电梯的第一次作业是单部傻瓜电梯,采用FAFS调度策略,电梯按队列顺序依次处理请求,单次只处理一个请求.本次 ...

  10. OO第二次单元总结——电梯多线程调度问题

    OO第二次单元总结--电梯多线程调度问题 在这个单元OO学习中,我们终于迎来了期待已久(不是)的电梯多线程调度作业,开启了OO打怪之路的新关卡.虽然说经过了这三次作业,我对于多线程的理解还不能算是熟练 ...

随机推荐

  1. IIS短文件漏洞(搬运整理)

    0x01. IIS短文件漏洞的由来 Microsoft IIS 短文件/文件夹名称信息泄漏最开始由Vulnerability Research Team(漏洞研究团队)的Soroush Dalili在 ...

  2. 更改 Ubuntu默认Python版本的问题

    一般Ubuntu默认版本为2.x,之前运行一些程序,将默认版本修改为3.5,现在想修改为2.7. 之前的方法有些忘记,现在重新记录一下: 1.查看你系统中有哪些Python的二进制文件可供使用, ls ...

  3. hiho 1098 最小生成树二·Kruscal算法 (最小生成树)

    题目: 时间限制:10000ms 单点时限:1000ms 内存限制:256MB   描述 随着小Hi拥有城市数目的增加,在之间所使用的Prim算法已经无法继续使用了——但是幸运的是,经过计算机的分析, ...

  4. HTTP协议12-HTTPS

    1)HTTP的缺点 通信使用明文(不加密),内容可能会被窃听 不验证通信方的身份,因此有可能遭遇伪装 无法证明报文的完整性,所有有可能已被篡改 1.1 通信使用明文可能会被窃听 由于HTTP本身不具备 ...

  5. orm总结

    x先谈谈java方面的. mybatis优点是基本啥都有了,sql统一管理,只需接口就可以了,缺点是对于复杂语句的执行还是麻烦,一般还是在程序里解决,自带的动态sql功能较弱不说,重点是调式时还是麻烦 ...

  6. Beta 冲刺(4/7)

    目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:beta冲刺(4/7) 团队部分 后敬甲(组长) 过去两天完成了哪些任务 整理博客 ppt模板 接下来的计划 做好机动. ...

  7. Linux Django项目部署

    步骤 .数据库的处理 1.1 上传bbs.sql 1.2 在mysql中创建bbs库,并导入数据库SQL脚本 mysql> create database bbs charset utf8mb4 ...

  8. centos7环境下apache2.2.34的编译安装

    .获取apache2..34的源码包 http://archive.apache.org/dist/httpd/httpd-2.2.34.tar.gz .获取apache的编译参数 apache的编译 ...

  9. yum install 报错[Errno 14] curl#37 - Couldn't open file /mnt/repodata/repomd.xml

    最近在玩centos7,之前装系统没太注意yum这个东东,今天用别人装好的系统想用yum install 一个东西,结果报各种错,所以就是: 1.然后按照网上的一些修改,先是执行: yum cleam ...

  10. openKM部署二次开发,eclipse环境

    1.下载openKM_install_forwin安装包,配置jdk环境,start openKM,访问localhost\OpenKM,用户:okmAdmin 密码:admin.查看是否启动成功.安 ...