学习笔记,项目还没划分下来。所以理用上班时间写点 学习小记。
(文中全是自己对技术的努力,很多都很肤浅而且还可能是错误的叙述。因为这些东西我以前都没怎么接触)
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);
}