摘要:1. 装箱、拆箱还是别名 许多介绍C# .NET学习经验的书上都有介绍 int -> Int32
是一个装箱的过程,反之则是拆箱的过程。许多其它变量类型也是如此,如:short <-> Int16,long <->
Int64
等。对于一般的程序员来说,大可不必去了解这一过程,因为这些装箱和拆箱的动作都是可以自动完成的,不需要写代码进行干预。但是我们需要记住这些类型之间
的关系,所以,我们使用“别名”来记忆它们之间的关系。 C# 是全面向对象的语言,比 Java
的面向对象都还彻底——它把简单数据类型通过默认的装箱动作封装成了类。Int32、Int16、Int64 阅读全文
艾伟_转载:C# 委托的同步调用和异步调用
2011-08-29 00:20 by 狼人:-), 191 阅读, 0 推荐, 收藏,
摘要:委托的Invoke方法用来进行同步调用。同步调用也可以叫阻塞调用,它将阻塞当前线程,然后执行调用,调用完毕后再继续向下进行。 同步调用的例子:
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->using System;using System.Threading;public delegate int AddHandler(int a, int b);public class Foo { static void Main() { ... 阅读全文
艾伟_转载:C# 反射技术应用
2011-08-29 00:20 by 狼人:-), 213 阅读, 0 推荐, 收藏,
摘要:反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。 1、.NET可执行应用程序结构 程序代码在编译后生成可执行的应用,我们首先要了解这种可执行应用程序的结构。 应用程序结构分为应用程序域—程序集—模块—类型—成员几个层次,公共语言运行库加载器管理应用程序域,这种管理包括将每个程序集加载到相应的应... 阅读全文
艾伟_转载:HttpApplication的认识与加深理解
2011-08-29 00:20 by 狼人:-), 157 阅读, 0 推荐, 收藏,
摘要:HttpApplication对象是经由HttpApplicationFactory.GetApplicationInstance(并最终调用HttpRuntime.CreateNonPublicInstance)创建的HttpApplicationFactory它的主要任务是使用 URL 信息来查找 URL 虚拟目录和汇集的 HttpApplication 对象之间的匹配关系。 这个工厂类的行为概括为有以下几点 1、工厂类维护, HttpApplication 对象池并使用它们来处理应用程序的请求。池的寿命与应用程序的寿命相同。 2、应用程序的第一个请求到达时,工厂类提取有关... 阅读全文
艾伟_转载:用C#打造"QQ对战平台挤房器"
2011-08-29 00:20 by 狼人:-), 232 阅读, 0 推荐, 收藏,
摘要:一、什么是“QQ对战平台挤房器”? 喜欢在“QQ对战平台”或“浩方对战平台”玩游戏的人都知道。平常平台上的房间基本很多都是人满的,如果想找个房间,那可是要费好长的时间来“挤”才能进去,如果是节假日或晚上,那更要花费更多的时间在“挤”房上了,如下图: 而对于“QQ对战平台”,如果房间已满挤不进去,却变态的还会弹出两次提示!平时,就只有拼命的按“回车键”或“空格键”关闭这两个讨厌的弹出窗口,然后再用鼠标点房间,如果房间还是进不去,就只能再按上面来一次循环……一次、两次不是问题;五次、十次也许还不是问题;但如果十几次或上百次还是挤不进去,还手按那就有问题了!当然,如果你喜欢手虐那就另外说了-_... 阅读全文
艾伟_转载:ASP.NET URL双向改写的实现
2011-08-29 00:20 by 狼人:-), 204 阅读, 0 推荐, 收藏,
摘要:我们在进行Web程序开发时,为了进行搜索引擎优化(SEO),往往需要对web的访问地址进行优化,如将http://localhost/Default.aspx?tab=performance修改为http://localhost/Default_performance.aspx,后一个地址能够更好地被搜索引擎搜索到,从而达到了搜索引擎优化的目的。微软有一个开源类库URLRewriter可以非常方便地实现url改写,通过配置在web.config文件中的映射表将用户的请求重定向到具体的页面中,我在“使用URLRewriter进行URL重写失效”一文中详细介绍了如何使用这个类库,该类库是通过a.. 阅读全文
艾伟_转载:MVC和MVP的一些思考
2011-08-29 00:20 by 狼人:-), 155 阅读, 0 推荐, 收藏,
摘要:这篇文章是我近期对MVC和MVP的一些思考,在使用MVC/MVP模式的过程中曾经走过一些弯路。呵呵,现在虽然改正了某些弯路,但不保证改正了所有的弯路(例如对渲染的理解),所以请阅读这篇文章的朋友不吝发挥你们的质疑。 写这篇文章也是想知道自己还有什么地方是错的,我的最终方案是否可行? 有交流才会有进步。你有一个苹果,我有一个苹果,我们交换后仍各有一个苹果,你有一个思想,我有一个思想,我们交换后......会有N个思想 :p 1. MVC的理解误区 以下是我以前对MVC模式的理解误区: 1. 认为Model是指失血模型的实体类(Entity),是作为View和Controller之间... 阅读全文
艾伟_转载:WCF基本异常处理模式[中篇]
2011-08-29 00:20 by 狼人:-), 154 阅读, 0 推荐, 收藏,
摘要:通过WCF基本的异常处理模式[上篇], 我们知道了:在默认的情况下,服务端在执行某个服务操作时抛出的异常(在这里指非FaultException异常),其相关的错误信息仅仅限于服务端可见,并不会被WCF传递到客户端;如果将开启了IncludeExceptionDetailInFaults的ServiceDebug服务行为通过声明(通过在服务类型上应用ServiceBehaviorAttrite特性)或者配置的方式应用到相应的服务上,异常相关的所有细节信息将会原封不动地向客户端传送。 这两种方式体现了两种极端的异常传播(Exception Propagation)机制,对于基于服务操作... 阅读全文
艾伟_转载:WCF基本异常处理模式[上篇]
2011-08-29 00:20 by 狼人:-), 214 阅读, 0 推荐, 收藏,
摘要:由于WCF采用.NET托管语言(C#和NET)作为其主要的编程语言,注定以了基于WCF的编程方式不可能很复杂。同时,WCF设计的一个目的就是提供基于非业务逻辑的通信实现,为编程人员提供一套简单易用的应用编程接口(API)。WCF编程模式的简单性同样体现在异常处理上面,本篇文章的主要目的就是对WCF基于异常处理的编程模式做一个简单的介绍。 一、当异常从服务端抛出 对于一个典型的WCF服务调用,我个人倾向于将潜在抛出的异常费为两种类型:应用异常(Application Exception)和基础结构(Infrastructure Exception)。前者为应用级别,主要体现为执行某... 阅读全文
艾伟_转载:[你必须知道的.NET】object成员,不见了!
2011-08-29 00:20 by 狼人:-), 183 阅读, 0 推荐, 收藏,
摘要:在.NET世界了,object是公认的造物主,其麾下的7大成员,个顶个的横行在任何系统的任何代码角落。 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->public class Object{ public Object(); public virtual bool Equals(object obj); public static bool Equals(object objA, object objB); publ... 阅读全文
艾伟_转载:WCF基本异常处理模式[下篇]
2011-08-29 00:20 by 狼人:-), 209 阅读, 0 推荐, 收藏,
摘要:从FaultContractAttribute的定义我们可以看出,该特性可以在同一个目标对象上面多次应用(AllowMultiple = true)。这也很好理解:对于同一个服务操作,可能具有不同的异常场景,在不同的情况下,需要抛出不同的异常。 1: [AttributeUsage(AttributeTargets.Method, AllowMultiple = true, Inherited = false)] 2: public sealed class FaultContractAttribute : Attribute 3: { 4: ... 阅读全文
艾伟_转载:二十行C#代码打造Ruby Markup Builder
2011-08-29 00:20 by 狼人:-), 175 阅读, 0 推荐, 收藏,
摘要:从.NET诞生之日起就有了XML类库,但是从使用上来说非常不方便。例如我们需要构造一个XML文档时,使用DOM API就要这样搞:
var xmlDoc = new XmlDocument();
var rootEle = xmlDoc.CreateElement("persons");
xmlDoc.AppendChild(rootEle);
var person1 = xmlDoc.CreateElement("person");
person1.InnerText = "Tom";
var person1Age = xmlDoc 阅读全文
艾伟_转载:.NET委托:一个C#睡前故事
2011-08-29 00:20 by 狼人:-), 206 阅读, 0 推荐, 收藏,
摘要:英文版原作者:Chris Sells(www.sellsbrothers.com) 翻译:袁晓辉(www.farproc.com http://blog.csdn.net/uoyevoli) 原文地址: http://dev.csdn.net/article/82/82644.shtm 紧耦合 从前,在南方一块奇异的土地上,有个工人名叫彼得,他非常勤奋,对他的老板总是百依百顺。但是他的老板是个吝啬的人,从不信任别人,坚决要求随时知道彼得的工作进度,以防止他偷懒。但是彼得又不想让老板呆在他的办公室里站在背后盯着他,于是就对老板做出承诺:无论何时,只要我的工作取得了一点... 阅读全文
艾伟_转载:用C#实现基于TCP协议的网络通讯
2011-08-29 00:20 by 狼人:-), 203 阅读, 0 推荐, 收藏,
摘要:TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程。然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实现不是一天两天的功夫,所幸的是在.net framework环境下,我们不必要去追究TCP协议底层的实现,一样可以很方便的编写出基于TCP协议进行网络通讯的程序。 要进行基于TCP协议的网络通讯,首先必须建立同远程主机的连接,连接地址通常包括两部分——主机名和端口,如www.yesky.com:80中,www.yesky.com就是主机名,80指主机的80端口,当然,主机名也可以用IP地... 阅读全文
艾伟_转载:从MySpace基于.NET平台的六次重构经历,来感受分布式
2011-08-29 00:20 by 狼人:-), 185 阅读, 0 推荐, 收藏,
摘要:Myspace和Facebook都是很优秀的社交类网站,它们拥有的用户和fans之多,大家都很清楚。 Myspace是一个基于.NET平台的,而Facebook更多是基于LAMP的。 我们来看看MySpace配合.NET+Windows Server 2003+Sql Server 2000/2005+IIS怎么创造传奇的 文章正文如下: 在每个里程碑,站点负担都会超过底层系统部分组件的最大载荷,特别是数据库和存储系统。接着,功能出现问题,用户失声尖叫。最后,技术团队必须为此修订系统策略。虽然自2005年早期,站点账户数超过7百万后,系统架构到目前为止保持了相对稳定,但MyS... 阅读全文
浙公网安备 33010602011771号