随笔-204  评论-90  文章-8  trackbacks-0
 
DDL

-- Create sequence
create sequence SEQ_TAB_900
minvalue 1
maxvalue 999999999999999999
start with 21
increment by 1
cache 20;

-- Create table
create table TAB_900
(
  ID      NUMBER not null,
  MOBILE  VARCHAR2(2),
  INSDATE DATE,
  constraint pk_tab_900 primary key (ID),
  constraint fk_tab_900 foreign key (ID) references tab_xxx(id)
)
-- Create/Recreate primary, unique and foreign key constraints
alter table TAB_900
  add constraint PK_TAB_900 primary key (ID);

posted @ 2007-04-13 17:22 一凡 阅读(211) | 评论 (0)编辑 收藏

 <!-- 配置数据库连接 -->
 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="driverClassName">
   <value>oracle.jdbc.driver.OracleDriver</value>
  </property>  
  <property name="url">
   <value>jdbc:oracle:thin:@33.49.23.168:1521:oradb</value>
  </property>
  <property name="username">
   <value>chinacars</value>
  </property>
  <property name="password">
   <value>chinacars</value>
  </property> 
 </bean> 
    
<!-- 配置sessionFactory, 注意这里引入的包的不同  -->
 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource">
   <ref local="dataSource" />
  </property>
  <property name="mappingResources">
   <list>   
    <value>com/chinacars/wap/beans/WapCategory.hbm.xml</value>
   </list>
  </property>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
    <prop key="hibernate.show_sql">true</prop>
    <prop key="hibernate.c3p0.minPoolSize">0</prop>
                <prop key="hibernate.c3p0.maxPoolSize">5</prop>
                <prop key="hibernate.c3p0.timeout">600</prop>
                <prop key="hibernate.c3p0.max_statement">200</prop>
   </props>
  </property>  
 </bean>

 <!-- Manager -->
 <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory">
   <ref local="sessionFactory" />
  </property>
 </bean>

 <!--
  ******* DAO setting *******
 -->

 <bean id="statDayDao" class="com.ihandy.statsms.dao.impl.StatDayDaoImpl">
  <property name="sessionFactory">
   <ref local="sessionFactory" />
  </property>
 </bean>

 <bean id="statDayDaoProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
  <property name="transactionManager">
   <ref bean="transactionManager" />
  </property>
  <property name="target">
   <ref local="statDayDao" />
  </property>
  <property name="transactionAttributes">
   <props>
    <prop key="insert*">PROPAGATION_REQUIRED</prop>
    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>
   </props>
  </property>
 </bean> 
 
  <!--
  ******* Service setting *******
 -->

 <bean id="statDayService" class="com.ihandy.statsms.service.impl.StatDayServiceImpl">
  <property name="statDayDao">
   <ref bean="statDayDaoProxy" />
  </property>
 </bean>
 
 <!-- Struts Action Proxy -->
 <bean name="/statDayList" class="com.ihandy.statsms.struts.action.StatDayListAction" singleton="false">
  <property name="statDayService">
   <ref bean="statDayService" />
  </property>
 </bean>

posted @ 2007-04-13 16:09 一凡 阅读(292) | 评论 (0)编辑 收藏
如何从一位菜鸟蜕变成为高手,灵活使用的SQL语句是必不可少的。本文收集了部分比较经典,常用的SQL语句供大家参考,希望对大家有所帮助。 

 

   说明:复制表(只复制结构,源表名:a 新表名:b)   

   SQL: select * into b from a where 1<>1 

   说明:拷贝表(拷贝数据,源表名:a 目标表名:b)   

   SQL: insert into b(a, b, c) select d,e,f from b; 

   说明:显示文章、提交人和最后回复时间   

   SQL: select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b 

   说明:外连接查询(表名1:a 表名2:b)   

   SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c 

   说明:日程安排提前五分钟提醒   

   SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5   

   说明:两张关联表,删除主表中已经在副表中没有的信息 

   SQL:    

   delete from info where not exists ( select * from infobz where info.infid=infobz.infid 

   说明:-- 

   SQL:    

   SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE 

    FROM TABLE1, 

    (SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE 

    FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND 

    FROM TABLE2 

    WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X, 

    (SELECT NUM, UPD_DATE, STOCK_ONHAND 

    FROM TABLE2 

    WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = 

    TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') &brvbar;&brvbar; '/01','YYYY/MM/DD') - 1, 'YYYY/MM') Y, 

    WHERE X.NUM = Y.NUM (+) 

    AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) <> X.STOCK_ONHAND B 

   WHERE A.NUM = B.NUM 

   说明:-- 

   SQL:    

   select * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and 系名称='"&strdepartmentname&"' and 专业名称='"&strprofessionname&"' order by 性别,生源地,高考总成绩 

   说明: 

   从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源) 

   SQL:   

   SELECT a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') AS telyear, 

    SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '01', a.factration)) AS JAN, 

    SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '02', a.factration)) AS FRI, 

    SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '03', a.factration)) AS MAR, 

    SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '04', a.factration)) AS APR, 

    SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '05', a.factration)) AS MAY, 

    SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '06', a.factration)) AS JUE, 

    SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '07', a.factration)) AS JUL, 

    SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '08', a.factration)) AS AGU, 

    SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '09', a.factration)) AS SEP, 

    SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '10', a.factration)) AS OCT, 

    SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '11', a.factration)) AS NOV, 

    SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '12', a.factration)) AS DEC 

   FROM (SELECT a.userper, a.tel, a.standfee, b.telfeedate, b.factration 

    FROM TELFEESTAND a, TELFEE b 

    WHERE a.tel = b.telfax) a 

   GROUP BY a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') 

   说明:四表联查问题:   

   SQL: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where ..... 

   说明:得到表中最小的未使用的ID号 

   SQL:  

   SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleID 

    FROM Handle 

    WHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a) 
  

