DEITY 的个人资料ScorDeity@雾霭无痕.天蝎恶魔照片日志列表 工具 帮助

HTML

流逝的时间|true|
Hit Counter

MistSeen DEITY

2月6日

Talking about 朋友 & 兄弟

 

Quote

朋友 & 兄弟
 
             我在大学里面朋友不算很多.大概归于自己不太喜欢到处搞社交活动.可以扳手指数得清楚.兄弟的更加少的可怜,我怎能算都只有这几个
 
  • 宛刚
  • 吴敏
  • 庄家栋 :叫胖胖叫惯了,居然忘了他名字,最后看手机,没有,看同学录没有[你没有给我签呢!],看群.....终于找到了.
  • 新雨
  • 桃子
  • 志勇

1月25日

朋友 & 兄弟

 
             我在大学里面朋友不算很多.大概归于自己不太喜欢到处搞社交活动.可以扳手指数得清楚.兄弟的更加少的可怜,我怎能算都只有这几个
 
  • 宛刚
  • 吴敏
  • 桃子
  • 新雨
  • 志勇

        

12月25日

活用设计模式

一、 设计模式的隐喻
     武功套路是习武的门径。新手要一招一式地练习套路,烂熟于心之后,熟能生巧,在实战之中即可见招拆招、运用自如——此时习武之人已从“新手”成长为“好手”。“高手”则没有套路,实战之中只有自然反应,然而一招一式浑然天成、恰到好处,似有似无、无中生有。“高手”之上还有“高高手”,他们达到的境界非我等凭借金氏武侠小说可以揣测。
    设计模式之于设计,好比套路之于武术。“新手”要一个接一个地学习模式,“好手”能够活用模式,“高手”则没有模式。
    设计模式的“内功”是面向对象的基本原则。这些原则是“神”,模式是“形”。高手拼的是“内功”,对面向对象基本原则有了深刻的领悟,才能用好设计模式,避免“走火入魔”。
    一般在设计模式著作的前几章都会介绍面向对象的基本原则,这几章非常重要。学通了这几章,后面的模式就不过如此了。学完了设计模式,也最好翻过头来重新看看这几章,保证会有新的领悟。

二、 为什么使用设计模式
    对任何设计都可以凭主观(对设计很难做出客观评价)判断得出它是一个好的设计,还是一个坏的设计。使用设计模式是为了避免坏的设计。Martin叔叔在他的著作《敏捷软件开发 原则、模式与实践》中描述了拙劣设计的症状:

僵化性(Rigidity):设计难以改变。
脆弱性(Fragility):设计易于遭到破坏。
牢固性(Immobility):设计难以重用。
粘滞性(Viscosity):难以做正确的事情。
不必要的复杂性(Needless Complexity):过分设计。
不必要的重复(Needless Repetition):过多的重复。
晦涩性(Opacity):混乱的表达。

 

三、 什么时候使用设计模式
    Martin叔叔的书中有段话:
  
    在学习它们(设计原则和模式)的时候,请记住,敏捷开发人员不会对一个庞大的预先设计应用那些原则和模式。相反,这些原则和模式被应用在一次次的迭代中,力图使代码以及代码所表达的设计保持干净。
  
    在这段容易被读者忽略的文字中,我体会到这样几层含义:

代码是设计(这是Martin叔叔强调的一个观点,这个观点可以参考《敏捷软件开发 原则、模式与实践》一书的附录D);
设计模式是为了使设计适应变化;
设计模式是重构的工具;
设计一开始就要保持干净、简单,以后仍然要保持干净、简单;
不能过度使用设计模式。

    使用设计模式的目的是为了适应未来的变化,变化之所以存在是因为它的不可预知性——如果可以预知,则不能称其为变化。如何判断哪些需求可能变化,哪些需求可能不变,并且在最大程度上保持设计的干净、简单,这是些工艺问题,而不是工程问题。既然是工艺问题,那么就只能给出原则,不能给出标准。使用设计模式的大体原则可能是:对未来极有可能发生变化的问题给出最简单、修改成本最低的解。
  
