自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

转载 使用SOCKET实现TCP/IP协议的通讯

一、原理:     首先要理解基本的原理,2台电脑间实现TCP通讯,首先要建立起连接,在这里要提到服务器端与客户端,两个的区别通俗讲就是主动与被动的关系,两个人对话,肯定是先有人先发起会话,要不然谁都不讲,谈什么话题,呵呵!一样,TCPIP下建立连接首先要有一个服务器,它是被动的,它只能等待别人跟它建立连接,自己不会去主动连接,那客户端如何去连接它呢,这里提到2个东西,IP地址和端口号,通

2016-05-31 14:39:16 2591

转载 C# 关于委托和事件的妙文:通过一个例子详细介绍委托和事件的作用;Observer模式简介

委托和事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observ

2016-05-31 08:59:09 499

原创 泛型

泛型原理:初次编译时,首先生成IL代码和元数据,T只是作为类型占位符,不进行泛型类型的实例化;在进行JIT编译时,将以实际类型替换IL代码和元数据中的T占位符,并将其转换为本地代码,下一次对该泛型类型的引用将使用相同的本地代码约束(通过where字句来实现)T:new(),表示类型参数必须具有公共无参构造函数,有多个约束存在时,必须将new()约束置于最后T:struct.表示类型参数必须是值类

2016-05-27 17:00:26 250

原创 命名空间剖析

框架概览 .NET Framework 主要包括两个部分:CLR(通用语言进行时)和FCL(框架类库)。其中CLR是.NET Framework的基础,提供了包括内存管理,线程管理和远程处理等核心服务;FCL是一个机遇面向对象的可重用类型集合,用于支持多种应用的快速开发,例如:ASP.NET WEB 应用,Windows Form应用,Web Services应用和企业服务等多种应用与服务。 .

2016-05-27 11:12:37 369

原创 异常

良好的系统设计必定有良好的异常处理机制来保证程序的健壮性和容错机制异常本质的定义:异常是对程序接口隐含假设的一种违反 异常机制的优势:丰富了异常信息,便于交互和调试,毕竟系统自己报的错误代码不能有效提供更多的异常信息和调试指示。有效实现异常回滚,并且可以根据不同的异常,回滚不同的操作。可以通过面向对象机制定义自己的特定异常处理类,实现更加特性话的异常信息错误处理更加局部化,可能出

2016-05-26 17:47:32 300

原创 Name这回事儿

在.NET中,一个Type可以由三个属性来描述,分别是Name,获取当前成员的名字(一般是类型名);FullName,获取Type的完全限定名,包括Type的命名空间,但不包括程序集AssemblyQualifiedName,获取Type的程序集限定名,其中包括从中加载Tpye的程序集的名称。事实上,AssemblyQualifiedName被定义为制度abstract属性,具体的实现由其派生

2016-05-26 08:37:48 365

原创 委托,匿名和Lambda

委托实现来类型安全的回调方法。由于回调无处不在,所以委托无处不在,时间模型是建立在委托机制上,Lambda表达式本质上就是一种匿名委托。委托的定义(委托并不等于方法): 你是编程的,你现在正在写一个ASP.NET网页,而JS是你不熟悉的,于是你委托你的一位同事来帮助你完成JS部分。这就是委托,把你所不能做的事情交给其他人去做。而怎么知道是哪个人去做呢?当然是要知道名字!而为了区别名字一样的不

2016-05-25 15:48:06 348

原创 集合通论

什么是集合:一个对象容器,并且提供了存取,检索,遍历等基本操作以统一的方式处理一组对象,简化对象管理操作实现多个返回值,当方法需要返回多个结果值时,集合提供了很好的实现方式集合的属性: Add:向集合中添加新的元素 Insert:从集合中插入集合的指定位置 Remove:从集合中移除指定元素 Clean:清除集合中的所有元素 IndexOf/LastIndexOf:在集合中进行线性搜

2016-05-25 15:06:38 234

原创 浅拷贝和深拷贝

凡是实现了ICloneable借口的类型都具备克隆器对象实例的能力。 浅拷贝:大部分的引用类型,实现的都是浅拷贝(引用类型对象之间的赋值,就是赋值一个对象引用地址的副本,而指向的对象实例仍然是同一个) 深拷贝:拷贝对象和源对象相互独立,不共享任何实例数据,修改一个对象不会影响到另一个对象,显然,值类型之间的赋值操作,执行的就是深拷贝。

