• mybatis 缓存


    1. 缓存用的是装饰模式,首先定义了Cache接口,其它装饰类实现了这个接口,每个装饰类实现自己的功能
       默认的缓存采用hashmap
     
    2. 装饰类有
    1)日志cache:在getObject记录日志,输出缓存命中比例
     
    2)SoftCache和WeakCache:通过软引用和弱引用来实现缓存,很典型待详细分解
          主要实现思想为用 SoftCache和WeakCache存储数据的value,缓存的key还是放在原来的代理中。当垃圾回收的时候弱引用或者软引用被回收。而key还存在,缓存通过定义一个private final ReferenceQueue<Object> queueOfGarbageCollectedEntries;
    将垃圾回收的元素key存放在了队列中,下一次putObject 时将回收掉的缓存key清除掉
     
    3)SynchronizedCache缓存:get、put方法都加了synchronized关键字,同步操作
     
    4)ScheduledCache缓存:定时清理缓存,每隔一段时间定时清理一次缓存,默认为1小时
     
    5) SerializedCache: 序列化缓存,定义了serialize()deserialize()两个方法对对象进行序列化和反序列化,get和put对象时通过调用序列化方法将对象进行序列化和反序列化
    主要部分
          ByteArrayOutputStream bos = new ByteArrayOutputStream();
          ObjectOutputStream oos = new ObjectOutputStream(bos);
          oos.writeObject(value);
          oos.flush();
          oos.close(); 
     
    6) FifoCache:先进先出缓存,定义一个lLinklist存储缓存key,当队列满了之后去掉队头,将新加入的对象加入队尾
     
    7) LruCache:  就是缓存一定量的数据,当超过设定的阈值时就把一些过期的数据删除掉,判断过期数据的过程交给了LinkedHashMap
    keyMap = new LinkedHashMap<Object, Object>(size, .75F, true)
    其中第三个参数要为true,如果为false则这个map只是一个有顺序的,迭代出元素的顺序跟加入元素的顺序相对应。

    public void setSize(final int size) final关键字有什么作用?
     final关键字要求了传入的size不能被再赋值
       定义了一个继承了LinkedHashMap的内部类来存储缓存数据,重写了removeEldestEntry方法。当map缓存数据量超过设定值时将eldestKey指向eldest.getKey()
        

    8) 还有事务缓存,设置了两个map。插入或者删除的同时将数据插入这两个map中,回滚时从临时map里将数据取出

  • 相关阅读:
    杭州西郊千湖岛-天下第一秀水
    windows phone7 豆瓣FM
    wp7 中 HubTile控件自定义大小。
    wp7 HubTile
    Windows Phone 7之XNA游戏:重力感应
    WP7:模拟开始屏幕Tile漂动效果
    windows 8 项目
    手把手教你 用 wpf 制作metro ProgressRing (Windows8 等待动画)
    windows8 开发教程 教你制作 多点触控Helper可将任意容器内任意对象进行多点缩放
    仿windows8 开始菜单 实现HubTileBase 以及仿鲜果联播实现 PulsingTile(脉冲磁贴)
  • 原文地址:https://www.cnblogs.com/liguangming/p/6561080.html
Copyright © 2020-2023  润新知