没有合适的资源?快使用搜索试试~ 我知道了~
前言 这两天面试了一个物联网公司高级研发,面试题是下面这样子 公司领导,部门主管,小组组长,组成员4级,假如有个 疫情预警,先通知组人员(对个人,主要有一个处理就算处理了) 如果3分钟没处理,就往组长发短信,如果组长3分钟没处理就往上级推送。一级一级的。 要求单程序并发至少支持1000tps预警事件 说实话上面需求在我做的过往项目里有过类似需求,我也只是依稀记得自己是怎么做的。类似于使用第三方任务调度框架完成上面的3分钟超时处理,然后至于分级发送则更简单了,再不济就是使用if、else这样的最原始验证即可。但是这样的题目丢到面试题上我是一下就不知所措了。自然最终的结果也不尽人意(我最终提交
资源推荐
资源详情
资源评论
c# 使用计时器和观察者模式实现报警推送需求使用计时器和观察者模式实现报警推送需求
前言前言
这两天面试了一个物联网公司高级研发,面试题是下面这样子
公司领导,部门主管,小组组长,组成员4级,假如有个 疫情预警,先通知组人员(对个人,主要有一个处理就算
处理了) 如果3分钟没处理,就往组长发短信,如果组长3分钟没处理就往上级推送。一级一级的。 要求单程序并
发至少支持1000tps预警事件
说实话上面需求在我做的过往项目里有过类似需求,我也只是依稀记得自己是怎么做的。类似于使用第三方任务调度框架完成
上面的3分钟超时处理,然后至于分级发送则更简单了,再不济就是使用if、else这样的最原始验证即可。但是这样的题目丢到
面试题上我是一下就不知所措了。自然最终的结果也不尽人意(我最终提交的代码就是采用一个事件总线实现报警的推送,但
是并未对其进行超时分级发送) 这个自然是错误的,我其实当时也想过使用Timer,但是内心对Timer就是感觉用性能做代价去
换取最终的结果。
解析需求解析需求
过了几天还是觉得要手纯撸代码将上面功能撸出来,不然如何成长呢!
拆分下需求可以得到的消息是有一个事件。这个事件就是报警事件,通过报警事件需要将消息推送给不同职位的工作人员,而
且必须遵循岗位从下至上,但凡人员收到报警消息则表示报警通知已完成,其次就是有一个三分钟需要处理。
通过上面的需求分析可以知道我们必须要定义一个枚举,记录职称高低。
/// <summary>
/// 工作级别
/// </summary>
public enum JobLevel : int
{
公司领导 = 1,
部门主管 = 2,
小组组长 = 3,
组成员 = 4
}
其次我们至少存在两个类,一个是产生报警的对象,这个对象有需要通知的报警信息和报警信息发送结果,当然更加少不了我
们订阅了报警消息的订阅者。这里想了下,可以采用观察者设计模式进行解耦。
/// <summary>
/// 发布者接口
/// </summary>
public interface IPublish
{
/// <summary>
/// 新增订阅者(观察者)
/// </summary>
/// <param name="subscriber"></param>
void AddSubscriber(SubscriberPeopleBase subscriber);
/// <summary>
/// 移除订阅者(观察者)
/// </summary>
/// <param name="subscriber"></param>
void RemoveSubscriber(SubscriberPeopleBase subscriber);
/// <summary>
/// 发送报警消息
/// </summary>
void SendNotify();
/// <summary>
/// 出现警报
/// </summary>
/// <param name="msg">警报消息</param>
void CreateJB(string msg);
接下来就是实现上面接口了!
/// <summary>
/// 报警发布者
/// </summary>
资源评论
weixin_38669793
- 粉丝: 6
- 资源: 938
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功