这个学期,我发现了一个有趣的现象,那就是时间过得变快了,每周都在不知不觉中度过,一转眼已经到周三了,再一转眼就是周末了,可能是OO太充实,
让我产生了错觉了吧,hhh.
OO第五次作业总结
第五次作业是要求我们设计一个多线程电梯的调度系统。在此之前,我对多线程可以说是一无所知。现在回忆起来,只记得清明过得很痛苦!这次作业中,线程安全是
一个很关键的点,而清明前的那一周OO课,老师主要解释了多线程的原理和基础知识,并没有太多的涉及线程安全,所以我清明写了整整四天,然而却还是没有完成。
于是,整个人都蔫了,感觉到了生活的恶意,感觉到了OO的恶意,但是,我没有投降,两个通宵后,终于在DDL前完成了作业,交作业的那一刻,我感觉我写出来作业就已经算很大
的胜利了!
度量和类图
根据度量,我有几个方法好胖,这还是我这几次作业的通病,不过和上次作业比起来算是进步了,上一阶段是几个类比较胖
第五次作业我的BUG主要出现在以下几个地方:
1.指导书中的时间没有满足要求,在获取系统时间戳转换成秒时,我因为类型强制转换导致所有的时间都只精确到秒,所以最后出现了BUG
2.线程安全问题,由于才学多线程,同步问题做的不够好,虽然用了volatile来保证可见性,却没有保证原子性,所以出了些奇奇怪怪的BUG
3.最后debug时时间紧张,没有全面考虑,导致出现改了一个BUG ,出现两个BUG的悲惨结局
QWQ
第六次OO作业总结
第六次作业是文件监控系统,我感觉这次作业的难点就是如何理解指导书。其实这次作业代码并不难,难的是理解需求,可以说,这次作业的指导书可迷了!
我看了一个周末和周一半天,竟然没搞懂到底要做啥,最终还是issure拯救了我,通过看同学们对需求的讨论,才理解了到底要做啥!!!总体来说,这次作业比多线程电梯好点!
度量和类图
类图:
本次BUG分析:
这次作业比电梯好多了,BUG 也少了点,首先我的逻辑上出了点小问题,比如两个除名字外都一模一样的文件,一个重命名,一个删除,我会认为删除的那个也进行了重命名,因为我是获取
两个切片,比较前后变化,却忽略了这种情况。还有一个BUG比较迷,就是有时候recover不能成功,这个BUG我改了快一天,终于改好了!发现与自己的扫描周期控制有关!在解决BUG 的那一瞬间,心里
超级超级开心!!!
第七次OO作业分析
第七次作业是一个出租车调度系统,我感觉应该难度和开始写傻瓜电梯时的感觉一样。不过,我知道,后面的难度肯定会变得可怕!早有耳闻了,出租车系列作业!
这次作业我遇到的一个麻烦就是路径计算,按照作业中已经给出的bfs算法,计算一次最短路径需要200多ms,这时小车早该行动了,于是,我感觉边走边算是一个比较棘手的问题,我采用了一开始把地图中
所有点距离算好存起来,最后要用的时候查一下就可以了,这样就解决了这个问题,其他方面都写的比较顺利。
度量和类图
从度量上看,我的run方法写的比较胖,的确,这次知道错了,也受到教训,被报了一个incomplete BUG.的确服气,因为我只注意类之间的分工,却忘了方法之间的分工了。
类图:
本次作业BUG:
由于在计算距离时没有考虑距离为0,因此导致接单时正好在请求发出地时会无法响应。当然,还得感谢帮我测试的同学,这个BUG 复现不容易,他测了20多条才测出来。不过我发现了一个较好的复现方法,就是把所有车的位置初始都设置为(0,0)这一个点,这样出现这个BUG的概率就会大大增大,基本每次都能复现这个BUG。
三次作业发现别人BUG 的策略:
首先阅读readme,看看有没有与指导书冲突的或者有逻辑错误的
然后测试线程同步问题
最后测试边界问题
一般在线程同步部分就能发现对方的一些BUG了!如果对方同步做的非常好,hhh那一定是个大佬,对于大佬,感觉第三步就不用测啦,反而更应该去测一些细节问题,是人都会犯错的嘛,hhhh
总结:
过去的那一个月,真的累!这三次作业,的确非常有含量,我感觉,我能坚持下来已经尽了很大很大的力气!有时候,坚持就是胜利,希望我能一直坚持下去!既然度过了最艰难的时刻,那更没有理由去放弃啦!