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

    一、设计策略

      第五次作业

      类图如下:

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

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

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

      第六、第七次作业:

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

    二、Bug分析

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

    三、心得体会

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

  • 相关阅读:
    lvs中dr模式配置脚本
    使用AFNetworking第三方下载类
    java 经常使用測试框架
    Qt5的插件机制(1)--Qt 框架中的插件载入机制概述
    leetcode笔记:Merge Sorted Array
    oracle仿全文检索切词机制实现文本信息类似度查找
    hadoop学习;datajoin;chain签名;combine()
    php函数in_array奇怪现象
    Sql_Server中怎样推断表中某列是否存在
    Java Bean 简单介绍及其应用
  • 原文地址:https://www.cnblogs.com/doconicu/p/12728411.html
Copyright © 2011-2022 走看看