zoukankan      html  css  js  c++  java
  • 第二单元总结

    一、设计策略

      第五次作业

      类图如下:

      此次作业共设计了五个类,分别是:MainClass,主类;InputData类,有单独的线程,用于处理输入数据,并传递给调度器;Elevator类,电梯线程,根据调度器的指令执行上下楼、开关门等操作;Scheduler类,调度器线程,根据电梯当前的状态和所有等待中的请求,计算电梯下一步应做的操作,并通知电梯;Instruction类,用于电梯和调度器之间传递命令。

      在调度算法上,本人采用的是Look算法,电梯会上下扫描式地运送乘客,能避免在某一区域来回运动,浪费大量时间;另外,由于此次作业没有最大人数限制,为了减少开关门的次数,电梯每次开门都会一股脑的将当前楼层所有乘客搭载上,在编写代码时也更方便,但这也给之后的作业埋下了隐患。

      由于此次作业只有一部电梯,本人在设计时误将进出电梯的操作放在调度器类中,导致之后的作业出现多部电梯时,代码难以拓展,只得重新设计。

      第六、第七次作业:

      由于第五次作业的架构设计不够好,可拓展性差,没有为之后的作业做考虑,面对多部电梯的情况只能重构整个架构,导致第六、第七次作业没能顺利完成。

    二、Bug分析

      本人在第五次作业的中强测中没有发现Bug,但是在互测中找出了一个Bug,原因是调度器电梯线程在没有请求(当前请求已处理完毕)时仍在不断运行,导致CPU运行时间超过限制。我也根据自己的Bug设计了针对性的测试样例,在互测屋中找出另一个人相同的Bug。

    三、心得体会

      Java多线程的设计和以往的单线程设计思路大不相同,需要充分考虑线程之间的同步,这也是我认为多线程设计最难的地方,本人正是因为多线程的同步没有思考清楚,才导致此单元的作业没有圆满完成。

  • 相关阅读:
    部署webapp到web容器的三种方式(这里的web容器Tomcat)
    jquery1.8.3文档的一些问题(可能是我理解错了,不喜勿喷)
    JQuery异步请求之省略dataType的设置
    Tomcat启动一闪而过的问题(我是windows系统,所以查看的是.bat的文件)
    tomcat控制台乱码问题
    IDEA常用的快捷键和代码模板
    ajax返回问题
    php大文件下载问题
    微信企业付款到银行卡
    支付宝单笔转账支付功能
  • 原文地址:https://www.cnblogs.com/doconicu/p/12728411.html
Copyright © 2011-2022 走看看