??xml version="1.0" encoding="utf-8" standalone="yes"?>国模视频一区二区,精品亚洲一区二区三区四区五区高,亚洲国产日韩精品http://www.aygfsteel.com/Weibo-Forum/archive/2006/04/13/40833.html微薄C֌微薄C֌Thu, 13 Apr 2006 03:16:00 GMThttp://www.aygfsteel.com/Weibo-Forum/archive/2006/04/13/40833.htmlhttp://www.aygfsteel.com/Weibo-Forum/comments/40833.htmlhttp://www.aygfsteel.com/Weibo-Forum/archive/2006/04/13/40833.html#Feedback0http://www.aygfsteel.com/Weibo-Forum/comments/commentRss/40833.htmlhttp://www.aygfsteel.com/Weibo-Forum/services/trackbacks/40833.html Java Annotation入门
作者:cleverpig





版权声明Q本文可以自p{载,转蝲时请务必以超链接形式标明文章原始出处和作者信息及本声?/span>
作?cleverpig(作者的Blog:http://blog.matrix.org.cn/page/cleverpig)
原文:[http://www.matrix.org.cn/resource/article/44/44048_Java+Annotation.html]http://www.matrix.org.cn/resource/article/44/44048_Java+Annotation.html[/url]
关键?Java,annotation,标注


摘要Q?/span>
本文针对java初学者或者annotation初次使用者全面地说明了annotation的用方法、定义方式、分cR初学者可以通过以上的说明制作简单的annotationE序Q但是对于一些高U的annotation应用Q例如用自定义annotation生成javabean映射xml文gQ还需要进一步的研究和探讨。涉及到深入annotation的内容,作者将在后文《Java Annotation高应用》中谈到?br />
同时Qannotationq行存在两种方式Q运行时、编译时。上文中讨论的都是在q行时的annotation应用Q但在编译时的annotation应用q没有涉及,

一、ؓ什么用AnnotationQ?/span>

在JAVA应用中,我们帔RC些需要用模版代码。例如,Z~写一个JAX-RPC web serviceQ我们必L供一Ҏ口和实现作ؓ模版代码。如果用annotation对远E访问的Ҏ代码q行修饰的话Q这个模版就能够使用工具自动生成?br />另外Q一些API需要用与E序代码同时l护的附属文件。例如,JavaBeans需要一个BeanInfo Class与一个Bean同时使用/l护Q而EJB则同样需要一个部|描q符。此时在E序中用annotation来维护这些附属文件的信息十分便利而且减少了错误?br />
二、Annotation工作方式Q?/span>

?.0版之前的Javaq_已经h了一些ad hoc annotation机制。比如,使用transient修饰W来标识一个成员变量在序列化子pȝ中应被忽略。而@deprecatedq个javadoc tag也是一个ad hoc annotation用来说明一个方法已q时。从Java5.0版发布以来,5.0q_提供了一个正式的annotation功能Q允许开发者定义、用自qannoatationcd。此功能׃个定义annotationcd的语法和一个描qannotation声明的语法,dannotaion的APIQ一个用annotation修饰的class文gQ一个annotation处理工具QaptQ组成?br />annotationq不直接影响代码语义Q但是它能够工作的方式被看作cME序的工h者类库,它会反过来对正在q行的程序语义有所影响。annotation可以从源文g、class文g或者以在运行时反射的多U方式被d?br />当然annotation在某U程度上使javadoc tag更加完整。一般情况下Q如果这个标记对java文档产生影响或者用于生成java文档的话Q它应该作ؓ一个javadoc tagQ否则将作ؓ一个annotation?br />
三、Annotation使用ҎQ?/span>

1。类型声明方式:
通常Q应用程序ƈ不是必须定义annotationcdQ但是定义annotationcdq难事。Annotationcd声明于一般的接口声明极ؓcMQ区别只在于它在interface关键字前面用“@”符受?br />annotationcd的每个方法声明定义了一个annotationcd成员Q但Ҏ声明不必有参数或者异常声明;Ҏq回值的cd被限制在以下的范_primitives、String、Class、enums、annotation和前面类型的数组Q方法可以有默认倹{?br />
下面是一个简单的annotationcd声明Q?br />清单1:

    /**
     * Describes the Request-For-Enhancement(RFE) that led
     * to the presence of the annotated API element.
     */
    public @interface RequestForEnhancement {
        int    id();
        String synopsis();
        String engineer() default "[unassigned]";
        String date();    default "[unimplemented]";
    }

代码中只定义了一个annotationcdRequestForEnhancement?br />
2。修饰方法的annotation声明方式Q?/b>
annotation是一U修饰符Q能够如其它修饰W(如public、static、finalQ一般用。习惯用法是annotaions用在其它的修饰符前面。annotations由“@+annotationcd+带有括号的成?值列表”组成。这些成员的值必L~译时常量(卛_q行时不变)?br />
AQ下面是一个用了RequestForEnhancement annotation的方法声明:
清单2:

    @RequestForEnhancement(
        id       = 2868724,
        synopsis = "Enable time-travel",
        engineer = "Mr. Peabody",
        date     = "4/1/3007"
    )
    public static void travelThroughTime(Date destination) { ... }


BQ当声明一个没有成员的annotationcd声明Ӟ可用以下方式:
清单3:

    /**
     * Indicates that the specification of the annotated API element
     * is preliminary and subject to change.
     */
    public @interface Preliminary { }


作ؓ上面没有成员的annotationcd声明的简写方式:
清单4:

    @Preliminary public class TimeTravel { ... }


CQ如果在annotations中只有唯一一个成员,则该成员应命名ؓvalueQ?br />清单5:

    /**
     * Associates a copyright notice with the annotated API element.
     */
    public @interface Copyright {
        String value();
    }


更ؓ方便的是对于h唯一成员且成员名为value的annotationQ如上文Q,在其使用时可以忽略掉成员名和赋值号Q?Q:
清单6:

    @Copyright("2002 Yoyodyne Propulsion Systems")
    public class OscillationOverthruster { ... }


3。一个用实例:
l合上面所讲的Q我们在q里建立一个简单的Zannotation试框架。首先我们需要一个annotationcd来表C某个方法是一个应该被试工具q行的测试方法?br />清单7:

    import java.lang.annotation.*;

    /**
     * Indicates that the annotated method is a test method.
     * This annotation should be used only on parameterless static methods.
     */
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.METHOD)
    public @interface Test { }


值得注意的是annotaioncd声明是可以标注自qQ这Lannotation被称为“meta-annotations”?br />
在上面的代码中,@Retention(RetentionPolicy.RUNTIME)q个meta-annotation表示了此cd的annotation被虚拟Z留其能够在q行旉过反射被读取。而@Target(ElementType.METHOD)表示此类型的annotation只能用于修饰Ҏ声明?br />
下面是一个简单的E序Q其中部分方法被上面的annotation所标注Q?br />清单8:

    public class Foo {
        @Test public static void m1() { }
        public static void m2() { }
        @Test public static void m3() {
            throw new RuntimeException("Boom");
        }
        public static void m4() { }
        @Test public static void m5() { }
        public static void m6() { }
        @Test public static void m7() {
            throw new RuntimeException("Crash");
        }
        public static void m8() { }
    }

Here is the testing tool:

    import java.lang.reflect.*;

    public class RunTests {
       public static void main(String[] args) throws Exception {
          int passed = 0, failed = 0;
          for (Method m : Class.forName(args[0]).getMethods()) {
             if (m.isAnnotationPresent(Test.class)) {
                try {
                   m.invoke(null);
                   passed++;
                } catch (Throwable ex) {
                   System.out.printf("Test %s failed: %s %n", m, ex.getCause());
                   failed++;
                }
             }
          }
          System.out.printf("Passed: %d, Failed %d%n", passed, failed);
       }
    }


q个E序从命令行参数中取出类名,q且遍历此类的所有方法,试调用其中被上面的试annotationcd标注q的Ҏ。在此过E中Z扑և哪些Ҏ被annotationcd标注q,需要用反的方式执行此查询。如果在调用Ҏ时抛出异常,此方法被认ؓ已经p|Qƈ打印一个失败报告。最后,打印q行通过/p|的方法数量?br />下面文字表示了如何运行这个基于annotation的测试工P

清单9:

    $ java RunTests Foo
    Test public static void Foo.m3() failed: java.lang.RuntimeException: Boom
    Test public static void Foo.m7() failed: java.lang.RuntimeException: Crash
    Passed: 2, Failed 2


四、Annotation分类Q?/span>

Ҏannotation的用方法和用途主要分Z下几c:

1。内建Annotation——Java5.0版在java语法中经常用到的内徏AnnotationQ?/b>
@Deprecated用于修饰已经q时的方法;
@Override用于修饰此方法覆盖了父类的方法(而非重蝲Q;
@SuppressWarnings用于通知java~译器禁止特定的~译警告?br />
下面代码展示了内建Annotationcd的用法:
清单10:

package com.bjinfotech.practice.annotation;

/**
* 演示如何使用java5内徏的annotation
* 参考资料:
* http://java.sun.com/docs/books/tutorial/java/javaOO/annotations.html
* http://java.sun.com/j2se/1.5.0/docs/guide/language/annotations.html
* http://mindprod.com/jgloss/annotations.html
* @author cleverpig
*
*/
import java.util.List;

public class UsingBuiltInAnnotation {
        //食物c?br />        class Food{}
        //q草c?br />        class Hay extends Food{}
        //动物c?br />        class Animal{
                Food getFood(){
                        return null;
                }
                //使用Annotation声明DeprecatedҎ
                @Deprecated
                void deprecatedMethod(){
                }
        }
        //马类-l承动物c?br />        class Horse extends Animal{
                //使用Annotation声明覆盖Ҏ
                @Override
                Hay getFood(){
                        return new Hay();
                }
                //使用Annotation声明止警告
                @SuppressWarnings({"deprecation","unchecked"})
                void callDeprecatedMethod(List horseGroup){
                        Animal an=new Animal();
                        an.deprecatedMethod();
                        horseGroup.add(an);
                }
        }
}


2。开发者自定义AnnotationQ由开发者自定义Annotationcd?/b>
下面是一个用annotationq行Ҏ试的sampleQ?br />
AnnotationDefineForTestFunctioncd定义如下Q?br />清单11:

package com.bjinfotech.practice.annotation;

import java.lang.annotation.*;
/**
* 定义annotation
* @author cleverpig
*
*/
//加蝲在VM中,在运行时q行映射
@Retention(RetentionPolicy.RUNTIME)
//限定此annotation只能标示Ҏ
@Target(ElementType.METHOD)
public @interface AnnotationDefineForTestFunction{}


试annotation的代码如下:

清单12:

package com.bjinfotech.practice.annotation;

import java.lang.reflect.*;

/**
* 一个实例程序应用前面定义的AnnotationQAnnotationDefineForTestFunction
* @author cleverpig
*
*/
public class UsingAnnotation {
        @AnnotationDefineForTestFunction public static void method01(){}
        
        public static void method02(){}
        
        @AnnotationDefineForTestFunction public static void method03(){
                throw new RuntimeException("method03");
        }
        
        public static void method04(){
                throw new RuntimeException("method04");
        }
        
        public static void main(String[] argv) throws Exception{
                int passed = 0, failed = 0;
                //被检的cd
                String className="com.bjinfotech.practice.annotation.UsingAnnotation";
                //逐个查此cȝҎQ当其方法用annotation声明时调用此Ҏ
            for (Method m : Class.forName(className).getMethods()) {
               if (m.isAnnotationPresent(AnnotationDefineForTestFunction.class)) {
                  try {
                     m.invoke(null);
                     passed++;
                  } catch (Throwable ex) {
                     System.out.printf("试 %s p|: %s %n", m, ex.getCause());
                     failed++;
                  }
               }
            }
            System.out.printf("试l果Q?通过: %d, p|Q?%d%n", passed, failed);
        }
}


3。用第三方开发的Annotationcd
q也是开发h员所常常用到的一U方式。比如我们在使用Hibernate3.0时就可以利用Annotation生成数据表映配|文Ӟ而不必用Xdoclet?br />
五、ȝQ?/span>

1。前面的文字说明了annotation的用方法、定义方式、分cR初学者可以通过以上的说明制作简单的annotationE序Q但是对于一些高U的annotation应用Q例如用自定义annotation生成javabean映射xml文gQ还需要进一步的研究和探讨?br />
2。同Ӟannotationq行存在两种方式Q运行时、编译时。上文中讨论的都是在q行时的annotation应用Q但在编译时的annotation应用q没有涉及,因ؓ~译时的annotation要用annotation processing tool?br />
涉及以上2斚w的深入内容,作者将在后文《Java Annotation高应用》中谈到?br />
六、参考资源:
·Matrix-Java开发者社?http://www.matrix.org.cn
·http://java.sun.com/docs/books/tutorial/java/javaOO/annotations.html
·http://java.sun.com/j2se/1.5.0/docs/guide/apt/GettingStarted.html
·http://java.sun.com/j2se/1.5.0/docs/guide/apt/GettingStarted.html
·http://java.sun.com/j2se/1.5.0/docs/guide/apt/GettingStarted.html
·作者的Blog:http://blog.matrix.org.cn/page/cleverpig


微薄C֌ 2006-04-13 11:16 发表评论
]]>
你也在井里吗http://www.aygfsteel.com/Weibo-Forum/archive/2006/04/11/40365.html微薄C֌微薄C֌Tue, 11 Apr 2006 00:49:00 GMThttp://www.aygfsteel.com/Weibo-Forum/archive/2006/04/11/40365.htmlhttp://www.aygfsteel.com/Weibo-Forum/comments/40365.htmlhttp://www.aygfsteel.com/Weibo-Forum/archive/2006/04/11/40365.html#Feedback0http://www.aygfsteel.com/Weibo-Forum/comments/commentRss/40365.htmlhttp://www.aygfsteel.com/Weibo-Forum/services/trackbacks/40365.html有一天某个农夫的一头驴子,不小心掉q一口枯井里Q?br />农夫l尽脑汁惛_法救出驴子,但几个小时过MQ?br />驴子q在井里痛苦地哀嚎着?br />最后,q位农夫军_攑ּQ他惌头驴子年U大了,
不值得大费周章L它救出来Q不q无论如何,q口井还是得填v来?于是农夫便请来左d舍帮忙一起将井中的驴子埋了,以免除牠的痛苦?br />农夫的邻居们人手一把铲子,开始将泥土铲进枯井中?br />当这头驴子了解到自己的处境时Q刚开始哭得很凄惨?br />但出人意料的是,一会儿之后q头驴子安静下来了?br />农夫好奇地探头往井底一看,出现在眼前的景象令他大吃一惊:

当铲q井里的泥土落在驴子的背部时Q?br />驴子的反应o人称奇──它将泥土抖落在一旁,然后站到铲进的惔土堆上面
pP驴子大安倒在它n上的泥土全数抖落在井底,然后再站上去?br />很快圎ͼq只驴子便得意地上升C口,
然后在众人惊讶的表情中快步地跑开了!

如驴子的情况,在生命的旅程中,有时候我们难免会陷入「枯井」里Q?br />会被各式各样的「惔沙」們ր在我们w上Q?br />而想要从q些「枯井」脱困的U诀是Q将「惔沙」抖落掉Q然后站C去!
事实上,我们在生zM所遭遇的种U困难挫折就是加诸在我们w上的「惔沙」;
然而,换个角度看,它们也是一块块的垫脚石Q?br />只要我们锲而不舍地它们抖落掉Q然后站上去Q?br />那么即是掉落到最q井,我们也能安然地脱困?br />本来看似要活埋驴子的丑֊Q由于驴子处理厄境的态度不同Q?br />实际上却帮助了它Q这也是改变命运的要素之一?br />如果我们以肯定、沉着E重的态度面对困境Q助力往往潜藏在困境中?br />一切都军_于我们自己,学习放下一切得失,勇往直前q向理想?br />我们应该不断地徏立信心、希望和无条件的爱, q些都是帮助我们从生命中的枯井脱困ƈ扑ֈ自己的工兗?/strong>

LC下五个快乐的秘诀Q?br />1. 不要存有憎恨的念头?br />2. 不要让忧虑沾染你的心?br />3. 单地生活?br />4. 多分享?br />5. 欲求?/strong>



微薄C֌ 2006-04-11 08:49 发表评论
]]>
http://www.aygfsteel.com/Weibo-Forum/archive/2006/04/11/40364.html微薄C֌微薄C֌Tue, 11 Apr 2006 00:43:00 GMThttp://www.aygfsteel.com/Weibo-Forum/archive/2006/04/11/40364.htmlhttp://www.aygfsteel.com/Weibo-Forum/comments/40364.htmlhttp://www.aygfsteel.com/Weibo-Forum/archive/2006/04/11/40364.html#Feedback0http://www.aygfsteel.com/Weibo-Forum/comments/commentRss/40364.htmlhttp://www.aygfsteel.com/Weibo-Forum/services/trackbacks/40364.html q边出来两个解释名词Q我量不讲名词Q是因ؓ我不太喜Ƣ讲理论Q但是碰到名词还是提一下。其实我们中国祖先很早早q道这个道理,只不q西zh把他提炼炼出来以后,一动就用了他们的专业名字?a target="_blank">

