OO Unit 2 电梯调度】的更多相关文章

目录 OO Unit2 博客作业 基于度量来分析⾃己的程序结构 复杂度分析 架构分析 改进和重构 发现过的BUG 简化问题 多线程初探 OO Unit2 博客作业 基于度量来分析⾃己的程序结构 自认为自己的架构不算特别复杂,一个电梯类,一个请求队列.代码量也挺少. 复杂度分析 类复杂度: 方法复杂度: 看了idea自带的代码分析,和我原先想的一样.复杂度最高的是电梯类和请求分析类.请求分析类因为要每次更新请求列表,SCAN下一个目的楼层,所以复杂度自然就高.其实我的代码也没有其他东西了. 架构分…
三次作业要求简介 特点:目的选层电梯 在电梯的每层入口,都有一个输入装置,让每个乘客输入自己的目的楼层.电梯基于这样的一个目的地选择系统进行调度,将乘客运送到指定的目标楼层. 第一次: 在任意时刻输入一个或多个请求,包括出发层.目的层.乘客的id(每一个乘客有独有的id,且我们设计的系统是直到这个id的) 电梯可以控制谁能出电梯.谁能进电梯 在到达楼层.开门关门.出人进人时输出 第一次作业是单电梯,电梯能够在1-20楼运行 第二次: 初始有3部电梯,可以通过指令增加1-2部电梯 第三次: 有三种…
OO第二次博客作业——电梯调度 前言 最近三周,OO课程进入多线程学习阶段,主要通过三次电梯调度作业来学习.从单部电梯的傻瓜式调度到有性能要求的调度到多部电梯的调度,难度逐渐提升,对同学们的要求逐渐变高,我们对线程的理解也逐渐加深.下面笔者将对三次作业分别进行总结. 一.单部多线程傻瓜调度(FAFS)电梯 说明:本次作业需要模拟一个多线程实时电梯系统,从标准输入中输入请求信息,程序进行接收和处理,模拟电梯运行,将必要的运行信息通过输出接口进行输出.本次作业对性能要求非常宽松,不需要进行优化处理.…
经过第一单元作业的训练,在做第二单元的作业的时候,要更加的有条理.但是第二次作业多线程的运行,带来了更多的运行的不确定性.呈现出来就是程序会出现由于线程安全问题带来的不可复现的bug.本单元的作业也让我更加认真的思考了性能和架构之间的关系,对于工程架构的设计有更进一步的认识. 历次作业分析和总结: 第一次作业:单电梯的傻瓜调度 类图如下: 第一次作业由于并没有性能要求并且刚刚接触多线程的运行,程序的结构简单并且多线程的各个线程之间并没有很多的交互.第一次作业设计中为了第二次作业的扩展,只是简单的…
告别了三次奇妙无比的求导作业之后,我们就开始搭建一部自己的电梯了.相信我们不同同学的电梯运行方式肯定各具特色吧,但值得肯定的是,在艰苦的走完了三次电梯逐步改进的作业之后,我们的电梯在正常情况下应该是可以运作了-所以当我们一起坐电梯,相信我们的电梯应该是不会接不到人.把人最后关在里面.莫名其妙的就把人给丢了以及把人送到+或者是-的啦.下面是我对这三次作业的总结与分析- 在三次作业中我都是用的三个线程.一个是main线程,主要负责构造并start另外两个线程,构建调度器对象:另外两个是Request…
本单元从电梯调度相关问题层层深入,带领我们学习并运用了了多线程相关的知识. 三次电梯调度依次为单电梯单容量.单电梯可携带.多电梯可携带. 一.我的设计 在第一次作业中,使用了最简单的FIFO调度方法.设计思路大体如下:设计一个容器,在读入到新乘客请求时将之放入容器尾,容器非空时,电梯线程将在自己处于非载客状态时取出容器首元素进行工作,完成此次工作后,检查容器,非空继续工作,否则wait直到容器获得新乘客唤醒电梯或者输入结束从而结束线程. 在第二次作业中,一共有两个线程,分别为电梯线程与乘客申请线…
「BUAA OO Unit 2 HW8」第二单元总结 目录 「BUAA OO Unit 2 HW8」第二单元总结 Part 0 前言 Part 1 第五次作业 1.1 作业要求 1.2 架构设计 1.3 协作图 1.4 调度分析 1.5 bug分析 自己bug 使用了run而不是start方法启动线程 别人bug 1.6 对象头.锁和同步 对象实例结构 锁和同步 参考资料 对象锁 方法锁形式 代码块形式 类锁 静态方法形式 代码块形式 参考资料 1.7 线程安全--封装安全输出类 每次调用加锁…
「BUAA OO Unit 4 HW16」第四单元总结与课程回顾 目录 「BUAA OO Unit 4 HW16」第四单元总结与课程回顾 Part 0 第四单元作业架构设计 架构设计概要 AppRunner官方包代码简析与架构设计初步 一.AppRunner工作逻辑和流程 1. 属性 1.1 interaction 1.2 status 2. 行为 2.1 run Step 1 输入与解析模型 Step 2 输入与指令获取 Step 3 输出 二.我们的工作 1. 解析和存储元素 1.1 输入顺…
第二单元的问题是写一个关于电梯调度的程序. 需要模拟一个多线程实时电梯系统,从标准输入中输入请求信息,程序进行接收和处理,模拟电梯运行,将必要的运行信息通过输出接口进行输出. 主要锻炼学生的多线程程序编写能力. 由于需要实时的输入和输出,我们不得不采用多线程. 在这个单元中任务仍然被分为三个小任务: ①完成单电梯(随时允许输入) ②单电梯+(楼层增加负层,必须使用比先来先服务更加高效的算法) ③多电梯调度(增加重量限制.楼层停靠限制.换乘) 一.调度算法设计 单电梯的调度算法: 我在网上寻找调度…
目录 目录一.第一次作业分析设计策略基于度量分析程序结构二.第二次作业分析设计策略基于度量分析程序结构三.第三次作业分析设计策略基于度量分析程序结构四.分析自己程序的bug五.发现别人程序bug所采用的策略六.心得体会线程安全设计原则 一.第一次作业分析 设计策略 采用生产者-消费者模式,调度器作为托盘,请求处理器不断向托盘提交请求,电梯不断从托盘中获取请求执行,当托盘为空时,进入等待.其中调度器是共享对象,请求处理器和电梯是两个线程. 线程安全方面,由于理论知识不扎实,由请求处理器和电梯分别管…