OO电梯系列总结与反思】的更多相关文章

目录 前言 HW5 度量分析 UML类图与协作图 bug分析 HW6 度量分析 UML类图与协作图 bug分析 HW7 度量分析 UML类图与协作图 bug分析 SOLID原则 感想 前言 紧张刺激的第二单元结束了,本单元体验极佳, 进行作业前有注重架构的稳定,在良好的架构上考虑优化,如此也便利了迭代. 另外,没遇上线程安全bug的电梯,不是完整的电梯[doge] HW5 本次作业要求实现单部可捎带电梯,典型的生产者消费者模式, 输入线程Request是生产者, 电梯线程Elevator是消费者…
目录 前言 HW5 HW6 第二次作业uml协作图 HW7 第三次作业uml协作图 前言 本单元作业在优化方面确实有一些想法值得分享,故单开一篇博客分享一下三次作业的优化以及架构. 三次作业的共同之处在于线程之间通讯所依赖的都是共享对象,采用生产者消费者模式. 这样做的好处是框架清晰,迭代起来往往不需要再添加很多类,改调度也是一个函数的事情:D HW5 第一次作业是单部电梯可捎带,主体上采用的是look算法,电梯在可达楼层上下扫描,当前方向无请求则掉头,两边都无请求则等待,这里用了个小trick…
OO第一单元总结与反思 目录 OO第一单元总结与反思 摘要 第一次作业 本次作业UML类图 本次作业度量分析 第二次作业 本次作业的UML类图 本次作业的度量分析 第三次作业 本次作业的UML类图: 本次作业的度量分析 测试及bug杀虫 心得与体会 摘要 本单元作业分为三次 HW1:本次作业,需要完成的任务为简单多项式导函数的求解. HW2:本次作业,需要完成的任务为包含简单幂函数和简单正余弦函数的导函数的求解. HW3:本次作业,需要完成的任务为包含简单幂函数和简单正余弦函数的导函数及其组合的…
一.摘要 本文是BUAA OO课程Unit2在课程讲授.三次作业完成.自测和互测时发现的问题,以及倾听别人的思路分享所引起个人的一些思考的总结性博客.主要包含设计策略.代码度量.BUG测试和心得体会等内容. 二.设计策略分析 2.1 第一次作业 第一次作业较为简单,主要由Elevator线程和InputHandler线程互相合作完成,是消费者.生产者模式,InputHandler生产AllRequest类中的Request对象存在ArrayList中,电梯从中取出Request对象并完成送乘服务…
电梯作业 第一次作业和第二次作业 由于我第一次作业给傻瓜电梯写了捎带所以第一次第二次作业差不多 电梯运行一个线程Elevator,输入控制一个线程Call 一个物理电梯控制表可以完成移动和进出人功能,一个电梯请求表用来调度和存储请求 电梯运行利用状态机OPEN,CLOSE,WAIT,UP,DOWN,STOP,GO,每个楼层电梯都会STOP判断需要开门如果开门 就出人进入然后关门,如果不需要开门,进入GO状态继续移动, 状态机比较时刻控制电梯运行以及封装函数, 电梯运行的算法基于贪心,如果电梯为空…
在本章的三次作业里,每次作业我都有一个主题,分别是:托盘型共享数据.单步电梯运行优化.多部电梯运行优化,因而电梯优化实际是第二.三次作业.虽然后两次作业从性能分上看做得还不错,但阅读其他大佬博客,我深深地体会到鄙人朴素拙劣的调度算法能够取得这样的分数实属幸运,因此,对于这篇博客,我将只简略地介绍一下自己的调度算法,把重点放在关于电梯调度架构的思考上. 电梯调度算法 单电梯调度:对于每部电梯,我的调度算法都是朴素的LOOK算法,并且当休眠的电梯同时收到了可上可下的请求时,其会向从接人运行路程较短的…
告别了三次奇妙无比的求导作业之后,我们就开始搭建一部自己的电梯了.相信我们不同同学的电梯运行方式肯定各具特色吧,但值得肯定的是,在艰苦的走完了三次电梯逐步改进的作业之后,我们的电梯在正常情况下应该是可以运作了-所以当我们一起坐电梯,相信我们的电梯应该是不会接不到人.把人最后关在里面.莫名其妙的就把人给丢了以及把人送到+或者是-的啦.下面是我对这三次作业的总结与分析- 在三次作业中我都是用的三个线程.一个是main线程,主要负责构造并start另外两个线程,构建调度器对象:另外两个是Request…
目录 电梯作业总结 程序结构与复杂度的分析 第一次作业 第二次作业 第三次作业 程序BUG的分析 互测 自动评测 有效性 总结 电梯作业总结 程序结构与复杂度的分析 第一次作业 1.设计思路 第一次作业是电梯作业的第一次,也是我多线程变成的第一次实践.任务是编写一个多线程实时电梯系统,采用FAFS的调度方式.由于第一次作业中没有涉及到多部电梯以及捎带的情况,因此来说是比较简单的.我采用的是指导书提示部分中的模式,即生产者消费者模式 主线程进行输入的管理,使用ElevatorInput,负责接收请…
(一)第五次作业 一.设计思路 生产消费者模型,输入接口是producer,调度器是tray,电梯是customer.由于只有一架电梯,所以生产消费模型满足以下条件: 一个生产者,一个消费者 托盘不为空时,消费者可以取走请求.任何时候,生产者可以添加请求.(托盘无容量限制) 互斥:生产者--生产者,消费者--消费者. 同步:生产者至少生产一次,消费者才能消费. 互斥问题我给get和put函数加了方法锁. 二.调度策略:FAFS傻瓜电梯 遵循先到先服务,所以调度器作用很小,只是完成托盘的功能.调度…
电梯系列第一次作业 功能描述: 傻瓜电梯无需考虑超载捎带 线程模式: Producer-Consumer Pattern 思路: 第一次作业是一个傻瓜电梯,分别有一个生产者生成电梯指令(也就是Input接口),和一个消费者电梯(Process)运行指令和一个电梯调度器, 调度器为生产者和消费者共享,在生产和消费指令时,给队列上同一把锁,再通过wait();和notify(); 进行阻塞和唤醒调度器将生产者生产的命令放入电梯中,存放指令的队列使用的是Arrylist.   线程安全: 由于Arra…