2006年01月24日

      面向对象的三大特性之一就是继承,而使用继承的时候,必须要把握好的就是父类与子类之间的关系..避免使用过多的父子层次..说到关系,最先接触到的则是构造函数..为什么??OK.看下面的代码,大部分的公司面试的时候可能都会有这么一道类似的题..考的目的就是看你对构造函数的理解..

    

 1class a
 2{
 3    public a(int i )
 4    {
 5        Console.WriteLine( "父类初始化" + i );
 6    }

 7    
 8}

 9
10class b:a
11{
12    public b()
13    {
14        Console.WriteLine( "继承类初始化" );
15    }

16    
17}

18
19static void Main(string[] args)
20{
21    b bb = new b();
22}



     看过上面简单的代码,只是段简单的类继承而已..但是如果没有使用过继承,或者没遇到过类似代码..第一反应可能,输出的结果应该是:继承类初始化..

     但是事实恰恰相反.这段代码不会通过编译..报错: 重载“a”方法未获取“0”参数…先来看一下class b的执行过程,当你声明它的时候,会先调用父类
a的构造,再调用子类b自己的构造函数..因为我们的a构造函数必须传递一个int参数,而b构造函数不需要传递参数.这样就造成了矛盾,在使用class b时,系统要先构造出a来,而a的构造函数需要一个参数,此时子类b的构造函数并没有满足a的构造函数,.所以才造成这样的错误..

     解决的办法有很多,最简单的办法就是,可以给父类的构造函数提供一个无参数的构造函数..

 1class a
 2{
 3    public a(int i )
 4    {
 5        Console.WriteLine( "父类初始化" + i );
 6    }

 7    
 8    public a(){
 9        Console.WriteLine( "父类初始化" );
10    }

11
12}


     把class a添加了这么一个无参数的构造函数后,错误就没有了.class b就可以被正常的实例化了.但是这样的情况并不是通用..当你需要在子类中使用父类中的方法,而父类的方法需要根据有参数的构造函数进行初始化某些属性的时候..这个简单的办法就失去了意义…比如,一个父亲,一个儿子,根据火星人类研究基地的报告,一般儿子的IQ是受父亲IQ的影响的,即父亲的IQ直接影响了儿子的IQ…这个时候这个类的设计代码可以如下..

    

 1using System;
 2
 3namespace Overloading
 4{
 5    /// <summary>
 6    /// Class1 的摘要说明。
 7    /// </summary>

 8    class Class1
 9    {
10        /// <summary>
11        /// 应用程序的主入口点。
12        /// </summary>

13        [STAThread]
14        static void Main(string[] args)
15        {
16            b bb = new b(22);
17            Console.WriteLine( "父类的IQ:" + bb.a_IQ );
18            Console.WriteLine( "子类的IQ:" + bb.IQ );
19        }

20    }

21    
22    class a
23    {
24        //public a(){}        这个可以根据情况添加
25        
26        public a( int i ) 
27        {
28            Console.WriteLine( "父类初始化" + i );
29            this._IQ = i;
30        }

31        
32        private int _IQ;
33        public int IQ
34        {
35            get return _IQ; } 
36            set { _IQ = value; } 
37        }

38    }

39    
40    class b:a 
41    {
42        public b():base(0
43        {
44            Console.WriteLine( "继承类初始化" );
45            this._IQ = 1;
46        }

47        
48        public b(int i):base(i) 
49        
50            Console.WriteLine("子类初始化" + i);
51            this._IQ = i;
52        }
 
53        
54        private int _IQ;
55        new public int IQ                    //在这里覆盖了父类的IQ值
56        {
57            get return this._IQ + base.IQ; } //子类的IQ值是父类+子类的IQ
58            set { _IQ = value; }  
59        }

60        
61        public string a_IQ
62        {
63            get return base.IQ.ToString(); } 
64        }

65        
66    }

67}

68


代码运行的结果:


     上面的代码编译后,从结果可以看出来..继承带来了方便的同时,无形中也增加了类设计的复杂度和耦合度..我想,这个也是为什么大多数书籍都推荐我们,使用继承的时候尽量不要有太多的层次关系的原因之一吧..这个就好像,一个父亲有了N个儿子之后,对于国家(框架)和父亲来说,负担都是太大太大了..要照顾的有N个..所以,合理有效的使用继承还是需要研究.琢磨,试验的..明白了上面两个小例子之后,再面试的时候碰到类似的问题,就可以避免失分咯..何况这个题目是如此的简单..这道要是做错了..嘿嘿…后果可想而知哦….

2006年01月22日

 

      送给天下所有的游子们..仅以此文祝福天下所有的母亲,身体健康,福如东海,寿比南山!!写这篇文章,眼睛湿润了一次又一次,短短几百字,写了二个多小时!希望你能认真看完…希望你能明白做母亲的苦心..

     一年了,又是到了回家的时刻,匆匆忙忙收拾完手头的工作,紧绷的心也随之被释放..突然一丝思家的情绪涌上心头,突然想到了逐渐苍老,略显老迈的父亲,年幼的弟弟,妹妹..还有一个生我,养我,抚养我长大,一直教育我做人,为我操心劳累,担心着我的母亲..

     出门前的晚上,母亲依然重复着这样的话:"出去了,不比在家里,一定要好好学,好好做事,不要惹事..不要浮躁..要踏踏实实的做人!".我低声的应着,答应着,鼻子想酸,眼睛想湿润,我忍着.怕母亲担心,操心..当我提着行礼,母亲牵着我的手,陪我走在路上,依然是重复着昨晚的话,一遍又一遍,我依然忍着鼻子的酸.忍着眼睛的湿润…上车了.母亲向我朝着手,喊着我的名字,任凭嘈杂的人声如何喧闹,依然淹没不了母亲的声音..我回应着,回应着…火车缓缓启动..母亲随着火车的移动而移动着,我的眼泪再也忍不住了..不受控制的一滴一滴的落了下来..对着母亲大喊:"妈!!!!妈!!!妈!!!"..

     火车飞驰着,母亲的身影在我的脑海里不停的闪现着,回想着母亲的身影..回想着母亲的声音..回想着母亲嘱咐我的话:"出去了,不比在家里,一定要好好学,好好做事,不要惹事..不要浮躁..要踏踏实实的做人!"..这就是一位平凡的母亲对远行的孩子们说的最多的话…母亲不求你飞黄腾达,不求你能赚多少钱,更不求你光宗耀祖.光耀门楣.母亲只求你平平安安,好好做人!!这是每个母亲对她的孩子们最大的期望..不管你是否在她身边,这始终都是她唯一的期望的..

     转眼,时间飞逝,终于到了年底,离春节越近,心就越不能平静,每天晚上母亲的电话都会询问何时能回去,何时到家,每天如此的重复着,听着母亲语无伦次的说着:"回来了,要回来了,孩儿要回来了.要回来了.终于要回来了..孩儿一个人不容易啊..",我的声音哽咽着,只能从喉咙发出嗯嗯的回答声..当你在外地工作时,母亲默默的思想念着,想念着,为你祈祷着..母爱并没有随着时间的推移而减少分毫..更不会因为距离的遥远而触不可及.反而,随着时间的推移,随着距离,在一点一点的积累,一点一点的存储着..当到达极点的时候,它会爆发!!这个极点就在相见的那一刻..那一秒.和母亲双目相对的时候..

     离家的游子们,好好想想,出门在外的时候,你们为母亲做了什么?母亲又为你们做了什么??要回去了,你不必带多少的礼品,多少的钱,只要带着一刻孝子的心回去就是对母亲的最好的报答!!没事的时候,一个电话,一声问候,一句关心的话,母亲就已经满足了..没事的时候,和母亲多唠唠嗑,和母亲多讲讲你的事情.不要让她担心..如果你能经常听到母亲的笑声,你会感觉到这是世界上最好听的笑声..千万不要有子欲养而亲不在的事情发生在你身上!!这不论在什么时候,什么地方永远都是可悲的!!

     请给你劳心劳力抚养你的母亲一个惊喜,给她一个你可以做到的惊喜..回家吧..回去看看她吧..看看她花白的头发是否又因为思念而增加了,看看她眼角的皱纹是否因为无情的岁月而增加了,看看她那双抚养你长大的双手是否依然温柔,依然温暖…

     向伟大的母亲致敬!

