oo第二单元学习总结
一.代码分析
第五次作业:
UML类图
耦合度:
第五次作业是实现一个先来先服务的傻瓜电梯,主要思路就是一个输入线程,一个电梯进程,
由输入线程将请求读入请求队列,然后电梯执行请求,由于十分简单,在线程安全方面没有
出现太大的困扰。
第六次作业:
UML类图:
耦合度:
在做第六次作业的过程中,由于一开始对多线程理解不深,对wait,notify的使用非常生疏,
导致一开始将输入线程和调度器线程共用请求队列,自己给自己造成了很大的理解困难,
没办法去写出同时工作的多线程,但在写完大部分后明白了可以拆分成两个队列,然而此时
代码已经变得十分臃肿,是本次作业的遗憾。
第七次作业:
UML类图:
耦合度:
第七次作业几乎是在第六次的框架上写的,不过将als捎带改成了look算法,仅仅是
简单的改动,因此在做本次作业时遇到的阻力远远小于第六次,最后的结果也比较
让人满意。
二.程序bug
1.第五次作业没有出现bug。
2.第六次作业的bug是在写优化的过程中打错了括号的位置,又没有最后再测试就提交了,导致出现了重复进人的bug。
3.第七次作业没有出现bug,但是程序运行的时间比较长。
三.互测
这一单元的多线程作业,在测试的过程中,若是用人眼去找bug,是非常困难的,因此仅仅在第二次作业中通过
观察代码寻找到一个bug,在后面的作业中,由于写评测机判断正确性的难度非常大,所以便放弃了,所以这一单元的
互测几乎只是学习了其他同学的代码。
四.总结
本单元的训练重点首先是多线程的线程安全问题和一些多线程方法的使用以及对锁机制的理解,而想要保证这些,
一个良好的架构能让自己事半功倍,因此对架构设计能力的培养还是不能落下。对锁的机制的理解还是非常生疏,
因此在写作业过程中使用了过多的synchronized导致代码看上去十分臃肿。并且在写本单元作业的过程中由于害怕出错
从而对优化只做了简单的尝试。今后的oo还需要更加努力地去学习。