oo第二次总结
第五次作业
- 度量分析
因为第五次作业是在第三次作业的基础上改的,所以出现了与第三次作业一样的问题,即圈复杂度超标和嵌套现象严重。同时,由于对多线程的不熟悉,将一些功能集中的放入了一个类里,这也是McCabe Cyclomatic Complexity和Nested Block Depth标红的原因。
2.类图
从类图可以看出度量分析中体现的问题,即在方法的分配上不平均,将大部分功能都交给了dt类,导致这个类很冗长,从而也影响了整个程序的简洁性。
3.BUG
对于这一次的电梯作业,第一次用多线程来解决问题,感觉压力很大。在思考,设计和实现的过程中,遇见了很多问题,用了很多的时间。直到最后,对多线程安全的理解也是似懂非懂,导致在公测和互测中出现了很多BUG。首先公测中,出现几个粗心的BUG,(1)没有输出T(2)没有把结果输出到result,输出到了控制台。这两个简单的BUG,都是因为没有仔细的阅读指导书导致的,所以要认真的阅读指导书的要求,才能避免一些简单的BUG。然后出现了指令分配错误,指令执行的时间输出以及指令本身的输出有问题和电梯选择不正确的BUG。而回到程序中去解决BUG的时候,发现主要是qingq类,即分配指令的类出现了问题。而这个类的设计问题,导致出现了一系列的问题,所以对每一个类的设计都应该反复的思考和测试。作为被测者,被发现了两个BUG,一个是测试完后程序的线程没有关闭,这个是因为对多线程的不熟练导致的。作为测试者,发现了对面的公测出现了三个错误,全是关于捎带问题的。这次作业比较难,不仅整体的设计上容易出现问题,在一些细节上的处理也容易出现问题。第一次多线程作业,带来了很多关于多线程的反思和经验。
第六次作业
第六次作业是对文件的各种操作与监控,因为对作业目标和很多新操作的不清楚,没有及时做完提交,就不做分析了。
第七次作业
- 度量分析
第一次出租车作业,仍然出现了之前的问题。因为将很多的功能放到了taxi类里,以及if-else的大量使用,导致嵌套严重。因此以后需要注意这些问题。
2.类图
这次的类图比较简单。
3.BUG
尽管这是第三次多线程作业,但是对于多线程的理解和具体实现,仍然有很多不明白的地方。就这次作业而言,公测与互测中,出现了两个BUG。公测中有一个BUG,是当输入指令的关键字错误时,没有报错。互测中的BUG是,当没有出租车响应乘客请求时,没有告知乘客。而作为测试者,发现了对方的两个BUG,一个是输出格式的错误,没有输出途径节点的坐标和时刻,另一个BUG,是输出时间不正确,回到对方的程序中,发现他的设计没有问题,只是在计算时间的时候用到了系统时间,而系统时间在调用gui,计算最小距离时,可能出现了延迟,导致最后算出的时间多了100ms或200ms。
心得体会
1.第一次接触学习多线程,发现理解起来有困难。而在用多线程解决问题时,发现对于多线程的项目的架构设计也有困难,因为要清楚建立多少个类,多少个线程,每个类都承担什么功能,线程与线程之间的关系,才能将更好的解决问题。
2.线程安全是多线程的关键。对共用资源的分析,是否对其进行保护,将影响程序是否出现一些不合乎常理的错误。因为多个线程同时运行的情况下,会对公共资源进行争夺,如果不加管控,可能会对公共资源进行难以意料或是不想要的操作和改变。所以在设计时,要分析线程之间的关系,要分析清楚共用资源。
3.虽然尽力的完善设计,但是实现的过程中总会有一些问题。只是在处理这些问题时,需要思考的是这个问题与整体设计的联系,这样才能及时的发现整体设计的问题,不然,这个问题解决了,仅仅是解决了局部的问题。
oo第二次总结的更多相关文章
- OO第二次博客作业——电梯调度
OO第二次博客作业——电梯调度 前言 最近三周,OO课程进入多线程学习阶段,主要通过三次电梯调度作业来学习.从单部电梯的傻瓜式调度到有性能要求的调度到多部电梯的调度,难度逐渐提升,对同学们的要求逐渐变 ...
- oo第二单元作业总结
oo第二单元博客总结 在第一单元求导结束后,迎来了第二单元的多线程电梯的问题,在本单元前两次作业中个人主要应用两个线程,采用“生产者-消费者”模式和共享数据变量的方式解决问题.在第三次作业中加入多个电 ...
- OO第二单元优化博客
OO第二单元优化博客 第五次作业没有性能分,但是,我在这一单元的宗旨就是写一个日常生活中 最常见的那种电梯,所以第五次我没有写傻瓜电梯,而是直接写了个\(look\),和第六次基本相同. 总计一下lo ...
- OO第二次博客作业—17373247
OO第二次博客作业 零.写在前面 OO第二单元宣告结束,在这个单元里自己算是真正对面向对象编程产生了比较深刻的理解,也认识到了一个合理的架构为编程带来的极大的便利. (挂三次评测分数 看出得分接近等差 ...
- 【OO学习】OO第二单元作业总结
OO第二单元作业总结 在第二单元作业中,我们通过多线程的手段实现了电梯调度,前两次作业是单电梯调度,第三次作业是多电梯调度.这个单元中的性能分要求是完成所有请求的时间最短,因此在简单实现电梯调度的基础 ...
- OO第二次作业总结
OO~第二次作业总结 连续三周的电梯作业结束了,总的来说这三次作业做的还算平稳,既没有被刀,也没有刀中别人.那么接下来开始谈谈我对这三次作业的认识. 一.设计策略 我三次作业的设计思路基本上是相同的, ...
- OO第二单元小结
OO第二单元小结 一.三次作业代码分析. 1.第一次作业 第一次作业是单部电梯的傻瓜调度,由于其过分傻瓜,所以第一次作业我只有两个类,一个main,一个电梯,main类负责不断从输入流中读取命令,如果 ...
- OO第二单元多线程电梯总结
OO第二单元多线程电梯总结 第一次作业 设计思路 Input为输入线程,负责不断读取请求并将读到的请求放入调度器中. Dispatcher为调度器,是Input线程和Elevator线程的共享对象,采 ...
- OO第二次单元总结
OO第二次单元总结 前言 第二单元的三次作业:系列电梯与多线程. 第五次作业 (1)设计策略 电梯的第一次作业是单部傻瓜电梯,采用FAFS调度策略,电梯按队列顺序依次处理请求,单次只处理一个请求.本次 ...
- OO第二次单元总结——电梯多线程调度问题
OO第二次单元总结--电梯多线程调度问题 在这个单元OO学习中,我们终于迎来了期待已久(不是)的电梯多线程调度作业,开启了OO打怪之路的新关卡.虽然说经过了这三次作业,我对于多线程的理解还不能算是熟练 ...
随机推荐
- javascript基础 之 表单
1,js可以验证表单 实例1,js获取表单的内容 //html表单是这样的 <form name="myForm" action="demo_form.php&qu ...
- Linux下tar bz gz等压缩包的压缩和解压【转】
Linux下用户经常需要备份计算机系统中的数据,为了节省存储空间,常常将备份文件进行压缩,本文是对压缩和解压命令的大致总结 .tar.gz 解压:tar zxvf FileName.tar.gz ...
- C#VS2017添加ReportViewer控件
安装完vs2017之后我们进行添加Report Viewer控件: 1. 点击Tools -> Extensions and Updates... 2. 在新窗口搜索栏中输入rdlc后搜索,结果 ...
- 【原创】运维基础之Docker(4)实用工具ctop
ctop类似于top,top监控的是进程,ctop监控的是容器(container top) 安装 # wget https://github.com/bcicen/ctop/releases/dow ...
- [Linux]目录x权限对文件操作的影响
问题 我们常使用linux以下命令 cd 进入目录 ls 列出目录中的文件 或者直接打开目录中的文件 以上操作对于目录权限位的设置来说,是有一定迷惑性的,如表格所示 cd进入该目录 cd进入该目录 ...
- mitmproxy,mitmdump
mitmproxy,mitmdump # mitmproxy 官网:https://mitmproxy.org/ # githubhttps://github.com/mitmproxy # wind ...
- Java设计模式迭代器
定义:提供一种方法,顺序访问一个集合对象中的各个元素,而又不暴露该对象的内部表示. 类型:行为型 适用场景: 访问一个集合对象的内容而无需暴露它的内部表示 为遍历不同的集合结构提供一个统一的接口 优点 ...
- SQL反模式学习笔记16 使用随机数排序
目标:随机排序,使用高效的SQL语句查询获取随机数据样本. 反模式:使用RAND()随机函数 SELECT * FROM Employees AS e ORDER BY RAND() Limit 1 ...
- 一致推崇的Linux系统还有那么安全吗?
今天想谈谈关于系统安全:我们都知道,Linux早已成为趋势,在我们互联网中占有不可或缺的地位,在我们眼中,它是神圣的,不可替代的,无懈可击的:真的是这样的吗? 但是关于病毒对Linux所造成的一系列威 ...
- C语言编译器CL.exe
下载地址CL.7z版权问题:仅供学习交流,请于24小时内删除,本人不承担版权问题… 基本使用: 1.解压缩,例如解压缩到E盘根目录下 2.打开cmd命令行界面(快捷方式win+R输入cmd回车)cd命 ...