2006年01月18日

对于GDI+,在正常的操作,Bitmap– Graphcis — DrawImage或者DrawString ,生成图片的话,会产生很多杂点,或者是图片质量不稳定..尤其是在读取图片后,生成缩略图之后,文件会被压缩而失真..

主要原因是因为没有重新设置Graphics的几个属性..

1.Graphics.SmoothingMode属性: 例如SmoothingMode.HighQuality可以产生高质量图片,但是效率低.

2.Graphics.CompositingQuality 属性: 例如:CompositingQuality.HighQuality也是产生高质量图,效率低下.

3.Graphics.InterpolationMode 属性,例如:InterpolationMode.HighQualityBicubic与前两个也是同样的效果.

这三个属性的值都是enum,具体的enum参数可以查看MSDN的说明..在这里就我不赘述..
如果是对图片进行放大,缩小,可以调整Graphics.CompositingQuality Graphics.InterpolationMode 两个属性..如果是图片生成,则可以调整Graphics.SmoothingMode属性..

另外一个问题就是关于文字生成的..按照正常的模式生成的文字,可以很明显的看到文字带有锯齿..解决的办法也是需要修改Graphics的一个属性: Graphics.TextRenderingHint…注意一点,修改TextRenderingHint的话,需要引入System.Drawing.Text,例如:Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;

 经过对这四个属性的修改,操作大部分的图片之后,产生的结果都是比较让人满意的..

在这里提供一个简单的例子..是生成印章签名的效果..提供四种字体选择..并产生一个图片..如果你的机器中没有安装指定的几种字体,你需要把字体修改一下…直接把代码拷贝..就可以看到效果…

ASPX页面:

 1<%@ Page language="c#" Codebehind="underWrite.aspx.cs" AutoEventWireup="false" Inherits="testItem.movie.underWrite" %>
 2<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 3<HTML>
 4    <HEAD>
 5        <title>underWrite</title>
 6        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
 7        <meta name="CODE_LANGUAGE" Content="C#">
 8        <meta name="vs_defaultClientScript" content="JavaScript">
 9        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
10    </HEAD>
11    <body MS_POSITIONING="GridLayout">
12        <form id="Form1" method="post" runat="server">
13            <asp:Image id="Image1" style="Z-INDEX: 101; LEFT: 208px; POSITION: absolute; TOP: 360px" runat="server"></asp:Image>
14            <asp:HyperLink id="HyperLink1" style="Z-INDEX: 105; LEFT: 304px; POSITION: absolute; TOP: 312px"
15                runat="server" NavigateUrl="../mv/index.html">大头帖</asp:HyperLink>
16            <asp:TextBox id="name" style="Z-INDEX: 104; LEFT: 208px; POSITION: absolute; TOP: 144px" runat="server"
17                MaxLength="4"></asp:TextBox>
18            <asp:RadioButtonList id="fontType" style="Z-INDEX: 103; LEFT: 208px; POSITION: absolute; TOP: 184px"
19                runat="server" Width="240px">
20                <asp:ListItem Value="方正黄草简体" Selected="True">方正黄草简体</asp:ListItem>
21                <asp:ListItem Value="汉鼎繁淡古">汉鼎繁淡古</asp:ListItem>
22                <asp:ListItem Value="汉鼎繁印篆">汉鼎繁印篆</asp:ListItem>
23                <asp:ListItem Value="经典繁桟亭">经典繁桟亭</asp:ListItem>
24            </asp:RadioButtonList>
25            <asp:Button id="bu" style="Z-INDEX: 102; LEFT: 208px; POSITION: absolute; TOP: 312px" runat="server"
26                Text=" 刻 字 "></asp:Button>
27        </form>
28    </body>
29</HTML>
30



CS文件:

  1using System;
  2using System.Collections;
  3using System.ComponentModel;
  4using System.Data;
  5using System.Drawing;
  6using System.Drawing.Drawing2D;
  7using System.IO;
  8using System.Web;
  9using System.Web.SessionState;
 10using System.Web.UI;
 11using System.Web.UI.WebControls;
 12using System.Web.UI.HtmlControls;
 13
 14namespace testItem.movie
 15{
 16    /// <summary>
 17    ///        生成印章签名
 18    /// </summary>

 19    public class underWrite : System.Web.UI.Page
 20    {
 21        protected System.Web.UI.WebControls.Image Image1;
 22        protected System.Web.UI.WebControls.RadioButtonList fontType;
 23        protected System.Web.UI.WebControls.HyperLink HyperLink1;
 24        protected System.Web.UI.WebControls.Button bu;
 25        protected System.Web.UI.WebControls.TextBox name;
 26        
 27        private void Page_Load(object sender, System.EventArgs e) 
 28        {
 29            Image1.Visible = false;
 30        }

 31
 32        Web 窗体设计器生成的代码
 53
 54        private void Button1_Click(object sender, System.EventArgs e)
 55        {
 56            string Name = name.Text;
 57            if ( Name.Length < 4 ) {
 58                Response.Write( "请输入最少4个字符!" );
 59                return;
 60            }

 61            
 62            string FontName = fontType.SelectedValue;
 63            
 64            int fontSize = 36;
 65            int x = 10;
 66            int y = 10;
 67            
 68            switch( FontName ) {
 69                case "方正黄草简体":
 70                    x = -8;
 71                    y = -2;
 72                    fontSize = 42;
 73                    break;
 74                    
 75                case "汉鼎繁淡古":
 76                    x = -10;
 77                    y = -2;
 78                    break;
 79                
 80                case "汉鼎繁印篆":
 81                    x = -15;
 82                    y = -2;
 83                    break;
 84                
 85                case "经典繁桟亭":
 86                    fontSize = 34;
 87                    x = -10;
 88                    y = -3;
 89                    break;                    
 90            }

 91            
 92            Bitmap bm = new Bitmap(110,100,System.Drawing.Imaging.PixelFormat.Format32bppArgb);
 93            Font font = new Font(FontName,fontSize,FontStyle.Bold);
 94            
 95            Graphics g = Graphics.FromImage( bm );
 96            
 97            g.TextRenderingHint =  System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
 98            
 99            /*    这里的三个属性可以根据情况开放.
100             * 
101            //g.CompositingQuality = CompositingQuality.HighQuality; 
102            //g.SmoothingMode = SmoothingMode.HighQuality; 
103            //g.InterpolationMode = InterpolationMode.HighQualityBicubic; 
104            
105            */

106            g.Clear(Color.Red);        //赋予图像一个背景色
107            
108            g.DrawString( Name.Substring(2,1),font,new SolidBrush(Color.White),0,2 );
109            g.DrawString( Name.Substring(3,1),font,new SolidBrush(Color.White),0,45-y );
110            g.DrawString( Name.Substring(0,1),font,new SolidBrush(Color.White),35-x,2 );
111            g.DrawString( Name.Substring(1,1),font,new SolidBrush(Color.White),35-x,45-y );
112            g.Dispose();
113            //设置保存路径
114            bm.Save( Server.MapPath("../upload/c.jpg"),System.Drawing.Imaging.ImageFormat.Jpeg );
115            bm.Dispose();
116            //显示产生的图片
117            Image1.ImageUrl = Server.MapPath("../upload/c.jpg") ;
118            Image1.Visible = true;
119        }

120    }

121}

