03 2013 档案

高性能网站建设指南----笔记
摘要:小概述:1.只有10%-20%的最终用户响应时间花在了下载HTML文档上,其余的80%-90%的时间花在了下载页面中的所有组件上【js,css,image,flash...】。2.如果浏览器和服务器都支持的话,可以使用压缩来减小响应的大小。浏览器可以使用Accept-Encoding头来声明它支持的压缩,服务器使用Content-Encoding头来确认响应已被压缩。3.条件GET请求 如果浏览器在其缓存中保留了组件一个副本,但并不确定它是否仍然有效,就会生成一个条件GET请求,即在请求头中使用If-Modified-Since头将最后修改时间发送给服务器,请求服务器验证该副本从最后修改时间以 阅读全文

posted @ 2013-03-29 22:49 Gcam 阅读(231) 评论(0) 推荐(0)

C# 高级编程(笔记6)
摘要:第14章 反射1.自定义特性(Attribute)编译器在遇到代码中某个应用了自定义特性的元素时的处理过程:eg:[StringLength(50, ErrorMessageResourceType = typeof(res), ErrorMessageResourceName = "MAX_USER_NAME_LENGTH")]public String UName { get; set; }//当C#编译器发现这个属性(property)应用了一个StringLength特性时,首先会把字符串Attribute追加到这个名称的后面,形成一个组合名称StringLengt 阅读全文

posted @ 2013-03-24 10:41 Gcam 阅读(256) 评论(0) 推荐(0)