2016-05-25 14:33:35 213

原创 认识全面的null

在.NET中,null标识一个对象引用是无效的。作为引用类型变量的默认值,Null是针对指针(引用)而言的,它是引用类型的专属概念结论null为引用类型标量的默认值,为引用类型的概念范畴null不等同于0,‘’,‘string.Empty’,而表示一个空引用引用is或as模式对类型进行判断或转换时,需要做进一步的Null检查判断一个变量是否为null,可以应用==或!=操作符来完成

2016-05-25 11:19:55 296

原创 using的多重身份

using的三重身份 1.引入命名空间 1)using类似于Java语言的Import指令,作用都是引入命名空间(Java中的包) 2)在C#中即使引用了命名空间,只要不存在调用操作,就不会加载using而造成过度引用的弊端。 2.创建别名 1)以MSWord来代替Microsoft.Office.Interop.Word前缀(避免了繁琐的类型输入) using MSWord = Mi

2016-05-24 17:46:11 422

原创 base和this

base和this在C#中被归于访问关键字(实现继承机制的访问操作,来满足对对象成员的访问)base: 1.调用基类上已被其他方法重写的方法(只能访问共有或者受保护盾,私有不可访问) 2.指定创建派生类实例时应调用的基类构造函数this: 1.限定被相似的名称隐藏的成员 2.将对象作为参数传递到其他方法(访问的是本类的常量,字段,属性,方法成员,且无论任何访问级别。因为,THIS仅仅局限

2016-05-24 17:06:18 352

原创 .Net性能优化

性能条款Item1 :尽可能以using来执行资源清理 以using语句来执行实现了Dispose模式的对象,是较好的资源清理选择,简介优雅的代码实现,同时能够**自动执行**Dispose方法来销毁非托管资源。 using (SqlConnection con = new SqlConnection(constr)) { using (SqlCom

2016-05-22 17:24:57 316

原创 内存管理概要

引言.NET的自动内存管理,主要包括: * 对象创建时的内存分配 《==》对象的创建 对象的创建包括内存分配和初始化两个环节 内存的分配–CLR管理内存的区域主要有三块: 1. 线程的堆栈,用于分配值类型实例。堆栈主要由操作系统管理,而不受垃圾收集器的控制,当值类型实例所在方法结束时,其存储单位自动释放 2. GC堆,用于分配小对象实例。如果引用类型对象的实

2016-05-21 17:30:04 250

原创 参数之惑——传递的艺术

参数基础:参数其实实现的是不同方法间的数据传递,也就是信息交换(所以参数一般用于方法) 实参:调用方法的参数(mystring); string mystring = “this is your argument” ShowString(mystring ); 形参:被调用方法的参数(astr) private static void ShowString(string astr) {

2016-05-21 16:32:12 265

原创 值类型与引用类型

值类型:MSDN的定义为:直接包含他们的数据,值类型的实例要么在堆栈上,要么内联在结构中。包括简单类型,结构体类型和枚举类型。引用类型:MSDN的定义为:引用类型存储对值的内存地址的引用,位于堆上。包括用户定义的类,装箱的值类型和委托...

2016-05-20 17:10:38 253

原创 从通用类型开始

CLR的技术其实是基于类型开始展开的。而类型是在公共的基础架构上,也就是CTS(通用类型系统:Common type system)MSDN对CTS的定义:1)建立一个支持跨语言集成,类型安全和高性能代码执行的框架。2)提供一个支持完整实现多种编程语言的面向对象的模型。3)定义各语言必须遵守的规则,有助于确保不用语言编写的对象能够交互作用。举个小例子(小杨以前编写的代码是用VB

2016-05-20 16:42:07 262

原创 html5(语法规范)

1)标签不区分大小写2)元素可以省略结束标签:可以不需要3)允许省略属性的属性值4)允许属性不使用引号

2016-05-20 16:40:14 659

原创 面向对象原则综述

单一职责原则:一个类,应该仅有一个可以引起它变化的原因。强调的是职责的分离。 开放封闭原则:开(程序集中的各种组建,例如模块,类…应该在不修改代码的基础上,引入新的功能)闭(对于原有代码的修改是封闭的),即修改原有代码对外部的使用是透明的。 依赖倒置原则:依赖于抽象,而不要依赖于具体,因为抽象远比具体稳定。 借口隔离原则:仅应用专门的借口,面向用户,将依赖建立在最小的借口上。 里氏替换原则