四、 避免过度使用设计模式
    易维护的程序首先要易理解,这一点远甚于其他。在易理解的代码上才好维护。过分地使用设计模式会增加程序的复杂性和晦涩性,让程序不易理解,从而降低了程序的易维护性。
    Switch语句曾经遭致诟病,许多重构的例子就是拿Switch开刀。我认为Switch语句是高效的语句,可以写出极优雅、简单的代码。在很多情况下,直接使用Switch语句比把它拆成若干个Class更“干净”。
    再比如,有一段四百多行的代码负责整个系统的调度,如果未来的变化仅仅是修改这四百行代码而不会大量添加代码,那么把这四百多行代码集中在一个函数里面,比将它拆分成十来个Class更加容易维护。

五、 讨论几个具体的模式
1、 创建模式(Creational Pattern)
    工厂(Factory Method)模式是常用的模式。工厂模式的应用情景明确,设计思想简单。从使用多态到只用一个静态方法,工厂模式的变化形式有很多。我习惯简单地使用工厂模式,也就是使用只有静态方法的工厂模式。下面的工厂模式代码简单、干净:
  
  MyFactory.GetClassInstance().DoFunction();
  
    类厂并不承载业务逻辑,需求变化对类厂的影响通常很小。因此使用重量级的工厂模式往往并不划算。一组包含层次关系的重量级的工厂类,可能意味着过度设计。
   单例(Singleton)模式和工厂模式关系密切。从实现的角度讲,单例模式是工厂模式的一个特例,但是两个模式的应用情景不同,因此它们属于不同的模式。
   抽象工厂(Abstract Factory)模式是工厂模式的推广。抽象工厂模式的应用情景更加特殊和严格。在一个使用抽象工厂的设计中,如果未来发生不同产品族各自演化的情形,那么抽象工厂模式就可能崩溃了。在实际应用中,不同产品族各自演化,最终分道扬镳的情形是有的,用户提出这样的需求的确让人“触目惊心”。在使用抽象工厂模式之前,一定要保证从现在到未来都能够用一致的方式使用这些产品族。
   将工厂模式稍加变化可以得到建造(Builder)模式。工厂模式的“加工工艺”是隐藏的,而建造模式的“加工工艺”是暴露的。这点不同,使建造模式在更加灵活的同时也有失优雅。
2、 模板模式(Template Method)和策略(Strategy)模式
   模板模式和策略模式的应用情景类似,但实现方式不同,前者使用继承,后者使用委托。
   模板模式有可能是最“古老”的模式之一,在使用面向对象技术的早期,“继承”大行其道,很多设计人员可能不自觉地使用过模板模式。模板模式的缺点是把具体实现和通用算法紧密地耦合起来,使得具体实现只能被一个通用算法操纵。然而在继承关系中,父类的信息可以更多地暴露给子类,这种(违背面向对象设计原则的)微妙的沟通在一些特定应用中显得更加灵活和方便。
   策略模式是委托的经典用法。策略模式消除了通用算法和具体实现的耦合,使得具体实现可以被多个通用算法操纵。策略模式也增加了类层次,比模板模式复杂。
   模板模式和策略模式通常可以互相替换。它们都像试卷,模板模式是填空题,策略模式是选择题。
3、 简化问题的模式
    门面(Facade)模式把一组复杂的接口隐藏在一个简单且特定的接口后面。
    调停者(Mediator)模式把对象之间的引用关系包装在一个特定的容器里面。
   组合(Composite)模式描述了整体与部分的结构关系,并且允许用一致的方式处理这个结构。
   上面几个模式对使用者而言,都在一定程度上起到了简化问题的作用。
