#region EntityMap

/// <summary>
        /// 实体类值的访问器,线程安全
        /// </summary>
        /// <typeparam name="TKey"></typeparam>
        /// <typeparam name="TValue"></typeparam>
        public class EntityMap<TKey, TValue>
        {
            private readonly ConcurrentDictionary<TKey, TValue> map = new ConcurrentDictionary<TKey, TValue>();

/// <summary>
            /// 获得一个值
            /// </summary>
            /// <typeparam name="TKey"></typeparam>
            /// <param name="key"></param>
            /// <returns>如果key找不到对应值,返回null</returns>
            public TValue GetValue(TKey key)
            {
                TValue value;
                if (map.TryGetValue(key, out value))
                    return value;

return default(TValue);
            }

/// <summary>
            /// 设置一个值
            /// </summary>
            /// <param name="key"></param>
            /// <param name="value"></param>
            public void SetValue(TKey key, TValue value)
            {
                if (arrayCache != null)
                {
                    TValue mapValue;
                    if (map.TryGetValue(key, out mapValue))
                    {
                        if (!mapValue.Equals(value))
                            arrayCache = null;
                    }
                    else
                    {
                        arrayCache = null;
                    }
                }
                map[key] = value;
            }

/// <summary>
            /// 缓存map的数据
            /// </summary>
            private TValue[] arrayCache;

/// <summary>
            /// 获得所有的数据(内部有缓存,如果数据没改变过,则返回同一个数组)
            /// </summary>
            /// <returns></returns>
            public TValue[] ToArray()
            {
                if (arrayCache == null)
                    arrayCache = map.Values.ToArray();

return arrayCache;
            }

/// <summary>
            /// 删除一个数据
            /// </summary>
            /// <param name="key"></param>
            public void Remove(TKey key)
            {
                TValue value;
                if (map.TryRemove(key, out value))
                    arrayCache = null;
            }

public void Clear()
            {
                map.Clear();
                arrayCache = null;
            }
        }

#endregion

至于Session 的生命周期很好处理 自己封装一个时间片类 规定Session创建后什么时候移除
待会我再上传时间片代码

Session 的生命周期的更多相关文章

  1. 【转载】Session的生命周期

    http://www.cnblogs.com/binger/archive/2013/03/19/2970171.html 以前在学习的时候没怎么注意,今天又回过头来仔细研究研究了一下Session的 ...

  2. Session的生命周期之关于浏览器关闭后的Session

    Session是JSP的九大内置对象中的一个,它可以保存当前用户的各种的状态信息. 初次接触Session时认为Session的生命周期是从浏览器打开一个窗口发送请求开始,到浏览器窗口关闭结束.其实这 ...

  3. Cookie 和 Session 的区别和联系?session的生命周期?多个服务器部署session的管理?

    一.session 和 cookie 1.cookie Cookie会根据响应报文里的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie.当下次客户端再向服务端发起请求时,客户端会 ...

  4. cookie和session的区别,session的生命周期,

    这些都是基础知识,不过有必要做深入了解.先简单介绍一下. 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择, 都纪 ...

  5. node中session存储与销毁,及session的生命周期

    1.首先在使用session之前需要先配置session的过期时间等,在入口文件app.js中 app.use(express.session({ cookie: { maxAge: config.g ...

  6. cookie和session的区别及session的生命周期

    这些都是基础知识,不过有必要做深入了解.先简单介绍一下. 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,都纪录 ...

  7. session的生命周期是怎样的

    session的生命周期是怎样的 一.总结 一句话总结:Tomcat中Session的默认失效时间为20分钟.如果我们敲代码的时候把它设置成1个月,那么这一个月的数据会代替默认20分钟的数据,使ses ...

  8. Session的生命周期和工作原理

    一.什么是Session,如何使用?Session是用于存放用户与web服务器之间的会话,即服务器为客户端开辟的存储空间. 由于客户端与服务器之间的会话是无状态的机制,Session则可用于关联访问, ...

  9. Request和Session的生命周期

    request的生命周期是request请求域,一个请求结束,则request结束 session的生命周期是session会话域,打开一个浏览器请求一个网站的页面后,Session开始,当sessi ...

随机推荐

  1. 转multicast vs broadcast

    转自:http://blog.csdn.net/bloghome/article/details/4682984 一.multicast概述:   多媒体应用集成了声音.图形.动画.文本以及视频,这种 ...

  2. Android 下拉菜单 Spinner 赋值

    private Spinner m_spiModel = null; //产品型号 m_spiModel = (Spinner) findViewById(R.id.spiModel);//产品型号 ...

  3. mysql查询-不存在记录时赋对应的数据

    使用mysql数据库,执行查询的时候,有时候就不存在记录,但是正好在不存在记录的时候又需要给赋予相应的查询结果字段,代码实现如下: select IFNULL(('), '1970-01-01 00: ...

  4. linux shell 命令获取字符串/文件的MD5值

    获取字符串的MD5值: 字符串“hello”的MD5: $ echo -n 'hello'|md5sum|cut -d ' ' -f1 得到的MD5值: 5d41402abc4b2a76b9719d9 ...

  5. jetty上传文件的时候报错显示文件过大

    这个时候我们需要修改jetty的参数文件 cd /data/java_web_app/news23456/etc vim jetty.xml 找到这一行 <Configure id=" ...

  6. IIS 的几个小技巧

    1.向 IIS 中安装 .NET 应用程序池 如果先安装了 IIS,后安装了 .NET,就需要向 IIS 中注册 ASP.NET . (有的版本 .NET 安装后可能不会在 IIS 中体现,比如貌似 ...

  7. 【Asp.net之旅】--因自己定义控件注冊而引发的思考

    前言 近期在开发远洋的SOA系统平台,开发使用的是.NET平台.对于Asp.net并不困难,但该系统的开发并非全然依靠Asp.net.而是自身封装好的框架.这套框架是远洋地产购买的微软的开发平台,项目 ...

  8. [Jobdu] 题目1510:替换空格

    题目描述: 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 输入: 每个输入文件仅包含一组测 ...

  9. uva--242(邮资问题 dp)

    输入输出: id=26127" style="color:blue; text-decoration:none">Sample Input 5 2 4 1 4 12 ...

  10. 《解读window核心编程》 之 字符和字符串处理方式

    推荐的字符和字符串处理方式 開始将文本字符串想象为字符的数组,而不是 char 或字节的数组. 用通用数据类型(如 TCHAR/PTSTR )来表示文本字符和字符串. 用明白的数据类型(如 BYTE  ...