开发者学堂课程【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.考虑数据的分析问题,对相应数据进行采集汇总。