4、 扩展功能的模式
   访问者(Visitor)模式和装饰(Decorator)模式都可以在不改变现有类结构的基础上,动态地增加功能。
   访问者模式把现有类结构上的对象“分配”到一个名为访问者的类中,在访问者的相应方法中配置对象、改变对象或扩展功能。
   装饰模式把现有类结构上的对象“注入”一个装饰类中,在装饰类中扩展它的功能。
   访问者模式和装饰模式在实际效果上是不同的。访问者模式可以把对象分配到相应的方法里,从而对每个对象分别进行加工或扩展。而装饰模式只能用一致的方式对所有的被装饰对象进行加工或扩展,要想实现不同的加工或扩展,只能增加新的装饰类。
   过多的“装饰类”有可能使业务逻辑分散,并且使程序结构复杂。针对每一个具体的派生类,“访问类”都要有一个对应的方法,增加派生类的时候也要增加访问类的方法。扩展功能的需求是经常发生的,是否有必要使用上述模式则值得再三考虑。
5、 其他常用的模式
   桥梁(Bridge)模式。Class是封装了行为和属性的容器,然而Class的一组行为可能独立演化,这时最直接的想法是使用继承,把各不相同的行为封装在不同的子类里。桥梁模式从另外的角度解决了这个问题。桥梁模式把独立演化的行为封装在另外一个类体系里,与原来的类体系分别独立演化,两个类体系在抽象层次是“使用”关系。在很多OO教材里面用Shape类封装属性和Draw方法,在桥梁模式里,“形状”和“画笔”是两组独立演化的类体系,在抽象层次,“形状”使用“画笔”绘制自己。
适配器(Adapter)模式是常用模式,它比较简单,有时和其他的模式配合使用。
   命令(Command)模式被Martin称为“最简单、最优雅的模式之一”。命令模式的魅力在于它为每个类“培训”出了相同的技能,经过“培训”的类“柔性”更强,能够产生不可思议的能力。
6、 不太需要的模式
   观察者(Observer)模式。Java和C# 都实现了观察者模式。
   迭代子(Iterator)模式。在Java和C#语言里,可以用聚集类代替。
   备忘录(Memento)模式。可以用Class的序列化能力代替。
   责任链(Chain of Responsibility)模式。可以用其他的方式替代,例如观察者模式、语言本身提供的消息机制等。
   解释器(Interpreter)模式。个人认为,它是个算法,不是模式。
   代理(Proxy)模式。如果在一开始就知道某些底层策略一定会被替换掉,那么使用代理来隔离这些策略还是有必要的。否则,几乎没有使用的必要。
  
参考文献:
Robert C. Martin,Agile Software Development Principles,Patterns,and Practices.(中译本:《敏捷软件开发 原则、模式与实践》,邓辉译,清华大学出版社,2003年)

作者:
张昱 曾就职于浪潮集团、联想集团,现就职于中科院电子所。超过十年的软件工作经验。对分析设计、项目管理、编程实践有着浓厚的兴趣。
 

    Martin叔叔没有给出“好”设计的定义。避免了上述症状的设计可能是个符合要求的设计,但未必是“好”设计。软件设计具有“艺术”特征,一个好的设计必定妥当、优雅、满足需求,妥当、优雅、满足需求的设计则未必一定是好的设计。设计模式的使用是为了消除软件设计的恶劣症状,而不是保证给出一个好的、正确的设计。设计模式可能源于人们对软件的恐惧感吧(林星的文章中有句话:方法论源于恐惧)。
    Martin叔叔在接下来的一章(第七章、什么是敏捷设计)中对上述拙劣设计的症状进行了详细描述。我们看到,产生上述恶劣症状的根本原因都是需求变化。使用设计模式是为了消除设计的恶劣症状,而产生恶劣症状的根本原因是需求变化。那么是否可以这样说:使用设计模式是为了拥抱变化。

http://club.sooyie.com/blogs/wuzi/archive/2006/10/18/http_3A002F002F00_www.bloger.com.cn_2F00_user4_2F00_164028_2F00_.aspx

CommunityServer 2.x

