Unit2-窝窝牌电梯】的更多相关文章

全文共2329字,推荐阅读时间10~15分钟. 文章共分四个部分: 作业分析 评测相关 重构策略 课程体验感受 作业分析 Unit2要求我们模拟现实生活中的电梯调度情景,迭代路径是单电梯->多电梯->特殊选层电梯.本单元的作业分析有独特的地方--因为三次作业都采用了一致的架构,因此以第三次作业的UML图为例即可了解整个单元迭代开发的过程. 从UML图可以很直接地看出来整个系统的模拟思路:通过分包策略,让输入(request).分配(dispatcher).调度(scheduler).电梯本身(…
OO_Unit2 多线程电梯总结 相比于Unit1的表达式求导,Unit2的多线程电梯听上去似乎显得更加"高大上".但在完成了3个task的迭代后再回过头去比较这两个单元,我发现其实它们的侧重点并不相同:Unit1要更偏重于横向的架构设计,如何实现性能与架构之间的平衡:而Unit2由于涉及了多线程,因此更多的难点与重点则放在了线程安全与同步上.故而单纯的从代码量上来看的话,Unit2似乎反而还要少一些,但这并不意味着Unit2的复杂度有所降低,相反,由于允许线程间时间上的无序性,一切反…
一.UML解析器设计 ​ 先看下题目:第四单元实现一个基于JDK 8带有效性检查的UML(Unified Modeling Language)类图,顺序图,状态图分析器 MyUmlInteraction,实际上我们要建立一个有向图模型,UML中的对象(元素)可能与同级元素连接,也可与低级元素相连形成层次关系 ​ 输入:上述三UML图的边集(非实体元素)与点集,上下层级元素通过_parent隐式邻接.值得注意的是,不同于前两个单元,我们终于回归了离线算法OFFLINE,I/O通过一行END_OF_…
OO Unit2多线程电梯总结博客 传说中的电梯居然就这样写完了-撒花…
一.摘要 本文是BUAA OO课程Unit2在课程讲授.三次作业完成.自测和互测时发现的问题,以及倾听别人的思路分享所引起个人的一些思考的总结性博客.主要包含设计策略.代码度量.BUG测试和心得体会等内容. 二.设计策略分析 2.1 第一次作业 第一次作业较为简单,主要由Elevator线程和InputHandler线程互相合作完成,是消费者.生产者模式,InputHandler生产AllRequest类中的Request对象存在ArrayList中,电梯从中取出Request对象并完成送乘服务…
目录 OO Unit2 博客作业 基于度量来分析⾃己的程序结构 复杂度分析 架构分析 改进和重构 发现过的BUG 简化问题 多线程初探 OO Unit2 博客作业 基于度量来分析⾃己的程序结构 自认为自己的架构不算特别复杂,一个电梯类,一个请求队列.代码量也挺少. 复杂度分析 类复杂度: 方法复杂度: 看了idea自带的代码分析,和我原先想的一样.复杂度最高的是电梯类和请求分析类.请求分析类因为要每次更新请求列表,SCAN下一个目的楼层,所以复杂度自然就高.其实我的代码也没有其他东西了. 架构分…
目的 面试的时候,面试官出题可能会出其不意: 比如随意指定生活当中的一件物品,问你如何测试,见下 作为测试人员,电梯/雨伞/杯子/笔/A4纸/纸杯… 怎么测试? 面试官的考察点 1.在没有需求文档或者需求不完整的情况下,你如何测试 2.能不能把测试用例设计方法应用到实际工作中去 3.你的测试思维是否完整 4.随口问问,看你的应变能力 如何分析 以下以拉杆箱为例来给大家讲: 1.那么首先,你应该反问面试官,需求是什么样的,比如测什么样的拉杆箱,大小?材质?品牌? 2.如果回答是没有,那么你接下来的…
OO Unit2 总结 OO课Unit2电梯仿真项目技术回顾 BUAA.1823.邓新宇 2020/4/17 Part1 设计策略 从多线程的协同和同步控制方面,分析和总结自己三次作业的设计策略 第一次作业 关于共享资源,主要是单例模式的Building,其内部为每一个楼层建立一个Floor实例,分上行和下行保存正在该层等待电梯的乘客. 整体的逻辑分为三个部分: 输入器,单独一个线程. 控制器,单例模式,单独一个线程.有一个请求队列和一个等待队列,暂时无法处理的请求会添加到等待队列. 电梯,单独…
Unit2 一.第一次作业 1.UML 2.Sequence Diagram 3.同步块设置与锁处理 采用了生产者-消费者模式,用共享对象来连接不同的线程. 第一次作业中,我有三个线程:Receiver,Manager,Elevator,用PersonQueue WaitingQueue分别来连接Receiver和 Manager,Manager和Elevator 整个程序中的加锁操作只针对有可能发生数据竞争的连个共享对象:PersonQueue,WaitingQueue 加锁是为了保证之后位于…
int main() { // 算牌器 ]; ; do { printf("请输入牌名: \n"); scanf("%2s",char_name); ; ]) { case 'J': case 'Q': case 'K': value = ; break; case 'A': value = ; break; case 'X': continue; default: value = atoi(char_name); break; } || value > )…
Shuffle a set of numbers without duplicates. Example: // Init an array with set 1, 2, and 3. int[] nums = {1,2,3}; Solution solution = new Solution(nums); // Shuffle the array [1,2,3] and return its result. Any permutation of [1,2,3] must equally lik…
4205: 卡牌配对 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 173  Solved: 76[Submit][Status][Discuss] Description 现在有一种卡牌游戏,每张卡牌上有三个属性值:A,B,C.把卡牌分为X,Y两类,分别有n1,n2张. 两张卡牌能够配对,当且仅当,存在至多一项属性值使得两张卡牌该项属性值互质,且两张卡牌类别不同. 比如一张X类卡牌属性值分别是225,233,101,一张Y类卡牌属性值分别为11…
1.算法 http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle 简单的原理如下图所示: 2.原理 总结下,洗牌算法Fisher_Yates的原理就是把从1到n的顺序候选集随机打乱, 做法就是 第1次从1-n的候选集合随机选个数,拿出此数,并把它从候选集合剔除(候选集合n-1). 第2次从1-n-1的候选集合随机选个数,拿出此数,并把它从候选集合剔除(候选集合n-2). 第2次从1-n-2的候选集合随机选个数,拿出此数,并把它从候选集合…
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精   C#洗牌算法如下: class Program { static void Main(string[] args) { List<string> list = new List<string>(); Init(list); XiPai(list); Print(list); DiPai(list); list.Clear(); } st…
电梯调度有很多种模式,参见http://www.cnblogs.com/jianyungsun/archive/2011/03/16/1986439.html 1.1先来先服务算法(FCFS) 先来先服务(FCFS-First Come First Serve)算法,是一种随即服务算法,它不仅仅没有对寻找楼层进行优化,也没有实时性的特征,它是一种最简单的电梯调度算法.它根据乘客请求乘坐电梯的先后次序进行调度.此算法的优点是公平.简单,且每个乘客的请求都能依次地得到处理,不会出现某一乘客的请求长期…
[转]原博文地址:https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/zh/02.09.md 完美洗牌算法 题目详情 有个长度为2n的数组{a1,a2,a3,...,an,b1,b2,b3,...,bn},希望排序后{a1,b1,a2,b2,....,an,bn},请考虑有无时间复杂度o(n),空间复杂度0(1)的解法. 题目来源:此题是去年2013年UC的校招笔试题,看似简单,按照题目所要…
-自测1. 打印沙漏() 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定能正好组成一个沙漏.要求打印出的沙漏能用掉尽可能多的符号. 输入格式: 输入在一行给出1个正整数N(<=)和一个符号,中间以空格分隔. 输出格式: 首先打印出由给定符号…
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…
基础篇 洗牌采用的是,每一张牌,与后面随机一张牌来交换位置. 扑克牌采用编码制(如,0代表红桃A,依次类推)为了编码方便,扑克牌不含大小王,故52张. 一.扑克牌的了解 扑克(英文:Poker) 一副扑克牌有54张牌,其中52张是正牌,另2张是副牌(大王和小王). 52张正牌又均分为13张一组,并以黑桃.红桃.草花.方块四种花色表示各组,每组花色的牌包括从1-10(1通常表示为A)以及J.Q.K标示的13张牌. 为了简化对象,我们把扑克作为Card类,属性值为suit 和 face. funct…
结对编程总结 队员:刘强(11061188) 林谋武(11061169) 结对编程: 结对编程的优点: 1.  两个人合作,相比于一个人自己奋斗而言,更能激发自己的潜能:我们在合作过程中,互相学习,互相磨合,各自发挥自己的长处,并及时提醒对方工作上的失误,能让我们的工作进行得更加顺利: 2.  两人在合作过程中彼此交流,能更快速地发现设计中出现的漏洞,及时改正错误,提高工作效率: 3.  两人合作相较于多人团队合作而言,更能促进彼此的交流,因为两人合作过程中,有什么问题可以直接提出,并在两人商讨…
#该脚本可以提取沪深两市上市公司股票信息,并按以下信息分类:(1)当天股价创近10个交易日新高的股票:(2)停牌的股票:(3)复牌不超过一个交易日或者新发行的股票 #将分类后的股票及其信息(股价新高.当前状态等)存入mysql数据库 from time import * import pandas as pd import tushare as ts from datetime import date import datetime import MySQLdb import sys reloa…
本次给大家分享下Android斗地主棋牌游戏牌桌实现源码下载如下: 为了节约内存资源,每张扑克牌都是剪切形成的,当然这也是当前编程的主流方法. 1.主Activity package com.bison;            import android.app.Activity;      import android.content.pm.ActivityInfo;      import android.os.Bundle;      import android.view.Window…
需求:内网公告牌能够正确显示未来三天的天气信息 本文关键字:C#/WebForm/Web定时任务/Ajax跨域 规划: 1.天定时读取百度接口获取天气信息并存储至Txt文档: 2.示牌开启时请求WebService,获取天气信息: 解决方案: 1.在Global.asax中能够配置整个工程不同情况下触发的事件,其中 Application_Start方法是在iis启动本项目时就开始的进程.在本方法下写入定时从百度读取天气信息的代码,调用的WebService代码在下面的第2部分: protect…
12061160刘垚鹏 & 12061166宋天舒 1.1结对编程的优缺点结对编程相对于个人编程有很多优点.首先,督促作用,在讨论过程中能够很快投入工作,为了不耽误对方时间,我们会尽快完成各自的任务:第二,节约时间,相互交流,能够更快的确定算法方案,比起一个人苦思冥想要来的快得多:第三,提高效率,一些简单的unit,一个人能够很简单的完成就可以分给不同的人去做:对于核心的unit,比如说此次项目电梯调度的算法部分,这是一个核心的部分,需要我们共同讨论,经过讨论后确定较优的方案再去实现:或者在遇到…
Collection工具类为操作List集合提供了几个有用的方法: reverse().shuffle().sort().swap().rotate(). 小例子: 使用shuffle(),方法模拟洗牌操作,并输出. import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; public class ShuffleCards {…
  实例演示 下载地址 实例代码 实例演示 实例代码 <div class="container"> <header class="clearfix"> <h1>Baraja <span>洗牌图片切换特效</span></h1> </header> <section class="main"> <nav class="actions&q…
题目描述 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都可以停电梯,而且第i层楼(1<=i<=N)上有一个数字Ki(0<=Ki<=N).电梯只有四个按钮:开,关,上,下.上下的层数等于当前楼层上的那个数字.当然,如果不能满足要求,相应的按钮就会失灵.例如:3 3 1 2 5代表了Ki(K1=3,K2=3,……),从一楼开始.在一楼,按“上”可以到4楼,按“下”是不起作用的,因为没有-2楼.那么,从A楼到B楼至少要按几次按钮呢? 输入输出格式 输入格式: 输入文件…
题目: 小明被劫持到X赌城,被迫与其他3人玩牌. 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张. 这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢? 请填写该整数,不要填写任何多余的内容或说明文字. 拿到这道题的时候第一时间想到了解决方案:dfs. 但是我在编写第一版的时候出现了很大的问题,导致算法复杂度为O(n^n),当然,这道题目里面的n自然就是13了. 我的想法是:从第一张牌开始…
1)结对编程队友 1106xxxx 张扬 1106xxxx 杨军 其中,此项目的编程实现主要由前者完成. 2)关于结对编程 结对编程的优点: 最直接的一点:在结对编程中,由于有另一个人在你身边和你配合完成同样一件事情的,  所以相对来说你不好意思糊弄,不好意思开小差,更加自觉. 结对编程的时候两个人互相审查对方编程时的小错误,相当于随时随地地审查代码,减少错误出现的几率. 结对编程无疑会让你更加注意代码的风格和规范,从而能提供更好的设计质量和代码质量,两人合作能有更强的解决问题的能力. 结对能更…
第 22 题(推理):有 4 张红色的牌和 4 张蓝色的牌,主持人先拿任意两张,再分别在 A.B.C 三人额头上贴任意两张牌,A.B.C 三人都可以看见其余两人额头上的牌,看完后让他们猜自己额头上是什么颜色的牌,A 说不知道,B 说不知道,C 说不知道,然后 A 说知道了.请教如何推理,A 是怎么知道的.如果用程序,又怎么实现呢? 推理:设A有x1张红色牌 y1张蓝色牌 B有x2张红色牌 y2张蓝色牌 C有x3张红色牌 y3张蓝色牌 都不知道显然没有一个人能看到4张相同颜色的牌.以C为例来说满足…