天天看点

红绿灯设计 | 学习笔记

开发者学堂课程【Java 面试疑难点串讲5:系统架构及项目设计:红绿灯设计】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:

https://developer.aliyun.com/learning/course/28/detail/611

红绿灯设计

目录:

一、可能使用的技术

二、实现操作技术环节

三、传感器问题

四、开发流程

开发的操作从现实来看是通过硬件模拟的,如果要通过软件模拟。

一、可能使用到的技术

Java 编写: Graphics 类进行绘制开发;

WEB 编写: HTML5 中提供的 Canvas 进行编写。 

面对此类问题一定要有一个假设前提:

是否需要有黄灯缓冲,缓冲的变更时间。

是否需要智能调整,如果发现车流量较大,则适当延迟通过时间对于违规的车辆的监控情况。

考虑转向灯的设计。

二、实现整个操作的技术环节

定时器: Timer 、 TimerTask ,但是这两个类是需要时钟支持,可是不准,如果要准确则需要使用 QuartZ 这描述所有的灯的变化,一定需要有一个线程的同步处理机制、 synchronized 、使用单例实现.既然有两组灯,就建议设计一个单独红绿灯类,这个类可以使用一些参数完成。

例如:

控制变量=0:表示红灯: 控制变量=1:表示绿灯:控制变量=2:表示转向灯;

控制变量=3:表示黄灯 绿灯变为转向);。 控制变量=4:表示黄灯(转向变为红灯)

如果你现在只是希望给出一组状态,实际上就可以设置一个一个以下几位:111, 可以描述七个值。

若要编写还需考虑传感器问题:

监控传感器、流量传感器、车速传感器(可以进行大数据的汇总,计算平均的车速,好为城市的交通规划做出数据的贡献)

1.先实现定时进行灯的切换处理。如果使用无界面编写,输出的信息就非常麻烦。

2.考虑监控的问题。在软件上模拟,可以设置几个坐标点,真实的环境需要有传感器。

3.考虑数据的分析问题,对相应数据进行采集汇总。