CommunityServer 2.x
 是开放源码,其实 CommunityServer 的前身是 ASP.NET Forums,2.3 这个版本是国内人汉化,并做了一些改进。真正官方已经转到 CommunityServer 上面了,CS 2.x  包含了博客、相册、新闻、文件共享、RSS等新功能,功能不少,看看代码,更是多,汉化起来倒不麻烦,改一下 XML 文件就行了,公司产品的社区准备采用 在 CommunityServer 2.x 的基础上来改造。
 这个程序是开源的,由很多人做出来的,很规范,可以从这些代码中,学习到很多好的开发思想。这个程序为了使用皮肤,用框架来构建出来了整个应用,确实灵活了很多。另外程序大量使用了控件,包括自定义服务器控件和网页控件,代码都是直接写在 ASPX 文件中,没有使用  CodeBehind 技术,因为网页上面几乎不用写什么代码了,都在自定义服务器控件中了。

接口的终结解释

http://club.sooyie.com/blogs/wuzi/archive/2006/10/09/_A563E3538476C87ED37EE389CA91_-.aspx
  简单的说接口就是一个契约或者规范。比如遥控器,国家出台了一个国家遥控器规范,明文要求所有的遥控器厂家都要遵循这个规范,如果不遵循规范就不给3C认证标志,就不允许上市出卖。为什么要这个规范呢?大家在时间生活中会经常碰到,甲厂的遥控器不能遥控乙厂的电视,电视遥控器不能遥控其它电器如空调,冰箱!原因是什么呢?是各个遥控器都没有遵循一个规范,电波有长有短,电压有高有低,导致各自为政,四分五裂。
  可以想像出国家遥控器标准只是是规定遥控器的一些重要技术指标,比如要发射波应该多长,电压应该多高……但它绝对不会规范出遥控器的材质、形状、重量和颜色,也就是说规范把所有同遥控无关的东西都抛弃了!每个遥控器厂家只要遵循了规范,那么对遥控器可以有任意的诠释。比如A厂可以用铁做,牢固无比,B厂可以用纸,可以任意折叠,anyway,不管用什么做,做出什么样子,只要遵循规范的遥控器就可以遥控所有的电器(当然电器厂家也要遵循一定的规范),甚至可以遥控导弹发射!利害吧,这就是接口的威力!
再详细点,接口就是一个规范,他和具体的实现无关!接口是规范(虚的),他只是一张纸,也是说在实际的使用中接口只有依托一个实现了它的类的实例,才会有意义,如上面的各个厂家做的遥控器产品。每个实现接口的类(厂家)必需实现接口中所有的功能。一旦一个类实现了一个接口,就可说一个类和接口捆绑了(这个很重要,做题目的时候会用到)

  来个例子
    interface 遥控器规范    //国家定义的遥控器规范,每个遥控器厂家必需实现(诠释)它
    {
          int 波长();
          int 电压();
    }
    class 甲厂铁遥控器 : 遥控器规范    //甲厂的遥控器实现(诠释)了这个规范,它和遥控器规范捆绑了!好,它可以在市场上出售了
    {
          public int 波长();                        //规范上定义的指标
          public int 电压();                        //规范上定义的指标
          public int 形状() { 正方形 };              //甲厂自己对该产品的诠释
          public int 材质() { 铁 };                  //甲厂自己对该产品的诠释
    }
    class 乙厂纸遥控器 : 遥控器规范    //甲厂的遥控器实现(诠释)了这个规范,它和遥控器规范捆绑了!好,它可以在市场上出售了
    {
          public  int  波长();                      //规范上定义的指标 
          public  int  电压();                      //规范上定义的指标       
          public  int  形状() { 圆形 };             //甲厂自己对该产品的诠释,是圆形
          public  int  材质() { 纸 };              //甲厂自己对该产品的诠释,用纸做,好酷!     
    }
    class 电器
    { procedure 接收遥控(遥控器规范)    //电器上,接收遥控指令
        {.....
              接收(遥控器规范.波长)  ;             
              接收(遥控器规范.电压);
              .....}      }   
    static  main()
    {
        甲厂铁遥控器    ControlA    ;    //申明控制器对象
        乙厂纸遥控器    ControlB    ;
        ControlA    =  new  甲厂铁遥控器();  //实例化控制器对象,这个时候系统在托管堆中为该对象分配了空间
        ControlB    =  new  乙厂纸遥控器()  ;
        遥控器规范    ControlInterfaceA  =  (遥控器规范)遥控器1  ;    //把对象实例转换成一个规范,为什么呢?因为"我家的电器".只能识别遥控器规范,它识别不到具体的遥控器
        遥控器规范    ControlInterfaceB  =  (遥控器规范)遥控器2;    //同上
        电器    我家的电器  =  new  电器();
        我家的电器.接收遥控(ControlInterfaceA)    //我用甲厂遥控器遥控我家的电器.  注意:  这里的ControlInterfaceA是不能单独存在的,它必要依赖实现了"遥控器规范"的类的实例"ControlA".道理很简单,接口是一个指针,不会被分配空间,你就无法使用,只有和一个具体类的实例联系了,才有了可以活跃空间.
        我家的电器.接收遥控(ControlInterfaceB)    //我用乙厂遥控器遥控我家的电器
       
        ...
        //下面是我的的想像,我可以用遥控器来控制导弹发射!
        我的导弹.接收遥控(ControlInterfaceA);
        我的导弹.接收遥控(ControlInterfaceB);       
        ...
    }
