分享通用基類庫-C#通用緩存類

  1 /*************************************************************************************
2 * 代碼:吳蔣
3 * 時間:2012.03.30
4 * 說明:緩存公共基類
5 * 其他:
6 * 修改人:
7 * 修改時間:
8 * 修改說明:
9 ************************************************************************************/
10 using System;
11 using System.Web.Caching;
12
13 namespace Common
14 {
15 public class DacheHelp
16 {
17 protected static volatile System.Web.Caching.Cache webCache = System.Web.HttpRuntime.Cache;
18
19 /// <summary>
20 /// 默認緩存存活期為3600秒(1小時)
21 /// </summary>
22 protected int _timeOut = 3600;
23
24 private static object syncObj = new object();
25
26 /// <summary>
27 /// 構造函數
28 /// </summary>
29 static DacheHelp()
30 {
31 }
32
33
34 /// <summary>
35 /// 設置到期相對時間[單位: 秒]
36 /// </summary>
37 public virtual int TimeOut
38 {
39 set { _timeOut = value > 0 ? value : 3600; }
40 get { return _timeOut > 0 ? _timeOut : 3600; }
41 }
42
43
44 /// <summary>
45 /// 靜態構造函數
46 /// </summary>
47 public static System.Web.Caching.Cache GetWebCacheObj
48 {
49 get { return webCache; }
50 }
51
52 /// <summary>
53 /// 加入當前對象到緩存中
54 /// </summary>
55 /// <param name="objId">對象的鍵值</param>
56 /// <param name="o">緩存的對象</param>
57 public virtual void AddObject(string objId, object o)
58 {
59 if (objId == null || objId.Length == 0 || o == null)
60 {
61 return;
62 }
63
64 CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(onRemove);
65
66 if (TimeOut == 7200)
67 {
68 webCache.Insert(objId, o, null, DateTime.MaxValue, TimeSpan.Zero, System.Web.Caching.CacheItemPriority.High, callBack);
69 }
70 else
71 {
72 webCache.Insert(objId, o, null, DateTime.Now.AddSeconds(TimeOut), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, callBack);
73 }
74 }
75
76 /// <summary>
77 /// 加入當前對象到緩存中
78 /// </summary>
79 /// <param name="objId">對象的鍵值</param>
80 /// <param name="o">緩存的對象</param>
81 public virtual void AddObjectWith(string objId, object o)
82 {
83 if (objId == null || objId.Length == 0 || o == null)
84 {
85 return;
86 }
87
88 CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(onRemove);
89
90 webCache.Insert(objId, o, null, System.DateTime.Now.AddSeconds(TimeOut), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, callBack);
91 }
92
93
94 /// <summary>
95 /// 加入當前對象到緩存中,并對相關文件建立依賴
96 /// </summary>
97 /// <param name="objId">對象的鍵值</param>
98 /// <param name="o">緩存的對象</param>
99 /// <param name="files">監視的路徑文件</param>
100 public virtual void AddObjectWithFileChange(string objId, object o, string[] files)
101 {
102 if (objId == null || objId.Length == 0 || o == null)
103 {
104 return;
105 }
106
107 CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(onRemove);
108
109 CacheDependency dep = new CacheDependency(files, DateTime.Now);
110
111 webCache.Insert(objId, o, dep, System.DateTime.Now.AddSeconds(TimeOut), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, callBack);
112 }
113
114
115
116 /// <summary>
117 /// 加入當前對象到緩存中,并使用依賴鍵
118 /// </summary>
119 /// <param name="objId">對象的鍵值</param>
120 /// <param name="o">緩存的對象</param>
121 /// <param name="dependKey">依賴關聯的鍵值</param>
122 public virtual void AddObjectWithDepend(string objId, object o, string[] dependKey)
123 {
124 if (objId == null || objId.Length == 0 || o == null)
125 {
126 return;
127 }
128
129 CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(onRemove);
130
131 CacheDependency dep = new CacheDependency(null, dependKey, DateTime.Now);
132
133 webCache.Insert(objId, o, dep, System.DateTime.Now.AddSeconds(TimeOut), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, callBack);
134 }
135
136 /// <summary>
137 /// 建立回調委托的一個實例
138 /// </summary>
139 /// <param name="key"></param>
140 /// <param name="val"></param>
141 /// <param name="reason"></param>
142 public void onRemove(string key, object val, CacheItemRemovedReason reason)
143 {
144 switch (reason)
145 {
146 case CacheItemRemovedReason.DependencyChanged:
147 break;
148 case CacheItemRemovedReason.Expired:
149 {
150 //CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(this.onRemove);
151
152 //webCache.Insert(key, val, null, System.DateTime.Now.AddMinutes(TimeOut),
153 // System.Web.Caching.Cache.NoSlidingExpiration,
154 // System.Web.Caching.CacheItemPriority.High,
155 // callBack);
156 break;
157 }
158 case CacheItemRemovedReason.Removed:
159 {
160 break;
161 }
162 case CacheItemRemovedReason.Underused:
163 {
164 break;
165 }
166 default: break;
167 }
168 //如需要使用緩存日志,則需要使用下面代碼
169 //myLogVisitor.WriteLog(this,key,val,reason);
170 }
171
172 /// <summary>
173 /// 刪除緩存對象
174 /// </summary>
175 /// <param name="objId">對象的關鍵字</param>
176 public virtual void RemoveObject(string objId)
177 {
178 if (objId == null || objId.Length == 0)
179 {
180 return;
181 }
182 webCache.Remove(objId);
183 }
184
185
186 /// <summary>
187 /// 返回一個指定的對象
188 /// </summary>
189 /// <param name="objId">對象的關鍵字</param>
190 /// <returns>對象</returns>
191 public virtual object RetrieveObject(string objId)
192 {
193 if (objId == null || objId.Length == 0)
194 {
195 return null;
196 }
197 return webCache.Get(objId);
198 }
199 }
200 }

