??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲人成人无码网www国产,亚洲大尺码专区影院,亚洲精品无码久久一线http://m.tkk7.com/cmd/zh-cnSun, 11 May 2025 22:43:52 GMTSun, 11 May 2025 22:43:52 GMT60看到q个帖子和对ajax感兴的|友,谢谢!往http://ajaxcn.org/forum/forums/list.page注册个帐?交流一?共同q接web2.0http://m.tkk7.com/cmd/archive/2006/10/09/74176.html静夜?/dc:creator>静夜?/author>Mon, 09 Oct 2006 13:39:00 GMThttp://m.tkk7.com/cmd/archive/2006/10/09/74176.htmlhttp://m.tkk7.com/cmd/comments/74176.htmlhttp://m.tkk7.com/cmd/archive/2006/10/09/74176.html#Feedback1http://m.tkk7.com/cmd/comments/commentRss/74176.htmlhttp://m.tkk7.com/cmd/services/trackbacks/74176.htmlZ聊天室ajaxconference@gmail.com. 大家加入一?


]]>
利用XMLBean轻轻松松dXML(?http://m.tkk7.com/cmd/archive/2006/08/19/64520.html静夜?/dc:creator>静夜?/author>Sat, 19 Aug 2006 07:07:00 GMThttp://m.tkk7.com/cmd/archive/2006/08/19/64520.htmlhttp://m.tkk7.com/cmd/comments/64520.htmlhttp://m.tkk7.com/cmd/archive/2006/08/19/64520.html#Feedback2http://m.tkk7.com/cmd/comments/commentRss/64520.htmlhttp://m.tkk7.com/cmd/services/trackbacks/64520.html在网上看C片关于xml操作的文章,个h感觉是操作xml最优美的方案,׃nl大家?br />一、关于XML解析 XML在Java应用E序里变得越来越重要, q泛应用于数据存储和交换. 比如我们常见的配|文?都是以XML方式存储? XMLq应用于Java Message Service和Web Services{技术作为数据交?因此,正确dXML文档是XML应用的基.

  Java提供了SAX和DOM两种方式用于解析XML,但即便如?要读写一个稍微复杂的XML,也不是一件容易的?

  二、XMLBean?/font>

   Hibernate已经成ؓ目前行的面向Java环境的对?关系数据库映工?在Hibernate{对?关系数据库映工具出C?Ҏ? 库的操作是通过JDBC来实现的,Ҏ据库的Q何操?开发h员都要自己写SQL语句来实? 对象/关系数据库映工具出现后,Ҏ据库的操作{成对JavaBean的操?极大方便了数据库开? 所以如果有一个类似的工具能够实现对XML的读写{成对JavaBean的操?会化XML的读?即对XML不熟悉的开发h员也能方便地d XML. q个工具是XMLBean.

  三、准备XMLBean和XML文档

  XMLBean是Apache的一个开源项?可以?a >http://www.apache.org下蝲,最新的版本?.0. 解压后目录如?

xmlbean2.0.0
     +---bin
     +---docs
     +---lib
     +---samples
     +---schemas

  另外q要准备一个XML文档(customers.xml),

  在本文的例子?我们对q个文档q行d操作. 文档源码如下:

<?xml version="1.0" encoding="UTF-8"?>
<Customers>
    <customer>
            <id>1</id>
            <gender>female</gender>
            <firstname>Jessica</firstname>
            <lastname>Lim</lastname>
            <phoneNumber>1234567</phoneNumber>
            <address>
                <primaryAddress>
                        <postalCode>350106</postalCode>
                        <addressLine1>#25-1</addressLine1>
                        <addressLine2>SHINSAYAMA 2-CHOME</addressLine2>
                </primaryAddress>
                <billingAddress>
                        <receiver>Ms Danielle</receiver>
                        <postalCode>350107</postalCode>
                        <addressLine1>#167</addressLine1>
                        <addressLine2>NORTH TOWER HARBOUR CITY</addressLine2>
                </billingAddress>
            </address>
    </customer>
    <customer>
            <id>2</id>
            <gender>male</gender>
            <firstname>David</firstname>
            <lastname>Bill</lastname>
            <phoneNumber>808182</phoneNumber>
            <address>
                <primaryAddress>
                        <postalCode>319087</postalCode>
                        <addressLine1>1033 WS St.</addressLine1>
                        <addressLine2>Tima Road</addressLine2>
                </primaryAddress>
                <billingAddress>
                        <receiver>Mr William</receiver>
                        <postalCode>672993</postalCode>
                        <addressLine1>1033 WS St.</addressLine1>
                        <addressLine2>Tima Road</addressLine2>
                </billingAddress>
            </address>
    </customer>
</Customers>

   q是一个客L数据模型,每个客户都有客户~号(ID),姓名,性别(gender),电话L(phoneNumber)和地址,其中地址有两? 首要地址(PrimaryAddress)和帐单地址(BillingAddress),每个地址有邮~?地址1,和地址2l成.其中帐单地址q有收g? (receiver).此外,q要准备一个配|文?文g名customer.xsdconfig),q个文g的作用我后面会讲,它的内容如下:

<xb:config xmlns:xb="

  <xb:namespace>
    <xb:package>sample.xmlbean</xb:package>
  </xb:namespace>

</xb:config>

  四、XMLBean使用步骤

  和其他面向Java环境的对?关系数据库映工L使用步骤一?在正式用XMLBean?我们要作两个准备.

  1. 生成XML Schema文g

   什么是XML Schema文g? 正常情况?每个XML文g都有一个Schema文g,XML Schema文g是一个XML的约束文?它定义了XML文g的结构和元素.以及对元素和l构的约? 通俗地讲,如果说XML文g是数据库里的记录,那么Schema是表结构定?

  Z么需要这个文? XMLBean需要通过q个文g知道一个XML文g的结构以及约?比如数据cd{? 利用q个Schema文g,XMLBean会产生一pd相关的Java Classes来实现对XML的操? 而作为开发h?则是利用XMLBean产生的Java Classes来完成对XML的操作而不需要SAX或DOM.怎样产生q个Schema文g? 如果对于熟悉XML的开发h?可以自己来写q个Schema文g,对于不熟悉XML的开发h?可以通过一些工h完成.比较有名的如XMLSPY? Stylus Studio都可以通过XML文g来生成Schema文g. 加入我们已经生成q个Schema文g(customer.xsd):

       <?xml version="1.0" encoding="UTF-8"?>
       <xs:schema xmlns:xs="
                  elementFormDefault="qualified">
         <xs:element name="Customers">
           <xs:complexType>
             <xs:sequence>
               <xs:element maxOccurs="unbounded" name="customer"
                           type="customerType"/>
             </xs:sequence>
           </xs:complexType>
         </xs:element>
       <xs:complexType name="customerType">
             <xs:sequence>
               <xs:element name="id" type="xs:int"/>
               <xs:element name="gender" type="xs:string"/>
               <xs:element name="firstname" type="xs:string"/>
               <xs:element name="lastname" type="xs:string"/>
               <xs:element name="phoneNumber" type="xs:string"/>
               <xs:element name="address" type="addressType"/>
             </xs:sequence>
       </xs:complexType>
         <xs:complexType name="addressType">
             <xs:sequence>
               <xs:element name="primaryAddress" type="primaryAddressType"/>
               <xs:element name="billingAddress" type="billingAddressType"/>
             </xs:sequence>
         </xs:complexType>

         <xs:complexType name="primaryAddressType">
             <xs:sequence>
               <xs:element name="postalCode" type="xs:string"/>
               <xs:element name="addressLine1" type="xs:string"/>
               <xs:element name="addressLine2" type="xs:string"/>
             </xs:sequence>
         </xs:complexType>
         <xs:complexType name="billingAddressType">
             <xs:sequence>
                   <xs:element name="receiver" type="xs:string"/>
               <xs:element name="postalCode" type="xs:string"/>
               <xs:element name="addressLine1" type="xs:string"/>
               <xs:element name="addressLine2" type="xs:string"/>
             </xs:sequence>
         </xs:complexType>
       </xs:schema>

  2. 利用scomp来生成Java Classes

  scomp是XMLBean提供的一个编译工?它在bin的目录下. 通过q个工具,我们可以以上的Schema文g生成Java Classes.scomp的语法如?-

  scomp [options] [dirs]* [schemaFile.xsd]* [service.wsdl]* [config.xsdconfig]*

  主要参数说明:

  -src [dir] -- 生成的Java Classes存放目录

  -srconly -- 不编译Java Classes,不生Jar文g

  -out [jarFileName] -- 生成的Jar文g,~省是xmltypes.jar

  -compiler -- Java~译器的路径,即Javac的位|?/font>

  schemaFile.xsd -- XML Schema文g位置

  config.xsdconfig -- xsdconfig文g的位|? q个文g主要用来制定生成的Java Class的一些文件名规则和Package的名U?在本?package是sample.xmlbean

  在本?我是q样q行?

      scomp -src build\src  -out build\customerXmlBean.jar schema\customer.xsd
             -compiler C:\jdk142_04\bin\javac customer.xsdconfig

   q个命o行的意思是告诉scomp生成customerXmlBean.jar,攑֜build目录?同时生成源代码放在build\src? Schema文g是customer.xsd,xsdconfig文g是customer.xsdconfig.其实, 生成的Java源代码没有多大作?我们要的是jar文g.我们先看一下build\src\sample\xmlbean下生成的Classes.

  CustomersDocument.java -- 整个XML文档的Java Class映射

  CustomerType.java -- 节点sustomer的映?/font>

  AddressType.java -- 节点address的映?/font>

  BillingAddressType.java -- 节点billingAddress的映?/font>

  PrimaryAddressType.java -- 节点primaryAddress的映?/font>

  好了,到此我们所有的准备工作已经完成? 下面开始进入重?利用刚才生成的jar文gdXML.

  五、利用XMLBean读XML文g

  新徏一个Java Project,XMLBean2.0.0\lib\下的Jar文g和刚才我们生成的customerXmlBean.jar加入到Project的ClassPath.

  新徏一个Java Class: CustomerXMLBean. 源码如下:

    package com.sample.reader;

    import java.io.File;
   
    import sample.xmlbean.*;
    import org.apache.commons.beanutils.BeanUtils;
    import org.apache.xmlbeans.XmlOptions;
    public class CustomerXMLBean {
    private String filename = null;
   
    public CustomerXMLBean(String filename) {
            super();
            this.filename = filename;
    }

    public void customerReader() {
            try {
              File xmlFile = new File(filename);
              CustomersDocument doc = CustomersDocument.Factory.parse(xmlFile);
              CustomerType[] customers = doc.getCustomers().getCustomerArray();
         
              for (int i = 0; i < customers.length; i++) {
                CustomerType customer = customers[i];
                println("Customer#" + i);
                println("Customer ID:" + customer.getId());
                println("First name:" + customer.getFirstname());
                println("Last name:" + customer.getLastname());
                println("Gender:" + customer.getGender());
                println("PhoneNumber:" + customer.getPhoneNumber());
                // Primary address
                PrimaryAddressType primaryAddress = customer.getAddress().getPrimaryAddress();
                println("PrimaryAddress:");
                println("PostalCode:" + primaryAddress.getPostalCode());
                println("AddressLine1:" + primaryAddress.getAddressLine1());
                println("AddressLine2:" + primaryAddress.getAddressLine2());
                // Billing address
                BillingAddressType billingAddress = customer.getAddress().getBillingAddress();
                println("BillingAddress:");
                println("Receiver:" + billingAddress.getReceiver());
                println("PostalCode:" + billingAddress.getPostalCode());
                println("AddressLine1:" + billingAddress.getAddressLine1());
                println("AddressLine2:" + billingAddress.getAddressLine2());
           
              }
            } catch (Exception ex) {
                    ex.printStackTrace();
            }
    }
    private void println(String str) {
          System.out.println(str);
    }
   public static void main(String[] args) {
      String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers.xml";
                  
     CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);
                   customerXMLBean.customerReader();
    }

    }

  q行?参看输出l果:

       Customer#0
       Customer ID:1
       First name:Jessica
       Last name:Lim
       Gender:female
       PhoneNumber:1234567
       PrimaryAddress:
       PostalCode:350106
       AddressLine1:#25-1
       AddressLine2:SHINSAYAMA 2-CHOME
       BillingAddress:
       Receiver:Ms Danielle
       PostalCode:350107
       AddressLine1:#167
       AddressLine2:NORTH TOWER HARBOUR CITY

       Customer#1
       Customer ID:2
       First name:David
       Last name:Bill
       Gender:male
       PhoneNumber:808182
       PrimaryAddress:
       PostalCode:319087
       AddressLine1:1033 WS St.
       AddressLine2:Tima Road
       BillingAddress:
       Receiver:Mr William
       PostalCode:672993
       AddressLine1:1033 WS St.
       AddressLine2:Tima Road

  怎么?是不是很L? XMLBean的威?

  六、利用XMLBean写XML文g

  利用XMLBean创徏一个XML文档也是一件轻而易丄?我们再增加一个Method,

  L一下的Java Class:

    public void createCustomer() {
    try {
        // Create Document
        CustomersDocument doc = CustomersDocument.Factory.newInstance();
        // Add new customer
        CustomerType customer = doc.addNewCustomers().addNewCustomer();
        // set customer info
        customer.setId(3);
        customer.setFirstname("Jessica");
        customer.setLastname("Lim");
        customer.setGender("female");
        customer.setPhoneNumber("1234567");
        // Add new address
        AddressType address = customer.addNewAddress();
        // Add new PrimaryAddress
        PrimaryAddressType primaryAddress = address.addNewPrimaryAddress();
        primaryAddress.setPostalCode("350106");
        primaryAddress.setAddressLine1("#25-1");
        primaryAddress.setAddressLine2("SHINSAYAMA 2-CHOME");

        // Add new BillingAddress
        BillingAddressType billingAddress = address.addNewBillingAddress();
        billingAddress.setReceiver("Ms Danielle");
        billingAddress.setPostalCode("350107");
        billingAddress.setAddressLine1("#167");
        billingAddress.setAddressLine2("NORTH TOWER HARBOUR CITY");

        File xmlFile = new File(filename);
        doc.save(xmlFile);
        } catch (Exception ex) {
                ex.printStackTrace();
        }

  }

  修改main method.

    public static void main(String[] args) {
    String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers_new.xml";
        CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);
        customerXMLBean.createCustomer();
    }

  q行,打开customers_new.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <Customers>
    <customer>
            <id>3</id>
            <gender>female</gender>
            <firstname>Jessica</firstname>
            <lastname>Lim</lastname>
            <phoneNumber>1234567</phoneNumber>
            <address>
                    <primaryAddress>
                         <postalCode>350106</postalCode>
                         <addressLine1>#25-1</addressLine1>
                                       <addressLine2>SHINSAYAMA 2-CHOME</addressLine2>
                    </primaryAddress>
                    <billingAddress>
                        <receiver>Ms Danielle</receiver>
                        <postalCode>350107</postalCode>
                       <addressLine1>#167</addressLine1>
                       <addressLine2>NORTH TOWER HARBOUR CITY</addressLine2>
                    </billingAddress>
                    </address>
            </customer>
    </Customers>

  七、利用XMLBean修改XML文g

  我们再增加一个Method:

      public void updateCustomer(int id,String lastname) {
         try {
        File xmlFile = new File(filename);
        CustomersDocument doc = CustomersDocument.Factory.parse(xmlFile);
        CustomerType[] customers = doc.getCustomers().getCustomerArray();
     
        for (int i = 0; i < customers.length; i++) {
           CustomerType customer = customers[i];
          if(customer.getId()==id){
                customer.setLastname(lastname);
                break;
            }
        }
        doc.save(xmlFile);
         } catch (Exception ex) {
          ex.printStackTrace();
         }
           }

  main method:

    public static void main(String[] args) {
     String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers_new.xml";
                   
    CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);
                   
    customerXMLBean.updateCustomer(3,"last");
    }

  q行之后,我们会看到客户~号?的客Llastname已经改ؓlast.

  八、利用XMLBean删除一个customer

  再增加一个Method:

    public void deleteCustomer(int id) {
     try {
      File xmlFile = new File(filename);
     CustomersDocument doc = CustomersDocument.Factory.parse(xmlFile);
    CustomerType[] customers = doc.getCustomers().getCustomerArray();

   for (int i = 0; i < customers.length; i++) {
        CustomerType customer = customers[i];
        if(customer.getId()==id){
                        customer.setNil() ;
                        break;
               }
   }
   doc.save(xmlFile);
   } catch (Exception ex) {
        ex.printStackTrace();
        }
   }

  main method:

    public static void main(String[] args) {
    String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers_new.xml";
                   
    CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);
                   
    customerXMLBean.deleteCustomer(3);
    }

  q行,我们会看到客户~号?的客L资料已经被删?

  九、查询XML

  除了本文在以上讲q的,利用XMLBean能轻L村֮成XML的读写操作外,l合XPath和XQuery,XMLBeanq能完成象SQL查询数据库一h便地查询XML数据. 关于XML查询以及如何创徏XML数据? 我将在另一文章里讨论.

  十、结束语

  XMLBean能帮助我们轻易读写XML,q将有助于我们降低XML的学习和使用,有了q个基础,开发h员将为学习更多地XML相关技术和Web Services,JMS{其他J2EE技术打下良好地基础.

原文地址:http://www.matrix.org.cn/resource/article/44/44027_XMLBean.html

]]>
ejb3 学习W一?annotationhttp://m.tkk7.com/cmd/archive/2006/08/13/63375.html静夜?/dc:creator>静夜?/author>Sun, 13 Aug 2006 15:14:00 GMThttp://m.tkk7.com/cmd/archive/2006/08/13/63375.htmlhttp://m.tkk7.com/cmd/comments/63375.htmlhttp://m.tkk7.com/cmd/archive/2006/08/13/63375.html#Feedback0http://m.tkk7.com/cmd/comments/commentRss/63375.htmlhttp://m.tkk7.com/cmd/services/trackbacks/63375.html ejb3是javaee5的标准,他吸收了开源框架的许多优点Q非常希望大家学习ƈ应用到实际应用当中?br />ejb3完全是构Zannotation之上的,我将分ؓ几篇讨论?br />
q篇是自己关于注解的理解W记