--------------------------------------------------------------------
接口的执行
  好了,有了接口的概念,再来谈 C# 程序在运行中是如何使用接口的,如何访问接口函数。具体流程如下
  A、当调用一个接口的函数时,系统会去检查这个接口对应实例是什么。
  B、找到这个实例后,再去找这个实例对应的实例类是什么。
  C、根据这个实例类去检查该实例类是否和接口发生了捆绑(看是否实现了该接口,冒号后面就是)
  D、好!如果实例类实现了该接口(发生了捆绑),它就在这个实例类中找函数的定义。然后执行该函数。执行结束。
  E、如果没找到,他就继续往父类找,直到找到第一个和接口捆绑的父类为止。
  F、找到后,它再检查该函数是否是虚拟函数。
  G、如果不是,他马上就执行它。
H、如果是,麻烦了,系统又要从头来过,去检查该实例类的函数是否重载了该函数。

例子:

using System;

namespace ConsoleApplication1
{
 /**//// <summary>
 /// Class1 的摘要说明。
 /// </summary>
 public interface  I
 {
  void  Func();
 }
        
 class  A :I 
 {
  public  virtual  void  Func() 
  { 
   Console.WriteLine("FuncA");
  }
 }
       
 class  B  :  A  ,  I    //注意这里的意思?
 {
  public  void  Func()  {  Console.WriteLine("FuncB");}
 }       
       
 class  C  :    A 
 {
  public  override  void  Func()  {  Console.WriteLine("FuncC");}
 }   

 class Class1
 {
  /**//// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main()
  {
   I  a  =  new  A()  ;    //申明了接口a,并马上和一个类的实例发生关系了
   I  b  =  new  B()  ;    //申明了接口b,并马上和一个类的实例发生关系了
   I  c  =  new  C()  ;    //申明了接口c,并马上和一个类的实例发生关系了
   a.Func()  ;              //检查a的实例A,  发现A和接口I捆绑了,所以执行A的函数Func  ,结果:  FuncA
   b.Func()  ;              //检查b的实例B,  发现B和接口I捆绑了,所以执行B的函数Func  ,结果:  FuncB
   c.Func()  ;              //家常c的实例C,发现其没有和接口I捆绑,系统继续找它的父类.  发现A和I捆绑了,他就去找函数A,发现A是虚拟函数,系统又从头来找类的实例C,发现C重载(override)了Func,好了,马上执行该函数.  结果是FuncC;
   Console.ReadLine();
  } 
 }
}

