OO_JAVA_电梯运行模拟_单元总结】的更多相关文章

电梯运行模拟--三次作业总结 目录 电梯运行模拟--三次作业总结 总体遵循的设计思路 逻辑解耦 电梯与调度器解耦 楼层信息的存储和变更与电梯.调度器解耦 调度器运行流程解耦 第一次电梯,蠢笨串行先到先得电梯 类方法复杂度表 第二次电梯,可捎带无限容量电梯 第二次电梯运作原理图 类方法复杂度表 类复杂度表 第三次电梯,可达楼层.运行速度和容量均不相同的多电梯 第三次电梯运作原理图 类方法复杂度表 类复杂度表 第三次电梯的所有类图景 作业bug分析 多线程作业感想 总体遵循的设计思路 逻辑解耦 电梯…
OO_JAVA_表达式求导_单元总结 这里引用个链接,是我写的另一份博客,讲的是设计层面的问题,下面主要是对自己代码的单元总结. 程序分析 (1)基于度量来分析自己的程序结构 第一次作业 程序结构大致如图: 结构比较简单,只有三个类,分别是Main,Polynomial和PolynomialItem. 方法复杂度分析如图: 可以见得:主要是类的构造方法和toString方法复杂度较高,因为要面面俱到. 第二次作业 程序结构大致如图: 程序结构比较简单,只有六个类. 方法复杂度如图: 可以见得:由…
OO_JAVA_JML系列作业_单元总结 (1)梳理JML语言的理论基础.应用工具链情况 简单梳理 以下三者是jml规格里的核心,对一个方法功能和属性的限制: requires子句:规定方法的前置条件(precondition): assignable子句:方法的副作用范围限定: ensures子句:规定方法的后置条件(post condition). 简单运用 采用OpenJML工具check第一次JML官方开源库代码得到如下结果: 对比第一次和第二次JML规格官方源码: 第一次: /*@ p…
概述: 面向对象的第二单元是多线程电梯.第一次实现一部傻瓜电梯,每次只送一个人:第二次实现一部可稍带电梯:第三次实现三部可稍带电梯. 一.设计策略 1.第5.6次作业设计思路 第5.6次作业的架构相似,由一个电梯线程,一个读请求线程,一个调度器组成:电梯和读请求进程通过调度器交互. 读请求线程不断的从标准输入读入请求,将请求存放在调度器的队列中: 电梯线程从调度器中获取请求并执行. 调度器维护一个共享队列,用来存放请求. 读请求线程和电梯线程并发执行,二者对调度器中队列的操作保证互斥,同一时刻只…
这种运行模式,和Local[N]很像,不同的是,它会在单机启动多个进程来模拟集群下的分布式场景,而不像Local[N]这种多个线程只能在一个进程下委屈求全的共享资源.通常也是用来验证开发出来的应用程序逻辑上有没有问题,或者想使用Spark的计算框架而没有太多资源. 用法是:提交应用程序时使用local-cluster[x,y,z]参数:x代表要生成的executor数,y和z分别代表每个executor所拥有的core和memory数. 上面这条命令代表会使用2个executor进程,每个进程分…
如何判断宽窄依赖: =================================== 6. Spark 底层逻辑 导读 从部署图了解 Spark 部署了什么, 有什么组件运行在集群中 通过对 WordCount 案例的解剖, 来理解执行逻辑计划的生成 通过对逻辑执行计划的细化, 理解如何生成物理计划   如无特殊说明, 以下部分均针对于 Spark Standalone 进行介绍 部署情况 在 Spark 部分的底层执行逻辑开始之前, 还是要先认识一下 Spark 的部署情况, 根据部署情…
某快餐店供应若干种快餐和饮料(5种以上),早晨6:00开始营业,晚上11:00打烊.前一天已经安排了若干工人上班,快餐店的用餐位是固定的,每种食物的成本和销售价格是确定的,每种食物的总量是确定的,储存事先准备好的各种食物的空间是确定的,顾客人数和顾客到达的时间是随机的,每人点餐的时间为一分钟,顾客用餐的时间是随机的.营业时间里,其中7:00-9:00.11:00-13:00.17:00-19:00是用餐高峰期. 食物可以事先准备好,但是每种食物有不同的保鲜期,超过保鲜期的食物将被丢弃.顾客到达后…
[简述] 要重视Socket开发,企业后台服务特长使用Socket. 1.服务端要有可持续运行能力,保证线程一致在运行 2.并发处理能力,使用多线程 [工程截图] [WeatherRunner.java] package com.Higgin.socket.Runnable; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.So…
概述: 面向对象第一单元的作业是三次难度依次递增的多项式求导.第一次作业是仅包含带符号整数和幂函数的多项式求导,例如:-1+xˆ233-xˆ06:第二次是在前面的基础上增加了三角函数的求导,例如:-1+xˆ233*xˆ06-sin(x)*3*cos(x):第三次是增加了嵌套函数的求导,例如:(-1+xˆ233)*sin(xˆ2)ˆ06-cos(sin(x))*3.经过三次的求导训练,我学会了正则表达式的用法.Java内大数运算.对象与类.继承与多态.异常捕获.利用checkstyle检查并规范自…
版权声明:本文为博主原创文章,未经博主允许不得转载. 在一次项目实战中,前端登录使用了RSA加密,使用LoadRunner压测的第一步,就是模拟用户登录,可惜loadRunner11并不能录制前端的加密过程,并且安装的LR是基于C语言版,网络上关于RSA的加密更多的是Java版,最后,选择在Jmeter中先尝试一下能否解决加密的问题,毕竟它有很多处理器,用于脚本的插入: 把解决过程中遇到的问题,简单做个记录,防止遗忘,也算是给自己下一次项目一个经验总结了: [1]了解加密方式-----RSA 询…
使用如下命令执行应用程序: 和"基于YARN的Resource Manager的Client模式(集群)"运行模式,区别如下: 在Resource Manager端提交应用程序,会生成SparkSubmit进程,该进程只用来做Client端,应用程序提交给集群后,就会删除该进程. Resource Manager在集群中的某个NodeManager上运行ApplicationMaster,该AM同时会执行driver程序.紧接着,会在各NodeManager上运行CoarseGrain…
用java.net.Socket来模拟实现Tomcat,碰到了一些坑,大部分是没有想到的,记录下来自查. 直接上代码, public class TomcatDemo { private static ExecutorService executorService = Executors.newCachedThreadPool(); public static void main(String[] args) throws IOException { //监听9000端口 @SuppressWa…
在一次项目实战中,前端登录使用了RSA加密,使用LoadRunner压测的第一步,就是模拟用户登录,可惜loadRunner11并不能录制前端的加密过程,并且安装的LR是基于C语言版,网络上关于RSA的加密更多的是Java版,最后,选择在Jmeter中先尝试一下能否解决加密的问题,毕竟它有很多处理器,用于脚本的插入: 把解决过程中遇到的问题,简单做个记录,防止遗忘,也算是给自己下一次项目一个经验总结了: [1]了解加密方式-----RSA 询问开发前端的加密方式:先请求public_key,再加…
https://www.luogu.org/problem/show?pid=T2483 题目背景 开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道.一辆停在轨道底部的电梯.和电梯内一杆控制电梯升降的巨大手柄. 题目描述 Nescafe 之塔一共有N 层,升降梯在每层都有一个停靠点.手柄有M个控制槽,第i 个控制槽旁边标着一个数Ci,满足C1<C2<C3<⋯⋯<CM.如果Ci>0,表示手柄扳动到该槽时,电梯将上升Ci 层:如果…
Spark Streaming 导读 介绍 入门 原理 操作 Table of Contents 1. Spark Streaming 介绍 2. Spark Streaming 入门 2. 原理 3. 操作 1. Spark Streaming 介绍 导读 流式计算的场景 流式计算框架 Spark Streaming 的特点 新的场景 通过对现阶段一些常见的需求进行整理, 我们要问自己一个问题, 这些需求如何解决? 场景 解释 商品推荐 京东和淘宝这样的商城在购物车, 商品详情等地方都有商品推…
[远程请求的B/S模式(客户端/服务器)] TCP: 是一种传输层协议,一种面向连接的协议.经过三次握手客户端和服务器端连接一个连接(通道).提供可靠的数据传输,该协议一般服务质量要求比较高的情况,TCP支持的应用层协议主要有:Talnet.FTP.SMTP.HTTP等. UDP:是一种传输层协议,是一种数据报协议,速度是很快的,不稳定的.它是面向非连接的协议,它不与对方建立连接,直接就把数据包发送出去.属于面向事务的简单不可靠信息传输服务.UDP支持的应用层协议主要有:NFS(网络文件系统).…
 JVM-栈 2012-09-17 15:43:53 分类: Java 原文转自:http://www.blogjava.net/nkjava/archive/2012/03/15/371971.html JVM栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;JVM堆解决的是数据存储的问题,即数据怎么放.放在哪儿,另外JVM堆中存的是对象.JVM栈中存的是基本数据类型和JVM堆中对象的引用. JVM基础概念:JVM堆与JVM栈 数据类型 Java虚拟机中,数据类型可以分为两类:基本类型…
现在越来越多的场景,都是Spark跑在Hadoop集群中,所以为了做到资源能够均衡调度,会使用YARN来做为Spark的Cluster Manager,来为Spark的应用程序分配资源. 在执行Spark应用程序前,要启动Hadoop的各种服务.由于已经有了资源管理器,所以不需要启动Spark的Master.Worker守护进程.相关配置的修改,请自行研究. 使用如下命令执行应用程序 提交应用程序后,各节点会启动相关的JVM进程,如下: 在Resource Manager节点上提交应用程序,会生…
Rails poj-1363 题目大意:判断一个序列是否是1~n的合法出栈序列. 注释:$1\le n\le 10^4$. 想法:开始想到一种想法. 对于一段序列来讲,显然从首元素开始的连续小于尾元素的序列必定为合法出栈序列,所剩下的数所组成的序列也必为合法出栈序列. 黄色序列中所有数小于尾元素,不小于全序列最小值(废话),而且必定为全队最小值到尾元素-1的一个排列.绿色序列同理. 然后,我们递归处理,先判断前面的黄色序列是否是合法的全排列,绿色序列是否是合法的全排列,然后递归处理. 但是,Ed…
'''  函数级(setup_function/teardown_function只对函数用例生 效(不在类中)在类中是用该方法不生效 ''' import pytest def setup_module(): """ 这是一个module级别的setup,它会在本module(test_fixt_function.py)里 所有test执行之前,被调用一次. 注意,它是直接定义为一个module里的函数""" print() print(&q…
''' pytest 参数说明 https://www.jianshu.com/p/7a7432340f02 -x test_fixt_model.py 遇到错误时,停止运行 用-v运行(-v显示运行的函数)py.test –v test_fixt_model.py, 用例设计原则 文件名以 test_*.py 文件和*_test.py 以 test_开头的函数 以 Test 开头的类 以 test_开头的方法 所有的包 pakege 必项要有__init__.py 文件 用例运行级别  模块…
实现策略 这里结合一下我画的第三次作业的时序图(可能有画的不好的地方)来叙述一下我的实现逻辑.最开始主线程负责创建必要的线程(输入.调度线程)与请求队列类实例:输入线程负责与人进行交互,将获取到的请求放入请求队列:调度线程则每次从请求队列中取出一个请求,将其分发给三个电梯,若需要拆分,则新建一个次级调度线程,将第二部分的请求的分发任务交给它来实现:电梯线程只需要负责模拟自己电梯的运行即可. 本次作业共享数据的同步互斥主要采用的是 synchronized 方法,再配以 wait notifyAl…
1 三次作业的设计策略 经过了上一单元的训练,我也积累了一些设计策略上的经验.在这一单元的一开始,我便尽可能地把问题中的各个功能实体区分开来,分别封装成类,以便于随后作业中新需求的加入.与此同时,我也在有意地控制住方法的规模,依照程序逻辑层次化地设计方法,使得每个方法都不至于过分臃肿,从而增加代码的可重复利用性,减轻编程负担. 接下来,具体介绍每次作业的设计策略及其演进. 1.1 第1次作业 第一次作业的需求较为简单,只需实现单电梯先来先服务算法的调度模拟即可.为了尽可能模拟出电梯运行的真实行为…
电梯调度有很多种模式,参见http://www.cnblogs.com/jianyungsun/archive/2011/03/16/1986439.html 1.1先来先服务算法(FCFS) 先来先服务(FCFS-First Come First Serve)算法,是一种随即服务算法,它不仅仅没有对寻找楼层进行优化,也没有实时性的特征,它是一种最简单的电梯调度算法.它根据乘客请求乘坐电梯的先后次序进行调度.此算法的优点是公平.简单,且每个乘客的请求都能依次地得到处理,不会出现某一乘客的请求长期…
作业2-1 单部多线程傻瓜调度(FAFS)电梯的模拟 I. 基于度量的程序结构分析 1)程序结构与基本度量统计图 2)分析 ​ 这次作业基本奠定了本人三次电梯作业的基本架构,简述如下: Elevator类:定义了"电梯"这一对象,即拥有开关门状态(state:CLOSE or OPEN),电梯内乘客队列(passenger),当前楼层(floor:GROUND~TOP)等. PassengerQueue类: 共享资源区.拥有push(),pop(),isEmpty()方法. Eleva…
需求分析 官方需求 本次作业需要模拟一个多线程实时多电梯系统,从标准输入中输入请求信息,程序进行接收和处理,模拟电梯运行,将必要的运行信息通过输出接口进行输出. 本次作业电梯系统具有的功能为:上下行,开关门.本次多部电梯的可停靠楼层,运行时间,最大载客量都不相同. 电梯系统可以采用任意的调度策略,即上行还是下行,是否在某层开关门,都可自定义,只要保证在系统限制时间内将所有的乘客送至目的地即可. 电梯系统在某一层开关门时间内可以上下乘客,开关门的边界时间都可以上下乘客. 简要分析 这次作业有几个关…
OO第一单元(求导)单元总结 这是我们OO课程的第二个单元,这个单元的主要目的是让我们熟悉理解和掌握多线程的思想和方法.这个单元以电梯为主题,从一开始的最简单的单部傻瓜调度(FAFS)电梯到最后的多部多线程智能调度(SS)电梯,我们需要掌握的多线程知识也从简单的线程间交互与同步到多种多线程模式相结合的复杂线程调度系统. 一.作业分析 第一次作业 第一次作业要求实现的是单部多线程傻瓜调度(FAFS)电梯的模拟.即一次接送一个人的VIP式电梯. 这个版本的作业其实不是我提交时所用的版本,而是我在提交…
OO第二次单元总结--电梯多线程调度问题 在这个单元OO学习中,我们终于迎来了期待已久(不是)的电梯多线程调度作业,开启了OO打怪之路的新关卡.虽然说经过了这三次作业,我对于多线程的理解还不能算是熟练,在线程控制方面的实现也仍有缺陷,但是经过了磕磕绊绊的写作业过程也达到了可以对多线程进行简单应用的程度.在此,我对于第二单元的OO作业进行一个总结,梳理一下自己这三次作业中的实现方式以及所踩过的大雷. 第一次电梯作业 (1)设计策略 题目要求 单部多线程傻瓜调度(FAFS)电梯的模拟,实现对于一个目…
一.设计策略及程序结构分析 1.第一次作业 第一次作业是需要我们用多线程模拟一个实时电梯系统,功能比较简单正常,但要有捎带功能,我采用的调度策略便是指导书上提供的ALS调度策略,采用消费者-生产者模式,生产者即输入类,不断输入人的电梯请求,消费者就是电梯类,不断接受输入过来的电梯请求,并不断执行下去,中间的仓库类便是调度器,负责存储输入类即生产者提供的请求,并经过一定的调度策略将电梯请求交给电梯去执行. 但调度器要获取电梯的实时状态,却不能一个线程直接调用另一个线程,所以我是采用了这样的设计策略…
figure:first-child { margin-top: -20px; } #write ol, #write ul { position: relative; } img { max-width: 100%; vertical-align: middle; } button, input, select, textarea { color: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit…