甜咖啡

          我的IT空間

          一般屬性映射

          <?xml version="1.0"?>
          <!DOCTYPE hibernate-mapping PUBLIC
                  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                  "

          <!--
           package屬性,表示當前配置中所寫的類名如果沒有包名,則默認是這個包中的。
           -->
          <hibernate-mapping package="cn.rose.b_hbm">

           <!-- <class>元素表示哪個類與對應哪個表,一個class元素代表一個類的映射。
            name屬性,類的全限定名(帶包名)。
            table屬性,對應的表名,這個屬性可以不寫,代表表名和對象的簡單名稱是一樣的。
             -->
           <class name="User" table="itcast_user">
            <!-- 一、主鍵映射  -->
            <id name="id" type="int">
                      <generator class="native"/>
            </id>
            <!-- 二、一般屬性映射(值類型,在數據庫中一個列可以存放的屬性,例:int, varchar, date) -->
            <!--
             使用property元素映射值類型的屬性。
             name屬性:對象中的屬性名,必須要有。
             column屬性:對應的表中的列名,可以沒有,默認為屬性名。
             type屬性:指定的是數據類型,有兩種指定的方式:
                1,指定hibernate類型,例:string, int
                2,指定Java類型,例:java.lang.String, java.lang.Integer
             length屬性:指定對應的表中的列的長度限制,可以不寫。
                   在類型為string,text等時,指定length有效;
                   在類型為int,long等時,指定length無效。
             -->
            <property name="name" column="name" type="string" length="32" />
            
            <property name="gender" type="int" />
            <property name="birthday" type="date"  />
            <property name="photo" type="binary" length="512000" />
            <!-- 指定了length=5000,則生成的數據庫表中的列的text類型會至少能存5000個字符 -->
            <property name="resume" type="text" length="5000" />
            
            <!-- 三、集合映射(數組、List、Set、Map) -->
            <!-- 四、關聯關系映射(一對多,一對一,多對一、繼承) -->
           </class>

          </hibernate-mapping>

          關于集合的映射

           

           

          <hibernate-mapping package="cn.rose.d_hbm_collection" >

           <class name="User" table="itcast_user">
            <id name="id">
             <generator class="native"></generator>
            </id>
            <property name="name"></property>
            
            <!-- Set集合映射(addressSet屬性) -->
            <set name="addressSet" table="rose_user_addressSet">
             <key column="userId"></key>
             <element column="address" type="string" length="128"></element>
            </set>
            
            <!-- List集合映射(addressList屬性) -->
            <list name="addressList" table="rose_user_addressList">
             <key column="userId"></key>
             <list-index column="index_"></list-index>
             <element column="address" type="string" length="128"></element>
            </list>
            
            <!-- Bag集合映射(addressBag屬性) -->
            <bag name="addressBag" table="rose_user_addressBag">
             <key column="userId"></key>
             <element column="address" type="string" length="128"></element>
            </bag>  
            
           </class>

          </hibernate-mapping>

           

           

          聯合主鍵映射

          <hibernate-mapping package="cn.rose.c_hbm_id2" >

           <class name="User" table="itcast_user" mutable="true" dynamic-insert="true" dynamic-update="true">
            
            <!-- 一、聯合主鍵映射  -->
            <!--
            <composite-id>
             <key-property name="firstName" column="firstName" type="string" length="32"></key-property>
             <key-property name="lastName" column="lastName" type="string" length="32"></key-property>
            </composite-id>
             -->
            <composite-id name="name" class="Name">
             <key-property name="firstName" column="firstName" type="string" length="32"></key-property>
             <key-property name="lastName" column="lastName" type="string" length="32"></key-property>
            </composite-id>
            
            <property name="birthday" type="date"></property>
           </class>

          </hibernate-mapping>
          posted @ 2011-03-26 23:33 甜咖啡 閱讀(608) | 評論 (0)編輯 收藏

          以教師表為例,教師表中還有個Name類嵌套,但是這是如果想把Name表中的兩個屬性也加在Teacher表中,這時就需要用到組建關聯。

          package cn.itcast.hibernate.domain;

          import java.util.Set;

          public class Teacher {

          private int id;
          private Name name;
          private Set<Student> students;
          public int getId() {
             return id;
          }
          public void setId(int id) {
             this.id = id;
          }
          public String getName() {
             return name;
          }
          public void setName(String name) {
             this.name = name;
          }
          public Set<Student> getStudents() {
             return students;
          }
          public void setStudents(Set<Student> students) {
             this.students = students;
          }


          }

          /**************************************************************************/

          Name.java

          package cn.itcast.hibernate.domain;

          public class Name {

          private String firstName;
          private String lastName;
          public String getFirstName() {
             return firstName;
          }
          public void setFirstName(String firstName) {
             this.firstName = firstName;
          }
          public String getLastName() {
             return lastName;
          }
          public void setLastName(String lastName) {
             this.lastName = lastName;
          }


          }

          /*******************************************************************************/

          這時需要在Teacher.hbm.xml映射文件里做如下配置:

          <?xml version="1.0"?>
          <!DOCTYPE hibernate-mapping PUBLIC
          "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          " <hibernate-mapping package="cn.itcast.hibernate.domain">

          <class name="Teacher">
            
             <id name="id" column="teacher_id">
              <generator class="native"/>
             </id>
              
             <!--<property name="name" column="teacher_name"/>
             -->
             <component name="name" class="Name">
              <property name="firstName" column="first_name"></property>
              <property name="lastName" column="last_name"></property>
             </component>


             <set name="students" table="teacher_student">
              <key column="teacher_id"></key>
              <many-to-many class="Student" column="student_id"></many-to-many>
             </set>

            
          </class>

          </hibernate-mapping>

          /******************************************************************************/

          這樣就會在一個表里:

          posted @ 2011-03-26 23:33 甜咖啡 閱讀(316) | 評論 (0)編輯 收藏
          Hibernate源代碼包簡要介紹

          net.sf.hibernate.*

          該包的類基本上都是接口類和異常類

          net.sf.hibernate.cache.*

          JCS的實現類

          net.sf.hibernate.cfg.*

          配置文件讀取類

          net.sf.hibernate.collection.*

          Hibernate集合接口實現類,例如List,Set,Bag等等,Hibernate之所以要自行編寫集合接口實現類是為了支持lazy loading

          net.sf.hibernate.connection.*

          幾個數據庫連接池的Provider

          net.sf.hibernate.dialect.*

          支持多種數據庫特性,每個Dialect實現類代表一種數據庫,描述了該數據庫支持的數據類型和其它特點,例如是否有AutoIncrement,是否有Sequence,是否有分頁sql等等

          net.sf.hibernate.eg.*

          Hibernate文檔中用到的例子

          net.sf.hibernate.engine.*

          這個包的類作用比較散

          net.sf.hibernate.expression.*

          HQL支持的表達式

          net.sf.hibernate.hq.*

          HQL實現

          net.sf.hibernate.id.*

          ID生成器

          net.sf.hibernate.impl.*

          最核心的包,一些重要接口的實現類,如果Session,SessionFactory,Query等

          net.sf.hibernate.jca.*

          JCA支持,把Session包裝為支持JCA的接口實現類

          net.sf.hibernate.jmx.*

          我不懂JMX,只知道JMX是用來編寫App Server的管理程序的,大概是JMX部分接口的實現,使得App Server可以通過JMX接口管理Hibernate

          net.sf.hibernate.loader.*

          也是很核心的包,主要是生成sql語句的

          net.sf.hibernate.lob.*

          Blob和Clob支持

          net.sf.hibernate.mapping.*

          hbm文件的屬性實現

          net.sf.hibernate.metadata.*

          PO的Meta實現

          net.sf.hibernate.odmg.*

          ODMG是一個ORM標準,這個包是ODMG標準的實現類

          net.sf.hibernate.persister.*

          核心包,實現持久對象和表之間的映射

          net.sf.hibernate.proxy.*

          Proxy和Lazy Loading支持

          net.sf.hibernate.ps.*

          該包是PreparedStatment Cache

          net.sf.hibernate.sql.*

          生成JDBC sql語句的包

          net.sf.hibernate.test.*

          測試類,你可以用junit來測試Hibernate

          net.sf.hibernate.tool.hbm2ddl.*

          用hbm配置文件生成DDL

          net.sf.hibernate.transaction.*

          Hibernate Transaction實現類

          net.sf.hibernate.type.*

          Hibernate中定義的持久對象的屬性的數據類型

          net.sf.hibernate.util.*

          一些工具類,作用比較散

          net.sf.hibernate.xml.*

          XML數據綁定
          posted @ 2011-01-23 16:31 甜咖啡 閱讀(1147) | 評論 (0)編輯 收藏
          以前聽起hibernate總感覺是一個很奇怪的東西,不知道是用做什么,只知道是一個框架,今天對hibernate的學習,使我受益匪淺,知道了hibernate的作用。
          以前在寫程序的時候看,特別是在編寫連接數據庫程序的時候,總要用到jdbc,提前都感覺到jdbc是一個很好的手工方式,并沒有想到更好的實現方法,也不知道jdbc的缺點是什么,因為在做大型項目的時候,必定會要寫很多的程序,當然操作數據庫的更不可缺,所以每次的有很多都是重復的,而且在對象模型和關系模型之間總會遇到很多的問題,也往往會轉來轉去的,當用了hibernate后,可以很方便的操作數據,不用寫那么麻煩的代碼,節省了很多的操作和代碼的編寫,這樣大大提高了代碼編寫的效率,提高了開發的速度!現在將走向hibernate的世界:
          一:首先要使用hibernate框架,必定要引入hibernate2.jar包,當然還要引入很多的包,然后寫一個與數據表對應的JavaBean類,與數據庫的字段對應,比如一個簡單的java類如下:
          package tmc.hibernat.domian;

          import java.util.Date;

          public class User {

          private int id;
          private String name;
          private Date date;
          public int getId() {
          return id;
          }
          public void setId(int id) {
          this.id = id;
          }
          public String getName() {
          return name;
          }
          public void setName(String name) {
          this.name = name;
          }
          public Date getDate() {
          return date;
          }
          public void setDate(Date date) {
          this.date = date;
          }


          }
          然后編寫一個映射的文件,
          <?xml version="1.0"?>
          <!DOCTYPE hibernate-mapping PUBLIC
          "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
          <hibernate-mapping package="tmc.hibernat.domian">

          <class name="User">
          <id name="id">
          <generator class="native" />
          </id>

          <property name="name" unique="true" />
          <property name="date" />
          </class>
          </hibernate-mapping>

          在寫一個加載數據庫和連接數據庫的的配置文件:
          <!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

          <hibernate-configuration>
          <session-factory>
          <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
          <property name="connection.url">jdbc:mysql:///test</property>
          <property name="connection.username">root</property>
          <property name="connection.password">root</property>
          <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
          <property name="hbm2ddl.auto">update</property>
          <property name="show_sql">true</property>
          <mapping resource="tmc/hibernat/domian/User.hbm.xml"/>
          </session-factory>
          </hibernate-configuration>

          在此,一切的準備都已經完成,接下來執行寫一些service的java類對數據庫進行操作,就可以實現對數據庫的操做了
          寫一個service的java類:
          package tmc.hibernate.service;

          import org.hibernate.Session;
          import org.hibernate.SessionFactory;
          import org.hibernate.cfg.Configuration;

          public final class HibernateUitl {

          private static SessionFactory sessionFactory;
          private HibernateUitl(){

          }
          /**
          * 初始化代碼
          */
          static{

          //配置的一個實例說明屬性允許應用程序在測繪文件被用來當創造一個SessionFactory 
          Configuration cfg = new Configuration();
          cfg.configure();//讀取配置文件
          sessionFactory = cfg.buildSessionFactory();//找出配置文件的所有信息
          }
          /**
          *  獲取SessionFactory的方法
          * @return
          */
              public static SessionFactory getSessionFactory(){
             
              return sessionFactory;
              }
              /**
               * 獲取session的方法
               * @return
               */
              public static Session getSession(){
              return sessionFactory.openSession();
              }
          }

          然后寫對數據庫的各種操作:
          1.寫一個接口:
          package tmc.hibernat.domian;

          public interface UserDao {

          public void saveUser(User user);
          public User findUserById(int id);
          public User findUserByName(String name);
          public void updateUser(User user);
          public void remove(User user);
          }
          2.實現接口:
          package tmc.hibernate.service;

          import org.hibernate.Criteria;
          import org.hibernate.Query;
          import org.hibernate.Session;
          import org.hibernate.Transaction;
          import org.hibernate.criterion.Restrictions;

          import tmc.hibernat.domian.User;
          import tmc.hibernat.domian.UserDao;

          public class UserHibernateImp implements UserDao{
             
          /**
          * 根據id獲取查詢數據庫的內容
          */
          @Override
          public User findUserById(int id) {
          Session s = null;
          try{
          s = HibernateUitl.getSession();
          //Criteria c = s.createCriteria(User.class);
          //c.add(Restrictions.eq("name",name));
          User user =(User)s.get(User.class,id);//User.class方便找到映射文件
          return user;
          }finally{
          if(s!=null){
          s.close();
          }

          }
          }
             /**
              * 根據用戶名,查詢用戶的信息
              */
          @Override
          public User findUserByName(String name) {
          Session s = null;
          try{
          s = HibernateUitl.getSession();
          Criteria c = s.createCriteria(User.class);
          c.add(Restrictions.eq("name",name));
          User user =(User)c.uniqueResult();//映射是唯一的
          return user;
          }finally{
          if(s!=null){
          s.close();
          }

          }
          }
          /**
          * 和上面的使用是一樣的,只是用不同的查詢方式而已
          * @param name
          * @return
          */
          public User findUserByName1(String name) {
          Session s = null;
          try{
          s = HibernateUitl.getSession();
          //Criteria c = s.createCriteria(User.class);
          //c.add(Restrictions.eq("name",name));
          String hql = "from User as user where user.name=:n";
          Query q = s.createQuery(hql);
          q.setString("n",name);

          User user =(User)q.uniqueResult();//映射是唯一的
          return user;
          }finally{
          if(s!=null){
          s.close();
          }

          }
          }
              /**
               * 移除數據庫一條記錄
               * @see tmc.hibernat.domian.UserDao#remove(tmc.hibernat.domian.User)
               */
          @Override
          public void remove(User user) {
          Session s = null;
          //創建一個事務
          Transaction tx = null;
          try{
          s = HibernateUitl.getSession();
          tx = s.beginTransaction();
          s.delete(user);
          tx.commit();
          }finally{
          if(s!=null){
          s.close();
          }

          }

          }
              /**
               * 向數據庫添加數據
               */
          @Override
          public void saveUser(User user) {
          Session s = null;
          //創建一個事務
          Transaction tx = null;
          try{
          s = HibernateUitl.getSession();
          tx = s.beginTransaction();
          s.save(user);
          tx.commit();
          }finally{
          if(s!=null){
          s.close();
          }

          }
          }
            /**
             * 修改數據庫數據
             */
          @Override
          public void updateUser(User user) {
          Session s = null;
          //創建一個事務
          Transaction tx = null;
          try{
          s = HibernateUitl.getSession();
          tx = s.beginTransaction();
          s.update(user);
          tx.commit();
          }finally{
          if(s!=null){
          s.close();
          }

          }

          }

          }
          3.測試上面的類:
          package tmc.hibernate.service;

          import java.util.Date;

          import tmc.hibernat.domian.User;
          import tmc.hibernat.domian.UserDao;

          public class TestDao {

          public static void main(String[] args){
          UserDao dao = new UserHibernateImp();
          User user = new User();
          user.setName("name");
          user.setDate(new Date());
          System.out.println("1111");
          dao.saveUser(user);


          user.setName("new name");
          System.out.println("222");
          dao.updateUser(user);

          User u = dao.findUserByName(user.getName());
          System.out.println("3333");
          }
          }

          這樣的話,就可以完成了對數據庫的各種操作,這樣寫真的很方便,很靈活,減少了很多的重復代碼,但就是配置文件的時候很麻煩,呵呵,反正很多都這樣的,沒有十全十美的東西,但只要好用,就足夠了!
          posted @ 2011-01-23 16:12 甜咖啡 閱讀(5217) | 評論 (0)編輯 收藏
          Hibernate Jar: hibernate3.jar,這個是hibernate3.0的核心jar包,必須的,呵呵,沒的選,像我們常用的Session,Query,Transaction都位于這個jar文件中,必要。

            cglib-2.1.3.jar,CGLIB庫,Hibernate用它來實現PO字節碼的動態生成,非常核心的庫,必要。

            asm.jar ASM字節碼庫 如果使用“cglib”則必要,必要

            asm-attrs.jar ASM字節碼庫 如果使用“cglib”則必要,必要

            ehcache.jar EHCache緩存 如果沒有其它緩存,則必要,必要

            antlr.jar

            

            ANother Tool for Language Recognition是一個工具,必要

            jta.jar JTA規范,當Hibernate使用JTA的時候需要,不過App Server都會帶上,所以也是多余的。但是為了測試方便建議還是帶上。必要

            commons-logging.jar Apache Commons包中的一個,包含了日志功能,必須使用的jar包。必要

            commons-collections.jar Apache Commons包中的一個,包含了一些Apache開發的集合類,功能比java.util.*強大。必要

            dom4j是一個Java的XML API,類似于jdom,用來讀寫XML文件的。Hibernate用它來讀寫配置文件。必要

            上面的就是Hibernate的核心jar包,是配置ssh架構中必須的,下面這些就是可選的了。

            versioncheck.jar 版本檢查 可選

            swarmcache.jar 可選

            jboss-cache.jar TreeCache 可選

            jgroups.jar 可選

            xalan.jar, xerces.jar, xml-apis.jar Xerces是XML解析器,Xalan是格式化器,xml-apis實際上是JAXP。一般App Server都會帶上,JDK1.4也包含了解析器,不過不是Xerces,是Crimson,效率比較差,不過Hibernate用XML只不過是讀取配置文件,性能沒什么要緊的,所以也是多余的??蛇x

            c3p0-0.9.1.jar C3p0是一個數據庫連接池,Hibernate可以配置為使用C3P0連接池。如果你準備用這個連接池,就需要這個jar包。

            可選

            connector.jar JCA API,如果你字啊App Server上把Hibernate配置為Connector的話,就需要這個Jar,不過實際上一般App Server肯定會帶上這個包,所以也是多余的包 可選

            jboss-system.jar 可選

            jboss-system.jar 使用TreeCache時必要 可選

            jacc-1_0-fr.jar JACC庫 可選

            checkstyle-all.jar 可選

            junit.jar 測試單元 可選

            javassist.jar Javassist字節碼解釋器 可選

            ant-lanuncher.jar 可選

            jaas.jar JAAS API 是用來進行權限驗證的,已經包含在JDK1.4里面了,所以實際上是個多余的包 可選

            jdbc2_0-stdext.jar JDBC擴展API,一般來說數據庫連接池會用上它,不過App Server都會帶上,所以也是多余的。 可選

            ant-antlr.jar Ant anlr支持 可選

            jboss-jmx.jar 可選

            cleanimports.jar cleanimports 可選 xerces.jar SAX parser jdk本版低于1.4時必要 可選

            jaxen-1.1-beta-7.jar Jaxen 如果想提高啟動性能則去使用 可選

            ant-junit.jar Ant junit support 可選

            ant-swing.jar ant swing support

            ant.jar Ant編譯工具的jar包,可選

            proxool.jar Proxool JDBC連接池 可選

            concurrent.jar 使用TreeCache 需要

            syndiag2.jar 可選

            commons.collections.jar,commons-pool.jar, commons-dbcp.jar DBCP數據庫連接池,Apache的Jakarta組織開發的,Tomcat的連接池也是DBCP.

            Spring jar 包

            spring.jar 是包含有完整發布模塊的單個jar 包。但是不包括mock.jar, aspects.jar, spring-portlet.jar, and spring-hibernate2.jar。

            除了spring.jar文件,Spring還包括有其它21個獨立的jar包,各自包含著對應的Spring組件,用戶可以根據自己的需要來選擇組合,而不必引入整個spring.jar的所有類文件。

            spring-core.jar 這個jar文件包含Spring框架基本的核心工具類。Spring其它的組件要都要使用到這個包里的類,是其它組件基本核心,當然你也可以在自己的系統中使用這些工具類。外部依賴(Commons Logging, Log4J)

            spring-beans.jar 這個jar文件是所有應用都要使用到的,它包含訪問配置文件,創建和管理bean以及進行Inversion of Control / Dependency(IoC/DI)操作相關的所有類。如果應用只需基本的IoC/DI支持,引入spring-core.jar及spring-beans.jar文件就可以了。

            spring-aop.jar 這個jar文件包含在應用中使用Spring的AOP特性時所需的類和源碼級元數據的支持。使用基于AOP的Spring的特性,如聲明型事務管理(Declaritive Transaction Management),也要在應用里包含這個jar包。外部依賴(spring-core, spring-bean , AOP Alliance, CGLIB, Commons Attributes).

            spring-context.jar 這個jar文件為Spring核心提供了大量的擴展,可以找到Spring ApplicationContext特性時所需的全部類,JNDI所需的全部類,instrumentation組件以及校驗Validation方面的相關類。外部依賴spring-beans, spring-aop.

            spring-dao.jar 這個jar文件包含Spring DAO, Spring Transaction進行數據訪問的所有類,為了使用聲明型事務支持,還需在自己的應用里包含spring-aop.jar外部依賴spring-core, spring-aop, spring-context, JTA API.

            spring-jdbc.jar這個jar文件包含Spring對JDBC數據訪問進行封裝的所有類。外部依賴spring-beans, spring-dao.

            spring-support.jar 這個jar文件包含支持UI模板(Velocity, FreeMarker, JsperReports, BSH, Groovy, Jruby, Quartz, EHCache)

            spring-web.jar 這個jar文件包含Web應用開發時,用到Spring框架時所需的核心類,包括自動載入Web Application Context特性的類,Struts與JSF集成類,文件上傳的支持類,Filter類和大量工具輔助類。外部依賴spring-context, Servlet API,(JSP API, JSTL, Commons FileUpload, COS).
          spring-webmvc.jar 這個jar文件包含Spring MVC框架相關的所有類。包括框架的Servlets, Web MVC框架,控制器和視圖支持。當然,如果你的應用使用了獨立的框架,則無需這個JAR文件里的任何類。外部依賴spring-web, sping-support, Tiles, iText,POI.

            spring-portlet.jar spring自己實現的一個類似Spring MVC的框架,包括一個MVC框架和一個控制器。外部依賴spring-web, Portlet API, Spring-webmvc.

            spring-struts.jar Struts框架支持,可以更方便更容易的集成Struts框架,外部依賴spring-web, Struts.

            spring-remoting.jar 這個jar文件包支持EJB,遠程調用Remoting(RMI,Hession, Burlap, Http Invoker, JAX-RPC)方面的類。外部依賴spring-aop, spring-context, spring-web,Hessian,Burlap,JAX-RPC,EJB API)。

            spring-jmx.jar 這個jar包提供了對JMX1.0/1.2的支持類。外部依賴spring-beans, spring-aop, JMX API.

            spring-jms.jar 這個jar包提供了對JMS1.0.2/1.1的支持類。

            spring-jca.jar 這個jar包提供了對JCA1.0的支持。

            spring-jdo.jar 這個jar包提供了對JDO1.0/2.0的支持。

            spring-hibernate2.jar 對Hibernate2.1的支持,已經不建議使用

            spring-hibernate3.jar 對Hibernate3.0/3.1/3.2的支持

            spring-toplink.jar對TopLink框架的支持 spring-ibatis.jar 對Ibatis SQL Maps的支持。

            另外的兩個包

            spring-mock.jar 這個jar 文件包含Spring 一整套mock 類來輔助應用的測試。Spring 測試套件使用了其中大量mock 類,這樣測試就更加簡單。模擬HttpServletRequest 和HttpServletResponse 類在Web 應用單元測試是很方便的。并且提供了對JUnit的支持。外部依賴

            spring-aspects.jar 提供對AspectJ的支持,以便可以方便的將面向方面的功能集成進IDE中.

            Struts1.2包介紹:

            commons-digester.jar Digester基于規則的XML文檔解析,主要用于XML到Java對象的映射(用來處理struts-config.xml配置文件,以達到通過XML生成相應的對象的功能)。

            commons-beanutils.jar 提供對Java反射和自省API的包裝。

            struts的驗證框架依賴以下的兩個包

            commons-validator.jar(校驗方法)和校驗規則,支持校驗規則的和錯誤消息的國際化。struts使用它對表單進行驗證。

            jakarta-oro.jar 一套文本處理工具,能提供perl5.0兼容的正則表達式AWK-like正則表達式,glob表達式。還提供替換,分割,文件名過濾等功能。

            struts.jar struts的核心Jar包

            antlr.jar 它可以接受詞文法語言描述,并能產生識別這些語言的語句的程序。

            Struts2.1.6jar包介紹

            struts2-core-2.1.6.jar struts2的核心jar包。

            freemarker-2.3.13.jar Freemarker是struts2默認的模版語言

            commons-logging-1.0.4.jar

            ognl-2.6.11.jar Struts2默認的表達式語言OGNL:對象圖形化導航語言

            xwork-2.1.2.jar 也是Struts2核心包,畢竟struts2很大部分是來自webwork

            commons-io.jar (注意這個與2.0.x版本不同,即使不上傳文件這個也是需要的)

            commons-fileupload-1.2.1.jar(注意這個與2.0.x版本不同,即使不上傳文件這個也是需要的)。
          posted @ 2011-01-23 16:07 甜咖啡 閱讀(19428) | 評論 (2)編輯 收藏
          今天下午和幾個要好的同學在南湖旁的草地上聊天,感覺好就沒有這樣的心情舒暢,雖然各自有各自的決定與想法,但是在沒有離開,沒有畢業之前,我們能聚在一 起,感覺還是非常高興的。回想起在大學的這一年半之間,除了一次和全體室友一塊兒出去打籃球,別的就再也沒有過集體“出游”了,我很想能和室友們和朋友們 一起留下在南工的“腳印”,但是沒辦法,有時也只有幾個志同道合的人最終能走在一塊兒,那些曾經的曾經也只是一個過客。晚上和東炬在大談數據結構,不但為 考前復習了知識,也同樣給自己留下了一段美好的回憶,現在回想起來,在南工的一年半的時間里,能讓自己有回憶的事情屈指可數。希望在剩余的一個月里,能盡 可能多的在南工留下屬于自己的記憶!
          posted @ 2010-12-05 21:54 甜咖啡 閱讀(180) | 評論 (0)編輯 收藏
          TCP---傳輸控制協議,提供的是面向連接、可靠的字節流服務。當客戶和服務器彼此交換數據前,必須先在雙方之間建立一個TCP連接,之后才能傳輸數據。TCP提供超時重發,丟棄重復數據,檢驗數據,流量控制等功能,保證數據能從一端傳到另一端。
                UDP---用戶數據報協議,是一個簡單的面向數據報的運輸層協議。UDP不提供可靠性,它只是把應用程序傳給IP層的數據報發送出去,但是并不能保證它們能到達目的地。由于UDP在傳輸數據報前不用在客戶和服務器之間建立一個連接,且沒有超時重發等機制,故而傳輸速度很快。
          posted @ 2010-06-29 09:04 甜咖啡 閱讀(224) | 評論 (0)編輯 收藏

          今天把前段時間寫過的幸福其實很簡單系列進行了匯總。

          在人生旅途中,我們總在四處尋找幸福, 而幸福就在我們身邊,就在當下,就在我們的心里。

          希望我們都變得很幸福~~


          1. 如果假定我們能活80歲, 其中26年我們用在睡覺, 9年用在吃喝, 但是我們笑的時間只有20天. 笑得越開幸福也越多, 遇到不順心的事情, 更要學會笑口常開.

             

            現在你在笑嗎? 幸福其實這么簡單~~

          2. 感恩
            學會感恩, 我們就變得寬容,不再抱怨,不再計較,發現我們擁有的東西是多么的美好; 學會感恩, 可以消解內心所有的積怨, 可以以更積極的心態去回報那些需要幫助的人;學會感恩, 可以讓我們在平凡的日常中每天都感到一絲絲的幸福.

             

            現在開始學會感恩吧.. 不多不少, 每天3個, 這樣你會發現原來生活是這么美好,原來天空是這么藍…今天你感恩了嗎?

          3. 孝敬父母
            像我們一樣出門在外1年只有春節的時候回家, 假定1年在家里待10天,假設父母還能健在20年, 我們跟父母在一起的時間只有200天,不到1年。
            孝敬是一種幸福, 因為孝敬可以使父母更健康/更長壽, 父母的健在可以讓我們感受到更多愛的傳遞和幸福。

             

          4. 困難
            失敗是一種幸福, 因為它可以給你克服難關的智慧。
            分手是一種幸福, 因為它讓我們明白愛情的真意。
            人生低谷是一種幸福, 因為它給你一次審視人生的機會。
            失意的今天是一種幸福, 因為我們幸福的明天將從這里開始。

             

          5. 活在當下
            任何人失去的不是什么別的生活,而只是他現在所過的生活。任何人所過的也不是什么別的生活,而只是他現在所失去的生活。
            “今天”是我們最珍貴的資產,也是唯一確定擁有的資產。所以,不管你現在面臨多么艱難的事情,請活在當下,享受當下這個時光,這才是讓自己幸福的方法。
          posted @ 2010-06-28 21:03 甜咖啡 閱讀(201) | 評論 (0)編輯 收藏

          我們很多人有夢想,有目標。

          而且很多人的目標很高,夢想很遠大,而你的現實離你的夢想還很遙遠。

          正因為兩者之間差距很大,在實現夢想的路程,我們很多人選擇放棄,或對太遙遠的夢想產生恐懼。

          難道擁有很高的目標,遠大的夢想是一種錯誤?

          其實不然。但是有一點我們需要非常清楚。那就是“無論眼界多高,也必須腳踏實地”。

          無論夢想和愿望是多么高遠,現實中的每一天都要竭盡全力踏實地做。

          揮灑汗水,一毫米、一厘米地前進,把橫在眼前的問題一個個地解決掉。

          在夢想與現實的巨大落差中,我們有可能受打擊,但是人生只能是“每一天”的積累與”現在“的連續。

          千里之行始于足下,無論多么偉大的夢想都需要經過一步一步、一天一天的積累,最終才能實現。

          所以,認真、充實的度過今天,明天就會自然而然地呈現在你的眼前。

          有可能你現在的每一步就像烏龜踱步,但是每一天腳踏實地地不斷積累,就這樣不知不覺中你會成長,

          或你的公司會一點點地壯大起來,或你的處境會變得越來越好。

          與其徒然為明日煩惱,孜孜不倦地計劃未來,不如首先傾注全力充實每一個今天,做你力所能及的事情。

          這就是實現夢想的最佳有效途徑。

          posted @ 2010-06-28 20:54 甜咖啡 閱讀(218) | 評論 (0)編輯 收藏

          有志者事竟成   破釜沉舟     百二秦關終屬楚
          苦心人天不負   臥薪償膽     三千越甲可吞吳
          相傳蒲松齡考鄉試落第后,為銘其矢志不移,在銅尺上刻下了這副對聯用以自勉。
          另一副流傳很廣的對聯是明代理學家胡居仁寫的“茍有恒,何必三更眠五更起;最無益,莫過一日曝十日寒。”
          我曾聽到某成功人士如下言論“要學會堅持,只有堅持我們才能取得勝利!”我個人的觀點是:只有正確地堅持,我們才有可能取得最終的勝利。沒有定義好方向只能是盲目的亂撞。
          正確的堅持才是我們取得成功的惟一法寶,才是我們真正應該學習和掌握的技能。
          案例1.1 第101次求職的女士
          在超過1萬場的面試經歷中,我絕大部分面試都會給候選人留出至少十分鐘的時間,他們可以在這段時間里講述自己的工作經歷和特點、提出問題以加強相互的了解。我的基本觀點是:無論應聘者是從馬路對面的家里來的,還是從天邊來到公司的,作為招聘方我們應該給予他們足夠的重視和尊敬,至少尊重他們付出的時間成本。
          基于尊重是相互的這個原則,其中有3場面試求職者只在我面前待了不足5分鐘。這3位候選人都可以用表現奇差來形容,全都超出我容忍的低線,其中一位就是第101次在北京求職的幸儀女士。
          至今我對那次面試仍然記憶深刻。
          當時是下午,坐在桌子對面幸儀穿著很不得體的紫色晚裝。
          我正要開口時幸儀說了話:“你好!這是我在北京第101次面試,希望能成功。”
          略顯驚訝的我請她介紹自己時,她是回答:“簡歷上不是都有嗎?”
          Leo:“呃……那還是說說您應聘獵頭顧問助理職位的優勢和不足吧。簡歷上寫的還是太籠統。”
          幸儀:“我這人吧特長是有干勁兒,愿意付出,年輕?。∵€有我愿意學習,其實我是來這個行業學習的。我也不知道自己適合干什么。不足?我不太合群兒,大多數情況下不愿意接受別人的意見,除非我認為你說的對。還有我對你們行業也不是特別了解,我說了是來學習的。不過,我薪水要求還是挺合理的,希望你們能給個機會。”
          Leo:“那您的期望薪水是多少呢?”
          幸儀:“當然是越高越好!”
          ……
          如果有面試官最討厭聽的十句話列表,幸儀面試時說到了其中兩句,那就是“簡歷上不是都有嗎?”和“薪水當然是越高越好。”前者代表著過分自信,而應聘者多半沒有與此相應聘的資本;后者代表著態度不夠誠懇,即不想錯失機會又怕要了高價兒失去機會。
          第一次犯的錯誤和最后一次犯的錯誤完全相同。結果可想而知,她失去了這101次機會,原因沒有找到合適自己的方向的盲目堅持。如果找不到對她來說正確的方向,別說第101次就是第10001次怕是也找不到自己滿意的工作。
          找到自己的職業方向,繼而正確地堅持才能讓我們在職場路上越走越順。
          (有關“找方向”的方法在書第三章有具體介紹)
          Tips 堅持也要選對方向堅持不是取得成功的保證,正確的堅持才是。方向有偏差就像兩條有夾角的線,開始相差也許只有1厘米,隨著不斷延長兩條線之前的距離會越來越遠,努力方向稍有偏差有時后果不堪相像。我曾經收到過一封計算機專業博士畢業生的郵件,其中他提到自己從大學開始就不喜歡計算機,但因為不好就業、成績還可以他選擇了本系保研,研究生畢業又選擇了碩博連讀,現在快畢業了,面臨著在自己不喜歡的專業方向上就業問題。他問我怎么辦?除了沉默,我自己都不知道說什么。
          適當的時候請停下來調整、糾正自己的方向,上文提到的應聘者如果能及時停止盲目求職,總結自己面試時的不足加以改進,相信不會落到次次失敗的局面。計算機專業即將畢業的博士如果能盡早反思自己,可能也不至于落到如今這般田地。
           

          案例1.3 我是否應該放棄編程
          在錯誤的方向上堅持多半是苦不堪言,如果是痛苦,我們就讓他早點結束。
          Leo,您好!
          我最近看了您寫的文章,感覺獲益良多;但是還有一些地方感到很困惑,希望能得到您的幫助,謝謝!
          首先介紹下我的情況:我是08年畢業的,專業是軟件工程,但是很慚愧,大學四年時間花在編程上的時間很少,軟件專業的,只是屬于入門級別的,java和C都只是just OK,估計叫我自己寫東西都不一定寫的出來,就連計算機的其他方面(如網絡,硬件維護,數據庫等)都比軟件開發要強。
          目前我有幾個比較困惑的地方:
          1、              我現在一家地方軟件公司上班,公司在當地有一定知名度,因為是剛剛入職還在業務培訓階段,發現公司用的技術很多以前沒有接觸過的(如java的Hibernate,struts等),現在學起來個人感覺很吃力,一看到代碼就覺得頭痛,我應不應該繼續在軟件行業發展下去?

          2、              .我想過要轉行到其他的計算機行業去發展,但是來自家里的阻力很大,老媽經常說大學花了好幾萬的學費,讓我一定要在軟件上做下去,而且家里的長輩基本上都是這個態度,前段時間為此還和家里吵了一架。基本上我現在比較迷茫,不知道該如何選擇。
          我想問您,像我這樣的情況該如何選擇呢?
          甘兵
           

          甘兵,您好!
           

          比起本書中提到的米雪松的表妹(詳見本書案例:讀了不喜歡的專業,找工作迷茫了)好像您不但學了自己不是特別有興趣的軟件工程專業,還更進步,開始干起了“一看到代碼就覺得頭痛”的軟件開發,即干上了自己不喜歡的工作。
          對于您我想說的是,首先想清楚、找到真正的方向再轉行。再判斷一下自己是否真的不喜歡軟件開發。如果回答是肯定的,那真正的興趣在哪?05年,我在IT銷售這條路上已經走過了近8年時間,而且做的不錯。雖然沒興趣并不一定代表做不好,但是我確認沒有繼續在銷售領域里發展的打算。所以我選擇了轉行,把職業方向轉到自己很有興趣的人力資源工作上。轉行差不多用了1年時間,之后我在HR領域也取得了些成績,算是轉行相對成功。這些可能要歸功于,我在轉行之前把兩個問題想的比較清楚,建議您下決定轉之前也要想想
          問題一:我是不是真的對現在的工作及職業沒興趣?為什么會沒興趣?你不喜歡現在行業(職業)的真正原因是什么?
                                                                                    

                                                                                    

                                                                                    

           

          問題二:到底什么是我真正的興趣所在(具體到職業方向、職位)?我是否有能力把興趣轉化為工作?在有興趣的職業方向上我打算能走多遠?(具體到職位、年限)
                                                                                    

                                                                                    

                                                                                    

           

          問明白自己上面兩個問題之后,再做好一件事兒就可著手轉行了,那就是:正確評估轉行付出的代價。它們包括:
          沒有家人的理解和支持,比如你媽媽的反對就表現之一。堅持干不喜歡的工作,有點像尊父母之命維持一段不幸福的婚姻,可能自己感覺不好,但父母會支持你。反之尋找自己喜歡的工作像在父母的反對聲中?。蓿┳约旱牧硪话?,自己可能感覺好,但多半不會得么他們支持。在沒有取得真正成績之前,不要指望家人堅定的支持。
          薪水收入的下降,即轉行的現金本成。進入新行業時,我們即沒相關工作經驗、也沒有相關學歷,惟一具備的就是興趣。所以收入和生活質量都會下降。如果您能以機會為重,那么就要接受隨之而來的可能是前不到盡頭的低收入生活。
          最后也是最大的代價其實是心理上的負擔。以上種種綜合因素會給打算轉行的您帶來極大心理負擔,現實中很多人退縮了,甚至還對自己之前確定的興趣產生了懷疑和動搖,。只有承壓能力極強的人,才有機會在轉行之路上走到成功。
          最后說一句,如果你真對軟件開發沒興趣,那就像是嫁或者娶了一個自己不喜歡的人,這已經很不對了。如果要繼續在自己沒興趣的行業里再干下去,就像是準備跟自己不喜歡的家伙過一輩子,對自己對別人都是很殘忍。


          本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/jobchanceleo/archive/2010/06/25/5693165.aspx

          posted @ 2010-06-28 20:46 甜咖啡 閱讀(247) | 評論 (0)編輯 收藏

           Connection con;
              Statement sql;
              ResultSet rs;
              try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                 }
              catch(ClassNotFoundException e){}

              try {  con=DriverManager.getConnection("jdbc:odbc:nw","" ,"");
                   sql=con.createStatement();
                   rs=sql.executeQuery("SELECT * FROM 雇員 where (雇員id)>3");
                   out.print("<Table>");
                    out.print("<TR>");
                      out.print("<TH width=50>"+"雇員id");          
                out.print("<TH width=50>"+"姓氏");
                      out.print("<TH width=70>"+"名字");
                      out.print("<TH width=100>"+"雇用日期");
                      out.print("<TH width=50>"+"地址");
                    out.print("</TR>");
                 while(rs.next())
                 { 
                out.print("<TR>");
                      out.print("<TD >"+rs.getInt("1")+"</TD>");    
                      out.print("<TD >"+rs.getString("2")+"</TD>");
                      out.print("<TD >"+rs.getString("名字")+"</TD>");
                      out.print("<TD >"+rs.getDate("雇用日期")+"</TD>");
                      out.print("<TD >"+rs.getString("地址")+"</TD>");  
                   out.print("</TR>") ;
                  }
                  out.print("</Table>");
                  con.close();
            sql.close();
               }
             catch(SQLException e1) {
              out.print("error!");
           out.print(e1.toString());
             }

          posted @ 2010-06-28 20:44 甜咖啡 閱讀(534) | 評論 (0)編輯 收藏
          try{
            Connection con = null;
            Statement sta = null;
            ResultSet rs = null;
            
            Class.forName("com.mysql.jdbc.Driver");
            DriverManager.registerDriver(new com.mysql.jdbc.Driver());
            
            String add = "jdbc:mysql://localhost:3306/blog";
            String user = "root";
            String pass = "123";
            
            con = java.sql.DriverManager.getConnection(add,user,pass);
            sta = con.createStatement();

           String name = new String(request.getParameter("name").getBytes("iso8859_1"));
           String context = new String(request.getParameter("context").getBytes("iso8859_1"));
           String classID = request.getParameter("classID");
           
           String in = "insert into rizhi values(null,'"+name+"','"+context+"',"+classID+")";
           sta.executeUpdate(in);
          posted @ 2010-06-28 20:42 甜咖啡 閱讀(947) | 評論 (0)編輯 收藏

          你會休息嗎?

          你根本不會休息


          為什么你睡了11個小時仍然覺得疲累?
          為什么你花了好幾萬去島國度假并沒有增加生活的熱情?
          都說要去KTV,去夜店,去游樂園就能忘掉不快,更帶勁地開始新的一天,但是盡興歸來心里只剩空虛?

          我們真的明白休息的含義嗎?我們休息對了嗎?

          首先,來看看我們對休息有哪些誤解:

          ■腦力勞動者,補瞌睡對你沒什么用

          你寫了一天的文案,編了一天程序,當一切都結束了,你嘆到:太累了,這一天我要睡個好覺。我們的常識使得我們對疲勞的第一反應就是“去躺躺吧”。但這是一個陷阱。

          睡眠的確是一種有效的休息方式,但它主要對睡眠不足著或體力勞動者適用。對體力勞動者來說,“疲勞”主要是由體內產生大量酸性物質引起,如果十分疲勞,應采取靜的休息方式。通過睡覺,可以把失去的能量補充回來,把堆積的廢物排除出去。如果不是很累,也可以在床上先躺一躺,閉目靜息,讓全身肌肉和神經完全放松后,再起來活動活動。

          但如果你是坐辦公室的,大腦皮層極度興奮,而身體卻處于低興奮狀態,對待這種疲勞,睡眠能起到的作用不大,(除非你是熬夜加班,連正常睡眠時間都達不到)因為你需要的不是通過“靜止”恢復體能,而是要找個事兒把神經放松下來。這樣你可以理解為什么你周末兩天不出門依舊無精打采,而只需下班后游泳半小時就神采奕奕。

          ■不必停下來,只是換一下

          既然睡覺不能幫助我們休息大腦,那什么辦法才可以?答案是不停止活動,而只是改變活動的內容。

           

          大腦皮質的一百多億神經細胞,功能都不一樣,它們以不同的方式排列組合成各不相同的聯合功能區,這一區域活動,另一區域就休息。所以,通過改換活動內容,就能使大腦的不同區域得到休息。心理生理學家謝切諾夫做過一個實驗。為了消除右手的疲勞,他采取兩種方式——一種是讓兩只手靜止休息,另一種是在右手靜止的同時又讓左手適當活動,然后在疲勞測量器上對右手的握力進行測試。結果表明,在左手活動的情況下,右手的疲勞消除得更快。這證明變換人的活動內容確實是積極的休息方式。

          比如你星期五寫了5個小時的企劃案, 最好第二天去給你的盆栽們剪枝而不是睡到太陽曬屁股。還有一點,當你無法選擇由腦力勞動轉入體力勞動時,你不妨在腦力勞動內部轉換。法國杰出的啟蒙思想家盧梭就講過他的心得:“我本不是一個生來適于研究學問的人,因為我用功的時間稍長一些就感到疲倦,甚至我不能一連半小時集中精力于一個問題上。但是,我連續研究幾個不同的問題,即使是不間斷,我也能夠輕松愉快地一個一個地尋思下去,這一個問題可以消除另一個問題所帶來的疲勞,用不著休息一下腦筋。于是,我就在我的治學中充分利用我所發現的這一特點,對一些問題交替進行研究。這樣,即使我整天用功也不覺得疲倦了。”所以,這天你要是有好幾個問題要處理,最好交替進行,而不要處理完一個再開始的二個,那樣會很快被耗盡。

          ■最好的休息,是讓你重燃生活的熱情

          我們的疲憊主要來自對現有的一層不變的生活的厭倦。所以最好的休息項目就是那些讓我們重新找到生活和工作熱情的活動。如果你干完一件事,能夠幸福地感嘆“明天又是新的一天。”那這件事對你來說就是最好的恢復熱情,調節情緒的方法。但可惜,我們缺乏對“休息”的想象力。我們能想出來的休息方法不是癡睡就是傻玩。

          我們給你開了下面一些活動清單,基本思路是以“做”來解決“累”,用積極休息取代消極放縱。當然,最適合你的方法還是要你自己探索。事實上如果你覺得打掃衛生比坐過山車是更好的放松,那么就去吧,別管世界上的其他人都在玩什么。

          也許你可以:
          ●用看兩小時讓你開懷的漫畫或小說代替去KTV唱那些一成不變的口水歌

          ●試著放棄在周六晚上去酒吧,10點入睡,然后在7點起床,去沒有人的街上走走,或是看看你從來沒有機會看到的早間劇場,你會發現這一天可以和過去的千萬個周末都不相同。

          ●不要再去你已經去過無數次的度假村找樂子了。找一條你你從沒去過的街道,把它走完。你會發現這個你感到膩味的城市結果你并沒有完全體會到它的妙處。

          ●旅行,而不是換個地方消遣。去一個地方對那個地方本身心存好奇,對自己這趟行程心存美意,感受自己經驗范圍以外的人生樣貌。而不是坐了5小時飛機,只是換個地方打麻將,換個地方游泳,換個地方打球......

          ●從這個周末起學習一項新的技藝,比如彈電子琴,打鼓......每周末練習1小時以上。

          ●去社交。不要以為它總是令人疲憊的。雖然和看書比起來,它稍有點令人緊張,但也能讓你更興奮,更有認同感。你必須每周有兩三天是和工作圈子和親戚外的人打交道。它讓你在朝九晚五的機械運行中不至失去活潑的天性。女性朋友們尤為需要走出去和朋友聚會,這些時刻你不再是滿臉寫著“效率”的中性人,而是一個裙裾飛揚的魅力焦點。

          ●做點困難的事,如果你是精神超級緊張的人。心理學家發現解除神經緊張的方法,是去處理需要神經緊張才能解決的問題。曾經一位精神即將崩潰的總經理找到一位醫師給出治療建議,結果他得到的處方是去動物園當馴獅師。一個月以后完全康復。所以壓力特別大的時候你可以為自己再找分工作,但不要是和你職業類似的。比如去孤兒院做義工,或者去一個復雜的機械工廠從學徒干起,或者做一道超級復雜的數學題。

           

           

          往往珍惜生命的人,會不顧任何代價,去求得一個休息.休息十天、半個月,他們回來了.再看呀,是多么神奇的一種變化!他們簡直是一個新生的人了.生機勃勃,精神飽滿,懷著新的希望,新的計劃,新的生命憧憬,他們己消除疲勞,獲得了從新起航的動力---燃料。

           

           

          關于種子法則(SEED)

           

           

          切記:不會休息就不會工作

          南昌大學醫學院 胡春松 北京大學人民醫院 胡大一

          近幾年,知識分子“過勞死”屢見報端,如,年僅32歲的中國社科院學者蕭亮中;36歲的清華大學講師焦連偉;46歲的清華大學教授高文煥;36歲的浙江大學教授、博導何勇等。由于嚴重的“過勞死”現象頻繁出現,我國知識分子平均壽命僅有58歲。嚴峻的現實向許多中青年知識分子及管理層敲響了警鐘。知識分子英年早逝,不僅是個人和家庭的損失,而且是國家的重大損失。大力實施人才安全戰略的重要內容之一是保障人才安全與健康。

          中青年知識分子由于事業、家庭的重擔,對于自身的健康關注甚少。不良的生活方式如長期熬夜、工作超負荷、心理壓力大、缺乏運動、營養不均衡、吸煙、嗜酒等以及睡眠障礙,悄悄地侵蝕著他們的健康。究其根源,主要有幾個方面:

          首先,應當說這些知識分子不注意勞逸結合,且缺乏對工作與休息關系的辯證認識。他們似乎忘記了“不會休息就不會工作”、“身體是革命的本錢”這些至理名言。

          其次,不重視定期檢查。導致知識分子英年早逝的主要疾病是生活方式病如心腦血管病、癌癥、糖尿病、肥胖等。這些病不僅發病率高,如高血壓發病率已達18.8%,個別地區甚至高達25%;而且發病年齡提前,如冠心病已提前到35歲—45歲,至少較以前提前10年左右。這些疾病早期可無任何癥狀,故人們稱高血壓為“悄悄的兇手”。因此,不進行定期檢查就會貽誤治療,直至悲劇出現。

          三是缺乏相關保健知識。盡管我國著名健康教育專家們的健康保健知識講座亦不少,但遺憾的是對相關講座關注的大多數是老年群體,中青年知識分子因為工作繁忙而忽視。中青年知識分子要避免“過勞死”,就要切實認識到:1、認識工作與休息的辯證關系。要牢記“不會休息就不會工作”的格言。2、堅持定期檢查。研究表明,定期檢查是防治疾病的重要措施,體現了預防為主的方針和對“預防是最好的治療”的認識。管理層亦應重視和督促他們進行定期檢查。3、學習相關健康知識。健康講座不僅應進社區、進學校、進機關、企事業等單位,還應進高校實驗室。要讓中青年知識分子接受健康教育,認識到健康教育的重要作用。

          通過上述三個方面的努力,使知識分子戒除不良的生活方式和習慣,從而大大減少生活方式相關疾病的致死致殘率。

          最近,我們提出了健康的“種子”法則,即最基本的健康要素包括睡眠(Sleep)、情緒(Emotion)、運動(Exercise)和飲食(Diet)。它們構成健康的“種子”法則(S-E-E-D法則)。其內容包括:(1)睡眠法則:合理睡眠,午間小憩;(2)情緒法則:情緒穩定,心態平和;(3)運動法則:有氧運動,動靜結合;(4)飲食法則:科學飲食,營養均衡。它在人們的日常保健中起著非常重要的作用,是保持健康的基本要素和首要法則。若廣大中青年知識分子能在日常工作生活中遵守和實踐健康的“種子”法則,相信他們患心腦血管病、癌癥、糖尿病和肥胖癥的機率一定會大大減少,才華橫溢的中青年知識分子就可以為國家為人民作更多更大的貢獻。他們的平均壽命定可以從58歲上升為85歲。

           

           

          天天都是休息天

          M:我現在太久(超過一個時段)沒做事會覺得很沒安全感

          杰:總是要休息的嘛

          M:但休息太久會有罪惡感

          杰:那就每天休息就不會啦(笑 ?)

          M:(心中自語-自以為習慣每天休息就會麻痺喔 ?)

          [摘自本日星夜談心]





          天天都是休息天

          雖然這句話在過常呈現休息狀態的人口中說出一點說服力都沒有(逃~)

          不過也倒是很有道理咧





          保持一種彈性

          一種時間的彈性 情緒的彈性 思考的彈性

          對於我這種過度神經質的人倒是不錯的提醒

          走向不可避免的極端方向後要有回復平穩狀態的能力與彈性

           

           

           

           

           

          如何避免“假期綜合癥”?

          避免“假期綜合癥”,最重要的是要保持一顆平常心。

          一、長假開始時就應該注意調節。事先做好計劃,怎么過長假因人而異,但原則是不能破壞正常的生活規律。不可過度休息,也不可過度勞累。

          二、以休息為主。如果長假能以休息為主,盡可能過得輕松愉快,適度的參與比平時多的娛樂,與親友互訪或與家人團聚。如天天蒙頭大睡,或通宵上網等都不可取。

          三、提前進入角色。人的神經有“自動調節”的特點,因此在上班前一天應有意識的做一些與工作有關的事,有助與盡早進入工作狀態。上班前一天要保證充足的睡眠。

          四、多想開心事?;?#8220;假期綜合癥”的多是年輕人,誘因很多,比如分離性焦慮,人際交往困難,在工作中有過委屈、挫折、羞辱等經歷等。所以平時要多做一些自己開心的事,多找朋友聊聊天,呼吸新鮮空氣,換一個新鮮的環境。也可以求助心理咨詢師,畢竟心理健康,才會在事業上取得更大的成就,生活中才能體會更多的幸福!

          posted @ 2010-05-26 09:52 甜咖啡 閱讀(241) | 評論 (0)編輯 收藏

          x=x+1,x+=1,x++的效率哪個最高?

          x=x+1最低,因為它的執行過程如下:

          1.       讀取右x的地址;

          2.       x+1;

          3.       讀取左x的地址;

          4.       將右值傳給左邊的x(編譯器并不認為左右x的地址相同).

           

          x=+1其次,它的執行過程如下:

          1.       讀取右x的地址;

          2.       x=1;

          3.       將得到的值傳給x(因為x的地址已經讀出).

           

          x++最高,它的執行如下:

          1.       讀取右x的地址;

          2.       x自增1.

          posted @ 2010-05-26 09:49 甜咖啡 閱讀(502) | 評論 (1)編輯 收藏
          "據國外知名網站管理員論壇webmasterworld.com報道(),
          Google有可能通過
          posted @ 2010-04-03 17:26 甜咖啡 閱讀(229) | 評論 (0)編輯 收藏
          網絡上有許多網站提供在線協作服務,不過毫無疑問的是,Google文檔正在成為時下最流行的品牌服務之一。Google文檔是免費的,在線的(即跨平臺的),并且很容易上手。但是簡單和免費并不意味這Google文檔就沒有自己的特色。
          不管你是Google文檔的老用戶,還是只是嘗嘗鮮的新用戶,下面這六個小技巧可以幫你充分利用Google文檔。

          1. 在文檔中聊天

          Chatting.


          要充分利用Google文檔,你就需要能夠與其他人進行實時溝通,這樣做比在共享頁面上相互留注釋有效率的多。Google文檔有一個內嵌的聊天客戶端幫你解決這個難題,不需要時,你也很容易地就可以把聊天頁面隱藏在右上角。

          Chatting in Google Docs.


          當你分享演示文檔時,這個聊天客戶端還可以從Picasa或者Flickr上分享圖片或者插入Google Video和Youtube上的視頻。(譯者:我也是第一次知道)

          2. 更輕松地整理你的文檔


          Colors


          Google文檔有一個非常干凈的界面,但是當你與多人分享文檔時,你就需要盡可能的把文檔整理好。Google文檔中保證內容有序的最好辦法就是用顏色標注和注釋(comments)

          Comments


          在Google表格中,你可以設置顏色注釋規則(比如所有包含有你姓名的文本顏色變成紫色),你也可以在任何一個單元格上右鍵點擊插入注釋,而不用占用單元格的空間。

          Colors in Google Docs.

          在Google文檔的主界面中,文件夾也可以標注顏色,方法與顏色標注Gmail標簽的方法類似。

          3. 與他人分享文檔

          Sharing documents on Google Docs.


          Google文檔的精髓就算在分享,這個特點你已經知道了。不過關鍵的地方是你可以精確的控制分享的對象。文檔所有者可以隨意操作,你可以邀請協作者來編輯文檔,或者只是簡單的瀏覽共享文檔。

          Sharing on Google Docs.


          Google文檔默認的是任何能編輯文檔的人都可以在將文檔分享給其他人。如果你真的想放開大門,你也可以讓所有都可以瀏覽和編輯文檔。不過要注意的是,每個文檔和演示稿(presentations)能夠同時進行編輯的人數上限是10人(電子表格可以同時編輯的人數上限為50人)。

          4. 回滾(修訂版或者版本控制)

          Make Revisions.


          你已經知道Google文檔可以自動保存你做的修改,但是你可能不知道你可以操作之前修訂版本,弄清楚到底什么地方做了修改。

          Revisions.


          Google文檔保留所有的修訂歷史記錄,你可以追蹤文檔的改動。如果你需要,你可以將還原到之前的任何一個版本。在文檔的修訂歷史記錄中,你甚至可以并行對比兩個版本,瀏覽用顏色標注的改動處。

          5.繪圖

          Drawing.


          最近Google給Google文檔新添加了一個繪圖功能。這功能新提供一系列的全新分享選項?,F在圖表的制作和分享變得非常輕松。它提供的選項還不算全面,不過你可以選擇插入各種形狀,線條,箭頭,文本框,你可以添加顏色,旋轉圖形,甚至在某種程度上你可以對對象設置圖層。上面這幅圖就是用 Google文檔畫出來。

          6. 其他

          Google文檔中還有其他許多功能,你可能會發現他們中有些很有用,有些派不上用場。

          HTML.


          Google給你提供的有編輯Html原文件甚至是文檔CSS文件的功能。在電子表格中,你可以從其他工作表中引用數據,然后在用戶的當前工作表中同步更新數據。Google也提供實時的查找函數(lookup),讓特定的單元格包含來自屬網絡的實時數據,等等。當你編輯HTML時,你Google 文檔的頁面上方會出現一個編輯框。
          posted @ 2010-04-03 17:18 甜咖啡 閱讀(235) | 評論 (0)編輯 收藏
          自Google China被重定向到Google Hong Kong之后,Net Applications的統計顯示Google Hong Kong全球流量增至3%。
          在3月23日,谷歌中國的全球流量從前一天的1.68%降至0.10%,此后幾天都在0.10%左右徘徊,而Google香港引擎則從前兩天的0.06%和0.93%增加到2.72%,其后幾天最高達到了3.12%,之后穩定在3%左右。Net Applications認為,如果Google香港引擎回落到0點左右,那么原因可能是中國大陸無法訪問它了。
           Fishdrowned在日志上說,Google.com.hk (簡體中文) 的 logo 改成 "Google中國", 而不是 "Google谷歌" 了, 而且 "歡迎您來到谷歌搜索在中國的新家" 也已經從頁面上移除。
          posted @ 2010-04-03 17:11 甜咖啡 閱讀(311) | 評論 (0)編輯 收藏
           

          創建數據庫:

          create database 數據庫名;

          顯示數據庫列表:

          show databases;

          刪除數據庫:

          drop database 數據庫名;

          用數據庫:

          use 數據庫名;

          顯示數據表結構:

          desc 表名;

          顯示數據庫里面的所有表:

          show tables;

          創建表:

          create table 表名(列名 該列的數據類型 【是否設置主鍵】,

          列名 該列的數據類型,

          列名 該列的數據類型,

          ······

          );

          查找表:

          select * from 表名;

          模糊查詢:

          select * from 表名 where 要查的列名 like ‘%關鍵字%’

          刪除表:

          drop table 表名;

          向表中插入數據:

          insert into 表名 value(   ,   ,   );(text類型用單引號)

          刪除表中的一條數據:

          delete from 表名 where 范圍;

          清空表:

          delete from 表名;

          修改表中的數據:

          update 表名 set 列名=要改的值 where 范圍;

          排序:

          select * from 表名 order by 列名 desc;

          求做大值:

          select max(列名) as maxvalue from 表名;

          求最小值:

          select min(列名) as minvalue from 表名;

          求平均值:

          select avg(列名) as avgvalue from 表名;

          求和:

          select sum(列名) as sumvalue from 表名;

          總數:

          select count(*) as totalcount from 表名;

          添加觸發器:

          alter   table  表名(小弟表)  add   foreign   key (小弟表內的字段)  references  主鍵表(關聯的主鍵)  on   delete   cascade   on   update   cascade ;

          添加外鍵關聯:

          CONSTRAINT  '外鍵的名字'(隨意起的名字)  FOREIGN   KEY  ('本表的字段名')  REFERENCES  表名(要關聯的主鍵字段);

          posted @ 2010-03-31 17:18 甜咖啡 閱讀(259) | 評論 (0)編輯 收藏

          Documents and Settings是什么文件?答案: ­

          是系統用戶設置文件夾,包括各個用戶的文檔、收藏夾、上網瀏覽信息、配置文件等。 ­

          補:這里面的東西不要隨便刪除,這保存著所有用戶的文檔和賬戶設置,如果刪除就會重新啟動不能登陸的情況,尤其是里面的default user、all users、administrator和以你當前登陸用戶名的文件夾。 ­

          Favorites是什么文件?答案: ­

          是收藏夾,存放你喜歡的網址。可以在其中放網址快捷方式和文件夾快捷方式,可以新建類別(文件夾)?! ?­

          Program Files是什么文件?答案: ­

          應用軟件文件夾 裝軟件的默認路徑一般是這里!當然里面也有些系統自身的一些應用程序 ­

          Common Files是什么文件?答案: ­

          Common Files. 這個文件夾中包含了應用程序用來共享的文件,很重要,不能亂刪除 Common Files這個文件是操作系統包擴系統程序和應用程序 Common Files是應用程序運行庫文件數據庫覆蓋了大約1000多個最流行的應用程序的插件,補丁等等 文件夾common files里很多都是系統文件,不能隨意刪除,除非確定知道是干什么用的,沒用的可以刪掉。不過就算刪掉了有用的東西,也沒大的關系,頂多是某些軟件用不了,不會造成系統崩潰。 ­

          ComPlus Applications是什么文件?答案: ­

          ComPlus Applications: 微軟COM+ 組件使用的文件夾,刪除后可能引起COM+ 組件不能運行 ­

          DIFX是什么文件?答案: ­

          不可以刪除,已有的XML數據索引方法從實現思想上可分為兩類:結構歸納法和節點定位法.這兩種方法都存在一定的問題,結構歸納法的缺點是索引規模較大而且難以有效支持較復雜的查詢,而節點定位法的主要缺點是容易形成過多的連接操作.針對這些問題,提出了一種新的動態的XML索引體系DifX,它擴展了已有的動態索引方法,采用一種動態的Bisimilarity的概念,可以根據實際查詢需求以及最優化的要求動態決定索引中保存的結構信息,以實現對各種形式的查詢最有效的支持.實驗結果證明DifX是一種有效而且高效的XML索引方法,其可以獲得比已有的XML索引方法更高的查詢執行效率. ­

          Internet Explorer是什么文件?答案: ­

          不用說了,肯定不能刪除,IE,瀏覽網頁的! ­

          =================================================================================== ­

          ­

          ======== ­

          Kaspersky Lab是什么文件? ­

          答案:卡巴斯基的文件包,這個是卡巴的報告,在 C:Documents and SettingsAll ­

          ­

          UsersApplication DataKaspersky LabAVP6Report 的更新文件中有很多report文件 很占地 ­

          ­

          方的 ­

          刪除了就好了, ­

          1利用卡巴自帶的清理功能,但不能完全清理干凈。 ­

          2關閉自我保護,然后將report文件夾下面的文件手動刪除。 ­

          =================================================================================== ­

          ­

          ======== ­

          Messenger是什么文件?答案:系統自帶的MSN是完全可以刪除的。 ­

          相信有不少人都在使用MSN,可能有同樣的經歷,安裝完 新的MSN 后,可每每打開 MSN 首先跳出 ­

          ­

          來的是舊版,而不是新版。即使在系統中刪除了老版本,但過了不久也會自動恢復回來。 ­

          如果要徹底刪除老版本.可以點擊"開始"->"運行"-> ­

          代碼: ­

          RunDll32 advpack.dll,LaunchINFSection %windir%INFmsmsgs.inf,BLC.Remove ­

          =================================================================================== ­

          ­

          ======== ­

          microsoft frontpage是什么文件?答案:那個是系統自帶的網頁編輯器 ­

          =================================================================================== ­

          ­

          ======== ­

          Microsoft Silverlight是什么文件?答案:Silverlight是于Adobe Flash基本相同的軟件,運行在瀏覽器中的插件。實現交互、動畫等 ­

          ­

          功能。使用XAML文件支持,支持.net運行庫。 ­

          program files是Windows操作系統中所有應用程序的位置,大是正常的。很多情況都可能造成 ­

          ­

          program files創建文件夾,一般是安裝應用程序后創建的。您需要提供出文件夾名稱我們才可以 ­

          ­

          確切的說是不是無用的文件夾。 ­

          一般情況這里的文件夾不可以刪除的,如果刪除會影響系統或應用程序無法運行。 ­

          =================================================================================== ­

          ­

          ======== ­

          Movie Maker是什么文件?答案:movie maker是 微軟提供的 捆綁系統的一個視頻編輯軟件 ­

          我的這個文件也是空的,據猜測,應該是ghost版的系統優化掉了這個軟件。 ­

          完全可以刪除,不過系統總是重建這個文件夾。 ­

          可以用unlocker軟件刪除。 ­

          你無法刪除的原因是仍然有桌面進程調用這個文件。 ­

          不解除鎖定是無法刪除的。 ­

          =================================================================================== ­

          ­

          ======== ­

          MSBuild是什么文件? ­

          答案:沒找到,應該是系統相關的,最好別刪! ­

          =================================================================================== ­

          ­

          ======== ­

          MSN Gaming Zone是什么文件?答案:一些系統自帶的撲克牌等小游戲, ­

          可以刪除 ­

          控制面板-〉添加或刪除程序-〉添加/刪除windows組件,然后在列表里面找到你要刪除的outlook ­

          ­

          和msn explorer,把前面的勾去掉,就能刪除了。 ­

          =================================================================================== ­

          ­

          ======== ­

          MSXML 6.0是什么文件?答案:msxml ­

          指微軟的xml語言解析器,用來解釋xml語言的。就好像html文本下再到本地,瀏覽器會檢查html的 ­

          ­

          語法,解釋html文本然后顯示出來一樣。要使用xml文件就一定要用到xml parser。不過不僅僅微 ­

          ­

          軟有,像ibm,sun都有自己的xml parser。 ­

          =================================================================================== ­

          ­

          ====== ­

          NetMeeting是什么文件?答案:是Windows自帶的MSN的文件,如果你不用MSN以及Outlook Express,你完全可以把它刪掉。 ­

          不過也占不多大地方的。是Windows自帶的MSN的文件,如果你不用MSN以及Outlook Express,你完 ­

          ­

          全可以把它刪掉。不過還是推薦看下網上的卸載方式,畢竟用系統自帶的卸載方式比較安全。 ­

          ­

          NetMeeting文件夾是系統自帶的有關遠程控制的部分,你刪掉后這個功能不能使用,但不影響正常操 ­

          ­

          作,但是由于是系統自帶所以會自動生成,也有病毒喜歡潛伏在此文件夾內,不過并不是簡單的通過刪 ­

          ­

          除文件夾可以解決的 ­

          NetUpdateService.exe這個進程如果用戶名項是system的話應該就是你的自動更新服務了,如果不 ­

          ­

          用自動更新的話最好關掉,省得浪費資源 ­

          =================================================================================== ­

          ­

          ====== ­

          Online Services是什么文件?答案:上網用的!不能刪除! ­

          =================================================================================== ­

          ­

          ====== ­

          Outlook Express是什么文件?答案:Outlook express 是Windows內置的郵件收發端 ­

          他的作用就是你不必每次登郵箱都要上網頁只要打開outlook express就可以收發郵件了?。。?! ­

          ­

          ! ­

          級別:先知 ­

          是收發電子郵件的軟件。 他是一個收發電子郵件的軟件,由微軟研發。 ­

          =================================================================================== ­

          ­

          ====== ­

          Reference Assemblies是什么文件?答案:系統相關的!最好別刪除 ­

          =================================================================================== ­

          ­

          ====== ­

          SigmaTel是什么文件? ­

          答案:這個文件是有用的文件!此文件是計算機聲卡的驅動!注意!系統磁盤里的文件不懂的話, ­

          ­

          千萬不可亂刪除哦! ­

          =================================================================================== ­

          ­

          ====== ­

          Tencent是什么文件? ­

          答案:Tencent 就是QQ的文件夾了,如果你不用了就從開始菜單里卸載掉,如果還要使用,那就留著 ­

          ­

          吧 ­

          =================================================================================== ­

          ­

          ====== ­

          VID_0E8F&PID_0003是什么文件? ­

          答案:北通神鷹的驅動程序 ­

          =================================================================================== ­

          ­

          ====== ­

          VMware是什么文件? ­

          答案:系統文件,不要亂動 ­

          =================================================================================== ­

          ­

          ====== ­

          Windows Media Connect 2是什么文件? ­

          答案:程序的東西,別刪除! ­

          =================================================================================== ­

          ­

          ====== ­

          Windows Media Player是什么文件?答案:是系統自身的一個播放軟件! ­

          Windows Media Player ­

          使用 Microsoft Windows Media Player,您可以播放和組織計算機和 Internet 上的數字媒體文 ­

          ­

          件。這就好象把收音機、視頻播放機、CD 播放機和信息數據庫等都裝入了一個應用程序中。使用 ­

          ­

          Windows Media Player,您可以收聽世界各地電臺的廣播、播放和復制您的 CD、查找在 ­

          ­

          Internet 上提供的視頻,還可以創建您的計算機上所有數字媒體文件的自定義列表。 ­

          總之,就是一種多媒體播放器,集視頻與音頻于一身~ ­

          =================================================================================== ­

          ­

          ====== ­

          Windows NT是什么文件?答案:一種網絡操作系統,特點如下: ­

          1.將聯網能力加入到操作系統中,使之成為操作系統功能的一個組成部分。 ­

          2.系統直接支持網絡上各主機之間的文件復制、用戶之間的電子郵件、支持作為仿真終端實現對遠 ­

          ­

          程主機的登錄等等。而用戶不需要在機器上再安裝此類網絡服務軟件。 ­

          3.由于系統支持多個網絡協議,因此對現存的多種網絡、網絡服務器,都能很容易地實現數據交換 ­

          ­

          。 ­

          4.網絡具有開放式結構,網絡中使用地各種數據傳輸、網絡驅動程序都可以被動態地裝入和卸出, ­

          ­

          而且不同種類地功能部件可以并存。這些都有利于網絡功能地修改和擴充。 ­

          =================================================================================== ­

          ­

          ====== ­

          WinRAR是什么文件?答案:winrar,是一款比較優秀的壓縮解壓縮軟件,支持鼠標拖放及外殼擴展,完美支持 ZIP 檔案 ­

          ­

          ,內置程序可以解開 CAB、ARJ、LZH、TAR、GZ、ACE、UUE、BZ2、JAR、ISO 等多種類型的壓縮文 ­

          ­

          件;具有估計壓縮功能,你可以在壓縮文件之前得到用 ZIP 和 RAR 兩種壓縮工具各三種壓縮方式 ­

          ­

          下的大概壓縮率;具有歷史記錄和收藏夾功能;壓縮率相當高,而資源占用相對較少、固定壓縮、 ­

          ­

          多媒體壓縮和多卷自釋放壓縮是大多壓縮工具所不具備的;使用非常簡單方便,配置選項不多,僅 ­

          ­

          在資源管理器中就可以完成你想做的工作;對于 ZIP 和 RAR 的自釋放檔案文件( DOS 和 WINDOWS ­

          ­

          格式均可),點擊屬性就可以輕易知道此文件的壓縮屬性,如果有注釋,還能在屬性中查看其內容。 ­

          =================================================================================== ­

          ­

          ====== ­

          Xerox是什么文件?答案:Xerox文件夾是XP自己安裝的,為自帶的一些圖像處理軟件作臨時空間用。 ­

          文件夾的名稱源自Microsoft采用了Xerox公司授權的技術,該文件夾受WFP (Windows File ­

          ­

          Protection)保護,所以不可能(也沒必要)刪除。 ­

          ATI Technologies是顯卡控制程序,跟電腦芯片有關,不要動它 ­

          Online Services是網絡服務文件夾 ­

          NetMeeting是MS最早基于IP聊天的一種工具,Netmeeting功能強大,除了語音、視頻,它還有文字聊 ­

          ­

          天、電子白板、文件傳送、程序共享等等。 可以刪除 ­

          不過,在這個文件夾內的文件夾都是比較重要的,或者經常用的,最好不要動,弄不好就會對系統 ­

          ­

          造成影響,還不好恢復 

          posted @ 2010-03-31 15:34 甜咖啡 閱讀(273) | 評論 (0)編輯 收藏
           

          JavaScript--正則表達式

          正則表達式(regular expression)對象包含一個正則表達式模式(pattern)。它具有用正則表達式模式去匹配或代替一個串(string)中特定字符(或字符集合)的屬性(properties)和方法(methods)

          正則表達式構造函數: new RegExp("pattern"[,"flags"]);
          參數說明:
          pattern --
          一個正則表達式文本
          flags --
          如果存在,將是以下值:
          g:
          全局匹配
          i:
          忽略大小寫
          gi:
          以上組合

          在構造函數中,一些特殊字符需要進行轉意(在特殊字符前加""")。正則表達式中的特殊字符: 
          "
          轉意,即通常在"""后面的字符不按原來意義解釋,如/b/匹配字符"b",當b前面加了反斜桿后/"b/,轉意為匹配一個單詞的邊界。
          -
          -
          對正則表達式功能字符的還原,如"*"匹配它前面元字符0次或多次,/a*/將匹配a,aa,aaa,加了"""后,/a"*/ 將只匹配"a*"。  ^  匹配一個輸入或一行的開頭,/^a/匹配"an A",而不匹配"An a" 
          匹配一個輸入或一行的結尾,/a$/匹配"An a",而不匹配"an A" 
          匹配前面元字符0次或多次,/ba*/將匹配b,ba,baa,baaa 
          匹配前面元字符1次或多次,/ba*/將匹配ba,baa,baaa 
          匹配前面元字符0次或1次,/ba*/將匹配b,ba 
          (x) 
          匹配x保存x在名為$1...$9的變量中 
          x|y 
          匹配x
          {n} 
          精確匹配n 
          {n,} 
          匹配n次以上 
          {n,m} 
          匹配n-m 
          [xyz] 
          字符集(character set),匹配這個集合中的任一一個字符(或元字符
          [^xyz] 
          不匹配這個集合中的任何一個字符 
          ["b] 
          匹配一個退格符
          "b 
          匹配一個單詞的邊界 
          "B 
          匹配一個單詞的非邊界
          "cX 
          這兒,X是一個控制符,/"cM/匹配Ctrl-M 
          "d 
          匹配一個字數字符,/"d/ = /[0-9]/ 
          "D 
          匹配一個非字數字符,/"D/ = /[^0-9]/ 
          "n 
          匹配一個換行符 
          "r 
          匹配一個回車符 
          "s 
          匹配一個空白字符,包括"n,"r,"f,"t,"v 
          "S 
          匹配一個非空白字符,等于/[^"n"f"r"t"v]/ 
          "t 
          匹配一個制表符 
          "v 
          匹配一個重直制表符 
          "w 
          匹配一個可以組成單詞的字符(alphanumeric,這是我的意譯,含數字),包括下劃線,如["w]匹配"$5.98"中的5,等于[a-zA-Z0-9] 
          "W 
          匹配一個不可以組成單詞的字符,如["W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。

          說了這么多了,我們來看一些正則表達式的實際應用的例子:
          HTML
          代碼的屏蔽
           function mask_HTMLCode(strInput) {
             var myReg = /<("w+)>/;
             return strInput.replace(myReg, "&lt;$1&gt;");
           }
          E-mail
          地址驗證:
           function test_email(strEmail) {
            var myReg = /^[_a-z0-9]+@([_a-z0-9]+".)+[a-z0-9]{2,3}$/;
            if(myReg.test(strEmail)) return true;
            return false;
           }

          正則表達式對象的屬性及方法:
          預定義的正則表達式擁有有以下靜態屬性:input, multiline, lastMatch, lastParen, leftContext,rightContext$1$9。其中inputmultiline可以預設置。其他屬性的值在執行過exec test方法后被根據不同條件賦以不同的值。許多屬性同時擁有長和短(perl風格)的兩個名字,并且,這兩個名字指向同一個值。(

          JavaScript模擬perl的正則表達式)
          正則表達式對象的屬性:
          屬性含義
          $1...$9
          如果它()存在,是匹配到的子串 
          $_
          參見input 
          $*
          參見multiline 
          $&
          參見lastMatch 
          $+
          參見lastParen 
          $`
          參見leftContext 
          $''
                   參見rightContext 
          constructor
              創建一個對象的一個特殊的函數原型 
          global
                 是否在整個串中匹配(bool
          ignoreCase
              匹配時是否忽略大小寫(bool
          input
                 被匹配的串 
          lastIndex
               最后一次匹配的索引 
          lastParen
               最后一個括號括起來的子串 
          leftContext
              最近一次匹配以左的子串 
          multiline
               是否進行多行匹配(bool
          prototype
               允許附加屬性給對象 
          rightContext
             最近一次匹配以右的子串 
          source
                 正則表達式模式 
          lastIndex
               最后一次匹配的索引 

          正則表達式對象的方法:
          方法含義
          compile
                正則表達式比較 
          exec
                 執行查找 
          test
                 進行匹配 
          toSource
               返回特定對象的定義(literal

          representing),其值可用來創建一個新的對象。重載Object.toSource方法得到的。 
          toString
               返回特定對象的串。重載Object.toString方法得到的。 
          valueOf
                返回特定對象的原始值。重載Object.valueOf方法得到 

          例子

          1.                     <script language = "JavaScript">

          2.                     var myReg = /(w+)s(w+)/;

          3.                     var str = "John Smith";

          4.                     var newstr = str.replace(myReg, "$2, $1");

          5.                     document.write(newstr);

          6.                     </script>

          7.                     將輸出"Smith, John"

          常用的js正則表達式

          javascript驗證表單時常用

          "^-[0-9]*[1-9][0-9]*$"
            //負整數

          "^-?"d+$"
              //整數

          "^"d+("."d+)?$"
            //非負浮點數(正浮點數 + 0

          "^(([0-9]+".[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*".[0-9]+)|([0-9]*[1-9][0-9]*))$"
            //正浮點數

          "^((-"d+("."d+)?)|(0+(".0+)?))$"
            //非正浮點數(負浮點數 + 0

          "^(-(([0-9]+".[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*".[0-9]+)|([0-9]*[1-9][0-9]*)))$"
            //負浮點數

          "^(-?"d+)("."d+)?$"
            //浮點數

          "^[A-Za-z]+$"
            //26個英文字母組成的字符串

          "^[A-Z]+$"
            //26個英文字母的大寫組成的字符串

          "^[a-z]+$"
            //26個英文字母的小寫組成的字符串

          "^[A-Za-z0-9]+$"
            //由數字和26個英文字母組成的字符串

          "^"w+$"
            //由數字、26個英文字母或者下劃線組成的字符串

          "^["w-]+(".["w-]+)*@["w-]+(".["w-]+)+$"
              //email地址

          "^[a-zA-z]+://("w+(-"w+)*)(".("w+(-"w+)*))*("?"S*)?$"
            //url

          posted @ 2010-03-31 09:07 甜咖啡 閱讀(198) | 評論 (0)編輯 收藏
          僅列出標題
          共5頁: 上一頁 1 2 3 4 5 下一頁 

          導航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統計

          常用鏈接

          留言簿(1)

          我參與的團隊

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 周至县| 天津市| 峨山| 屯留县| 三亚市| 长兴县| 吴忠市| 特克斯县| 重庆市| 襄樊市| 垣曲县| 芜湖市| 菏泽市| 宁陕县| 西安市| 顺义区| 娄烦县| 常山县| 河北省| 南丰县| 塔河县| 白城市| 根河市| 大竹县| 英山县| 河曲县| 泽库县| 桂东县| 昌图县| 文山县| 郑州市| 麻江县| 阜南县| 来凤县| 化隆| 友谊县| 丹江口市| 曲靖市| 汾阳市| 锡林浩特市| 黎城县|