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

2010年10月7日

摘要: 1、简介能够动态执行 C# 代码是一件很酷的功能,比如,我们可以在控制台中输入一行 C# 代码,然后程序自动编译并执行这一行代码,将结果显示给我们。这差不多就是一个最简单的 C# 代码解释器了。动态执行 C# 代码又是一件很有用的功能,比如,我们可以将某些代码写在某个文件之中,由程序集在执行时进行加载,改变这些代码不用中止程序,当程序再次加载这些代码时,就自动执行的是新代码了。下面,我将在写一个简... 阅读全文

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

摘要: CLR探索系列:System.Object内存布局模型及实现研究 只有深究最本质的东西,才能把握最本质的东西。有很多朋友都分析过System.Object作为Dotnet Framework里面的一个基类,她的特性、方法特点及其相关的概念,这篇博文里面,我就从System.Object这个基类的定义以及底层实现的角度,探索这个基类对象在内存里面的布局模型,探索这个基类最本质的面目。首先,从一个Ty... 阅读全文

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

摘要: c/c++结构体对齐小结(2010-08-31 18:45:58) 转载标签: it分类: 学习转载 一许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数(alignment modulus)。当一种类型S的对齐模数与另一种类型T的对齐模数的比值是大于1的整数,我们... 阅读全文

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

摘要: c/c++结构体对齐小结(2010-08-31 18:45:58) 转载标签: it分类: 学习转载 一许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数(alignment modulus)。当一种类型S的对齐模数与另一种类型T的对齐模数的比值是大于1的整数,我们... 阅读全文

posted @ 2010-10-07 10:26 qianyz 阅读(376) 评论(0) 推荐(0) 编辑

摘要: .net托管环境下struct实例字段的内存布局(Layout)和大小(Size) 在C/C++中,struct类型中的成员的一旦声明,则实例中成员在内存中的布局(Layout)顺序就定下来了,即与成员声明的顺序相同,并且在默认情况下总是按照结构中占用空间最大的成员进行对齐(Align);当然我们也可以通过设置或编码来设置内存对齐的方式,有关C/C++中(设置)内存对齐的讨论,可以参考我以前写的... 阅读全文

posted @ 2010-10-07 10:23 qianyz 阅读(228) 评论(0) 推荐(0) 编辑

摘要: 在.NET的所有技术中,最具争议的恐怕是垃圾收集(Garbage Collection,GC)了。作为.NET框架中一个重要的部分,托管堆和垃圾收集机制对我们中的大部分人来说是陌生的概念。在这篇文章中将要讨论托管堆,和你将从中得到怎样的好处。 为什么要托管堆? .NET框架包含一个托管堆,所有的.NET语言在分配引用类型对象时都要使用它。像值类型这样的轻量级对象始终分配在栈中,但是所有的类实例和数... 阅读全文

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

摘要: 摘自:维生素C.NET[前言:].Net平台提供了许多新功能,这些功能能够帮助程序员生产出更高效和稳定的代码。其中之一就是垃圾回收器(GC)。这篇文章将深入探讨这一功能,了解它是如何工作的以及如何编写代码来更好地使用这一.Net平台提供的功能。  .Net中的内存回收机制  垃圾回收器是用来管理应用程序的内存分配和释放的。在垃圾回收器出现以前,程序员在使用内存时需要向系统申请内存空间。有些语言,例... 阅读全文

posted @ 2010-10-07 10:14 qianyz 阅读(162) 评论(0) 推荐(0) 编辑

摘要: 摘自:莫问奴归处最近由于在准备Collection对象培训的PPT,因为涉及到SyncRoot的属性的讲解,所以对怎样在多线程应用程序中同步资源访问做了个总结:对于引用类型和非线程安全的资源的同步处理,有四种相关处理:lock关键字,监视器(Monitor),同步事件和等待句柄,mutex类。 Lock关键字 本人愚钝,在以前编程中遇到lock的问题总是使用lock(this)一锁了之,出问题后翻... 阅读全文

posted @ 2010-10-07 10:12 qianyz 阅读(197) 评论(0) 推荐(0) 编辑

摘要: 在进行 Internet 或基于 Windows 的开发方面,您遇到过问题或难题吗?这时,您可以求助于 GUI 博士 (drgui@microsoft.com);GUI 博士每个月会两次做客 MSDN,在线回答您的问题。虽然博士忙碌的工作安排使他无法回复所有的问题,但他会尽可能地在这里回答更多的问题。如果恰好选中了您的问题,那么博士会送您一件 GUI 博士 T 恤衫!摘要:GUI 博士解释了如何避... 阅读全文

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

摘要: 最近一直对.net framework中,虚方法的调用是如何实现这个问题有些疑惑,在看了Essential .Net关于Method的那一章和Artech推荐的文章Drill Into .NET Framework Internals to See How the CLR Creates Runtime Objects以后,还是一知半解,有些疑惑得不到答案。主要有这些: 父类定义的非虚方法是否在子... 阅读全文

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

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

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

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

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

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

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

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

posted @ 2010-10-07 09:25 qianyz 阅读(169) 评论(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 阅读(167) 评论(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 阅读(353) 评论(0) 推荐(0) 编辑

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

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

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

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