博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 ··· 9 10 11 12 13 14 下一页

2010年10月7日

摘要: 无论你所使用的是哪种编程语言,我们都不得不承认这样一个共识:string是我们使用最为频繁的一种对象。但是string的常用性并不意味着它的简单性,而且我认为,正是由于string的频繁使用才会促使其设计人员在string的设计上花大量的功夫。所以正是这种你天天见面的string,蕴含了很多精妙的设计思想。一个月以前我写了一篇讨论字符串的驻留(string interning)的文章,我今天将会以... 阅读全文

posted @ 2010-10-07 09:48 qianyz 阅读(262) 评论(0) 推荐(0) 编辑

摘要: 关于字符串的驻留的机制,对于那些了解它的人肯定会认为很简单,但是我相信会有很大一部分人对它存在迷惑。在开始关于字符串的驻留之前,先给出一个有趣的Sample:Code Snip:staticvoidMain(string[]args){stringstr1="ABCD1234";stringstr2="ABCD1234";stringstr3="ABCD";stringstr4="1234";st... 阅读全文

posted @ 2010-10-07 09:44 qianyz 阅读(188) 评论(0) 推荐(0) 编辑

摘要: ©2007 Anytao.com ,原创作品,转贴请注明作者和出处。本文将介绍以下内容: 类型的基本概念 值类型深入 引用类型深入 值类型与引用类型的比较及应用 [下载]:[类型示例代码]1.引言值类型与引用类型的话题经过了两个回合([第八回:品味类型---值类型与引用类型(上)-内存有理]和[第九回:品味类型---值类型与引用类型(中)-规则无边])的讨论和切磋,我们就基本的理解层面来... 阅读全文

posted @ 2010-10-07 09:32 qianyz 阅读(118) 评论(0) 推荐(0) 编辑

摘要: 1.引言买了新本本,忙了好几天系统,终于开始了对值类型和引用类型做个全面的讲述了,本系列开篇之时就是因为想写这个主题,才有了写个系列的想法。所以对值类型和引用类型的分析,是我最想成文的一篇,其原因是过去的学习过程中我就是从这个主题开始,喜欢以IL语言来分析执行,也喜好从底层的过程来深入了解。这对我来说,似乎是一件找到了有效提高的方法,所以想写的冲动就没有停过,旨在以有效的方式来分享所得。同时,我也... 阅读全文

posted @ 2010-10-07 09:25 qianyz 阅读(171) 评论(0) 推荐(0) 编辑

摘要: 1. 值类型实例的创建位置: 对于值类型的实例,CLR在运行时有两种分配方式:(1) 如果该值类型的实例作为类型中的方法(Method)中的局部变量,则该实例被创建在线程栈上;(2) 如果该值类型的实例作为类型的成员,则该实例作为引用类型(引用类型在GC堆或者LOH上创建)的实例的一部分,被创建在GC堆上。下面这段代码演示了这两种情况:publicclassTest1...{privateinti;//上面(2)中的情况,生成Test的实例的同时,int类型的实例i被创建在GC堆上publicTest1()...{byteb=0;//(1)中的情况,byte类型的实例b被创建在执行这段代码的线 阅读全文

posted @ 2010-10-07 09:20 qianyz 阅读(169) 评论(0) 推荐(0) 编辑

摘要: 4、System. Exception及其它FCL中的异常类 4.1 System.Exception 类型 CLR允许我们将任何类型——Int32、String等——的一个实例作为异常抛出。但实际上,微软定义了System.Exception类型,并规定所有和CLS兼容的编程语言都必须能够抛出并捕获那些继承自System.Exception的异常类... 阅读全文

posted @ 2010-10-07 09:15 qianyz 阅读(357) 评论(0) 推荐(0) 编辑

摘要: 以前曾看见过这样一个问题:托管代码会不会导致内存泄漏。自己对GC的了解也不是很深,但还是比较赞成这样的观点:托管代码不会产生内存泄漏,除非你没有正确释放非托管资源。今天看到一个非常有趣的例子,关于没有释放事件的Handler导致的内存泄漏。以前对于释放Handler的观念是一点也没有,这主要因为没此方面的意识,没有养成好的习惯。只知道当关心这个事件的时候就注册一下, 暂时不关心了就移除掉。却从来没... 阅读全文

posted @ 2010-10-07 08:58 qianyz 阅读(492) 评论(0) 推荐(0) 编辑

摘要: 让我们来看看同步异步的区别:同步方法调用在程序继续执行之前需要等待同步方法执行完毕返回结果异步方法则在被调用之后立即返回以便程序在被调用方法完成其任务的同时执行其它操作.NET框架基类库中有好几种类都可以提供同步和异步的方法调用。因为同步方法调用会导致程序流程中途等待,所以采用同步方法的情况下往往会导致程序执行的延迟相比来说,在某些条件下选择异步方法调用就可能更好一些例如,有的时候程序需要给多个W... 阅读全文

posted @ 2010-10-07 08:43 qianyz 阅读(1197) 评论(0) 推荐(0) 编辑

2010年10月3日

摘要: MSDN上介绍Monitor时很模糊的,在Enter(obj) 的时候如果能够锁定就进入临界区,否则有其他线程已经锁定的话只能等待,那只有放入等待队列了,拥有锁的线程在使用完后Exit(obj),他不会通知处于等待队列中的线程进入就绪队列,但是看下面 的代码:class MonitorSample{ public static object obj = new object(); public static void P1() {Monitor.Enter(obj) { for (int i = 0; i < 2; ++i) { i++; i--; }Monitor.Exit(obj); 阅读全文

posted @ 2010-10-03 16:13 qianyz 阅读(634) 评论(2) 推荐(0) 编辑

2010年10月1日

摘要: .NET的Monitor的锁定对象的细节是: 0 在运行程序时,CLR都会为同步锁而创建一个锁链表。 1 创建一个对象的时候,会在实例上分配4B的内存作为同步对象锁的一个指针syn,初始化的时候都为负值 2 当有锁定的对象的时候,CLR自动创建一个对象,然后添加到锁链表中,然后返回地址给syn,即syn指向了 链表中的某个对象,这个时候表示该对象被锁定 3 当解除锁定该对象的时候,删除该对象的s... 阅读全文

posted @ 2010-10-01 18:02 qianyz 阅读(363) 评论(0) 推荐(1) 编辑

上一页 1 ··· 9 10 11 12 13 14 下一页