122


 1<%@ Page language="c#" Codebehind="underWrite.aspx.cs" AutoEventWireup="false" Inherits="testItem.movie.underWrite" %>
 2<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 3<HTML>
 4    <HEAD>
 5        <title>underWrite</title>
 6        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
 7        <meta name="CODE_LANGUAGE" Content="C#">
 8        <meta name="vs_defaultClientScript" content="JavaScript">
 9        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
10    </HEAD>
11    <body MS_POSITIONING="GridLayout">
12        <form id="Form1" method="post" runat="server">
13            <asp:Image id="Image1" style="Z-INDEX: 101; LEFT: 208px; POSITION: absolute; TOP: 360px" runat="server"></asp:Image>
14            <asp:HyperLink id="HyperLink1" style="Z-INDEX: 105; LEFT: 304px; POSITION: absolute; TOP: 312px"
15                runat="server" NavigateUrl="../mv/index.html">大头帖</asp:HyperLink>
16            <asp:TextBox id="name" style="Z-INDEX: 104; LEFT: 208px; POSITION: absolute; TOP: 144px" runat="server"
17                MaxLength="4"></asp:TextBox>
18            <asp:RadioButtonList id="fontType" style="Z-INDEX: 103; LEFT: 208px; POSITION: absolute; TOP: 184px"
19                runat="server" Width="240px">
20                <asp:ListItem Value="方正黄草简体" Selected="True">方正黄草简体</asp:ListItem>
21                <asp:ListItem Value="汉鼎繁淡古">汉鼎繁淡古</asp:ListItem>
22                <asp:ListItem Value="汉鼎繁印篆">汉鼎繁印篆</asp:ListItem>
23                <asp:ListItem Value="经典繁桟亭">经典繁桟亭</asp:ListItem>
24            </asp:RadioButtonList>
25            <asp:Button id="bu" style="Z-INDEX: 102; LEFT: 208px; POSITION: absolute; TOP: 312px" runat="server"
26                Text=" 刻 字 "></asp:Button>
27        </form>
28    </body>
29</HTML>
30



CS文件:

  1using System;
  2using System.Collections;
  3using System.ComponentModel;
  4using System.Data;
  5using System.Drawing;
  6using System.Drawing.Drawing2D;
  7using System.IO;
  8using System.Web;
  9using System.Web.SessionState;
 10using System.Web.UI;
 11using System.Web.UI.WebControls;
 12using System.Web.UI.HtmlControls;
 13
 14namespace testItem.movie
 15{
 16    /// <summary>
 17    ///        生成印章签名
 18    /// </summary>

 19    public class underWrite : System.Web.UI.Page
 20    {
 21        protected System.Web.UI.WebControls.Image Image1;
 22        protected System.Web.UI.WebControls.RadioButtonList fontType;
 23        protected System.Web.UI.WebControls.HyperLink HyperLink1;
 24        protected System.Web.UI.WebControls.Button bu;
 25        protected System.Web.UI.WebControls.TextBox name;
 26        
 27        private void Page_Load(object sender, System.EventArgs e) 
 28        {
 29            Image1.Visible = false;
 30        }

 31
 32        Web 窗体设计器生成的代码
 53
 54        private void Button1_Click(object sender, System.EventArgs e)
 55        {
 56            string Name = name.Text;
 57            if ( Name.Length < 4 ) {
 58                Response.Write( "请输入最少4个字符!" );
 59                return;
 60            }

 61            
 62            string FontName = fontType.SelectedValue;
 63            
 64            int fontSize = 36;
 65            int x = 10;
 66            int y = 10;
 67            
 68            switch( FontName ) {
 69                case "方正黄草简体":
 70                    x = -8;
 71                    y = -2;
 72                    fontSize = 42;
 73                    break;
 74                    
 75                case "汉鼎繁淡古":
 76                    x = -10;
 77                    y = -2;
 78                    break;
 79                
 80                case "汉鼎繁印篆":
 81                    x = -15;
 82                    y = -2;
 83                    break;
 84                
 85                case "经典繁桟亭":
 86                    fontSize = 34;
 87                    x = -10;
 88                    y = -3;
 89                    break;                    
 90            }

 91            
 92            Bitmap bm = new Bitmap(110,100,System.Drawing.Imaging.PixelFormat.Format32bppArgb);
 93            Font font = new Font(FontName,fontSize,FontStyle.Bold);
 94            
 95            Graphics g = Graphics.FromImage( bm );
 96            
 97            g.TextRenderingHint =  System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
 98            
 99            /*    这里的三个属性可以根据情况开放.
100             * 
101            //g.CompositingQuality = CompositingQuality.HighQuality; 
102            //g.SmoothingMode = SmoothingMode.HighQuality; 
103            //g.InterpolationMode = InterpolationMode.HighQualityBicubic; 
104            
105            */

106            g.Clear(Color.Red);        //赋予图像一个背景色
107            
108            g.DrawString( Name.Substring(2,1),font,new SolidBrush(Color.White),0,2 );
109            g.DrawString( Name.Substring(3,1),font,new SolidBrush(Color.White),0,45-y );
110            g.DrawString( Name.Substring(0,1),font,new SolidBrush(Color.White),35-x,2 );
111            g.DrawString( Name.Substring(1,1),font,new SolidBrush(Color.White),35-x,45-y );
112            g.Dispose();
113            //设置保存路径
114            bm.Save( Server.MapPath("../upload/c.jpg"),System.Drawing.Imaging.ImageFormat.Jpeg );
115            bm.Dispose();
116            //显示产生的图片
117            Image1.ImageUrl = Server.MapPath("../upload/c.jpg") ;
118            Image1.Visible = true;
119        }

120    }

121}

122


 1<%@ Page language="c#" Codebehind="underWrite.aspx.cs" AutoEventWireup="false" Inherits="testItem.movie.underWrite" %>
 2<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 3<HTML>
 4    <HEAD>
 5        <title>underWrite</title>
 6        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
 7        <meta name="CODE_LANGUAGE" Content="C#">
 8        <meta name="vs_defaultClientScript" content="JavaScript">
 9        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