posted @ 2007-04-10 17:10 一凡 阅读(235) | 评论 (0)编辑 收藏
转贴自:http://www.waynet.cn/conch/    

 

 插入排序:

 package org.rut.util.algorithm.support;

 import org.rut.util.algorithm.SortUtil;
 /**
  * @author treeroot
  * @since 2006-2-2
  * @version 1.0
  */
 public class InsertSort implements SortUtil.Sort{

     /* (non-Javadoc)
      * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
      */
     public void sort(int[] data) {
         int temp;
         for(int i=1;i<data.length;i++){
             for(int j=i;(j>0)&&(data[j]<data[j-1]);j--){
                 SortUtil.swap(data,j,j-1);
             }
         }        
     }

 }
 冒泡排序:

 package org.rut.util.algorithm.support;

 import org.rut.util.algorithm.SortUtil;

 /**
  * @author treeroot
  * @since 2006-2-2
  * @version 1.0
  */
 public class BubbleSort implements SortUtil.Sort{

     /* (non-Javadoc)
      * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
      */
     public void sort(int[] data) {
         int temp;
         for(int i=0;i<data.length;i++){
             for(int j=data.length-1;j>i;j--){
                 if(data[j]<data[j-1]){
                     SortUtil.swap(data,j,j-1);
                 }
             }
         }
     }

 }

 选择排序:

 package org.rut.util.algorithm.support;

 import org.rut.util.algorithm.SortUtil;

 /**
  * @author treeroot
  * @since 2006-2-2
  * @version 1.0
  */
 public class SelectionSort implements SortUtil.Sort {

     /*
      * (non-Javadoc)
      * 
      * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
      */
     public void sort(int[] data) {
         int temp;
         for (int i = 0; i < data.length; i++) {
             int lowIndex = i;
             for (int j = data.length - 1; j > i; j--) {
                 if (data[j] < data[lowIndex]) {
                     lowIndex = j;
                 }
             }
             SortUtil.swap(data,i,lowIndex);
         }
     }

 }

 Shell排序:

 package org.rut.util.algorithm.support;

 import org.rut.util.algorithm.SortUtil;

 /**
  * @author treeroot
  * @since 2006-2-2
  * @version 1.0
  */
 public class ShellSort implements SortUtil.Sort{

     /* (non-Javadoc)
      * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
      */
     public void sort(int[] data) {
         for(int i=data.length/2;i>2;i/=2){
             for(int j=0;j<i;j++){
                 insertSort(data,j,i);
             }
         }
         insertSort(data,0,1);
     }

     /**
      * @param data
      * @param j
      * @param i
      */
     private void insertSort(int[] data, int start, int inc) {
         int temp;
         for(int i=start+inc;i<data.length;i+=inc){
             for(int j=i;(j>=inc)&&(data[j]<data[j-inc]);j-=inc){
                 SortUtil.swap(data,j,j-inc);
             }
         }
     }

 }

 快速排序:

 package org.rut.util.algorithm.support;

 import org.rut.util.algorithm.SortUtil;

 /**
  * @author treeroot
  * @since 2006-2-2
  * @version 1.0
  */
 public class QuickSort implements SortUtil.Sort{

     /* (non-Javadoc)
      * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
      */
     public void sort(int[] data) {
         quickSort(data,0,data.length-1);        
     }
     private void quickSort(int[] data,int i,int j){
         int pivotIndex=(i+j)/2;
         //swap
         SortUtil.swap(data,pivotIndex,j);
         
         int k=partition(data,i-1,j,data[j]);
         SortUtil.swap(data,k,j);
         if((k-i)>1) quickSort(data,i,k-1);
         if((j-k)>1) quickSort(data,k+1,j);
         
     }
     /**
      * @param data
      * @param i
      * @param j
      * @return
      */
     private int partition(int[] data, int l, int r,int pivot) {
         do{
            while(data[++l]<pivot);
            while((r!=0)&&data[--r]>pivot);
            SortUtil.swap(data,l,r);
         }
         while(l<r);
         SortUtil.swap(data,l,r);        
         return l;
     }

 }
 改进后的快速排序:

 package org.rut.util.algorithm.support;

 import org.rut.util.algorithm.SortUtil;

 /**
  * @author treeroot
  * @since 2006-2-2
  * @version 1.0
  */
 public class ImprovedQuickSort implements SortUtil.Sort {

     private static int MAX_STACK_SIZE=4096;
     private static int THRESHOLD=10;
     /* (non-Javadoc)
      * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
      */
     public void sort(int[] data) {
         int[] stack=new int[MAX_STACK_SIZE];
         
         int top=-1;
         int pivot;
         int pivotIndex,l,r;
         
         stack[++top]=0;
         stack[++top]=data.length-1;
         
         while(top>0){
             int j=stack[top--];
             int i=stack[top--];
             
             pivotIndex=(i+j)/2;
             pivot=data[pivotIndex];
             
             SortUtil.swap(data,pivotIndex,j);
             
             //partition
             l=i-1;
             r=j;
             do{
                 while(data[++l]<pivot);
                 while((r!=0)&&(data[--r]>pivot));
                 SortUtil.swap(data,l,r);
             }
             while(l<r);
             SortUtil.swap(data,l,r);
             SortUtil.swap(data,l,j);
             
             if((l-i)>THRESHOLD){
                 stack[++top]=i;
                 stack[++top]=l-1;
             }
             if((j-l)>THRESHOLD){
                 stack[++top]=l+1;
                 stack[++top]=j;
             }
             
         }
         //new InsertSort().sort(data);
         insertSort(data);
     }
     /**
      * @param data
      */
     private void insertSort(int[] data) {
         int temp;
         for(int i=1;i<data.length;i++){
             for(int j=i;(j>0)&&(data[j]<data[j-1]);j--){
                 SortUtil.swap(data,j,j-1);
             }
         }       
     }

 }

 归并排序:

 package org.rut.util.algorithm.support;

 import org.rut.util.algorithm.SortUtil;

 /**
  * @author treeroot
  * @since 2006-2-2
  * @version 1.0
  */
 public class MergeSort implements SortUtil.Sort{

     /* (non-Javadoc)
      * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
      */
     public void sort(int[] data) {
         int[] temp=new int[data.length];
         mergeSort(data,temp,0,data.length-1);
     }
     
     private void mergeSort(int[] data,int[] temp,int l,int r){
         int mid=(l+r)/2;
         if(l==r) return ;
         mergeSort(data,temp,l,mid);
         mergeSort(data,temp,mid+1,r);
         for(int i=l;i<=r;i++){
             temp[i]=data[i];
         }
         int i1=l;
         int i2=mid+1;
         for(int cur=l;cur<=r;cur++){
             if(i1==mid+1)
                 data[cur]=temp[i2++];
             else if(i2>r)
                 data[cur]=temp[i1++];
             else if(temp[i1]<temp[i2])
                 data[cur]=temp[i1++];
             else
                 data[cur]=temp[i2++];            
         }
     }

 }

 改进后的归并排序:

 package org.rut.util.algorithm.support;

 import org.rut.util.algorithm.SortUtil;

 /**
  * @author treeroot
  * @since 2006-2-2
  * @version 1.0
  */
 public class ImprovedMergeSort implements SortUtil.Sort {

     private static final int THRESHOLD = 10;

     /*
      * (non-Javadoc)
      * 
      * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
      */
     public void sort(int[] data) {
         int[] temp=new int[data.length];
         mergeSort(data,temp,0,data.length-1);
     }

     private void mergeSort(int[] data, int[] temp, int l, int r) {
         int i, j, k;
         int mid = (l + r) / 2;
         if (l == r)
             return;
         if ((mid - l) >= THRESHOLD)
             mergeSort(data, temp, l, mid);
         else
             insertSort(data, l, mid - l + 1);
         if ((r - mid) > THRESHOLD)
             mergeSort(data, temp, mid + 1, r);
         else
             insertSort(data, mid + 1, r - mid);

         for (i = l; i <= mid; i++) {
             temp[i] = data[i];
         }
         for (j = 1; j <= r - mid; j++) {
             temp[r - j + 1] = data[j + mid];
         }
         int a = temp[l];
         int b = temp[r];
         for (i = l, j = r, k = l; k <= r; k++) {
             if (a < b) {
                 data[k] = temp[i++];
                 a = temp[i];
             } else {
                 data[k] = temp[j--];
                 b = temp[j];
             }
         }
     }

     /**
      * @param data
      * @param l
      * @param i
      */
     private void insertSort(int[] data, int start, int len) {
         for(int i=start+1;i<start+len;i++){
             for(int j=i;(j>start) && data[j]<data[j-1];j--){
                 SortUtil.swap(data,j,j-1);
             }
         }
     }

 }
 堆排序:

 package org.rut.util.algorithm.support;

 import org.rut.util.algorithm.SortUtil;

 /**
  * @author treeroot
  * @since 2006-2-2
  * @version 1.0
  */
 public class HeapSort implements SortUtil.Sort{

     /* (non-Javadoc)
      * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
      */
     public void sort(int[] data) {
         MaxHeap h=new MaxHeap();
         h.init(data);
         for(int i=0;i<data.length;i++)
             h.remove();
         System.arraycopy(h.queue,1,data,0,data.length);
     }

 
      private static class MaxHeap{
          
         
         void init(int[] data){
             this.queue=new int[data.length+1];
             for(int i=0;i<data.length;i++){
                 queue[++size]=data[i];
                 fixUp(size);
             }
         }
          
         private int size=0;

        private int[] queue;
                 
         public int get() {
             return queue[1];
         }

         public void remove() {
             SortUtil.swap(queue,1,size--);
             fixDown(1);
         }
         //fixdown
         private void fixDown(int k) {
             int j;
             while ((j = k << 1) <= size) {
                 if (j < size && queue[j]<queue[j+1])
                     j++; 
                 if (queue[k]>queue[j]) //不用交换
                     break;
                 SortUtil.swap(queue,j,k);
                 k = j;
             }
         }
         private void fixUp(int k) {
             while (k > 1) {
                 int j = k >> 1;
                 if (queue[j]>queue[k])
                     break;
                 SortUtil.swap(queue,j,k);
                 k = j;
             }
         }

     }

 }

  

 SortUtil:

 package org.rut.util.algorithm;

 import org.rut.util.algorithm.support.BubbleSort;
 import org.rut.util.algorithm.support.HeapSort;
 import org.rut.util.algorithm.support.ImprovedMergeSort;
 import org.rut.util.algorithm.support.ImprovedQuickSort;
 import org.rut.util.algorithm.support.InsertSort;
 import org.rut.util.algorithm.support.MergeSort;
 import org.rut.util.algorithm.support.QuickSort;
 import org.rut.util.algorithm.support.SelectionSort;
 import org.rut.util.algorithm.support.ShellSort;

 /**
  * @author treeroot
  * @since 2006-2-2
  * @version 1.0
  */
 public class SortUtil {
     public final static int INSERT = 1;

     public final static int BUBBLE = 2;

     public final static int SELECTION = 3;

     public final static int SHELL = 4;

     public final static int QUICK = 5;

     public final static int IMPROVED_QUICK = 6;

     public final static int MERGE = 7;

     public final static int IMPROVED_MERGE = 8;

     public final static int HEAP = 9;

     public static void sort(int[] data) {
         sort(data, IMPROVED_QUICK);
     }
     private static String[] name={
             "insert","bubble","selection","shell","quick","improved_quick","merge","improved_merge","heap"
     };
     
     private static Sort[] impl=new Sort[]{
             new InsertSort(),
             new BubbleSort(),
             new SelectionSort(),
             new ShellSort(),
             new QuickSort(),
             new ImprovedQuickSort(),
             new MergeSort(),
             new ImprovedMergeSort(),
             new HeapSort()
     };

     public static String toString(int algorithm){
         return name[algorithm-1];
     }
     
     public static void sort(int[] data, int algorithm) {
         impl[algorithm-1].sort(data);
     }

     public static interface Sort {
         public void sort(int[] data);
     }

     public static void swap(int[] data, int i, int j) {
         int temp = data[i];
         data[i] = data[j];
         data[j] = temp;
     }
 }

