博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

个人学习小记

Posted on 2010-12-15 18:23  菠萝  阅读(304)  评论(0编辑  收藏  举报

学习笔记,项目还没划分下来。所以理用上班时间写点 学习小记。

(文中全是自己对技术的努力,很多都很肤浅而且还可能是错误的叙述。因为这些东西我以前都没怎么接触)

 

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);

  }