10月29日

我为什么要来北京

   我为什么要来北京?
    这个问题很难回答,但是还是要说的:
     1.北京的发展比长沙好:
          无论从什么方面说,北京的各类方面要比长沙的要好.虽然长沙也在高速发展中.我不在广西,既然要出来闯,那我到北京自然要比在长沙好
     2.未玩待续

好久没写MSN了

 
      好久没写了,一方面是客观原因自己没有时间,一方面是自己也不想写,不知道自己要写什么,
  虽然很多想法,但是都很不成熟,也没有想写的欲望了
      但是我还是想感谢我的女朋友了.如果不是她的支持,我都不知道自己怎么走下去了...............
   

吴敏来北京了

   
    我的好朋友吴敏来北京了.  我今天看到他的时候,我吓了跳,虽然我知道他比较累,但是看到他那样瘦,我还是不能相信我的眼睛.
 我们分开快两个月了,虽然都没有什么联系,但是我相信他的能力,相信他的运气,但是还是没有想到他会那样的累.心里很不是滋味.
     高高的颧骨顶他的脸蛋,整个脸都是皮.我想这些都是他通宵所导致的,加上营养不够好,哎,这些都让他累的.有时候我也想.如果是我自己能不能努力到他那样地步恩?
     我估计是不行的.我虽然不怕苦,但是这样高强度的和高压力下的通宵.我会受不了的,佩服他了.
     
    
1月12日

rosemarry 的鼓励

 rosemarry也许是我自己太看不起自己了吧!或许是自己太不愿意让自己从小做起了.或许没有或许..我只是很不甘心为什么我自己不能够做到应该做的时期呢,为什么我的付出没有得到相应的回报呢?很多晚上我都对着月亮一遍一遍的问自己,我没有足够的努力我没有足够的去做么?为什么我不能和其他人一样,只经过一点努力就能达到目标,我相信这个世界上一定会有这样一种方法:任何事情都由他的捷径!我就是不明白为什么我都没有找到呢!!!!!!!!!!!!!!!!!!!! 我对着苍天问:为什么我没有找到!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! baidu一下吧

夜也深了。。

   夜也深了。刚刚和老四qq完有点累了.
大学四年就要过去了.怎么也不明白四年自己变了怎样多,回头看看自己的脚步,发现很多做过事情,都是自己曾经深恶痛绝的,或许这个就是人们常常说的人在江湖身不由己,啊! 又给自己找借口了,埃.突然觉得这个世界好像就是这样变化的,
      人都可以变的吧,自我安慰一下,堕落的时间越来越多了,这样是不行的
1月6日

计数器

1. 在已经登录的状态,点击[编辑您的共享空间] 进入后台。

2. 在当时浏览器地址栏现有的地址后面添上“  &powertoy=sandbox ”然后按回车。进入新的页面(页面看起来没有变化)。

3. 点[自定义]菜单,得到到一个横条式的目录。 再点[模块],得到下拉菜单, 在下拉菜单里选择添加模块 PowerToy: Custom HTML,此时在所编辑页面内会出现一个新的模块。标题名称为 Custom HTML。 拖动这个模块至你想要置放的位置。(通常是页面的最上方)  置放完毕,按上方[保存]按钮,你会发现 “ Custom HTML ”模块已经出现在那里,这时可以在该模块内输入任何 HTML 的脚本代码

