趣味小问题,感兴趣的进
N(假如10)个职员在屋里,每个人每分钟都要向领导交1块钱,最长时间M(假如20)分钟也要交的,如果过了10分钟了,有人还没交,领导就要催促那些没交的人,让他们交钱.
程序模拟实现
------解决方案--------------------又是观察者?
------解决方案--------------------领导为观察者,每个员工注册到领导的观察列表中,到时间后,领导从列表中选择出没交钱的,依次发送通知
------解决方案--------------------这其实是一个优先级队列。
------解决方案--------------------
肯定比不说话好啊, 至少可以让你的帖子 人工置顶一次!~
------解决方案--------------------原来是 wow里面大boss的仇恨列表
每个人一个sessioid,同时一个hashtable里面存如sessioid和仇恨值。
如果有人有拉仇恨的动作,就根据sessionid找到他的仇恨值,增加仇恨值
而大boss呢,定时减少所有session的仇恨值
也就是如果没人有动作所有人的仇恨值都减少相同量,如果有人做出增加仇恨的动作,则此人仇恨增加
------解决方案--------------------你得给出你的现有设计的细节,什么业务逻辑,你的监控放在内存还是数据库,上下文是什么,等等。你可以简化你的模型,那样也好给你个demo。
------解决方案--------------------又想了一下
其实就是一个心跳机制
客户端每分钟向服务器心跳一次
如果十分钟没心跳过,就认为下线
不难啊
------解决方案--------------------
好吧 , 我不乱顶了, 仔细看了下帖子。发现:
每个监控项在返回值时 检查该项N个小时内的返回至是否都一样,然后给该项设置一个状态(是否需要进行进一步处理),状态的改变引发报告。然后观察者去做进一步处理
------解决方案--------------------using System;
using System.Collections.Generic;
using System.Threading;
namespace WindowsFormsApplication4
{
/// <summary>
/// 领导
/// </summary>
public class Leader : IDisposable
{
#region 成员变量
/// <summary>
/// 员工列表
/// </summary>
private IDictionary<String, Employee> _EmployeeList;
/// <summary>
/// 服务状态
/// </summary>
private Boolean _Active;
/// <summary>
/// 超时时间
/// </summary>
private readonly Int64 _TimeOutTick;
#endregion
#region 私有方法
/// <summary>
/// 1秒轮询一次,找出没交保护费的员工
/// </summary>