随笔分类 -  1.基础知识

摘要:逆变(contravariant)与协变(covariant)是C#4新增的概念,许多书籍和博客都有讲解,我觉得都没有把它们讲清楚,搞明白了它们,可以更准确地去定义泛型委托和接口,这里我尝试画图详细解析逆变与协变。变的概念我们都知道.Net里或者说在OO的世界里,可以安全地把子类的引用赋给父类引用,... 阅读全文
posted @ 2015-11-05 09:01 awp110 阅读(283) 评论(0) 推荐(0)
摘要:参考资料:http://blog.csdn.net/afgasdg/article/details/6889383http://www.cnblogs.com/skyivben/archive/2010/04/18/1714933.htmlhttp://www.cnblogs.com/sutengc... 阅读全文
posted @ 2015-10-27 08:41 awp110 阅读(351) 评论(0) 推荐(0)
摘要:类和对象的区别? 类是对象的抽象,对象是类的具体实例。 类是抽象的,不占用内存,而对象是具体的,占有内存空间。 例如:类就是水果,对象就是苹果。 为什么要使用IOC? 浏览器HTTP缓存原理分析? WCF、WebAPI、WCFREST、WebService之间的区别? 变量和属性? 变量是对类本身而 阅读全文
posted @ 2015-10-25 17:39 awp110 阅读(249) 评论(0) 推荐(0)
摘要:概念Autofac是一个轻量级的依赖注入的框架,同类型的框架还有Spring.NET,Unity,Castle等;ContainerBuilder:将组件注册成服务的创建者。组件:Lambda表达式/一个类型/一个预编译的实例/实例类型所在的程序集container 容器:通过 ContainerB... 阅读全文
posted @ 2015-10-23 22:33 awp110 阅读(225) 评论(0) 推荐(0)
摘要:引用类型构造器如果我们没有定义实例构造器,那么编译器会为我们默认产生一个无参构造器。实例对象初始化过程为实例分配内存;初始化附加成员,包括方法表指针和SyncBlockIndex变量(我们已经在调用顺序如果类没有显示定义构造器,编译器会自动生成一个无参构造器,调用基类的无参构造器。例如public ... 阅读全文
posted @ 2015-09-10 16:07 awp110 阅读(237) 评论(0) 推荐(0)
摘要:CLR保证一个类型构造器在每个AppDomain中只执行一次,而且这种执行是线程安全的。作用:就是初始化静态成员比如有几个静态成员需要初始化那你把初始化代码放到哪呢?放到普通构造函数里,那肯定不行。因为静态成员没有创建实例就要可用。专门建一个static public方法来初始化?这样用起来非常不方... 阅读全文
posted @ 2015-09-10 08:50 awp110 阅读(201) 评论(0) 推荐(0)
摘要:第I部分 CLR基础第1章 CLR的执行模型 31.1 将源代码编译成托管模块 31.2 将托管模块合并成程序集 61.3 加载公共语言运行时 81.4 执行程序集的代码 101.4.1 IL和验证 151.4.2 不安全的代码 161.5 本地代码生成器:NGen.exe 181.6 Framew 阅读全文
posted @ 2015-09-07 09:14 awp110 阅读(218) 评论(0) 推荐(0)
摘要:作为.NET进阶内容的一部分,垃圾回收器(简称GC)是必须了解的内容。本着“通俗易懂”的原则,本文将解释CLR中垃圾回收器的工作原理。基础知识托管堆(Managed Heap)先来看MSDN的解释:初始化新进程时,运行时会为进程保留一个连续的地址空间区域。这个保留的地址空间被称为托管堆。"托管堆也是... 阅读全文
posted @ 2015-08-21 08:51 awp110 阅读(237) 评论(0) 推荐(0)
摘要:强命名程序集 如果一个程序集有一个唯一的标记,那么这个程序集就可以叫做强命名程序集。在.NET框架中是通过公钥/私钥加密来产生这个唯一标记的。一个强命名程序集包含四个唯一标志程序集的特性:文件名(没有扩展名),版本号,语言文化信息(如果有的话),公有秘钥。 这些信息存储在程序集的清单(manifes... 阅读全文
posted @ 2015-08-17 08:26 awp110 阅读(453) 评论(0) 推荐(0)
摘要:如何创建强命名程序集(StrongNameAssembly)创建一个强命名程序集首先需要获得一个用强命名实用工具(StrongNameUtility,即SN.exe,.NETSDK自带)产生的密钥。下面简要介绍一下SN.exe的一些用法。要产生一个公钥/私钥对:a)SN–kMyCompany.Key... 阅读全文
posted @ 2015-08-15 16:18 awp110 阅读(263) 评论(0) 推荐(0)
摘要:关于Strong Name的主题,网上已经有很多这方面的介绍,你可能最熟悉的印象就是这样大部分的情况,这样就可以了。如果代码是机密的,还可能用到Delay sign only,这就复杂一些,请查找相关资料。如果就这么做了,代码中没有什么处理,可能你的程序还不够安全,因为有个Strong Name R... 阅读全文
posted @ 2015-08-15 13:12 awp110 阅读(223) 评论(0) 推荐(0)
摘要:CLR支持两种程序集:强命名程序集、弱命名程序集,两者的区别在于,强命名程序集是被发布者使用了自己的公钥/私钥对进行了程序集的签名,能唯一性标识程序集的发布者的程序集,并且可以使用密钥对程序集进行唯一性标识、保护和版本控制,这里所提到的保护就是我们需要一起讨论的程序集防篡改。 首先我们一起来看个例... 阅读全文
posted @ 2015-08-15 13:09 awp110 阅读(360) 评论(0) 推荐(0)
摘要:1.什么是CLR CLR(Common Language Runtime)公共语言远行时,是一个可由多种编程语言使用的“远行时”。CLR的核心功能(比如内存管理、程序集加载、安全性、异常处理和线程同步)可由面向CLR的所有语言使用。CLR不关心开发人员使用哪种语言进行编程,只要编译器面向CLR就可... 阅读全文
posted @ 2015-08-13 10:48 awp110 阅读(271) 评论(0) 推荐(0)
摘要:几种常用排序算法温习一、 简单排序方法1.直接插入排序基本思想:顺序地将待排序的记录按其关键码的大小插入到已排序的记录子序列的适当位置。算法代码: //直接插入排序 public static void InsertSort(SeqList seq) { ... 阅读全文
posted @ 2015-08-12 15:21 awp110 阅读(176) 评论(0) 推荐(0)
摘要:在" .NET的堆和栈01,基本概念、值类型内存分配"中,了解了"堆"和"栈"的基本概念,以及值类型的内存分配。我们知道:当执行一个方法的时候,值类型实例会在"栈"上分配内存,而引用类型实例会在"堆"上分配内存,当方法执行完毕,"栈"上的实例由操作系统自动释放,"堆"上的实例由.NET Framew... 阅读全文
posted @ 2015-08-12 14:13 awp110 阅读(188) 评论(0) 推荐(0)
摘要:释放未托管的资源有两种方法1、析构函数2、实现System.IDisposable接口一、析构函数 构造函数可以指定必须在创建类的实例时进行的某些操作,在垃圾收集器删除对象时,也可以调用析构函数。析构函数初看起来似乎是放置释放未托管资源、执行一般清理操作的代码的最佳地方。但是,事情并不是如此简单。由... 阅读全文
posted @ 2015-08-12 14:07 awp110 阅读(213) 评论(0) 推荐(0)
摘要:为了防止不提供原网址的转载,特在这里加上原文链接:http://www.cnblogs.com/zhangkai2237/archive/2013/03/21/2974570.html 上一节我们讨论的是值类型和引用类型, 我们知道值类型是一种轻量级的数据结构, 对于一些简单的类型定义为值类型... 阅读全文
posted @ 2015-08-11 11:05 awp110 阅读(185) 评论(0) 推荐(0)
摘要:什么是CLR? 什么是托管模块? 托管模块由什么组成? 。net代码的执行过程 http://www.cnblogs.com/aaa6818162/p/4726581.html http://www.cnblogs.com/kingmoon/archive/2012/07/16/2594459.ht 阅读全文
posted @ 2015-08-10 08:33 awp110 阅读(227) 评论(0) 推荐(0)
摘要:async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了。但是这也给我们编程埋下了一些隐患,有时候可能会产生一些我们自己都不知道怎么产生的Bug,特别是如果连线程基础没有理解的情况下,更不... 阅读全文
posted @ 2015-07-29 10:51 awp110 阅读(153) 评论(0) 推荐(0)
摘要:前言 1、天真热,程序员活着不易,星期天,也要顶着火辣辣的太阳,总结这些东西。 2、夸夸lambda吧:简化了匿名委托的使用,让你让代码更加简洁,优雅。据说它是微软自c#1.0后新增的最重要的功能之一。lambda简介 lambda运算符:所有的lambda表达式都是用新的lambda... 阅读全文
posted @ 2015-07-26 09:31 awp110 阅读(189) 评论(0) 推荐(0)