博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第二次博客作业
阅读量:5768 次
发布时间:2019-06-18

本文共 756 字,大约阅读时间需要 2 分钟。

第二单元小结

一 设计策略

1.FAFS电梯

经典的生产者消费者模型,结合单例Handler。

电梯硬编码,30行左右解决。

2.ALS电梯

仍是生产者消费者模型,但在电梯中加入捎带队列,每层楼进行tray和捎带队列的更新

3.SS电梯

Worker-Thread模式,建立多个电梯线程并对乘客进行选择。

在捎带算法上仍有较大问题,以至于6,7次作业中测都有点没过。之后会根据代码再做修改。

(笔者与人交际甚少,没有讨论的机会,只能学习在git上的开源代码了,至于设计模式,由于参考书上的12种设计模式大多都阅读并完成过,还算比较熟悉。总体而言,对自己这一单元的的学习情况不甚满意。)

二 程序分析

1.FAFS电梯
类图:

1590906-20190423193305952-1036642689.png

度量分析:

1590906-20190423193311908-1451271725.png

1590906-20190423193315458-556815725.png

BUG分析:

由于电梯硬编码且仅仅是对生产者消费者模型实现,因此没有BUG,且复杂度较低。唯一的问题是ctrl+d模拟结束输入时,需要新添加输入结束标志。

2.ALS电梯
类图:

1590906-20190423193322328-1386454776.png

度量分析:

1590906-20190423193335464-1544747842.png

1590906-20190423193347206-1956069739.png

复杂度有两处较高,原因是每层楼均需要对两个队列进行更新。

由于自己的调度算法出错,公测有一个测试点没过。

3.SS电梯
类图:

1590906-20190423193355221-947750789.png

度量分析:

1590906-20190423193359663-1217775578.png

1590906-20190423193403581-1684560569.png

由于调度算法缺失(第六次作业的问题尚未解决),仍然采用了FAFS,导致强测超时。

三部电梯互相争抢乘客,并把不符合的乘客放回等待队列。因此workerThread.run方法复杂度较高。

三 心得体会

课下阅读完《图解Java多线程设计模式》并对书中内容进行实践,这本书解决了我大部分的设计问题,但是关于调度算法的问题并没有解决。以至于6,7次作业效果不佳。之后应该会阅读同学在git上开源的代码,解决自己在调度算法上的疑惑。

转载于:https://www.cnblogs.com/pandapan-buaa/p/10758459.html

你可能感兴趣的文章
js 经过修改改良的全浏览器支持的软键盘,随机排列
查看>>
Mysql读写分离
查看>>
Oracle 备份与恢复学习笔记(5_1)
查看>>
Oracle 备份与恢复学习笔记(14)
查看>>
分布式配置中心disconf第一部(基本介绍)
查看>>
Scenario 9-Shared Uplink Set with Active/Active uplink,802.3ad(LACP)-Flex-10
查看>>
UML类图中的六种关系
查看>>
探寻Interpolator源码,自定义插值器
查看>>
一致性哈希
查看>>
mysql(待整理)
查看>>
看雪论坛502,出现安全宝?
查看>>
使用PullToRefresh实现下拉刷新和上拉加载
查看>>
mysql
查看>>
2012年电信业八大发展趋势
查看>>
Web日志安全分析工具 v2.0发布
查看>>
JS重载
查看>>
python2和python3同安装在Windows上,切换问题
查看>>
php加速工具xcache的安装与使用(基于LNMP环境)
查看>>
android超链接
查看>>
redhat tomcat
查看>>