平时工作的时候总是使用ctrl c+ctrl v去快速开发实现业务功能,但是在工作之余,我们也应该要注意静下心来去学习和提高自己.进阶的文章随性来写,不定时更新.希望可以和大家共同学习,共同进步.今天我们一起来理解一下c#的运行机制. c#语言具有简单易入门的特点,初学者通常简单拖动几个控件,写几行代码就可以实现一个“程序”了,但是这样也让我们养成了一种依赖c#封装特性的习惯. c#是一种高级语言,通过它编写的代码不能被机器识别.在这个被机器识别的过程中:首先是windows加载MSCorEE.…
[实例代码] using System; public sealed class SomeType //-------------1 { //嵌套类 private class SomeNestedType{} //-------------2 //常量.只读字段和静态可读/可写字段 ; //-------------3 ; //-------------4 ; //-------------5 //类型构造器 static SomeType(){} //-------------6 //实例构…
一.查看自己的证书签名信息 如上一篇文章<我的Android进阶之旅------>Android中制作和查看自定义的Debug版本Android签名证书>地址:http://blog.csdn.net/ouyang_peng/article/details/49023569 中所介绍的一样.通过命令查看生成的baiduMapLoc-release-key.keystore 的相关信息,命令如下所示: C:\Documents and Settings\Administrator\桌面\b…
目录:[Swift]Xcode实际操作 本文将演示如何在程序运行期间,查看模拟器各界面元素的层次顺序. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, t…
目录 nuget初识 nuget本地包 nuget解决依赖冲突 nuget是什么 .net版的maven(java)? 如果你用过windows的chocolatey,mac的homebrew或许更容易理解他,先来回顾下以前我们是如何处理或者碰到过的问题. 1.假如我需要合并2个项目,这2个项目是不同的作者,项目中都使用到了log4net并且版本不同,那么你需要做一系列的改动来保证配置文件的正常工作. 2.同样在团队合作中,随便使用某个源代码管理工具,一般每个人在本地都有一个工程副本,对于第三方…
nuget是什么 .net版的maven(java)? 如果你用过windows的chocolatey,mac的homebrew或许更容易理解他,先来回顾下以前我们是如何处理或者碰到过的问题. 1.假如我需要合并2个项目,这2个项目是不同的作者,项目中都使用到了log4net并且版本不同,那么你需要做一系列的改动来保证配置文件的正常工作. 2.同样在团队合作中,随便使用某个源代码管理工具,一般每个人在本地都有一个工程副本,对于第三方的(或者公用的)程序集(例如Common,Utility等)引用…
进阶命令 1    df指令   查看磁盘的空间 # df -h    -h表示可读性更高,方便读取 执行指令后(Filesystem:磁盘名称  size:磁盘总大小  Used: 被使用的大小  Avail:剩余大小   Use%:使用百分比   Mounted on :挂载路径) 2     # free -m  查看内存使用情况   (-m  表示以mb为单位查看) [ Total:总大小 used:使用过的大小 free:空闲的空间 shared:共享内存 buffers:输出缓冲区…
先写下一般的用法,就是在 vs 中添加 ILDASM 工具. 添加步骤: 工具---->外部工具----->添加: 标题我一般取为 ILDASM,命令那一栏是要选择 ILDASM 的路径, 我的是[C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\ildasm.exe] 不过我一般不这样用 ILDASM,我一般是直接将[ildasm.exe]文件创建一个快捷方式,将快捷方式放到这个目录下[C:\Windows\System32],…
Django 自学笔记兼学习教程第5章第2节--进阶查询--Queryset 点击查看教程总目录 Queryset相关内容其实蛮多的,本文只介绍一些常用的,详细的推荐查询官方文档:queryset-api 0 - 数据示例 为了方便本文后面内容举例,这里先展示下models.py和数据库表内容, myapp/models.py在本章第一节,如下: from django.db import models class Person(models.Model): gender = ( ('male'…
在写delegate的时候遇到一个问题,在已有一个不带参数的delegate基础上,试图再增加一个带参数的delegate,结果VS报了“already contains a definition for ‘InvokeDelegate’”这样的错误. 第一眼看上去,代码似乎没什么问题: private delegate void InvokeDelegate(); private delegate void InvokeDelegate(string param); 其实这是把delegate…
提起事件,我们都不陌生,事件使类之间有了交互的能力.它是建立在委托基础上的.有了前面对委托的了解,相信读起事件来也不会太难了.关于事件,现成的好文章数不胜数,本不打算写了.不过问道有先后,各抒己见,也不为过.想了想,还是不偷懒了,最起码能逼自己动动手,多理解几分. 一. 事件能干什么? 类通过维护一个已登记事件列表,当事件发生的时候可以通知已登记的方法.主要功能: 方法登记对该事件的关注: 方法注销对该事件的关注: 事件发生时,登记了的方法会收到通知,作出相应的反应. Ps:看到这几点的时候,总…
一. 无参属性 1. 定义属性 无参属性就是我们最常见的属性方式,在赋值时可以加入一定的逻辑判断.属性的定义其实不复杂,先看个直观的例子: 说明: 属性要定义名称和类型,且类型不能是void. 属性是不能重载的.我们不能定义名称相同.类型不同的两个属性. 属性一般需要定义get和set方法来操作类内部的私有支持字段,如上面的_name, _age等.Set方法中包含隐藏参数叫做value,表示赋给属性的值. 只读只写属性:可以通过省略set来定义只读属性(如Count属性),或者省略get来定义…
对于操作符,我们并不陌生,例如+,-,*,%等二元操作符,以及++,!等一元操作符.但是对于非基元类型,我们需要通过一些自定义方法才能使用这些操作符.今天主要和大家分享关于操作符重载和转换操作符的知识. 一.操作符重载方法 CLR并不知道操作符,操作符重载对于它来说只是一些方法而已.但是CLR规定了语言应该如何公开操作符重载,每种编程语言自行决定是否支持操作符重载. 定义操作符重载方法注意两点: CLR规范要求操作符重载方法必须是 public static 类型. C#要求操作符重载方法必须有…
今天跟大家分享一下关于访问限定和数据成员的知识.主要包括以下两点: Abstract, sealed, virtual, new, override怎么用? Const 和 readonly好像都表示不能改变的值,有什么区别呢? 一. 访问限定 类和方法有一些访问限定符,如private,public等.除此之外,还包含一些预定义特性.下面几个你都知道吗? 1. 类的预定义特性 Abstract——抽象类.不能实例化.如果派生类不是抽象类,则必须实例化. Sealed——密封类.不能做基类被继承…
1. 源代码编译为托管模块 程序在.NET框架下运行,首先要将源代码编译为 托管模块.CLR是一个可以被多种语言所使用的运行时,它的很多特性可以用于所有面向它的开发语言.微软开发了多种语言的编译器,编译时会使用相应的编译 器进行语法检查器和代码分析器,在编译完成后都生成一个托管模块. 托管模块? 托管模块是一个需要CLR环境才能执行的标准windows PE文件,包含IL和元数据以及PE表头和CLR表头. IL又叫托管代码,是编译器编译源文件后产生的指令,CLR会在运行时将IL编译成本地CPU指…
前言 C# 3.0 引入了 Lambda 表达式,程序员们很快就开始习惯并爱上这种简洁并极具表达力的函数式编程特性. 本着知其然,还要知其所以然的学习态度,笔者不禁想到了几个问题. (1)匿名函数(匿名方法和Lambda 表达式统称)如何实现的? (2)Lambda表达式除了书写格式之外还有什么特别的地方呢? (3)匿名函数是如何捕获变量的? (4)神奇的闭包是如何实现的? 本文将基于CIL代码探寻Lambda表达式和匿名方法的本质. 笔者一直认为委托可以说是C#最重要的元素之一,有很多东西都是…
 标题  状态  内容 什么是CLR? 什么是托管模块? 托管模块由什么组成? .net代码的执行过程   http://www.cnblogs.com/aaa6818162/p/4726581.html http://www.cnblogs.com/kingmoon/archive/2012/07/16/2594459.html 为了执行程序,首先必须把它的IL转换成本地CPU指令 第二次调用WriteLine的情况 PE文件   http://lwglucky.blog.51cto.com/…
第一节 接口慨述 接口(interface)用来定义一种程序的协定.实现接口的类或者结构要与接口的定义严格一致.有了这个协定,就可以抛开编程语言的限制(理论上).接口可以从多个基接口继承,而类或结构可以实现多个接口.接口可以包含方法.属性.事件和索引器.接口本身不提供它所定义的成员的实现.接口只指定实现该接口的类或接口必须提供的成员. 接口好比一种模版,这种模版定义了对象必须实现的方法,其目的就是让这些方法可以作为接口实例被引用.接口不能被实例化.类可以实现多个接口并且通过这些实现的接口被索引.…
    回调函数是一种非常有用的编程机制,它已经存在很多年了.Microsoft .NET Framework通过委托(delegate)来提供一种回调机制.不同于其他平台(比如非托管C++)的回调机制,委托提供了多得多的功能.例如,委托确保回调方法是类型安全的(这是CLR最重要的目标之一).委托还允许顺序调用多个方法,并支持调用静态方法和实例方法.   一.初识委托     为了理解委托,先看看如何使用它.     委托4个最基本的步骤:     1)定义委托类型     2)有一个方法包含要…
