初识CLR】的更多相关文章

眨眼间我已经实习了半年时间并且转正了,身份也正式从一个学生转变为一个职场人,这个博客自从开始实习以来就一直没有更新过= =没错,就是我懒癌晚期,不过不行!一切都要开始走向正轨,此博会继续见证我的成长,从现在开始吧! 最近刚开始看CLR via C#这本神作,本来以为自己会看不懂,之前我对这本书一直是“远观不可亵玩”的态度,当真正看了之后才发现许多事木有有你想象的那么难嘛~好,开始正文. CLR,又叫通用语言运行时,又叫Common Language Runtime,你可以把他看作是一个虚拟机.来…
一.什么是CLR? CLR即公共语言运行时(Common Language Runtime,简称CRL),就是微软为.net产品构建的运行环境,与java的JVM类似,通俗的讲就是.net虚拟机.CLR上实际运行的并不是我们通常所用的编程语言(例如C#.VB等),而是一种字节码形态的“中间语言”.这意味着只要能将代码编译成这种特定的“中间语言”(MSIL),任何语言的产品都能运行在CLR上.CLR通常被运行在Windows系统上,但是也有一些非Windows的版本.这意味着.Net也很容易实现“…
初识python 一.python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOBE排行榜,Python赶超PHP占据第五!!! 图 由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!!! Python可以应用于众多领域,如:数据分析.组件集成.网络服务.图像处理.数值计算和科学计算…
Python开发[第二篇]:初识Python   Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOBE排行榜,Python赶超PHP占据第五!!! 由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!!! Python可以应用于众多领域,如:数据分析.组…
泛型就像是一个模板,常常定义一些通用的算法,具体调用时再替换成实际的数据类型,提高了代码的可重用性. 一.初识泛型 1. 简单实例 以最常用的FCL中的泛型List<T >为例: static void Main(string[] args)       {           List<int> num = new List<int>();           num.Add(1);           num.Add(3);           int num1 =…
我们都知道,值类型是不能为Null的,但是在实际应用中有些情形却需要将值类型置为null.因此,CLR中引用了可空值类型的用法.今天的文章中见到最多的符号估计就是?了吧. ?——初识可空值类型 1.    我们首先看一下可空值类型的声明方法.普通的非空值类型为null时会发生如下的提示: 但是只要在类型后面缀上个“?”,一切都解决了.此时变量的取值范围在原来基础上添加了一个null. 2.    实际上int? 对应着Nullable<Int32>类型.我们可以查看一下它的IL代码 3.   …
第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 Framework类库 201.7 通用类型系统 221.8 公共语言规范 241.9 与非托管代码的互操作性 28第2章 生成.打包.部署和管理应用程序及类型 292.1 .NET Framework部署目标…
    回调函数是一种非常有用的编程机制,它已经存在很多年了.Microsoft .NET Framework通过委托(delegate)来提供一种回调机制.不同于其他平台(比如非托管C++)的回调机制,委托提供了多得多的功能.例如,委托确保回调方法是类型安全的(这是CLR最重要的目标之一).委托还允许顺序调用多个方法,并支持调用静态方法和实例方法.   一.初识委托     为了理解委托,先看看如何使用它.     委托4个最基本的步骤:     1)定义委托类型     2)有一个方法包含要…
