摘要: 掌握HTTP虽然不是必须的,但是如果你知道它的工作原理,那么在学习JSP开发中的某些知识就可以易如反掌了。一,HTTP协议详解之URL篇http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。HTTP URL (URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下:http://host[":"port][abs_path]http表示要通过HTTP协议来定位网络资源;host表示合法的Interne 阅读全文
posted @ 2011-02-19 00:29 Nopcn 阅读(780) 评论(2) 推荐(0) 编辑
摘要: 学习设计模式,UML类图是基础,通过UML类图,能更好地和大家交流,也能很容易就表达出自己的设计想法,它就好比普通话,是一种标准语言。现在流行的主要工具有两种:Rational Rose 和Microsoft Visio,这两种工具都比较易用,选择哪种工具就看个人的喜好了。本人对Microsoft的软件比较有好感,所以自然Microsoft Visio 2003是我的首选。类:矩形框代表一个类(如... 阅读全文
posted @ 2010-10-22 00:14 Nopcn 阅读(572) 评论(3) 推荐(0) 编辑
摘要: 概述: 单例模式又称单件模式,模式用来创建独一无二的只有一个实例的对象,并提供一个全局访问点。 经典的单例模式实现: 1publicclassSingleton2{3privatestaticSingletoninstance=null;45publicstaticSingletonInstance6{7get8{9if(instance==null)10{1112instance=newSingleton();13}14returninstance;15}16}17 }这种方式存在的缺点是线程不安全,当出现多线程情况的时候,有多可能出现多个实例。 解决方法是采用lock... 阅读全文
posted @ 2010-10-22 00:10 Nopcn 阅读(344) 评论(0) 推荐(0) 编辑
摘要: C# 中的析构函数实际上是重写了 System.Object 中的虚方法 Finalize 三种最常的方法如下: 1. 析构函数;(由GC调用,不确定什么时候会调用) 2. 继承IDisposable接口,实现Dispose方法;(可以手动调用。比如数据库的连接,SqlConnection.Dispose(),因为如 果及时释放会影响数据库性能。这时候会用到这个,再如:文件的打开,如果不释放会影响其它操作,如删除操作。调用Dispose后这个对象就不能再用了, 就等着被GC回收。) 3. 提供Close方法。(类似Dispose但是,当调用完Close方法后,可以通过Open重新打... 阅读全文
posted @ 2010-09-23 00:10 Nopcn 阅读(1039) 评论(2) 推荐(0) 编辑
摘要: 题外话:为了尝鲜,也兴冲冲的安装了Win7,不过兴奋之余却郁闷不已,由于是用Live Writer写博客,写了好几篇草稿,都完成了80%左右,没有备份全部没了。欲哭无泪,只好重写了。Visual Studio + SOS 小实验咋一看标题,觉得有些奇怪,同步块索引和HashCode有啥关系呢。从名字上来看离着十万八千里。在不知道细节之前,我也是这样想的,知道细节之后,才发现这两兄弟如此亲密。我们还是先来用Visual Studio + SOS,看一个东西,下面是作为小白兔的示例代码: 1: using System; 2: public class Program 3: { 4... 阅读全文
posted @ 2010-09-18 07:48 Nopcn 阅读(449) 评论(0) 推荐(0) 编辑
摘要: 大家都知道引用类型对象除实例字段的开销外,还有两个字段的开销:类型指针和同步块索引(SyncBlockIndex)。同步块索引这个东西比起它的兄弟类型指针更少受人关注,显得有点冷落,其实此兄功力非凡,在CLR里可谓叱咤风云,很多功能都要借助它来实现。 接下来我会用三篇来介绍同步块索引在.NET中的所作所为。 既然本章副标题是从lock开始,那我就举几个lock的示例: 代码1 1: public class Singleton 2: { 3: private static object lockHelper = new object(); 4: private... 阅读全文
posted @ 2010-09-18 07:45 Nopcn 阅读(420) 评论(3) 推荐(0) 编辑
摘要: 反射的概述: 反射的定义:审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等。 System.reflection命名空间包含的几个类,允许你反射(解析)这些元数据表的代码 System.Reflection.Assembly System.Reflection.MemberInfoSystem.Reflection.EventInfoSystem.Reflection.FieldInfoSystem.Reflection.MethodBaseSystem.Reflec. 阅读全文
posted @ 2010-05-23 22:56 Nopcn 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 1、 什么是反射2、 命名空间与装配件的关系3、 运行期得到类型信息有什么用4、 如何使用反射获取类型5、 如何根据类型来动态创建对象6、 如何获取方法以及动态调用方法7、 动态创建委托1、什么是反射 Reflection,中文翻译为反射。 这是.Net中获取运行时类型信息的方式,.Net的应用程序由几个部分:‘程序集(Assembly)’、‘模块(Module)’、‘类型(class)’组成,而反射提供一种编程的方式,让程序员可以在程序运行期获得这几个组成部分的相关信息,例如: Assembly类可以获得正在运行的装配件信息,也可以动态的加载装配件,以及在装配件中查找类型信息,并创建该类型的 阅读全文
posted @ 2010-05-23 22:54 Nopcn 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 摘 要:构造函数与析构函数是一个类中看似较为简单的两类函数,但在实际运用过程中总会出现一些意想不到的运行错误。本文将较系统的介绍构造函数与析构函数的原理及在C#中的运用,以及在使用过程中需要注意的若干事项。 关键字:构造函数;析构函数;垃圾回收器;非托管资源;托管资源 一.构造函数与析构函数的原理 作为比C更先进的语言,C#提供了更好的机制来增强程序的安全性。C#编译器具有严格的类型安全检查功能,它几乎能找出程序中所有的语法问题,这的确帮了程序员的大忙。但是程序通过了编译检查并不表示错误已经不存在了,在“错误”的大家庭里,“语法错误”的地位只能算是冰山一角。级别高的错误通常隐藏得很深,... 阅读全文
posted @ 2010-05-23 21:33 Nopcn 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 组件编程不是对传统面向对象的抛弃,相反组件编程正是面向对象编程的深化和发展。类作为面向对象的灵魂在C#语言里有着相当广泛深入的应用,很多非常“Sharp”的组件特性甚至都是直接由类包装而成。对类的深度掌握自然是我们“Sharp XP”重要的一环。 类 C#的类是一种对包括数据成员,函数成员和嵌套类型进行封装的数据结构。其中数据成员可以是常量,域。函数成员可以是方法,属性,索引器,事件,操作符,实例构建器,静态构建器,析构器。除了某些导入的外部方法,类及其成员在C#中的声明和实现通常要放在一起。 C#用多种修饰符来表达类的不同性质。根据其保护级C#的类有五种不同的限制修饰符: public可以被 阅读全文
posted @ 2010-05-23 20:52 Nopcn 阅读(331) 评论(0) 推荐(0) 编辑
摘要: ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。它们的区别是:1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。 2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。 3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。 注:在C#中,方法的参数传递有四种类型 阅读全文
posted @ 2010-05-23 01:24 Nopcn 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 工作许久了,可是对C#值类型和C#引用类型却一直无法很好的理解。这两天花了不少时间查找资料,看文章,终于有所收获,在此将自己理解整理出来,方便日后自己查看,同时希望对跟我有一样困惑的朋友有所帮助。废话不多说,下面开始说说怎么理解值类型和引用类型!C#值类型数据直接在他自身分配到的内存中存储数据,而C#引用类型只是包含指向存储数据位置的指针。那么有哪些类型是C#值类型的呢,我把他们归纳成三类:基础数据类型(string类型除外):包括整型、浮点型、十进制型、布尔型。整型包括:sbyte、byte、char、short、ushort、int、uint、long、ulong 这九种类型;浮点型就包括 阅读全文
posted @ 2010-05-23 01:19 Nopcn 阅读(412) 评论(3) 推荐(0) 编辑
摘要: 引言 C#语言自C/C++演变而来。它是现代、简单、完全面向对象和类型安全的。C#语言是微软公司针对.Net平台才推出来的一门新语言,作为.Net平台的第一语言,它几乎集中了所有关于软件开发和软件工程研究的最新成果。面向对象、类型安全、组件技术、自动内存管理、跨平台异常处理、版本控制、代码安全管理…… 在.NET应用程序开发中,不管是WEB Forms(ASP.NET)还是Windows Forms,都涉及到大量对象的事件响应及处理,比如客户在线提交一份订单、或是在Windows窗口上移动鼠标等都将有事件发生。那么在C#中,是怎样声明事件并为事件添加响应方法的呢?下面的文章对此为大家作了详细的 阅读全文
posted @ 2010-05-23 00:28 Nopcn 阅读(874) 评论(0) 推荐(0) 编辑
摘要: C#委托事件2007-09-25 23:49一、委托委托类似于函数指针,但函数指针只能引用静态方法,而委托既能引用静态方法,也能引用实例方法。委托使用分三步:1、委托声明。2、委托实例化。3、委托调用。例程一:程序代码using System;namespace 委托{ delegate int NumOpe(int a,int b); //第一步:委托声明 class Class1 { static void Main(string[] args) { Class1 c1 = new Class1(); NumOpe p1 = new NumOpe(c1.Add); //委托实例化,注意参数 阅读全文
posted @ 2010-05-23 00:11 Nopcn 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 这是一个经常被时时提出来的问题,很多时候我们以为理解了、懂了,但深究一下,我们却发现并不懂。 方法是我们每天都在写得,很多程序员大多都使用实例化方法,而很少使用静态方法,问原因也说不出来所以然,或者简单的回答两者定义的区别,静态方法不需要new就可以使用 实例化方法需要new了以后才可以使用。。。。我们真的理解了吗? 从实际项目开发说起,这里有开发项目的三种方式: 开发项目中把BLL和DAL分开,在BLL调用DAL的代码。 一、在DAL中使用静态方法,不创建实例直接调用(大概有很多人都使用这种方式开发 ) class DAL{public static string GetUserName(. 阅读全文
posted @ 2010-05-23 00:08 Nopcn 阅读(124) 评论(0) 推荐(0) 编辑
摘要: ASP.NET的输出缓存衡量高性能、可缩放的web应用程序最重要的一个指标就是缓存了。ASP.NET提供了高性能的web应用程序的缓存功能,ASP.NET 有三种可由 Web 应用程序使用的缓存: · 输出缓存,它缓存请求所生成的动态响应。 · 片断缓存,它缓存请求所生成的响应的各部分。 · 数据缓存,它以编程方式缓存任意对象。为支持这种缓存,ASP.NET 提供了全功能的缓存引擎,使程序员能够轻松地在请求间保留数据。 页的输出缓存是非常有用的。在海量的访问站点中,有些页面的访问频率占了非常大的比重,即使对这些页使用输出缓存很少的时间,也会减轻系统不少的负担,因为 阅读全文
posted @ 2010-05-22 21:58 Nopcn 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 在前面的文章中,我们已经就.NET Petshop的数据层和中间的业务逻辑层作了说明,接下来的文章中,我们将就数据展示层作探究。与前面的两层有着很大的差别的是,.NET Petshop的展示层用了很多Microsoft最新的web Forms技术即Asp.NET。因此,在解说展示层之前,我想就Asp.NET在.NET Petshop的开发中使用到的非常重要的特性做一些说明,以示区别: (1) Asp.NET代码不再是解释型代码,可以经由JIT编译器编译后运行,并且引入了很好的页面缓冲机制。(2) ASP.Net的配置模型引入了基于XML文件的“零安装”配置模型。零安装的含义是只需将配置文件We 阅读全文
posted @ 2010-05-22 21:57 Nopcn 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 通过前面的文章,我们对.NET Petshop的整个结构有了一个大致的了解,也清楚的知道了数据库的设计模式和实现的细节,尤其值得一提的是通过存储过程访问数据库。在接下来的这篇文章里,我将和大家一起来探究一下.NET Petshop的中间层。根据三层结构的设计原则,中间层封装的是业务逻辑和规则,在这个网络宠物商店的例子中,购物处理,订单处理,帐号管理,产品查询等等都是具体的业务逻辑,至于与用户交互并不是中间层要处理的问题。它处理是与具体的用户界面和交互无关,而仅仅是核心的商业规则和逻辑。.NET Petshop的中间层业务逻辑被封装为一个.NET 组件,它的命名空间为Pet Shop.Compo 阅读全文
posted @ 2010-05-22 21:56 Nopcn 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 交互的三层综述在前面的文章中,我们丛整个系统的角度了解了petshop的三层部署结构物理上的一个概貌,没有从应用程序的角度来说明是如何划分的,也不清楚数据展示层,中间层,数据层是如何交互的。为了更好的说明这个三层的结构以及每一层的具体细节问题,也让大家对整个应用有一个walkthrough,在这里我将说明从系统的角度来看(见参考图1),顾客在购物的过程中,系统的三层是如何的工作以及如何的交互。这个东西有点象UML里面的实例情景故事,对需求和分析的进一步是大有帮助的。图1 .NET Petshop 架构从这个情景中,我们可以很清晰的了解到Internet Customer在购物时系统的运作情形。 阅读全文
posted @ 2010-05-22 21:55 Nopcn 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 前言Microsoft公司为了配合推出.NET战略,不仅发布了一系列的开发工具和开发平台,同时还推出了.NET平台上的示范应用.其中的.Net Petshop就是极好的一例.这个电子商务的开发应用是为了应对J2EE平台而出炉的,在J2EE平台上Sun公司也有一个完整的实例----J2EE Petstore,它体现J2EE的BluePrint。二者解决的问题是一样的,功能也大同小异,界面也是如出一辙。自然是公说公有礼,婆说婆有礼了,我们姑且不管双方怎么声称自己的东西好,但是从中也能足见.NET和J2EE平台上的完美杰作是怎么样的一个实现。在这里,本人无意去争辩问题的胜负,也不打算去探讨J2EE是 阅读全文
posted @ 2010-05-22 21:52 Nopcn 阅读(329) 评论(0) 推荐(0) 编辑