X和Y加v来是ZQ我们是q样做的QX是集权的意思,集权的管理,q个集权Q不是政M的集权。就是说Q真正的一把抓。在中国人寿可不可能有一U手下,讨厌做事情,逃避责QQ不喜欢用脑{,有的Q一定有q两个h?/span>

q时候你像牧羊犬那样带着他,底下的h都是牲口Q你把他带v来好了,你不那些猪、牛、羊、马是什么想法,反正l统都是逃避责QQ不喜欢动脑{,你就把他带v来。但是你认ؓ中国人寿Q每个h都是q样吗?

不可能,W二U就出来了,叫做Y理论QY理论Q我们叫做参与管理。一个部下成熟以后,你就应该让他参与。每天在那里动脑{想问题。真正如果有q种手下Q两个加h{于Z。其实中国h寿ƈ不是全部都用X来管的,也不是全部用Y来管的,因ؓq两Uh其实l统都有?/span>

我们讲到YQ有没有人喜Ƣ接受Q务呢Q怎么会没有呢Q中国未来的d假如?**Q那么未来的ȝ是谁Q不知道Q假设我?**ȝ把我们上市?*l找MQ我说王兄啊Q我q纪大了Q准备要退休了Q这个位|让你来坐一坐,你看怎么P你认?*会怎么Ԍ

NOQNOQȝ不行Q我q个人只能管一个上P到嘉定已经很勉ZQ一到昆山我就完了Q一过昆山׃塌糊涂,我的能力仅限于上P他会q样讲话吗?不会。他会说Q谢谢ȝ的抬爱,你看什么时候上班啊Q?/span>

q就证明Qh喜欢dQ没有h不喜ƢQ务,问题是给他的条g够不够?**先生知道Q到了中央,他的权利是很大的。如果真的一Ҏ利都没有Q你看他会不会愿意去Q?

所以同L市长Q天z市׃行。天z市长听说凡事向***汇报Q结果天z市弄得现在q个样子。结果天z现在传Z句风凉话Q?**q个市长Q把一个直辖市得县城一栗就是这h的,你要去过天|q道了Q可惜这个地斏V?/span>

我其实三q前到北京和天|我就发现q个现象Q那时我在北京碰到几个高阶层的hQ其实天z和北京两个直辖市靠得这么近Q干脆合q算了。h安说天z离皇上太近Q所以皇上给他一U压q。其实真正的理由是这个理由吗Q天z有条v治I我们上v也有条苏州河Q天z有个v安公路,我们上v有个外WQ其实是一L?/span>

民国初年的天z,比北京还J荣Q记得吗Q那时候买泊来品还要天z去Q外国领事馆都在天|。袁世凯q住q天z,傅A都住q。所以今天闹成这个样子,说穿了就是管理h员的问题?/span>

我结果讲了讲Q北京笑一W,没想C天传出新的消息,叫做大北京计划,果然不错Q英雄所见略同,大家的想法都一L。大北京计划出来了,늛天|Q所以北京不好意思把天|q个名字取掉Q但是现在北京开始管天|了?/span>

从明q开始,大北京计划开始了Q北京的高速公路,北京的地下铁Q现在开始要向天z通了Q这p明北京现在要把天z涵盖v来。不q个样子Q那个天z永q变成一个县城?

那么什么叫中和Q是q样做的。我们不可以凡事都讲物质Q认为给人民币就可以了,其实我们q要注意_。我们不能够一动就惩罚Q其实我们还要讲Ȁ励。我不能一动就把制度搬出来吓hӞ其实我们q要重视人心。这些地斚w帔R要,lh民币q个谁都会用Q一动就研究奖金Q请问精面你是否注意到Q?/span>

我读q一文章,说中国的企业Q右边这三个q做得不够,是说不太注意h性管理吧Q讲Ch性,我提醒各位,人性跟人情是两个意思。噢Q我圈一个就讲一个,我们光讲物质Q却没有注意到精。那么我来讲一个精上有关的事情。什么东西是一U精面Q?

在宋朝的时候有一个老妈妈,跟他的邻居说Q我那个老三在一个将军的底下打仗受了伤,军亲自跪在C替他扎伤口,说着Q她哭h。很感动是不是?

她说不是的,我的老大原来也在他底下,一受伤Q将军一跪在C替他包扎伤口Q他报销了,打仗奋勇的杀敌,他就很快报销了。后来我那个老二又去Q又受伤Q也是这样包扎的Q也报销了。现在完了,我那个仅存的老三Q看样子也快报销了?/span>

q叫做精面。如果你下次受了伤Q如果我们单M自给你包扎伤口,你很快就报销了。对不对Q你含着眼泪Q快报销了。你回家l你老婆_快报销了,q个伤口是我们单ȝ包扎的。请问,q样子要花多h民币Q不要花多少人民币嘛Q这U观念,叫做_面,其实我们做得不太够?

W二个,惩罚谁都会啊Q要记过Q要调职Q要冷冻q不ҎQ问题是你激׃吗?Ȁ励。我有两ơ在摩托|拉Q他们的副d我去参观他们的厂房,一个老美Q走q去的时候看C个中国员工在那里拧汗Q男的,他走到旁边说Q好孩子?/span>

l果他又跟我走到后面MQ一个女的在那里做瓶检验,他又说NICE GIRLQ那个女的也W一W,他就跟我出去了。其实摩托罗拉那个老美Q跟他底下那两个中间?U,9层,请问他ؓ什么这栯Q这个叫做激励?/span>

我后来发玎ͼ西洋人非常注意这一炏V因为我们当ȝ的,每天都快太忙了,不相信我h你们一个问题,你们每天q么忙的时候,每天花几分钟Q下ȝ看你们干部?你每天花几分钟,在办化验室里面走一圈?你干部送上来的那报告,你有没有先称赞再修改Q当人家l你一个提议,你有没有先鼓励,然后指出他的盲点Q?/span>

我们都是Ȁ׃I一动就训,一动就削,一动就拿命令出来唬Q这个其实是~少Ȁq。后来我才发现这个是要从养成的Q原来西方从对他的子女有Ȁ励,所以长大以后就Lq种Ȁq习惯Q?

人类学家辑ְ文,的时候有一天是q样回去的,他爸一看就知道口袋里有什么东西啊Q这Ҏ出来是只四脚蛇,q边掏出来是只金龟子。小心不要咬到腿了。不会的Q长大以后成Zhcd家?a target="_blank">成功|?/font>

如果你的宝是回来是q样子的Q口袋里是什么东西啊Q啊呀Q啪一下,看你象个四脚蛇,赶快去读书!一天到晚玩蛇!q一打,打掉个hcdӞq就是没有激励?

d有个女的来上P专门研究非洲的猩猩珍古dQ她在四岁的时候,有天下午不见Q她妈妈到处扑֥。不见了Q几乎都要到警察局报案了,黄昏的时候,那个家伙出现了,手上拿两个鸡蛋,一w鸡毛,头上q有炚w屎,妈,我孵了一下午孵不出小鸡。原来躲到鸡W里辏V?/span>

她妈妈一看,啊呀Q我的天那!赶快z个澡,我们吃完饭研I一下鸡蛋是怎么늚。吃完饭以后母女两个讲了半天也讲不清楚。她妈妈又不是动物学家?/span>

W二天她妈妈亲自到学校里问老师Q回来再告诉珍古得那时候她才四岁,q种观念叫做Ȁ励。如果是你的奛_一个下午不见了Q结果从鸡笼里出来了Q啪嗒!一下子下去Q她哭了Q你W了。这样子其实叫做没有Ȁ励?

W三个是人性。讲制度谁都会,公司的制度搬出来谁都会Q但是一旦要讲到人性,我们做得又有Ҏ~。所谓h性,他的意思是q样的,从h的心里面L、思考、观察一U行为?/span>

那么回到我们刚才那个例子Q三得利啤酒厂副厂长的那个爸爸死了,那个副厂长是个上hQ他的爸爸死了,三d利啤酒厂的老d到消息,到他家ȝ他,q个不稀奇啊Q鞠w安C句不E奇,E奇的是他跟他俩个站在一P开始对客h鞠躬?/span>

另外陆箋q有很多的同事来慰问Q三得利啤酒那个ȝ理跟中国的副ȝ在一P一直鞠w,一直谢谢,人家q以Z的爸爸死了。你猜那个副厂长跟我说了句什么话Q他_余先生我没有惛_Q这个ȝ理是q样来的Q所以我q辈子大概要d三得利了?/span>

q就叫做人性,在h性面上激化你。所以日本三得利有个习惯Q部属Q何家里面如果有事,ȝ时候不要光是鞠w,要跟他们的家属站在一P对外人打C|表示我们是一家h。这U就叫做人性?

我以上所讲的例子Q从刚才所讲的三得利,跟我所讲的摩托|拉Q跟我所讲的宋朝军的故事,哪一个需要花钱?q些跟钱都没有关pR统l是Z人的内心Q这U观늻l叫做YQ所以我们的左边是XQ这两个如果l合hQ就是X+Y=Z?/span>

其实在我们中国h寿不可能l统讲X的,也不可能l统讲Y的,是看情况l合hq用。如果我们过度地偏XQ就是一U集权式的管理,但还不到q渡偏Y的时候,你就开始给他参与,也是个ؕ七八p,所以我们要看看视情况而定?

一讲到视情况而定׃有另外一个概念,我们来看一看。你们已l认识的李光耀Q新加坡的前ȝQ他现在已经变成资政了,现在国务院ȝ是胡作栋Q李光耀其实是我们中国h的后裔,所以我拿他举例Q是因ؓ他不是一个真正的西方人,李光耀是广东梅县客家h的后裔,所以,其实他的父亲和祖父与中国人有深厚的渊源?/span>

李光耀虽然从小新加坡长大,可是他受的教育都是儒家的教育和思想。长大以后送到英国剑桥MQ同时带着东西方的的思想Q我觉得q种人是最厉害的。又受过中国儒家的熏Ӟ又到q西方见识过西方世界Q就像邓^一P早年在中国长大,又看q欧zԌ所以对邓小q的攚w开放,跟他到过Ƨ洲肯定很有关系?/span>

李光耀新加坡其实只有四个字,q四个字以表达X与Y的理论,叫做开明专制。他讲得很有道理Q管一个国家和一个社会,_上面要以量的开明,_可以开明,但是法律一定要专制。所以,新加坡就变成q样子了。其实他的开明就是XQ他的专制就是YQ就是X和Y加v来。新加坡变成这样子了,正好合乎q个道理?/span>

所以精上量开明,在中国h寿,我们采纳不同的意见,允许不同的声韻I接受不同的策略,q个叫精止非常开明。但是中国h寿对一些重要的规定Q重要的要求Q重要的制度Q一定要非常坚持Q这叫法令,是法o要专制?a target="_blank">成功|?/font>

_要开明,其实要管新加坡就是这四个字,q本书其实出版的时候,我一夜之间就把它d了,d天亮Q因为写得很好。这本书原文是英文的Q后来翻成中文,在台湑և版,我想没有多久在大陆可以买得到译本。如果有一天在中国大陆出版Q可以好好的M读,一个国家跟一个公司是完全一LQ所以,读这个书好象在读企管一P有道理?



微薄C֌ 2006-04-11 08:43 发表评论
]]>
在Java中操作Zip文gQ压~?解压http://www.aygfsteel.com/Weibo-Forum/archive/2006/04/06/39533.html微薄C֌微薄C֌Thu, 06 Apr 2006 02:25:00 GMThttp://www.aygfsteel.com/Weibo-Forum/archive/2006/04/06/39533.htmlhttp://www.aygfsteel.com/Weibo-Forum/comments/39533.htmlhttp://www.aygfsteel.com/Weibo-Forum/archive/2006/04/06/39533.html#Feedback0http://www.aygfsteel.com/Weibo-Forum/comments/commentRss/39533.htmlhttp://www.aygfsteel.com/Weibo-Forum/services/trackbacks/39533.html 本文版权归原作者,中国JAVA手机|收录本文的目的是让更多人阅d此文章。{载请注明出处Z国JAVA手机|?lt;www.cnjm.net>
来自:http://www.cnjm.net/tech/article1069.html

[转蝲于IT狐]

可随意{载,但请注明出处及作?br />SonyMusic
2003.05.28
==========================================================================
在Java中操作Zip文gQ压~?解压


package test.nothing;

import java.io.*;
import java.util.*;
import java.util.zip.*;

import com.beaconsystem.util.*;

import junit.framework.TestCase;

/**
* @author SonyMusic
*
* 用于试java.util.zip包压~和解压~文件zip文g的例?
* ZJUnit~写Q包括两个testҎQ和三个辅助Ҏ.
JAVA手机|[www.cnjm.net]
* 注意C用过E中操作的全是流Q所以不仅仅可以d文g。这只是一个简单的例子.
*/
public class TestZipOp extends TestCase {

/**
* Constructor for TestZipOp.
* @param arg0
*/
public TestZipOp(String arg0) {
super(arg0);
}

public static void main(String[] args) {
junit.textui.TestRunner.run(TestZipOp.class);
}

/**
* zip压羃功能试.
* d:\temp\zipout目录下的所有文件连同子目录压羃到d:\temp\out.zip.
* @throws Exception
*/
JAVA手机|[www.cnjm.net]
public void testCreateZip() throws Exception{
//压羃baseDir下所有文Ӟ包括子目?br />String baseDir="d:\temp\zipout";
List fileList=getSubFiles(new File(baseDir));

JAVA手机|[www.cnjm.net]
//压羃文g?br />ZipOutputStream zos=new ZipOutputStream(new FileOutputStream("d:\temp\out.zip"));

ZipEntry ze=null;
byte[] buf=new byte[1024];
int readLen=0;
for (int i = 0; i <fileList.size(); i++) {
File f=(File)fileList.get(i);
System.out.print("Adding: "+f.getPath()+f.getName());

//创徏一个ZipEntryQƈ讄Name和其它的一些属?br />ze=new ZipEntry(getAbsFileName(baseDir, f));
ze.setSize(f.length());
ze.setTime(f.lastModified());
JAVA手机|[www.cnjm.net]

//ZipEntry加到zos中,再写入实际的文g内容
zos.putNextEntry(ze);
InputStream is=new BufferedInputStream(new FileInputStream(f));
while ((readLen=is.read(buf, 0, 1024))!=-1) {
zos.write(buf, 0, readLen);
}
is.close();
System.out.println("   done...");
}
zos.close();
}

/**
* 试解压~功?
JAVA手机|[www.cnjm.net]
* d:\download\test.zip文g解压到d:\temp\zipout目录?
* @throws Exception
*/
public void testReadZip() throws Exception{
JAVA手机|[www.cnjm.net]
//InputStream is=new BufferedInputStream(new FileInputStream());
String baseDir="d:\temp\zipout";
ZipFile zfile=new ZipFile("d:\download\Test.zip");
System.out.println(zfile.getName());
Enumeration zList=zfile.entries();
ZipEntry ze=null;
byte[] buf=new byte[1024];
while(zList.hasMoreElements()){
//从ZipFile中得C个ZipEntry
ze=(ZipEntry)zList.nextElement();
if(ze.isDirectory()){
System.out.println("Dir: "+ze.getName()+" skipped..");
continue;
}
System.out.println("Extracting: "+ze.getName()+"t"+ze.getSize()+"t"+ze.getCompressedSize());

//以ZipEntry为参数得C个InputStreamQƈ写到OutputStream?br />OutputStream os=new BufferedOutputStream(new FileOutputStream(getRealFileName(baseDir, ze.getName())));
InputStream is=new BufferedInputStream(zfile.getInputStream(ze));
int readLen=0;
while ((readLen=is.read(buf, 0, 1024))!=-1) {
os.write(buf, 0, readLen);
}
is.close();
os.close();
System.out.println("Extracted: "+ze.getName());
}
zfile.close();
JAVA手机|[www.cnjm.net]
}

/**
* l定根目录,q回一个相对\径所对应的实际文件名.
* @param baseDir 指定根目?br />* @param absFileName 相对路径名,来自于ZipEntry中的name
* @return java.io.File 实际的文?br />*/
JAVA手机|[www.cnjm.net]
private File getRealFileName(String baseDir, String absFileName){
String[] dirs=Regex.split("/", absFileName);
//System.out.println(dirs.length);
File ret=new File(baseDir);
if(dirs.length>1){
for (int i = 0; i <dirs.length-1; i++) {
ret=new File(ret, dirs[i]);
JAVA手机|[www.cnjm.net]
}
}
if(!ret.exists()){
ret.mkdirs();
}
JAVA手机|[www.cnjm.net]
ret=new File(ret, dirs[dirs.length-1]);
return ret;
}

/**
* l定根目录,q回另一个文件名的相对\径,用于zip文g中的路径.
* @param baseDir java.lang.String 根目?br />* @param realFileName java.io.File 实际的文件名
* @return 相对文g?br />*/
private String getAbsFileName(String baseDir, File realFileName){
File real=realFileName;
File base=new File(baseDir);
String ret=real.getName();
while (true) {
real=real.getParentFile();
if(real==null) break;
if(real.equals(base)) break;
else{
ret=real.getName()+"/"+ret;
}
}
return ret;
}
JAVA手机|[www.cnjm.net]

/**
* 取得指定目录下的所有文件列表,包括子目?
* @param baseDir File 指定的目?br />* @return 包含java.io.File的List
*/
private List getSubFiles(File baseDir){
JAVA手机|[www.cnjm.net]
List ret=new ArrayList();
//File base=new File(baseDir);
File[] tmp=baseDir.listFiles();
for (int i = 0; i <tmp.length; i++) {
JAVA手机|[www.cnjm.net]
if(tmp[i].isFile()){
JAVA手机|[www.cnjm.net]
ret.add(tmp[i]);
}
JAVA手机|[www.cnjm.net]
if(tmp[i].isDirectory()){
ret.addAll(getSubFiles(tmp[i]));
}
}
return ret;
}

}


微薄C֌ 2006-04-06 10:25 发表评论
]]>
目沟通——小故事中的大道?/title><link>http://www.aygfsteel.com/Weibo-Forum/archive/2006/03/27/37540.html</link><dc:creator>微薄C֌</dc:creator><author>微薄C֌</author><pubDate>Mon, 27 Mar 2006 01:44:00 GMT</pubDate><guid>http://www.aygfsteel.com/Weibo-Forum/archive/2006/03/27/37540.html</guid><wfw:comment>http://www.aygfsteel.com/Weibo-Forum/comments/37540.html</wfw:comment><comments>http://www.aygfsteel.com/Weibo-Forum/archive/2006/03/27/37540.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Weibo-Forum/comments/commentRss/37540.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Weibo-Forum/services/trackbacks/37540.html</trackback:ping><description><![CDATA[ <font color="#ff0000">一?沟通与效率<br /><br /></font>目中有很多工作需要充分沟通。确立目标,达成p需要沟通;明确职责Q分工协作需要沟通;工作汇报Q意见交还M开沟通。沟通障往往会造成目多次q工Q事倍功半,严重时会酿成不可挽回的损失,D目p|。下面的故事能说明这个道理:<br /><font color="#006600"><br />一位教授精心准备一个重要会议上的演Ԍ会议的规g高、规模之大都是他q生W一ơ遇到的。全安为教授的q一ơ露脸而激动,为此Q老婆专门Z选购了一w西装。晚饭时Q老婆问西装合w不Q教授说上n很好Q裤腉K了那么两公分Q倒是能穿Q媄响不大?br />晚上教授早早q了。老妈却睡不着Q琢着儿子q么隆重的演Ԍ西裤长了怎么能行Q反正h老了也没瞌睡Q就n下床Q把西装的裤腿剪掉两公分Q缝好烫qI然后安心的入睡了。早上五点半Q老婆睡醒?因ؓ家有大事Q所以v来比往常早些,惌v老公西裤的事Q心x间还来得及,便拿来西裤又剪掉两公分,~好烫^Q惬意的d早餐了。一会,奛_也早早v床了Q看妈妈的早还没有做好Q就惌v爸爸西裤的事情,L自׃能ؓ爸爸做点事情了,便拿来西裤,再剪短两公分Q缝好烫q?…?br />q个裤子q能不能I? </font><br /><br />q个故事我讲课时l常Ԍ听者没有不捧腹的,可分析了背后的道理就再也没hW得h了。故事中的主人公们因为沟通不CQ付Z三倍的力_得到的结果却是废了一条裤子。究其原因,首先教授没有明确目标和分工——裤子要不要剪短Q由谁来剪断Q其ơ老妈、老婆、女儿在行动之前没有征询家庭Q项目组Q其他成员的意见。所以造成吃力不讨好的l局Q所以我l常Ԍ沟而不通,Ҏ误工。这U情况在我们的项目中非常多见Q由于缺乏沟通,两个组同时对一个版本进行升U,l果两个版本合不在一P׃~Z沟通,目l的行动和客L需求发生偏差,造成大量的返工和费Q由于缺乏沟通,冲突不断出现Q造成客户和项目组矛盾重重Q项目组内部凝聚力下降,甚至关键人物拂袖d。我见过不少工程师d望通过默不作声的多q活来I补自q拙于沟通的~陷Q孰不知Q项目中用钻研技术和勉力蛮干的方式需要沟通协调的问题犹如南辕北辙?br /><br /><font color="#ff0000">二、沟通与成本</font><br /><br />沟通的重要性是毋庸|疑的,但项目经理在强化沟通的同时不能忽视沟通的成本。沟通方式的选择Q沟通时机的把握Q沟通范围的界定都会影响沟通的成本Q进而会影响整个目的成本和q度。譬如开会,有hȝZ个会议的成本Q(与会人工资+日常开支+找不C的h的工资)×人数×会议旉Q会议本w支出。大家可以据此计一下一个无效会议浪费的成本?br /><br />所以,要尽量采取节省成本的方式辑ֈ沟通的目的Q能|络会议、电话会议的׃宜集中开会;能邮件、电话达到目的的Q不必面谈;能用规章制度标准化的事情Q没必要个案沟通。下面的故事也许会给您一些启发:<br /><br /><font color="#006600">上世U八十年代,有一对两地分居的夫妇Q丈夫留学美国,d在国内上班。当时的电话资费非常贵,每分钟要二三十元钱,q对夫妇沟通的成本很高。后来他们想了一个既省钱又能保证每天都能沟通的办法。他们约定:当电话铃响一声就挂断的话Q含义是Q我很好Q不要挂念;当电话铃响两声挂断的话,含义是:你的回信我收CQ请攑ֿQ当电话铃响三声挂断Q含义是:我的信g寄出Q注意查Ӟ铃响三声以后q不挂断Q代表我实有话要说Q请接电话?/font><br /><br />故事中的夫妇巧妙利用打电话的U定Q将他们的沟通模式化Q标准化Q于是大大节省了例行沟通的成本Q只有例外情冉|付费用。当Ӟ随着U技的发展,解决q个问题的途经很多Q成本也很低Q但故事中想方设法降低沟通成本的思想值得借鉴?br /><br /><font color="#ff0000">三?沟通与专业技?/font><br /><br />目l理未必是样样都很专业的专才Q但臛_应该是样样都熟悉的通才Q否则,很难一个复杂的大型目好。对目中某一专业领域一点也不懂的项目经理,很难与目l中该领域的成员沟通,难以监督和检查他们工作的效率和质量——因为有效沟通的前提是彼此能够正解析对方的信号。项目经理必L得一些领域的专业语言Q术语)Q才能和目l中的专业成员有效交?br /><br />有这么一个笑话:<br /><font color="#006600"><br />一安店刚招来一个服务员Q第一天上班,饭店来了一拨食客。服务员招呼他们落后,为首的客人道Q“服务员Q茶Q?br />服务员开始数人:?,2,3,4,5,6,7,8,9,10。”然后回{:“十个。”说完侍立一旁?br />{了一会,客h见茶q不上来Q又喊:“服务员Q倒茶Q?br />服务员倒着C一遍h敎ͼ?0,9,8,6,5,4,3,2,1。”答道:“还是十个!?br />客h感觉很纳P问:“我让你倒茶Q你数啥Q?br />服务员以为客人问她的属相Q便脱口而出Q“我属(敎ͼ猪!?/font><font color="#990066"><br /></font><br />q个服务员先把“茶”听成“查”,“倒茶”理解ؓ倒着查,又把数数的“数”理解ؓ属相的“属”,让客人啼W皆非。因为她不还没有适应新的语言环境Q不能正解析客人的话。不懂专业的目l理跟专业技术h员交,有点像那位服务员对客h。一些高水^的技术h才即因ؓ长期得不到项目经理的理解而郁闷地d?img src ="http://www.aygfsteel.com/Weibo-Forum/aggbug/37540.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Weibo-Forum/" target="_blank">微薄C֌</a> 2006-03-27 09:44 <a href="http://www.aygfsteel.com/Weibo-Forum/archive/2006/03/27/37540.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>而立之年的十个h生目?/title><link>http://www.aygfsteel.com/Weibo-Forum/archive/2006/03/27/37533.html</link><dc:creator>微薄C֌</dc:creator><author>微薄C֌</author><pubDate>Mon, 27 Mar 2006 00:49:00 GMT</pubDate><guid>http://www.aygfsteel.com/Weibo-Forum/archive/2006/03/27/37533.html</guid><wfw:comment>http://www.aygfsteel.com/Weibo-Forum/comments/37533.html</wfw:comment><comments>http://www.aygfsteel.com/Weibo-Forum/archive/2006/03/27/37533.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Weibo-Forum/comments/commentRss/37533.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Weibo-Forum/services/trackbacks/37533.html</trackback:ping><description><![CDATA[ <table> <tbody> <tr> <td>W一Q最重要的就是定好自q职业生规划?<br /><br />l自׃个清晰、科学和客观的职业定位,评估一下自q职业气质、职业兴、职业們֐、职业能力和职业潜力{,然后以此为目标,使未来的职业处于Ex向前发展的状态?<br /><br />W二Qh际关pȝ基本成型?<br /><br />q个人际关系|包括老师、朋友、亲人、同学、同事和所有可以互相帮助的人。h际关pȝ表现了一个h情商的高低,不是一朝一夕就能徏立v来的Q它需要以心胸开阔,气量豁达、与Zؓ善、乐于助人的气质Q摩肩接t늚l交很多朋友?<br /><br />W三Q较高的学历、渊博的知识和丰富的实践l验?<br /><br />而立之年应该有了一个自q知识库,q像存储器那h层次地分成若q个存储单元Q分门别cȝ存储于自q大脑中,q样才会有职场竞争力。文化素L最基本的知识要求,要学会本行业所需要的一切知识ƈ有所发展?<br /><br />W四Q养成个人风根{?<br /><br />?0岁以前,扑և你所喜欢的榜Pl常以他们ؓ榜样Q学习他们的理念、思维Q不断模ѝ不断尝试、不断改变,L一U风根{风度,׃得到事半功倍的效果?<br /><br />W五Q注意品质,以优良的品d做h?<br /><br />那就是:诚信建立信誉Q谦虚人精q;夯实职业金字塔,走健庯业\。如果你C30岁仍未能建立起坚如磐石的忠诚信誉Q这一~点会困扰你一生?<br /><br />W六Q善于整理和集中自己的优ѝ长处?<br /><br />不管你目前担M么样的角Ԍ知道自己的长处对成功都很重要。一定要投入你所喜爱、发挥强,做自己最擅长的事情,q扬镉K短从事好自己的职业?<br />W七Q在感情生活斚wq_安定?<br /><br />在攀M业的高峰Ӟ家庭是自己坚强的后盾Q你需要一个理解和支持你的׃h和家庭?<br /><br />W八Q突破困境,从失败中U攒成功的资本?<br /><br />人生总要面各种困境的挑战,使自己永q保持健L心态、进取的信念。切忌让情A伤害自己Q心态消极的人,无论如何都挑不v生活的重担?<br /><br />W九Q储备准备创业、另谋生路的存款?<br /><br />在这个多变的职业世界里,你也怸会永q在一个地方工作,或者永q在一个位|上淋漓致地发挥自己,如果你事先储蓄了_的钱Q你便有了一个安全的后盾?<br /><br />W十Q学会在M时候三~其口,说话慎重?</td> </tr> </tbody> </table> <img src ="http://www.aygfsteel.com/Weibo-Forum/aggbug/37533.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Weibo-Forum/" target="_blank">微薄C֌</a> 2006-03-27 08:49 <a href="http://www.aygfsteel.com/Weibo-Forum/archive/2006/03/27/37533.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面向对象的三个基本特?/title><link>http://www.aygfsteel.com/Weibo-Forum/archive/2006/03/24/37227.html</link><dc:creator>微薄C֌</dc:creator><author>微薄C֌</author><pubDate>Fri, 24 Mar 2006 07:28:00 GMT</pubDate><guid>http://www.aygfsteel.com/Weibo-Forum/archive/2006/03/24/37227.html</guid><wfw:comment>http://www.aygfsteel.com/Weibo-Forum/comments/37227.html</wfw:comment><comments>http://www.aygfsteel.com/Weibo-Forum/archive/2006/03/24/37227.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Weibo-Forum/comments/commentRss/37227.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Weibo-Forum/services/trackbacks/37227.html</trackback:ping><description><![CDATA[     摘要: 面向对象的三个基本特征是Q封装、ѝ多态? ...  <a href='http://www.aygfsteel.com/Weibo-Forum/archive/2006/03/24/37227.html'>阅读全文</a><img src ="http://www.aygfsteel.com/Weibo-Forum/aggbug/37227.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Weibo-Forum/" target="_blank">微薄C֌</a> 2006-03-24 15:28 <a href="http://www.aygfsteel.com/Weibo-Forum/archive/2006/03/24/37227.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 23U模式一点就?/title><link>http://www.aygfsteel.com/Weibo-Forum/archive/2006/03/22/36873.html</link><dc:creator>微薄C֌</dc:creator><author>微薄C֌</author><pubDate>Wed, 22 Mar 2006 08:01:00 GMT</pubDate><guid>http://www.aygfsteel.com/Weibo-Forum/archive/2006/03/22/36873.html</guid><wfw:comment>http://www.aygfsteel.com/Weibo-Forum/comments/36873.html</wfw:comment><comments>http://www.aygfsteel.com/Weibo-Forum/archive/2006/03/22/36873.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Weibo-Forum/comments/commentRss/36873.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Weibo-Forum/services/trackbacks/36873.html</trackback:ping><description><![CDATA[一、创建型模式 <br /><br />  FACTORYQh才市场:以往是要哪个人才Q就扑֓个h才,效率低,现在有了人才市场Q我们只需直接Mh才市场挑一个好了; <br /><br />  BUILDERQ生产流水线Q以前是手工业作坊式的h工单个单个的生零g然后一步一步组装做Q好比有了工业革命,现在都由生񔋹水U代替了。如要造丰田汽车,先制定汽车的构造如pR胎、方向盘、发动机l成。再以此构造标准生产丰田汽车的车胎、方向盘、发动机。然后进行组装。最后得C田汽车; <br /><br />  PROTOTYPEQ印h的发明:以前只能临脓才能保持和别人的字迹基本相同Q直从印h术发明,从而保证了复制得和原物一模一P <br /><br />  SINGLETONQ唯一Q以前是商标满天飞,相同的商标难免造成侉|Q直从有商标保护法后Q就保证了不会再产生W家企业使用相同的商标; <br /><br /><br />  二、结构型模式 <br /><br />  ADAPTERQ集众h之私Q成一׃公:武当zּ三丰会太极拳Q少林派智空大师会金刚般若掌Q如果他们两个都成ؓ我的师傅Q我既会太极拳Q又会金刚般若掌了; <br /><br />  DECORATORQ青Z蓝而胜于蓝Q武当派张三C太极拻I是我师傅Q他教会了我太极拻I但我自己q会点蒙古式摔交Q张三丰却不会。于是我成了DECORATOR模式的实玎ͼ <br /><br />  BRIDGEQ白马非马:马之颜色有黑白,马之性别有公母。我们说"q是?太抽象,?q是黑色的公?又太LQ只有将颜色与性别和马动态组合,"q是Q黑色的或白色的Q(公或母)?才显得灵z而飘逸,如此bridge模式_N得矣?<br /><br />  COMPOSITEQ大家族Q子又生孙,孙又生子Q子子孙孙,无穷也Q将众多Uh的h口组l成一个按辈分排列的大家族x此模式的实现Q?<br /><br />  FACADEQ求同存异:高中毕业需d中和高中Q博士也需d中和高中Q因此国家将初中和高中普及成九年制义务教Ԍ <br /><br />  FLYWEIGHTQ一x逸:认识三千汉字Q可以应付日常读书与写字Q可见头脑中存在q个汉字库的重要Q?<br /><br />  PROXYQ垂帘听政:犹如清朝Lq间的四大府臣,很多权利不在皇帝手里Q必通过辅佐大臣dQ?<br /><br />  三、行为模?<br /><br />  CHAIN OF RESPONSIBLEITYQ租房:以前Z找房到处打听Q效率低且找不到好的房源。现在有了房屋中介,于是向房屋中介提出租房请求,中介提供一个合适的房源Q满意则不再hQ不满意l箋看房Q直到满意ؓ止; <br /><br />  COMMANDQ借刀杀人:以前是想杀谁就杀Q但一D|间后领悟刎ͼ长此以往必将l仇太多Q于是假手他人,挑拨他h之间的关pM而达到自q目的Q?<br /><br />  INTERPRETERQ文a文注释:一D|a文,它译成白话文Q?<br /><br />  ITERATORQ赶杀l:一个一个的搜烦Q绝不放掉一个; <br /><br />  MEDIATORQ三角债:本来千头万A的债务关系Q忽出来一中介Q包揽其一切,于是三角关系变成了独立的三方扄四方中介的关p; <br /><br />  MEMENTOQ有同享:我有多少Q你有多少Q?<br /><br />  OBSERVERQ看守者:一旦被看守者有什么异常情况,定会及时做出反应Q?<br /><br />  STATEQ进由:如一扇门Q能q能出,如果有很多h随时q进出出必定昑־杂ؕ而安全,如今设一保安限制其进出,如此各hq出才显得规范; <br /><br />  STRATEGYQ久病成良医Q如人生病可以有各种症状Q但l过长期摸烦Q就可以ȝ出感冒、肺病、肝炎等几种Q?<br /><br />  TEMPLATE METHODQ理Z一定要实践Q教l的学生会游泛_行了Q至于教l会不会则无关紧要; <br /><br />  VISITORQ依法治|:因张三杀被处死,李四L要被|款。由此势必制定处|制度,故制定法律写明杀人、放火、偷H等|要受什么处|,l通过后须变动要小。今后有人犯|不是谁,按共条例处罚xQ这是讉K者模式诞生的全过E?img src ="http://www.aygfsteel.com/Weibo-Forum/aggbug/36873.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Weibo-Forum/" target="_blank">微薄C֌</a> 2006-03-22 16:01 <a href="http://www.aygfsteel.com/Weibo-Forum/archive/2006/03/22/36873.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>媒体技术及其DSP解决Ҏhttp://www.aygfsteel.com/Weibo-Forum/archive/2006/03/22/36860.html微薄C֌微薄C֌Wed, 22 Mar 2006 07:13:00 GMThttp://www.aygfsteel.com/Weibo-Forum/archive/2006/03/22/36860.htmlhttp://www.aygfsteel.com/Weibo-Forum/comments/36860.htmlhttp://www.aygfsteel.com/Weibo-Forum/archive/2006/03/22/36860.html#Feedback0http://www.aygfsteel.com/Weibo-Forum/comments/commentRss/36860.htmlhttp://www.aygfsteel.com/Weibo-Forum/services/trackbacks/36860.html    媒体技术概q?/b>

    在探讨流媒体之前Q我们不妨简要地回顾一下数字信息时代的数字化进E。众所周知Q语音的数字化造就了数字程控交换机和蜂H移动数字电话技术的发展Q音频和视频的数字化又造就了计机多媒体技术的发展Q多U音视频技术的演变又得传l消费类韌频品的数字化。而承载这U变化的便是语音、音频流、视频流q样的媒体流Q处理这些媒体流需要高性能数字媒体技术?

    高性能的数字媒体技术覆盖的是一个广阔的媒体和Z媒体的新兴技术,q便囊括了集成视频、语韟뀁数据内容到许多新的和特色化的应用,q且重新构造数字媒体内Ҏ供的方式。数字媒体所面的挑战包含实时的性能Q更高的信道密度和Y件编E的灉|性,以适应同时出现的视频、语韟뀁数据流的传输的需要。典型的数字媒体处理视功能包括编码、解码媒体流Q不同格式的码{换,不同速率的流转换Q以适应变化的系l需求。另外还包括压羃、解压,加密、分l化和媒体流的传输等处理功能?

    媒体其实是个技术名词,单来说就是采用流技术,xq箋的媄象和声音信息l过压羃处理Q在|络上实施多媒体文g的实时传输和播放。由于宽带已成ؓ|络架构的重点,媒体的特点是如何运用可变带宽技术,使h们可以在灉|的带宽环境下在线ƣ赏高品质音频和视频节目Q及臌行实时可视通信。既然流媒体可以适应各种不同|络带宽Q在H带下也同样可以畅的观看、收听,当然Q质量会因带宽的限制而略有媄响?

    媒体实现的关键技术是用流式传输,把声韟뀁媄像或动画{信息由韌频服务器向用L端连l地实时传送。这U流式传输系l的多媒体文件经特定压羃方式被解析成压羃包,p频服务器向用L端顺序或实时传送,用户只需l过几秒的启动g时便可进行观看。在音频和视频等媒体文g在播放时Q文件剩余部分将在后C服务器内l箋下蝲?

    媒体技术包含着跨媒体融合的实用技术,其中必然涉及许多视频和音频标准的应用Q其中不标准尚需不断完善。这些标准的实现可以采用g或Y件技术处理。对于成熟的标准Q可以采用专用硬Ӟ而对于不够成熟的标准Q或是未定国际化的标准Q采用Y件算法实现将更ؓ可行Q其最理想的处理^台就是高速数字信号处理器QDSPQ。由于媒体流产品可进行本地解码,因此实际上消费者看不到其内Ҏ式,而媒体流讑֤的固有功能性却能够得到q一步增强。如果在设计的中心位|具有一个可~程内核Q原始设备制造商 (OEM) 可通过单的软g下蝲卛_升到新的或修订后的标准。DSP便可提供q样一个将所有这些功能结合v来的核心QOEM 厂商的流媒体产品设计因此而具有不断完善的灉|性以适应不断变化的技术要求?

    媒体相x术标?/b>

    在流媒体技术中传输的多媒体数据需要预先进行特D的压羃处理Q那么针对不同的应用可以分ؓ面向视频、面向媄像流、面向音频流和面向语x四类Q将对应不同的处理技术方法,于是有一pd标准和规范?

    在视频流中包括侧重于交互应用的H.263Q还有侧重于监控应用M-JPEG。至?MPEG1和MPEG2已在Ȁ光媄中q泛应用。MPEG4技术的应用当前很多提供声音和数据服务的pȝ得到q一步的扩展Q其所具备的高压羃率和很强的编码容错功能必它在互联|和当前蜂窝通信|络的视频领域得到广泛应用?

    H.264是ITU在MPEG4基础上开发出来的新的视频~码法Q具有更高的~码效率、更强的解码差错恢复能力、以及提高了对移动通信和IP|络的适应性。H.264有可能作为MPEG-4的后l技术而成ZU适用于各cȝl的公共技术,因此业界对它在下一代视频通信领域的应用前景普遍寄予厚望。中国在qK的国内多媒体通信市场上占据主动,也在开发拥自主知识产权的AVS标准q已有重大进展?

    视频在|络上实现播放时Q媒体播攑֙需要识别媒体文件格式,q从中得到回放所需信息。因特网上用较多的式视频格式有RealNetworks公司所制定的音频视频压~规范称为RealMediaQ是一个跨q_的客?服务器结构的多媒体应用标准。Apple计算机公司的QuickTime是数字媒体领域事实上的工业标准,可以通过|络提供实时的数字化信息、工作流与文化回攑֊能。微软公怹正用其专有的Windows Media技术应用于~解码市场。DivX在该领域也颇具媄响力?

    除视频流之外Q面向媄像流的标准包括JPEG、GIFF、TIFF、位囄Q面向音频的标准有AAC?ATRAC3?MP3?WMA{;而面向语音的标准有AMR, G.723.1, G.726, G.711QG.722QG.728QG.729{?

    媒体采用流式传输方式在|络服务器与客户端之间进行传输,式传输的实现需要合适的传输协议。IETFQInternet Engineering Task ForceQ因特网工程dl)制订的很多协议可用于实现媒体技术?

    媒体实用解x?/b>

    DSP以其高性能和Y件可~程{特点,长期历来Ҏ字媒体处理vCU极的推动作用。TI在DSP媒体处理技术上U篏丰富的经验,其解x案的应用范围极ؓq泛Q可以涵盖高性能视频C成本音频与媄像。随着DSP在实现SOC技术上的巨大进展,TI陆箋推出一批基于DSPQ适用于流媒体的的通用媒体处理器,q且全面支持各种的流媒体格式Q以针对不用的品应用方向?

    TMS320DA180是针寚w频流的^台处理,是集成DSP和RISC处理器的双核l构Qƈh包括以太|接口在内的多种外围接口Q易于扩展WLAN。可以支持许多种音频和语韌码,适合于远E音频播攑֙和网l广播等产品?

    TMS320DM270是针对媄像和视频^収ͼ不仅集成有DSP和RISC处理器的双核l构Qؓ增强影像和视频处理能力,又集成有专用囑փ处理引擎iMX。该器g中还集成了CCD控制区、OSD视频~码器、媄像预览等单元。DM270支持MPEG4在VGA分L率下的实时解码,以及在CIF分L率的实时~解码,适用产品为数字媒体播攑֙和视频电话、网l相机等?

    TMS320DM642 数字媒体处理器作为高端视频流q_Q将在更多的视频和媄像解x案中扮演着重要的作用。基于经业届验证的C64x DSP核心QDM642是业界当今最高性能的多媒体引擎Q具有方便地升M最新编解码软g的能力。DM642h支持VGA分L率下的单路MPEG2~码或四路MPEG2解码的能力。其有高质量、多通道、优的视频性能Q以及完整的软g可编E性,可加快视频品的上市旉Q通过集成音频可视性外N低系l成本。DM642极其兼容优化器gDM641和DM640适用于VOD和IP机顶盒、数字媒体中心、数字监控系l等应用?

    Z于推qDSP的流媒体解决ҎQTI已推出数字媒体开发套Ӟq在Z其DSP的^C展示了对H.264基本和主cd议的~解码能力。TI一直与H.264软g法开发商Q如UBVideo和Ingenient技术公司合作。该l合开发套件不仅可以视频工程师更加熟悉DSPQ而且可以使DSP工程师更Ҏ开发视频系l?

    众多知名的视频算法提供商如Emuzed、Escient、FedTec、iM Networks、Ingenient、Mediabolic ?Oregon Networks{,已基于TI的媒体^台开发出商用媒体方案。业界知名的嵌入式操作系l公司Accelerated Technologies、Pigeon Point Systems ?WindRiver已经能够支持TI的流媒体解决ҎQ?DivX、Microsoft、Quicktime 以及 RealNetworks {多家公司的媒体~码译码器已UL?TI 的媒体流产品中?

    以媒体处理^台支持流媒体技? q综合多U相x术,以推q低成本、高性能的解x案,是流媒体产品产业化的关键。期待着更多的媒体内容不仅由PC,而且由多U新型独L色的视频媒体l端Q通过媒体技术传送到千家万户?

    媒体的发展I间

    宽带入户的不断发展已使家庭网l技术成本已逐步辑ֈ消费者的心理价位。今天,有数以百万计的计机用于存储音乐文g和来自数字相机的影像。个频收录机QPVRQ和个h音频收录机(PARQ正在成为新的市场热点,q加速了媒体技术的产业化进E。更多的讑֤需要得消费者在数字家庭内外对多U媒体格式进行管理、储存、显CZ及分配,便得流媒体的解x案拓展到数字电视、数字媒体中心、数字机盒、小区媒体网养I以及便携式手持终端等qK的市场空间?

    Forrester Research公司调查表明Q将数字家庭转变成大众市场的先决条g正逐渐形成Q客h在升U其外设Q服务供应商提供的服务项目不仅仅限于讉KQ而家庭网l设备也正开始与所有设备进行无~连接。Yankee Group公司提供的数据表明,国q?,700万个家庭拥有宽带q接Q其中有400万个家庭可经怸载完整的视频内容。流媒体技术由此而得C发展的机遇?

    在中国,作ؓ影响最qѝ增长最快、市场潜力最大的产业之一的互联网Q正在以出Z惌的深度和q度q速的发展。根据CNNIC的报告,截止2003q底Q中国网民数辑ֈ?950万,居世界第二位Q上|计机辑ֈ3089万台Q网l国际出口带宽L辑ֈ27216M。数字家庭消费者的愿望主要集中于对现有或新的丰富的多媒体内容进行更好的理。这U愿望ؓ服务供应商、消费类电子与网l设备制造商提供了重大的商机Q以便他们推Z用户可轻松访问内容的产品。因此,媒体在中国的推q势在必行?



微薄C֌ 2006-03-22 15:13 发表评论
]]>
如何把Hibernate2.1升到Hibernate3.0http://www.aygfsteel.com/Weibo-Forum/archive/2006/03/21/36585.html微薄C֌微薄C֌Tue, 21 Mar 2006 03:19:00 GMThttp://www.aygfsteel.com/Weibo-Forum/archive/2006/03/21/36585.htmlhttp://www.aygfsteel.com/Weibo-Forum/comments/36585.htmlhttp://www.aygfsteel.com/Weibo-Forum/archive/2006/03/21/36585.html#Feedback0http://www.aygfsteel.com/Weibo-Forum/comments/commentRss/36585.htmlhttp://www.aygfsteel.com/Weibo-Forum/services/trackbacks/36585.html 

1.1 Hibernate API 变化
1.1.1 包名
1.1.2 org.hibernate.classic?
1.1.3 Hibernate所依赖的第三方软g?
1.1.4 异常模型
1.1.5 Session接口
1.1.6 createSQLQuery()
1.1.7 Lifecycle ?Validatable 接口
1.1.8 Interceptor接口
1.1.9 UserType和CompositeUserType接口
1.1.10 FetchModec?
1.1.11 PersistentEnumc?
1.1.12 对Blob 和Clob的支?
1.1.13 Hibernate中供扩展的API的变?
1.2 元数据的变化
1.2.1 索策?
1.2.2 对象标识W的映射
1.2.3 集合映射
1.2.4 DTD
1.3 查询语句的变?
1.3.1 indices()和elements()函数


管Hibernate 3.0 与Hibernate2.1的源代码是不兼容的,但是当Hibernate开发小l在设计Hibernate3.0Ӟ为简化升UHibernate版本作了周到的考虑。对于现有的ZHibernate2.1的Java目Q可以很方便的把它升U到Hibernate3.0?/p>

本文描述了Hibernate3.0版本的新变化QHibernate3.0版本的变化包括三个方面:
Q?QAPI的变化,它将影响到JavaE序代码?br />Q?Q元数据Q它媄响到对象-关系映射文g?br />Q?QHQL查询语句?/p>

值得注意的是Q?Hibernate3.0q不会完全取代Hibernate2.1。在同一个应用程序中Q允许Hibernate3.0和Hibernate2.1q存?/p>

1.1 Hibernate API 变化

1.1.1 包名

Hibernate3.0的包的根路径? “org.hibernate?Q而在Hibernate2.1中ؓ“net.sf.hibernate”。这一命名变化使得Hibernate2.1和Hibernate3.0能够同时在同一个应用程序中q行?/p>

如果希望把已有的应用升到Hibernate3.0Q那么升U的W一步是把Java源程序中的所有“net.sf.hibernate”替换ؓ“org.hibernate”?/p>

Hibernate2.1中的“net.sf.hibernate.expression”包被改名ؓ“org.hibernate.criterion”。假如应用程序用了Criteria APIQ那么在升的过E中Q必LJava源程序中的所有“net.sf.hibernate.expression”替换ؓ“org.hibernate.criterion”?/p>

如果应用使用了除Hibernate以外的其他外部YӞ而这个外部Y件又引用了Hibernate的接口,那么在升U时必须十分心。例如EHCache拥有自己的CacheProviderQ?net.sf.ehcache.hibernate.ProviderQ在q个cM引用了Hibernate2.1中的接口Q在升应用Ӟ可以采用以下办法之一来升UEHCache:

Q?Q手工修改net.sf.ehcache.hibernate.Providerc,使它引用Hibernate3.0中的接口?br />Q?Q等到EHCache软g本n升Z用Hibernate3.0后,使用新的EHCache软g?br />Q?Q用Hibernate3.0中内|的CacheProviderQorg.hibernate.cache.EhCacheProvider?/p>

1.1.2 org.hibernate.classic?/p>

Hibernate3.0把一些被废弃的接口都转移到org.hibernate.classic中?/p>

1.1.3 Hibernate所依赖的第三方软g?/p>

在Hibernate3.0的Y件包的lib目录下的README.txt文g中,描述了Hibernate3.0所依赖的第三方软g包的变化?/p>

1.1.4 异常模型

在Hibernate3.0中,HibernateException异常以及它的所有子c都l承了java.lang.RuntimeException。因此在~译Ӟ~译器不会再查HibernateException?/p>

1.1.5 Session接口

在Hibernate3.0中,原来Hibernate2.1的Session接口中的有些基本Ҏ也被废弃Q但Z化升U,q些Ҏ依然是可用的Q可以通过org.hibernate.classic.Session子接口来讉K它们Q例如:


org.hibernate.classic.Session session=sessionFactory.openSession();
session.delete("delete from Customer ");


在Hibernate3.0中,org.hibernate.classic.Session接口l承了org.hibernate.Session接口Q在org.hibernate.classic.Session接口中包含了一pd被废弃的ҎQ如find()、interate(){。SessionFactory接口的openSession()Ҏq回org.hibernate.classic.Sessioncd的实例。如果希望在E序中完全用Hibernate3.0Q可以采用以下方式创建Session实例Q?/p>

org.hibernate.Session session=sessionFactory.openSession();

如果是对已有的程序进行简单的升Qƈ且希望仍然调用Hibernate2.1中Session的一些接口,可以采用以下方式创徏Session实例Q?/p>

org.hibernate.classic.Session session=sessionFactory.openSession();

在Hibernate3.0中,Session接口中被废弃的方法包括:
* 执行查询的方法:find()、iterate()、filter()和delete(String hqlSelectQuery)
* saveOrUpdateCopy()

Hibernate3.0一律采用createQuery()Ҏ来执行所有的查询语句Q采用DELETE 查询语句来执行批量删除,采用merge()Ҏ来替?saveOrUpdateCopy()Ҏ?/p>


提示Q在Hibernate2.1中,Session的delete()Ҏ有几U重载Ş式,其中参数为HQL查询语句的delete()Ҏ在Hibernate3.0中被废弃Q而参CؓOjbectcd的的delete()Ҏ依然被支持。delete(Object o)Ҏ用于删除参数指定的对象,该方法支持联删除?/p>

Hibernate2.1没有Ҏ量更新和扚w删除提供很好的支持,参见<<_NHibernate>>一书的W?3章的13.1.1节(扚w更新和批量删除)Q而Hibernate3.0Ҏ量更新和扚w删除提供了支持,能够直接执行扚w更新或批量删除语句,无需把被更新或删除的对象先加载到内存中。以下是通过Hibernate3.0执行扚w更新的程序代码:

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();

String hqlUpdate = "update Customer set name = :newName where name = :oldName";
int updatedEntities = s.createQuery( hqlUpdate )
.setString( "newName", newName )
.setString( "oldName", oldName )
.executeUpdate();
tx.commit();
session.close();

以下是通过Hibernate3.0执行扚w删除的程序代码:

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();

String hqlDelete = "delete Customer where name = :oldName";
int deletedEntities = s.createQuery( hqlDelete )
.setString( "oldName", oldName )
.executeUpdate();
tx.commit();
session.close();

1.1.6 createSQLQuery()

在Hibernate3.0中,Session接口的createSQLQuery()Ҏ被废弃,被移到org.hibernate.classic.Session接口中。Hibernate3.0采用新的SQLQuery接口来完成相同的功能?/p>

1.1.7 Lifecycle ?Validatable 接口

Lifecycle和Validatable 接口被废弃,q且被移到org.hibernate.classic包中?/p>

1.1.8 Interceptor接口

在Interceptor 接口中加入了两个新的Ҏ?用户创徏的Interceptor实现cd升的过E中Q需要ؓq两个新Ҏ提供Ҏ体ؓI的实现。此外,instantiate()Ҏ的参C了修改,isUnsaved()Ҏ被改名ؓisTransient()?/p>

1.1.9 UserType和CompositeUserType接口

在UserType和CompositeUserType接口中都加入了一些新的方法,q两个接口被Udorg.hibernate.usertype包中Q用户定义的UserType和CompositeUserType实现cdd现这些新Ҏ?/p>

Hibernate3.0提供了ParameterizedType接口Q用于更好的重用用户自定义的cd?/p>

1.1.10 FetchModec?/p>

FetchMode.LAZY ?FetchMode.EAGER被废弃。取而代之的分别为FetchMode.SELECT 和FetchMode.JOIN?/p>

1.1.11 PersistentEnumc?/p>

PersistentEnum被废弃ƈ删除。已l存在的应用应该采用UserType来处理枚丄型?/p>

1.1.12 对Blob 和Clob的支?/p>

Hibernate对Blob和Clob实例q行了包装,使得那些拥有Blob或Clobcd的属性的cȝ实例可以被游R序列化或反序列化,以及传递到merge()Ҏ中?/p>

1.1.13 Hibernate中供扩展的API的变?/p>

org.hibernate.criterion?org.hibernate.mapping?org.hibernate.persister和org.hibernate.collection 包的l构和实现发生了重大的变化。多数基于Hibernate
2.1 的应用不依赖于这些包Q因此不会被影响。如果你的应用扩展了q些包中的类Q那么必非常小心的对受影响的程序代码进行升U?/p>

1.2 元数据的变化

1.2.1 索策?/p>

在Hibernate2.1中,lazy属性的默认gؓ“false”,而在Hibernate3.0中,lazy属性的默认gؓ“true”。在升映射文gӞ如果原来的映文件中的有兛_素,?lt;set>?lt;class>{没有显式设|lazy属性,那么必须把它们都昑ּ的设|ؓlazy=“true”。如果觉得这U升U方式很ȝQ可以采取另一单的升方式Q在<hibernate-mapping>元素中设|? default-lazy=“false”?

1.2.2 对象标识W的映射

unsaved-value属性是可选的Q在多数情况下,Hibernate3.0把unsaved-value="0" 作ؓ默认倹{?/p>

在Hibernate3.0中,当用自然主键和游离对象Ӟ不再实现Interceptor.isUnsaved()Ҏ?如果没有讄q个ҎQ当Hibernate3.0无法区分对象的状态时Q会查询数据库,来判断这个对象到底是临时对象Q还是游d象。不q,昑ּ的用Interceptor.isUnsaved()Ҏ会获得更好的性能Q因可以减少Hibernate直接讉K数据库的ơ数?/p>

1.2.3 集合映射

<index>元素在某些情况下?lt;list-index>?lt;map-key>元素替代。此外,Hibernate3.0?lt;map-key-many-to-many> 元素来替代原来的<key-many-to-many>.元素Q用<composite-map-key>元素来替代原来的<composite-index>元素?/p>

1.2.4 DTD

对象-关系映射文g中的DTD文档Q由原来的:
http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd
改ؓQ?br />http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd

1.3 查询语句的变?/p>

Hibernate3.0 采用新的ZANTLR的HQL/SQL查询译器,不过QHibernate2.1的查询翻译器也依然存在。在Hibernate的配|文件中Qhibernate.query.factory_class属性用来选择查询译器。例如:
Q?Q选择Hibernate3.0的查询翻译器Q?br />hibernate.query.factory_class= org.hibernate.hql.ast.ASTQueryTranslatorFactory
Q?Q选择Hibernate2.1的查询翻译器
hibernate.query.factory_class= org.hibernate.hql.classic.ClassicQueryTranslatorFactory


提示QANTLR是用UJava语言~写出来的一个编译工P它可生成Java语言或者是C++的词法和语法分析器,q可产生语法分析树ƈ对该树进行遍历。ANTLR׃是纯Java的,因此可以安装在Q意^CQ但是需要JDK的支持?/p>

Hibernate开发小l尽力保证Hibernate3.0的查询翻译器能够支持Hibernate2.1的所有查询语句。不q,对于许多已经存在的应用,在升U过E中Q也不妨仍然使用Hibernate2.1的查询翻译器?br />值得注意的是Q?Hibernate3.0的查询翻译器存在一个BugQ不支持某些theta-styleq结查询方言Q如Oracle8i的OracleDialect方言、Sybase11Dialect。解册一问题的办法有两种Q(1Q改Z用支持ANSI-styleq结查询的方aQ如 Oracle9Dialect,Q?Q如果升U的时候遇到这一问题Q那么还是改Z用Hibernate2.1的查询翻译器?/p>

1.3.1 indices()和elements()函数

在HQL的select子句中废弃了indices()和elements()函数Q因两个函数的语法很让用戯解,可以用显式的q接查询语句来替?select elements(...) 。而在HQL的where子句中,仍然可以使用elements()函数?/p>

微薄C֌ 2006-03-21 11:19 发表评论
]]>
վ֩ģ壺 ³| | ʡ| | | Ϫ| | Ϫ| | | | Т| | | ͬ| ȷɽ| ̶| | ʩ| | | | | | ר| ƾ| | ɽ| | | | | | | | ¡| ɽ| | | ϲ| ǭ|