10    </HEAD>
11    <body MS_POSITIONING="GridLayout">
12        <form id="Form1" method="post" runat="server">
13            <asp:Image id="Image1" style="Z-INDEX: 101; LEFT: 208px; POSITION: absolute; TOP: 360px" runat="server"></asp:Image>
14            <asp:HyperLink id="HyperLink1" style="Z-INDEX: 105; LEFT: 304px; POSITION: absolute; TOP: 312px"
15                runat="server" NavigateUrl="../mv/index.html">大头帖</asp:HyperLink>
16            <asp:TextBox id="name" style="Z-INDEX: 104; LEFT: 208px; POSITION: absolute; TOP: 144px" runat="server"
17                MaxLength="4"></asp:TextBox>
18            <asp:RadioButtonList id="fontType" style="Z-INDEX: 103; LEFT: 208px; POSITION: absolute; TOP: 184px"
19                runat="server" Width="240px">
20                <asp:ListItem Value="方正黄草简体" Selected="True">方正黄草简体</asp:ListItem>
21                <asp:ListItem Value="汉鼎繁淡古">汉鼎繁淡古</asp:ListItem>
22                <asp:ListItem Value="汉鼎繁印篆">汉鼎繁印篆</asp:ListItem>
23                <asp:ListItem Value="经典繁桟亭">经典繁桟亭</asp:ListItem>
24            </asp:RadioButtonList>
25            <asp:Button id="bu" style="Z-INDEX: 102; LEFT: 208px; POSITION: absolute; TOP: 312px" runat="server"
26                Text=" 刻 字 "></asp:Button>
27        </form>
28    </body>
29</HTML>
30



CS文件:

  1using System;
  2using System.Collections;
  3using System.ComponentModel;
  4using System.Data;
  5using System.Drawing;
  6using System.Drawing.Drawing2D;
  7using System.IO;
  8using System.Web;
  9using System.Web.SessionState;
 10using System.Web.UI;
 11using System.Web.UI.WebControls;
 12using System.Web.UI.HtmlControls;
 13
 14namespace testItem.movie
 15{
 16    /// <summary>
 17    ///        生成印章签名
 18    /// </summary>

 19    public class underWrite : System.Web.UI.Page
 20    {
 21        protected System.Web.UI.WebControls.Image Image1;
 22        protected System.Web.UI.WebControls.RadioButtonList fontType;
 23        protected System.Web.UI.WebControls.HyperLink HyperLink1;
 24        protected System.Web.UI.WebControls.Button bu;
 25        protected System.Web.UI.WebControls.TextBox name;
 26        
 27        private void Page_Load(object sender, System.EventArgs e) 
 28        {
 29            Image1.Visible = false;
 30        }

 31
 32        Web 窗体设计器生成的代码
 53
 54        private void Button1_Click(object sender, System.EventArgs e)
 55        {
 56            string Name = name.Text;
 57            if ( Name.Length < 4 ) {
 58                Response.Write( "请输入最少4个字符!" );
 59                return;
 60            }

 61            
 62            string FontName = fontType.SelectedValue;
 63            
 64            int fontSize = 36;
 65            int x = 10;
 66            int y = 10;
 67            
 68            switch( FontName ) {
 69                case "方正黄草简体":
 70                    x = -8;
 71                    y = -2;
 72                    fontSize = 42;
 73                    break;
 74                    
 75                case "汉鼎繁淡古":
 76                    x = -10;
 77                    y = -2;
 78                    break;
 79                
 80                case "汉鼎繁印篆":
 81                    x = -15;
 82                    y = -2;
 83                    break;
 84                
 85                case "经典繁桟亭":
 86                    fontSize = 34;
 87                    x = -10;
 88                    y = -3;
 89                    break;                    
 90            }

 91            
 92            Bitmap bm = new Bitmap(110,100,System.Drawing.Imaging.PixelFormat.Format32bppArgb);
 93            Font font = new Font(FontName,fontSize,FontStyle.Bold);
 94            
 95            Graphics g = Graphics.FromImage( bm );
 96            
 97            g.TextRenderingHint =  System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
 98            
 99            /*    这里的三个属性可以根据情况开放.
100             * 
101            //g.CompositingQuality = CompositingQuality.HighQuality; 
102            //g.SmoothingMode = SmoothingMode.HighQuality; 
103            //g.InterpolationMode = InterpolationMode.HighQualityBicubic; 
104            
105            */

106            g.Clear(Color.Red);        //赋予图像一个背景色
107            
108            g.DrawString( Name.Substring(2,1),font,new SolidBrush(Color.White),0,2 );
109            g.DrawString( Name.Substring(3,1),font,new SolidBrush(Color.White),0,45-y );
110            g.DrawString( Name.Substring(0,1),font,new SolidBrush(Color.White),35-x,2 );
111            g.DrawString( Name.Substring(1,1),font,new SolidBrush(Color.White),35-x,45-y );
112            g.Dispose();
113            //设置保存路径
114            bm.Save( Server.MapPath("../upload/c.jpg"),System.Drawing.Imaging.ImageFormat.Jpeg );
115            bm.Dispose();
116            //显示产生的图片
117            Image1.ImageUrl = Server.MapPath("../upload/c.jpg") ;
118            Image1.Visible = true;
119        }

120    }

121}

122


2006年01月15日

今天打开添加/删除程序 ,准备安装几个windows组件,结果出现下面的错误:

 无法加载安装安装程序:Wbemupgd.dll,或是找不到函数0cEntry.请与您的系统管理员联系。特定错误码是0×7e

于是,搜索一下,原来是path环境变量中,缺少指向System32/wbem目录的指向…

OK..按照下面步骤解决

