随笔分类 -  C/C++/C#

摘要:.NET的垃圾回收器是用一种叫代的原理,假设以下三种情况成立,则提出了代的概念。越是新的对象,他的生存周期就越短越是老得对象,它的生存周期就越长回收一部分堆对象比回收全部堆对象性能高第一步:当声明A-E 五个对象,它们在堆栈的分配情况(垃圾回收机制没有扫描之前),稍后,C和E对象变的不可达第二步:当CLR初始化时,它为第零代分配了256K的空间(可能不同),代越高分配的内存越多。假设A-E分配了占用完了256k的内存,当F对象又被声明时,回收器就会进行第零代回收,C和E被回收,A,B,D被提升到一代。第三步:F-K对象被分配到第零代,稍后,B,H和J变的不可达。如图,第四步:但是垃圾回收器会检 阅读全文
posted @ 2011-12-20 17:10 kntao 阅读(502) 评论(0) 推荐(0) 编辑
摘要:一、弱引用: 我们设计全局缓存时,使用静态或全局字段来引用某个对象,做到一次创建多次使用。比如: class Program { private static DataCache _cache; public static DataCache Cache { get { if(_cache == null) _cache = new DataCache(); return _cac... 阅读全文
posted @ 2011-12-20 15:46 kntao 阅读(340) 评论(0) 推荐(0) 编辑
摘要:var statusesToFind = new List<int> {1, 2, 3, 4}; var foos = from foo in myEntities.Foos where statusesToFind.Contains(foo.Status) select foo; 阅读全文
posted @ 2011-10-31 16:35 kntao 阅读(742) 评论(0) 推荐(0) 编辑
摘要:我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashTable类。我们经常用HashTable 来存储将要写入到数据库或者返回的信息,在这之间要不断的进行类型的转化,增加了系统装箱和拆箱的负担,如果我们操纵的数据类型相对确定的化用Dictionary<TKey,TValue> 集合类来存储数据就方便多了,例如我们需要在电子商务网站中存储用户的购物车信息(商品名,对应的商品个数)时,完全可以用 Dictionary<string, int> 来存储购物车信息,而不需要任何的类型转化。1.数组是固定大小的,不能伸缩。虽然System.Array.Resiz 阅读全文
posted @ 2011-01-20 14:10 kntao 阅读(306) 评论(0) 推荐(0) 编辑
摘要:这个引起我的思考:public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source,Func<TSource, bool> predicate)这个this 参数怎样去解释?Func<TSource, bool>这个怎样解释?所以看了一下,this是C#3.0新特性之扩展方法。Func<T, TResult> 委托,封装一个具有一个参数并返回 TResult 参数指定的类型值的方法public delegate TResul 阅读全文
posted @ 2010-07-12 15:56 kntao 阅读(190) 评论(0) 推荐(0) 编辑
摘要:virtual和非virtual关键是在运行时候,而不是在编译时候.1.如果非Virtual,编译器就使用声明的类对应的类型,也就是说,不是virtual的,在编译时候,就定了,比如例子:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplicationTest{ class Program { static void Main(string[] args) { Father a = new Father(); a.s1 = "fa 阅读全文
posted @ 2010-06-04 11:14 kntao 阅读(232) 评论(0) 推荐(0) 编辑
摘要:c#内存管理 尽管在.net framework中我们不太需要关注内存管理和垃圾回收这方面的问题,但是出于提高我们应用程序性能的目的,在我们的脑子里还是需要有这方面的意识。明白内存管理的基本行为将有助于我们解释我们程序中变量是如何操作的。在本文中我将讨论栈和堆的一些基本知识,变量的类型和某些变量的工作原理。当你在执行程序的时候内存中有两个地方用于存储程序变量。如果你还不知道,那么就来看看堆和栈的概念。堆和栈都是用于帮助我们程序运行的,包含某些特殊信息的操作系统内存模块。那么堆和栈有什么不同呢?堆VS栈的区别栈主要用于存储代码,自动变量等信息;而堆则主要用于存储运行期生成的对象等信息。将栈看作是 阅读全文
posted @ 2010-03-23 14:49 kntao 阅读(243) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示