zoukankan      html  css  js  c++  java
  • 学习之路三十四:再一次重构缓存设计

    距离上一篇:“学习之路十九:模仿ASP.NET的缓存依赖自定义缓存机制” 已经有很长时间了,这段时间正好在做项目优化,所以对缓存这块做了重构。

    重构的内容包括:轮询+XML+特性,通过这三种方式来使得缓存变的简单。

    一丶XML管理SQL

      项目中DAL层可以看到到处分散的SQL语句,所以这次我统一通过XML来集中管理SQL语句,然后读取XML获取相应的SQL。

      当然如果你不想每次读取,也可以把这些SQL都缓存起来,也是一个不错的选择。

      示例:

      1 <?xml version="1.0" encoding="utf-8" ?>
      2 <!--
      3     1. &lt;      ==    < 
      4     2. &gt;     ==    >
      5     3. &amp;   ==   &
      6     4. &apos;  ==    '
      7     5. &quot;  ==    "
      8 -->
      9 <CacheSQL>
     10   <PC>
     11         //对应的SQL -- 通过节点读取对应的SQL 18   </PC>
     35   <ICON>
     36         //对应的SQL
     37   </ICON>
    193 </CacheSQL>

    二丶通过Attribute来标记该数据需要缓存

      通过自定义特性来灵活控制该数据时候要缓存。

     1     [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = false)]
     2     public class CacheAttribute : Attribute
     3     {
     4         private bool _isCache = true;
     5 
     6         public CacheAttribute(bool isCache)
     7         {
     8             _isCache = isCache;
     9         }
    10 
    11         public bool IsCache
    12         {
    13             get { return _isCache; }
    14         }
    15     }
    16 
    17     public enum CacheType
    18     {
    19         [Cache(true)]
    20         Tax = 0,
    21         [Cache(true)]
    22         ProductClass = 1,
    70     }

      那么我就可以在程序启动的时候去检查每个Type是否添加了缓存特性,如果有则缓存该数据

    三丶总结

      这次重构的特点:让缓存数据变的更加灵活了。

      如果下次有新的想法,小菜会继续重构的,加油。

    以同步至:个人文章目录索引 

  • 相关阅读:
    Redis的特点什么是?
    Linux---用户和用户管理--用户配置文件
    python---模仿键盘
    Linux---脚本安装包
    python---创建句柄
    python---模仿鼠标悬停 move_to_element/perform/context_click
    python---总结所学元素及方法
    python---关闭 close,quit
    python---截屏
    python---前进和后退 back/forward
  • 原文地址:https://www.cnblogs.com/yangcaogui/p/3225863.html
Copyright © 2011-2022 走看看