我的电脑 –  属性   –  高级   — 环境变量  –   系统变量中 –  Path ,看看是否有指向 %SystemRoot% \ System32 \ 和%SystemRoot% \ System32 \ wbem 字符,如果没有把这两个字符添加进去就好了..例如:D:\Windows\System32;D:\Windows\System32\Wbem;

      勾心斗角,明争暗斗的团队,这样的环境是谁也不愿意看到的,但是现实望望事与愿违,我们尽量的避免着,躲避着,可是依然被卷进这个是非的漩涡..我曾经试图退出,试图避免,但是依然在漩涡中挣扎..似乎我只能离开这个是非之地才能完全的避免??但是另外的单位呢?是否也存在这样的明争暗斗呢?

     程序员,是个单纯而富有激情的职业,单纯是因为每天与计算机打交道,少于人沟通,交流,即便是交流也是经常和同事,朋友,很难于陌生人沟通..脑袋里装的只是由看似乱七八糟但却有规律可寻的符号而组成的单纯思想..激情是因为程序员每天都会碰到新的技术,新的难题,必须保持对程序的兴趣和激情,才能做好一名合格的开发人员…以前的程序员是如此,现在的程序员更是如此..有人说程序员的美丽花环越来越黯淡,加入的人越来越多,良莠参差不齐,但是这恰恰说明程序员是很多人向往的职业..我想随着市场和职业的越来越规范,优秀的程序员始终会走在最前列!不合格的程序员要么自己会退出,要么就是被淘汰..这个是规范化发展的必然!

      程序员,我们只是想静静的做好自己的工作,静静的体验者开发的乐趣,但是避免不了的职务之争,权利之争,一切的一切,恼人的一切,接种而来,我们曾经阐述,我们做技术,不想参与这些,不想卷进去.但是依然避免不了!.想想每天都小心翼翼的说话,小心翼翼的提防着别人的枪,提防着暗地里的箭,你还有开发的乐趣吗??我们只是想简简单单的开发,只是这么一点点的要求..做为管理者的你们?能理解吗?能支持吗?难道非要拉帮结派?非要分清敌我吗?     
     
     不懂得管理艺术的"人"只懂得:只会做表面文章,阿谀奉承,只会空话连篇,只会大话连篇,夸大其词..如果这样的人存在于管理位置,影响的不仅仅是他周围的人,更重要的是影响企业的风气,逐渐会形成跟风,猜疑,不敢说真话!!一个这样的管理者,必定会有一群这样的下属,因为不满意他的人,肯定是不屑与之为伍的.我们最后的选择只能是退出!.这样发展的后果就是企业业绩,效率直线下滑,最终被市场所淘汰!!

    以上,是我对公司管理层的看法!或者是个人的看法!也可能是大部分程序员的看法!!我知道我并不能改变什么,但是我依然要说:

    让我们静静的走完开发的路吧!!放过这片净土!!不要糟蹋了它,更不要玷污它的纯洁!!!

 

       京城,振威镖局,镖局的废墟上..天空晴朗,白云朵朵,然而镖局废墟上空似乎有无尽的悲哀..

       约1500人,清一色是浅黄色武士装,腰挎刀,手牵VS杀手犬的彪形大汉,阵形甚是整齐..本该是豪情壮志的汉子,但是此刻,每个人脸上都隐约可见泪痕,如此英雄好汉,能让他们掉眼泪,必定是遇到了极大的伤心事和挫折..领头一人,双目泪光闪烁,脸色苍白,双拳紧握,牙关紧咬,仰面向天,片刻后,对着西边凤鸣山大喊道:"我丁一刀,如不报此仇,誓不为人!",此声悲壮,伤心,义愤之情也感染了在场的众好汉,大家齐声道:"誓报此仇!誓报此仇!"..这群好汉,并非他人,正是振威镖局的镖师..原来,早在三月前,黄河泛滥,灾民无数,皇上体察民情,拨款350万两白银,解决黄河两岸数百万灾民的生计..因为此镖金额巨大,恐防有变,所以特地委托振威镖局代为护送,镖局也深感责任重大,所以尽派镖局精英1500余人护送赈灾银两.为了以防万一,此镖由振威镖局的二当家:风云一刀-丁一刀负责..此丁一刀年方45,人如其名,杀人只用一刀,刀法威猛,一向以久负盛名,在江湖上颇有威名,为人也精明能干,多年行走江湖押送之镖,亦少有损失..若论刀法武功,绝不亚于总镖头砍马刀-钟南魁..所以钟南魁才委托丁一刀负责此镖,以确保万无一失..恰恰就是因为这次护镖尽遣精英,才得以让Java剑三大镖局有机可乘,偷袭得手,瞬间摧毁了振威镖局的多年基业..
     丁一刀转身,眼光扫视众好汉,看众好汉脸上无不义愤填胸,怒目而赤,丁一刀道:"报仇之事,我们宜从长计议,不宜操之过急..为今之际,我们最重要的是重建镖局,重塑镖局威严!至于寻找Java剑残部之事,其他三大当头和微软堡已经在派人查找了,量他们也插翅难逃!",单从此话便可看出,当真是老江湖,处事不惊,心思缜密,有大家风范..话音落下,众好汉齐声道:"一切尽遵丁总镖头吩咐!",丁一刀道:"好!各位兄弟暂且休息安顿下来,我这便去与三大当头商量重建时宜!"..

       三日后..

      京城云来客栈,天字号房,丁一刀,振威镖局硕果仅存的三位长老,吹毛求疵-毛利求,开山刀-铁开山,赛时迁-时小迁,振威镖局的四位领导者围坐一桌,丁一刀道:"经过和三大当头商议,三大当头联合出资白银100万两,微软堡拨款白银30万两,加上这次护镖,皇上御赐白银20万两,共计白银150万两,银两已经不成问题.对于镖局具体重建各位有什么意见?",时小迁道:"对于镖局重建之事,我们应该尽快而行,速度越快越好,兄弟们正等着为总镖头报仇呢!",毛利求道:"此事确实如时兄弟所说,越快越好.",铁开山道:"丁总镖头尽管吩咐,俺一切听您的!",丁一刀道:"好!那么我们大家齐心协力把镖局重建好,以慰老镖头在天之灵!只是镖局重建之事,事关重大,非我一人之力可为之,还需要各位兄弟的大力帮助!",毛利求接口道:"丁总镖头那里话,此事乃我等份内之事,您尽管吩咐便是.",丁一刀站起来道:"好,那么丁某人就不在推辞了,镖局的重建我们暂且以三个月为期限.工程的后勤供应就麻烦时兄弟负责,财务会计日常开销麻烦毛兄弟负责,具体的日常施工监督就麻烦铁兄弟负责..三位的目标就是负责好各自的任务,协同工程的建设,保证工程的顺利完工,重振镖局声威!.如果大家在建造过程中碰到问题,咱们再一起解决."
  (
  这里丁一刀使用的是建造模式,镖局的重建工作十分庞大复杂,有需要后勤,采购,供应,建造,财务,预算等等一系列的操作,并非一人能为之,所以需要其他人的配合,而且每个人的工作都不一样..分析一下三个长老的任务特点..
  共同点:目标统一,完成各自的任务,即完成丁一刀分配的任务-建立新的振威镖局.
  不同点:责任不一样,分工不同,牵涉的工作也不同,实现的方法也不同..
  建造模式的适用场合:一个产品,有不同的部分组成(三个长老负责的任务),而这些部分有各自的不同实现,对于客户端(丁一刀)来说,它不需要了解什么具体的实现,它只要这个产品(新镖局)就好了..而这个时候,镖局就是产品,三个长老负责建造镖局的不同部分,相当于这个产品的零件,他们的实现不一样,有人是干活,有人是跑腿,有人是算帐的..为了防止工程建造过程中有新的部分加入,所以我在随后的C#源码中为三个长老实现了一个零件的接口..
  )
  ,丁一刀说完后,三位长老同时起立,伸出右手,四人右手叠加,齐声道:"我武威扬!我武雄威!".

      时间流逝,日月如梭,从日出到日落,再从日落到日出,日子一天一天过去,振威镖局的废墟上正在发生着日新月异的变化,而随着时间的推移,变化也越来越明显..先是废墟的消失,接着打地基,然后镖局的轮廓慢慢的的清晰起来,毛利求负责着预算和银子的使用,端的是精打细算,绝不浪费一两银子!时小迁则依靠多年的江湖经验,东奔西跑忙着原料的供应!铁开山则负责带领众好汉一砖一瓦的堆彻着,身先士卒.三位长老尽心尽力的付出和合作,确保了工程的顺利进行..镖局的好汉们,顶着烈日,汗如雨下,干的热火朝天,没人喊苦,没人喊累,似乎浑身有使不完的力气.让大家这么拼命工作的原因很简单,因为目标是一致的:重振振威镖局昔日辉煌!在三个月的日子里,干的热火朝天的不仅仅是这些好汉,还有被他们的激情所感染的其他武林同道,京城其他三大镖局的精英,DOTNET人权组织,卫生组织,贸易组织,环保署,奥运会筹委会等等,都给予了重建工作的极大支持..

      三月后..

      当丁一刀揭开新镖局大门顶上的巨大匾额,四个斗大的金字赫然映入眼帘:振威镖局!四周欢呼声,喝彩声,鞭炮声,掌声同时响起,鲜花飘落,镖局锦旗随风飙飙作响,重建后的振威镖局,威风不仅不减,反而更盛.观新镖局建筑,依然分东南北三门,只是在三门的两侧分立起一对三丈高哨塔,共六座,相互间遥遥呼应,站立哨塔之上,可以鸟瞰镖局方圆三里内一切事物,有道是吃一垫,长一智.镖局此次遭遇灭顶之灾的主要原因之一便是,防守松懈,未能对敌人的进攻提早做出部署,所以这次建造六座哨塔的目的也是如此目的..丁一刀和三位长老,仰头看完振威镖局四个大字,互相点头微笑一下后,丁一刀道:"今日振威镖局得以重建,全赖各位武林同道的多方大力支持!丁某不才,对于各位的恩惠,唯有日后再找机会报答各位了!!".众人齐道:"丁总镖头客气了,这本为我等份内之事!".丁一刀道:"好!好!好!那就请各位入席吧!".

      夜深,新振威镖局后院内,新任镖局总镖头丁一刀,眉头紧皱,眼睛盯着黑暗处,似有要把黑夜看穿?又似乎黑暗处有什么东西?又似乎有什么不详的兆头?新镖局刚刚建造完毕,本应该大喜的日子,丁一刀为什么又眉头紧皱呢??预知后事如何,切听下回分解.

 程序运行后的结果:


