zyskm用夢想丈量人生,用奔跑丈量激情

          #

          linux find

          Linux中find常見用法示例·find    path    -option    [    -print ]    [ -exec    -ok    command ]    {} \;
                      #-print 將查找到的文件輸出到標準輸出
          #-exec    command    {} \;       -----將查到的文件執(zhí)行command操作,{} 和 \;之間有空格
          #-ok 和-exec相同,只不過在操作前要詢用戶            ====================================================            -name    filename               #查找名為filename的文件
          -perm                         #按執(zhí)行權(quán)限來查找
          -user     username              #按文件屬主來查找
          -group groupname              #按組來查找
          -mtime    -n +n                 #按文件更改時間來查找文件,-n指n天以內(nèi),+n指n天以前
          -atime     -n +n                #按文件訪問時間來查GIN: 0px">-perm                          #按執(zhí)行權(quán)限來查找
          -user     username              #按文件屬主來查找
          -group groupname              #按組來查找
          -mtime    -n +n                 #按文件更改時間來查找文件,-n指n天以內(nèi),+n指n天以前
          -atime     -n +n                #按文件訪問時間來查找文件,-n指n天以內(nèi),+n指n天以前
          -ctime     -n +n                #按文件創(chuàng)建時間來查找文件,-n指n天以內(nèi),+n指n天以前
          -nogroup                      #查無有效屬組的文件,即文件的屬組在/etc/groups中不存在
          -nouser                       #查無有效屬主的文件,即文件的屬主在/etc/passwd中不存
          -newer    f1 !f2                找文件,-n指n天以內(nèi),+n指n天以前
          -ctime     -n +n                #按文件創(chuàng)建時間來查找文件,-n指n天以內(nèi),+n指n天以前
          -nogroup                      #查無有效屬組的文件,即文件的屬組在/etc/groups中不存在
          -nouser                       #查無有效屬主的文件,即文件的屬主在/etc/passwd中不存
          -newer    f1 !f2                #查更改時間比f1新但比f2舊的文件
          -type      b/d/c/p/l/f          #查是塊設(shè)備、目錄、字符設(shè)備、管道、符號鏈接、普通文件
          -size       n[c]                #查長度為n塊[或n字節(jié)]的文件
          -depth                        #使查找在進入子目錄前先行查找完本目錄
          -fstype                       #查更改時間比f1新但比f2舊的文件
          -mount                        #查文件時不跨越文件系統(tǒng)mount點
          -follow                       #如果遇到符號鏈接文件,就跟蹤鏈接所指的文件
          -cpio                         #對匹配的文件使用cpio命令,將他們備份到磁帶設(shè)備中
          -prune                        #忽略某個目錄            ====================================================
          $find    ~    -name    "*.txt"    -print      #在$HOME中查.txt文件并顯示
          $find    .     -name    "*.txt"    -print

                      $find    .     -name    "[A-Z]*"    -pri26nbsp;     #對匹配的文件使用cpio命令,將他們備份到磁帶設(shè)備中
          -prune                                #忽略某個目錄            $find    .     -name    "[A-Z]*"    -print    #查以大寫字母開頭的文件
          $find    /etc    -name    "host*"    -print #查以host開頭的文件
          $find    .    -name    "[a-z][a-z][0--9][0--9].txt"     -print    #查以兩個小寫字母和兩個數(shù)字開頭的txt文件
          $find .    -perm    755    -print
                      $find    .    -perm -007    -exec ls -l {} \;    #查所有用戶都可讀寫執(zhí)行的文件同-perm 777
          $find    . -type d    -print   打印目錄結(jié)構(gòu)
          $find    .  !    -type    d    -print  打印非目錄文件find /usr/include -name '*.h' -exec grep AF_INEF6 {} \; 因grep無法遞歸搜索子目錄,故可以和find相結(jié)合使用。 在/usr/include 所有子目錄中的.h文件中找字串AF_INEF6
          $find    .    -type l    -print            $find    .    -size    +1000000c    -print         #查長度大于1Mb的文件
          $find    .    -size    100c          -print        # 查長度為100c的文件
          $find    .    -size    +10    -print               #查長度超過期作廢10塊的文件(1塊=512字節(jié))            $cd /
                      $find    etc    home    apps     -depth    -print    | cpio    -ivcdC65536    -o    /dev/rmt0
                      $find    /etc -name "passwd*"    -exec grep    "cnscn"    {}    \;    #看是否存在cnscn用戶
          $find . -name "yao*"    | xargs file
                      $find    . -name "yao*"    |    xargs    echo     "" > /tmp/core.log
                      $find    . -name "yao*"    | xargs    chmod    o-w            ======================================================            find    -name april*                        在當前目錄下查找以april開始的文件
          find    -name    april*    fprint file          在當前目錄下查找以april開始的文件,并把結(jié)果輸出到file中
          find    -name ap* -o -name may*    查找以ap或may開頭的文件
          find    /mnt    -name tom.txt    -ftype vfat    在/mnt下查找名稱為tom.txt且文件系統(tǒng)類型為vfat的文件
          find    /mnt    -name t.txt ! -ftype vfat     在/mnt下查找名稱為tom.txt且文件系統(tǒng)類型不為vfat的文件
          find    /tmp    -name wa* -type l             在/tmp下查找名為wa開頭且類型為符號鏈接的文件
          find    /home    -mtime    -2                   在/home下查最近兩天內(nèi)改動過的文件
          find /home     -atime -1                    查1天之內(nèi)被存取過的文件
          find /home -mmin     +60                    在/home下查60分鐘前改動過的文件
          find /home    -amin    +30                    查最近30分鐘前被存取過的文件
          find /home    -newer    tmp.txt               在/home下查更新時間比tmp.txt近的文件或目錄
          find /home    -anewer    tmp.txt              在/home下查存取時間比tmp.txt近的文件或目錄
          find    /home    -used    -2                    列出文件或目錄被改動過之后,在2日內(nèi)被存取過的文件或目錄
          find    /home    -user cnscn                  列出/home目錄內(nèi)屬于用戶cnscn的文件或目錄
          find    /home    -uid    +501                   列出/home目錄內(nèi)用戶的識別碼大于501的文件或目錄
          find    /home    -group    cnscn                列出/home內(nèi)組為cnscn的文件或目錄
          find    /home    -gid 501                     列出/home內(nèi)組id為501的文件或目錄
          find    /home    -nouser                      列出/home內(nèi)不屬于本地用戶的文件或目錄
          find    /home    -nogroup                     列出/home內(nèi)不屬于本地組的文件或目錄
          find    /home     -name tmp.txt     -maxdepth    4    列出/home內(nèi)的tmp.txt 查時深度最多為3層
          find    /home    -name tmp.txt    -mindepth    3    從第2層開始查
          find    /home    -empty                       查找大小為0的文件或空目錄
          find    /home    -size    +512k                 查大于512k的文件
          find    /home    -size    -512k                 查小于512k的文件
          find    /home    -links    +2                   查硬連接數(shù)大于2的文件或目錄
          find    /home    -perm    0700                  查權(quán)限為700的文件或目錄
          find    /tmp    -name tmp.txt    -exec cat {} \;
                      find    /tmp    -name    tmp.txt    -ok    rm {} \;            find     /    -amin     -10         # 查找在系統(tǒng)中最后10分鐘訪問的文件
          find     /    -atime    -2           # 查找在系統(tǒng)中最后48小時訪問的文件
          find     /    -empty                # 查找在系統(tǒng)中為空的文件或者文件夾
          find     /    -group    cat          # 查找在系統(tǒng)中屬于 groupcat的文件
          find     /    -mmin    -5           # 查找在系統(tǒng)中最后5分鐘里修改過的文件
          find     /    -mtime    -1          #查找在系統(tǒng)中最后24小時里修改過的文件
          find     /    -nouser               #查找在系統(tǒng)中屬于作廢用戶的文件
          find     /    -user     fred         #查找在系統(tǒng)中屬于FRED這個用戶的文件

                      查當前目錄下的所有普通文件
          --------------------------------------------------------------------------------            # find . -type f -exec ls -l {} \;
          -rw-r--r--      1 root       root          34928 2003-02-25    ./conf/httpd.conf
          -rw-r--r--      1 root       root          12959 2003-02-25    ./conf/magic
          -rw-r--r--      1 root       root            180 2003-02-25    ./conf.d/README
          查當前目錄下的所有普通文件,并在- e x e c選項中使用ls -l命令將它們列出           
          =================================================
          在/ l o g s目錄中查找更改時間在5日以前的文件并刪除它們:
          $ find logs -type f -mtime +5 -exec    -ok    rm {} \;           
                      =================================================
          查詢當天修改過的文件
          [root@book class]# find    ./    -mtime    -1    -type f    -exec    ls -l    {} \;           
                      =================================================
          查詢文件并詢問是否要顯示
          [root@book class]# find    ./    -mtime    -1    -type f    -ok    ls -l    {} \; 
                      < ls ... ./classDB.inc.php > ? y
          -rw-r--r--      1 cnscn      cnscn         13709    1月 12 12:22 ./classDB.inc.php
                      [root@book class]# find    ./    -mtime    -1    -type f    -ok    ls -l    {} \; 
                      < ls ... ./classDB.inc.php > ? n
                      [root@book class]#            =================================================
          查詢并交給awk去處理
          [root@book class]# who    |    awk    '{print $1"\t"$2}'
                      cnscn     pts/0            =================================================
                      awk---grep---sed            [root@book class]# df    -k |    awk '{print $1}' |    grep    -v    'none' |    sed    s"/\/dev\///g"
          文件系統(tǒng)
          sda2
                      sda1
                      [root@book class]# df    -k |    awk '{print $1}' |    grep    -v    'none'
          文件系統(tǒng)
          /dev/sda2
                      /dev/sda1


                      1)在/tmp中查找所有的*.h,并在這些文件中查找“SYSCALL_VECTOR",最后打印出所有包含"SYSCALL_VECTOR"的文件名            A) find    /tmp    -name    "*.h"    | xargs    -n50    grep SYSCALL_VECTOR
                      B) grep    SYSCALL_VECTOR    /tmp/*.h | cut     -d':'    -f1| uniq > filename
                      C) find    /tmp    -name "*.h"    -exec grep "SYSCALL_VECTOR"    {}    \; -print           
                      2)find / -name filename -exec rm -rf {} \;
                           find / -name filename -ok rm -rf {} \;           
                      3)比如要查找磁盤中大于3M的文件:
          find . -size +3000k -exec ls -ld {} ;           
                      4)將find出來的東西拷到另一個地方
          find *.c -exec cp '{}' /tmp ';'            如果有特殊文件,可以用cpio,也可以用這樣的語法:
          find dir -name filename -print | cpio -pdv newdir           
                      6)查找2004-11-30 16:36:37時更改過的文件
          # A=`find ./ -name "*php"` |    ls -l --full-time $A 2>/dev/null | grep "2004-11-30 16:36:37           

          二、linux下find命令的用法

          1. 基本用法:
                find / -name 文件名                 find ver1.d ver2.d -name '*.c' -print    查找ver1.d,ver2.d *.c文件并打印     find . -type d -print 從當前目錄查找,僅查找目錄,找到后,打印路徑名。可用于打印目錄結(jié)構(gòu)。
          2. 無錯誤查找:
                find / -name access_log 2 >/dev/null
                      3. 按尺寸查找:
                find / -size 1500c (查找1,500字節(jié)大小的文件,c表示字節(jié))
                find / -size +1500c (查找大于1,500字節(jié)大小的文件,+表示大于)   
                            find / -size +1500c (查找小于1,500字節(jié)大小的文件,-表示小于)   
          4. 按時間:
                find / -amin n 最后n分鐘
                find / -atime n 最后n天
                find / -cmin n 最后n分鐘改變狀態(tài)
                find / -ctime n 最后n天改變狀態(tài)
          5. 其它:
                find / -empty 空白文件、空白文件夾、沒有子目錄的文件夾
                find / -false 查找系統(tǒng)中總是錯誤的文件
                find / -fstype type 找存在于指定文件系統(tǒng)的文件,如type為ext2
                            find / -gid n 組id為n的文件
                find / -group gname 組名為gname的文件
                find / -depth n 在某層指定目錄中優(yōu)先查找文件內(nèi)容
                find / -maxdepth levels 在某個層次目錄中按遞減方式查找
          6. 邏輯
                -and 條件與 -or 條件或
          7. 查找字符串
                find . -name '*.html' -exec grep 'mailto:'{}

          posted @ 2012-11-29 15:45 zyskm 閱讀(283) | 評論 (0)編輯 收藏

          linux上ln命令詳細說明

          ln是linux中又一個非常重要命令,它的功能是為某一個文件在另外一個位置建立一個同不的鏈接,這個命令最常用的參數(shù)是-s,具體用法是:ln –s 源文件 目標文件。
            當我們需要在不同的目錄,用到相同的文件時,我們不需要在每一個需要的目錄下都放一個必須相同的文件,我們只要在某個固定的目錄,放上該文件,然后在 其它的目錄下用ln命令鏈接(link)它就可以,不必重復(fù)的占用磁盤空間。例如:ln –s /bin/less /usr/local/bin/less
            -s 是代號(symbolic)的意思。
            這里有兩點要注意:第一,ln命令會保持每一處鏈接文件的同步性,也就是說,不論你改動了哪一處,其它的文件都會發(fā)生相同的變化;第二,ln的鏈接又 軟鏈接和硬鏈接兩種,軟鏈接就是ln –s ** **,它只會在你選定的位置上生成一個文件的鏡像,不會占用磁盤空間,硬鏈接ln ** **,沒有參數(shù)-s, 它會在你選定的位置上生成一個和源文件大小相同的文件,無論是軟鏈接還是硬鏈接,文件都保持同步變化。
            如果你用ls察看一個目錄時,發(fā)現(xiàn)有的文件后面有一個@的符號,那就是一個用ln命令生成的文件,用ls –l命令去察看,就可以看到顯示的link的路徑了。
            指令詳細說明
            指令名稱 : ln
            使用權(quán)限 : 所有使用者
            使用方式 : ln [options] source dist,其中 option 的格式為 :
            [-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
            [--help] [--version] [--]
            說明 : Linux/Unix 檔案系統(tǒng)中,有所謂的連結(jié)(link),我們可以將其視為檔案的別名,而連結(jié)又可分為兩種 : 硬連結(jié)(hard link)與軟連結(jié)(symbolic link),硬連結(jié)的意思是一個檔案可以有多個名稱,而軟連結(jié)的方式則是產(chǎn)生一個特殊的檔案,該檔案的內(nèi)容是指向另一個檔案的位置。硬連結(jié)是存在同一個檔 案系統(tǒng)中,而軟連結(jié)卻可以跨越不同的檔案系統(tǒng)。
            ln source dist 是產(chǎn)生一個連結(jié)(dist)到 source,至于使用硬連結(jié)或軟鏈結(jié)則由參數(shù)決定。
            不論是硬連結(jié)或軟鏈結(jié)都不會將原本的檔案復(fù)制一份,只會占用非常少量的磁碟空間。
            -f : 鏈結(jié)時先將與 dist 同檔名的檔案刪除
            -d : 允許系統(tǒng)管理者硬鏈結(jié)自己的目錄
            -i : 在刪除與 dist 同檔名的檔案時先進行詢問
            -n : 在進行軟連結(jié)時,將 dist 視為一般的檔案
            -s : 進行軟鏈結(jié)(symbolic link)
            -v : 在連結(jié)之前顯示其檔名
            -b : 將在鏈結(jié)時會被覆寫或刪除的檔案進行備份
            -S SUFFIX : 將備份的檔案都加上 SUFFIX 的字尾
            -V METHOD : 指定備份的方式
            --help : 顯示輔助說明
            --version : 顯示版本
            范例 :
            將檔案 yy 產(chǎn)生一個 symbolic link : zz
            ln -s yy zz
            將檔案 yy 產(chǎn)生一個 hard link : zz
            ln yy xx

          posted @ 2012-11-29 14:31 zyskm 閱讀(194) | 評論 (0)編輯 收藏

          Linux的變量

          1.Linux的變量種類

            按變量的生存周期來劃分,Linux變量可分為兩類:
            1.1 永久的:需要修改配置文件,變量永久生效。

            1.2 臨時的:使用export命令聲明即可,變量在關(guān)閉shell時失效。

          Linux 的變量可分為兩類:環(huán)境變量和本地變量
           
          環(huán)境變量,或者稱為全局變量,存在與所有的shell 中,在你登陸系統(tǒng)的時候就已經(jīng)有了相應(yīng)的系統(tǒng)定義的環(huán)境變量了。Linux 的環(huán)境變量具有繼承性,即子shell 會繼承父shell 的環(huán)境變量。
           
          本地變量,當前shell 中的變量,很顯然本地變量中肯定包含環(huán)境變量。Linux 的本地變量的非環(huán)境變量不具備繼承性。
           
          Linux 中環(huán)境變量的文件
           
              當你進入系統(tǒng)的時候,linux 就會為你讀入系統(tǒng)的環(huán)境變量,這些環(huán)境變量存放在什么地方,那就是環(huán)境變量的文件中。Linux 中有很多記載環(huán)境變量的文件,它們被系統(tǒng)讀入是按照一定的順序的。
           
          1.    /etc/profile :
           
          此文件為系統(tǒng)的環(huán)境變量,它為每個用戶設(shè)置環(huán)境信息,當用戶第一次登錄時,該文件被執(zhí)行。

            2.設(shè)置變量的三種方法

            2.1 在/etc/profile文件中添加變量【對所有用戶生效(永久的)】

            用VI在文件/etc/profile文件中增加變量,該變量將會對Linux下所有用戶有效,并且是“永久的”。

            例如:編輯/etc/profile文件,添加CLASSPATH變量

            # vi /etc/profile

            export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

            注:修改文件后要想馬上生效還要運行# source /etc/profile不然只能在下次重進此用戶時生效。

            2.2 在用戶目錄下的.bash_profile文件中增加變量【對單一用戶生效(永久的)】

            用VI在用戶目錄下的.bash_profile文件中增加變量,改變量僅會對當前用戶有效,并且是“永久的”。

            例如:編輯guok用戶目錄(/home/guok)下的.bash_profile

            $ vi /home/guok/.bash.profile

            添加如下內(nèi)容:

            export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

            注:修改文件后要想馬上生效還要運行$ source /home/guok/.bash_profile不然只能在下次重進此用戶時生效。

            2.3 直接運行export命令定義變量【只對當前shell(BASH)有效(臨時的)】

            在shell的命令行下直接使用[export 變量名=變量值]
          定義變量,該變量只在當前的shell(BASH)或其子shell(BASH)下是有效的,shell關(guān)閉了,變量也就失效了,再打開新shell時就沒有這個變量,需要使用的話還需要重新定義。

            3.環(huán)境變量的查看

            3.1 使用echo命令查看單個環(huán)境變量。例如:

            echo $PATH

            3.2 使用env查看所有環(huán)境變量。例如:

            env

            3.3 使用set查看所有本地定義的環(huán)境變量。

            unset可以刪除指定的環(huán)境變量。

            4.常用的環(huán)境變量

            PATH 決定了shell將到哪些目錄中尋找命令或程序

            HOME 當前用戶主目錄

            HISTSIZE 歷史記錄數(shù)

            LOGNAME 當前用戶的登錄名

            HOSTNAME 指主機的名稱

            SHELL   當前用戶Shell類型

            LANGUGE  語言相關(guān)的環(huán)境變量,多語言可以修改此環(huán)境變量

            MAIL   當前用戶的郵件存放目錄

            PS1   基本提示符,對于root用戶是#,對于普通用戶是$

          posted @ 2012-11-29 14:11 zyskm 閱讀(441) | 評論 (0)編輯 收藏

          linux chmod,chown

          指令名稱 : chmod
          使用權(quán)限 : 所有使用者
           
          使用方式 : chmod [-cfvR] [--help] [--version] mode file...
           
          說明 : Linux/Unix 的檔案存取權(quán)限分為三級 : 檔案擁有者、群組、其他。利用 chmod 可以控制檔案如何被他人所存取。
          只能文件屬主或特權(quán)用戶才能使用該功能來改變文件存取模式。mode可以是數(shù)字形式或以who opcode permission形式表示。who是可選的,默認是a(所有用戶)。只能選擇一個opcode(操作碼)。可指定多個mode,以逗號分開。

          options:

          -c,--changes
          只輸出被改變文件的信息

          -f,--silent,--quiet
          當chmod不能改變文件模式時,不通知文件的用戶

          --help
          輸出幫助信息。

          -R,--recursive
          可遞歸遍歷子目錄,把修改應(yīng)到目錄下所有文件和子目錄

          --reference=filename
          參照filename的權(quán)限來設(shè)置權(quán)限

          -v,--verbose
          無論修改是否成功,輸出每個文件的信息

          --version
          輸出版本信息。

          who

          u
          用戶

          g

          o
          其它

          a
          所有用戶(默認)

          opcode

          +
          增加權(quán)限

          -
          刪除權(quán)限

          =
          重新分配權(quán)限

          permission

          r

          w

          x
          執(zhí)行

          s
          設(shè)置用戶(或組)的ID號

          t
          設(shè)置粘著位(sticky bit),防止文件或目錄被非屬主刪除

          u
          用戶的當前權(quán)限

          g
          組的當前權(quán)限

          o
          其他用戶的當前權(quán)限

          作為選擇,我們多數(shù)用三位八進制數(shù)字的形式來表示權(quán)限,第一位指定屬主的權(quán)限,第二位指定組權(quán)限,第三位指定其他用戶的權(quán)限,每位通過4(讀)、2(寫)、1(執(zhí)行)三種數(shù)值的和來確定權(quán)限。如6(4+2)代表有讀寫權(quán),7(4+2+1)有讀、寫和執(zhí)行的權(quán)限。

          還可設(shè)置第四位,它位于三位權(quán)限序列的前面,第四位數(shù)字取值是4,2,1,代表意思如下:

          4,執(zhí)行時設(shè)置用戶ID,用于授權(quán)給基于文件屬主的進程,而不是給創(chuàng)建此進程的用戶。

          2,執(zhí)行時設(shè)置用戶組ID,用于授權(quán)給基于文件所在組的進程,而不是基于創(chuàng)建此進程的用戶。

          1,設(shè)置粘著位。

          實例:

          $ chmod u+x file                      給file的屬主增加執(zhí)行權(quán)限
          $ chmod 751 file                      給file的屬主分配讀、寫、執(zhí)行(7)的權(quán)限,給file的所在組分配讀、執(zhí)行(5)的權(quán)限,給其他用戶分配執(zhí)行(1)的權(quán)限
          $ chmod u=rwx,g=rx,o=x file      上例的另一種形式
          $ chmod =r file                     為所有用戶分配讀權(quán)限
          $ chmod 444 file                   同上例
          $ chmod a-wx,a+r   file          同上例
          $ chmod -R u+r directory           遞歸地給directory目錄下所有文件和子目錄的屬主分配讀的權(quán)限
          $ chmod 4755                            設(shè)置用ID,給屬主分配讀、寫和執(zhí)行權(quán)限,給組和其他用戶分配讀、執(zhí)行的權(quán)限。


          指令名稱 : chown
           使用權(quán)限 : root
           
          使用方式 : chown[-cfhvR] [--help] [--version] user[:group] file...
           
          說明 : Linux/Unix 是多人多工作業(yè)系統(tǒng),所有的檔案皆有擁有者。利用 chown 可以將檔案的擁有者加以改變。一般來說,這個指令只有是由系統(tǒng)管理者(root)所使用,一般使用者沒有權(quán)限可以改變別人的檔案擁有者,也沒有權(quán)限可以自己的檔案擁有者改設(shè)為別人。只有系統(tǒng)管理者(root)才有這樣的權(quán)限。
           

          posted @ 2012-11-29 14:02 zyskm 閱讀(304) | 評論 (0)編輯 收藏

          eclipse中xsd的驗證問題cvc-complex-type error with xsd

          基于spring開發(fā)了個自定義標簽,功能測試正常,在myeclipse中提示編譯錯誤:
          Multiple annotations found at this line:
              - cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'fw:annotation-handler'.
              - schema_reference.4: Failed to read schema document 'http://www.300.cn/schema/annotation-handler.xsd', because 1) could not find the
               document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.
          這個問題在以前改動struts配置文件的時候也出現(xiàn)過。在引入一些第三方j(luò)ar容易出現(xiàn)這個問題。
          雖然不影響使用,但是看著挺討厭的,找了一下解決方法。
          菜單-->windows-->prefreneces 找到XML Catalog,在User Specified Entries添加xsd文件
          有兩個地方要注意:
          1.Key type設(shè)置為Schema location;
          2.key 設(shè)置虛擬xsd地址,即
          xsi:schemaLocation=" http://www.springframework.org/schema/task
                                   http://www.springframework.org/schema/task/spring-task-3.0.xsd“
          名稱對后邊的這一個。

          posted @ 2012-06-27 11:09 zyskm 閱讀(2874) | 評論 (0)編輯 收藏

          java不是那么風(fēng)光了

          自從搬到東邊住以后就很少去海淀圖書城了,因為想?yún)⒓?1月的軟考,端午去海圖找本考試大綱。
          前幾年去海圖的時候,java方面的圖書都放在最顯眼的地方,能占好幾排書架,現(xiàn)在已經(jīng)被andriod、ios取代。找了一圈才在一個不起眼的角落找到j(luò)ava系列圖書。c/c++這樣的書倒不見減少,比印象中還有增加。
          從書市上看java最風(fēng)光的時候已經(jīng)過去了,一直做java方面的開發(fā),對這方面的變化不敏感,還是賣書的對市場感受更直接。
          各領(lǐng)風(fēng)騷好幾年。

          posted @ 2012-06-26 09:50 zyskm 閱讀(1411) | 評論 (4)編輯 收藏

          問題分析與決策(蘭德)

          這幾天抽空看了本《問題分析與決策》,蘭德公司出版的,就是那個預(yù)言中國將出兵朝鮮的公司。挺好的一本書,不知道為什么中文版的特別少,找了半天。
          老外做研究的風(fēng)格,很少那種大而無當?shù)目赵挘瑢栴}分析的過程和分析者的心理活動做了大量研究工作。
          我做過一段時間的系統(tǒng)分析工作,書中有些觀點讓人看起來心有戚戚焉,還有部分觀點是自己沒想到的,讀后很是能解惑。

          做些簡單摘錄

          很多人采用的處理問題與決策的辦法,根本沒有多大用處,甚至完全沒有用處。

          引言
          蘭德提出這種問題分析方法的思路,從一個公司的某一個問題著手,追溯到解決這一問題的程序,仔細剖視每一步驟中的思想過程。
          根據(jù)這些研究得出了很多概念和方法,認為問題分析與決策時管理上的行為,必須自覺和有系統(tǒng)的去做。
          而且必要的話,還應(yīng)該記錄下來。

          分析問題是一項依照邏輯體系而進行的程序,首先是確定問題,然后是經(jīng)過分析以及尋求原因,最后做決定。
          每個階段包括若干基本的概念,其中一項基本概念是,一個問題乃是一件事“應(yīng)該怎么樣”和“事實上是怎么樣的”兩者之間的偏差。
          另一項概念是,這種偏差是由于某一種“變化”二造成的。除非先把這一變化準確的予以確定,否則一切糾正這一偏差的措施都只是揣測而已。

          概念與方法
          問題分析的兩個主要概念:
          1.每個問題都是標準的預(yù)期效果所發(fā)生的偏差;
          2.某種變化是造成這一問題的根本原因。

          分析問題的七項基本概念
          1.有標準;
          2.問題就是情況與標準之間的偏差
          3.偏差要準確的認定
          4.分析問題的獨特性,受影響和沒受影響部分各有什么特點,區(qū)分開來;
          5.只考慮與特殊變化有關(guān)的情況,通過界定問題范圍找出原因。
          6.造成偏差的原因是從分析問題時發(fā)現(xiàn)的變化中推導(dǎo)出來的 。
          7.最可能造成偏差的原因,是能解釋界定范圍內(nèi)一切事實的那一項原因。

          如何界定一個問題

          1.什么;2時間;3.地點4.幅度
          如何尋求特點與變化
          任何問題發(fā)生的原因,乃是一種變化;這種變化的影響是有限度的,只在某些地方有影響,在其他地方?jīng)]有影響。
          這種變化,只存在于特定的范圍之內(nèi),或者只發(fā)生與那些可以區(qū)分出問題的“是”的一面某些因素上。
          因此,要追究什么樣的變化會發(fā)生某一種影響,最有效的方法是只尋求那些僅存在于界定問題時所發(fā)現(xiàn)的各項特點的變化。
          我們要找出來把事物區(qū)分開來的因素,分析問題的人必須從事物的不同點去思考。
          (么東西出了問題,不是什么出了問題,減小范圍)
          發(fā)生變化的線索就在,區(qū)分“是”與“不是”的特點中。
          能看出特點與變化的能力是智慧的主要表現(xiàn)之一,在問題分析上是非常重要的。
          一個問題的形成可能受許多因素的影響,但是真正動搖了事態(tài)均衡而引發(fā)問題的卻只有一種變化。
          事先不界定問題和研求特點,一發(fā)現(xiàn)某項變化立即斷定這就是問題的原因所在是很危險的。


          決策分析
          1.訂立決策的目標;
          2.依據(jù)重要性將目標分類;
          3.擬定可供選擇的措施;
          4.把各種可行的辦法與目標加以對照衡量;
          5.選擇最好的辦法作為暫時決策;
          6.研究決策是否會有不良影響;
          7.同時采取防止不良后果的措施。

          posted @ 2012-06-20 10:59 zyskm 閱讀(1739) | 評論 (0)編輯 收藏

          工作流的價值

          之前做過一版工作流引擎,自己開發(fā)的。這段時間又以jbpm為內(nèi)核做了一版流程系統(tǒng),有些思考就記錄下來。
          有一句話說的好,如果你手里有一把錘子你就看什么都像釘子。做流程系統(tǒng)的時候也遇到這類現(xiàn)象,因為對流程系統(tǒng)的不熟悉,在開發(fā)過程中就想到處都用工作流來處理問題。
          其實引入一個新的東西,一定要先搞明白的它的適用場景,有什么價值。把握了這點后結(jié)合具體場景,就能很好的使用,而不會亂用。
          一、工作流適用場景
          以下兩種情況需要引入流程系統(tǒng)
          1.分散系統(tǒng)整合(企業(yè)應(yīng)用集成)
          2.簡化業(yè)務(wù)系統(tǒng)的開發(fā);
          工作流的價值
          1.業(yè)務(wù)流程獨立化;
          2.優(yōu)化改進流程更容易;
          3.提供統(tǒng)一的監(jiān)控頁面。
          Ⅰ 、相對于分散系統(tǒng),提供了統(tǒng)一的操作和監(jiān)控頁面。對用戶更友好,過程可監(jiān)控,業(yè)務(wù)規(guī)則更明確。
          1.業(yè)務(wù)流程獨立化,業(yè)務(wù)規(guī)則不僅僅存在與工作人員的頭腦中。
          2.提供了統(tǒng)一的監(jiān)控界面,實現(xiàn)業(yè)務(wù)過程可監(jiān)控;
          3.有明確的規(guī)則,可以監(jiān)控運行情況,為流程的優(yōu)化提供了便利;
          4.對用戶更友好;
          Ⅱ 、相對于傳統(tǒng)業(yè)務(wù)系統(tǒng)方式
          1.業(yè)務(wù)流程獨立化,業(yè)務(wù)規(guī)則不會淹沒于業(yè)務(wù)系統(tǒng)代碼中。避免業(yè)務(wù)系統(tǒng)開發(fā)完成后再次改動成本高的情況。
          2.提供了統(tǒng)一的監(jiān)控界面,實現(xiàn)業(yè)務(wù)過程可監(jiān)控;原業(yè)務(wù)系統(tǒng)提供的報表對環(huán)節(jié)執(zhí)行時間可能信息不足,一般只是簡單反應(yīng)狀態(tài)變化。
          3.有明確的規(guī)則,可以監(jiān)控運行情況,為流程的優(yōu)化提供了便利;
          4.對于工作人員來講,這些改進其實是透明的,從用戶體驗的角度沒有什么變化。
           所以對原業(yè)務(wù)系統(tǒng)的用戶來講,變化不大。引入流程系統(tǒng)更多的是為了監(jiān)控和優(yōu)化流程的方便,是從管理的角度考慮問題。
          從流程系統(tǒng)提供的待辦事項列表進行操作,還是從業(yè)務(wù)系統(tǒng)的功能菜單進行操作,哪個更友好是UE設(shè)計的問題,跟流程系統(tǒng)無關(guān)。
          業(yè)務(wù)系統(tǒng)功能菜單的劃分可能相對于待辦事項列表更直觀、定位更準確。(見下圖紅色箭頭對兩種方式的表示)
          考慮到業(yè)務(wù)流程的復(fù)雜性,對于企業(yè)信息化系統(tǒng)引入流程系統(tǒng)可以便于優(yōu)化流程,對于成熟的業(yè)務(wù)系統(tǒng)如財務(wù)軟件引入流程系統(tǒng)完全沒有必要。
           
          補充說明:
          1.當前任務(wù)列表方式,需要用戶不停的查看有沒有新任務(wù)到來;優(yōu)點是在一個頁面可以看到全部待辦事項。
          2.業(yè)務(wù)系統(tǒng)功能菜單方式,需要用戶不停的查詢工作進展并作出處理。優(yōu)點是任務(wù)類型劃分更明確;
          二、業(yè)務(wù)系統(tǒng)接入方式
          1.在jsp頁面增加環(huán)節(jié)信息(環(huán)節(jié)編號,流程編號...);
          2.業(yè)務(wù)系統(tǒng)aciton不變;
          3.在業(yè)務(wù)系統(tǒng)action完成操作后,流程攔截器處理流程變化并記錄到數(shù)據(jù)庫;
          4.流程監(jiān)控頁面和待辦事項列表,不斷從流程數(shù)據(jù)庫查詢。
          5.對于專業(yè)性比價強的的狀態(tài)值還是在業(yè)務(wù)系統(tǒng)維護,避免流程系統(tǒng)壓力過大。在需要監(jiān)控改進的業(yè)務(wù)點交由流程系統(tǒng)調(diào)度,其它部分還是由業(yè)務(wù)系統(tǒng)處理。


          --------------------------------------
          下邊是對struts項目接入流程系統(tǒng)的一個分析
          1.業(yè)務(wù)系統(tǒng)jsp,action調(diào)用關(guān)系

          2.采用攔截器在業(yè)務(wù)系統(tǒng)action執(zhí)行完成后,進行流程驅(qū)動,并在下一個jsp頁面注入流程信息。


          主要邏輯都在beforeResult()方法中。
          3.數(shù)據(jù)結(jié)構(gòu)

          數(shù)據(jù)結(jié)構(gòu)說明:
          1.對于通用的流程數(shù)據(jù)可以在beforeResult()方法自動嵌入,為考慮交互效果在jsp自行設(shè)置流程信息;
          2.jsp頁面流程數(shù)據(jù)應(yīng)該包括:
          1.nodeName
          節(jié)點名稱,環(huán)節(jié)在流程定義中的名稱;
          2.transitionNames
          流向名稱列表,需要作出選擇的列表。
          3.entityId
          實體id,用于查詢流程實例ID。
          3.在action執(zhí)行完成后驅(qū)動流程所需要的數(shù)據(jù):
          1.definitionId
          流程定義,說明是新啟動一個流程。
          2.nodeName
          節(jié)點名稱,根據(jù)流程實例ID和節(jié)點名稱查詢?nèi)蝿?wù)ID,每個節(jié)點只能是單任務(wù)的,否則jsp頁面無法提供taskId.
          3.transitionName
          流向名稱,根據(jù)流向選擇流程下一步跳轉(zhuǎn)的節(jié)點。串行節(jié)點不用transitionName 可為空。
          4.entityId
          實體id,查詢流程實例ID用。
          4.對與工作流無關(guān)的action實行過濾,不做處理
          兩種過濾方式:
          1.在action方法加注解;
          2.在數(shù)據(jù)結(jié)構(gòu)中增加數(shù)據(jù)項標記。
          5.對與工作流無關(guān)的jsp頁面,不使用工作流tag即可。
           
          -----------------------------
          上邊是我一開始的想法,后來和同事討論后又做了些調(diào)整。編輯web文字比較麻煩,就不合在一起了。
          1.對執(zhí)行業(yè)務(wù)操作的action和進入jsp頁面的初始化action進行分類;

          2.參數(shù)傳遞過程補充說明

          一個分為三步
          倒著說
          第三步,功能頁面jsp在提交參數(shù)時需附加(節(jié)點名稱、流向名稱、工單編號),流程引擎才能驅(qū)動流程;
          第二步,要能夠向第三步提供數(shù)據(jù),jsp頁面必須包含(節(jié)點名稱、流向名稱列表、工單編號),這些數(shù)據(jù)有兩個來源:1.收到在jsp頁面寫入;2.從第一步接收。
          第一步,有同事建議,提供節(jié)點和資源路徑的關(guān)系表,通過資源路徑查找節(jié)點名稱。減少流程系統(tǒng)對業(yè)務(wù)系統(tǒng)的侵入。
           
           ----------------------------------
          上傳的時候圖片丟了,重新補一下。
           

          posted @ 2012-06-19 16:01 zyskm 閱讀(1204) | 評論 (0)編輯 收藏

          Restful架構(gòu)

           今天抽空整理些有關(guān)rest方面的理論。主要參考了幾篇網(wǎng)上的文章,做了些整理,原文見附錄。

          一、起源

          越來越多的人開始意識到,網(wǎng)站即軟件,而且是一種新型的軟件。
          這種"互聯(lián)網(wǎng)軟件"采用客戶端/服務(wù)器模式,建立在分布式體系上,通過互聯(lián)網(wǎng)通信,具有高延時(high latency)、高并發(fā)等特點。
          網(wǎng)站開發(fā),完全可以采用軟件開發(fā)的模式。但是傳統(tǒng)上,軟件和網(wǎng)絡(luò)是兩個不同的領(lǐng)域,很少有交集;軟件開發(fā)主要針對單機環(huán)境,網(wǎng)絡(luò)則主要研究系統(tǒng)之間的通信。互聯(lián)網(wǎng)的興起,使得這兩個領(lǐng)域開始融合,現(xiàn)在我們必須考慮,如何開發(fā)在互聯(lián)網(wǎng)環(huán)境中使用的軟件。
          RESTful架構(gòu),就是一種互聯(lián)網(wǎng)軟件架構(gòu)。它結(jié)構(gòu)清晰、符合標準、易于理解、擴展方便,所以正得到越來越多網(wǎng)站的采用。
           

          二、名稱

          Fielding將他對互聯(lián)網(wǎng)軟件的架構(gòu)原則,定名為REST,即Representational State Transfer的縮寫。我對這個詞組的翻譯是"表現(xiàn)層狀態(tài)轉(zhuǎn)化"。

          如果一個架構(gòu)符合REST原則,就稱它為RESTful架構(gòu)。

          要理解RESTful架構(gòu),最好的方法就是去理解Representational State Transfer這個詞組到底是什么意思,它的每一個詞代表了什么涵義。如果你把這個名稱搞懂了,也就不難體會REST是一種什么樣的設(shè)計。

          三、資源(Resources)

          REST的名稱"表現(xiàn)層狀態(tài)轉(zhuǎn)化"中,省略了主語。"表現(xiàn)層"其實指的是"資源"(Resources)的"表現(xiàn)層"。

          所謂"資源",就是網(wǎng)絡(luò)上的一個實體,或者說是網(wǎng)絡(luò)上的一個具體信息。它可以是一段文本、一張圖片、一首歌曲、一種服務(wù),總之就是一個具體的實在。你可以用一個URI(統(tǒng)一資源定位符)指向它,每種資源對應(yīng)一個特定的URI。要獲取這個資源,訪問它的URI就可以,因此URI就成了每一個資源的地址或獨一無二的識別符。

          所謂"上網(wǎng)",就是與互聯(lián)網(wǎng)上一系列的"資源"互動,調(diào)用它的URI。

          四、表現(xiàn)層(Representation)

          "資源"是一種信息實體,它可以有多種外在表現(xiàn)形式。我們把"資源"具體呈現(xiàn)出來的形式,叫做它的"表現(xiàn)層"(Representation)。

          比如,文本可以用txt格式表現(xiàn),也可以用HTML格式、XML格式、JSON格式表現(xiàn),甚至可以采用二進制格式;圖片可以用JPG格式表現(xiàn),也可以用PNG格式表現(xiàn)。

          URI只代表資源的實體,不代表它的形式。嚴格地說,有些網(wǎng)址最后的".html"后綴名是不必要的,因為這個后綴名表示格式,屬于"表現(xiàn)層"范疇,而URI應(yīng)該只代表"資源"的位置。它的具體表現(xiàn)形式,應(yīng)該在HTTP請求的頭信息中用Accept和Content-Type字段指定,這兩個字段才是對"表現(xiàn)層"的描述。

          五、狀態(tài)轉(zhuǎn)化(State Transfer)

          訪問一個網(wǎng)站,就代表了客戶端和服務(wù)器的一個互動過程。在這個過程中,勢必涉及到數(shù)據(jù)和狀態(tài)的變化。

          互聯(lián)網(wǎng)通信協(xié)議HTTP協(xié)議,是一個無狀態(tài)協(xié)議。這意味著,所有的狀態(tài)都保存在服務(wù)器端。因此,如果客戶端想要操作服務(wù)器,必須通過某種手段,讓服務(wù)器端發(fā)生"狀態(tài)轉(zhuǎn)化"(State Transfer)。而這種轉(zhuǎn)化是建立在表現(xiàn)層之上的,所以就是"表現(xiàn)層狀態(tài)轉(zhuǎn)化"。

          客戶端用到的手段,只能是HTTP協(xié)議。具體來說,就是HTTP協(xié)議里面,四個表示操作方式的動詞:GET、POST、PUT、DELETE。它們分別對應(yīng)四種基本操作:GET用來獲取資源,POST用來新建資源(也可以用于更新資源),PUT用來更新資源,DELETE用來刪除資源。

          六、綜述

          綜合上面的解釋,我們總結(jié)一下什么是RESTful架構(gòu):

            (1)每一個URI代表一種資源;

            (2)客戶端和服務(wù)器之間,傳遞這種資源的某種表現(xiàn)層;

            (3)客戶端通過四個HTTP動詞,對服務(wù)器端資源進行操作,實現(xiàn)"表現(xiàn)層狀態(tài)轉(zhuǎn)化"。

           

          REST關(guān)鍵原則

          一個簡單扼要的定義:REST定義了應(yīng)該如何正確地使用Web標準,例如HTTP和URI。如果你在設(shè)計應(yīng)用程序時能堅持REST原則,那就預(yù)示著你將會得到一個使用了優(yōu)質(zhì)Web架構(gòu)(這將讓你受益)的系統(tǒng)。總之,五條關(guān)鍵原則列舉如下:

          • 為所有“事物”定義ID
          • 將所有事物鏈接在一起
          • 使用標準方法
          • 資源多重表述
          • 無狀態(tài)通信

           

          為所有“事物”定義ID

          在這里我使用了“事物”來代替更正式準確的術(shù)語“資源”,因為一條如此簡單的原則,不應(yīng)該被淹沒在術(shù)語當中。思考一下人們構(gòu)建的系統(tǒng),通常會找到一系列值得被標識的關(guān)鍵抽象。每個事物都應(yīng)該是可標識的,都應(yīng)該擁有一個明顯的ID——在Web中,代表ID的統(tǒng)一概念是:URI。URI構(gòu)成了一個全局命名空間,使用URI標識你的關(guān)鍵資源意味著它們獲得了一個唯一、全局的ID。


          值得被URI標識的事物——資源——要比數(shù)據(jù)庫記錄抽象的多。標識所有值得標識的事物,領(lǐng)會這個觀念可以進一步引導(dǎo)你創(chuàng)造出在傳統(tǒng)的應(yīng)用程序設(shè)計中不常見的資源:一個流程或者流程步驟、一次銷售、一次談判、一份報價請求——這都是應(yīng)該被標識的事物的示例。

          將所有事物鏈接在一起

          接下來要討論的原則有一個有點令人害怕的正式描述:“超媒體被當作應(yīng)用狀態(tài)引擎(Hypermedia as the engine of application state)”,有時簡寫為HATEOAS。(嚴格地說,這不是我說的。)這個描述的核心是超媒體概念,換句話說:是鏈接的思想。鏈接是我們在HTML中常見的概念,但是它的用處絕不局限于此(用于人們網(wǎng)絡(luò)瀏覽)。


          使用標準方法

          在前兩個原則的討論中暗含著一個假設(shè):接收URI的應(yīng)用程序可以通過URI明確地一些有意義的事情。如果你在公共汽車上看到一個URI,你可以將它輸入瀏覽器的地址欄中并回車——但是你的瀏覽器如何知道需要對這個URI做些什么呢?

          它知道如何去處理URI的原因在于所有的資源都支持同樣的接口,一套同樣的方法(只要你樂意,也可以稱為操作)集合。在HTTP中這被叫做動詞(verb),除了兩個大家熟知的(GET和POST)之外,標準方法集合中還包含PUT、DELETE、HEAD和OPTIONS。這些方法的含義連同行為許諾都一起定義在HTTP規(guī)范之中。


          資源多重表述

          在實踐中,資源多重表述還有著其它重要的好處:如果你為你的資源提供HTML和XML兩種表述方式,那這些資源不僅可以被你的應(yīng)用所用,還可以被任意標準Web瀏覽器所用——也就是說,你的應(yīng)用信息可以被所有會使用Web的人獲取到。

          無狀態(tài)通信

          首先,需要著重強調(diào)的是,雖然REST包含無狀態(tài)性(statelessness)的觀念,但這并不是說暴露功能的應(yīng)用不能有狀態(tài)——
          事實上,在大部分情況下這會導(dǎo)致整個做法沒有任何用處。REST要求狀態(tài)要么被放入資源狀態(tài)中,要么保存在客戶端上。
          或者換句話說,服務(wù)器端不能保持除了單次請求之外的,任何與其通信的客戶端的通信狀態(tài)。這樣做的最直接的理由就是可伸縮性—— 如果服務(wù)器需要保持客戶端狀態(tài),那么大量的客戶端交互會嚴重影響服務(wù)器的內(nèi)存可用空間(footprint)。(注意,要做到無狀態(tài)通信往往需要需要一些重新設(shè)計——不能簡單地將一些session狀態(tài)綁縛在URI上,然后就宣稱這個應(yīng)用是RESTful。)

          但除此以外,其它方面可能顯得更為重要:無狀態(tài)約束使服務(wù)器的變化對客戶端是不可見的,因為在兩次連續(xù)的請求中,客戶端并不依賴于同一臺服務(wù)器。一個客戶端從某臺服務(wù)器上收到一份包含鏈接的文檔,當它要做一些處理時,這臺服務(wù)器宕掉了,可能是硬盤壞掉而被拿去修理,可能是軟件需要升級重啟——如果這個客戶端訪問了從這臺服務(wù)器接收的鏈接,它不會察覺到后臺的服務(wù)器已經(jīng)改變了。

           

          REST風(fēng)格的一個“化身”便是HTTP(以及一套相關(guān)的一套標準,比如URI)。

          附錄:
          1.深入淺出REST http://www.infoq.com/cn/articles/rest-introduction
          2.理解Restful 架構(gòu) http://www.ruanyifeng.com/blog/2011/09/restful.html
          3.Rest和soap比較 http://www.infoq.com/cn/articles/rest-soap-when-to-use-each
          4.Rest和Rpc比較 http://xinklabi.iteye.com/blog/807220

           

          posted @ 2012-06-19 15:44 zyskm 閱讀(3122) | 評論 (3)編輯 收藏

          spring Scheduled 設(shè)置(轉(zhuǎn)載)

          定時程序時間格式,原文見http://blog.csdn.net/remote_roamer/article/details/6573173

          一個cron表達式有至少6個(也可能7個)有空格分隔的時間元素。

          按順序依次為

          秒(0~59)

          分鐘(0~59)

          小時(0~23)

          天(月)(0~31,但是你需要考慮你月的天數(shù))

          月(0~11)

          天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,F(xiàn)RI,SAT)

          7.年份(1970-2099)

          其中每個元素可以是一個值(如6),一個連續(xù)區(qū)間(9-12),一個間隔時間(8-18/4)(/表示每隔4小時),一個列表(1,3,5),通配符。由于"月份中的日期"和"星期中的日期"這兩個元素互斥的,必須要對其中一個設(shè)置?.

          0 0 10,14,16 * * ? 每天上午10點,下午2點,4點
          0 0/30 9-17 * * ?   朝九晚五工作時間內(nèi)每半小時
          0 0 12 ? * WED 表示每個星期三中午12點
          "0 0 12 * * ?" 每天中午12點觸發(fā) 
          "0 15 10 ? * *" 每天上午10:15觸發(fā) 
          "0 15 10 * * ?" 每天上午10:15觸發(fā) 
          "0 15 10 * * ? *" 每天上午10:15觸發(fā) 
          "0 15 10 * * ? 2005" 2005年的每天上午10:15觸發(fā) 
          "0 * 14 * * ?" 在每天下午2點到下午2:59期間的每1分鐘觸發(fā) 
          "0 0/5 14 * * ?" 在每天下午2點到下午2:55期間的每5分鐘觸發(fā) 
          "0 0/5 14,18 * * ?" 在每天下午2點到2:55期間和下午6點到6:55期間的每5分鐘觸發(fā) 
          "0 0-5 14 * * ?" 在每天下午2點到下午2:05期間的每1分鐘觸發(fā) 
          "0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44觸發(fā) 
          "0 15 10 ? * MON-FRI" 周一至周五的上午10:15觸發(fā) 
          "0 15 10 15 * ?" 每月15日上午10:15觸發(fā) 
          "0 15 10 L * ?" 每月最后一日的上午10:15觸發(fā) 
          "0 15 10 ? * 6L" 每月的最后一個星期五上午10:15觸發(fā) 
          "0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一個星期五上午10:15觸發(fā) 
          "0 15 10 ? * 6#3" 每月的第三個星期五上午10:15觸發(fā)

          有些子表達式能包含一些范圍或列表

          例如:子表達式(天(星期) )可以為 “MON-FRI”,“MON,WED,F(xiàn)RI”,“MON-WED,SAT”

          “*”字符代表所有可能的值

          因此,“*”在子表達式( )里表示每個月的含義,“*”在子表達式(天(星期) )表示星期的每一天

           

          “/”字符用來指定數(shù)值的增量

          例如:在子表達式(分鐘)里的“0/15”表示從第0分鐘開始,每15分鐘

                   在子表達式(分鐘)里的“3/20”表示從第3分鐘開始,每20分鐘(它和“3,23,43”)的含義一樣


          “?”字符僅被用于天(月)和天(星期)兩個子表達式,表示不指定值

          當2個子表達式其中之一被指定了值以后,為了避免沖突,需要將另一個子表達式的值設(shè)為“?”

           

          “L” 字符僅被用于天(月)和天(星期)兩個子表達式,它是單詞“last”的縮寫

          但是它在兩個子表達式里的含義是不同的。

          在天(月)子表達式中,“L”表示一個月的最后一天

          在天(星期)自表達式中,“L”表示一個星期的最后一天,也就是SAT

          如果在“L”前有具體的內(nèi)容,它就具有其他的含義了

          例如:“6L”表示這個月的倒數(shù)第6天,“FRIL”表示這個月的最一個星期五

          注意:在使用“L”參數(shù)時,不要指定列表或范圍,因為這會導(dǎo)致問題

           

           

          字段   允許值   允許的特殊字符
            0-59   , - * /
            0-59   , - * /
          小時   0-23   , - * /
          日期   1-31   , - * ? / L W C
          月份   1-12 或者 JAN-DEC   , - * /
          星期   1-7 或者 SUN-SAT   , - * ? / L C #
          年(可選)   留空, 1970-2099   , - * /

          posted @ 2012-04-16 14:21 zyskm 閱讀(5893) | 評論 (2)編輯 收藏

          僅列出標題
          共5頁: 上一頁 1 2 3 4 5 下一頁 
          主站蜘蛛池模板: 屯留县| 武鸣县| 内丘县| 天峨县| 莱州市| 万源市| 方山县| 平顶山市| 金沙县| 吴堡县| 琼中| 肇源县| 梅河口市| 丹棱县| 怀化市| 汽车| 牟定县| 西平县| 罗田县| 香河县| 澄城县| 团风县| 嘉义县| 雅江县| 平山县| 五华县| 麦盖提县| 浦北县| 军事| 平度市| 思茅市| 偏关县| 连平县| 托里县| 扎兰屯市| 盘锦市| 阿尔山市| 鹤壁市| 资阳市| 恩施市| 南川市|