4.把您在计数器网站里申请的代码直接输入进去就可以了!

 

  1. 进入 MSN Spaces 的编辑页面。
  2. 在编辑页面的地址(这时在地址栏中显示的地址)后面附加上“ &powertoy=musicvideo ”后回车。(就是你的MSN空间的地址后面加上“ &powertoy=musicvideo "
    举例:比如我的在空间点了编辑以后页面的地址为“http://spaces.msn.com/members/loucson/PersonalSpace.aspx?_c02_owner=1&_c=”加上“ &powertoy=musicvideo ”就等于“http://spaces.msn.com/members/loucson/PersonalSpace.aspx?_c02_owner=1&_c=&powertoy=musicvideo ”然后按回车。
  3. 新的页面载入后,点击“自定义”,在模块的下拉菜单中就有一个新的“PowerToy:Windows Media Player”(原来是没有的项目),点击一下增加,然后保存。
  4. 这样就会有一个新的模块 Window Media Player,目前该模块只有英文界面。
  5. 注意媒体文件的地址 URL,只支持 WMA, WMV, WAV, AVI, MPG, MPEG, MP3 格式(也不支持播放列表),除外的格式将无法正常保存,导致预览时播放器的按钮为灰白
  6. 如果想页面载入时自动播放的话,只需勾上 Auto Start。其他参数如播放次数和播放器的外观等默认无妨。
  7. 这样,你的 MSN Spaces 就有了在线播放器的功能了。
1月2日

为人处世28条必看 为人处世28条必看

1.长相不令人讨厌,如果长得不好,就让自己有才气;如果才气也没有,那就总是微笑。 2.气质是关键。如果时尚学不好,宁愿纯朴。 3.与人握手时,可多握一会儿。真诚是宝。 4.不必什么都用“我”做主语。 5.不要向朋友借钱。 6.不要“逼”客人看你的家庭相册。 7.与人打“的”时,请抢先坐在司机旁。 8.坚持在背后说别人好话,别担心这好话传不到当事人耳朵里。 9.有人在你面前说某人坏话时,你只微笑。 10.自己开小车,不要特地停下来和一个骑自行车的同事打招呼。人家会以为你在炫耀。 11.同事生病时,去探望他。很自然地坐在他病床上,回家再认真洗手。 12.不要把过去的事全让人知道。 13.尊敬不喜欢你的人。 14.对事不对人;或对事无情,对人要有情;或做人第一,做事其次。 15.自我批评总能让人相信,自我表扬则不然。 16.没有什么东西比围观者们更能提高你的保龄球的成绩了。所以,平常不要吝惜你的喝彩声。 17.不要把别人的好,视为理所当然。要知道感恩。 18.榕树上的“八哥”在讲,只讲不听,结果乱成一团。学会聆听。 19.尊重传达室里的师傅及搞卫生的阿姨。 20.说话的时候记得常用“我们”开头。 21.为每一位上台唱歌的人鼓掌。 22.有时要明知故问:你的钻戒很贵吧!有时,即使想问也不能问,比如:你多大了? 23.话多必失,人多的场合少说话。 24.把未出口的“不”改成:“这需要时间”、“我尽力”、“我不确定”、“当我决定后,会给你打电话”…… 25.不要期望所有人都喜欢你,那是不可能的,让大多数人喜欢就是成功的表现。 26.当然,自己要喜欢自己。 27.如果你在表演或者是讲演的时候,如果只要有一个人在听也要用心的继续下去,即使没有人喝采也要演,因为这是你成功的道路,是你成功的摇篮,你不要看的人成功,而是要你成功。 28.如果你看到一个贴子还值得一看的话,那么你一定要回复,因为你的回复会给人继续前进的勇气,会给人很大的激励。同时也会让人感激你。
12月18日

应用程序中 调用web service服务(framework 2.0) 必须注意的问题

今天有空随便把那个区位码的东西做成服务罢..但是遇到一个该死的问题.哈哈不过最后还是解决了啦........................................
在应用程序中 调用web service服务(framework 2.0) 得做一个无赖的事情就是把访问权利给 DefaultCredentials 分配给 Web 服务客户端代理的 Credentials  否则,怎么样都不能让你access:
The request failed with HTTP status 401: Access Denied
完整代码如下
 localhost.Service service = new global::Character.localhost.Service();
 service.Credentials = System.Net.CredentialCache.DefaultCredentials;
 
第 1 张,共 10 张
更多相册 (1)