OO第二单元总结
OO第二单元总结博客
第一部分 代码分析
第五次作业分析
第五次作业非常简单,就是采用了傻瓜策略以及生产者-消费者模式,主要这是第一次认识到多线程中,可能会出现的各种线程不安全问题以及如果采用忙等待的暴力轮询
程序的执行效率会非常之低。这次作业整体上没什么特点,是多线程入门的试手题目。
第六次作业的UML类图以及复杂度分析:



这次作业较之上次多了负数楼层以及ALS(或者更加聪明的算法),采用各种方式都可以完成作业,由于没有构思好可以采用的架构,同时考虑到这次作业并不需要重构,
我依然采用了第五次作业中的生产者消费者模式。另外由于没有考虑到较好的区分第一次主请求和之后去接的主请求的区别,导致我的程序逻辑异常复杂(如果采用了请求和人分开记录的方式就可以避免这种庞杂的逻辑)
其他的没有什么区别。
第七次作业UML类图和复杂度分析。




这次作业较之上两次作业有着比较大的重构,首先是将调度器和电梯分离开来,在调度器中创建电梯进程.其次是采用了单例模式和生产者-消费者模式的结合。
这样避免了相互拷贝带来的内存浪费。
逻辑上与上次的区别就在于采用了请求队列和电梯内人员分两次存储的方式进行处理,这样避免了第一次进电梯和之后的主请求进电梯带来的开关门不同的问题。
整体上我认为较之前两次,是一个比较好的重构,是我能力范围内的我可以做到的结构设计了。
第二部分 分析自己的bug
在第三次作业时,由于正确性问题导致我那次作业只得到了20积分所以后来的作业中我都是放弃性能追求正确性,采用的运载方法都是最简单的,所以开关门等逻辑较为
容易想明白,所以就算是第六次作业中我的设计方法很糟糕,也还是能够将逻辑完整列出来的。bug出现只能是多线程导致。在第七次作业中,我曾经出现过线程不安全的错误。
因为中测数据较少,所以很难发现这样的错误,幸好在课下我进行了一些四十条指令的测试,发现了这样的问题,所以我觉得多线程的逻辑较为简单的程序发现bug的途径一定
是多测试,多设计数据。
第三部分 找到别人的bug
这部分同上一部分
第四部分 体会收获
我觉得多线程是一个非常考验人细心能力以及逻辑思维能力的内容,通过OO课程的程序设计,在写程序的过程中,自己测试,调试,不断发现自己的由于线程不安全导致的bug,
这样的过程我觉得极大地锻炼了我的能力。同时,在架构方面,最后一次作业地顺利完成让我认识到,一个良好架构的重要性,良好的架构可以极大程度上的减少逻辑设计的出错率
以及工作量,同时良好架构的设计能力我觉得也要求我多去读和写,多学习传统的优秀代码,并且自己去体会不同架构的不同之处。
浙公网安备 33010602011771号