C# 高级编程(笔记5)
摘要:第11章 LINQ1. LINQ查询表达式必须以from子句开头,以select或group子名结束。在这两个子句之间,可以使用where、orderby、join、left和其他from子句2.Where语句原型 public static IEnumerable<Tsource> Where<Tsource>(this IEnumerable<Tsource> source, Func<Tsource, bool> predicate) { foreach (Tsource item in source) if (predicate(item 阅读全文

posted @ 2013-03-23 22:09 Gcam 阅读(191) 评论(0) 推荐(0)

C# 高级编程(笔记4)
摘要:第8章 委托、Lambda表达式和事件1.多播委托:一个委托中包含多个方法 如果调用多播委托,就可以按顺序连续调用多个方法,为此,委托的签名就必须返回void;否则,就只能得到委托调用的最后一个方法的结果,前面调用的方法返回结果被后面调用的方法返回的结果给覆盖了。 通过一个委托调用多个方法还可能导致一个大问题。多播委托包含一个逐个调用的委托集合。如果通过委托调用的其中一个方法抛出一个异常,整个迭代就会停止。 static void One() { Console.WriteLine("One"); throw new Exception("Err... 阅读全文

posted @ 2013-03-23 08:27 Gcam 阅读(208) 评论(0) 推荐(0)

C# 高级编程(笔记3)
摘要:第5章 泛型1.泛型类的静态成员 泛型类的静态成员只能在类的一个实例中共享 public class staticDemo<T> { public static int x; }由于同时对一个string类型和一个int类型使用了staticDemo<T>类,所以存在两组静态字段:staticDemo<string>.x = 4; staticDemo<int>.x = 5;Console.WriteLine(staticDemo<string>.x); //输出 42.协变和抗变:指对参数和返回值的类型进行转换假定有Shape和Re 阅读全文

posted @ 2013-03-22 22:16 Gcam 阅读(182) 评论(0) 推荐(0)

C# 高级编程(笔记2)
摘要:第四章1.接口 public interface ITty { void Put(); } a.一般情况下,接口只能包含方法、属性、索引器和事件的声明。不允许提供接口中任何成员的实现方式,只声明没有实现。 b.不能有构造函数,接口中的成员不能有访问修饰符,因为接口本来就是公共的(public), c.只要一个类继承了接口,它就得为接口中的所有方法提供实现2.隐藏方法 如果签名相同的方法在基类和派生类中都进行了声明,但该方法没有分别声明为virtual 和 override,派生类方法就会隐藏基类方法。在大多数清况下是要重写方法,而不是隐藏方法,因为隐藏方法会造成... 阅读全文

posted @ 2013-03-20 22:50 Gcam 阅读(144) 评论(0) 推荐(0)

C# 高级编程(笔记1)
摘要:第三章1.方法重载不能仅根据方法的返回值类型来区分, 即:参数个数和参数类型都相同,只是函数的返回值不同,是不能作为函数的重载的2.结构的构造函数 为结构定义构造函数的方式与为类定义构造函数的方式相同,但不允许定义无参数的构造函数,因为编译器总是为其提供一个无参数的默认构造函数,它是不允许替换的。 结构中字段的初始值不能绕过默认构造函数,也就是必须在构造函数中完成初始化,且不能是无参构造函数 结构是值类型,不支持继承,结构中的new运算符与类和其他引用类型的工作方式不同。new运算符 并不分配堆中的内存,而是只调用相应的构造函数,根据传送给它的参数来初始化所有的字段。stFuct Dimens 阅读全文

posted @ 2013-03-19 21:57 Gcam 阅读(162) 评论(0) 推荐(0)

Web(7)----补充
摘要:小结:1. HTTP协议是无状态的http协议是无状态的,同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。2. HTTP消息的结构 A.Request消息的结构, Request消息分为3部分,第一部分叫Request line, 第二部分叫Request header, 第三部分是body. 注意:header和body之间有个空行 B.Response消息的结构,和Request消息的结构基本一样。同样也分为三部分,第一部分叫Response line, 第二部分叫Response header,第三部分是body. 注意:hea 阅读全文

posted @ 2013-03-09 23:40 Gcam 阅读(128) 评论(0) 推荐(0)

可空值类型[Nullable value type]
摘要:小结:可空值类型[Nullable value type]1. 一个值类型的变量永远不可能为null,它总是包含值类型的值本身。但某些情况下,这会带来问题。例如,设计一个数据库时,可以将一个列的数据类型定义成一个32位整数,并映射到FCL的Int32数据类型。但是,数据库中的一个列是允许值为空的,使用.Net Framework来处理数据库数据可能变得相当困难,因为CLR中没有办法将一个Int32值表示成null。为了解决这个问题,Microsoft在CLR中添加了可空值类型(nullable value type)【System.Nullable< T >】的概念。CLR中的定义 阅读全文

posted @ 2013-03-08 22:59 Gcam 阅读(435) 评论(0) 推荐(0)

关于GC
摘要:小结:1. 每个应用程序都有一组根(Root),一个根是一个存储位置,其中包含着一个指向引用类型对象的内存指针。该指针或者指向一个托管堆中的对象,或者被设为null。如:静态字段被认为是根,方法参数或局部变量也被认为是一个根,对于变量,仅当变量是引用类型时才被认为是根,值类型的变量永远不被认为是根。2. 垃圾收集当垃圾收集器开始工作时,它会首先假设托管堆中的所有对象都是可收集的垃圾。也就是说,垃圾收集器假设线程堆栈中没有一个变量引用堆中的对象,没有CPU寄存器引用堆中的对象,而且也没有静态字段引用堆中的对象。A. 垃圾收集的第一步(标记阶段)垃圾收集器遍历线程堆栈,检查所有的根,如果发现根引用 阅读全文

posted @ 2013-03-03 20:08 Gcam 阅读(278) 评论(0) 推荐(0)

关于接口与抽象类
摘要:小结:1. 接口只有方法名,没有方法体,由继承自它的类提供所有方法的实现,C#中规定类只能单继承,但可以通过接口来实现多继承,即一个类可以继承多个不同的接口2. 定义一个接口a. 不能定义构造函数b. 不能定义实例成员c. 不能定义静态成员3. 调用接口方法如:public sealed class String : IComparable, ICloneable, IConvertible, IComparable<string>, IEnumerable<char>, IEnumerable, IEquatable<string>String继承了多个接 阅读全文

posted @ 2013-03-03 10:12 Gcam 阅读(172) 评论(0) 推荐(0)

泛型与委托
摘要:小结:一、泛型【代码重用/算法重用】1.优点:a.源代码保护:使用泛型算法时不需要访问算法的源代码b.类型安全性c.更加清晰的代码d.更好的性能:CLR不再需要执行任何装箱、拆箱操作2.常用的泛型集合类/泛型容器a.List<T>b.Dictionary<TKey,TValue>c.Stack<T>d.Queue<T>3.代码爆炸使用泛型类型参数的一个方法在进行JIT编译时,CLR获取方法的IL,替换指定的类型参数,然后针对那个方法在指定数据类型上的操作创建特有的本地代码。这是泛型的主要特性之一,然而,这样做有一个缺点:CLR要为每种不同的方法/ 阅读全文

posted @ 2013-03-02 10:17 Gcam 阅读(336) 评论(0) 推荐(0)

导航