05 2013 档案
摘要:前言代理模式:为其他对象提供一种代理以控制对这个对象的访问。结构图Subject类,定义了RealSubject和Proxy的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy。RealSubject类,定义Proxy所代表的真实实体Proxy类,保存一个引用使得代理可以访问实体,并提供一个与Subject的接口相同的接口,这样代理就可以来替代实体。实例代码Subject类 public abstract class Subject { public abstract void Request(); }RealSubject类 pu...
阅读全文
摘要:前言装饰模式:动态の给一个对象添加有些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式结构图Component是定义一个对象接口,可以给这些对象动态添加职责ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责Decorator装饰抽象类,继承了Component,从外类来扩展Componnt类的功能,但对于Component来说,是无需知道Decorator的存在的代码实现Component类 public abstract class Component { public abstract void Operatio...
阅读全文
摘要:前言策略模式:它定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。策略模式结构图Strategy:策略类,定义所有支持的算法的公共接口ConcreteStrategy1,ConcreteStrategy2,ConcreteStrategy3这三个是具体策略类,封装了具体的算法或行为,继承于StrategyContext上下文,用一个ConcreteStrategy来配置,维护一个对Strategy对象的引用。代码实现简单了解了一下,策略模式的定义和它的模式结构图之后,我们现在通过代码进行进一步的了解。Strategy类,定义所有支持的算法的公共
阅读全文
摘要:Obsolete 属性将某个程序实体标记为一个建议不再使用的实体。每次使用被标记为已过时的实体时,随后将生成警告或错误,这取决于属性是如何配置的。例如:上面在Main函数中调用,只产生了一个警告的信息。如果将MyObsolete类中的GetName方法属性,设置中的false改为true这样可以看到产生了一个错误信息using System;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { MyObsolete.GetNa...
阅读全文
摘要:调用方式如下<iframe id="ifm" name="ifm" onload="SetIFrameHeight('ifm')" src="http://www.qq.com" />functionSetIFrameHeight(down){varSys={};varua=navigator.userAgent.toLowerCase();vars;(s=ua.match(/msie([\d.]+)/))?Sys.ie=s[1]:(s=ua.match(/firefox\/([\d.]
阅读全文
摘要:我们都知道,在asp.net中修改了配置文件web.config后,会导致应用程序重启,所有会话(session)丢失。然而,应用程序的配置信息放在配置文件里是最佳选择,在后台修改了配置后导致所有会话丢失是非常不爽的事情,这个时候可将配置文件中经常需要改变的参数配置节放到外面来,例如appSetting节。1.来个最简单的小例子<?xml version="1.0"?><configuration> <appSettings> <add key="test" value="aehyok"/&g
阅读全文
摘要:前言 JSON和JSONP虽然只有一个字母的差别,但其实他们根本不是一回事儿:JSON是一种数据交换格式,而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。什么是Json? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。..
阅读全文
摘要:这么简单的问题,我都忘记了,不知道你们还记得吗,希望你们都还记得?using System;public class Test{ public static void Main() { string str1 = "abced.,.某某某"; int len2 = str1.Length; int leng = System.Text.Encoding.Default.GetBytes(str1.ToCharArray()).Length; Console.WriteLine(...
阅读全文
摘要:单一职责原则单一职责原则,就一个类而言,应该仅有一个引起它变化的原因。 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力,当变化发生时,设计会遭受到意想不到的破坏。事实上,我们完全可以找出来进行分类,分离。 软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。其实要去判断是否应该分离出类来,也不难,那就是如果你能够想到多余一个的动机去改变一个类,那么这个类就具有都与一个的职责,就应该考虑类的职责分离。开放-封闭原则开放-封闭原则,是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。 ...
阅读全文
摘要:前言对于这转换其实很简单,其中最重要的就是先要引用类库。可以到官网进行下载引用http://json.codeplex.com。前两天学习了Jquery ajax提交Json后台处理文章链接为http://www.cnblogs.com/aehyok/archive/2013/05/18/3085499.htmlXML转换为Json字符串 string xml = @"<?xml version=""1.0"" standalone=""no""?> <root> <pers
阅读全文
摘要:前言抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式最大的好处便是易于交换产品系列,由于具体工厂类,例如IFactory factory=new AccessFactory(),在一个应用中只需要在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,它只需要改变具体工厂即可使用不同的产品配置。我们的设计不能去防止需要的变更,那么我们的理想便是让改动变得最小,那么现在如果你要更改数据库访问,我们只需要更改具体工厂就可以做到。第二大好处是,它让具体的创建实例过程与客户端分离,客户端是通过他们的抽象接口操纵实例,产品的具体类名也被具体工厂的
阅读全文
摘要:前言在第一回合中留下的问题,http://www.cnblogs.com/aehyok/archive/2013/05/19/3087497.html,现在就先处理一个简单的,只添加一个Department表。第二回合首先要建立部门类,假设只有两个字段部门ID,和部门名称。 public class Department { public int ID { get; set; } public string DeptName { get; set; } }下面看一下添加了部门表的UML类图IDpartment接口,用于客户端访问,解除与具体数据库访...
阅读全文
摘要:前言首先关于抽象工厂模式的学习,我们需要慢慢的,由浅入深的进入。不能单刀直入,否则可能达不到预期学明白的目标。第一回合 首先我们从最简单的数据访问程序开始吧。下面先来看一个简单的小例子,代码很简单public class User{ public int ID{get;set;} public string Name{get;set;}}一个简单的实体类,也相当于在SqlServer数据库中建立了相同的数据表public class SqlServerUser{ public void Insert(User user) { Console.WriteL...
阅读全文
摘要:前言 jQuery提供的ajax方法能很方便的实现客户端与服务器的异步交互,在asp.net mvc 框架使用jQuery能很方便地异步获取提交数据,给用户提供更好的体验! 调用jQuery的ajax方法时,jQuery会根据post或者get协议对参数data进行序列化; 如果提交的数据使...
阅读全文
摘要:造成此错误常常是将日期加载到了DataSet,而不能转换。可以看到上述日期字符串当中18后面存在一个空格,就是这个空格导致的不是一个有效的AllXsd值。想让此字符串日期转换为有效的格式,可以用T来替换掉18后面的空格。在程序中可以这样处理。首先可以看到已经获取到了一个字符串格式的日期。然后可以通过DateTime.Parse将字符串转换为日期格式类型。最后将日期格式通过如上转换即可得到想要的字符串日期了。你也可以直接用date.ToString("s"),同样可以得到想要的结果。接下来就可以顺利的将其转换到DataSet数据集中了。下面来了解一下DateTime.ToSt
阅读全文
摘要:前言catch 和 finally 一起使用的常见方式是:在 try 块中获取并使用资源,在 catch 块中处理异常情况,并在 finally 块中释放资源。Catch catch 这将捕获任何发生的异常。 catch(Exception e) 这将捕获任何发生的异常。另外,还提供e参数,你可以在处理异常时使用e参数来获得有关异常的信息。 catch(Exception的派生类 e) 这将捕获派生类定义的异常,例如,我想捕获一个无效操作的异常,可以如下写: catch(InvalidOperationException e) { .... } 这样,如果try语句块中抛出的异常是Inv...
阅读全文
摘要:前言工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化那一个类。工厂方法使一个类的实例化延迟到其子类。简单工厂模式(http://www.cnblogs.com/aehyok/archive/2013/05/10/3072008.html)的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。工厂方法模式实现时,客户端需要决定实例化那一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移动到了客户端代码来进行。你想要加功能,本来是改工厂类的(简单工厂模式),而现在是修改客户端。工
阅读全文
摘要:前言 简单工厂模式根据提供的数据或者参数返回几个可能的类中的一个实例,说通俗点有点像面向对象编程中的多态性,一个基类,有多个派生类,在另外的调用程序中,根据参数来决定返回这个基类的哪个具体的派生类,返回值为基类类型,因为基类的引用可以指向派生类对象,而且这些所有的派生类都包含有基类的函数,也就是说派生类中有相同的函数,但是函数的实现可能不同。下面我只是来演示一下简单工厂模式,代码不会太复杂。所以大家可以使用Submile Text工具。使用方法博客文章链接http://www.cnblogs.com/aehyok/archive/2013/05/05/3059087.html可直接编译运行查.
阅读全文
摘要:前言Google免费为我们提供了代码管理的SVN服务器。首先我这里用的Win7 64的电脑系统,用VS2010进行的代码开发。这里管理代码需要以下准备(现在用的都是最新的版本):1.(SVN)TortoiseSVN-1.7.12.24070-x64-svn-1.7.9 下载地址链接http://url.cn/FTvkSk当然也可以在官网进行下载2.VisualSVN-3.0.5下载地址链接http://url.cn/G8CRXN当然也可以在官网进行下载3.在google下注册@gmail的邮箱内容1.上面两个工具都下载并进行安装后,在http://www.google.com.hk/进行注册帐
阅读全文
摘要:前言单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。单例模式 public class Singleton { private static Singleton instance; private static readonly object SyncRoot = new object(); ///程序...
阅读全文
摘要:前言log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。本文主要是简单的介绍如何在Visual Studio2010(Asp.Net Mvc3.0)中使用log4net快速创建系统日志,如何扩展以输...
阅读全文
摘要:1.让文本框只允许输入数字,运用asp.net mvc3.0的文本框控件。@Html.TextBox("txt",null, new {@style="width:300;",onkeypress="return RegValidateIsDigit(event)" })可以看到在文本框中注册了onkeypress事件,当在文本框中输入一个字符按下键盘的时候就会触发该JavaScript的函数<script type="text/javascript"> function RegValidateIsDi
阅读全文
摘要:前言正则表达式是一个描述字符模式的对象。JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法。在JavaScript中,正则表达式是由一个RegExp对象表示的.当然,可以使用一个RegExp()构造函数来创建RegExp对象,也可以用JavaScript 1.2中的新添加的一个特殊语法来创建RegExp对象.就像字符串直接量被定义为包含在引号内的字符一样,正则表达式直接量也被定义为包含在一对斜杠(/)之间的字符.所以,JavaScript可能会包含如下的代码:var pattern = /s$/;这行代码创建一个新的Reg
阅读全文
摘要:前言前两天在博客园看到@晴天猪的博客发表的关于他使用的代码编辑器,自己索性试了一下,果断好用,自己也来记录一下。以便以后配置使用。接下来我配置的主要是简单的编译C#代码的。配置一调用C#编译器我现在电脑的系统为Win7哦。我要将C#编译器的csc.exe文件添加到环境变量中。首先我的电脑==右键属性...
阅读全文
摘要:经过前几节系列文章,现在只剩下利用swfupload来上传图片的功能了,在ExtJs十一(ExtJs Mvc图片管理之一)中有它的下载地址和加入项目的说明。使用swfupload最麻烦的地方是要有一个HTML元素让它嵌入加载Flash的HTML代码,而且这个HTML元素必须覆盖住Flash来实现功能,这个有点类似做单按钮的上传按钮。现在,先为swfupload生成一个HTML元素来实现它的功能。实现方法是在显示图片的视图底部添加一个工具栏,然后将工具栏分成两部分,第一部分显示一个SPAN元素,第二部分显示一个进度条来指示上传进度。在PicManager.js文件中,找到me.items这句代码
阅读全文
摘要:前言根据上一节中http://www.cnblogs.com/aehyok/archive/2013/05/02/3054615.html对多线程的入门了解。本节就来探讨一下简单的使用多线程。使用多线程 线程用Thread类来创建, 通过ThreadStart委托来指明方法从哪里开始运行,下面是ThreadStart委托如何定义的:public delegate void ThreadStart();调用Start方法后,线程开始运行,线程一直到它所调用的方法返回后结束。下面是一个例子,使用了C#的语法创建TheadStart委托: class Program { ...
阅读全文
摘要:前言C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行。一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为“主线程”)自动创建的,并具有多线程创建额外的线程。简单示例说明这里的一个简单的例子及其输出 static void Main(string[] args) { System.Threading.Thread thread = new System.Threading.Thread(WriteY); thread.Start(); while...
阅读全文
摘要:前言本节主要来记录一下客户端发送请求的参数自动绑定为强类型的成员属性或方法参数也就是Model的绑定体现在从当前请求提取相应的数据绑定到目标Action方法的参数。IModelBinder用于进行Model绑定的ModelBinder对象实现了接口IModelBinder。如下面的代码片断所示,IModelBinder接口具有唯一的BindModel方法用于实现针对某个参数的绑定操作,该方法的返回值表示的就是最终作为参数值的对象。用于进行Model绑定的ModelBinder对象实现了接口IModelBinder。如下面的代码片断所示,IModelBinder接口具有唯一的BindModel方
阅读全文
摘要:现在来实现排序的问题。要实现远程排序,首先要清楚的是排序信息是如何提交到服务器的,而这个,利用FireBug相当简单。在VS,切换到PicManager.js文件,找到filestore的定义,先将renmoteSort修改为true。然后添加sorters配置项,代码如下: sorters: [ { property: "modify", direction: "DESC" } ],这段代码的意思就是默认排序的字段为modify,排序方向为顺序排序。那么,这个方法要怎么写呢?首先,要让该方法知道,它要提取的字段包括那些...
阅读全文