点击这里下载源码

Java剑 VS .NET刀 — 晨袭血战(论模式)(一)【推荐】

2006年01月12日

 

      这篇文章,不需要你一次就看懂,如果你真的能一次都看懂,我想设计模式对于你来说已经没什么难度了..因为设计模式就是要体现这些原则的,你可以把设计原则看做是一门语言,设计模式是由这些语言编码的程序..你既然已经明白,精通了语言,剩下的编码自然是很简单的事情,编码的越多则经验越多,经验越多则对原则的理解就越深…这是一个学习领悟的过程..

     我希望这篇文章能帮助新人感受到设计模式的乐趣,避免重复编码….减少劳动量..如果你能在用心静静的体会文章的每个字,每段话的意思,这样可以避免走很多弯路…我以前学习设计模式的时候,就是因为忽略了原则,凭着感觉,看着书来学习设计模式,结果就是知其然而不知其所以然….如果你是初学设计模式,再了解了OOP的三大原则(封套,继承,多态)之后,请反复的结合原则,来学习设计模式..这样可以达到事半功倍的效果…
  
     设计模式的核心原则是:"开-闭"原则(  Open – Closed Principle 缩写:OCP  ),一切的一切都是围绕着"开-闭"原则展开的..
     意思是,在一个系统中,对于扩展是开放的,对于修改是关闭的,一个好的系统是在不修改源代码的情况下,可以扩展你的功能..而实现开闭原则的关键就是抽象化.
     在"开-闭"原则中,不允许修改的是抽象的类或者接口,允许扩展的是具体的实现类,抽象类和接口在"开-闭"原则中扮演着极其重要的角色..即要预知可能变化的需求.又预见所有可能已知的扩展..所以在这里"抽象化"是关键!!!

      可变性的封闭原则:找到系统的可变因素,将它封装起来..这是对"开-闭"原则最好的实现..不要把你的可变因素放在多个类中,或者散落在程序的各个角落..你应该将可变的因素,封套起来..并且切忌不要把所用的可变因素封套在一起..最好的解决办法是,分块封套你的可变因素!!避免超大类,超长类,超长方法的出现!!给你的程序增加艺术气息,将程序艺术化是我们的目标!!

      里氏代换原则:任何基类可以出现的地方,子类也可以出现..如果你通读过<Java编程思想>,我想你应该明白这个原则,在书中,Bruce Eckel 大师用了大量的章节来讲解"向上转型"和"向下转型",我想目的很清楚,不仅是要你明白类的型别,更重要的是要你明白父类与子类的关系..

      依赖倒转原则:要依赖抽象,而不要依赖具体的实现..如果说开闭原则是目标,依赖倒转原则是到达"开闭"原则的手段..如果要达到最好的"开闭"原则,就要尽量的遵守依赖倒转原则..可以说依赖倒转原则是对"抽象化"的最好规范!!我个人感觉,依赖倒转原则也是里氏代换原则的补充..你理解了里氏代换原则,再来理解依赖倒转原则应该是很容易的..
  合成/聚合原则:要尽量使用合成/聚合原则,而不是继承关系达到软件复用的目的..此原则和里氏代换原则氏相辅相成的,两者都是具体实现"开-闭"原则的规范..违反这一原则:就无法实现"开-闭"原则..先来看看什么是合成,什么是聚合.

      什么是合成?
     合成:是指一个整体对依托他而存在的关系,例如:一个人对他的房子和家具,其中他的房子和家具是不能被共享的,因为那些东西都是他自己的..并且人没了,这个也关系就没了..这个例子就好像,乌鸡百凤丸这个产品,它是有乌鸡和上等药材合成而来的一样..也比如网络游戏中的武器装备合成一样,多种东西合并为一种超强的东西一样..
      
      什么是聚合?
      聚合:聚合是比合成关系的一种更强的依赖关系,聚合是一个整体对个体的部分,例如,一个奔驰S360汽车,对奔驰S360引擎,奔驰S360轮胎的关系..这些关系就是带有聚合性质的..因为奔驰S360引擎和奔驰S360轮胎他们只能被奔驰S360汽车所用,离开了奔驰S360汽车,它们就失去了存在的意义..在我们的设计中,这样的关系不应该频繁出现..这样会增大设计的耦合度..
      明白了合成和聚合关系,再来理解合成/聚合原则应该就清楚了..要避免在系统设计中出现,一个类的继承层次超过3次..如果这样的话,可以考虑重构你的代码,或者重新设计结构..当然最好的办法就是考虑使用合成/聚合原则…

      迪米特法则:系统中的类,尽量不要与其他类互相作用,减少类之间的耦合度,因为在你的系统中,扩展的时候,你可能需要修改这些类,而类与类之间的关系,决定了修改的复杂度,相互作用越多,则修改难度就越大,反之,如果相互作用的越小,则修改起来的难度就越小..例如A类依赖B类,则B类依赖C类,当你在修改A类的时候,你要考虑B类是否会受到影响,而B类的影响是否又会影响到C类..如果此时C类再依赖D类的话,呵呵,我想这样的修改有的受了..

     接口隔离法则:这个法则与迪米特法则是相通的,迪米特法则是目的,而接口隔离法则是对迪米特法则的规范..为了做到尽可能小的耦合性,我们需要使用接口来规范类,用接口来约束类.要达到迪米特法则的要求,最好就是实现接口隔离法则,实现接口隔离法则,你也就满足了迪米特法则…
    
 
       如果你能看这里,说明你已经对这些原则了有了感性的认识..这些原则是设计模式的核心,如果不能充分理解这些原则,是很难理解好设计模式的..

      如果第一遍看不懂,没关系,请反复揣摩,细读每个字,每句话..对于这些原则,我也是看了N*N遍才明白的(这期间也没任何人指点过我,更每人讲的这么细,奖励自己一下先,汗啊)..我推荐看完原则之后,请看设计模式,看两三个模式,然后理解一下,自己动手把模式实现出来,再回头来看原则,你会感觉,你的模式一定是满足了其中的某些原则!!这是必然的!!只要你理解了原则,设计模式不难理解..就好比,有了内功基础的你,再来学习刀,剑,枪这些武器的时候,要比那些直接学习刀,枪,剑的人,快很多,效果也好很多…

    如果你要了解设计模式,在园子里也有N多好的设计模式文章,精华区的设计模式区..有很多都是不错的介绍文章..另外近段时间,我也在发表关于设计模式的心得..如果有兴趣,可以关注一下…

