摘要:
TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程。然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实现不是一天两天的功夫,所幸的是在.net framework环境下,我们不必要去追究TCP协议底层的实现,一样可以很方便的编写出基于TCP协议进行网络通讯的程序。 要进行基于TCP协议的网络通讯,首先必须建立同远程主机的连接,连接地址通常包括两部分——主机名和端口,如www.yesky.com:80中,www.yesky.com就是主机名,80指主机的80端口,当然,主机名也可以用IP地... 阅读全文
随笔分类 - [01].NET技术
艾伟_转载:从MySpace基于.NET平台的六次重构经历,来感受分布式
2011-08-29 00:20 by 狼人:-), 185 阅读, 收藏,
摘要:
Myspace和Facebook都是很优秀的社交类网站,它们拥有的用户和fans之多,大家都很清楚。 Myspace是一个基于.NET平台的,而Facebook更多是基于LAMP的。 我们来看看MySpace配合.NET+Windows Server 2003+Sql Server 2000/2005+IIS怎么创造传奇的 文章正文如下: 在每个里程碑,站点负担都会超过底层系统部分组件的最大载荷,特别是数据库和存储系统。接着,功能出现问题,用户失声尖叫。最后,技术团队必须为此修订系统策略。虽然自2005年早期,站点账户数超过7百万后,系统架构到目前为止保持了相对稳定,但MyS... 阅读全文
艾伟_转载:.NET 4.0 Beta2中的BigInteger和Complex类
2011-08-29 00:20 by 狼人:-), 154 阅读, 收藏,
摘要:
.NET4.0 Beta2中提供了新的System.Numerics命名空间,对应于System.Numerics.dll。该命名空间下就两个类BigInteger和Complex,我们来简单了解下这两个类的用法。
BigInteger:任意大小的带符号整数
1.Int64, SByte, UInt16, UInt32, and UInt64这些都有一个MinValue和MaxValue属性。而BigInteger没有这两个属性,因为它没有大小限制。2.不可变的类型.3.由于他没有大小限制,理论上当它足够大的时候会出现OutOfMemoryException异常.
BigInteger初始化
阅读全文
艾伟_转载:C#语言基础常见问题汇总
2011-08-29 00:20 by 狼人:-), 146 阅读, 收藏,
摘要:
概述 1、什么是C#? C#是Microsoft公司设计的一种编程语言。它松散地基于C/C++,并且有很多方面和Java类似。 Microsoft是这样描述C#的:“C#是从C和C++派生来的一种简单、现代、面向对象和类型安全的编程语言。C#(读做‘Csharp’)主要是从C/C++编程语言家族移植过来的,C和C++的程序员会马上熟悉它。C#试图结合Visual Basic的快速开发能力和C++的强大灵活的能力。” 2、如何开发C#应用程序? .NET SDK包括了C#命令行编译器(csc.exe),下一个版本的Visual Studio (Visual Studio... 阅读全文
艾伟_转载:疑惑?改良? 从简单工厂到工厂方法
2011-08-29 00:20 by 狼人:-), 147 阅读, 收藏,
摘要:
写在前面
最近一段时间在研究有关设计模式方面的文章,拜读了TerryLee以及吕震宇两位老师所写的设计模式方面的系列文章,收获颇丰,也让我对OOP,OOD有了新的理解和认识,不过在看到工厂方面的几篇文章时,却总有个地方想不通,望各位老师专家能替在下答疑解惑,以下是自己对工厂模式的一些理解以及提出的一种改良方案,不知道是否有人提出过类似的方案,如有雷同纯属巧合。有说得不对的地方还请批评指正。 从简单工厂说起
严格来讲简单工厂并不属于GOF的23个设计模式之一,但它之所以存在而被人们广泛认知的原因,我想是由于它在一定程度上简化了工厂方法(Factory Method)与抽象工厂(Abst... 阅读全文
艾伟_转载:C#来创建和读取XML文档
2011-08-29 00:20 by 狼人:-), 148 阅读, 收藏,
摘要:
扩展标记语言XML(eXtensible Markup Language),是由W3C组织制定的。做为用于替代HTML语言的一种新型的标记语言,XML内部有着很多基本标准,XML就是通过与这些相关标准地结合,应用于科学计算、电子出版、多媒体制作和电子商务的。C#作为一种新型的程序语言,是.Net框架的一个重要组成部分,他和XML的关系颇深。本文就从一个方面来探讨一下这二者的关系。即:看用C#如何来创建和读取XML文档。 一.本文程序设计和运行的软件环境 (一)微软公司视窗2000服务器 (二).Net FrameWork SDK Beta 2 二.C#创建XML文档 在本文中我... 阅读全文
艾伟_转载:在C#中实现3层架构
2011-08-29 00:20 by 狼人:-), 178 阅读, 收藏,
摘要:
这篇文章讨论如何在c#中实现3层架构,使用MS Access数据库存储数据。在此,我在3层架构中实现一个小型的可复用的组件保存客户数据。并提供添加,更新,查找客户数据的功能。 背景 首先,我介绍一些3层架构的理论知识。简单说明:什么是3层架构?3层架构的优点是什么? 什么是3层架构? 3层架构是一种“客户端-服务器”架构,在此架构中用户接口,商业逻辑,数据保存以及数据访问被设计为独立的模块。主要有3个层面,第一层(表现层,GUI层),第二层(商业对象,商业逻辑层),第三层(数据访问层)。这些层可以单独开发,单独测试。 为什么要把程序代码分为3层。把用户接口层,商业逻辑层,数据访问... 阅读全文
艾伟_转载:TreeView节点定位的另外一种方法TreeNode.FromHandle
2011-08-29 00:20 by 狼人:-), 202 阅读, 收藏,
摘要:
Winform 里面的TreeView是一种常见的、功能强大的控件,一般的使用大家可能都是比较熟悉的了,估计我们大多数做定位节点的时候,一般都是采用循环查找的方法。如下面的方法所示 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> foreach (TreeNode node in this.TreeView1.Nodes) { if (node.Text == "要找的节点名称") { return node... 阅读全文
艾伟_转载:用C#设计Windows应用程序模板
2011-08-29 00:20 by 狼人:-), 214 阅读, 收藏,
摘要:
通常windows应用程序都有相似的特征:控件、菜单、工具条、状态栏等等。每次我们开始作一个新的windows应用程序时都是以相同的事情开始:建立项目,添加控件和事件处理器。如果我们有一个模板,那么我们就可以节约大量的时间了。 在介绍如何建立模板的过程中,将涉及大量的微软.net framework类库的基本知识。如果你没有使用集成开发环境那么本文介绍的模板对你将非常有用,如果你使用了visual studio.net这样的集成开发环境你也可以从中了解控件的工作方式,这对你也是很有用的。 写一个windows应用程序总是从下面的几个步骤开始: 1、创建一个窗体 2、给窗体添加控件... 阅读全文
艾伟_转载:对于C#中b=a的N种情况分析
2011-08-29 00:20 by 狼人:-), 162 阅读, 收藏,
摘要:
本文旨在验证一个容易混淆的概念,从而为《玩转WPF/Silverlight中INotifyPropertyChanged和ObservableCollection》做铺垫。 两个相同类型的变量a和b,并且有如下关系:
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->b=a; 如果a发生改变,b是否也发生改变呢? 情况很复杂,分以下几种情况谈论: 1) 单个实体 1. 简单类型 先考察int:
Code highlight... 阅读全文
艾伟_转载:C# .NET学习经验总结
2011-08-29 00:20 by 狼人:-), 189 阅读, 收藏,
摘要:
1. 装箱、拆箱还是别名 许多介绍C# .NET学习经验的书上都有介绍 int -> Int32
是一个装箱的过程,反之则是拆箱的过程。许多其它变量类型也是如此,如:short <-> Int16,long <->
Int64
等。对于一般的程序员来说,大可不必去了解这一过程,因为这些装箱和拆箱的动作都是可以自动完成的,不需要写代码进行干预。但是我们需要记住这些类型之间
的关系,所以,我们使用“别名”来记忆它们之间的关系。 C# 是全面向对象的语言,比 Java
的面向对象都还彻底——它把简单数据类型通过默认的装箱动作封装成了类。Int32、Int16、Int64 阅读全文
艾伟_转载:C# 委托的同步调用和异步调用
2011-08-29 00:20 by 狼人:-), 189 阅读, 收藏,
摘要:
委托的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 狼人:-), 212 阅读, 收藏,
摘要:
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。 1、.NET可执行应用程序结构 程序代码在编译后生成可执行的应用,我们首先要了解这种可执行应用程序的结构。 应用程序结构分为应用程序域—程序集—模块—类型—成员几个层次,公共语言运行库加载器管理应用程序域,这种管理包括将每个程序集加载到相应的应... 阅读全文
艾伟_转载:HttpApplication的认识与加深理解
2011-08-29 00:20 by 狼人:-), 155 阅读, 收藏,
摘要:
HttpApplication对象是经由HttpApplicationFactory.GetApplicationInstance(并最终调用HttpRuntime.CreateNonPublicInstance)创建的HttpApplicationFactory它的主要任务是使用 URL 信息来查找 URL 虚拟目录和汇集的 HttpApplication 对象之间的匹配关系。 这个工厂类的行为概括为有以下几点 1、工厂类维护, HttpApplication 对象池并使用它们来处理应用程序的请求。池的寿命与应用程序的寿命相同。 2、应用程序的第一个请求到达时,工厂类提取有关... 阅读全文
艾伟_转载:用C#打造"QQ对战平台挤房器"
2011-08-29 00:20 by 狼人:-), 230 阅读, 收藏,
摘要:
一、什么是“QQ对战平台挤房器”? 喜欢在“QQ对战平台”或“浩方对战平台”玩游戏的人都知道。平常平台上的房间基本很多都是人满的,如果想找个房间,那可是要费好长的时间来“挤”才能进去,如果是节假日或晚上,那更要花费更多的时间在“挤”房上了,如下图: 而对于“QQ对战平台”,如果房间已满挤不进去,却变态的还会弹出两次提示!平时,就只有拼命的按“回车键”或“空格键”关闭这两个讨厌的弹出窗口,然后再用鼠标点房间,如果房间还是进不去,就只能再按上面来一次循环……一次、两次不是问题;五次、十次也许还不是问题;但如果十几次或上百次还是挤不进去,还手按那就有问题了!当然,如果你喜欢手虐那就另外说了-_... 阅读全文
艾伟_转载:ASP.NET URL双向改写的实现
2011-08-29 00:20 by 狼人:-), 203 阅读, 收藏,
摘要:
我们在进行Web程序开发时,为了进行搜索引擎优化(SEO),往往需要对web的访问地址进行优化,如将http://localhost/Default.aspx?tab=performance修改为http://localhost/Default_performance.aspx,后一个地址能够更好地被搜索引擎搜索到,从而达到了搜索引擎优化的目的。微软有一个开源类库URLRewriter可以非常方便地实现url改写,通过配置在web.config文件中的映射表将用户的请求重定向到具体的页面中,我在“使用URLRewriter进行URL重写失效”一文中详细介绍了如何使用这个类库,该类库是通过a.. 阅读全文
艾伟_转载:HttpModule的认识与深入理解
2011-08-29 00:20 by 狼人:-), 186 阅读, 收藏,
摘要:
HttpModule是向实现类提供模块初始化和处置事件。当一个HTTP请求到达HttpModule时,整个ASP.NET Framework系统还并没有对这个HTTP请求做任何处理,也就是说此时对于HTTP请求来讲,HttpModule是一个HTTP请求的“必经之路”,所以可以在这个HTTP请求传递到真正的请求处理中心(HttpHandler)之前附加一些需要的信息在这个HTTP请求信息之上,或者针对截获的这个HTTP请求信息作一些额外的工作,或者在某些情况下干脆终止满足一些条件的HTTP请求,从而可以起到一个Filter过滤器的作用。 首先你要实现IHttpModule接口这个接口只... 阅读全文
艾伟_转载:.NET设计模式:原型模式(Prototype Pattern)
2011-08-29 00:20 by 狼人:-), 159 阅读, 收藏,
摘要:
概述 在软件系统中,有时候面临的产品类是动态变化的,而且这个产品类具有一定的等级结构。这时如果用工厂模式,则与产品类等级结构平行的工厂方法类也要随着这种变化而变化,显然不大合适。那么如何封装这种动态的变化?从而使依赖于这些易变对象的客户程序不随着产品类变化? 意图 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 结构图 Prototype模式结构图 生活中的例子 Prototype模式使用原型实例指定创建对象的种类。新产品的原型通常是先于全部产品建立的,这样的原型是被动的,并不参与复制它自己。一个细胞的有丝分裂,产生两个同样的细胞,是一个扮演主... 阅读全文
艾伟_转载:.NET设计模式:工厂方法模式(Factory Method)
2011-08-29 00:20 by 狼人:-), 137 阅读, 收藏,
摘要:
概述 在软件系统中,经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口。如何应对这种变化?提供一种封装机制来隔离出“这个易变对象”的变化,从而保持系统中“其它依赖该对象的对象”不随着需求的改变而改变?这就是要说的Factory Method模式了。 意图 定义一个用户创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。 结构图 生活中的例子 工厂方法定义一个用于创建对象的接口,但是让子类决定实例化哪个类。压注成型演示了这种模式。塑料玩具制造商加工塑料粉... 阅读全文
艾伟_转载:.NET设计模式:单件模式(Singleton Pattern)
2011-08-29 00:20 by 狼人:-), 184 阅读, 收藏,
摘要:
概述 Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点。这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?客户程序在调用某一个类时,它是不会考虑这个类是否只能有一个实例等问题的,所以,这应该是类设计者的责任,而不是类使用者的责任。 从另一个角度来说,Singleton模式其实也是一种职责型模式。因为我们创建了一个对象,这个对象扮演了独一无二的角色,在这个单独的对象实例中,它集中了它所属类的所有权力,同时它也肩负了行使这种权力的职责! 意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 模型图 逻辑模型图: ... 阅读全文
浙公网安备 33010602011771号