?

轉載于:https://www.cnblogs.com/wujiang/archive/2012/03/30/2425104.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/377601.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/377601.shtml
英文地址,請注明出處:http://en.pswp.cn/news/377601.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

二、PyTorch加載數據

一、常用的兩個函數 dir()函數可以理解為打開某個包&#xff0c;help()可以理解為返回如何使用某個具體的方法 例如&#xff1a;若一個A錢包里面有a&#xff0c;b&#xff0c;c&#xff0c;d四個小包&#xff0c;則可通過dir(A)&#xff0c;打開該A錢包&#xff0c;返回a&…

leetcode 1005. K 次取反后最大化的數組和 思考分析

題目 給定一個整數數組 A&#xff0c;我們只能用以下方法修改該數組&#xff1a;我們選擇某個索引 i 并將 A[i] 替換為 -A[i]&#xff0c;然后總共重復這個過程 K 次。&#xff08;我們可以多次選擇同一個索引 i。&#xff09; 以這種方式修改數組后&#xff0c;返回數組可能…

三、TensorBoard

一、安裝TensorBoard 管理員身份運行Anaconda Prompt&#xff0c;進入自己的環境環境 conda activate y_pytorch&#xff0c;pip install tensorboard 進行下載&#xff0c;也可以通過conda install tensorboard進行下載。其實通俗點&#xff0c;pip相當于菜市場&#xff0c;c…

IT資產管理系統SQL版

你難道還在用Excel登記IT資產信息嗎&#xff1f; 那你一定要好好考慮如何面對以下問題 1&#xff1a;IT人員需要面對自身部門以下問題用戶申請了資產it部未處理的單還有哪些?庫存里面還有哪些資產?有多少設備在維修?有多少設備已經報廢了?哪些資產低于安全庫存需要采購?使…

詳細講解設計跳表的三個步驟(查找、插入、刪除)

目錄寫在前面跳表概要查找步驟插入步驟刪除步驟完整代碼寫在前面 關于跳表的一些知識可以參考這篇文章,最好是先看完這篇文章再看詳細的思路->代碼的復現步驟: Redis內部數據結構詳解(6)——skiplist 關于跳表的插入、刪除基本操作其實也就是鏈表的插入和刪除&#xff0c;所…

php 類靜態變量 和 常量消耗內存及時間對比

在對類執行100w次循環后&#xff0c; 常量最快&#xff0c;變量其次&#xff0c;靜態變量消耗時間最高 其中&#xff1a; 常量消耗&#xff1a;101.1739毫秒 變量消耗&#xff1a;2039.7689毫秒 靜態變量消耗&#xff1a;4084.8911毫秒 測試代碼&#xff1a; class Timer_profi…

一個機器周期 計算機_計算機科學組織| 機器周期

一個機器周期 計算機機器周期 (Machine Cycle) The cycle during which a machine language instruction is executed by the processor of the computer system is known as the machine cycle. If a program contains 10 machine language instruction, 10 separate machine …

四、Transforms