posted @ 2007-04-10 17:09 一凡 阅读(382) | 评论 (0)编辑 收藏
只能输入汉字:
 <input onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,'))">
 或者
 function onlychinese() 
 {
 if ((window.event.keyCode >=32) && (window.event.keyCode <= 126)) 
 {
 window.event.keyCode = 0 ;
 }
 } 
 只可输入数字和字母
 <input onkeyup="value=value.replace(/[\W]/g,') " onbeforepaste="clipboardData
 .setData('text',clipboardData.getData('text').replace(/[^\d]/g,'))">

 

 只能输入数字
 function txtSort_check()
 {    
        return event.keyCode>=48&&event.keyCode<=57 || event.keyCode>=96&&event.keyCode<=105 || event.keyCode==8 
        || event.keyCode==37 || event.keyCode==39;            
 }

  一些常用的正则表达式
 2006-1-13 16:25:28
 "^\d+$"  //非负整数(正整数 + 0) 
 "^[0-9]*[1-9][0-9]*$"  //正整数 
 "^((-\d+)|(0+))$"  //非正整数(负整数 + 0) 
 "^-[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
 /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日
 /^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年
 "^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil
 "(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?" //电话号码
 "^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$" //IP地址

 

 匹配中文字符的正则表达式: [\u4e00-\u9fa5]
 匹配双字节字符(包括汉字在内):[^\x00-\xff]
 匹配空行的正则表达式:\n[\s| ]*\r
 匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
 匹配首尾空格的正则表达式:(^\s*)|(\s*$)
 匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
 匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$
 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
 匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?
 匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$

 
 下表是元字符及其在正则表达式上下文中的行为的一个完整列表: 

 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。

 ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性,^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。 

 $ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性,$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。 

 * 匹配前面的子表达式零次或多次。 

 + 匹配前面的子表达式一次或多次。+ 等价于 {1,}。 

 ? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。 

 {n} n 是一个非负整数,匹配确定的n 次。

 {n,} n 是一个非负整数,至少匹配n 次。 

 {n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。

 ? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。 

 . 匹配除 "\n" 之外的任何单个字符。要匹配包括 ’\n’ 在内的任何字符,请使用象 ’[.\n]’ 的模式。 
 (pattern) 匹配pattern 并获取这一匹配。 

 (?:pattern) 匹配pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。 

 (?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。 

 (?!pattern) 负向预查,与(?=pattern)作用相反 

 x|y 匹配 x 或 y。 

 [xyz] 字符集合。 

 [^xyz] 负值字符集合。 

 [a-z] 字符范围,匹配指定范围内的任意字符。 

 [^a-z] 负值字符范围,匹配任何不在指定范围内的任意字符。 

 \b 匹配一个单词边界,也就是指单词和空格间的位置。

 \B 匹配非单词边界。 

 \cx 匹配由x指明的控制字符。 

 \d 匹配一个数字字符。等价于 [0-9]。 

 \D 匹配一个非数字字符。等价于 [^0-9]。 

 \f 匹配一个换页符。等价于 \x0c 和 \cL。 

 \n 匹配一个换行符。等价于 \x0a 和 \cJ。 

 \r 匹配一个回车符。等价于 \x0d 和 \cM。 

 \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。 

 \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 

 \t 匹配一个制表符。等价于 \x09 和 \cI。 

 \v 匹配一个垂直制表符。等价于 \x0b 和 \cK。 

 \w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。 

 \W 匹配任何非单词字符。等价于 ’[^A-Za-z0-9_]’。 

 \xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。

 \num 匹配 num,其中num是一个正整数。对所获取的匹配的引用。 

 \n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为后向引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。 

 \nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式,则 nm 为后向引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。 

 \nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。 

 \un 匹配 n,其中 n 是一个用四个十六进制数字表示的Unicode字符。 

 
 匹配中文字符的正则表达式: [u4e00-u9fa5]

 匹配双字节字符(包括汉字在内):[^x00-xff]

 应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

 String.prototype.len=function(){return this.replace([^x00-xff]/g,"aa").length;}

 匹配空行的正则表达式:n[s| ]*r

 匹配HTML标记的正则表达式:/<(.*)>.*|<(.*) />/ 

 匹配首尾空格的正则表达式:(^s*)|(s*$)

 应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下:

 String.prototype.trim = function()
 {
 return this.replace(/(^s*)|(s*$)/g, "");
 }

 利用正则表达式分解和转换IP地址:

 下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序:

 function IP2V(ip)
 {
 re=/(d+).(d+).(d+).(d+)/g //匹配IP地址的正则表达式
 if(re.test(ip))
 {
 return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
 }
 else
 {
 throw new Error("Not a valid IP address!")
 }
 }

 不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:

 var ip="10.100.20.168"
 ip=ip.split(".")
 alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))

 匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*

 匹配网址URL的正则表达式:http://( [w-]+.)+[w-]+(/[w- ./?%&=]*)?

 利用正则表达式去除字串中重复的字符的算法程序:

 var s="abacabefgeeii"
 var s1=s.replace(/(.).*1/g,"$1")
 var re=new RegExp("["+s1+"]","g")
 var s2=s.replace(re,"") 
 alert(s1+s2) //结果为:abcefgi

 我原来在CSDN上发贴寻求一个表达式来实现去除重复字符的方法,最终没有找到,这是我能想到的最简单的实现方法。思路是使用后向引用取出包括重复的字符,再以重复的字符建立第二个表达式,取到不重复的字符,两者串连。这个方法对于字符顺序有要求的字符串可能不适用。

 得用正则表达式从URL地址中提取文件名的javascript程序,如下结果为page1

 s="http://www.9499.net/page1.htm" 
 s=s.replace(/(.*/){0,}([^.]+).*/ig,"$2")
 alert(s)

 利用正则表达式限制网页表单里的文本框输入内容:

 用正则表达式限制只能输入中文:onkeyup="value="/value.replace(/["^u4E00-u9FA5]/g,')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,'))"

 用正则表达式限制只能输入全角字符: onkeyup="value="/value.replace(/["^uFF00-uFFFF]/g,')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^uFF00-uFFFF]/g,'))"

 用正则表达式限制只能输入数字:onkeyup="value="/value.replace(/["^d]/g,') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,'))"

 用正则表达式限制只能输入数字和英文:onkeyup="value="/value.replace(/[W]/g,"') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,'))"

posted @ 2007-04-10 16:49 一凡 阅读(352) | 评论 (0)编辑 收藏
Runtime r  =  Runtime.getRuntime();
String strCmd 
=   "" ;
    String sFile  = "d:\\aa.txt";
    String dFile = "d:\\bk\\";
try   {
            strCmd 
=   " cmd /C start copy  "   +  sFile  +   "   "   +  dFile  +   " \n cmd /C exit " ;
             r.exec(strCmd);

}
  catch (IOException e)  {
   e.printStackTrace();
}



posted @ 2007-03-28 10:32 一凡 阅读(637) | 评论 (0)编辑 收藏
希望给大家个提示:
     我的环境:jdk 1.5.08
                         tomcat 5.0.28
       1、在用到<convert converter="bean" match="com.willpower.testdwr.User"> 时出现 Error marshalling xxx.xxxxx   时:有可能是相应的bean没有默认构造函数造成的,我就是这个问题,加上即解决。
posted @ 2007-03-13 14:36 一凡 阅读(339) | 评论 (0)编辑 收藏

出现异常如下:

javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found

解决办法,下载xalan.jar到你的工程里或放在tomcat的commons/lib就可以了:
http://www.ibiblio.org/pub/mirrors/apache/xml/xalan-j

下载后找xalan.jar

posted @ 2007-03-12 14:11 一凡 阅读(377) | 评论 (0)编辑 收藏

出现异常如下:

javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found

解决办法,下载xalan.jar到你的工程里或放在tomcat的commons/lib就可以了:
http://www.ibiblio.org/pub/mirrors/apache/xml/xalan-j

下载后找xalan.jar

posted @ 2007-03-12 14:11 一凡 阅读(334) | 评论 (0)编辑 收藏
         ATF(AJAX Toolkit Framework)为 Eclipse 提供 Ajax 支持,其绑定当下最流行的 AJAX 框架(Dojo, Zimbra, Rico, etc),为 Eclipse 提供整合的模块。Eclipse 用户可以使用 AJAX Toolkit Framework 来编写 AJAX 应用程序。就像在 Eclipse 中开发平常的Java 程序一样,非常方便。
 一:下载
1、Eclipse Web Tools Project (WTP) 1.5 (and prerequisites)
http://mirrors.gamevil.com/pub/eclipse/webtools/downloads/drops/R1.5/R-1.5.2-200610261841/wtp-all-in-one-sdk-R-1.5.2-200610261841-win32.zip
2、Sun Java 1.4.2 JDK(或更高)
3、Tomcat 5 或以上 或其他WTP支持的Http服务器

4、XULRunner 
ftp://ftp.mozilla.org/pub/mozilla.org/xulrunner/nightly/contrib/2007-02-02-1.8.1.2pre/xulrunner-1.8.1.2pre.en-US.win32.zip

6、下载ATF
http://mirror.in.th/eclipse/webtools/atf/atf-0.2.1-v200702271030.zip

二、安装步骤:
  • 卸载以前版本的xulrunner.
    xulrunner --unregister-global
    xulrunner --unregister-user 
  • 使用新的 XULRunner 注册: 
    xulrunner --register-global
    xulrunner --register-user 
  • Eclipse安装ATF
    打开Eclipse, 选择 Help -> Software Updates -> Find and Install...  
    选择Search for new features to install  
    选择 Next  
    选择 New Archived Site...  
    选择 the location of the downloaded update site zip file  
    选择 Finish  
    选择 install all
    三、下载ATF插件的资源文件并copy到相应的目录里
     
  • F:\eclipse\plugins\org.eclipse.atf.personality.dojo.runtime_0.2.1.v200702271030\resources
         http://dojotoolkit.org/download
        下载解压后的目录里所有文件copy过去
  • F:\eclipse\plugins\org.eclipse.atf.personality.rico.runtime_0.2.1.v200702271030\resources
         prototype.js 和 rico.js 从这里 http://openrico.org/rico/downloads.page
        将这两个文件copy过去
  • F:\eclipse\plugins\org.eclipse.atf.personality.scriptaculous.runtime_1.0.0\resources
         http://script.aculo.us/dist/scriptaculous-js-1.7.0.zip
         下载解压后的目录里所有文件copy过去
  • F:\eclipse\plugins\org.eclipse.atf.javascript.jslint_0.2.1.v200702271030\resources
         http://www.jslint.com/fulljslint.js 
         将此文件copy过去
  • 四、在开始--运行里 %eclipse_home%\eclipse -clean即可

    看懂联系我:MSN:cnyqiao@hotmail.com

     

     


     

     

    posted @ 2007-03-08 15:57 一凡 阅读(1225) | 评论 (1)编辑 收藏
    仅列出标题
    共21页: First 上一页 13 14 15 16 17 18 19 20 21 下一页