2016-05-19 15:01:14 299

原创 多态

多态可以被分为四类:强制的,重载的,参数的和包含的。 现在简单的描述下包含的多态: 1)基类继承式多态 2)接口实现式多态 从技能实现的角度来看,是.NET的动态绑定机制成就来面向对象的多态特性。 静态绑定:在编译期间就可以确定关联,一般以方法重载来实现; 动态绑定:在运行期通过检查虚拟方法表来确定动态关联重写的方法,一般以继承和重写来实现

2016-05-17 16:21:04 302

原创 封装

引言:首先在面向对象中,封装无处不在。.NET Framework好像就包装了我们开发人员需要的各种类型,方法,接口(比如你要对文件进行操作,System.IO.File里面封装的各种方法就足够你使用了)用户不需要关心具体的体现封装抽象理解:封装隐藏了类的内部的具体的实现细节,对外则是提供来统一的访问接口,来操作内部数据成员。在封装原则中,合理的隐藏内部数据,有效的暴露外部行为同样关键

2016-05-17 14:46:33 335

原创 继承

继承的特点:1)继承主要形成IS-A的关系,例如人类IS-A哺乳类。但是要注意这种关系的单向的。所以不能反过来说哺乳类IS-A人类。2)继承从上而下是逐层具体化过程3)层与层的特性是向下传递的(人具有哺乳类的特性,同样具有上层脊椎动物的特征,同样具有最上层动物的特征)继承的定义:继承的类称为子类、派生类。被继承的类称为父类或基类。通过继承,子类就获得了父类的属性和方法。同时子类

2016-05-17 09:59:35 345

原创 对象的旅行

对象的生存环境是CLR,而人的生存环境是社会,CLR提供了对象赖以生存的托管环境,制定了一系列的规则(例如人类制定的法律法规)【例如类型,集成,封装,多态,垃圾回收】。在面向对象中,子类继承父类,以访问权限来实现不同的控制规则。访问修饰符:public    --最高的访问限制protected --子类可以,不管在不在一个程序集中internal -- 类默认的,同一程序集可

2016-05-17 09:37:05 276

原创 命名空间和程序集

首先要知道的是,编译器要保证引用的每个类型都确实存在,也就是说要调用确实存在的方法,才能向方法传递正确数量的实参,保证实参的类型确实满足方法签名里设置的参数类型。       在C#中,namespase的作用:告诉编译器为源代码中出现的每个类型名称加命名空间名称前缀

2016-05-14 13:30:16 345

原创 类型转换

C#不要求任何特殊语法即可将对象转换成它的基类型,因为向基类型转换被CLR默认为安全的隐式转换        C#的is和as操作符:                1)is 操作符检查对象是否兼容于指定类型,返回boolean值true或false(is操作符永远不会抛出异常)                2)as操作符类似于强制类型转换(一般紧接检查生成的引用是否为Null)

2016-05-14 10:14:05 385

原创 类型基础

CLR要求每个类型最终都是从System.Object类型派生,所以每个类型的每个对象都保证拥有Object的最基本的方法:Equals,GetHashCode,ToString(this.GetType().FullName),GetType(可以指出调用该方法的对象是什么类型,是非虚方法,防止类重写该方法,隐瞒真实类型),MemberwiseClone(相当于镜像,返回对新实例的引用),Fin

2016-05-13 16:32:46 287

原创 将托管模块合并成程序集

CLR实际是和程序集工作,程序集(assembly)是抽象概念        程序集:一个或多个模块/资源文件的逻辑性分组,是重用安全性和版本控制的最小单元。        编译器会默认将生成的托管模块生成程序集        程序集既可以是EXE,也可以是DLL(其中也含有可执行的文件)

2016-05-13 16:11:54 382

原创 CLR的执行模型

CLR:Commin Language Runtime 是一个可由多种编程语言使用的运行时,核心功能(内存管理,程序集加载,安全性,异常处理和线程同步),它可以由面向CLR的任何语言来使用。例如,“运行时”使用异常来报告错误,面向它的任何语言都用异常来报告错误。如下图:用支持CLR的任何语言创建源代码,然后用对应的编译器来检查语法和分析源代码。结果统一为托管模块(托管模块都需要CLR才能执行)

2016-05-13 14:17:14 483

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除