學習筆記,項目還沒劃分下來。所以理用上班時間寫點 學習小記。
(文中全是自己對技術的努力,很多都很膚淺而且還可能是錯誤的敘述。因為這些東西我以前都沒怎麼接觸)
1. cache:
將伺服器端的資料資訊儲存在本地記憶體中,這樣可以減輕伺服器壓力,達到提高程式速度的作用。
case被定義在ystem.Web.Caching中,定義一個cache如:
public static System.Web.Caching.Cache cache = HttpRuntime.Cache; //這web項目中這樣定義
或者
public static System.Web.Caching.Cache cache = HttpContext.Current.Cache //在非web項目中這樣定義
至於兩個的區別,查了些資料還是很模糊。定以後的cache支援:Remove、Set(重構)、Insert、Add等方法來操作cache。其中Add是添加,如果要覆蓋緩衝則用Insert。不太清楚緩衝的生命週期,丹因為緩衝是放在記憶體中的,因此猜測:從建立開始,到被覆蓋或者記憶體釋放的時候結束(關機等)
疑惑:大叫都把指導緩衝用起來很方便,如果每個程式員都依賴把緩衝來減輕伺服器壓力,這個用戶端電腦會不會受不了。
2. Serializable 序列化。這個是一直都是讓我頭大的知識點。沒接受過正規的教育,沒到大公司上過班。所以一看到Serializable這個字眼我就頭大。今天咬起牙看看相關的資料。
Serializable主要是完成這樣一件事:將對象(object?)的狀態或者說副本(拷貝)保持到媒體的過程。其實我翻譯一下:就是把對象用特別的處理方式保持到硬碟裡面(如果是web項目,應該是保持在伺服器硬碟吧?猜的)。以此序列化和反序號可以簡單理解為:用特殊方式儲存物件和再現對象兩個過程。
網上抄的代碼例子:自己加了個方法封起來
第一個:原始方法->
[Serializable] //這句一定不能忘記了
public class TestObj
{
public int n1 = 0;
public int n2 = 0;
public String str = "aaa";
public TestObj()
{
n1 = 33;
n2 = 22;
str = "paul";
}
}
第二個方法:把對象用BinaryFormatter方式寫入硬碟
private static void CreateInfo()
{
TestObj obj = new TestObj();
//obj.n1 = 1;
//obj.n2 = 24;
//obj.str = "一些字串";
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Create,
FileAccess.Write, FileShare.None);
formatter.Serialize(stream, obj);
stream.Close();
}
第三步:將對象副本從硬碟還原
private static void GetInfor()
{
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Open,
FileAccess.Read, FileShare.Read);
TestObj obj = (TestObj)formatter.Deserialize(stream);
stream.Close();
//測試原始對象的資訊還存在不? 即判斷是否還原成功
Console.WriteLine("n1: {0}", obj.n1);
Console.WriteLine("n2: {0}", obj.n2);
Console.WriteLine("str: {0}", obj.str);
}