本系列文章将详细探讨C#中的委托,列举其主要的实现方式,并分析其在设计层面和编码层面带来的好处,最后会讨论其安全性和执行效率等. 什么是委托? 委托是寻址方法的.NET版本,使用委托可以将方法作为参数进行传递.委托是一种特殊类型的对象,其特殊之处在于委托中包含的只是一个活多个方法的地址,而不是数据. 委托虽然看起来像是一种类型,但其实定义一个委托,是定义了一个新的类.下面这行代码,定义了一个委托,使用ILDasm.exe查看其生成的IL代码如图所示: //定义委托,它定义了可以代表的方法的类型,…
垃圾回收 1.       .Net垃圾回收中涉及的名称 1.1.什么是代? 垃圾回收器为了提升性能使用了代的机制,共分为三代(Gen0.Gen1.Gen2).GC工作机制基于以下假设, 1)  对象越新,生存期越短 2)  对象越老,生存期越长 3)  回收堆的一部分比回收整个堆时间短 在应用程序的生命周期中,最近新建的对象被分配在第0代,在一次垃圾回收之后存活下来的进入下一代.这样可以使GC专注于回收最有可能存在更多可回收对象的第0代(最近分配的最有可能很快被释放) 1.2 什么时候发生垃圾…
XAML的全称是Extensible Application Markup Language,就是我们所说的可扩展应用程序标记语言.XAML可以应用到许多不同领域,但主要用于构建用户界面. XAML是一种单纯的声明型语言,也就是说,它只能用于声明一些UI元素.绘制UI和动画等:不能在其中加入程序逻辑,从根本上实现了UI和逻辑代码分离. XAML是一种由XML派生而来的语言,所以很多XML种的概念在XAML是通用的. 我们通过Visual Studio创建一个WPF应用程序,来介绍一下XAML的命…
前言 字符串对于任何编程语言都是必须操作和了解的,因为在实际编程中,任何项目和工程都必须要处理字符串数据,文件路径.提示消息,文本的处理等等,而在使用过程中很多人都是没有系统的了解,大量使用string,其实string的大量使用会造成很大的性能消耗,这跟.NET平台对字符串的处理有很大的关系,而.NET对字符串的支持还是很丰富的.不管是面试亦或者是实际编程使用,总结一下知识很有必要. 1.使用字符串数据 String提供了大量很多工具类,包括返回字符串长度.查找当前字符串中的字符串.转换大小写…
转载自 :http://blog.csdn.net/mashi321323/article/details/18267719   登录|注册     mashi321323的专栏       目录视图 摘要视图 订阅 10月28日 大牛带你玩转Spark    微信开发学习路线高级篇上线    免费公开课平台正式上线啦    恭喜July新书上市 iphone开发 IOS 组织架构图 分类: iphone2014-01-14 17:20 1870人阅读 评论(0) 收藏 举报 iphone开发组…
本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课程会涵盖Scala编程详解.Spark核心编程.Spark SQL和Spark Streaming.Spark内核以及源码剖析.性能调优.企业级案例实战等部分.完全从零起步,让学员可以一站式精通Spark企业级大数据开发,提升自己的职场竞争力,实现更好的升职或者跳槽,或者从j2ee等传统软件开发工程…
一.前言 前几天群里有位水友提问:”C#中,当一个方法所传入的参数是一个静态字段的时候,程序是直接到静态字段拿数据还是从复制的函数栈中拿数据“.其实很明显,这和方法参数的传递方式有关,如果是引用传递的话,肯定是会去静态字段直接拿值的:如果方法是以传值的方式使用参数的话,一定是从复制的栈中拿值的. 但是这位水友就是不相信这个结论(后来发现,这货整一个杠精啊!天天在群里跟人抬杠~),这个时候我忽然想到了可以反向看一下C#的IL代码,来了解一下程序运行的过程.的确,当我们对运行结果有异议的时候,可以通…
从本质上讲,按照CLI规范设计的.NET从其出生的那一刻就具有跨平台的基因,这与Java别无二致.由于采用了统一的中间语言,微软只需要针对不同的平台设计不同的虚拟机(运行时)就能弥合不同操作系统与处理器架构之间的差异,但是“理想很丰满,现实很骨感”.在过去十多年中,微软将.NET引入到了各个不同的应用领域,表面上看起来似乎欣欣向荣,但是由于采用完全独立的多目标框架的设计思路,导致针对多目标框架的代码平台只能通过PCL(参考<.NET Core跨平台的奥秘[中篇]:复用之殇>)这种“妥协”的方式…
一:总结 1.Finalize方法(C#中是析构函数,以下称析构函数)是用于释放非托管资源的,而托管资源会由GC自动回收.所以,我们也可以这样来区分 托管和非托管资源.所有会由GC自动回收的资源,就是托管的资源,而不能由GC自动回收的资源,就是非托管资源.在我们的类中直接使用非托管资源的情况很 少,所以基本上不用我们写析构函数. 2.大部分的非托管资源会给系统带来很多负面影响,例如数据库连接不被释放就可能导致连接池中的可用数据库连接用尽.文件不关闭会导致其它进程无法读写这个文件等等. 实现模型:…
Finalize在c#编程语言中需要特殊语法,因此,c#要求在类名前加~符号来定义Finalize方法:例如 internal class FinalizeDemo { ~FinalizeDemo() { int num = GC.MaxGeneration; } } ILDasm.exe所在目录 C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools 使用ILDasm.exe查看Finalize生成的中间…
http://www.codeguru.com/Csharp/.NET/cpp_managed/article.php/c4871 本文内容 什么是托管代码? 什么是非托管代码? 什么是本地代码? 托管代码意味着托管数据? 虽然该文章写的时间比较早,但是完全可以说明问题. 2003 年 4 月 24 日 VS 2003(之前称为 Everett)发布,很多开发者愿意考虑使用托管代码的新技术.但是对这个新技术有点迷茫,特别是 C++ 开发者.因为,正如我之前指出的,C++ 是特殊的. 什么是托管代…