transform是torchvision下的一個.py文件&#xff0c;這個python文件中定義了很多的類和方法&#xff0c;主要實現對圖片進行一些變換操作 一、Transforms講解 from torchvision import transforms#按著Ctrl&#xff0c;點擊transforms進入到__init__.py文件中 from .transfo…

leetcode 134. 加油站 思考分析

目錄題目1、暴力法&#xff0c;雙層遍歷2、貪心題目 在一條環路上有 N 個加油站&#xff0c;其中第 i 個加油站有汽油 gas[i] 升。 你有一輛油箱容量無限的的汽車&#xff0c;從第 i 個加油站開往第 i1 個加油站需要消耗汽油 cost[i] 升。你從其中的一個加油站出發&#xff0…

單鏈線性表的實現

//函數結果狀態代碼#define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 //Status是函數的類型&#xff0c;其值是函數結果狀態代碼 typedef int Status; typedef int ElemType;…

時間模塊,帶Python示例

Python時間模塊 (Python time Module) The time module is a built-in module in Python and it has various functions that require to perform more operations on time. This is one of the best modules in Python that used to solve various real-life time-related pro…

五、torchvision

一、下載CIFAR-10數據集 CIFAR-10數據集官網 通過閱讀官網給的解釋可以大概了解到&#xff0c;一共6w張圖片&#xff0c;每張圖片大小為3232&#xff0c;5w張訓練圖像&#xff0c;1w張測試圖像&#xff0c;一共由十大類圖像。 CIFAR10官網使用文檔 torchvision.datasets.CIF…

leetcode 69. x 的平方根 思考分析

題目 實現 int sqrt(int x) 函數。 計算并返回 x 的平方根&#xff0c;其中 x 是非負整數。 由于返回類型是整數&#xff0c;結果只保留整數的部分&#xff0c;小數部分將被舍去。 示例 1: 輸入: 4 輸出: 2 示例 2: 輸入: 8 輸出: 2 說明: 8 的平方根是 2.82842…, 由于返回…

背包問題 小灰_小背包問題

背包問題 小灰Prerequisites: Algorithm for fractional knapsack problem 先決條件&#xff1a; 分數背包問題算法 Here, we are discussing the practical implementation of the fractional knapsack problem. It can be solved using the greedy approach and in fraction…

360瀏覽器兼容問題

360瀏覽器兼容問題 360瀏覽器又是一大奇葩&#xff0c;市場份額大&#xff0c;讓我們不得不也對他做些兼容性處理。 360瀏覽器提供了兩種瀏覽模式&#xff0c;極速模式和兼容模式&#xff0c;極速模式下是webkit內核的處理模式&#xff0c;兼容模式下是與IE內核相同的處理模式。…

轉 設計師也需要了解的一些前端知識

一、常見視覺效果是如何實現的 一些事 關于文字效果 互聯網的一些事 文字自身屬性相關的效果css中都是有相對應的樣式的&#xff0c;如字號、行高、加粗、傾斜、下劃線等&#xff0c;但是一些特殊的效果&#xff0c;主要表現為ps中圖層樣式中的效果&#xff0c;css是無能為力的…

六、DataLoader

一、DataLoader參數解析 DataLoader官網使用手冊 參數描述dataset說明數據集所在的位置、數據總數等batch_size每次取多少張圖片shuffleTrue亂序、False順序(默認)samplerbatch_samplernum_workers多進程&#xff0c;默認為0采用主進程加載數據collate_fnpin_memorydrop_las…

單調棧 leetcode整理(一)

目錄單調棧知識402. 移掉K位數字1673. 找出最具競爭力的子序列316. 去除重復字母&#xff08;1081. 不同字符的最小子序列&#xff09;321. 拼接最大數單調棧知識 單調棧就是一個內部元素有序的棧&#xff08;大->小 or 小->大&#xff09;&#xff0c;但是只用到它的一…

數字簽名 那些密碼技術_密碼學中的數字簽名

數字簽名 那些密碼技術A signature is usually used to bind signatory to the message. The digital signature is thus a technique that binds a person or the entity to the digital data. This binding ensures that the person sending the data is solely responsible …

七、torch.nn

一、神經網絡模塊 進入到PyTorch的torch.nnAPI學習頁面 PyTorch提供了很多的神經網絡方面的模塊&#xff0c;NN就是Neural Networks的簡稱 二、Containers torch.nn下的Containers 一共有六個模塊&#xff0c;最常用的就是Module模塊&#xff0c;看解釋可以知道&#xff0c…