2006年01月10日

     夜,黑夜,子时,伸手不见五指,长安城西边凤鸣山山顶,京城原Java剑四大镖局总镖头到了三位:东剑-孙如来,南剑-李震天,西剑-魏东,当年声名显赫的镖局三大当头齐聚此地,必定有天大的事情发生!!只听李震天道:"孙大哥,卫如风他到底什么时候来啊?咱们都等了大半个时辰了!",孙如来看了看李震天,并不言语..反而是魏东接道:"二哥,你再等等,卫兄弟既然急着找我们来此地,必然是会到的!",李震天正准备反驳的时候,一个略带沙哑的声音从山下响起:"有劳李二哥的牵挂了,卫如风感激不尽!!",一条黑影"唰"的一下,从山下飞跃而起,落在李振天身边,观此人面貌粗矿,两腮胡子如针状,浓眉大眼,两眼炯炯有神,隐隐发光,一看便是高手,武功并不亚于三大当头中任何一位!卫如风看了李震天一眼,对魏东微一点头,眼光落在孙如来身上,道:"小弟为防他人起疑,晚到片刻,请各位大当头谅解!",孙如来道:"卫兄弟客气了!",卫如风接着道:"今晚我紧急约各位来,是因为振威镖局(DOTNET刀旗下四大镖局之一)接了单大生意,镖局内人手被抽去1/2护镖,此时镖局内人手空虚,只有区区不足1000人,正是我们Java剑以雪前耻之时,今晚寅时(凌晨3~5点),三位可以根据我的信号,共同举兵强攻振威镖局!!可重振Java剑雄风!!",孙如来双眼闪过一丝喜悦,一丝兴奋之色动容的道:"委屈卫兄弟了,为了Java剑的反攻,只身深入虎穴,委屈求全,此等义气,此等胸怀真是让兄弟我们三人真是汗颜啊!!",卫如风两眼闪过泪光道:"孙大当头那里的话,此等话要折杀兄弟了,为Java剑,兄弟我即便是掉了脑袋也在所不惜,更何况是屈居人下呢?",原来这个卫如风原本属于Java剑,在Java剑镖局被占领之时,假装投降,保留了性命,留在振威镖局做了内应..孙如来道:"好!好!好!好样的!",顿了顿又道:"卫兄弟,麻烦你来说说我们今晚如何行事吧!",话音落下,魏东和李震天都向卫如风和孙如来身边靠了靠,卫如风道:"今晚寅时,三位听我信号,我们分东南北三个方向强攻镖局,孙当头主攻正门,魏当头主攻南门,李当头主攻北门,我们务必要在最短的时间内拿下镖局!如若时间超过半个时辰,其他三大镖局的援兵必定赶到!!到那时便是我们被围剿了!!",孙如来道:"好!我们此次进攻只需成功,不许失败!!此战过后,要么有三大当头,要么有振威镖局!两者绝不可共存!",魏东和李震天也不仅为孙如来视死如归的气概所打动,齐声道:"愿以大哥唯马首是瞻!",孙如来道:"好!今晚我们便以三大镖局全部力量强攻振威镖局,魏三弟领骑兵800,李二弟领骑兵800,我领剑客1000,弓兵500,今晚寅时,看卫兄弟信号,我等带领各自人马强攻振威镖局!!以雪前耻!!

(此时Java剑用到的便是工厂方法模式:三位镖局大当头,分别带领士兵,各自互不指挥对方士兵,互不干预,一切看卫如风信号行动,他们的共同点
1.目标统一:进攻振威镖局!
2.每个人都带兵!
不同点:
1.三人各自互不干预,但是都听从同一个信号行动.
2.每个带的兵都是属于自己的兵,这些兵只听他们自己所属的将军指挥..
这个时候,工厂方法模式就可以体现出来了..如若此时加入另外的将领,他们也是具有上面提到的共同点和不同点的!!卫如风和三大当头也不会因为其他人的加入而打乱自己的计划,工厂方法模式的优点也就得以展现了.
)

",卫如风道:"哈哈哈,有此豪情壮志,哪愁大事不成!!三位,暂且回去好好准备,见我信号,务必起兵强攻!!速战速决!!",三人齐声道:"卫兄弟请放心!"..说罢,四人疾驰而去,瞬间消逝在夜色中…

     夜,黑夜,依然伸手不见五指..夜静,静悄悄的,静的可怕,连平时唧唧叫的蛐蛐的声音也没有,只有风儿轻轻的抚摸着夜,发出的呼呼的声音..煞是恐怖..

     寅时,寂静的夜空,在振威镖局上空,随着一声鸣镝声,夜空中一个烟花散开,变幻为一把剑!!就在烟花散开之时,镖局四周传来阵阵喊杀声,铁蹄声伴随着将士们的喊杀声,打破了寂静的夜晚,也打破了无数人的梦,战争开始了!!Java剑与DOTNET刀的第一场大规模冲突,就在今夜爆发了!!这个时候,振威镖局的总镖头砍马刀-钟南魁正在校练场,听着探子的报告:"启禀总镖头,Java剑四大镖局残部约3500人从东南北三面强攻镖局,请总镖局定夺!!",钟南魁道:"现敌军在何处?",探子道:"禀总镖头,攻击南门,北门两队的骑兵合计约2000人,距镖局不过600米,攻击正门为步兵与弓兵,合计约1500人,距镖局约1500米左右.",钟南魁道:"各位兄弟,今日Java剑大军来犯,尔等该如何应付?",校场众将士齐声喊道:"誓死保卫镖局!尽斩来犯之敌!",听将士们声震云天,当真是士气如宏,视死如归,训练严谨的DOTNET精兵,钟南魁环视校场一周后道:"好!!众将士,听我令,南门,北门,埋下绊马索,下马套,开启地刺(深坑下埋藏锐器,踏者非死即伤)..200勾镰军镇守南门,200勾镰军镇守北门..正门关闭,200弓兵,200大刀手镇守正门,若敌人以步兵来强攻,大刀兵掩护,以弓兵射之.若敌人以弓兵远射,则依厚墙之利,伺机以大刀兵伤之!!200护卫军随时与我支援各部!!

