跟小静读CLR via C#(18)——Enum
1. Enum定义 枚举类型是经常用的一种“名称/值”的形式,例如: public enum FeedbackStatus { New, Processing, Verify, Closed }定义枚举类型之后我们在使用时方便了许多,不用再记着0代表什么状态,1代表什么状态。而且枚举类型时强类型的,...
跟小静读CLR via C#(17)--接口
CLR不允许继承多个基类,但是可以继承多个接口。凡是能使用具名接口类型的实例的地方,都能使用实现了接口的一个类型的实例。 接口是对一组方法签名进行了统一命名,但不提供任何实现,而具体类则必须为继承的全部接口提供实现。 1. 定义接口 接口是用interface关键字定义对一组方法签名,接口名称一般以...
多线程之旅——从概念开始
对概念的理解是我们做任何事情的基础,因此我们从概念开始吧程序执行顺序是按照串行执行的假设:比如我们读诗词,默认从上到下1.床 前 明 月 光, 2.疑 是 地 上 霜。 3.举 头 望 明 月, 4.低 头 思 故 乡。而多线程以后,就很有可能变成3.举 头 望 明 月,1.床 前 明 月 光, 1...
Thread 编程:简明(1) - 协作式取消 VS 线程终止
之前,我就开始关注Thread的知识。看过计算限制异步操作、I/O限制异步操作、Task、Parallel、APM、AsyncEnumerator…也做了相应的笔记。可是,具体Coding起来,还是会感到举步艰难。Why?复杂的知识让我复杂的想问题。上午,看了Jimmy Zhang的如何在30岁前年...
Finalization / Freachable queue in .Net
When an application instantiates a newobject, if the object'stypedefines a Finalize method, a pointer to the object is placed on the finalization ...
给C#学习者的建议 - CLR Via C# 读后感
CLR Via C# 是一本经典的讲述CLR的教材,一直想好好读读,却一直没有去读。去年年末,终于下决心,买了一本纸质的CLR Via C#,元旦这几天在家里闭门读书(3天元旦 + 2天自己的带薪假期)。 其实,早就在网络上下载过了电子版的英语的CLR Via C#了,不过,电子书的问题也很明显,由...
探秘.Net 4.0的StringBuilder实现
引言 .Net 4.0重构了StringBuilder的实现,采用了新的数据存储方式,不仅在效率上有大的提高,并且彻底避免了中间处理过程出现临时String对象进入LOH大对象堆的情况。本文对此进行分析。 回顾.Net 2.0的StringBuilder实现 Reflector查看StringBui...
跟小静读CLR via C#(16)--泛型
泛型就像是一个模板,常常定义一些通用的算法,具体调用时再替换成实际的数据类型,提高了代码的可重用性。 一、初识泛型1. 简单实例以最常用的FCL中的泛型List<T >为例: static void Main(string[] args) { List<int> num = ...
异步编程相关的APM、Lambda、CCR、AsyncEnumerator(CLR)
传统异步编程操作.NET平台的异步编程方式是APM(Asynchronous Programing Model,异步编程模式)。就是常见的BeginOperation和EndOperation二段式调用,并使用回调函数(AsyncCallback)和异步状态(IAsyncResult)。简单例子:F...
I/O限制异步操作-Windows是如何执行I/O操作(CLR)
(copy from 《CLR via C#》Chapter 27)如图所示,用FileStream访问磁盘文件,然后用FileStream's Read方法从该File读取Data。当调用FileStream's Read方法时,当期线程将托管Code转换为本地/用户代码,调用Wi...
计算限制异步操作的其他知识-Parallel、PLinQ、Timer(CLR)
笔记大概闲谈Parallel类Parallel与LINQTimer类闲谈前不久,把CLR via C#的Chapter 26 Computer-Bound Asynchronous Operations内容看完了,接着往下看I/O-Bound Asynchronous Operations,到了Je...
WCF自定义地址路由映射(不用svc文件)
一般在创建WCF服务时会用Serivce.svc文件访问,地址如:http://localhost/applicationname/Serivce.svc/Name现在用路由映射成:http://localhost/applicationname/MyService/Name 方法如下:首先在Glo...
Thread编程:Task(CLR)
简要杂谈TaskTask的简单例子取消TaskTask自动运行子Task深入TaskTask工厂Task Schedulers杂谈Task在上篇中用了ThreadPool’s QueueUserWorkItem方法很简单的实现了.NET的多线程编程。但,用线程池是用限制的:线程池不会告诉你的方法是否...
《CLR Via C# 第3版》笔记之(二十二) - APM和EAP
APM的介绍请参见《CLR Via C# 第3版》笔记之(二十一) - 异步编程模型(APM)。EAP是Event-based Asynchronous Pattern的缩写,指基于事件的异步模式。主要内容:EAP和APM的比较APM转换为TaskEAP转换为Task1. EAP和APM的比较EAP...
《CLR Via C# 第3版》笔记之(二十一) - 异步编程模型(APM)
APM是.NET中异步编程模型的缩写(Asynchronous Programing Model)。通过异步编程,使得我们的程序可以更加高效的利用系统资源。主要内容:一个APM的例子GUI中的APMAPM的优劣点AMP使用中的注意事项1. 一个APM的例子.Net中的异步模型非常完善,只要看到Beg...
Thread基础-计算限制的异步操作(CLR)
本章笔记内容:闲话CLR线程池基础;执行简单的计算限制操作;执行上下文;协作式取消;闲话该笔记记录的是Jiffrey Richter《CLR via C#》 3rd Edition的chapter 26 Compute-Bound Asynchronous Operations的前四节内容。Jiff...
跟小静读CLR via C#(15)--String,熟悉而又陌生
好久没写文章了,再拿起这本书,学习加分享,乐趣无穷啊。这两天看了写关于字符串的知识,从学写代码的时候开始,我们就基本天天跟String打交道,对它再熟悉不过了。但是仔细看看,还是有一种拨开云雾的感觉,对平日里的一些问题顿然明白了。 一、 string实例化 1. 创建string对象 string ...
使用强命名程序集防范篡改
CLR支持两种程序集:强命名程序集、弱命名程序集,两者的区别在于,强命名程序集是被发布者使用了自己的公钥/私钥对进行了程序集的签名,能唯一性标识程序集的发布者的程序集,并且可以使用密钥对程序集进行唯一性标识、保护和版本控制,这里所提到的保护就是我们需要一起讨论的程序集防篡改...
不用IDE写C#的Hello World
用 Visual Studio等IDE写C#的Hello World非常简单,但脱离了IDE你能不能打印出Hello World呢?这不是说工作时脱离IDE,而是学习一下CLR的执行模型....
《CLR Via C# 第3版》笔记之(二十) - 计时器及伪共享
计时器在很多应用场景中广泛应用,System.Threading命名空间下,有个Timer类可以完成计时器的操作。下面来讨论下Timer类的使用及多个CPU内核同时运行线程时如何共享高速缓存(cache)的。主要内容:计时器的使用CPU高速缓存的伪共享1. 计时器的使用1.1 计时器的创建及改变设置...