oo第八次作业

第五次作业:

 

第五次作业被判了无效,之后重新写了一份,类图和metrics如上。

 

第六次作业

第六次作业是IFTTT,本次作业难度挺大的,监控文件最终的最大的难度点变成了在于record。

本次作业一开始的设计师每个对象一个线程,后来发现不合要求改成了一个对象的一个触发器是一个线程,再次基础上有思考乐detail和summary是否应该设计成线程,最后的结果是并没有将其设计成线程,而是每出发一次触发器记录一次。在record上,对于对象是文件的record用了safefile内的一些方法实现了record,但是对于对象是目录的情况没有想到解决的办法。

本次作业被报了两个公测的bug,都会因为监控为目录的时候record任务无法实现。本次互测报了别人两个对于不合法指令的判断情况的bug

 

第七次作业

 

 

 

 第七次作业是多线程的出租车,因为有了多线程电梯的折磨,这次没有多线程电梯带来的痛苦大,对于这次的设计遇到的最大bug就是最短路径的计算,可能是因为数据结构没有学好,导致一开始的用一个二维数组记录的图的连通情况,在用二维数组来参与最短路径的计算,不知为何老是内存溢出,炸内存,后来无奈之下,用了一维数组来记录图的连通情况一样的算法来计算最短路径发现就是对的,其次在参与强但是出租车在两点之间的情况的处理也是一个思考点,同时此次作业还要求要输出每个关键点的时间,而当我输出时间的时候却发现有些固定的点的时间差是错误的,而且我并不能找出来原因,后来我运用了假时间,才控制了关键点的时间差。

本次作业被报了一个公测bug,原因是在判断相同请求对的时候,是用字符串来判断的,str[1]==str[3]&&str[2]==str[4],但其实对于字符串的相同判断应该用equals,所以在判断相同请求的时候我并没能判断出来。本次作业还被报了一个设计缺陷,就是没有很好的运用代码重用的原则,有些重复的代码并没有封装起来进行重用,本次互测报了别人一个公测的bug,和我一样,她也是没能好的判断出相同请求,还报了他的两个互测bug,第一个是没能按照指导书的要求忽略地图里的空格和tab键,第二个是有些关键点的到达时间不对。

 

总结

经过三次多线程作业,明白了多线程的设计重点在于互斥和同步的控制,多线程和单线程的主要区别是程序不是顺序执行的,需要通过一些手段来满足需要的执行顺序,在设计的时候主要考虑执行的先后顺序,在适当的地方加锁、等待、唤醒。所以在设计过程中要注意这点,掌握好时序的设计。

posted @ 2018-05-02 18:27  smallsmallkid  阅读(145)  评论(0编辑  收藏  举报