(此时DOTNET刀用到的便是简单工厂模式:做为创作型模式最简单的应用,钟南魁在了解了敌军的具体位置,兵种,数量之后,做为工厂类,他发出了针对三股不同敌人的命令,即如果敌人是骑兵,则用勾镰兵对付,如果敌人是剑客,则用弓箭兵对付,如果敌军是弓兵,则用大刀兵对付..这个时候简单工厂模式就被体现出来了..如果预知还有其他兵种来,也可以根据情况再次发布命令..简单工厂的特点:在你已知具体的情况下,对事物做出调度,分派..从而体现"简单"二字.缺点也是很明显的:假如此时分派完毕后,大家投入战斗,如果Java剑中有其他埋伏的兵种突然出现,对于钟南魁来说,他就要再次发配一个对付的兵种出来,而再次分配兵种的话就要重新通知一次,对于战局(应用程序)来说不合理,不现实的!
)"

..军令下,将士行..

..军令下,将士行..

     片刻后,南门,北门,各自承受着800铁骑的践踏,马嘶声,喊杀声,惨叫声,兵器狠狠撞击的声音,各种声音混杂在一起,当真是如般若地狱般的恐怖..门外的马索,马套斩杀着一匹又一匹战马,勾镰手们则趁敌人落马那一刻杀敌于瞬间..由于陷阱的作用和勾镰兵的突然出现,Java剑的骑兵部队一时也难以越雷池半步..此时对于这场战争中的每个人来说都是绝望的,无助的,唯一能救他们的,就是互相砍杀对方,每多砍杀一个人,自己活下来的机会就会增加一分!!南门,北门的战斗就这么持续着,僵持着,随着伤亡骑兵人数的增加和陷阱的减少,勾镰手对敌人的重创也越来越轻,终于,随着第一个骑兵进入南门,这里的防守也宣告瓦解..北门的命运同样也是如此..

     正门的战斗更是惨烈异常,200弓兵和200大刀手,击退了Java剑的一次又一次进攻,纵观400铮铮男儿,非死即伤,留下的无不伤痕累累,遍体鳞伤,满地尸骸,由此可见战况的惨烈!!钟南魁带领200护卫军三次冲进想斩杀孙如阵营,都因对方人数众多无功而返..终于在Java剑的第七次的强攻之下,正门被攻破了,冲进来的第一个人叫:小马,这个名字将被Java剑的历史所铭记,他代表了Java剑的第一次大胜利,也代表他宣布了DOTNET刀的第一次大败..孙如来跨过正门,放眼望去,想寻找钟南魁的身影,但是眼前的一切似乎太不可思议,镖局内,血流成河,到处充满了残肢断臂,空气中充满了血腥味,胜利带来的喜悦在瞬间便被强烈的震撼所冲洗,留下的只有颤抖的心和对战争的迷茫…这个时候,飘忽的目光看到了把熟悉的刀,钟南魁的刀-砍马刀,刀背宽而厚,刀锋薄而利,刀身颀长,而此时刀的主人静静的躺在那里,身中16箭,剑伤38处,其他伤口不计其数,最致命的伤是心脏的一刀!!那把杀他的刀依然在的心脏上,杀他的人虽然已经死去,但他的手依然紧紧握着刀柄,顺着刀柄望去,这人赫然就是卫如风!!孙如来不仅想道一句话:兵者,险道也!

     战斗只持续了短短不到半个时辰,伤亡统计Java剑伤亡1700余人,DOTNET刀包括镖局总镖头钟南魁的振威镖局全军覆没..此战当真是惨烈异常,是Java剑与DOTNET刀对阵以来,双方伤亡人数最多的一次!等待京城其他三大镖局援军赶到,看到的只是燃烧着的振威镖局,昔日的辉煌已不复存在..江湖上已经没有振威镖局!这就是江湖,不是你死,就是我亡的江湖..

          用C#来实现战况后的结果如下图所示:


     源码打包下载:点击这里

    下一篇:Java剑 VS .NET刀 — 山顶杀戮战(论模式)

2006年01月09日

最近在构思写一些设计模式方面的文章,用到UML图,以前用Visio和WithClass..但功能不多,所以就安装了Rose 2003..以下是安装过程:

     1.安装Rose后,默认是需要许可证书的..去下载个破解的..我上传了破解文件..
点击这里下载Rose 2003破解

     2.先用破解压缩包里的 rational.exe,lmgrd.exe 覆盖到你的 \安装目录的Rartional\commen\下

     3.然后记事本打开 license.dat, 修改里面的 SERVER yourPC ANY  DAEMON rational "C:\Program Files\Rational\Common\rational.exe"
     改成 SERVER 你的机器名 ANY  DAEMON rational "你的安装目录\rational.exe" ,拷贝到Common目录下..

    4. 将Flexlm.cpl拷贝到C:\winnt\system32\下, 在控制面板里运行 FlexLm License Manager, 

   

    运行后, 在 Setup 面板配置文件路径,lmgrd.exe -> 你的安装目录 \Common\lmgrd.exe, 而 License File 为你改过的 license.dat …



     5.在Control面板点击Start,如果成功的话点击Status按钮将显示 你的机器名:license server UP (MASTER) 说明成功了
     失败的话重启一下FlexLm License Manager就没问题了。 



     6.如果弹出对话框License Key Administrator Wizard后, 选定Point to a Rational License Server to get my licenses,单击下一步,
Server Name文本框中填写你的机器号(可能已经填好),单击完成。 (成功的话会出现两屏的licenses) 


2006年01月08日

      项目要收尾了,压力减轻不少,年前这段时间可以多看看书,写写Blog了,心情还是蛮轻松的..

     要过年了,要回家了..心情也随着时间而越来越激动,上周一直在联系回家的车票,不过都是一句话,不能保证有票..昨天周六,去下沙订票,人不在,白跑了一趟..不过好在出去一次,也不能空手而回,于是就去吴山广场参加庙会..

     到那里之后,就一个感受,人那个叫多啊,唉..挤啊挤啊挤,终于挤出来半个路,赶紧闪进去,呵呵..说实话,除了人多,庙会没什么特色,本来打算买个小饰品什么的玩玩,没想到里面的东西跟杂货市场一样的杂,看着也不像真的…不过好在主要的目的是去腐败的…自然不会影响到情绪,于是就沿着小吃摊艰难的走着看着,种类不算很多,大部分是北方的风味,例如:烤羊腿,烤羊肉,亚玛逊烤肉,山东煎饼,鱼丸,麻辣鸭血,狗肉汤,臭豆腐等等,最反感的两个小吃是:爆炒麻雀和梅花鹿肉!!!!!强烈BS!!!!
     
     小吃的价格都不便宜,大部分单价都在5元左右..一般人还是可以接受的,不过吃完后就有种被宰的感觉..有个搞笑的现象就是进去庙会里面,好像所有的东西价格都是5元,最经典的是我在外面吃了串糖葫芦,2元,到里面问了一下,5元,只有几米之远,价格就翻倍了!!..呵呵..

     昨天腊八粥没喝到,不爽,以前在家的时候,冬至饺子,腊八粥,每年都能如愿以偿,唯独这次在外地,什么都没吃上…真郁闷!!!