OO第三次电梯作业优化】的更多相关文章

目录 第三次电梯作业个人优化 前言 优化思路 一.调度器 二.电梯 第三次电梯作业个人优化 前言 由于个人能力有限,第二次电梯作业只能完成正确性设计,没能进行优化,也因此损失了强测分数,于是第三次电梯作业时便决定进行优化,结果强测错了一个点,同样损失了强测分数--但是总的来说,第三次作业的优化还是有一定效果的,性能分比起完全没有优化的第二次高了许多,有的点甚至达到了96.97分,也一定程度上弥补了我第三次作业的强测分数. 在写博客之前也拜读了很多大佬的优化博客,比起他们的一些很巧妙的优化方法,还…
目录 电梯作业总结 程序结构与复杂度的分析 第一次作业 第二次作业 第三次作业 程序BUG的分析 互测 自动评测 有效性 总结 电梯作业总结 程序结构与复杂度的分析 第一次作业 1.设计思路 第一次作业是电梯作业的第一次,也是我多线程变成的第一次实践.任务是编写一个多线程实时电梯系统,采用FAFS的调度方式.由于第一次作业中没有涉及到多部电梯以及捎带的情况,因此来说是比较简单的.我采用的是指导书提示部分中的模式,即生产者消费者模式 主线程进行输入的管理,使用ElevatorInput,负责接收请…
OO第二次博客作业 零.写在前面 OO第二单元宣告结束,在这个单元里自己算是真正对面向对象编程产生了比较深刻的理解,也认识到了一个合理的架构为编程带来的极大的便利. (挂三次评测分数 看出得分接近等差数列 菜鸡本质暴露无遗) 一.总体设计策略 三次作业设计策略基本相同.前两次是四个类:Main.Elevator.Taker.Waiter:两个线程:main.elevator.第三次在此基础上多了一个类:Dispatcher,一个线程:dispatcher.之所以前两次没有调度器类,是因为由于只有…
OO第二次博客作业——电梯调度 前言 最近三周,OO课程进入多线程学习阶段,主要通过三次电梯调度作业来学习.从单部电梯的傻瓜式调度到有性能要求的调度到多部电梯的调度,难度逐渐提升,对同学们的要求逐渐变高,我们对线程的理解也逐渐加深.下面笔者将对三次作业分别进行总结. 一.单部多线程傻瓜调度(FAFS)电梯 说明:本次作业需要模拟一个多线程实时电梯系统,从标准输入中输入请求信息,程序进行接收和处理,模拟电梯运行,将必要的运行信息通过输出接口进行输出.本次作业对性能要求非常宽松,不需要进行优化处理.…
在本章的三次作业里,每次作业我都有一个主题,分别是:托盘型共享数据.单步电梯运行优化.多部电梯运行优化,因而电梯优化实际是第二.三次作业.虽然后两次作业从性能分上看做得还不错,但阅读其他大佬博客,我深深地体会到鄙人朴素拙劣的调度算法能够取得这样的分数实属幸运,因此,对于这篇博客,我将只简略地介绍一下自己的调度算法,把重点放在关于电梯调度架构的思考上. 电梯调度算法 单电梯调度:对于每部电梯,我的调度算法都是朴素的LOOK算法,并且当休眠的电梯同时收到了可上可下的请求时,其会向从接人运行路程较短的…
OO第三单元作业总结--JML 第三单元的主题是JML规格的学习,其中的三次作业也是围绕JML规格的实现所展开的(虽然感觉作业中最难的还是如何正确适用数据结构以及如何正确地对于时间复杂度进行优化). 关于JML语言 JML语言概述 JML是Java Modeling Language的缩写,意思是Java建模语言,是一种进行详细设计的符号语言. 使用JML语言的好处主要有以下几点: 能够描述类和方法的运行方式,从而使代码的编写过程更加契合面向对象思想: 可以更加高效地发现和修正程序中的bug 在…
OO第三单元作业--魔教规格 JML的理论基础和相关工具   JML(Java Modeling Language,Java建模语言),在Java代码种增加了一些符号,这些符号用来标志一个方法是干什么的,但是不关心它的具体实现.通过使用JML,在实现代码前,我们可以描述一个方法的预期功能,而尽可能地忽略实现,从而把过程性思考一直延迟到方法设计的层面. 如果仅仅是描述方法的功能,那么自然语言一样可以做到,但是,使用JML语言的好处是,相比于容易产生歧义的自然语言,以前置条件.副作用.异常行为.作用…
本单元从电梯调度相关问题层层深入,带领我们学习并运用了了多线程相关的知识. 三次电梯调度依次为单电梯单容量.单电梯可携带.多电梯可携带. 一.我的设计 在第一次作业中,使用了最简单的FIFO调度方法.设计思路大体如下:设计一个容器,在读入到新乘客请求时将之放入容器尾,容器非空时,电梯线程将在自己处于非载客状态时取出容器首元素进行工作,完成此次工作后,检查容器,非空继续工作,否则wait直到容器获得新乘客唤醒电梯或者输入结束从而结束线程. 在第二次作业中,一共有两个线程,分别为电梯线程与乘客申请线…
(一)第五次作业 一.设计思路 生产消费者模型,输入接口是producer,调度器是tray,电梯是customer.由于只有一架电梯,所以生产消费模型满足以下条件: 一个生产者,一个消费者 托盘不为空时,消费者可以取走请求.任何时候,生产者可以添加请求.(托盘无容量限制) 互斥:生产者--生产者,消费者--消费者. 同步:生产者至少生产一次,消费者才能消费. 互斥问题我给get和put函数加了方法锁. 二.调度策略:FAFS傻瓜电梯 遵循先到先服务,所以调度器作用很小,只是完成托盘的功能.调度…
OO第三次博客作业 1. 规格化设计的发展 我认为,规格化设计主要源自于软件设计的两次危机.第一次是由于大量存在的goto语句,让当时被广泛应用的面向过程式的编程语言臃肿不堪,在逻辑性上与工程规模上鱼与熊掌不可兼得.故而,人们提出了结构化程序设计的编程思想,旨在使程序实现结构化设计的思想.这种设计思想旨在控制各个模块的程序复杂度,从而保证整体工程的正确性. 然而,由于硬件设备的快速迭代,对于软件的要求也越来越高.工程的日益庞大.面向过程程序的可扩展性差.可维护性有限,使得人们提出了面型对象程序编…