先从RetentionPolicyq个开始把QRetentionPolicy是一个枚举,他是对于~译器的一个声明?br />然而Annotations在编译的q程会中记录到类文g?br />RetentionPolicy的枚举成员一共有三个
SOURCE ~译器要丢弃的注释?br />CLASS ~译器将把注释记录在cL件中Q但在运行时 VM 不需要保留注释?br />RUNTIME ~译器将把注释记录在cL件中Q在q行?VM 保留注释,因此可以反射性地d?Ȁ发注解在q行时生?
Q-Q-在这里注意一下java.lang.reflect.AnnotatedElementq个接口主要定义了获得注解和判断注解是否描述了某个java元素?/font>

在说一下这两个
RetentionQTarget Qjdk提供的注解)

CZ
Target 源码Q?br />@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
    ElementType[] value();
}

说明Q?br />      1.自己可以描述自己QElementType 描述声明cdQ该注解可以用于哪些元素上边Q?br />      2.q个注解是用来描q自己定义的元数据,也应该叫做元注解Q然而我们定义的元数据通常是ؓcL者方法而声明的?br />     
3.@Retention(RetentionPolicy.RUNTIME )用来保证在javaq行时运行注解?/font>

其实注解是变向的简化java的反以及把spring{容器ioc和aop的相x念从往常的xml作ؓ元数据提了一个高度声明至cMQ摒弃掉了项?/font> 扩大时冗长的xml的配|?br />
一般通过cL者方法的反射调用注解的方式如?br />            for (Method m : Class.forName(className).getMethods()) {
               if (m.isAnnotationPresent(MyAnnotation.class)) {
                  try {
                     m.invoke(null);//ҎҎ有无参数讄是否为null
                  } catch (Throwable ex) {
                     System.out.printf("p|");
                  }
               }

概念上应注意的几点:
1.在Annotation中,没有默认值的成员必须有一个成员倹{而如何理解默认值是如何被处理就是一个很重要的细节:annotationcd所定义?/font>

成员默认D存储在class文g中,不被~译到annotation里面。如果我们修改一个annotationcd使其成员的默认值发生了改变Q这个改变对 于所有此cd的annotation中没有明提供成员值的成员产生影响Q即修改了该成员的成员|。即使在annotationcd使其成员的默认D 改变后annotation从没被重新编译过Q该cd的annotation(改变前已l被~译?也受到媄响?br />
q篇基本先写到这里,java元数据其实是很大的一块,我只是粗略的看了一下基本的概念Q用来学习ejb作一个铺垫。关于annotation的详情介 l可以阅d考文献中的两文章。在下一章中我要介绍一下ejb中常用的annotation?/font>

参考文献:
   jdk源码
   Java Annotation入门
http://www.matrix.org.cn/resource/article/44/44048_Java+Annotation.html
   Java Annotation手册 http://www.matrix.org.cn/resource/article/44/44055_Java+Annotation+Reflect.html



]]>
Spring让Hibernate使用者受益良?/title><link>http://m.tkk7.com/cmd/archive/2006/06/21/54308.html</link><dc:creator>静夜?/dc:creator><author>静夜?/author><pubDate>Wed, 21 Jun 2006 09:17:00 GMT</pubDate><guid>http://m.tkk7.com/cmd/archive/2006/06/21/54308.html</guid><wfw:comment>http://m.tkk7.com/cmd/comments/54308.html</wfw:comment><comments>http://m.tkk7.com/cmd/archive/2006/06/21/54308.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/cmd/comments/commentRss/54308.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/cmd/services/trackbacks/54308.html</trackback:ping><description><![CDATA[ <font size="2">Spring的轻量的bean容器Z务对象(business objectsQ、DAO对象和资源(如:JDBC数据源或者Hibernate SessionFactorie{)对象提供了IoCcd的装配能力。Spring使用一个xml格式的应用配|文件ؓ开发者提供了一U通过解析定制的属性文件来手动理单实例对象或者工厂对象的选择性。由于Spring非入R性做Z个重要的目标Q因此可以由Spring配置理的bean对象均不需要依赖Spring自有的接口和cd可以通过它们的bean属性完成配|。这个概念可以被应用CQ何环境中Q无Z开发的是一个J2EE的web应用q是一个桌面应用甚臛_是一个applet都可以?</font> <p> <font size="2"> <font color="#a52a2a">    在用Hibernate的应用中, Spring的对DAO对象通常的事务管理特别应该引起关注。它的目的就是分L据访问和事务处理Q事务性业务对象不与Q何特D的数据讉K或者事务策略绑在一P从而不影响业务对象的可复用性。这U划分既可以l由事务模板QTransactionTemplateQ用~程的方式实玎ͼ也可以经由面向方面(AOPQ事务拦截器QTransactionTemplateQ用声明的方式实现。无论是本地的Hibernate / JDBC事务Q还是JTA事务都支持对象外的事务策略,q对于本地的无状态会话BeanQStateless Session BeansQ是一个非常有用的选择?/font> </font> </p> <p> <font size="2"> <font color="#a52a2a">    Spring的HibernateTemplatecL供了一个简单的方式实现了Hibernate-based DAO对象而不必关心如何获得Hibernate的Session实例Q也不必兛_多方参与的事务处理。无需使用try-catch块,也无需q行事务查。一个简单的Hibernate讉KҎ完全解决了些麻? 无论是在多个DAO接口q是在多方事务的情况下,Spring使得多种DAO对象无缝地协同工作。例如:某些DAO对象可能是基于plain JDBC的实玎ͼ更适合于经由Spring的JdbcTemplate来避免手动的异常处理?/font> </font> </p> <p> <font size="2"> <font color="#a52a2a">      你可以单独地使用许多SpringҎ,因ؓSpring的所有对象都是设计成可复用的JavaBean对象的集合。也不要因ؓSpring可以提供一个完整的应该框架而气馁!使用其他的SpringҎ时Q应用配|概忉|一个附加的Ҏ,q不是一个必ȝҎ。无论如何,当你要决定去构徏一个象Springq样的内在的基础架构的时候,在用Spring的\途上没有什么范围上的限制?/font> </font> </p> <p> <font color="#a52a2a"> </font> <font size="2"> </font> </p> <p> <font size="2"> <strong> <font color="#a52a2a">1. 介绍: 资源理</font> </strong> </font> </p> <p> <font size="2"> <font color="#a52a2a">       典型的业务应用系l常常由于重复的资源理代码而导致؜乱。许多项目试着用自qҎ来解册个问题,有时要ؓ此付出失败的代hQSpring针对适当的资源管理提倡了一U引人注目的单方法:即经由模板来倒置控制QInversion of controlQ,例如Q基cM用回调接口,或者应用AOP拦截器。其基础核心是适当的资源处理和特D的API异常转换Z个unchecked的基异常?/font> </font> </p> <p> <font size="2"> <font color="#a52a2a">       Spring引入了一个DAO异常层适用于Q何数据访问策略。对于直接的JDBCQJdbcTemplatecd注于q接处理Qƈ且关注于对SQLException转换为适当的DataAccessExceptionQ包括对Ҏ的数据库SQL错误转换为有意义的异常?l由不同的事务管理对象,Spring支持JTA和JDBC事务。Spring 也提供对Hibernate和JDO的支持,它的q种支持׃JdbcTemplatecȝ作用相类似的HibernateTemplatecdJdoTemplatec? 以及HibernateInterceptorcRJdoInterceptorc,q有Hibernate、JDO 事务理cȝ成?/font> </font> </p> <p> <font size="2"> <font color="#a52a2a">       最主要的目的是要应用的层ơ分明,为此数据访问和事务处理同应用对象分d来。所有的业务对象都不再依赖数据访问或者事务策略。不再有编码的资源查找代码Q不再有难以替换的单例对象,也不再需要定制服务注册?/font> </font> </p> <p> <font size="2"> <font color="#a52a2a">      所有的单独的数据访问特性均无需依赖于SpringQ可以单独用,无需让Spring知道Q同时也可以通过Spring的应用配|(提供ZXML的配|和Ҏ通JavaBean实例的交叉引用)来进行装配。在一个典型的Spring应用中,大部分重要的对象都是普通的JavaBeanQ数据访问模板对象(data access templatesQ、数据访问对象(使用数据讉K模板对象的对象)、事务管理对象及业务对象Q用数据访问对象和事务对象的对象)Qweb表示分解对象、web控制对象Q用业务对象的对象Q等{?/font> </font> </p> <p> <font size="2"> <strong> <font color="#a52a2a">2. 应用配置中的资源定义</font> </strong> </font> </p> <p> <font size="2"> <font color="#a52a2a">    Z避免应用对象资源查扄代码编码,Spring允许在应用配|中一个如JDBC DataSource或者Hibernate SessionFactory定义Z个Bean。应用对象如果需要访问资源只需要通过Bean引用QDAO定义在下一部分说明Q接受先前定义的实例的引用。以下的内容引用自一个应用配|定义,昄了如何徏立一个JDBC DataSource和一个Hibernate的SessionFactoryQ?/font> </font> </p> <table style="BORDER-COLLAPSE: collapse" bordercolor="#cccccc" cellspacing="0" cellpadding="2" width="400" align="center" bgcolor="#cccccc" border="1"> <tbody> <tr> <td> <p> <font size="2"> <font color="#a52a2a"> <beans><br /><br /><bean id="myDataSource" class="org.springframework.jndi</font> </font> </p> <p> <font size="2"> <font color="#a52a2a">.JndiObjectFactoryBean"><br /><property name="jndiName"><br /><value>jdbc/myds</value><br /></property><br /></bean><br /><br /><bean id="mySessionFactory" class="org.springframework.orm.hibernate</font> </font> </p> <p> <font size="2"> <font color="#a52a2a">.LocalSessionFactoryBean"><br /><property name="mappingResources"><br /><list><br /><value>product.hbm.xml</value><br /></list><br /></property><br /><property name="hibernateProperties"><br /><props><br /><prop key="hibernate.dialect">net.sf.hibernate.dialect</font> </font> </p> <p> <font size="2"> <font color="#a52a2a">.MySQLDialect</prop><br /></props><br /></property><br /><property name="dataSource"><br /><ref bean="myDataSource"/><br /></property><br /></bean><br /><br />...<br /><br /></beans></font> </font> </p> </td> </tr> </tbody> </table> <p> <font size="2"> <font color="#a52a2a">      注意选择是用JNDI来定位数据源q是从一个象Jakarta Commons DBCP BasicDataSourceq样的本地定义取得一个数据源Q只是一个改变配|的事:</font> </font> </p> <p> </p> <table style="BORDER-COLLAPSE: collapse" bordercolor="#cccccc" cellspacing="0" cellpadding="2" width="400" align="center" bgcolor="#cccccc" border="1"> <tbody> <tr> <td> <p> <font size="2"> <font color="#a52a2a"><bean id="myDataSource"<br />      class="org.apache.commons</font> </font> </p> <p> <font size="2"> <font color="#a52a2a">.dbcp.BasicDataSource" destroy-method="close"><br /><property name="driverClassName"><br /><value>org.hsqldb.jdbcDriver</value><br /></property><br /><property name="url"><br /><value>jdbc:hsqldb:hsql://localhost:9001</value><br /></property><br /><property name="username"><br /><value>sa</value><br /></property><br /><property name="password"><br /><value></value><br /></property><br /></bean></font> </font> </p> </td> </tr> </tbody> </table> <p> <font size="2"> <font color="#a52a2a">       你也可以使用一个JNDI查找SessionFactoryQ但是通常对于EJB环境之外的应用来说ƈ不是需要的Q参?container resources vs local resources"部分的讨论)?/font> </font> </p> <p> <font size="2"> <strong> <font color="#a52a2a">3. 倒置控制QInversion of ControlQ? 模板和回?/font> </strong> </font> </p> <p> <font size="2"> <font color="#a52a2a">    模板的基本编E模式就象你在下面看到那样Q至于方法就如同M定制的数据访问对象或者业务的对象的方法一栗除了需要向其提供一个Hibernate的SessionFactory之外Q再没有对周围执行对象的信赖的限制。虽然最好是从一个Spring的应用配|中l由一个简单setSessionFactory bean的属性设|用Bean引用来获得它Q但随后你可以从M地方获得它。随后的引用片段包括一D在Spring应用配置中对DAO定义的配|,其中引用了在其前面定义的SessionFactoryQ和一DDAOҎ的实现的例子?/font> </font> </p> <p> </p> <table style="BORDER-COLLAPSE: collapse" bordercolor="#cccccc" cellspacing="0" cellpadding="2" width="400" align="center" bgcolor="#cccccc" border="1"> <tbody> <tr> <td> <pre class="code"> <font color="#a52a2a" size="2"><beans> <bean id="myProductDao" class="product.ProductDaoImpl"> <property name="sessionFactory"> <ref bean="mySessionFactory"/> </property> </bean> ... </beans></font> </pre> </td> </tr> </tbody> </table> <p> </p> <table style="BORDER-COLLAPSE: collapse" bordercolor="#cccccc" cellspacing="0" cellpadding="2" width="400" align="center" bgcolor="#cccccc" border="1"> <tbody> <tr> <td> <pre class="code"> <pre class="code"> <font color="#a52a2a" size="2">public class ProductDaoImpl implements ProductDao { private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory </font> </pre> <pre class="code"> <font color="#a52a2a" size="2"> sessionFactory) { this.sessionFactory = sessionFactory; } public List loadProductsByCategory(final String </font> </pre> <pre class="code"> <font color="#a52a2a" size="2"> category) { HibernateTemplate hibernateTemplate = new HibernateTemplate(this.sessionFactory); return (List) hibernateTemplate.execute( new HibernateCallback() { public Object doInHibernate(Session session) throws</font> </pre> <pre class="code"> <font color="#a52a2a" size="2"> HibernateException { List result = session.find( "from test.Product product where product.category=?", category, Hibernate.STRING); // do some further stuff with the result list return result; } } ); } }</font> </pre> </pre> </td> </tr> </tbody> </table> <p> <font size="2"> <font color="#a52a2a">       一个回调的实现可以被有效地用在MHibernate数据讉K中。在M情况下都由HibernateTemplate来管理Session的开闭和自动的多方事务。模板实例是U程安全和可重用的,因此它们可以做ؓ其他cȝ变量?/font> </font> </p> <p> <br /> <font size="2"> <font color="#a52a2a">       对于单的单步的动作,象find, load, saveOrUpdate或者delete的调用,HibernateTemplate提供更ؓ便利的选择以代替象一行的回调的执行。此外,Spring提供了一个方便的基本c,是HibernateDaoSupportc,它提供了setSessionFactoryҎ来接受一个SessionFactoryQ同时提供了getSessionFactory和getHibernateTemplateҎ供其l承cM用。将q些l合hQ允许对于典型的需求给Z非常单的DAO实现Q?/font> </font> </p> <p> </p> <table style="BORDER-COLLAPSE: collapse" bordercolor="#cccccc" cellspacing="0" cellpadding="2" width="400" align="center" bgcolor="#cccccc" border="1"> <tbody> <tr> <td> <pre class="code"> <pre class="code"> <pre class="code"> <font color="#a52a2a" size="2">public class ProductDaoImpl extends HibernateDaoSupport implements</font> </pre> <pre class="code"> <font color="#a52a2a" size="2"> ProductDao { public List loadProductsByCategory(String category) { return getHibernateTemplate().find( "from test.Product product where product.category=?", category, Hibernate.STRING); } }</font> </pre> </pre> </pre> </td> </tr> </tbody> </table> <p> <font color="#a52a2a"> </font> <font size="2"> </font> </p> <p> <font size="2"> <strong> <font color="#a52a2a">4. 应用一个AOP拦截器代替一个模?/font> </strong> </font> </p> <p> <font size="2"> <font color="#a52a2a">   除用HibernateTemplate之外的另一个选择是使用Spring的AOP HibernateInterceptor。用直接在一个委托的try/catch块中~写Hibernate代码Q配合相应的在应用配|中分别的拦截器配置来代替执行回调。下面的片段昄了一个Spring应用配置中的DAO, interceptor和proxy的各自的定义Q同时给Z一个DAOҎ实现的例子:</font> </font> </p> <p> </p> <table style="BORDER-COLLAPSE: collapse" bordercolor="#cccccc" cellspacing="0" cellpadding="2" width="400" align="center" bgcolor="#cccccc" border="1"> <tbody> <tr> <td> <pre class="code"> <pre class="code"> <pre class="code"> <pre class="code"> <font color="#a52a2a" size="2"><beans> ... <bean id="myHibernateInterceptor" class="org.springframework.orm.hibernate</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">.HibernateInterceptor"> <property name="sessionFactory"> <ref bean="mySessionFactory"/> </property> </bean> <bean id="myProductDaoTarget" class="product.ProductDaoImpl"> <property name="sessionFactory"> <ref bean="mySessionFactory"/> </property> </bean> <bean id="myProductDao" class="org.springframework.aop</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">.framework.ProxyFactoryBean"> <property name="proxyInterfaces"> <value>product.ProductDao</value> </property> <property name="interceptorNames"> <list> <value>myHibernateInterceptor</value> <value>myProductDaoTarget</value> </list> </property> </bean> ... </beans></font> </pre> </pre> </pre> </pre> </td> </tr> </tbody> </table> <p> </p> <table style="BORDER-COLLAPSE: collapse" bordercolor="#cccccc" cellspacing="0" cellpadding="2" width="400" align="center" bgcolor="#cccccc" border="1"> <tbody> <tr> <td> <pre class="code"> <pre class="code"> <pre class="code"> <font color="#a52a2a" size="2"> </font> <pre class="code"> <font color="#a52a2a" size="2">public class ProductDaoImpl extends HibernateDaoSupport </font> </pre> <pre class="code"> <font color="#a52a2a" size="2"> implements ProductDao { public List loadProductsByCategory(final String category)</font> </pre> <pre class="code"> <font color="#a52a2a" size="2"> throws MyException { Session session = SessionFactoryUtils</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">.getSession(getSessionFactory(), false); try { List result = session.find( "from test.Product product where product.category=?", category, Hibernate.STRING); if (result == null) { throw new MyException("invalid search result"); } return result; } catch (HibernateException ex) { throw SessionFactoryUtils.convertHibernateAccessException(ex); } } } </font> </pre> </pre> </pre> </pre> </td> </tr> </tbody> </table> <p> <font size="2"> <font color="#a52a2a">        q个Ҏ只在有一个与它配合的HibernateInterceptor时才能正常工作,HibernateInterceptor为它负责在方法调用前U程l定Session的开启和Ҏ调用后的关闭。getSessionҎ调用中的"false"标志是要认Session必须是已l存在的Q如果没有发CQ何一个SessionQSessionFactoryUtils会为其创徏一个。如果已l有一个Session句柄l定在本U程上,比如是由一个HibernateTransactionManager事务l定的,在Q何情况下SessionFactoryUtils会自动接入这个Session。HibernateTemplate在底层也使用SessionFactoryUtilsQ与以上说的方式基本是一L?/font> </font> </p> <p> <font color="#a52a2a" size="2">       HibernateInterceptor的主要益处是它允许在数据讉K代码中抛出checked application exceptionQ而HibernateTemplate׃受限于回调只能在其中抛出unchecked exceptions。注意到q点我们可以推迟各自的检验,同时在回调后抛出应用异常。拦截方式的主要~点是它需要在配置中进行特D的配置。HibernateTemplate在大多数情况下都是一U简单好用的Ҏ?br /></font> </p> <p> <font size="2"> <strong> <font color="#a52a2a">5. E序事务划分</font> </strong> </font> </p> <p> <font size="2"> <font color="#a52a2a">   在这U底层的数据讉K服务之上Q事务处理可以在更高的应用层被划?QŞ成一些操作。这里除了需要一个Spring的PlatformTransactionManager对象外,对于周围q行的业务对象也没有M限制。同LQ其后你可以从Q何地方获得它们,但是l由Bean引用的方式通过setTransactionManageҎ获得更ؓ适合Q象productDAO要经׃个setProductDaoҎ获得一栗下面的引用片段昄了在一个Spring应用配置中的事务理对象和业务对象的定义Qƈ且还提供了一个业务方法实现的例子Q?/font> </font> </p> <p> </p> <table style="BORDER-COLLAPSE: collapse" bordercolor="#cccccc" cellspacing="0" cellpadding="2" width="400" align="center" bgcolor="#cccccc" border="1"> <tbody> <tr> <td> <pre class="code"> <pre class="code"> <pre class="code"> <pre class="code"> <font color="#a52a2a" size="2"><beans> ... <bean id="myTransactionManager" class="org.springframework.orm.hibernate</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="mySessionFactory"/> </property> </bean> <bean id="myProductService" class="product.ProductServiceImpl"> <property name="transactionManager"> <ref bean="myTransactionManager"/> </property> <property name="productDao"> <ref bean="myProductDao"/> </property> </bean> </beans></font> </pre> </pre> </pre> </pre> </td> </tr> </tbody> </table> <p> </p> <table style="BORDER-COLLAPSE: collapse" bordercolor="#cccccc" cellspacing="0" cellpadding="2" width="400" align="center" bgcolor="#cccccc" border="1"> <tbody> <tr> <td> <pre class="code"> <pre class="code"> <pre class="code"> <font color="#a52a2a" size="2"> </font> <pre class="code"> <font color="#a52a2a" size="2">public class ProductServiceImpl implements ProductService { private PlatformTransactionManager transactionManager; private ProductDao productDao; public void setTransactionManager(PlatformTransactionManager </font> </pre> <pre class="code"> <font color="#a52a2a" size="2"> transactionManager) { this.transactionManager = transactionManager; } public void setProductDao(ProductDao productDao) { this.productDao = productDao; } public void increasePriceOfAllProductsInCategory(final String </font> </pre> <pre class="code"> <font color="#a52a2a" size="2"> category) { TransactionTemplate transactionTemplate = new TransactionTemplate(this.transactionManager); transactionTemplate.setPropagationBehavior(TransactionDefinition</font> </pre> <pre class="code"> <font color="#a52a2a" size="2"> .PROPAGATION_REQUIRED); transactionTemplate.execute( new TransactionCallbackWithoutResult() { public void doInTransactionWithoutResult(TransactionStatus </font> </pre> <pre class="code"> <font color="#a52a2a" size="2"> status) { List productsToChange = productDAO.loadProductsByCategory(category); ... } } ); } }</font> </pre> </pre> </pre> </pre> </td> </tr> </tbody> </table> <p> <font size="2"> <strong> <font color="#a52a2a">6. 声明性事务划?/font> </strong> </font> </p> <p> <font size="2"> <font color="#a52a2a">       我们q可以选择使用Spring的AOP TransactionInterceptor通过在应用配|中定义拦截器配|来代替事务划分代码的事务处理方式。这允许我们保持业务对象独立于每个业务对象中重复的事务划分代码。此外,事务行ؓ和隔dơ的变化可以通过一个配|文件来改变而不需要对业务对象的实现造成影响?/font> </font> </p> <p> </p> <table style="BORDER-COLLAPSE: collapse" bordercolor="#cccccc" cellspacing="0" cellpadding="2" width="400" align="center" bgcolor="#cccccc" border="1"> <tbody> <tr> <td> <pre class="code"> <pre class="code"> <font color="#a52a2a" size="2"><beans> ... <bean id="myTransactionManager" class="org.springframework.orm.hibernate</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="mySessionFactory"/> </property> </bean> <bean id="myTransactionInterceptor" class="org.springframework.transaction</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">.interceptor.TransactionInterceptor"> <property name="transactionManager"> <ref bean="myTransactionManager"/> </property> <property name="transactionAttributeSource"> <value> product.ProductService.increasePrice*=PROPAGATION_REQUIRED product.ProductService.someOtherBusinessMethod=</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">PROPAGATION_MANDATORY </value> </property> </bean> <bean id="myProductServiceTarget" class="product</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">.ProductServiceImpl"> <property name="productDao"> <ref bean="myProductDao"/> </property> </bean> <bean id="myProductService" class="org.springframework.aop</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">.framework.ProxyFactoryBean"> <property name="proxyInterfaces"> <value>product.ProductService</value> </property> <property name="interceptorNames"> <list> <value>myTransactionInterceptor</value> <value>myProductServiceTarget</value> </list> </property> </bean> </beans></font> </pre> </pre> </td> </tr> </tbody> </table> <p> </p> <table style="BORDER-COLLAPSE: collapse" bordercolor="#cccccc" cellspacing="0" cellpadding="2" width="400" align="center" bgcolor="#cccccc" border="1"> <tbody> <tr> <td> <pre class="code"> <font color="#a52a2a" size="2"> </font> <pre class="code"> <font color="#a52a2a" size="2">public class ProductServiceImpl implements ProductService { private ProductDao productDao; public void setProductDao(ProductDao productDao) { this.productDao = productDao; } public void increasePriceOfAllProductsInCategory(final String</font> </pre> <pre class="code"> <font color="#a52a2a" size="2"> category) { List productsToChange = this.productDAO</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">.loadProductsByCategory(category); ... } }</font> </pre> </pre> </td> </tr> </tbody> </table> <p> <font size="2"> <font color="#a52a2a">      如同使用HibernateInterceptor一PTransactionInterceptor允许Mchecked application exception从回调代码中抛出Q而TransactionTemplate受回调限制在其内部抛出unchecked exceptionsQ在出现一个unchecked application exception的情冉|QTransactionTemplate引发一个回滚或者这个事务由应用Q通过事务状态)标记为回滚。TransactionInterceptor默认情况也是同样的行为,但是允许为每一个方法制定回滚策略?br />       建立声明性事务的一个便利的方式是用TransactionProxyFactoryBeanQ特别是如果没有其他AOP拦截器的话,TransactionProxyFactoryBean联合定义ؓ代理的自w与一个特D的目标Bean的事务配|。这减一个代理Bean对应一个目标Bean的配|情c此外,你不必指定哪个接口或者哪个类必须定义事务Ҏ?/font> </font> </p> <p> </p> <table style="BORDER-COLLAPSE: collapse" bordercolor="#cccccc" cellspacing="0" cellpadding="2" width="400" align="center" bgcolor="#cccccc" border="1"> <tbody> <tr> <td> <pre class="code"> <pre class="code"> <pre class="code"> <pre class="code"> <font color="#a52a2a" size="2"><beans> ... <bean id="myTransactionManager" class="org.springframework.orm.hibernate</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="mySessionFactory"/> </property> </bean> <bean id="myProductServiceTarget" class="product</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">.ProductServiceImpl"> <property name="productDao"> <ref bean="myProductDao"/> </property> </bean> <bean id="myProductService" class="org.springframework.transaction.interceptor</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">.TransactionProxyFactoryBean"> <property name="transactionManager"> <ref bean="myTransactionManager"/> </property> <property name="target"> <ref bean="myProductServiceTarget"/> </property> <property name="transactionAttributes"> <props> <prop key="increasePrice*">PROPAGATION_REQUIRED</prop> <prop key="someOtherBusinessMethod">PROPAGATION_MANDATORY</prop> </props> </property> </bean> </beans> </font> </pre> </pre> </pre> </pre> </td> </tr> </tbody> </table> <p> <font size="2"> <strong> <font color="#a52a2a">7. 事务理{略</font> </strong> </font> </p> <p> <font size="2"> <font color="#a52a2a">          对于Hibernate应用来说Q无论是TransactionTemplateq是TransactionInterceptor都是委托验实际的事务处理lPlatformTransactionManager实例Q可以是一个HibernateTransactionManagerQ由一个单一的Hibernate的SessionFactoryQ用一个ThreadLocal SessionQ或者可以是一个JtaTransactionManagerQ代理容器的JTA子系l)。甚至你可以使用一个自定义的PlatformTransactionManager实现?br />       如果选择从本地Hibernate事务理转ؓ由JTA来进行事务管理,例如Q当你的应用的部|面对分布的事务需求时Q也仅仅是改变一下配|的事。只要简单地Hibernate的事务管理换为JTA事务实现卛_。所有的事务划分和数据访问无需做Q何变动仍可以l箋工作Q因Z们用的都是普通的事务理API?br />       对于分布式的事务会跨多个Hibernate的session factoriesQ仅仅是联合JtaTransactionManager与多个LocalSessionFactoryBean定义作ؓ事务{略。你的每一个DAO通过它们各自的Bean属性得C个特D的SessionFactory的引用。如果这一切都是在下面的JDBC数据源是事务容器Q一个业务对象可以划分事务跨很多DAO和很多session factories而无需做特别的处理Q对于用JtaTransactionManager做ؓ事务{略也是一L?/font> </font> </p> <p> </p> <table style="BORDER-COLLAPSE: collapse" bordercolor="#cccccc" cellspacing="0" cellpadding="2" width="400" align="center" bgcolor="#cccccc" border="1"> <tbody> <tr> <td> <pre class="code"> <pre class="code"> <pre class="code"> <font color="#a52a2a" size="2"> </font> <pre class="code"> <font color="#a52a2a" size="2"><beans> <bean id="myDataSource1" class="org.springframework.jndi</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">.JndiObjectFactoryBean"> <property name="jndiName"> <value>jdbc/myds1</value> </property> </bean> <bean id="myDataSource2" class="org.springframework.jndi.</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">JndiObjectFactoryBean"> <property name="jndiName"> <value>jdbc/myds2</value> </property> </bean> <bean id="mySessionFactory1" class="org.springframework.orm.hibernate.</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">LocalSessionFactoryBean"> <property name="mappingResources"> <list> <value>product.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">net.sf.hibernate.dialect.</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">MySQLDialect</prop> </props> </property> <property name="dataSource"> <ref bean="myDataSource1"/> </property> </bean> <bean id="mySessionFactory2" class="org.springframework.orm.hibernate.</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">LocalSessionFactoryBean"> <property name="mappingResources"> <list> <value>inventory.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">net.sf.hibernate.</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">dialect.OracleDialect</prop> </props> </property> <property name="dataSource"> <ref bean="myDataSource2"/> </property> </bean> <bean id="myTransactionManager" class="org.springframework.transaction.jta.</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">JtaTransactionManager"/> <bean id="myProductDao" class="product.ProductDaoImpl"> <property name="sessionFactory"> <ref bean="mySessionFactory1"/> </property> </bean> <bean id="myInventoryDao" class="product.InventoryDaoImpl"> <property name="sessionFactory"> <ref bean="mySessionFactory2"/> </property> </bean> <bean id="myProductServiceTarget" class="product.</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">ProductServiceImpl"> <property name="productDao"> <ref bean="myProductDao"/> </property> <property name="inventoryDao"> <ref bean="myInventoryDao"/> </property> </bean> <bean id="myProductService" class="org.springframework.transaction.interceptor.</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">TransactionProxyFactoryBean"> <property name="transactionManager"> <ref bean="myTransactionManager"/> </property> <property name="target"> <ref bean="myProductServiceTarget"/> </property> <property name="transactionAttributes"> <props> <prop key="increasePrice*">PROPAGATION_REQUIRED</prop> <prop key="someOtherBusinessMethod">PROPAGATION_MANDATORY</prop> </props> </property> </bean> </beans></font> </pre> </pre> </pre> </pre> </td> </tr> </tbody> </table> <p> <font size="2"> <font color="#a52a2a">       无论是HibernateTransactionManagerq是JtaTransactionManager允许适当的对Hibernate的在JVM层次的缓存处?不需要容?提供Ҏ的事务查找或者JCAq接器(只要不用EJB发v事务Q。另外,HibernateTransactionManager能输出JDBCq接供通常的JDBC讉K代码使用。这样就允许在高层次上的事务划分是؜合了Hibernate与JDBC而不要JTA的,只要只是讉K一个数据库可以!</font> </font> </p> <p> <font size="2"> <strong> <font color="#a52a2a">8. 使用Spring理应用的Bean</font> </strong> </font> </p> <p> <font size="2"> <font color="#a52a2a">        一个Spring应用配置定义可以被多U配|实现所加蝲Q从FileSystemXmlApplicationContext和ClassPathXmlApplicationContext到XmlWebApplicationContext。这允许在各种环境下重用Spring理的数据访问和业务对象。默认情况下Q一个Web应用有它自q定义在“WEB-INF/applicationContext.xml”中的根配置?br />       在Q何一个Spring应用中,一个应用配|定义在一个XML格式的文件中用来对应用的所有有关的Beanq行装配Q从Hibernate的session factory到自定义的数据访问和业务对象Q象上面所有的Bean那样Q。他们中的大多数不需要Spring容器知道他们Q甚臛_使是与其他Bean合作时也一P因ؓ他们只是单的JavaBean之间的协作。下面的Bean定义可能是一个Spring Web 的MVC配置中用来访问业务对象的配置的一部分?/font> </font> </p> <p> </p> <table style="BORDER-COLLAPSE: collapse" bordercolor="#cccccc" cellspacing="0" cellpadding="2" width="400" align="center" bgcolor="#cccccc" border="1"> <tbody> <tr> <td> <pre class="code"> <font color="#a52a2a" size="2"> </font> <pre class="code"> <pre class="code"> <font color="#a52a2a" size="2"><bean id="myProductList" class="product.ProductListController"> <property name="productService"> <ref bean="myProductService"/> </property> </bean></font> </pre> </pre> </pre> </td> </tr> </tbody> </table> <p> <font size="2"> <font color="#a52a2a">      Spring的Web控制器经由Bean引用拥有它们需要的所有的业务和数据访问对象,因此它们无需在应用配|中做Q何手工的Bean查找。但是当使用Spring理的Beans用于Struts或者是在EJB实现Q或者一个applet中时常常是需要必L工查找一个Bean的。因此Spring的Bean可以被用在Q何地斏V也许只是需要是一应用配置的引用,或者经׃个web容器的Servlet配置属性,或者从一个文件中或者类路径的资源中创徏它?/font> </font> </p> <p> </p> <table style="BORDER-COLLAPSE: collapse" bordercolor="#cccccc" cellspacing="0" cellpadding="2" width="400" align="center" bgcolor="#cccccc" border="1"> <tbody> <tr> <td> <pre class="code"> <pre class="code"> <font color="#a52a2a" size="2">ApplicationContext context =WebApplicationContextUtils.</font> </pre> <pre class="code"> <font color="#a52a2a" size="2">getWebApplicationContext(servletContext); ProductService productService = (ProductService) context.getBean("myProductService");</font> </pre> </pre> </td> </tr> </tbody> </table> <p> </p> <table style="BORDER-COLLAPSE: collapse" bordercolor="#cccccc" cellspacing="0" cellpadding="2" width="400" align="center" bgcolor="#cccccc" border="1"> <tbody> <tr> <td> <pre class="code"> <font color="#a52a2a" size="2"> ApplicationContext context = new FileSystemXmlApplicationContext("C:/myContext.xml"); ProductService productService = (ProductService) context.getBean("myProductService"); </font> </pre> </td> </tr> </tbody> </table> <p> </p> <table style="BORDER-COLLAPSE: collapse" bordercolor="#cccccc" cellspacing="0" cellpadding="2" width="400" align="center" bgcolor="#cccccc" border="1"> <tbody> <tr> <td> <pre class="code"> <font color="#a52a2a" size="2"> ApplicationContext context = new ClassPathXmlApplicationContext("myContext.xml"); ProductService productService = (ProductService) context.getBean("myProductService");</font> </pre> </td> </tr> </tbody> </table> <p> <font size="2"> <strong> <font color="#a52a2a">9. 容器资源VS本地资源</font> </strong> </font> </p> <p> <font size="2"> <font color="#a52a2a">       Spring的资源管理允许简单地在一个JNDI SessionFactory和一个本地SessionFactory间做选择Q同样允许在一个JNDI DataSource与本地DataSource间做选择Q而无需改变应用的一行代码。在容器中保存资源定义还是在应用本地保存Q主要是一个事务策略方面的事。比较一个Spring定义的本地SessionFactory与一个手工注册的JNDI SessionFactory没有M益处。如果经由Hibernate的JCAq接器注册,才会有加入JTA事务的明昄处,特别是对EJB?/font> </font> </p> <p> <font size="2"> <font color="#a52a2a">       一个重要的Spring事务提供的好处是它不与Q何容器绑定。定义包括JTA在内的策略,它都可以独立工作或者在一个试验环境中工作。特别是对典型的一个数据库的事务来_对于JTAq是一个非常轻量的和强大的选择。当使用本地EJB SLSB的事务时Q你同时依赖EJB容器和JTA-即你只是访问一个数据库Q即使只是用SLSBsl由CMT来声明事务。选择使用 JTA~程也需要一个J2EE环境?/font> </font> </p> <p> <font color="#a52a2a" size="2">       JTA自n和JNDI数据源来说JTA不只是包括容器依赖。对于不使用Spring的JTA驱动的Hibernate事务Q你必须使用HibernateJCAq接器或者在合适的JVM~冲层专门写Hibernate的事务代码配|JTA事务。在只访问一个数据库的情况下QSpring驱动的事务可以与一个本地定义的Hibernate的SessionFactory配合良好Q就如同与一个本地JDBC数据源相配合一栗因此当面对分布的事务需求时Q你只需要{换ؓSpring的JTA事务{略卛_?</font> </p> <p> <font size="2"> <font color="#a52a2a">       要注意一个JCAq接器需要特别的容器的部|步骤,q且昄首先得支持JCA。这比用本地资源定义和Spring驱动事务来部|一个简单的Web应用有更多的争议。而且你常帔R要企业版本的容器支持Q象WebLogic Express׃提供JCA。一个只用一个数据库的用本地资源和事务的Spring应用可以在Q何J2EE的Web容器中工作,Web容器不必支持JTA, JCA和EJBQ如QTomcat, Resin甚至最的Jetty。另外,q样一个中间层可以很Ҏ地在桌面应用或者在试套g中被重用?/font> </font> </p> <p> <font size="2"> <font color="#a52a2a">       所有考虑q的事情包括Q如果你不用EJBQ坚持用本地SessionFactoryQ用SpringHibernateTransactionManager或者JtaTransactionManagerQ你获得包括适当处理的JVM层的~存和分布事务的所有益处,而无需引vM关于容器部v的争论。经由JCAq接器的一个Hibernate的SessionFactory的JNDI注册只是在用EJB的情况中才会有明昄附加倹{?/font> </font> </p> <p> <br /> <font size="2"> <strong> <font color="#a52a2a">10. Skeletons和例?/font> </strong> </font> </p> <p> <font size="2"> <font color="#a52a2a">      配置使用Spring和HIbernate的一个J2EE的Web应用的注释和l节最好去看看在Spring Framework的例子中的“典型的Web应用”SkeletonsQ它l出了适合于JDBC ?Hibernate应用的多U数据源及事务管理的配置,仔细看一下事务拦截器的配|,它也同样向你展示了如何配|AOP拦截器?/font> </font> </p> <p> <font color="#a52a2a" size="2">      在Spring?.0 M2版中Q例子Petclinic提供了JDBC和Hibernate的DAO实现和应用配|的选择。Petclinic<br />可以作ؓ一个可工作的简单应用说明如何在一个Spring web 应用中用HibernateQ同样也包括Ҏ不同的事务策略来声明事务划分?br /></font> </p> <h2> <font color="#a52a2a" size="2">Links</font> </h2> <p> <a target="_blank"> <font color="#a52a2a" size="2">Spring Framework website</font> </a> <font size="2"> </font> </p> <p> <a target="_blank"> <font color="#a52a2a" size="2">Spring Framework documentation</font> </a> <font size="2"> </font> </p> <img src ="http://m.tkk7.com/cmd/aggbug/54308.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/cmd/" target="_blank">静夜?/a> 2006-06-21 17:17 <a href="http://m.tkk7.com/cmd/archive/2006/06/21/54308.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>液晶面板知?/title><link>http://m.tkk7.com/cmd/archive/2006/04/17/41495.html</link><dc:creator>静夜?/dc:creator><author>静夜?/author><pubDate>Mon, 17 Apr 2006 11:01:00 GMT</pubDate><guid>http://m.tkk7.com/cmd/archive/2006/04/17/41495.html</guid><wfw:comment>http://m.tkk7.com/cmd/comments/41495.html</wfw:comment><comments>http://m.tkk7.com/cmd/archive/2006/04/17/41495.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/cmd/comments/commentRss/41495.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/cmd/services/trackbacks/41495.html</trackback:ping><description><![CDATA[ <font size="2">VA型:VA型液晉板在目前的显C器产品中应用较为广泛,16.7M色彩和大可视角度是它最为明昄技术特点,目前VA型面板分ZU,一UؓMVA 型,另一UؓPVA型。其中MVA是富士通主导的一U面板类型,它的全称?Multi-domain Vertical Alignment)Q是一U多象限垂直配向技术。它是利用突出物使液晉止时q传统的直立式Q而是偏向某一个角度静止;当施加电压让液晶分子改变成水 q以让背光通过则更为快速,q样便可以大q度~短昄旉Q也因ؓH出物改变液晶分子配向,让视野角度更为宽qѝ在视角的增加上可达160度以上,反应? 间羃短至20ms以内?br />  而PVA则是三星推出的一U面板类型,它在富士康MVA面板的基上有了进一步的发展和提高,是一U图像垂直调整技 术,该技术直接改变液晶单元结构,让显C效能大q提升可以获得优于MVA的亮度输出和Ҏ度。此外在q两U类型基上又延出改进型S-PVA和P-MVA 两种面板cdQ在技术发展上更趋向上Q可视角度可?70度,响应旉被控制在20毫秒以内Q采用Overdrive加速达?ms GTGQ,而对比度可轻易超q?00:1的高水准Q三星自产品牌的大部份品都为PVA液晶面板?br />IPS型:它也是目前主要的一U液晉板类型, 由日本日立于2001q推出,液晶分子q面切换的方式来改善视角Q利用空间厚度、摩擦强度ƈ有效利用横向电场驱动的改变让液晶分子做最大的q面旋{角度? 增加视角Q在商品的制造上不须额外加补偿膜Q显C觉上Ҏ也很高。在视角的提升上可达?60度,响应旉~短?0ms以内。所以IPS型液晉板具 有可视角度大、颜色细ȝ优点Q看上去比较通透,不过响应旉较慢和对比度较难提高也是q类型面板一个比较明昄~点。IPS即第一代IPS技术,它已l? 实现了较好的可视角度。而S-IPS则ؓW二代IPS技术,它又引入了一些新的技术,以改善IPS模式在某些特定角度的灰阶逆{现象? 其LG-飞利自ȝ面板刉商也是以IPS为技术特Ҏ出的液晶面板?br />TN型:q种cd的液晉板应该算是应用于入门U和中端的面板品,最? 重要的有一点就是h格实惠、低廉,成ؓ众多厂商选用的品。在技术上Q与前两U类型的液晶面板相比在技术性能上略为逊色Q它不能表现?6.7M艳丽? 彩,q且可视角度也受C一定的限制。之所以TN型这U面板品仍然是众多厂商采用的主力还是因为由于他的输出灰接数较,液晶分子偏{速度快,致? 的响应时间容易提高,据资料显CZ些现在市Z一般在8ms响应旉以内的品大多都采用的是TN液晶面板?br /><br />在白屏情况下为纯黑色的点或者在黑屏下ؓU白色的炏V在切换至红、绿、蓝三色昄模式下此点始l在同一位置上ƈ且始lؓU黑色或U白色的炏V这U情况说明该像素的R、G、B三个子像素点均已损坏Q此cȝUCؓ坏点?br />亮点<br />  在黑屏的情况下呈现的R、G、BQ红、绿、蓝Q点叫做亮点?br />亮点的出现分ZU情况:<br />?在黑屏的情况下单U地呈现R或者G或者B色彩的点?br />黑屏下的U点<br />②在切换至红、绿、蓝三色昄模式下,只有在R或者G或者B中的一U显C模式下有白色点Q同时在另外两种模式下均有其他色点的情况Q这U情冉|在同一像素中存在两个亮炏V?br />●暗?br />在白屏的情况下出现非单纯R、G、B的色点叫做暗炏V?br />暗点的出现分ZU情况: <br />①在切换至红、绿、蓝三色昄模式下,在同一位置只有在R或者G或者B一U显C模式下有黑点的情况Q这U情况表明此像素内只有一个暗炏V?<br />②在切换至红、绿、蓝三色昄模式下,在同一位置上在R或者G或者B中的两种昄模式下都有黑点的情况Q这U情况表明此像素内有两个暗点?br />黑屏下的U点<br />②在切换至红、绿、蓝三色昄模式下,只有在R或者G或者B中的一U显C模式下有白色点Q同时在另外两种模式下均有其他色点的情况Q这U情冉|在同一像素中存在两个亮炏V?br />●暗?br />在白屏的情况下出现非单纯R、G、B的色点叫做暗炏V?br />暗点的出现分ZU情况: <br />①在切换至红、绿、蓝三色昄模式下,在同一位置只有在R或者G或者B一U显C模式下有黑点的情况Q这U情况表明此像素内只有一个暗炏V?<br />②在切换至红、绿、蓝三色昄模式下,在同一位置上在R或者G或者B中的两种昄模式下都有黑点的情况Q这U情况表明此像素内有两个暗点?/font> <img src ="http://m.tkk7.com/cmd/aggbug/41495.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/cmd/" target="_blank">静夜?/a> 2006-04-17 19:01 <a href="http://m.tkk7.com/cmd/archive/2006/04/17/41495.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SVN使用技?/title><link>http://m.tkk7.com/cmd/archive/2006/04/17/41401.html</link><dc:creator>静夜?/dc:creator><author>静夜?/author><pubDate>Sun, 16 Apr 2006 18:29:00 GMT</pubDate><guid>http://m.tkk7.com/cmd/archive/2006/04/17/41401.html</guid><wfw:comment>http://m.tkk7.com/cmd/comments/41401.html</wfw:comment><comments>http://m.tkk7.com/cmd/archive/2006/04/17/41401.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/cmd/comments/commentRss/41401.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/cmd/services/trackbacks/41401.html</trackback:ping><description><![CDATA[ <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">E序员编写程序的q程中,每个E序都会有很多不同的版本Q这需要程序员很好的管理代码,在需要的旉可以取出需要的版本Qƈ且每个版本都有一个完整的说明?/span> </font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">我们使用</span>Sub Version<span style="font-family: 宋体;">Q简U?/span>SVN<span style="font-family: 宋体;">Q作为版本管理工兗这里着重介l?/span>SVN<span style="font-family: 宋体;">作ؓ跨^台的多h协作使用Ҏ。在多个E序员管理同一D代码的q程中,版本的管理显得尤为重要,使用</span>SVN<span style="font-family: 宋体;">可以方便的进行分支、合qӞ记录下所有的版本?/span></font> </p> <font size="2"> <a name="_Toc121547261"> </a> <span> <span style="font-family: 宋体;">基本配置</span> </span> </font> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">在开始某Y件、文档的开发与撰写Ӟ首先由配|管理负责h建立</span>SVN<span style="font-family: 宋体;">仓库、用户名及其权限Qƈ通知相关人员</span>SVN<span style="font-family: 宋体;">仓库地址?/span>SVN<span style="font-family: 宋体;">仓库负责人?/span></font> </p> <font size="2"> <a name="_Toc121547262"> </a> </font> <p style="text-indent: 24pt;" class="a"> <font size="2">SVN<span style="font-family: 宋体;">仓库的负责h把工E的</span>tsvn:logminisize<span style="font-family: 宋体;">讄?/span>1<span style="font-family: 宋体;">Q以便强制注释。设|方法:在你的工E文件夹右键</span>-><span style="font-family: 宋体;">属性中Q进?/span>Subversion<span style="font-family: 宋体;">标签Q选中</span>tsvn: logminisize<span style="font-family: 宋体;">Q确保复选框</span>recursive<span style="font-family: 宋体;">选中Q然后点?/span>Set<span style="font-family: 宋体;">按钮把它的D?/span>1<span style="font-family: 宋体;">Q其意思是指提交的注释最短长度ؓ一个字。如图:</span></font> </p> <p style="margin-left: 60pt; text-indent: 24pt;" class="a"> <font size="2"> <img src="http://xyzboard.com/xyz_img/devlop/image002.jpg" border="0" height="541" width="397" /> </font> </p> <p class="MsoCaption"> <font size="2"> <span style="font-family: 宋体;">?/span> <span> <span>2</span> </span> <span>.</span> <span> <span>1</span> </span> </font> </p> <font size="2"> <a name="_Toc121547263"> </a> <span> <span style="font-family: 宋体;">软g配置</span> </span> </font> <p style="margin-left: 45pt; text-indent: -21pt;" class="a"> <font size="2"> <span style="font-family: Wingdings;"> <span>l<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        </span></span> </span> <span style="font-family: 宋体;">忽略文g</span> </font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">?/span> <span>SVN </span> <span style="font-family: 宋体;">?/span> <span>[Setting]</span> <span style="font-family: 宋体;">?/span> <span>[General]</span> <span style="font-family: 宋体;">?/span> <span style="font-family: 宋体;">Q?/span> <span style="font-family: 宋体;">讄需要忽略的文g以便忽略掉一些时的、无用的文g</span> <span style="font-family: 宋体;">Q?/span> <span style="font-family: 宋体;">常被忽略的文件有</span> <span>*.opt *.ncb *.suo *.plg *.pch *.idb *.pdb *.scc *.obj Debug Release *.o *.bin *.out *.ilk *.aps debug release *.clw *.bak</span> <span style="font-family: 宋体;">。每个程序员可以Ҏ自己的需要进行修改忽略文Ӟ上面只是使用</span>VC++<span style="font-family: 宋体;">?/span>Tornado<span style="font-family: 宋体;">~程时常用的一些忽略文件?/span><img src="http://xyzboard.com/xyz_img/devlop/image004.jpg" border="0" height="371" width="586" /></font> </p> <p class="MsoCaption"> <font size="2"> <span style="font-family: 宋体;">?/span> <span> <span>2</span> </span> <span>.</span> <span> <span>2</span> </span> </font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">以上说的忽略文g是指全局的忽略文件?/span>SVN<span style="font-family: 宋体;">q能在特定的目录中指定需要忽略的文g。忽略文件支持通配W?/span></font> </p> <p style="margin-left: 45pt; text-indent: -21pt;" class="a"> <font size="2"> <span style="font-family: Wingdings;"> <span>l<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        </span></span> </span> <span style="font-family: 宋体;">合ƈ比较工具</span> </font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">?/span>Merge Tool<span style="font-family: 宋体;">中可以选择用来合ƈ的工P强烈推荐?/span>Araxis Merge<span style="font-family: 宋体;">。在</span>[Setting]->[Diff]<span style="font-family: 宋体;">中填?/span>"C:\Program Files\Araxis\Araxis Merge v6.5\Merge.exe"<span style="font-family: 宋体;">Q在</span>[Setting]->[Merge]<span style="font-family: 宋体;">的选项中,填入</span>"C:\Program Files\Araxis\Araxis Merge v6.5\Merge.exe" %theirs %mine %merged <span style="font-family: 宋体;">Q其?/span>"C:\Program Files\Araxis\Araxis Merge v6.5\Merge.exe"<span style="font-family: 宋体;">是指合ƈ工具的\径,</span>%theirs %mine %merged<span style="font-family: 宋体;">分别?/span>..<span style="font-family: 宋体;">要合ƈCq的分支Q主qԌ及合q后的结果?/span></font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <img src="http://xyzboard.com/xyz_img/devlop/image006.jpg" border="0" height="371" width="586" /> </font> </p> <p class="MsoCaption"> <font size="2"> <span style="font-family: 宋体;">?/span> <span> <span>2</span> </span> <span>.</span> <span> <span>3</span> </span> </font> </p> <font size="2"> <a name="_Toc121547264"> </a> <span> <span style="font-family: 宋体;">仓库目录l构</span> </span> </font> <p style="text-indent: 24pt;" class="a"> <font size="2">SVN<span style="font-family: 宋体;">仓库的负责h规划好仓库的目录l构。推荐的目录l构如下图所C?/span></font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">仓库的一U目录只有两个,分别?/span>code<span style="font-family: 宋体;">?/span>doc<span style="font-family: 宋体;">。其中,</span>doc<span style="font-family: 宋体;">主要用来攄先期的文档,</span>code<span style="font-family: 宋体;">主要用来攄工程的代码,也可以包含后期的文档?/span></font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">仓库的二U目录只可以?/span>branch<span style="font-family: 宋体;">?/span>trunk<span style="font-family: 宋体;">两个目录Q分别存放主q与分支?/span>trunk<span style="font-family: 宋体;">目录下直接存攑ַE文件?/span>branch<span style="font-family: 宋体;">目录下包括一些子目录分别对应各个分支?/span></font> </p> <p style="text-align: center;" class="MsoNormal" align="center"> <font size="2"> <span> <img src="http://xyzboard.com/xyz_img/devlop/image008.jpg" border="0" height="445" width="586" /> </span> </font> </p> <p class="MsoCaption"> <font size="2"> <span style="font-family: 宋体;">?/span> <span> <span>2</span> </span> <span>.</span> <span> <span>4</span> </span> </font> </p> <font size="2"> <a name="_Toc121547265"> </a> </font> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">?/span> <span>SVN</span> <span style="font-family: 宋体;">仓库中取Z码时</span> <span style="font-family: 宋体;">Q一?/span> <span style="font-family: 宋体;">不要把整个仓库取出来</span> <span style="font-family: 宋体;">Q?/span> <span style="font-family: 宋体;">而应该只取出</span> <span>trunk</span> <span style="font-family: 宋体;">目录</span> <span style="font-family: 宋体;">Q?/span> <span style="font-family: 宋体;">或只取出</span> <span>branch</span> <span style="font-family: 宋体;">下的某个分支目录</span> <span style="font-family: 宋体;">Q比</span> <span style="font-family: 宋体;">如上图中?/span> <span>svn:\\code\branch\xw_051206</span> <span style="font-family: 宋体;">Q?/span> <span style="font-family: 宋体;">?/span> </font> </p> <font size="2"> <a name="_Toc121547266"> </a> <a name="_Toc121547267"> </a> </font> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">一个项目会有多个h共同合作开发完成。基本流E是Q?/span> </font> </p> <p style="margin-left: 45pt; text-indent: -21pt;" class="a"> <font size="2"> <span style="font-family: Wingdings;"> <span>l<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        </span></span> </span> <span style="font-family: 宋体;">各开发成员徏立自q分支Qƈ在此分支上开发;</span> </font> </p> <p style="margin-left: 45pt; text-indent: -21pt;" class="a"> <font size="2"> <span style="font-family: Wingdings;"> <span>l<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        </span></span> </span> <span style="font-family: 宋体;">各开发成员把分支合ƈCq上qŞ成较为稳定的版本Q?/span> </font> </p> <p style="margin-left: 45pt; text-indent: -21pt;" class="a"> <font size="2"> <span style="font-family: Wingdings;"> <span>l<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        </span></span> </span> <span style="font-family: 宋体;">各个成员重新从主q上建立新的分支Q在此分支上开?/span> <span>(</span> <span style="font-family: 宋体;">卛_到第一?/span> <span>)</span> </font> </p> <p style="margin-left: 45pt; text-indent: -21pt;" class="a"> <font size="2"> <span style="font-family: Wingdings;"> <span>l<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        </span></span> </span> <span style="font-family: 宋体;">循环往复,直到工程l束?/span> </font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">下面我用一个例子来说明合作开发的基本程?/span> </font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">现在</span>xb<span style="font-family: 宋体;">?/span>lzj<span style="font-family: 宋体;">两个开发h员要共同开发一个工E?/span>onlytest<span style="font-family: 宋体;">Q其q个工程的主q的</span>SVN<span style="font-family: 宋体;">仓库地址如下图?/span></font> </p> <p style="text-align: center;" class="MsoNormal" align="center"> <font size="2"> <span> <img src="http://xyzboard.com/xyz_img/devlop/image010.jpg" border="0" height="309" width="450" /> </span> </font> </p> <p class="MsoCaption"> <font size="2"> <span style="font-family: 宋体;">?/span> <span> <span>2</span> </span> <span>.</span> <span> <span>5</span> </span> </font> </p> <font size="2"> <a name="_Toc121547268"> </a> </font> <p style="text-indent: 24pt;" class="a"> <font size="2">xb<span style="font-family: 宋体;">?/span>lzj<span style="font-family: 宋体;">分别?/span>onlytest<span style="font-family: 宋体;">q个工程中徏立两个分支,分别?/span>xb _051115<span style="font-family: 宋体;">?/span>lz_051115<span style="font-family: 宋体;">?/span></font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">在这里分支命名要采用</span>[<span style="font-family: 宋体; color: rgb(51, 153, 102);">姓名~写</span><span style="color: rgb(51, 153, 102);">_6</span><span style="font-family: 宋体; color: rgb(51, 153, 102);">个数的日?/span><span style="color: rgb(51, 153, 102);">_</span><span style="font-family: 宋体; color: rgb(51, 153, 102);">后缀</span>(<span style="font-family: 宋体;">可?/span>)]<span style="font-family: 宋体;">的Ş式,比如</span>xb_051208_1<span style="font-family: 宋体;">Q?/span>xb_051212<span style="font-family: 宋体;">之类的。创建完分支后我们可以看到这个工E的目录l构如下图所C:</span></font> </p> <p style="text-align: center;" class="MsoNormal" align="center"> <font size="2"> <span> <img src="http://xyzboard.com/xyz_img/devlop/image012.jpg" border="0" height="426" width="586" /> </span> </font> </p> <p class="MsoCaption"> <font size="2"> <span style="font-family: 宋体;">?/span> <span> <span>2</span> </span> <span>.</span> <span> <span>6</span> </span> <span style="font-family: 宋体;">分支目录</span> </font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">建完之后Q?/span> xb<span style="font-family: 宋体;">?/span>lzj<span style="font-family: 宋体;">分别在本地取出对应的分支q行开发?/span></font> </p> <font size="2"> <a name="_Toc121547269"> </a> </font> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">?/span> <span style="font-family: 宋体;">E序到达一个比较稳定的阶段Q就需要把分支合ƈCq上Q下面讲qC下合q的程?/span> </font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">在本节中l箋使用上一节中所C的工程?/span>SVN<span style="font-family: 宋体;">仓库讲解?/span></font> </p> <font size="2"> <span> <span>1.2.3.1 </span> </span> <span>xb</span> <span style="font-family: 黑体;">?/span> <span>lzj</span> <span style="font-family: 黑体;">分别修改自己分支上的代码</span> </font> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">现在</span> <span style="font-family: 宋体;">Q?/span> <span style="font-family: 宋体;">d上的</span> <span>test_SVN.txt</span> <span style="font-family: 宋体;">是空文档?/span> </font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">?/span> <span>xb</span> <span style="font-family: 宋体;">?/span> <span>lzj</span> <span style="font-family: 宋体;">修改提交?/span> <span style="font-family: 宋体;">Q?/span> <span style="font-family: 宋体;">两个分支?/span> <span>test_SVN.txt</span> <span style="font-family: 宋体;">分别如下两图所C?/span> <span style="font-family: 宋体;">Q?/span> </font> </p> <p style="text-align: center;" class="MsoNormal" align="center"> <font size="2"> <span> <img src="http://xyzboard.com/xyz_img/devlop/image014.jpg" border="0" height="130" width="321" /> </span> </font> </p> <p class="MsoCaption"> <font size="2"> <span style="font-family: 宋体;">?/span> <span> <span>2</span> </span> <span>.</span> <span> <span>7</span> </span> <span> xb_051129</span> <span style="font-family: 宋体;">分支下的</span> <span>test_SVN.txt</span> </font> </p> <p style="text-align: center;" class="MsoNormal" align="center"> <font size="2"> <span> <img src="http://xyzboard.com/xyz_img/devlop/image016.jpg" border="0" height="130" width="321" /> </span> </font> </p> <p class="MsoCaption"> <font size="2"> <span style="font-family: 宋体;">?/span> <span> <span>2</span> </span> <span>.</span> <span> <span>8</span> </span> <span> lzj_051129</span> <span style="font-family: 宋体;">分支下的</span> <span>test_SVN.txt</span> </font> </p> <font size="2"> <span> <span>1.2.3.2 </span> </span> <span>xb</span> <span style="font-family: 黑体;">?/span> <span>xb_051129</span> <span style="font-family: 黑体;">分支合ƈCq?/span> </font> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span>xb</span> <span style="font-family: 宋体;">先把d</span> <span>check out</span> <span style="font-family: 宋体;">到本地。然后在d的目录上右键</span> <span style="font-family: 宋体;">选择</span>svn->merge<span style="font-family: 宋体;">Q弹出如下窗口:</span></font> </p> <p style="text-align: center;" class="MsoNormal" align="center"> <font size="2"> <span> <img src="http://xyzboard.com/xyz_img/devlop/image018.jpg" border="0" height="466" width="524" /> </span> </font> </p> <p class="MsoCaption"> <font size="2"> <span style="font-family: 宋体;">?/span> <span> <span>2</span> </span> <span>.</span> <span> <span>9</span> </span> <span style="font-family: 宋体;">合ƈ对话?/span> </font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">此对话框的含义是?/span>From<span style="font-family: 宋体;">指定的分支版本到</span>To<span style="font-family: 宋体;">指定的分支版本之间的差异合ƈCq上?/span></font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">在这里分支选的?/span>xb_051129<span style="font-family: 宋体;">。版本号的选定Ҏ是点?/span>From<span style="font-family: 宋体;">中的</span>Show Log<span style="font-family: 宋体;">Q在</span>Log<span style="font-family: 宋体;">H口中按?/span>Ctrl<span style="font-family: 宋体;">键,点击选择</span>”made a copy?span style="font-family: 宋体;">之上的那个版本,以及最上的那个版本,?/span><span style="font-family: 宋体;">?/span><span>2</span>.<span>11</span><span style="font-family: 宋体;">所C。然后点ȝ定回C图中的对话框Q会自动填写</span>From<span style="font-family: 宋体;">?/span>To<span style="font-family: 宋体;">中的</span>Revision<span style="font-family: 宋体;">受?/span></font> </p> <p style="text-indent: 21pt;" class="MsoNormal"> <font size="2"> <span> <img src="http://xyzboard.com/xyz_img/devlop/image020.jpg" border="0" height="581" width="585" /> </span> </font> </p> <p class="MsoCaption"> <font size="2"> <a name="_Ref121716988"> </a> <span> <span> <span>2</span> </span> </span> <span> <span>.</span> </span> <span> <span> <span>10</span> </span> </span> <span style="font-family: 宋体;">选择需要合q的版本</span> </font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">然后直接点击</span>merge<span style="font-family: 宋体;">q行合ƈQ你也可以通过</span>dry run<span style="font-family: 宋体;">来看是不是两者之间有差异。由于没有其它h修改dQ所以合q的很顺利,下图?/span>xb_051115<span style="font-family: 宋体;">与主q合q后的结果。合q完毕之后,?/span>xb<span style="font-family: 宋体;">对主q进行提交?/span></font> </p> <p style="text-align: center; text-indent: 24pt;" class="a" align="center"> <font size="2"> <img src="http://xyzboard.com/xyz_img/devlop/image022.jpg" border="0" height="130" width="321" /> </font> </p> <p class="MsoCaption"> <font size="2"> <span style="font-family: 宋体;">?/span> <span> <span>2</span> </span> <span>.</span> <span> <span>11</span> </span> <span style="font-family: 宋体;">合ƈ后,d上的</span> <span>test_SVN.txt</span> </font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> </font> </p> <font size="2"> <span> <span>1.2.3.3 </span> </span> <span>lzj</span> <span style="font-family: 黑体;">?/span> <span>lzj_051129</span> <span style="font-family: 黑体;">分支合ƈCqԌ解决冲突</span> </font> <p style="text-indent: 24pt;" class="a"> <font size="2">xb<span style="font-family: 宋体;">合ƈ完毕之后Q?/span>lzj<span style="font-family: 宋体;">要将他的分支合ƈCq上去,Ҏ同上。但是由?/span>xb<span style="font-family: 宋体;">已经修改q主qԌ所以生了冲突Q会弹出一个冲H对话框。双d话框中的产生冲突的文件名Q就可以调出工具Ҏ文gq行合ƈQ下图是我们?/span>merge<span style="font-family: 宋体;">工具昄的界面?/span></font> </p> <p class="MsoNormal"> <font size="2"> <span> <img src="http://xyzboard.com/xyz_img/devlop/image023.jpg" border="0" height="382" width="585" /> </span> </font> </p> <p class="MsoCaption"> <font size="2"> <span style="font-family: 宋体;">?/span> <span> <span>2</span> </span> <span>.</span> <span> <span>12</span> </span> </font> </p> <p style="margin-left: 45pt; text-indent: -21pt;" class="a"> <font size="2"> <span style="font-family: Wingdings;"> <span>l<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        </span></span> </span> <span style="font-family: 宋体;">首先比较W一个窗口与W二个窗口,把结果修改合q到W二个窗口?/span> </font> </p> <p style="margin-left: 45pt; text-indent: -21pt;" class="a"> <font size="2"> <span style="font-family: Wingdings;"> <span>l<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        </span></span> </span> <span style="font-family: 宋体;">然后保光标处于W二个窗口时Q点M图中U色圈圈所C的按钮。这样会把第二个H口的内容全部复制到W三个容口。之后保存,退出?/span> </font> </p> <p style="margin-left: 45pt; text-indent: -21pt;" class="a"> <font size="2"> <span style="font-family: Wingdings;"> <span>l<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        </span></span> </span> <span style="font-family: 宋体;">然后在工E目录上点右键,q行</span>SVN->Resolved<span style="font-family: 宋体;">。这样会删除无用的时文件?/span></font> </p> <p style="margin-left: 45pt; text-indent: -21pt;" class="a"> <font size="2"> <span style="font-family: Wingdings;"> <span>l<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        </span></span> </span> <span style="font-family: 宋体;">最后提交所作的修改Qƈd详细的注释?/span> </font> </p> <font size="2"> <a name="_Toc121547270"> </a> <a name="_Toc121547271"> </a> <span> <span style="font-family: 宋体;">中的标签</span> </span> </font> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">?/span>CVS<span style="font-family: 宋体;">不同Q?/span>SVN<span style="font-family: 宋体;">时不用专门ؓ目录d标签Q因?/span>SVN<span style="font-family: 宋体;">也对目录q行版本理?/span></font> </p> <p style="text-indent: 21pt;" class="MsoNormal"> <font size="2"> <span style="font-family: 宋体;">我们在提交时写好注释Q比如重要的版本提交时?/span> <span>051201</span> <span style="font-family: 宋体;">之类的日期作为开_Q就可以通过注释来查找比较重要的目录版本P相当?/span> <span>CVS</span> <span style="font-family: 宋体;">?/span> <span>VSS</span> <span style="font-family: 宋体;">中的标签?/span> </font> </p> <p style="text-indent: 21pt;" class="MsoNormal"> <font size="2"> <span style="font-family: 宋体;">另外Q每个工E都会有一个版本说明文Ӟ通过此文件可以查扑օ键版本?/span> </font> </p> <font size="2"> <a name="_Toc121547272"> </a> </font> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">你可以重命名、移动或删除你的文g或文件夹Q但请?/span>SVN<span style="font-family: 宋体;">q行q些操作Q否则之前的版本信息会丢失?/span></font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">使用</span>SVN<span style="font-family: 宋体;">删除、移动与重命名文件夹的方法是在文?/span>/<span style="font-family: 宋体;">文g夹上点右键进?/span>SVN<span style="font-family: 宋体;">操作Q或直接在资源浏览器中用右键拖放(会弹?/span>SVN<span style="font-family: 宋体;">选项Q?/span></font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">文g的删除、移动与重命名之前,必须保证工作目录是最新的版本Q进行这些操作之后,需要进行提交?/span> </font> </p> <font size="2"> <span> <span>1.3.3 </span> </span> <span style="font-family: 宋体;">版本的回退</span> </font> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">在代码的~写q程中,隑օ会有不尽人意的地方,你也讔R要回退到某一个版本,但是在这个过E中可能有一些文件你想保留,也有一些文件你不想保留Q这q扯到很复杂的版本理q程Q在q里l大家推荐几U方法?/span> </font> </p> <p style="margin-left: 45pt; text-indent: -21pt;" class="a"> <font size="2"> <span> <span>1.<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        </span></span> </span> <span style="font-family: 宋体;">若是你编辑了工程Q在没有提交的前提下Q你x弃这些修改,你可以直接选择</span> <span>revert</span> <span style="font-family: 宋体;">可以更新到工程的最新的版本?/span> </font> </p> <p style="margin-left: 45pt; text-indent: -21pt;" class="a"> <font size="2"> <span> <span>2.<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        </span></span> </span> <span style="font-family: 宋体;">若是你想退回到某一个版本,你就可以直接选择</span> <span>update to reversion</span> <span style="font-family: 宋体;">如图</span> <span>,</span> <span style="font-family: 宋体;">q样我们可以把我们的版本回退C选中的版本去Q这U情况下</span> <span>SVN</span> <span style="font-family: 宋体;">q没有显C出有什么冲H,q且新徏立的文g也还在,但是在这U情况下你ƈ不能直接在你回退后的版本上进行编辑,因ؓ</span> <span>SVN</span> <span style="font-family: 宋体;">的版本控制还是在最新的d上。我们需?/span> <span>update</span> <span style="font-family: 宋体;">q解军_H?/span> <span> </span> </font> </p> <p style="margin-left: 45pt; text-indent: -21pt;" class="a"> <font size="2"> <span> <span>3.<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        </span></span> </span> <span style="font-family: 宋体;">你可以直接选择</span> <span>revert changes from this revision</span> <span style="font-family: 宋体;">如图Q这L话你可以直接解决冲突q提交。不q这U方法的不是,你新建的文g都没有了Q整个工E都回退C前的版本了?/span> </font> </p> <p style="margin-left: 45pt; text-indent: -21pt;" class="a"> <font size="2"> <span> <span>4.<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        </span></span> </span> <span style="font-family: 宋体;">我推荐的一U方法是Q直?/span> <span>export</span> <span style="font-family: 宋体;">一个你需要的版本Q然后用?/span> <span>export</span> <span style="font-family: 宋体;">的版本覆盖你的最新的版本Q这样你可以不丢失你新建的文gQ同时获?/span> <span>head</span> <span style="font-family: 宋体;">?/span> <span>SVN</span> <span style="font-family: 宋体;">控制文g?/span> </font> </p> <p style="margin-left: 24pt; text-indent: 0pt;" class="a"> <font size="2"> <span> <img src="http://xyzboard.com/xyz_img/devlop/image025.jpg" border="0" height="563" width="586" /> </span> </font> </p> <p class="MsoCaption"> <font size="2"> <span style="font-family: 宋体;">?/span> <span> <span>13</span> </span> </font> </p> <p class="MsoNormal"> <font size="2"> <span> </span> </font> </p> <font size="2"> <a name="_Toc121547273"> </a> </font> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">每个工程会有很多个小模块Q当某个模块辑ֈE_的时候,你就需要提交一ơ,以免写下个模块代码的时候出C可恢复的错误?/span> </font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">每一ơ提交需要前Q需要通过</span>pclint<span style="font-family: 宋体;">查,保证是一个编译没有错误的版本。当提交比较E_的版本的时候,同时要修改你的版本号?/span></font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <a name="_Toc121547274"> </a> </font> </p> <font size="2"> <span> <span> <span>1.3.5 </span> </span> <span style="font-family: 宋体;">版本说明文g</span> </span> </font> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">版本说明文g?/span>xml<span style="font-family: 宋体;">表格Q可?/span>excel<span style="font-family: 宋体;">~辑Q它会记录下关键的版本信息?/span></font> </p> <p style="text-indent: 24pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">版本说明文g内容如下表。发布版本是指用户对外公布的版本P后文中有详细描述Q?/span>Revision<span style="font-family: 宋体;">?/span>SVN<span style="font-family: 宋体;">内部的工E文件夹的版本号。一个发布版本可能对应多?/span>Revision<span style="font-family: 宋体;">Q?/span></font> </p> <table style="border: medium none ; border-collapse: collapse;" class="MsoTableGrid" border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td style="border: 1pt solid windowtext; padding: 0pt 5.4pt; width: 65.4pt;" valign="top" width="87"> <p style="text-align: justify; text-indent: 0pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">发布版本</span> </font> </p> </td> <td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0pt 5.4pt; width: 65.4pt;" valign="top" width="87"> <p style="text-align: justify; text-indent: 0pt;" class="a"> <font size="2">Revision </font> </p> </td> <td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0pt 5.4pt; width: 312.6pt;" valign="top" width="417"> <p style="text-align: justify; text-indent: 0pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">详细说明</span> </font> </p> </td> </tr> <tr> <td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0pt 5.4pt; width: 65.4pt;" rowspan="3" valign="top" width="87"> <p style="text-align: justify; text-indent: 0pt;" class="a"> <font size="2">1,0,0,12</font> </p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 65.4pt;" valign="top" width="87"> <p style="text-align: justify; text-indent: 0pt;" class="a"> <font size="2">76</font> </p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 312.6pt;" valign="top" width="417"> <p style="text-align: justify;" class="MsoNormal"> <font size="2"> <span style="font-family: 宋体;">加入了抗q扰日志Q需长时间测?/span> </font> </p> <p style="text-align: justify;" class="MsoNormal"> <font size="2"> <span style="font-family: 宋体;">E序代码q行了重构,已经调试通过</span> </font> </p> </td> </tr> <tr> <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 65.4pt;" valign="top" width="87"> <p style="text-align: justify; text-indent: 0pt;" class="a"> <font size="2">77</font> </p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 312.6pt;" valign="top" width="417"> <p style="text-align: justify;" class="MsoNormal"> <font size="2"> <span>xxx @#$%^&</span> </font> </p> </td> </tr> <tr> <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 65.4pt;" valign="top" width="87"> <p style="text-align: justify; text-indent: 0pt;" class="a"> <font size="2">78</font> </p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 312.6pt;" valign="top" width="417"> <p style="text-align: justify; text-indent: 0pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">?/span>...</font> </p> </td> </tr> <tr> <td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0pt 5.4pt; width: 65.4pt;" valign="top" width="87"> <p style="text-align: justify; text-indent: 0pt;" class="a"> <font size="2">1,0,0,13</font> </p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 65.4pt;" valign="top" width="87"> <p style="text-align: justify; text-indent: 0pt;" class="a"> <font size="2">81</font> </p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 312.6pt;" valign="top" width="417"> <p style="text-align: justify; text-indent: 0pt;" class="a"> <font size="2"> <span style="font-family: 宋体;">试q的E_版本</span> </font> </p> </td> </tr> <tr> <td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0pt 5.4pt; width: 65.4pt;" valign="top" width="87"> <p style="text-align: justify; text-indent: 0pt;" class="a"> <font size="2">1,0,0,14</font> </p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 65.4pt;" valign="top" width="87"> <p style="text-align: justify; text-indent: 0pt;" class="a"> <font size="2">99</font> </p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 312.6pt;" valign="top" width="417"> <p style="text-align: justify; text-indent: 0pt;" class="a"> <font size="2">fix some bug<span style="font-family: 宋体;">Q没有测?/span></font> </p> </td> </tr> <tr> <td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 1pt 1pt; padding: 0pt 5.4pt; width: 65.4pt;" valign="top" width="87"> <p style="text-align: justify; text-indent: 0pt;" class="a"> <font size="2"> </font> </p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 65.4pt;" valign="top" width="87"> <p style="text-align: justify; text-indent: 0pt;" class="a"> <font size="2"> </font> </p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0pt 5.4pt; width: 312.6pt;" valign="top" width="417"> <p style="text-align: justify; text-indent: 0pt;" class="a"> <font size="2"> </font> </p> </td> </tr> </tbody> </table> <font size="2"> <span> </span> </font> <table id="attachments"> <tbody> <tr> <th> <font size="2">附g</font> </th> <th> <font size="2">大小</font> </th> </tr> <tr class="dark"> <td> <font size="2"> <a >svn版本理教程.rar</a> </font> </td> <td> <font size="2">474.51 KB</font> </td> </tr> </tbody> </table> <img src ="http://m.tkk7.com/cmd/aggbug/41401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/cmd/" target="_blank">静夜?/a> 2006-04-17 02:29 <a href="http://m.tkk7.com/cmd/archive/2006/04/17/41401.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>战神http://m.tkk7.com/cmd/archive/2006/04/15/41284.html静夜?/dc:creator>静夜?/author>Sat, 15 Apr 2006 15:15:00 GMThttp://m.tkk7.com/cmd/archive/2006/04/15/41284.htmlhttp://m.tkk7.com/cmd/comments/41284.htmlhttp://m.tkk7.com/cmd/archive/2006/04/15/41284.html#Feedback0http://m.tkk7.com/cmd/comments/commentRss/41284.htmlhttp://m.tkk7.com/cmd/services/trackbacks/41284.html我是阿瑞斯,战神阿瑞斯?br />    在被宙斯父神亲自d为战的那一刻,我真的很开心,q生首次当众向那个老头子表达了谢意?br />    战争是我所喜爱的东西,因ؓ那里有我最q鲜血与毁灭?br />     英勇的战士们一个个倒下Q脸上写满各色有的表情Q有荣誉、有悲伤、有不甘、有q静、有恐惧Q还有更多的无奈Q兵戈相接的Ȁ烈碰撞,战R的马y纵横交错, 伴随着死者的哀号和生者的呐喊Q؜杂着响彻天际的战鼓和可Q如同潮水奔腾般席卷大地。空气中弥散着重的血腥和臭Q大C燃烧着不尽的战火和军械Q直 到心满意的我挑选出最后的胜者,在无数尸堆的高高点上竖起不同色泽的旗帜Q发出同一个单词,那也是我最q战争l语QVICTORYQ胜利)Q?br />    我仔l地看,仔细地听Q仔l地闻,仔细地说Q仔l地?br />    q里的每一个细节都能让我陶醉不Ԍ虽然仅限于战场?br />    我喜Ƣn受这U毁灭的快感Q那才是最适合我的学?br />    
    在很久以前,我就发现了一个事实:武力Q才是解决问题最快的、也是最有效的办法?br />    战斗Q才是我们奥林匹斯神存在的意义?br />    在神界,q样的例子D不胜举:老头子的父亲联合十二泰坦发动叛乱,弑父赢得了世界;老头子又发动泰坦战争Q同样将自己的父亲赶下了王Qƈ把自q敌hl统锁进了塔耛_z斯地狱?br />    他们打下了天下,靠的是什么?当然是武力!
    可是Q这U传l的光耀正被现在的神灵们所扭曲。每当我燃v战火Ӟ他们都喜Ƣ耍些诡计来破坏。在几次挑v战争p|后,我的怒火l于燃到了顶炏V?br />    “一胆如鼠的!N不敢堂堂正正地在战场上决一胜负吗?同样wؓ奥林Ҏ,我真为有你们q样的兄Ҏ到蒙!”我的愤怒声线猛然升高八度Q整个奥林匹斯山都ؓ之颤抖?br />     “请闭上你的嘴巴Q^息你的怒火Q我的兄弟!你只是望着血和牺牲的发生|了Qƈ不是跟我们一栯求着至高的荣誉!看看你现在的丑态,跟下界那些好战的 野蛮人有什么不同?你如果不服就让我们请Z大的父神来评判裁冻I让奥林匹斯神q个光荣U号蒙羞的究竟是谁?”智慧女雅典娜针锋相对地反xQ作为我? 对头的她虽是一介女,但却有着难以|信的力量和雄辩滔滔的口才?br />    我一直对她很反感Q因为她代表了我的反面一切?br />    最让我无法容忍的是Q我最崇的战争游戏,却被她当成了夸耀自己阴谋诡计的舞台剧本?br />    我迟早会杀了她的,只要有机会?br />    但眼前的x良机我不得不攑ּ。因为父出CQ后面跟着老头子的跑腿赫耛_斯和伊里斯。哼Q这两个家伙在战Z不见w媄Q通风报信倒是一{一的快?br />     父神其实早知众神中的不和Q但颁布了严私斗的o后就开始装聋作哑,对众里的明争暗斗睁一只眼闭一只眼。即使他是奥林匹斯山上的最高主,两次泰坦? 战的大英雄,但战后他的衰退是明昄。现在的他在我眼里,只是个喜Ƣ搞些阴谋诡计、爱沾花惹草的好色老头子Ş了。只是摄于他的权势和力Q整个神界没有谁 敢跟老头子正面作寏V?br />    切,q不是靠着武力Q不q,只要我有那种力量的话…?br />    “阿瑞斯Q”父的愤怒声韌q种危险的想法很快消׃。因为我已经感到了现在的危险Q狡猄雅典娜已l成功地挑v了父的愤怒。我不得不跪在父面前请求他的宽恕,也不得不再听一遍他那千一律的训斥?br />    如果我有父神那种力量的话……当时这个假设虽然没有l下去,但在我的心底Q已l埋下了世袭的叛逆种子?br />    
    轰蘪烈烈的特z伊之战l束了。阿波罗的城池终于在希腊人潮水般的进M化ؓ灰烬Q作为特z伊守护的我也l于q来了与雅典守护雅典娜的决战。但U|沙场的我却惨败于ҎQ而且是两ơ?br />     我输得无话可说。虽然第一ơ她用了些卑鄙手D,w在狄俄墨得斯的w后暗算我;但第二次我却是明刀明枪地|于她手。获胜的她还得意地嘲弄我Q“我可怜的? 弟,你还不明白自׃ؓ什么会输吗Q战争不在乎对与错,只在乎胜与|Q武力是要靠智慧来I补的Q成天只知打打杀杀的你Q怎么能和我佑佐半英雄的伟大智慧? 提ƈ论呢Q?br />    我本׃善雄辩,现在wؓ败军之将更是无言以对?br />    
    蒙受败ȝ我l着最q战争Q不q我也首ơ开始寻找战Z外的乐趣。我曾迷恋过爱情Q阿弗洛狄忒的美貌一度让我心动不巌Ӏ我曾踏遍整个奥林匹斯山脉,只ؓ她寻找一束七十七朵花瓣的金色花朵。我们一时热恋如火?br />    那时的我们都忘记了一件事情:阿弗z狄忒是有夫之妻。她的丈夫就是跛火赫淮斯托斯。但热恋中的我们已经不在乎这个事实了?br />    很快Q赫淮斯托斯的报复就来了Q他我们熟睡的时候,打造了一张金|罩住了我们Q然后连同床Zh|在众神的大D,使我们Z众神的一时笑柄?br />    事后我和阿弗z狄忒都低调了许多,h是偷偷地调情,我们l于明白?br />    
    无所事事的我Q一面与ql箋谈情说爱Q一面l我的战场生zR在一个偶然的战场上,我发C一个名叫奎托斯的斯巴达战士。他武艺高强Q勇猛过人,更重要的是对着血的胜利充满了q乎疯狂的望。那U执着于胜利的疯狂Q和以前的我一怸栗?br />    我在他n上看C自己q去的媄子,从此我便开始关注这个斯巴达人,我开始关心他的成长,分n着他的胜利?br />    事实上,我是在等待着他的p|Q期待着他的堕落?br />    那才是我真正的目的——毁灭的快感?br />     一ơ与蛮族的战斗里Q他W一ơ尝Cp|的滋呟뀂无数次的胜利固焉要,但决定性的一ơ失败就能让你先前的努力全部付诸东流。他虽见败局已定Q但仍逞匹? 之勇l箋孤军奋战Q向我发出最后的hQ“战阿瑞斯啊,我愿意将自己的生命奉献与你,只求你让我获得这场战斗的胜利Q?br />    l过短暂的思考,我决定给q个斯巴达h一个机会。我在天IZ现出躯Q将众神之祖CHAOS的؜沌之刃赐与他Q契U达成了。借助器的力量,他轻易地敌人斩杀D尽。从此他成Z我最忠实的仆人?br />    我终于明白了让父和雅典娜沉q其中的东西是什么,我也开始这Un受战场外的乐,那其实是雅典娜教l我的:玩弄人心的快感?br />    
    奎托斯的是个优U的战士,地完成了我授予他的各U困难Q务?br />    但我仍不满Q我q是期待着他的堕落?br />    其实我很喜欢q个仆hQ但我更喜欢看到他的毁灭?br />    我已l对q种d游戏玩腻了。经q考虑之后我决定把q个玩具推向深渊。我故意狂性大发的他去屠杀雅典娜的庙。当他清醒后发现手上沾满d的鲜血Ӟ怸那种万念q的痛苦神情…?br />    真是太美了!我真后悔没让那些~斯丫头们看看,那才是真正的艺术Q?br />我心满意_d了奎托斯。但我仍把؜沌之刃暂时留l了他。我承认他是个出色的战士Q即使作Z个破坏的玩具Q他仍是个出色的玩具。他q对我有用?br />    玩乐到此为止了。从奎托斯的w上Q我发现自己真正渴望的东西其实一直没有变q,那就是——强大的武力。我军_直面自己内心的欲望,当年的叛逆种子终于破土而出Q既然克|洛斯做得到Q老头子也做得刎ͼ那么我战阿瑞斯Z么就做不到呢Q?br />    
    不久之后的一ơ神界宴会上Q在我的L安排下,被灌醉的阿L|终于泄露了宙斯的秘密:原来在神界的泰坦战争之后Q狡猄老头子就担心世袭的万q神力被H,于是神力封印在潘多拉魔盒的最底部Q让潘多拉借惩|h界ؓ名,其藏到了大地的沙漠深处?br />    单来_只要我得到潘多拉盒Q我的野心就能实C?br />    但是Q神是不能进入那片被诅咒的沙漠的。我惛_了以前那个忠实的仆h?br />    奎托斯ؓ了洗刯q|孽Q正被雅典娜利用着Q现在他为其效力已近十年?br />    哼哼Q我的死敌雅典娜啊,现在轮到我来计你和我从前的仆h了?br />    
    我故意袭M她的雅典城。暴怒的女神虽然限于oQ无法对我做Z么实质的报复Q但却指C她的仆人,立即前往失魂沙漠L潘多拉魔盒,她准备把那个玩具培养成弑者来对付我。真是个毫不留情的可怕女人,不愧是我的死敌?br />    但她的这U反应早在我意料之中。我藏在暗处Q默默观察着奎托斯的丑֊?br />    奎托斯不愧是先后被我和雅典娜看上的斯巴达战士Q获得众帮助的他经历了三界的考验Q顺利地完成了雅典娜交给他的dQ取得了潘多拉魔盒?br />    我冷W着在他面前现nQ虽然他得到了众的力量Q本领比以前大有长进Q但毕竟只是个hcȝ战士|了Q跟wؓ战神的我q是相差得太q。我L地将他打入地狱,毫不费力地得C梦寐以求的潘多拉盒?br />    很好Q现在我l于可以做长久以来我一直想做的事情了?br />    
    我摧毁了雅典城,q得p他们摧毁Ҏ伊城一样彻底?br />    雅典娜根本不敢和拥有盒的我xQ只能在奥林Ҏ׃咬牙旁观?br />    我嘲弄着她的胆小怯懦Q长q的怨气l于一泻而出?br />    正当我准备杀上奥林匹斯山的时候,一个矮的w媄我不备Q一道闪电魔法打落了我手中的盒。我愤怒地L偯的鼠辈,但他的面容让我一愣?br />    竟然是已l被我打入地q奎托斯!真有他的Q强烈的求生意识和复仇意志,居然使他逃过了哈q斯的追捕,从冥界逃了回来Q?br />    我在心底开怀大笑Q^静看着他抢先打开了潘多拉盒Q获得了宙斯印的神力。神力他的肉躯q速扩大,竟然和我的神w势均力敌。众赋予他的各U神力也成倍增长,现在的他已经成ؓ了可怕的弑神者。雅典娜的计划终于成功了?br />    “阿瑞斯Q我们的恩怨也该有个了l了Q”英勇的斯巴达战士怒吼着向我发出了挑战?br />    我的血液突然不听控制般地沸腾v来,那时我才发现Q这才是我一直望着的战斗?br />    q其实才是我刚才没有L他抢夺潘多拉盒的真正理由?br />    我真正想要的I竟是什么?
    力量Q?br />    权力Q?br />    爱情Q?br />    q仅仅只是纯_的战斗Q?br />    我不知道{案Q我很困惑?br />    但我用不着知道了。因为我已不在乎?br />    我现在唯一在乎的,是情Cn受眼前这场痛快淋漓的xQ?br />    来吧Q弑者,不,奎托斯!
    我战阿瑞斯Ҏ提克斯河赯Q只要你能击败我Q你是——新的战!
    
    ֣
    冥界。塔塔z斯地狱?br />    “阿瑞斯Q今后这里就是你的住所。你在这里一定会扑ֈ些志同道合的家伙们。因兛_q里的,全部都是宙斯的敌人。”冥王哈q斯一半是例行公事Q另一半则是冷嘲热讽?br />    我静静地听着Q不发一a?br />    “哼Q架子比宙斯q大呢。不q,听说那个战胜你的人类现在非常受宙斯的宠爱Q现在已l被他册ؓ新的战神了。哼哼……”哈q斯g今天心情很好Q说话也|里|嗦的?br />    “是吗?那我应该Z庆贺Q还是应该ؓ他悲哀Q”我淡E地开口?br />    “你的笑话很y脚啊,阿瑞斯。不q……”冥王的话突然一转?br />    “宙斯不需要你QL赛冬也不需要你Q但我哈q斯需要你Q阿瑞斯Q?br />    我望向冥王,他藏在暗处的怸没有M表情Q和当年W二ơ泰坦战争里他逃到奥林Ҏ׃向我们求助时的表情一怸栗?br />    没有谁能猜得C到底在想些什么?br />    我突然笑了v来,而且一发不可收拾?br />    哼哼|哈哈哈,哈哈哈哈哈哈~~?br />    整个地狱都充斥着我的狂笑?br />    
    战神?br />


]]>
成长中必知的20个故事[转]http://m.tkk7.com/cmd/archive/2006/03/23/37090.html静夜?/dc:creator>静夜?/author>Thu, 23 Mar 2006 12:06:00 GMThttp://m.tkk7.com/cmd/archive/2006/03/23/37090.htmlhttp://m.tkk7.com/cmd/comments/37090.htmlhttp://m.tkk7.com/cmd/archive/2006/03/23/37090.html#Feedback0http://m.tkk7.com/cmd/comments/commentRss/37090.htmlhttp://m.tkk7.com/cmd/services/trackbacks/37090.html 1、断不怿自己的意志,永远也做不成军?/strong> 

春秋战国时代Q一位父亲和他的儿子出征打战。父亲已做了军Q儿子还只是马前卒。又一阵号角吹响,战鼓雷鸣了,父亲庄严地托起一个箭囊,其中插着一只箭。父亲郑重对儿子_“这是家袭宝,配带w边Q力量无IP但千万不可抽出来。”?
那是一个极其精的囊Q厚牛皮打制Q镶着q幽泛光的铜边儿Q再看露出的尾。一g能认定用上等的孔雀毛制作。儿子喜上眉梢,贪婪地推想箭杆、箭头的模样Qx仿佛嗖嗖地箭声掠q,敌方的主帅应声折马而毙。?
果然Q配带宝的儿子英勇非凡Q所向披靡。当鸣金收兵的号角吹响时Q儿子再也禁不住得胜的豪气,完全背弃了父亲的叮嘱Q强烈的Ʋ望p着他呼一声就拔出宝箭Q试囄个究竟。骤焉他惊呆了。?
一只断,囊里装着一只折断的。?
我一直刳着只断打仗呢Q儿子吓Z一w冷汗,仿佛刻间失Lq房子Q蘪然意志坍塌了。?
l果不言自明Q儿子惨M乱军之中。?
拂开蒙蒙的硝烟,父亲拣v那柄断箭Q沉重地啐一口道Q“不怿自己的意志,永远也做不成军。”?
把胜败寄托在一只宝上Q多么愚蠢,而当一个h把生命的核心与把柄交l别人,又多么危险!比如把希望寄托在儿女w上Q把q福寄托在丈夫n上;把生zM障寄托在单位w上……?

温馨提示Q自己才是一只箭Q若要它坚韧Q若要它锋利Q若要它百步I杨Q百发百中,砺它,拯救它的都只能是自己。?

2、生命的价g要让昨日的沮丧o明天的梦想黯然失?/strong>Q?

在一ơ讨Z上,一位著名的演说家没讲一句开场白Q手里却高D着一?0元的钞。?
面对会议室里?00个hQ他问:“谁要这20元Q”一只只手D了v来。他接着_“我打算把这20元送给你们中的一位,但在q之前,请准许我做一件事。”他说着钞揉成一团,然后问:“谁q要Q”仍有h举v手来。?
他又_“那么,假如我这样做又会怎么样呢Q”他把钞扔到地上,又踏上一只脚Qƈ且用脚碾它。尔后他拾v钞票Q钞已变得又脏又皱。?
“现在谁q要Q”还是有ZDh来。?
“朋 友们Q你们已l上了一堂很有意义的课。无论我如何对待那张钞票Q你们还是想要它Q因为它q没贬|它依旧?0元。h生\上,我们会无数次被自q军_ 或碰到的逆境d、欺凌甚至碾得粉w碎骨。我们觉得自׃乎一文不倹{但无论发生什么,或将要发生什么,在上帝的gQ你们永q不会׃h倹{在他看来, 肮脏或洁净Q衣着齐整或不齐整Q你们依然是无h之宝。?

温馨提示Q生命的价g依赖我们的所作所为,也不C我们l交的h物,而是取决于我们本w!我们是独特的——永q不要忘记这一点! 

3、昂起头来真别看它是一条黑母牛Q牛奶一h白的?/strong> 

珍妮是个ȝ低着头的女孩,她一直觉得自己长得不够漂亮。有一天,她到饰物店去C只绿色蝴蝶结Q店M断赞她戴上蝴蝶l挺漂亮Q珍妮虽不信Q但是挺高兴Q不由昂起了_急于让大家看看,出门与h撞了一下都没在意。?
珍妮走进教室Q迎面碰上了她的老师Q“珍妮,你昂起头来真!”老师爱抚地拍拍她的肩说。?
那一天,她得C许多人的赞美。她想一定是蝴蝶l的功劳Q可往镜前一照,头上Ҏ没有蝴蝶结Q一定是出饰物店时与Z弄丢了。?
自信原本是一U美丽,而很多h却因为太在意外表而失d多快乐。?

温馨提示Q无论是贫穷q是富有Q无论是貌若天仙Q还是相貌^qI只要你昂起头来,快乐会你变得可爱——h人都喜欢的那U可爱。?

4、ؓ生命M片树叶只要心存相信,L奇迹发生Q希望虽然ؓ茫,但它永存Z?/strong> 

? 国作家欧Q亨利在他的说《最后一片叶子》里讲了个故事:病房里,一个生命垂q病h从房间里看见H外的一|Q在U风中一片片地掉落下来。病人望着眼前 的萧萧落Ӟw体也随之每冉|下,一天不如一天。她_“当树叶全部掉光Ӟ我也pM。”一位老画家得知后Q用彩笔M一片叶脉青的树叶挂在树枝 上。?
最后一片叶子始l没掉下来。只因ؓ生命中的q片l,病h竟奇q般地活了下来。?

温馨提示Qh生可以没有很多东西,却唯独不能没有希望。希望是人类生活的一w要的价倹{有希望之处Q生命就生生不息Q?

5、飞的蜘蛛信念是一U无坚不催的力量Q当你坚信自p成功Ӟ你必能成功?/strong> 

一 天,我发玎ͼ一只黑蜘蛛在后院的两檐之间l了一张很大的|。难道蜘蛛会飞?要不Q从q个檐头到那个檐_中间有一丈余宽,W一根线是怎么拉过ȝQ后来, 我发现蜘蛛走了许多弯路——从一个檐头vQ打l,墙而下Q一步一步向前爬Q小心翼|vNQ不让丝沑ֈ地面的沙x别的物体上,走过I地Q再爬上? 面的檐头Q高度差不多了,再把丝收紧,以后也是如此。?

温馨提示Q蜘蛛不会飞,但它能够把网凌结在半IZ。它是勤奋、敏 感、沉默而坚韧的昆虫Q它的网制得_y而规矩,八卦形地张开Q仿佛得到神助。这L成WQZ由想起那些沉默寡a的h和一些深藏不露的。于是,我记 住了蜘蛛不会飞翔Q但它照h|结在空中。奇qҎ执着者造成的。?

6、阴影是条纸龙h生中Q经常有无数来自外部的打击,但这些打ȝ竟会对你产生怎样的媄响,最l决定权在你手中。?

? 父用U给我做q一条长龙。长龙腹腔的I隙仅仅只能容纳几只蝗虫Q投放进去,它们都在里面MQ无一q免Q祖父说Q“蝗虫性子太躁Q除了挣扎,它们没想q用 嘴巴d破长龙,也不知道一直向前可以从另一端爬出来。因而,管它有铁钳般的嘴壳和锯齿一般的大腿Q也无济于事。?
“当父把几只同样大的青虫从龙头放q去Q然后关上龙_奇迹出现了:仅仅几分钟,青虫们׃一C龙尾爬了出来?

温馨提示Q命q一直藏匿在我们的思想里。许多hCZh生各个不同阶D|大或的阴媄Qƈ非因Z们天生的个h条g比别差多q,而是因ؓ他们没有思想要将阴媄UR咬破Q也没有耐心慢慢地找准一个方向,一步步地向前,直到眼前出现新的z天?

7、成功ƈ不像你想像的那么隑ƈ不是因ؓ事情难我们不敢做Q而是因ؓ我们不敢做事情才隄?/strong> 

1965 q_一位韩国学生到剑桥大学M心理学。在喝下午茶的时候,他常到学校的咖啡厅或茶听一些成功h士聊天。这些成功h士包括诺贝尔奖获得者,某一些领域的 学术权威和一些创造了l济话的hQ这些hq默风趣QD重若轻,把自q成功都看得非常自然和理成章。时间长了,他发玎ͼ在国内时Q他被一些成功h士欺 骗了。那些hZ让正在创业的人知难而退Q普遍把自己的创业艰辛夸大了Q也是_他们在用自己的成功经历吓唬那些还没有取得成功的h。?
? 为心理系的学生,他认为很有必要对韩国成功人士的心态加以研I?970q_他把《成功ƈ不像你想像的那么难》作为毕业论文,提交l现代经心理学的创? 人威;布雷L授。布L教授dQ大为惊喜,他认是个新发玎ͼq种现象虽然在东方甚臛_世界各地普遍存在Q但此前q没有一个h大胆地提出来q加? 研究。惊喜之余,他写信给他的剑桥校友——当时正坐在韩国政坛W一把交椅上的h——朴正熙。他在信中说Q“我不敢说这部著作对你有多大的帮助,但我敢肯? 它比你的M一个政令都能生震动。”?
后来q本书果然伴随着韩国的经v飞了。这本书鼓舞了许多hQ因Z们从一个新的角 度告诉h们,成功与“劳其筋骨,饿其体肤”、“三更灯火五更鸡”、“头悬梁Q锥”没有必然的联系。只要你Ҏ一事业感兴,长久地坚持下d会成功, 因ؓ上帝赋予你的旉和智慧够你圆满做完一件事情。后来,q位青年也获得了成功Q他成了韩国泛业汽R公司的总裁。?

温馨提示Qh世中的许多事Q只要想做,都能做到Q该克服的困难,也都能克服,用不着什么钢铁般的意志,更用不着什么技巧或谋略。只要一个hq在朴实而饶有兴地生活着Q他l究会发玎ͼ造物d世事的安排,都是水到渠成的。?

8、永q的坐票生活真是有趣Q如果你只接受最好的Q你l常会得到最好的?/strong> 

有一个hl常出差Q经怹不到对号入坐的R。可是无论长途短途,无论车上多挤Q他总能扑ֈ座位。?
? 的办法其实很单,是耐心C节R厢一节R厢找q去。这个办法听上去gq不高明Q但却很用。每ơ,他都做好了从W一节R厢走到最后一节R厢的准备Q? 可是每次他都用不着走到最后就会发现空位。他_q是因ؓ像他q样锲而不舍找座位的乘客实在不多。经常是在他落的R厢里余若干座位Q而在其他车厢的过 道和车厢接头处,居然人满为患。?
他说Q大多数乘客Lp一两节车厢拥挤的表面现象迷惑了Q不大细惛_数十ơ停靠之中,? 火R十几个R门上上下下的动中蕴藏着不少提供座位的机遇;即惛_了,他们也没有那一份寻扄耐心。眼前一方小立之地很Ҏ让大多数人满IZ一 两个座位背负着行囊挤来挤去有些Z觉得不倹{他们还担心万一找不到位,回头q个好好站着的地方也没有了。与生活中一些安于现状不思进取害怕失败的人, 永远只能滞留在没有成功的L上一Pq些不愿d扑位的乘客大多只能在上车时最初的落脚之处一直站C车。?

温馨提示Q自信、执着、富有远见、勤于实践,会让你握有一张h生之旅永q的坐票。?

9、心中的石ȝ我们d现、去创造的Q仅仅是我们心理上的障碍和思想中的石?/strong> 


从前有一户h家的菜园摆着一颗大矛_Q宽度大U有四十公分Q高度有十公分。到菜园的hQ不心׃t到那一颗大矛_Q不是跌倒就是擦伤。?


儿子问:“爸爸,那颗讨厌的石_Z么不把它挖走Q”?


爸爸q么回答Q“你说那颗石头喔Q从你爷h代,׃直放到现在了Q它的体U那么大Q不知道要挖到到什么时候,没事无聊挖石_不如走\心一点,q可以训l你的反应能力。”?


q了几年Q这颗大矛_留到下一代,当时的儿子娶了媳妇,当了爸爸。?


有一天媳妇气愤地_“爸爸,菜园那颗大石_我越看越不顺|改天请h搬走好了。”?


爸爸回答_“算了吧Q那颗大矛_很重的,可以搬走的话在我时候就搬走了,哪会让它留到现在啊?”?


媛_心底非常不是滋味Q那颗大矛_不知道让她跌倒多次了。?


有一天早上,媛_带着锄头和一桶水Q将整桶水倒在大石头的四周。?


十几分钟以后Q媳妇用锄头把大矛_四周的惔土搅松。?


媛_早有心理准备Q可能要挖一天吧Q谁都没惛_几分钟就把石头挖hQ看看大,q颗矛_没有惛_的那么大Q都是被那个巨大的外表蒙骗了。?


温馨提示Q你q下坡的想法爬山,便无从爬上山厅R如果你的世界沉闯无望,那是因ؓ你自己沉h望。改变你的世界,必先改变你自q心态。?


10、追求忘我不要把自己当做鼠,否则肯定被猫吃?/strong> 


1858q_瑞典的一个富豪h家生下了一个女ѝ然而不久,孩子染患了一U无法解释的瘫痪症,丧失了走路的能力。?


一 ơ,奛_和家Z起乘Ҏ行。船长的太太l孩子讲舚w有一只天堂鸟Q她被这只鸟的描q迷住了Q极想亲自看一看。于是保姆把孩子留在甲板上,自己L舚w? 孩子耐不住性子{待Q她要求船上的服务生立即带她ȝ天堂鸟。那服务生ƈ不知道她的腿不能走\Q而只ָ着她一道去看那只美丽的鸟。奇q发生了Q孩子因 度地渴望Q竟忘我地拉住服务生的手Q慢慢地Ch。从此,孩子的病便痊愈了。女孩子长大后,又忘我地投入到文学创作中Q最后成为第一位荣莯贝尔? 学奖的女性,也就是茜玛Q拉D芙。?


温馨提示Q忘我是走向成功的一条捷径,只有在这U环境中Qh才会越自n的束~,释放出最大的能量。?


11、乐观者与悲观者乐观者在每次危难中都看到了机会,而悲观的人在每个Z中都看到了危难?/strong> 


父亲Ʋ对一对孪生兄弟作“性格攚w”,因ؓ其中一个过分乐观,而另一个则q分悲观。一天,他买了许多色泽鲜艳的新玩L悲观孩子Q又把乐观孩子送进了一间堆满马_的车房里。?


W二天清晨,父亲看到悲观孩子正泣不成壎ͼ侉KQ“ؓ什么不玩那些玩具呢Q”?


“玩了就会坏的。”孩子仍在哭泣。?


父亲叹了口气Q走qR房,却发现那乐观孩子正兴高采烈地在马_里掏着什么。?


“告诉你Q爸爸。”那孩子得意z洋地向父亲宣称Q“我想马_堆里一定还藏着一匹小马呢Q”?


温馨提示Q乐观者与悲观者之_其差别是很有的Q乐观者看到的是a炸圈|悲观者看到的是一个窟Hѝ?


12、勇于冒险对于那些害怕危险的人,危险无处不在?/strong> 


? 一天,龙虾与寄居蟹在深中盔RQ寄居蟹看见龙虾正把自己的硬壌掉,只露出娇嫩的w躯。寄居蟹非常紧张地说Q“龙虾,你怎可以把唯一保护自己w躯的硬? 也放弃呢Q难道你不怕有大鱼一口把你吃掉吗Q以你现在的情况来看Q连急流也会把你冲到岩石去,到时你不L怪呢Q”?


龙虾气定闲地回{:“谢谢你的关心,但是你不了解Q我们龙虾每ơ成长,都必d脱掉旧壳Q才能生长出更坚固的外壳Q现在面对的危险Q只是ؓ了将来发展得更好而作出准备。”?


寄居蟹细心思量一下,自己整天只找可以避居的地方,而没有想q如何o自己成长得更强壮Q整天只zd别h的护荫之下,难怪永q都限制自己的发展。?


温馨提示Q每个h都有一定的安全区,你想跨越自己目前的成,请不要划地自限,勇于接受挑战充实自我Q你一定会发展得比惛_中更好。?

13、再试一ơ什么东西比矛_q硬Q或比水qYQ然而Y水却IK了石Q坚持不懈而已?/strong> 


? 个年Mhd软公司应聘,而该公司q没有刊登过招聘q告。见ȝ理疑惑不解,q轻人用不太娴熟的英语解释说自己是碰巧\q这里,pN然进来了。ȝ理感? 很新鲜,破例让他一试。面试的l果Zh意料Q年Mh表现p糕。他Ҏȝ理的解释是事先没有准备,ȝ理以Z不过是找个托词下台阶Q就随口应道Q“等你准 备好了再来试吧”。?


一周后Q年Mh再次走进微Y公司的大门,q次他依然没有成功。但比vW一ơ,他的表现要好得多。而ȝ理给他的回答仍然同上ơ一P“等你准备好了再来试。”就q样Q这个青q先?ơ踏q微软公司的大门Q最l被公司录用Q成为公司的重点培养对象。?


? 馨提C:也许Q我们的人生旅途上沼泽遍布Q荆丛生;也许我们q求的风景L山重水复Q不见柳暗花明;也许Q我们前行的步L沉重、蹒跚;也许Q我们需 要在黑暗中摸索很长时_才能扑֯到光明;也许Q我们虔诚的信念会被世俗的尘雄l,而不能自q;也许Q我们高늚灵魂暂时在现实中找不到寄攄净 土……那么,我们Z么不可以以勇敢者的气魄Q坚定而自信地对自p一声“再试一ơ!”?


再试一ơ,你就有可能达到成功的彼岸Q?


14、天道酬勤没有h能只依靠天分成功。上帝给予了天分Q勤奋将天分变ؓ天才?/strong> 


? 国藩是中国历史上最有媄响的人物之一Q然他小时候的天赋却不高。有一天在家读书,对一文章重复不知道多少遍了Q还在朗读,因ؓQ他q没有背下来。这时? 他家来了一个贼Q潜伏在他的屋檐下,希望{读书h睡觉之后捞点好处。可是等啊等Q就是不见他睡觉Q还是翻来复d读那文章。贼人大怒,跛_来说Q“这U? 水^M么书Q”然后将那文章背诵一遍,扬长而去Q?


gh是很聪明Q至比曑օ生要聪明Q但是他只能成ؓ|而曾先生却成为毛泽东d都钦佩的人:“近代最有大本夫源的人。”?


“勤 能补拙是良训Q一分辛苦一分才。”那贼的记忆力真好,听过几遍的文章都能背下来Q而且很勇敢,见别Z睡觉居然可以跛_来“大怒”,教训曑օ生之后,q要 背书Q扬长而去。但是遗憄是,他名不经传,曑օ生后来启用了一大批人才Q按说这位贼Z曑օ生有一面之交,大可L展一二,可惜Q他的天赋没有加上勤 奋,变得不知所l。?


温馨提示Q伟大的成功和辛勤的力_是成正比的,有一分劳动就有一分收P日积月篏Q从到多,奇迹可以创造出来。?


15、好学不倦只有一个洞I的老鼠很快被捉?/strong> 


在一个漆黑的晚上Q老鼠首领带领着老鼠出外觅食Q在一家h的厨房内Q垃圾桶之中有很多剩余的饭菜Q对于老鼠来说Q就好像人类发现了宝藏。?


? 当一大群老鼠在垃圾桶及附q范围大挖一之际,H然传来了一阵o它们肝胆p的声韻I那就是一头大q的叫声。它们震惊之余,更各自四处逃命Q但大花猫绝 不留情,不断I不舍Q终于有两只老鼠走避不及Q被大花猫捉刎ͼ正要向它们吞噬之际,H然传来一q串凶恶的狗吠声Qo大花猫手x措,狼狈逃命。?


大花猫走后,老鼠首领施施然从垃圾桶后面走出来_“我早就对你们说Q多学一U语a有利无害Q这ơ我因而救了你们一命。”?


温馨提示Q“多一门技艺,多一条\。”不断学习实在是成功人士的终w承诺。?


16、居安思危z水未到先筑堤,豺狼未来先磨刀?/strong> 


一 只野狼卧在草上勤奋地牙Q狐狸看CQ就对它_“天气这么好Q大家在休息׃Q你也加入我们队伍中吧!”野狼没有说话,l箋牙Q把它的牙ɼ得又尖 又利。狐狸奇怪地问道Q“森林这么静Q猎人和猎狗已经回家了,老虎也不在近处徘徊,又没有Q何危险,你何必那么用劲磨牙呢Q”野狼停下来回答_“我牙 q不是ؓ了娱乐,你想惻I如果有一天我被猎人或老虎q逐,到那Ӟ我想牙也来不及了。而^时我把牙磨好,到那时就可以保护自己了。”?


温馨提示Q做事应该未雨绸~,居安思危Q这样在危险H然降Ӟ才不至于手忙脚ؕ。“书到用时方恨少”,q_若不充实学问Q时抱佛脚是来不及的。也有h抱怨没有机会,然而当升迁Z来Ӟ再叹自己qx没有U蓄_的学识与能力Q以致不能胜任,也只好后悔莫及。?

17、困境即是赐予一个障,是一个新的已知条Ӟ只要愿意QQ何一个障,都会成ؓ一个超自我的契机?/strong> 


有一天,素有林之王之称的狮子,来到了天面前:“我很感谢你赐给我如此雄壮威武的体格、如此强大无比的力气Q让我有_的能力统治这整񔋂林。”?


天神听了Q微W地问:“但是这不是你今天来找我的目的吧Q看h你似乎ؓ了某事而困扰呢Q”?


狮子轻轻g一壎ͼ_“天真是了解我啊!我今天来的确是有事相求。因为尽我的能力再好,但是每天鸡鸣的时候,我L会被鸡鸣声给吓醒。神啊!求您,再赐l我一个力量,让我不再被鸡鸣声l吓醒吧Q”?


天神W道Q“你L大象吧,它会l你一个满意的{复的。”?


狮子兴匆匆地跑到湖边扑֤象,q没见到大象Q就听到大象所发出的“砰砰”响声。?


狮子加速地跑向大象Q却看到大象正气呼呼地直。?


狮子问大象:“你q嘛发这么大的脾气?”?


大象拼命摇晃着大xQ吼着Q“有只讨厌的蚊子,L钻进我的x里,x都快痒死了。”?


狮子d了大象,心里暗自想着Q“原来体型这么巨大的大象Q还会怕那么瘦的蚊子Q那我还有什么好抱怨呢Q毕竟鸡鸣也不过一天一ơ,而蚊子却是无时无d骚扰着大象。这h来,我可比他q运多了。”?


狮子一边走Q一边回头看着仍在的大象,心想Q“天要我来看看大象的情况,应该是惛_诉我Q谁都会遇上ȝ事,而它q无法帮助所有h。既然如此,那我只好靠自׃Q反正以后只要鸡鸣时Q我当做鸡是在提醒我该起床了,如此一惻I鸡鸣声对我还是有益处呢Q”?


温馨提示Q在人生的\上,无论我们走得多么利Q但只要E微遇上一些不的事,׃习惯性地抱怨老天亏待我们Q进而祈求老天赐给我们更多的力量,帮助我们度过隑օ。但实际上,老天是最公^的,像它对狮子和大象一P每个困境都有其存在的正面价倹{?


18、永q的一N对困难,许多人戴了放大镜Q但和困难拼搏一番,你会觉得Q困难不q如此?/strong> 


那天的风雪真_外面像是有无数发疯的怪兽在呼啸厮打。雪恶狠狠地L袭击的对象,风呜咽着四处搜烦。?


大家都在喊冷Q读书的心思似乎已被冻住了。一屋的声。?


dU红的欧阌师挤进教室Ӟ{待了许久的风席卯入Q墙壁上的《中学生守则》一鼓一,开玩笑似的卷向IZQ又一个跟头栽了下来。?


往日很温和的欧阌师一反常态:满脸的严肃庄重甚臛_P一如室外的天气。?


乱哄哄的教室静了下来Q我们惊异地望着Ƨ阳老师。?


“请同学们穿上胶鞋,我们到操Z厅R”?


几十双眼睛在问。?


“因为我们要在操Z立正五分钟。”?


即ɋƧ阳老师下了“不上这堂课Q永q别上我的课”的恐吓之词Q还是有几个娇滴滴的女生和几个很横的L没有出教室。?


操场在学校的东北角,北边是空L菜园Q再北是一口大塘。?


那天Q操场、菜园和水塘被雪q成了一个整体。?


矮了许多的篮球架被雪团打得“啪啪”作响,卷地而v的雪_雪团呛得h睁不开眼张不开口。脸上像有无数把l窄的刀在拉在划Q厚实的衣服像铁块冰块,脚像是踩在带冰碴的水里。?


我们挤在教室的屋檐下Q不肯迈向操场半步。?


Ƨ阳老师没有说什么,面对我们站定Q脱下羽l衣Q线衣脱C半,风雪帮他完成了另一半。“在操场上去Q站好!”欧阌师脸色苍白Q一字一地Ҏ们说。?


谁也没有吭声Q我们老老实实地到操场排好了三列U队。?


瘦削的欧阌师只穿一件白衬褂Q衬褂紧裹着的他更显单薄。?


后来Q我们规规矩矩地在操场站了五分多钟。?


在教室时Q同学们都以己敌不过那场风雪Q事实上Q叫他们站半个小Ӟ他们得住,叫他们只I一件衬衫,他们也顶得住。?


温馨提示Q正如生命中的许多伤痛一P其实q不如自己想像的那么严重。如果不把它当回事,它是不会很痛的。你觉得痛,那是因ؓ你自以ؓ伤口在痛Q害怕伤口的痛。?


19、大里的船在大上航行的船没有不带伤的?/strong> 


英国力_德保险公司曾从拍卖市Z下一艘船Q这艘船1894q下_在大西洋上曾138ơ遭遇冰山,116ơ触C,13ơv火,207ơ被风暴扭断桅杆Q然而它从没有沉没过。?


力_德保险公司基于它不可思议的经历及在保Ҏ面给带来的可观收益,最后决定把它从荷兰买回来捐l国家。现在这艘船停泊在英国萨u港的国家船舶博物馆里。?


不过Qɘq艘船名扬天下的却是一名来此观光的律师。当Ӟ他刚打输了一场官司,委托Z于不久前自杀了。尽这不是他的W一ơ失败辩护,也不是他遇到的第一例自杀事gQ然而,每当遇到q样的事情,他L一U负|感。他不知该怎样安慰q些在生意场上遭受了不幸的h。?


当他在萨伦船舶博物馆看到q艘ҎQ忽然有一U想法,Z么不让他们来参观参观q艘船呢Q于是,他就把这艘船的历史抄下来和这艘船的照片一h在他的律师事务所里,每当商界的委托h请他辩护Q无赢,他都他们ȝ看这艘船。?


它我们知道Q在大v上航行的Ҏ有不带伤的。?


温馨提示Q虽然屡遭挫折,却能够坚强地百折不挠地挺住,q就是成功的U密。?


20、驴的哲学h生必Lq逆流才能走向更高的层ơ,最重要的是永远看得赯己?/strong> 


有一天某个农夫的一头驴子,不小心掉q一口枯井里Q农夫绞脑汁想办法救出驴子Q但几个时q去了,驴子q在井里痛苦地哀嚎着。?


最后,q位农夫军_攑ּQ他惌头驴子年U大了,不值得大费周章L它救出来Q不q无论如何,q口井还是得填v来。于是农夫便h左邻双帮忙一起将井中的驴子埋了,以免除它的痛苦。?


农夫的邻居们人手一把铲子,开始将泥土铲进枯井中。当q头驴子了解到自q处境Ӟ刚开始哭得很凄惨。但Zh意料的是Q一会儿之后q头驴子安静下来了。农夫好奇地探头往井底一看,出现在眼前的景象令他大吃一惊: 


当铲q井里的泥土落在驴子的背部时Q驴子的反应令hU奇──它将泥土抖落在一旁,然后站到铲进的惔土堆上面Q?


pP驴子大安倒在它n上的泥土全数抖落在井底,然后再站上去。很快地Q这只驴子便得意C升到井口Q然后在众h惊讶的表情中快步地跑开了! 


温馨提示Q就如驴子的情况Q在生命的旅E中Q有时候我们难免会陷入“枯井”里Q会被各式各L“惔沙”們ր在我们w上Q而想要从q些“枯井”脱困的U诀是Q将“惔沙”抖落掉Q然后站C面去Q?/font>

]]>
E序员每天该做的?http://m.tkk7.com/cmd/archive/2006/03/06/33902.html静夜?/dc:creator>静夜?/author>Mon, 06 Mar 2006 11:19:00 GMThttp://m.tkk7.com/cmd/archive/2006/03/06/33902.htmlhttp://m.tkk7.com/cmd/comments/33902.htmlhttp://m.tkk7.com/cmd/archive/2006/03/06/33902.html#Feedback0http://m.tkk7.com/cmd/comments/commentRss/33902.htmlhttp://m.tkk7.com/cmd/services/trackbacks/33902.htmlE序员每天该做的?nbsp;
1、ȝ自己一天Q务的完成情况 
最好的方式是写工作日志Q把自己今天完成了什么事情,遇见了什么问题都记录下来Q日后翻看好处多?nbsp;

2、考虑自己明天应该做的主要工作 
把明天要做的事情列出来,q按照优先排列Q第二天应该把自己效率最高的旉分配l最重要的工?nbsp;

3、考虑自己一天工作中p的地方,q想出避免下一ơ再犯的Ҏ 
出错不要紧,最重要的是不要重复犯相同的错误Q那是愚?nbsp;

4、考虑自己一天工作完成的质量和效率能否还能提?nbsp;
一天只提高1%Q?65天你的效率就能提高多倍你知道吗? (1+0.01)^365 = 37 ?nbsp;

5、看一个有用的新闻|站或读一张有用的报纸Q了解业界动?nbsp;
闭门造R是不行的Q了解一下别人都在做什么,对自p带来很多启示 

6、记住一位同事的名字及其特点 
你认识公司的所有同事吗Q你了解他们吗? 

7、清理自q代码 
今天完成的代码,把中间的调试信息Q测试代码清理掉Q按照编码风格整理好Q注释都写好了吗Q?nbsp;

8、清理自q桌面 
当日事当日毕Q保持清z干劲的桌面才能让你工作时不分心Q程序员特别要把电脑的桌面清理干净 

E序员每周该做的?nbsp;
1、向你的老板汇报一ơ工?nbsp;
让你的老板知道你在做什么,q很重要。可以口头、书面、邮Ӟ看你老板的工作方式而定 

2、进行一ơ自我ȝQ非正式Q?nbsp;
q周之内自己表现得怎么P该加分还是扣分? 

3、制定下周计?nbsp;
把下周要做的事情列出来,一栯分清楚优先 

4、整理自q文g夏V书柜和电脑文g 
把桌面以外的地方也要清理q净Q电脑的文g夹,收到的邮Ӟ把过时的垃圾全部清理?nbsp;

5、与一个非公司的朋友沟?nbsp;
它山之石Q可以攻?nbsp;

6、看一本杂?nbsp;
找一本适合自己的专业杂?nbsp;

7、纠正自己或同事一个细节上的不正确做法 
《细节决定成败》看q了吗?没看q强烈徏议先看看 

E序员每月该做的?nbsp;
1、至和一个同事一起吃饭或喝茶 
不光了解自己工作伙伴的工作,q要了解他们的生z?nbsp;

2、自我考核一?nbsp;
相对正式地考核自己一下,你对得vq个月的工资吗? 

3、对你的同事考核一?nbsp;
你的同事表现怎么P哪些人值得学习Q哪些h需要帮助? 

3、制定下月的计划Q确定下月的工作重点 

4、ȝ自己工作质量改进状况 
自己的质量提高了多少Q?nbsp;

5、有针对性地对一工作指标做深入地分析ƈ得出改进的方?nbsp;
可以是对自己的,也可以是对公司的Q一定要深入地分析后拿出自己的观Ҏ。要惛_老板面前说得上话Q做的成事,工作上功夫要做?nbsp;

6、与老板沟通一?nbsp;
最好是面对面地沟通,好好表现一下自己,虚心听取老板的意见,更重要的是要了解老板当前兛_的重?nbsp;

E序员每q该做的?nbsp;
1、年lȝ 
每个公司都会做的事情Q但你真正认真地ȝq自己吗Q?nbsp;

2、兑现给自己、给家h的承?nbsp;
l老婆、儿子的新年C物C没有Q给自己的呢Q?nbsp;

3、下q度工作规划 
好好x自己明年的发展目标,争取升职/加薪、蟩槽还是自己出来干Q?nbsp;

4、掌握一Ҏ技?nbsp;
臛_是一,作ؓE序员一q要是一Ҏ技术都学不到手Q那׃定会被淘汰?nbsp;
掌握可不是看本书p的,要真正懂得应用,最好你能够写一教E发表到你的blog 

5、推ZU新产品 
可以是一个真正的产品Q也可以只是一个类库,只要是你创造的东西pQ让别h使用它,也ؓ世界作点贡献。当然如果真的很有h|收点注册费也是应该的 

6、与父母团聚一?nbsp;
常回家看看,常回家看?


]]>曝光模式http://m.tkk7.com/cmd/archive/2006/03/06/33826.html静夜?/dc:creator>静夜?/author>Mon, 06 Mar 2006 04:19:00 GMThttp://m.tkk7.com/cmd/archive/2006/03/06/33826.htmlhttp://m.tkk7.com/cmd/comments/33826.htmlhttp://m.tkk7.com/cmd/archive/2006/03/06/33826.html#Feedback0http://m.tkk7.com/cmd/comments/commentRss/33826.htmlhttp://m.tkk7.com/cmd/services/trackbacks/33826.html曝光英文名称为ExposureQ?strong>曝光模式卌机采用自然光源的模式,通常分ؓ多种Q包括:快门优先、光圈优先、手动曝光、AE锁等模式
。照片的好坏与曝光量有关Q也是说应该通多的光线使CCD能够得到清晰的图像。曝光量与通光旉Q快门速度军_Q,通光面积Q光圈大决定)有关?/font>

快门和光圈优先:

   Z得到正确的曝光量Q就需要正的快门与光圈的l合。快门快Ӟ光圈p大些Q快门慢Ӟ光圈p些。快门优先是指由机器自动光pȝ计算出暴光量? |然后Ҏ你选定的快门速度自动军_用多大的光圈。光圈优先是指由机器自动光pȝ计算出暴光量的|然后Ҏ你选定的光圈大自动决定用多少的快门? 拍摄的时候,用户应该l合实际环境把曝光与快门两者调节^衡,相得益嘪?/font>

    光圈大Q则单位旉内通过的光U越多,反之则越。光圈的一般表C方法ؓ字母“F+数值”,例如F5.6、F4{等。这里需要注意的是数D,表示? 圈越大,比如F4p比F5.6的光圈大Qƈ且两个相ȝ光圈g间相差两倍,也就是说F4比F5.6所通过的光U要大两倍。相Ҏ说快门的定义很? 了,也就是允许光通过光圈的时_表示的方式就是数|例如1/30U?/60U等Q同样两个相d门之间也相差两?/font>

    光圈和快门的l合Ş成了曝光量,在曝光量一定的情况下,q个l合不是惟一的。例如当前测出正常的曝光l合为F5.6?/30U,如果光圈增大一U也 是F4Q那么此时的快门值将变ؓ1/60Q这Ll合同样也能辑ֈ正常的曝光量。不同的l合虽然可以辑ֈ相同的曝光量Q但是所拍摄出来的图片效果是不相 同的?/font>

   快门优先是在手动定义快门的情况下通过相机光而获取光圈倹{D例说明,快门优先多用于拍摄运动的物体上,特别是在体育q动拍摄中最常用。很多朋友在拍摄 q动物体时发玎ͼ往往拍摄出来的主体是模糊的,q多半就是因为快门的速度不够快。在q种情况下你可以使用快门优先模式Q大概确定一个快门|然后q行? 摄。因为快门快了,q光量可能减,色彩偏EQ这需要增加曝光来加强囄亮度。物体的q行一般都是有规律的,那么快门的数g可以大概估计Q例如拍摄行 人,快门速度只需?/125U就差不多了Q而拍摄下落的水滴则需?/1000U?/font>

手动曝光模式Q?/strong>

    手控曝光模式每次拍摄旉需手动完成光圈和快门速度的调节,q样的好处是方便摄媄师在刉不同的囄效果。如需要运动轨q的囄Q可以加长曝光时_把快 门加快,曝光增大Q如需要制造暗淡的效果Q快门要加快Q曝光要减少。虽然这L自主性很高,但是很不方便Q对于抓拍瞬息即逝的景象Q时间更不允许?/font>

AE模式Q?/strong>

    AE全称为Auto ExposureQ即自动曝光。模式大U可分ؓ光圈优先AE式,快门速度优先AE式,E式AE式,闪光AE式和深度优先AE式。光圈优先AE式是由拍摄? Zؓ选择拍摄时的光圈大小Q由相机Ҏ景物亮度、CCD感光度以及h为选择的光圈等信息自动选择合适曝光所要求的快门时间的自动曝光模式Q也卛_圈手动? 快门旉自动的曝光方式。这U曝光方式主要用在需优先考虑景深的拍摄场合,如拍摄风景、肖像或微距摄媄{?/font>

多点光Q?/strong>

    多点光是通过Ҏ物不同位|的亮度Q通过闪光灯补偿等办法Q达到最佳的摄媄效果Q特别适合拍摄别光物体。首先,用户要对景物背景Q一般ؓ光源物体q行? 光,然后q行AE锁定Q第二步是对背光景物q行光Q大部分的专业或准专业相机都会自动分析,q用闪光灯ؓ背光物体q行补光?/font>



]]>
վ֩ģ壺 ޹Ůֱһ| һһ| ޾Ʒþþþ| Ʒ鶹ѹۿ| ޳˶߹ۿ| ˳Ƶ߹ۿվ | 91Ѳˬ˿| ޾ƷƵ߹ۿ| 91Ƶ| պƷһ | avһվ| ѹۿӰ| AV뾫ƷˮţӰ| þùѹۿƷ3| ۺɫ| ھƷƵ| ŮƵվ| ߹ۿ| þ91ѹۿ| fuli߹ۿ| һȫëƬ| ĻƵѹۿ| պƷ˳߹ۿ| רAVվ| ŷ| AV뾫ƷһٶӰԺ| hƵ߹ۿվ| avһ| Ʒһ߹ۿ | ҹƬ69| ޹Ʒһڶҳ| ɫ߳Ƶ| avպƷþþþþa| ߹ۿҹһ| ޵һվƵ| Ʒ޾Ʒˬˬ| þAV鶹| ƶ߹ۿ| þþ| 츾AV| av뾫Ʒվ|