最近在做新产品,这个产品需要满足不同项目对于系统的定制性数据处理需求,比如有的要统计一段时间内某开关打开关闭了多少次,有的要统计一段时间内空调的使用率,有的希望根据温度来控制空调的开还是关,有的则是希望根据教室内人员的多少来控制教室灯管的开关,或者根据季节来决定路灯的开关时间.总之规则很灵活,不同的项目有不同的需求,很难事先在系统中预先事先. 通过分析这些需求发现,其实他们有一些共同的输入输出,只是规则各不相同,这时我的第一反应就是脚本化,把一些常用的基础功能做成api,然后根据不同项目的需求编…
目录 1.扯淡 2.Python历史 3.Python简介 4.Python应用 5.为什么是python而不是其他语言? 6.Python的种类 7.Python的特点 8.Python设计哲学 9.Python版本 10.Python环境(安装.解释器.编码.注释.传参.变量.流程控制.数据类型.运算.文本操作)   1.扯淡 由于是开篇,着实有点儿小激动......此处省略一万字,虽然写博客很伤脑细胞也费时费电,但大王说了,这是牛13的开始.    其实我接触Python的一个契机是在做N…
前言 很喜欢的一句话,与诸位共勉. 人的一切痛苦,本质上都是对自己无能的愤怒----王小波. 初识Python 一.它的爸爸是谁 首先,我们需要认识下面这位人物. 他是Python的创始人,吉多范罗苏姆(Guido van Rossum).1989的圣诞节为了打法时间开发出来的.哎,想想,都是差距.... 二.需要理解的一些概念: 1.C语言编译完就是机器码,机器码可以直接在处理器上执行. 2.CPU可以直接读取机器码. 3.Python是用C写的. 4.Python解释器会把代码内容读到内存里…
初识委托:          在之前的学习中我们已经可以把对象,值,数组当作参数传递给方法,但是有没有可能把方法也当作参数传递给方法呢?有了这个想法于是就有了委托.方法当作一种参数去传递,但是方法有的有返回值有的没有返回值,这如何处理?委托又用在什么地方?通过这篇文章我们来学习一下委托的用法 委托解密:              在C#中要使用委托.必选先定义要使用的委托,在使用时需要创建该委托的一个或多个实例,以下示例展示了如何声明委托             /* 委托的安全性非常高,所以在…
第十二章 泛型 2014-06-15 初始泛型 12.3 泛型基础结构 12.3.1 开放类型与封闭类型 12.3.2 泛型类型和继承 12.3.3 泛型类型同一性 12.3.4 代码爆炸 12.6 委托和接口的逆变和协变泛型类型实参 12.7 泛型方法 12.7.1 泛型方法和类型推断 12.9 可验证性合约束 12.9.1 主要约束 12.9.2 次要约束 12.9.3 构造器约束 参考 初识泛型[1][2] 返回 泛型(generic)是CLR和编程语言提供一种特殊机制,它支持另一种形式的…
Contents 第1章CLR的执行模型... 4 1.1将源代码编译成托管代码模块... 4 1.2 将托管模块合并成程序集... 6 1.3加载公共语言运行时... 7 1.4执行程序集的代码... 8 1.5本地代码生成器:NGen.exe. 11 1.6 Framework类库... 11 1.7通用数据类型... 12 1.8公共语言规范... 12 第2章 生成.打包.部署和管理应用程序及类型... 13 2.1 .Net Framework部署目标... 13 2.2将类型生成到模…
17.1 初识委托 .net 通过委托来提供回调函数机制. 委托确保回调方法是类型安全的. 委托允许顺序调用多个方法. 17.2 用委托回调静态方法 将方法绑定到委托时,C# 和 CLR 都允许引用类型的 协变性(covariance) 和 逆变性(contravariance). 协变性是指方法能返回从委托的返回类型派生的一个类型. 逆变性是方法获取的参数可以是委托的参数类型的基类. 只有引用类型才支持协变性与逆变性,值类型或 void 不支持 delegate object MyCallba…
回调函数是一种非常有用的编程机制,它的存在已经有很多年了..NET通过委托来提供回调函数机制.不同于其他平台(比如非托管C++)的回调机制,委托的功能要多得多.例如,委托确保回调方法是类型安全的(这是clr最重要的目标之一).委托还允许顺序调用多个方法,并支持调用静态方法和实例方法. 初识委托 c“运行时”的qsort函数获取指向一个回调函数的指针,一遍对数组中的元素进行排序.在windows中,窗口过程.钩子过程和异步过程调用等都需要回调函数..net framework中,回调方法的应用更是…
一 本节目标 了解编程语言 了解python及与其他语言的优劣对比 安装python解释器及环境变量配置.运行python交互式环境 打印hello world程序 初识变量.用户输入,流程控制,while循环 二 了解编程语言 2.1 为什么要编程? 解放人力:让机器(比如计算机)按照人们事先为其编写好的程序自发地去工作 2.2 什么是编程语言? 人----------->汉语--------------->中国人                    八格牙路----------->…
一.Python介绍 Python简介 Python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOBE排行榜,Python赶超PHP占据第五, Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文…
python真的是万恶之源么? 计算机基础及puthon了解 1.计算机基础知识 cpu : 相当于人类大脑,运算和处理问题 内存 : 临时存储数据,单点就消失,4G,8G,16G,32G 硬盘 : 永久存储数据 操作系统 : 实际上是管理计算机内存的分配,分页分段,计算机资源的供需优先分配,控制输入输出设备的一种计算机程序,简单来讲操作系统是一个程序,控制每一个硬件之间的数据交互. 2.python的应用和历史 python的创始人为吉多·范罗苏姆 python主要崇尚的市优美,清晰,简单,并…
引言 首先想给初学者推荐下<CLR via C#>这本好书,做.Net开发的开发者应该都读一下.为避免广告之嫌,所以这里只提供豆瓣书评的链接. CLR 作为.Net 程序跨平台运行的载体,和Java的JVM有着类似的功能(JAVA为跨平台而生,实现这一目标离不开JVM). 随着.NET Framework的日益发展CLR也有日新月异的变化.这些变化为开发带来更多有用的特性,在提高开发效率的同时也提高了程序的性能和稳定性. 如果大家觉得还有必要把这块更新的更好,还请多多反馈. 如果觉的对您有用还…
clr相关编译器编译生成的托管模块由四部分组成:PE32或32+头.clr头.元数据.IL代码. 元数据和IL代码完全对应,保持一致(:>)性. 元数据有很多用途: VS的智能感知,自动补全: 代码验证保证类型安全: 序列化.反序列化: 垃圾回收(从元数据得知哪些根引用了对象). 元数据包含两类表,一种描述源代码中定义的类型和成员:另一种描述代码引用的类型和成员.模块内部的一些元数据表的大小和偏移量在clr头中会有包含. 元数据是由几个表构成的二进制数据块.有三种表:定义表.引用表.清单表. 常…
Python简介 Python前世今生 Python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 注:ABC语言是由Guido参与设计的一种教学语言,是专门为非专业程序员设计的.就Guido本人看来,ABC这种语言非常优美和强大,但是ABC语言并没有成功,究其原因,Guido认为是非开发造成的.Guido决心在Python中避免这一错误.同时,他还想实现在AB…
引言 GC 作为CLR的垃圾回收器,让程序员可以把更多的关注度放在业务上而不是垃圾回收(内存回收)上.其实很多语言也有类似的东东, 如Java也有JIT 等等 GC基本概念 垃圾回收机制的算法有好多种,GC为Mark-Sweep算法. GC中分为三代,来优化管理不同生命周期的对象. 大部分的对象在Gen0就死掉了. Gen0 和Gen 1 又叫作ephemeral generations (短命代,个人翻译意见 ) 大于85,000bytes的对象会被直接分配到Large object heap…
1.CTS(Common Type System)通用类型系统 CTS不但实现了COM的变量兼容类型,而且还定义了通过用户自定义类型的方式来进行类型扩展.任何以.NET平台作为目标的语言必须建立它的数据类型与CTS的类型间的映射.所有.NET语言共享这一类型系统,实现它们之间无缝的互操作.该方案还提供了语言之间的继承性.例如,用户能够在VB.NET中派生一个由C#编写的类.我们可以将CTS 看成是所有.NET 语言的superset (union),而符合CTS 的各种不同的语言,其实都只是CT…
前言 MSSQLSERVER提供程序集,无疑可以让编程人员更加便捷的操作数据库数据,比如c#写的函数,可以在数据库当作sql的函数使用,你想想他对不熟悉数据库的程序员来说是有多么的嗨.这么好的机制,大家当然不能错过,但是对于数据库变更迁移,可能会存在障碍与不便.所以建议大家在使用sqlsesrver clr程序集的时候也要做个权衡,以免给数据库以后的扩张带来不便.建议大家单次数据,数据过滤,的时候使用sqlserver clr程序集.长期依赖的话,还是另外选择解决方案. MSSQLSERVER接…
前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Android动画效果之Frame Animation(逐帧动画)(二),其实总结前两个的根本目的就是为了学习今天的主角Property Animation(属性动画).其实在Android最早期只提供了前两种动画方式,在Android 3.0才引入了属性动画,谷歌为何要引入属性动画呢?今天我们来总结学习一…
一.所有类型都是从System.Obejct派生 1.下面两个类型定义是完全一致的: class Employee{ ... } class Employee:System.Object{ ... } 2.System.Object的公共实例方法 a.Equals 判断对象是否具有相等的值 b.GetHashCode 返回对象值的哈希码 c.ToString 该方法默认返回类型的完整名称( this.GetType().FullName ) d.GetType 返回从Type派生的一个对象的实例…
最简单的IL程序 .assembly test {} .method void Func() { .entrypoint ldstr "hello world" call void [mscorlib]System.Console::WriteLine(string) ret } 对上面的程序说明如下: .assemble伪指令用来声明程序集,该关键字是必须的 .method伪指令用来申明方法 .entrypoint伪指令用来表示程序的入口函数(方法),一个程序只能有一个入口,且不能放…
托管程序的执行模型大致如下: 编译源代码为程序集(dll或exe文件),程序集包括了记录相关信息的元数据和IL代码 执行程序集文件时,启动CLR,JIT负责把IL编译为本地代码并执行 IL是微软推出的一种面向对象的类似汇编指令集合的中间语言,无论是C#还是VB代码,经过不同的编译器可编译为无差别的IL,或者说单看IL代码是无法分辨出它是来自C#还是VB,IL类似于Java的.Class文件,该文件具有平台无关性,这使得.Net程序具备了像Java那样跨平台的条件. 程序集的组成及编译 程序集就是…
第一部分:              初识Hadoop 一.             谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长时间,这是因为数据的吞吐量太大了,导致整个程序看上去像一只体型庞大.行动笨拙的大象. Hadoop天生就是来解决数据吞吐量太大的,它可以使大数据的存储和处理变的快速.使得应用程序运行的更加的轻盈.像<Hadoop权威指南>封皮上那句话:"谁说大象不能跳舞?!". 二.     …