See Elevator Run Floors】的更多相关文章

“在我短暂的电梯作业中我发现,架构的优化能力是有限的.越是工于优化算法…越是会被自己的架构所制约….想要更好的优化,唯有超越架构………" 零.基础 优化建立在架构之上,这句话莫得问题,也莫得感情. 一个蒻小的架构往往会被(我)因为一点点微小的优化工作而将架构破坏的面目全非,甚至失去了正确性. 所以我这次使用的是Floor类的策略: 废话不多言,直接上图(单电梯为例): 简单地说说,Floor类是请求队列的另一种表现形式,直接的好处是从开始引入了对请求的“分配”概念,还有从开始就镶嵌入架构的LOO…
[前言] 很久没有纯粹的写写小代码,偶然想起要回炉再来,就去HDU随便选了个最基础的题,也不记得曾经AC过:最后吃惊的发现,思路完全不一样了,代码风格啥的也有不小的变化.希望是成长了一点点吧.后面定期去做做题.保持青春的活力! 1.青年回炉 Problem : 1008 ( Elevator )   Run ID Submit Time Judge Status Pro.ID Exe.Time Exe.Memory Code Len. Language Author 9098607 2013-0…
目录 Abstract Introduction Topic Request Elevator Analysis Reading Requests Coordinating Scheduling and controling Elevator simulation Course P5-P6 Reading (and coordinating) Scheduling and controling Elevator simulation P7 Reading and coordinating Sch…
iElevator.js 是一个jquery小插件,使用简单,兼容IE6,支持UMD和3种配置方式,比锚点更灵活. Default Options _defaults = { floors: null, btns: null, backtop: null, selected: '', sticky: -1, visible: { isHide: 'no', numShow: 0 }, speed: 400, show: function(me) { me.element.show(); }, h…
Elevator.h class Elevator{public:    Elevator();    ~Elevator();    void getNowNum();        void SetToNum(int);    void SetNowNum(int);    void RUN();    void set_choice(int);    int choice;private:    int const MaxWeight=300;    int NowNum;    int…
第二次总结博客(电梯单元) 16071070 陈泽寅 2019.4.20 一:多线程实验初感 这个单元是多线程设计的实践单元,主要让我们运用多线程的原理与思想去完成一个模拟电梯运行的策略.从最开始的单步电梯的傻瓜式调度,到第二次作业的单步电梯的捎带式策略,再到第三次作业的多部电梯捎带式运行策略.一次次的难度加强,也让我们发现了多线程的使用规则和方法,并且在一次次的bug中更加体会到了锁的机制,以及各种并发机智的使用规则.虽然还是有很多的问题,但是从这个单元确实学到了很多东西. 二:3次单元作业的…
(1)设计策略 电梯第1次作业是一个傻瓜调度电梯,使用先来先服务原则,不用考虑捎带(可以认为电梯的载客量为1),因此比较简单,调度器用一个队列就可以. 使用生产者-消费者模型,输入线程是生产者,电梯是消费者, 除了主线程之外有两个线程,电梯线程和输入线程,输入线程负责在接收到请求后加入到调度器队列的队尾中,调度器通过队列实现,电梯线程负责从调度器的队头取出一个请求,然后走到请求的出发楼层,开门.上人.关门,然后走到请求的到达楼层,开门.下人.关门. 在调度器为空,且输入线程停止(遇到EOF)的时…
第一次作业 1. 设计策略 第一次作业,一共三个线程,主线程.输入线程和电梯线程,有一个共享对象--调度器(队列). 调度的策略大多集中到了电梯里,调度器反而只剩下一个队列. 2. 基于度量的分析 类图: 方法复杂度: 如上所说,调度的策略大多集中到了电梯里,导致电梯的run方法复杂度大大提升. 类复杂度: solid原则: Single Responsibility Principle (单一功能原则): 基本满足,电梯.输入处理.调度队列的功能职责都只归属于一个类. Open Close P…
第二单元作业的完成史,就是一部心酸的血泪史…… 多线程的出现为我(们)打开一片广阔的天地,我也在这方天地摸爬滚打,不断成长!如果说第一单元之前还对Java语法有所了解的话,那么这单元学习多线程则完全是从0积累的一个过程.每一步,都走得很艰难!虽然我犯过很多错,但我很庆幸,我坚持到了最后! 写在前面 单线程:Java程序在虚拟机上运行,一个Java程序对应一个JVM实例,同时对应一个主线程(即main),程序入口从main进入,运行完毕从main退出. 多线程:顾名思义,即不止一个main线程,m…
一.概述 这一部分的作业考察的关注点与上一次的作业有所不同,上一次的考察重点主要集中在输入输出的判定以及多态的考察上面,而这一次是让我们进行多线程程序的调度与开发.这次开发过程中最大的感受就是自己之前的程序好像都白写了...需要自己去探索掌握的东西有许多.在之前的作业中我们都是尽可能地使用加断点的方式进行调试,因为每次程序运行不会产生二义性,即对就是对错就是错,这时printlog就成为了十分有效的debug方式.同时这一系列的作业是对上一次多态思想的继承,即第一次作业在设计的时候就需要弄清楚可…
OO第二次单元总结 前言 第二单元的三次作业:系列电梯与多线程. 第五次作业 (1)设计策略 电梯的第一次作业是单部傻瓜电梯,采用FAFS调度策略,电梯按队列顺序依次处理请求,单次只处理一个请求.本次作业采用了简单的生产者-消费者模式,而调度器则采用了单例模式. (2)基于度量来分析自己的程序结构 类图: 复杂度分析: 依赖度分析: 本次作业很简单,共设计了四个类,除主线程外包含一个请求输入线程和一个电梯线程.Scheduler类为单例模式调度器,内部有一个请求队列.Input类负责请求的获取和…
目录 总 架构 controller model view 优化算法 Look 算法 多种算法取优 预测未来 多线程 第五次作业 第六次作业 第七次作业 代码静态分析 UML 类图 类复杂度 类总代码规模 属性个数 方法复杂度 方法个数 方法规模 控制分支数目 优缺点 优点 缺点 SOLID 原则 单一职责原则(SRP) 开放封闭原则(OCP) 里氏替换原则(LSP) 接口隔离原则(ISP) 依赖倒置原则(DIP) 多线程协作 UML 图 分析 线程间通信 并行任务的独立性 坑 多线程错误 Ma…
一.设计策略 在第一次作业时,我刚第一次接触多线程这个东西……于是乎对于第一次VIP直上直下一次只接一个人的电梯,我借鉴了指导书中为我们提供的架构,设计了一个输入线程和一个电梯线程,并设置了一个中间类RequestQueue,开一个队列来存放异步输入的请求,并保证这个类是线程安全的.mian类之下的整体架构为“Getrequest-RequestQueue-Elevator”.在main类中仅仅只做了new了这几个类并且启动输入线程以及电梯线程的工作.当电梯运行时,GetRequest线程读入请…
电梯V2.1 GitHub仓库地址 Problem 为程序添加命令行参数(自行利用搜索引擎进行学习). 写成 .cpp .h 文件分离的形式(大多数同学已经达到). 继续完善函数分离.模块化思想. 要求程序能够接收命令行输入的参数有如下两种格式: D:>Elevators.exe D:\input.txt D:>Elevators.exe D:\input.txt D:\output1.txt D:\output2.txt D:\output3.txt Elevators.exe是程序编译得到…
类的设计: 首先,我对我的思路进行整体的说明,由于我的三次作业,思路是继承的,所以做总体的说明 第一,   Main类,Main类自身并没有功能,他的功能只是构造需要的电梯线程和输入线程. 其中,第三次作业中,main类负责将电梯参数(运转时间,负载上限,运行楼层)传入Memory类和Elevator类 第二,   是Eleinput类,这个类,是一个单独的线程,功能是读入需求,每次读入需求,将其写入Memory类中,当读入null时进程结束. 输入器,与电梯类不相连,只负责传数据给Memory…
目录 一.设计策略 1 2 3 二.程序分析 1 2 3 S.O.L.I.D分析 三.Bug分析 1 2 3 四.互测策略 五.心得体会 一.设计策略 1 第一次完成的是一个傻瓜电梯,简单来说,就是来一个请求,就服务一个请求,服务完之后再服务下一个请求,这样循环往复.在完成这一次作业的时候,我对于多线程的理解还不是很深入,一开始在尝试单开一个电梯线程完成这次作业的时候出现了一些bug,我便尝试继续使用单线程的思路,很快就写出了单线程版本的作业,简单来说就是将电梯的所有功能写到一个deal函数中:…
1.作业设计策略 1.1第一次作业 ​ 第一次作业指导书要求是一个单部多线程傻瓜调度(FAFS)电梯的模拟,由于为了可扩展性和模块化设计,第一次作业我采用了三线程,即输入处理线程,调度器线程,电梯线程这三个线程进行通信工作,当然,实际上调度器线程仅仅做了把输入的请求进行转交给电梯线程这一个工作.输入处理线程和调度器线程共享reqlist这个公共类进行消息传递,通过两个互斥的操作add和fetch进行队列任务的增加和提取,然后由调度器线程把提取到的任务交给电梯线程的worklist,电梯拿到任务遍…
一.三次作业总结 1. 说在前面 对于这次的这三次电梯作业,我采用了和几乎所有人都不同的架构:将每个人当作一个线程.这样做有一定的好处:它使得整个问题的建模更加自然,并且在后期人员调度变得复杂时,可以将调度器上纷繁的逻辑判断分布在不同的人身上,大大简化了代码逻辑.对于程序复杂度,将人作为某个容器中的PersonRequest时需要在电梯到达某一层时进行遍历,而将人作为线程池中的一个任务则是通过wait()和notify()机制实现了类似的线程遍历,对于此次最多40人的简单任务而言并不会在时间上损…
BUAA_OO_2020_Unit2_总结 2020年春季学期第八周,OO第二单元落下帷幕,三次多线程任务作罢,萌新在OO的世界里又迈出了艰难但有意义的一步,下作总结: 一.三次作业设计策略 回顾三次电梯作业,整体的设计架构是在第二次的作业时最终确定的,第三次作业沿用了第二次作业的整体思路.总体而言三次作业本人并未重构,而是采用了迭代开发的方式,总体体验甚佳.但仍暴露出一些问题,后面会具体分析. (1)第一次作业设计策略 第一次作业相较于17级的三次作业布置,对应为17级的第二次作业.可能考量的…
目录 前言 HW5 度量分析 UML类图与协作图 bug分析 HW6 度量分析 UML类图与协作图 bug分析 HW7 度量分析 UML类图与协作图 bug分析 SOLID原则 感想 前言 紧张刺激的第二单元结束了,本单元体验极佳, 进行作业前有注重架构的稳定,在良好的架构上考虑优化,如此也便利了迭代. 另外,没遇上线程安全bug的电梯,不是完整的电梯[doge] HW5 本次作业要求实现单部可捎带电梯,典型的生产者消费者模式, 输入线程Request是生产者, 电梯线程Elevator是消费者…
第一次作业 设计思路与感想 第一次作业是要求有捎带的电梯实现, 第一次作业是花费的时间比较长的一次,花费了很多的时间去思考架构的问题.起初是想要搞三个线程的:输入线程,调度器线程和电梯线程,想要搞一个连锁的生产消费模型,但是在调度器线程和电梯线程在交互的时候出现了一些问题. 对run方法操作最小化的思考, 对于输入线程和调度器线程来说就是比较简单的,对于电梯线程我考虑了要不要添加一些非最小化的操作,比如:电梯加入moveTo()方法. 这样的方法在while(true)里面是不合适的,完全可以通…
第二单元面向对象作业--性感电梯在线吃人 Part 1:单部可捎带电梯 多线程设计策略 本次电梯仅仅只有一部运行,因此,在多线程的设计中难度不大,并且,只需采用一对一的生产者-消费者模型即可解决问题.整体的设计大致为:输入线程作为生产者不断接受外部请求并投入托盘容器中:调度器线程起到了托盘容器的作用,并在电梯运行中辅助实现可捎带功能:电梯线程为消费者,接受乘客的请求,并不断计算目标地点和进行自身移动的处理. 在实现中,为了使电梯线程能够正确结束,在输入线程结束前夕,要对电梯线程发送状态信息,在电…
2020北航OO第二单元总结 前言 本单元考察基于多线程的电梯调度问题,成功让我从一个多线程小白到了基本掌握了使用锁来控制线程安全的能力,收获颇多(充分体验了迷茫地de一个又一个死锁bug的痛苦). 三次作业的关键如下: 第一次作业:单台电梯的调度,电梯可到达所有楼层,容量不设限,考虑捎带. 第二次作业:多台电梯的调度,通过输入控制电梯台数,电梯可到达所有楼层,容量受限,考虑捎带. 第三次作业:3+n台电梯的调度,通过输入随时增加电梯,电梯到达楼层.容量.运行时间分类受限,考虑换乘和捎带. 一.…
电梯运行模拟--三次作业总结 目录 电梯运行模拟--三次作业总结 总体遵循的设计思路 逻辑解耦 电梯与调度器解耦 楼层信息的存储和变更与电梯.调度器解耦 调度器运行流程解耦 第一次电梯,蠢笨串行先到先得电梯 类方法复杂度表 第二次电梯,可捎带无限容量电梯 第二次电梯运作原理图 类方法复杂度表 类复杂度表 第三次电梯,可达楼层.运行速度和容量均不相同的多电梯 第三次电梯运作原理图 类方法复杂度表 类复杂度表 第三次电梯的所有类图景 作业bug分析 多线程作业感想 总体遵循的设计思路 逻辑解耦 电梯…
作业提交时间:10月9日上课前. Design and implement an Elevator Scheduler to aim for both correctness and performance, in managed code. Skills to learn and practice: a)       Peer to peer collaboration b)       Requirement Analysis c)       Design by contract, Int…
Elevator Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 56481    Accepted Submission(s): 30942 Problem Description The highest building in our city has only one elevator. A request list is made…
[题目链接] The highest building in our city has only one elevator. A request list is made up with N positive numbers. The numbers denote at which floors the elevator will stop, in specified order. It costs 6 seconds to move the elevator up one floor, and…
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description The highest building in our city has only one elevator. A request list is made up with N positive numbers. The numbers denote at which floors the elevator will s…
Elevator Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 51396 Accepted Submission(s): 28377 Problem Description The highest building in our city has only one elevator. A request list is made up w…
The highest building in our city has only one elevator. A request list is made up with N positive numbers. The numbers denote at which floors the elevator will stop, in specified order. It costs 6 seconds to move the elevator up one floor, and 4 seco…