日期:2014-05-17  浏览次数:20908 次

趣味小问题,感兴趣的进
N(假如10)个职员在屋里,每个人每分钟都要向领导交1块钱,最长时间M(假如20)分钟也要交的,如果过了10分钟了,有人还没交,领导就要催促那些没交的人,让他们交钱.
程序模拟实现
------解决方案--------------------
又是观察者?


------解决方案--------------------
领导为观察者,每个员工注册到领导的观察列表中,到时间后,领导从列表中选择出没交钱的,依次发送通知
------解决方案--------------------
这其实是一个优先级队列。
------解决方案--------------------
引用:
引用:引用:领导为观察者,每个员工注册到领导的观察列表中,到时间后,领导从列表中选择出没交钱的,依次发送通知

++这样回答,你还不如不说话。。。


肯定比不说话好啊, 至少可以让你的帖子 人工置顶一次!~
------解决方案--------------------
原来是 wow里面大boss的仇恨列表

每个人一个sessioid,同时一个hashtable里面存如sessioid和仇恨值。
如果有人有拉仇恨的动作,就根据sessionid找到他的仇恨值,增加仇恨值
而大boss呢,定时减少所有session的仇恨值

也就是如果没人有动作所有人的仇恨值都减少相同量,如果有人做出增加仇恨的动作,则此人仇恨增加

------解决方案--------------------
你得给出你的现有设计的细节,什么业务逻辑,你的监控放在内存还是数据库,上下文是什么,等等。你可以简化你的模型,那样也好给你个demo。
------解决方案--------------------
又想了一下
其实就是一个心跳机制
客户端每分钟向服务器心跳一次
如果十分钟没心跳过,就认为下线
不难啊


------解决方案--------------------
引用:
项目中遇到的问题:
M个监控项,每个监控项根据自己的调度计划,每隔一定时间返回一个值,如果N个小时内,某个监控项的返回值都一样,那么找出这样的监控项,做进一步处理。



好吧 ,  我不乱顶了, 仔细看了下帖子。发现:

每个监控项在返回值时  检查该项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>