<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-47  評論-14  文章-0  trackbacks-0
      2008年5月17日
    •  

      兒子:謝謝你!昨天過母親節(jié)請我吃飯。還送了我那么貴的u盤。這是我好久以來最開心的一回了!

    • 今天上午我在電腦上看電視劇《盛夏晚晴天》的45集,夏正朗的話我很認可,有道理。說給你看一下:一個男人在30歲之前,能有一次徹底的失敗,讓他一無所有,那將是一個很幸運的事情。 

    • 因為他能可以從失敗中,認識失敗,戰(zhàn)勝失敗,卷土重來。他可以以自己的魅力,銳不可擋的干勁來改變。

    • 在這個世界上,只有想不到的事,沒有做不到的事。要敢愛、敢恨、敢錯、敢當!希望你幸福、快樂、健康!

    • 我的兒子是一個誠實、善良、靠得住的好孩子。希望你在社會這所深凹的大學里,經(jīng)得起風吹浪打,經(jīng)得起考驗。有一句話,很有哲理。就是激勵自己的不是鮮花和掌聲,而是挫折、失敗和教訓!

    • 我和你爸都是在這個世界里,最愛你的人,我們也在期盼你能照顧我們一輩子。嘿嘿、、、謝謝你,為我們奉獻了很多。、

    posted @ 2013-06-07 22:06 Stephen 閱讀(179) | 評論 (0)編輯 收藏
     

           海爾總裁張瑞敏在序言中寫到:“看德魯克的書是一種享受,因為常常使人有茅塞頓開之感。” 的確,德魯克的書沒有任何故弄玄虛,都是實實在在的道理,尤其是這本經(jīng)典中的經(jīng)典,每次讀過以后都有不同的感受。

           管理是一門學問,如何讓管理變得卓有成效的確是一個很大的問題。很多人從做具體的事情開始走向管理崗位的時候,都會覺得有點無所適從:有些人開始抱怨時間變得不可控,尤其是可能沒有機會做一些曾經(jīng)讓自己很有“成就感”的工作;有些人不知道如何與下屬和上級打交道,不知道怎樣讓團隊變得有效率;有些人不知道如何做決策,每次做決策不是瞻前顧后,就是武斷決策。《卓有成效的管理者》這本書,恰恰給了這些人最好的答案,最佳的實踐經(jīng)驗,這本薄薄的書,沒有大費周折的闡述什么講大道理,沒有長篇累牘的講故事,只是把這種好像很明顯但又往往讓我們經(jīng)常想不到的道理娓娓道來。其實卓有成效的管理很簡單:管理好自己的時間、學會用人和讓團隊有成效、做好決策。

           一、管理好自己的時間

           作為一個卓有成效的管理者要會掌握自己的時間,要合理的利用自己的時間,時間用在能產(chǎn)生效益的事情上。管理者必須面對四個無法避免的難題:時間往往只屬于別人,而不屬于自己;管理者往往被迫忙于“日常運作”,除非他們敢于采取行動來改變周圍的一切;本身處于一個組織中,受組織的局限。要成為有效管理者,首先,必須知道自己的時間用在什么地方上;其次,要學會將時間整塊運用;再次,管理好自己的時間,消除浪費時間的活動,統(tǒng)一安排可以自由支配的時間。

           二、學會用人和讓團隊有效率

           管理者的作用不僅是自己如何可以高效率的工作,而更重要的是如何讓團隊有效的工作,因為一個人再優(yōu)秀也只是一個人,而一個優(yōu)秀的團隊的作用更是遠遠大于把這些人的單產(chǎn)累加起來,這就是為什么很多人說1+1>2的道理。從德魯克的書中,我們明白了,讓團隊有效率其實很簡單,就是正確的用人并發(fā)揮他們長處,然后學會自己可為團隊做些什么。

           漢高祖劉邦說:“夫運籌帷帳之中,決勝千里之外,吾不如子房(即張良)。鎮(zhèn)國家,撫百姓,給饋餉,不絕糧道,吾不如蕭何。連百萬之軍,戰(zhàn)必勝,攻必取,吾不如韓信。此三者,皆人杰也,吾能用之,此吾所以取天下也。”有效的管理者在用人時,不在于如何克服人的短處,而在于如何發(fā)揮人的長處。

           同時,作為一個有成效的管理者要知道自己能做些什么貢獻,并且要知道能為下屬做些什么貢獻,才能讓這些知識工作者有效的工作。重視貢獻,才能使管理者的注意力不為自己的專長所限,不為其本身的技術所限,不為其本身所在的部門所限,才能看到整體的績效,同時,也能使其更加重視團隊,只有團隊才是真正產(chǎn)生成果的地方。

           三、做好決策

           決策是非常具有風險的舉動,但是如何一個管理人都需要做出各種決策,你的決策可能會影響到公司的利益和伙伴的利益、績效及成果,這就是管理者存在的最重要的一項功能。

           卓有成效的管理者必須善于做出正確的決策,要做出決策就要有明確目標、權衡現(xiàn)有資源、反復推敲,反復的斟酌、落實行動、實時反饋,衡量你的決策是否正確,給你的決策留更多的調整空間和機會。

           在做決策之前要善于聽取各方意見,善于使用發(fā)散性思維和收斂性思維來搜集聽取各方信息;要進行大量的風險評估如果收益大于支出那么就立即執(zhí)行;一旦執(zhí)行就要頂住壓力,處理好時間問題、處理好人際問題;重視反饋學會聽取各方意見擠反饋的信息,信息中有好有壞要通盤分析,驗證決策的正確性。

    posted @ 2010-04-18 21:42 Stephen 閱讀(307) | 評論 (0)編輯 收藏
    最近同事推薦office 2007比較好用,于是裝了一個,
    但是在用outlook時比較麻煩,我其中的一個郵箱沒辦法收pop3的郵件,總提示密碼錯誤,要求輸入密碼,
    但是我用2003的時候是可以的,
    于是我在嘗試各種組合,發(fā)現(xiàn)outlook 2003 、foxmail,都可以從這個pop3收到郵件,
    但是outlook 2007就是不可以,
    于是嘗試用office 2007+outlook2003來用,
    結果出現(xiàn)的新的問題,outlook不能使用word作為郵件編輯器了,

    經(jīng)過嘗試:
    1、office 2003 與office 2007 不能在同系統(tǒng)共存;
    2、outlook 2003 與 outlook 2007 也是同樣;
    3、office 2007 與 outlook 2003可以共存,但是問題是outlook2003只能使用word2003作為編輯器,而不能使用2007的;

    麻煩呢,目前我暫時用的第三種方案,
    關于不能收郵件的原因,目前估計是端口的問題,因為公司的網(wǎng)絡環(huán)境比較嚴格,需要申請開通端口,
    估計是2007驗證時使用了什么不知道的端口,等有時間再網(wǎng)絡工程師調試一下。
    posted @ 2009-04-13 22:54 Stephen 閱讀(820) | 評論 (0)編輯 收藏
    最近總感覺事情太多,要做的事情很多,要學習的東西很多,要看的書很多,

    然后準備好了以后,又沒毅力做下去了,

    還是執(zhí)行力不夠,

    目標太多,就沒有了方向,

    要減少目標:

    1、職業(yè)發(fā)展方向要確定,不能每個方面都兼顧,可以關注,但要確定一個主要的方向;
    2、不能每本書都精讀,沒有那么多時間,計劃的十本書,選兩本到三本精讀;
    3、計劃時間不能定的太長,沒有約束力,要短、可達到。

    工作上目標確定要少,上半年只有兩個月了,如果想看到成效,必須精力集中關鍵項上面:

    1、完成配置管理與問題管理的優(yōu)化;
    2、平穩(wěn)接手項目組的工作,融入到項目環(huán)境中;
    3、初步了解項目的業(yè)務、背景;
    posted @ 2009-04-13 22:39 Stephen 閱讀(212) | 評論 (0)編輯 收藏
    一、學習英語

    二、讀十本書,完成讀書筆記
    圖書目錄:
    《走出軟件作坊》
    《Scrum敏捷項目管理》
    《IT管理知識體系》
    《Head First 設計模式》
    《UML寶典》
    《人件》
    《哲學與人生》
    《web信息架構》
    兩本待定

    三、讀兩個開源框架代碼

    四、寫十篇文章(項目管理、IT管理方面)
    posted @ 2009-02-15 21:29 Stephen 閱讀(224) | 評論 (0)編輯 收藏
    安裝RAR:
    sudo apt-get install rar
    sudo ln -fs /usr/bin/rar /usr/bin/unrar
    posted @ 2009-01-23 23:35 Stephen 閱讀(198) | 評論 (0)編輯 收藏

    進入vi的命令

    vi filename: 打開或新建文件,并將光標置于第一行首

    vi +n filename: 打開文件,并將光標置于第n行首

    vi + filename: 打開文件,并將光標置于最后一行首

    vi +/pattern filename: 打開文件,并將光標置于第一個與pattern匹配的串處

    vi -r filename: 在上次正用vi編輯時發(fā)生系統(tǒng)崩潰,恢復filename

    vi filename....filename: 打開多個文件,依次進行編輯

    移動光標類命令

    h: 光標左移一個字符

    l: 光標右移一個字符

    space: 光標右移一個字符

    Backspace: 光標左移一個字符

    k或Ctrl+p: 光標上移一行

    j或Ctrl+n: 光標下移一行

    Enter: 光標下移一行

    w或W : 光標右移一個字至字首

    b或B : 光標左移一個字至字首

    e或E : 光標右移一個字至字尾

    ): 光標移至句尾

    (: 光標移至句首

    }: 光標移至段落開頭

    {: 光標移至段落結尾

    nG: 光標移至第n行首

    n+: 光標下移n行

    n-: 光標上移n行

    n$: 光標移至第n行尾

    H: 光標移至屏幕頂行

    M: 光標移至屏幕中間行

    L: 光標移至屏幕最后行

    0: 光標移至當前行首

    $: 光標移至當前行尾

    屏幕翻滾類命令

    Ctrl+u: 向文件首翻半屏

    Ctrl+d: 向文件尾翻半屏

    Ctrl+f: 向文件尾翻一屏

    Ctrl+b: 向文件首翻一屏

    nz: 將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部。

    插入文本類命令

    i: 在光標前

    I: 在當前行首

    a: 光標后

    A: 在當前行尾

    o: 在當前行之下新開一行

    O: 在當前行之上新開一行

    r: 替換當前字符

    R: 替換當前字符及其后的字符,直至按ESC鍵

    s: 從當前光標位置處開始,以輸入的文本替代指定數(shù)目的字符

    S: 刪除指定數(shù)目的行,并以所輸入文本代替之

    ncw或nCW: 修改指定數(shù)目的字

    nCC: 修改指定數(shù)目的行

    刪除命令

    ndw或ndW: 刪除光標處開始及其后的n-1個字

    do: 刪至行首

    d$: 刪至行尾

    ndd: 刪除當前行及其后n-1行

    x或X: 刪除一個字符,x刪除光標后的,而X刪除光標前的

    Ctrl+u: 刪除輸入方式下所輸入的文本

    搜索及替換命令

    /pattern: 從光標開始處向文件尾搜索pattern
    ?pattern: 從光標開始處向文件首搜索pattern
    n: 在同一方向重復上一次搜索命令
    N: 在反方向上重復上一次搜索命令
    :s/p1/p2/g: 將當前行中所有p1均用p2替代
    :n1,n2s/p1/p2/g: 將第n1至n2行中所有p1均用p2替代
    :g/p1/s//p2/g: 將文件中所有p1均用p2替換

    選項設置

    all: 列出所有選項設置情況

    term: 設置終端類型

    ignorance: 在搜索中忽略大小寫

    list: 顯示制表位(Ctrl+I)和行尾標志($)

    number: 顯示行號

    report: 顯示由面向行的命令修改過的數(shù)目

    terse: 顯示簡短的警告信息

    warn: 在轉到別的文件時若沒保存當前文件則顯示NO write信息

    nomagic: 允許在搜索模式中,使用前面不帶“\”的特殊字符

    nowrapscan: 禁止vi在搜索到達文件兩端時,又從另一端開始

    mesg: 允許vi顯示其他用戶用write寫到自己終端上的信息

    最后行方式命令

    :n1,n2 co n3: 將n1行到n2行之間的內(nèi)容拷貝到第n3行下
    :n1,n2 m n3:將n1行到n2行之間的內(nèi)容移至到第n3行下
    :n1,n2 d: 將 n1行到n2行之間的內(nèi)容刪除
    :w: 保存當前文件
    :e filename: 打開文件filename進行編輯
    :x: 保存當前文件并退出
    :q: 退出vi
    :q!: 不保存文件并退出vi
    :!command: 執(zhí)行shell命令command
    :n1,n2 w!command: 將文件中n1行至n2行的內(nèi)容作為command的輸入并執(zhí)行之,
    若不指定n1,n2,則表示將整個文件內(nèi)容作為command的輸入
    :r!command: 將命令command的輸出結果放到當前行

    寄存器操作

    "?nyy: 將當前行及其下n行的內(nèi)容保存到寄存器?中,其中?為一個字母,n為一個數(shù)字

    "?nyw: 將當前行及其下n個字保存到寄存器?中,其中?為一個字母,n為一個數(shù)字

    "?nyl: 將當前行及其下n個字符保存到寄存器?中,其中?為一個字母,n為一個數(shù)字

    "?p: 取出寄存器?中的內(nèi)容并將其放到光標位置處。這里?可以是一個字母,也可以是一個數(shù)字

    ndd: 將當前行及其下共n行文本刪除,并將所刪內(nèi)容放到1號刪除寄存器中

    posted @ 2009-01-21 21:40 Stephen 閱讀(266) | 評論 (0)編輯 收藏

    1. 先從網(wǎng)上下載jdk(jdk-1_5_0_02-linux-i586.rpm) ,推薦SUN的官方網(wǎng)站www.sun.com,下載后放在/home目錄中,當然其它地方也行。

    進入安裝目錄
    #cd /home
    #cp jdk-1_5_0_02-linux-i586.rpm /usr/local
    #cd /usr/local
    給所有用戶添加可執(zhí)行的權限
    #chmod +x jdk-1_5_0_02-linux-i586.rpm.bin
    #./jdk-1_5_0_02-linux-i586.rpm.bin
    此時會生成文件jdk-1_5_0_02-linux-i586.rpm,同樣給所有用戶添加可執(zhí)行的權限
    #chmod +x jdk-1_5_0_02-linux-i586.rpm
    安裝程序
    #rpm -ivh jdk-1_5_0_02-linux-i586.rpm
    出現(xiàn)安裝協(xié)議等,按接受即可。

    2.設置環(huán)境變量。
    #vi /etc/profile
    在最后面加入 
    #set java environment
    JAVA_HOME=/usr/java/jdk-1_5_0_02
    CLASSPATH=.:$JAVA_HOME/lib.tools.jar
    PATH=$JAVA_HOME/bin:$PATH
    export JAVA_HOME CLASSPATH PATH
    保存退出。

    要使JDK在所有的用戶中使用,可以這樣:
    vi /etc/profile.d/java.sh
    在新的java.sh中輸入以下內(nèi)容: 
    #set java environment
    JAVA_HOME=/usr/java/jdk-1_5_0_02
    CLASSPATH=.:$JAVA_HOME/lib/tools.jar
    PATH=$JAVA_HOME/bin:$PATH
    export JAVA_HOME CLASSPATH PATH
    保存退出,然后給java.sh分配權限:chmod 755 /etc/profile.d/java.sh

    3.在終端使用echo命令檢查環(huán)境變量設置情況。
    #echo $JAVA_HOME
    #echo $CLASSPATH
    #echo $PATH

    4.檢查JDK是否安裝成功。
    #java -version
    如果看到JVM版本及相關信息,即安裝成功!
    posted @ 2009-01-21 21:33 Stephen 閱讀(600) | 評論 (0)編輯 收藏
    tar命令

    語法:tar [主選項+輔選項] 文件或者目錄
    使用該命令時,主選項是必須要有的,它告訴tar要做什么事情,輔選項是輔助使用的,可以選用。
    主選項:
    c 創(chuàng)建新的檔案文件。如果用戶想備份一個目錄或是一些文件,就要選擇這個選項。
    r 把要存檔的文件追加到檔案文件的未尾。例如用戶已經(jīng)作好備份文件,又發(fā)現(xiàn)還有一個目錄或是一些文件忘記備份了,這時可以使用該選項,將忘記的目錄或文件追加到備份文件中。
    t 列出檔案文件的內(nèi)容,查看已經(jīng)備份了哪些文件。
    u 更新文件。就是說,用新增的文件取代原備份文件,如果在備份文件中找不到要更新的文件,則把它追加到備份文件的最后。
    x 從檔案文件中釋放文件。
    輔助選項:
    b 該選項是為磁帶機設定的。其后跟一數(shù)字,用來說明區(qū)塊的大小,系統(tǒng)預設值為20(20*512 bytes)。
    f 使用檔案文件或設備,這個選項通常是必選的。
    k 保存已經(jīng)存在的文件。例如我們把某個文件還原,在還原的過程中,遇到相同的文件,不會進行覆蓋。
    m 在還原文件時,把所有文件的修改時間設定為現(xiàn)在。
    M 創(chuàng)建多卷的檔案文件,以便在幾個磁盤中存放。
    v 詳細報告tar處理的文件信息。如無此選項,tar不報告文件信息。
    w 每一步都要求確認。
    z 用gzip來壓縮/解壓縮文件,加上該選項后可以將檔案文件進行壓縮,但還原時也一定要使用該選項進行解壓縮。


    Linux下的壓縮文件剖析

    對于剛剛接觸Linux的人來說,一定會給Linux下一大堆各式各樣的文件名給搞暈。別個不說,單單就壓縮文件為例,我們知道在Windows下最常見的壓縮文件就只有兩種,一是,zip,另一個是.rap。可是Linux就不同了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等眾多的壓縮文件名,此外windows下的.zip和.rar也可以在Linux下使用,不過在Linux使用.zip和.rar的人就太少了。本文就來對這些常見的壓縮文件進行一番小結,希望你下次遇到這些文件時不至于被搞暈:)

    在具體總結各類壓縮文件之前呢,首先要 弄清兩個概念:打包和壓縮。打包是指將一大堆文件或目錄什么的變成一個總的文件,壓縮則是將一個大的文件通過一些壓縮算法變成一個小文件。為什么要區(qū)分這 兩個概念呢?其實這源于Linux中的很多壓縮程序只能針對一個文件進行壓縮,這樣當你想要壓縮一大堆文件時,你就得先借助另它的工具將這一大堆文件先打 成一個包,然后再就原來的壓縮程序進行壓縮。
    Linux下最常用的打包程序就是tar了,使用tar程序打出來的包我們常稱為tar包,tar包文件的命令通常都是以.tar結尾的。生成tar包后,就可以用其它的程序來進行壓縮了,所以首先就來講講tar命令的基本用法:
    tar命令的選項有很多(用man tar可以查看到),但常用的就那么幾個選項,下面來舉例說明一下:
    # tar -cf all.tar *.jpg
    這條命令是將所有.jpg的文件打成一個名為all.tar的包。-c是表示產(chǎn)生新的包,-f指定包的文件名。
    # tar -rf all.tar *.gif
    這條命令是將所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
        # tar -uf all.tar logo.gif
    這條命令是更新原來tar包all.tar中l(wèi)ogo.gif文件,-u是表示更新文件的意思。

    # tar -tf all.tar
    這條命令是列出all.tar包中所有文件,-t是列出文件的意思
    # tar -xf all.tar
    這條命令是解出all.tar包中所有文件,-t是解開的意思

    以上就是tar的最基本的用法。為了方便用戶在打包解包的同時可以壓縮或解壓文件,tar提供了一種特殊的功能。這就是tar可以在打包或解包的同時調用其它的壓縮程序,比如調用gzip、bzip2等。
    1) tar調用gzip
    gzip是GNU組織開發(fā)的一個壓縮程序,.gz結尾的文件就是gzip壓縮的結果。與gzip相對的解壓程序是gunzip。tar中使用-z這個參數(shù)來調用gzip。下面來舉例說明一下:
    # tar -czf all.tar.gz *.jpg
    這條命令是將所有.jpg的文件打成一個tar包,并且將其用gzip壓縮,生成一個gzip壓縮過的包,包名為all.tar.gz
    # tar -xzf all.tar.gz
    這條命令是將上面產(chǎn)生的包解開。
    2) tar調用bzip2
    bzip2是一個壓縮能力更強的壓縮程序,.bz2結尾的文件就是bzip2壓縮的結果。與bzip2相對的解壓程序是bunzip2。tar中使用-j這個參數(shù)來調用gzip。下面來舉例說明一下:
    # tar -cjf all.tar.bz2 *.jpg
    這條命令是將所有.jpg的文件打成一個tar包,并且將其用bzip2壓縮,生成一個bzip2壓縮過的包,包名為all.tar.bz2
    # tar -xjf all.tar.bz2
    這條命令是將上面產(chǎn)生的包解開。
        3)tar調用compress

    compress也是一個壓縮程序,但是好象使用compress的人不如gzip和bzip2的人多。.Z結尾的文件就是bzip2壓縮的結果。與compress相對的解壓程序是uncompress。tar中使用-Z這個參數(shù)來調用gzip。下面來舉例說明一下:
    # tar -cZf all.tar.Z *.jpg
    這條命令是將所有.jpg的文件打成一個tar包,并且將其用compress壓縮,生成一個uncompress壓縮過的包,包名為all.tar.Z
    # tar -xZf all.tar.Z
    這條命令是將上面產(chǎn)生的包解開
    有了上面的知識,你應該可以解開多種壓縮文件了,下面對于tar系列的壓縮文件作一個小結:
    1)對于.tar結尾的文件
    tar -xf all.tar
    2)對于.gz結尾的文件
    gzip -d all.gz
    gunzip all.gz
    3)對于.tgz或.tar.gz結尾的文件
    tar -xzf all.tar.gz
    tar -xzf all.tgz
    4)對于.bz2結尾的文件
    bzip2 -d all.bz2
    bunzip2 all.bz2
    5)對于tar.bz2結尾的文件
    tar -xjf all.tar.bz2
    6)對于.Z結尾的文件
    uncompress all.Z
    7)對于.tar.Z結尾的文件
    tar -xZf all.tar.z
    另外對于Window下的常見壓縮文件.zip和.rar,Linux也有相應的方法來解壓它們:
    1)對于.zip
    linux下提供了zip和unzip程序,zip是壓縮程序,unzip是解壓程序。它們的參數(shù)選項很多,這里只做簡單介紹,依舊舉例說明一下其用法:
    # zip all.zip *.jpg
    這條命令是將所有.jpg的文件壓縮成一個zip包

        # unzip all.zip
    這條命令是將all.zip中的所有文件解壓出來

    2)對于.rar
    要在linux下處理.rar文件,需要安裝RAR for Linux,可以從網(wǎng)上下載,但要記住,RAR for Linux
    不是免費的;然后安裝:
    # tar -xzpvf rarlinux-3.2.0.tar.gz
    # cd rar
    # make
    這樣就安裝好了,安裝后就有了rar和unrar這兩個程序,rar是壓縮程序,unrar是解壓程序。它們的參數(shù)選項很多,這里只做簡單介紹,依舊舉例說明一下其用法:
    # rar a all *.jpg
    這條命令是將所有.jpg的文件壓縮成一個rar包,名為all.rar,該程序會將.rar 擴展名將自動附加到包名后。
    # unrar e all.rar
    這條命令是將all.rar中的所有文件解壓出來
    到此為至,我們已經(jīng)介紹過linux下的tar、gzip、gunzip、bzip2、bunzip2、compress、uncompress、zip、unzip、rar、unrar等程式,你應該已經(jīng)能夠使用它們對.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、.Z、.tar.Z、.zip、.rar這10種壓縮文件進行解壓了,以后應該不需要為下載了一個軟件而不知道如何在Linux下解開而煩惱了。而且以上方法對于Unix也基本有效。
    本文介紹了linux下的壓縮程式tar、gzip、gunzip、bzip2、bunzip2、compress、uncompress、zip、unzip、rar、unrar等程式,以及如何使用它們對.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、.Z、.tar.Z、.zip、.rar這10種壓縮文件進行操作。
    posted @ 2009-01-21 20:17 Stephen 閱讀(290) | 評論 (0)編輯 收藏

        偶用金山毒霸的殺毒套裝,今天無意中發(fā)現(xiàn)金山網(wǎng)鏢中有一個訪問網(wǎng)絡的請求是C:\System32\Safeabc.exe請求的,這個文件根本不是我安裝的,又不認識,豪不猶豫的禁止了,上網(wǎng)一查,果然是病毒,而且現(xiàn)在并沒有殺毒工具可以查殺這個病毒,而且任務管理器也無法使用了,無論是按ctrl+shift+del還是還是在任務欄點右鍵,還是運行“taskmgr”都沒有辦法掉出任務管理器,麻煩來了。

        上網(wǎng)查相關資料,這個病毒好像還會自動下載木馬病毒,很危險的說,好在金山毒霸還能用,查了一下,內(nèi)存里有三個木馬,先殺掉。

        金山毒霸安全百寶箱里有一個進程管理器,居然還能調用,運行發(fā)現(xiàn)果然有一個safeabc.exe的進程,先結束掉這個進程,然后去刪除這個文件,系統(tǒng)提示禁止刪除,找到金山毒霸的文件粉碎器,強行刪除,然后將啟動項里面可疑的啟動項刪掉,好像是叫l(wèi)oveHebeAA的,然后查毒殺毒,
    重啟,病毒是沒有了,但是任務管理器還是不能用,郁悶了,上網(wǎng)找了好多資料,試了都不行,后來病急亂投醫(yī),在金山的修復工具里檢測一下,居然發(fā)現(xiàn)好多的劫持,如圖:


    TNND,修復之,任務管理器就可以用了,

    阿門,應該是解決了,不知道這病毒還有沒有其他的影響。。。

    P.S. 此文不是給金山打廣告,別的工具應該也可以做到的,比如進程管理器,文件粉碎器,劫持修復等等,很多工具都可以做到,只是本人手頭上恰好有金山而已,:P

    posted @ 2008-06-24 22:10 Stephen 閱讀(478) | 評論 (0)編輯 收藏
    使用Windows操作系統(tǒng)的朋友對Excel(電子表格)一定不會陌生,但是要使用Java語言來操縱Excel文件并不是一件容易的事。在Web應用日益盛行的今天,通過Web來操作Excel文件的需求越來越強烈,目前較為流行的操作是在JSP或Servlet 中創(chuàng)建一個CSV (comma separated values)文件,并將這個文件以MIME,text/csv類型返回給瀏覽器,接著瀏覽器調用Excel并且顯示CSV文件。這樣只是說可以訪問到Excel文件,但是還不能真正的操縱Excel文件,本文將給大家一個驚喜,向大家介紹一個開放源碼項目??Java Excel API,使用它大家就可以方便地操縱Excel文件了。
    JAVA EXCEL API簡介
      Java Excel是一開放源碼項目,通過它Java開發(fā)人員可以讀取Excel文件的內(nèi)容、創(chuàng)建新的Excel文件、更新已經(jīng)存在的Excel文件。使用該API非Windows操作系統(tǒng)也可以通過純Java應用來處理Excel數(shù)據(jù)表。因為是使用Java編寫的,所以我們在Web應用中可以通過JSP、Servlet來調用API實現(xiàn)對Excel數(shù)據(jù)表的訪問。 現(xiàn)在發(fā)布的穩(wěn)定版本是V2.0,提供以下功能:

    ? 從Excel 95、97、2000等格式的文件中讀取數(shù)據(jù);
    ? 讀取Excel公式(可以讀取Excel 97以后的公式);
    ? 生成Excel數(shù)據(jù)表(格式為Excel 97);
    ? 支持字體、數(shù)字、日期的格式化;
    ? 支持單元格的陰影操作,以及顏色操作;
    ? 修改已經(jīng)存在的數(shù)據(jù)表;
    ? 現(xiàn)在還不支持以下功能,但不久就會提供了:
    ? 不能夠讀取圖表信息;


    可以讀,但是不能生成公式,任何類型公式最后的計算值都可以讀出;
    應用示例
    從Excel文件讀取數(shù)據(jù)表
    Java Excel API既可以從本地文件系統(tǒng)的一個文件(.xls),也可以從輸入流中讀取Excel數(shù)據(jù)表。讀取Excel數(shù)據(jù)表的第一步是創(chuàng)建Workbook(術語:工作薄),下面的代碼片段舉例說明了應該如何操作:(完整代碼見ExcelReading.java)


    import java.io.*;
    import jxl.*;
    … … … …
    try
    {
    //構建Workbook對象, 只讀Workbook對象
    //直接從本地文件創(chuàng)建Workbook
    //從輸入流創(chuàng)建Workbook
    InputStream is = new FileInputStream(sourcefile);
    jxl.Workbook rwb = Workbook.getWorkbook(is);
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }


      一旦創(chuàng)建了Workbook,我們就可以通過它來訪問Excel Sheet(術語:工作表)。參考下面的代碼片段:
    //獲取第一張Sheet表
    Sheet rs = rwb.getSheet(0);
      我們既可能通過Sheet的名稱來訪問它,也可以通過下標來訪問它。如果通過下標來訪問的話,要注意的一點是下標從0開始,就像數(shù)組一樣。
      一旦得到了Sheet,我們就可以通過它來訪問Excel Cell(術語:單元格)。參考下面的代碼片段:
    //獲取第一行,第一列的值
    Cell c00 = rs.getCell(0, 0);
    String strc00 = c00.getContents();
    //獲取第一行,第二列的值
    Cell c10 = rs.getCell(1, 0);
    String strc10 = c10.getContents();
    //獲取第二行,第二列的值
    Cell c11 = rs.getCell(1, 1);
    String strc11 = c11.getContents();
    System.out.println("Cell(0, 0)" + " value : " + strc00 + "; type : " +
    c00.getType());
    System.out.println("Cell(1, 0)" + " value : " + strc10 + "; type : " +
    c10.getType());
    System.out.println("Cell(1, 1)" + " value : " + strc11 + "; type : " +
    c11.getType());
      如果僅僅是取得Cell的值,我們可以方便地通過getContents()方法,它可以將任何類型的Cell值都作為一個字符串返回。示例代碼中Cell(0, 0)是文本型,Cell(1, 0)是數(shù)字型,Cell(1,1)是日期型,通過getContents(),三種類型的返回值都是字符型。
      如果有需要知道Cell內(nèi)容的確切類型,API也提供了一系列的方法。參考下面的代碼片段:
    String strc00 = null;
    double strc10 = 0.00;
    Date strc11 = null;
    Cell c00 = rs.getCell(0, 0);
    Cell c10 = rs.getCell(1, 0);
    Cell c11 = rs.getCell(1, 1);
    if(c00.getType() == CellType.LABEL)
    {
    LabelCell labelc00 = (LabelCell)c00;
    strc00 = labelc00.getString();
    }
    if(c10.getType() == CellType.NUMBER)
    {
    NmberCell numc10 = (NumberCell)c10;
    strc10 = numc10.getValue();
    }
    if(c11.getType() == CellType.DATE)
    {
    DateCell datec11 = (DateCell)c11;
    strc11 = datec11.getDate();
    }
    System.out.println("Cell(0, 0)" + " value : " + strc00 + "; type : " +
    c00.getType());
    System.out.println("Cell(1, 0)" + " value : " + strc10 + "; type : " +
    c10.getType());
    System.out.println("Cell(1, 1)" + " value : " + strc11 + "; type : " +
    c11.getType());
      在得到Cell對象后,通過getType()方法可以獲得該單元格的類型,然后與API提供的基本類型相匹配,強制轉換成相應的類型,最后調用相應的取值方法getXXX(),就可以得到確定類型的值。API提供了以下基本類型,與Excel的數(shù)據(jù)格式相對應。
    每種類型的具體意義,請參見Java Excel API Document。
    當你完成對Excel電子表格數(shù)據(jù)的處理后,一定要使用close()方法來關閉先前創(chuàng)建的對象,以釋放讀取數(shù)據(jù)表的過程中所占用的內(nèi)存空間,在讀取大量數(shù)據(jù)時顯得尤為重要。參考如下代碼片段:
    //操作完成時,關閉對象,釋放占用的內(nèi)存空間
    rwb.close();
    Java Excel API提供了許多訪問Excel數(shù)據(jù)表的方法,在這里我只簡要地介紹幾個常用的方法,其它的方法請參考附錄中的Java Excel API Document。


    ? Workbook類提供的方法
    1. int getNumberOfSheets()
    獲得工作薄(Workbook)中工作表(Sheet)的個數(shù),示例:
    jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
    int sheets = rwb.getNumberOfSheets();
    2. Sheet[] getSheets()
    返回工作薄(Workbook)中工作表(Sheet)對象數(shù)組,示例:
    jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
    Sheet[] sheets = rwb.getSheets();
    3. String getVersion()
    返回正在使用的API的版本號,好像是沒什么太大的作用。
    jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
    String apiVersion = rwb.getVersion();


    ? Sheet接口提供的方法
    1. String getName()
    獲取Sheet的名稱,示例:
    jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
    jxl.Sheet rs = rwb.getSheet(0);
    String sheetName = rs.getName();
    2. int getColumns()
    獲取Sheet表中所包含的總列數(shù),示例:
    jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
    jxl.Sheet rs = rwb.getSheet(0);
    int rsColumns = rs.getColumns();
    3. Cell[] getColumn(int column)
    獲取某一列的所有單元格,返回的是單元格對象數(shù)組,示例:
    jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
    jxl.Sheet rs = rwb.getSheet(0);
    Cell[] cell = rs.getColumn(0);
    4. int getRows()
    獲取Sheet表中所包含的總行數(shù),示例:
    jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
    jxl.Sheet rs = rwb.getSheet(0);
    int rsRows = rs.getRows();
    5. Cell[] getRow(int row)
    獲取某一行的所有單元格,返回的是單元格對象數(shù)組,示例子:
    jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
    jxl.Sheet rs = rwb.getSheet(0);
    Cell[] cell = rs.getRow(0);
    6. Cell getCell(int column, int row)
    獲取指定單元格的對象引用,需要注意的是它的兩個參數(shù),第一個是列數(shù),第二個是行數(shù),這與通常的行、列組合有些不同。
    jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
    jxl.Sheet rs = rwb.getSheet(0);
    Cell cell = rs.getCell(0, 0);


    生成新的Excel工作薄
      下面的代碼主要是向大家介紹如何生成簡單的Excel工作表,在這里單元格的內(nèi)容是不帶任何修飾的(如:字體,顏色等等),所有的內(nèi)容都作為字符串寫入。(完整代碼見ExcelWriting.java)
      與讀取Excel工作表相似,首先要使用Workbook類的工廠方法創(chuàng)建一個可寫入的工作薄(Workbook)對象,這里要注意的是,只能通過API提供的工廠方法來創(chuàng)建Workbook,而不能使用WritableWorkbook的構造函數(shù),因為類WritableWorkbook的構造函數(shù)為protected類型。示例代碼片段如下:


    import java.io.*;
    import jxl.*;
    import jxl.write.*;
    … … … …
    try
    {
    //構建Workbook對象, 只讀Workbook對象
    //Method 1:創(chuàng)建可寫入的Excel工作薄
    jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile));
    //Method 2:將WritableWorkbook直接寫入到輸出流
    /*
    OutputStream os = new FileOutputStream(targetfile);
    jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(os);
    */
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
      API提供了兩種方式來處理可寫入的輸出流,一種是直接生成本地文件,如果文件名不帶全路徑的話,缺省的文件會定位在當前目錄,如果文件名帶有全路徑的話,則生成的Excel文件則會定位在相應的目錄;另外一種是將Excel對象直接寫入到輸出流,例如:用戶通過瀏覽器來訪問Web服務器,如果HTTP頭設置正確的話,瀏覽器自動調用客戶端的Excel應用程序,來顯示動態(tài)生成的Excel電子表格。
      接下來就是要創(chuàng)建工作表,創(chuàng)建工作表的方法與創(chuàng)建工作薄的方法幾乎一樣,同樣是通過工廠模式方法獲得相應的對象,該方法需要兩個參數(shù),一個是工作表的名稱,另一個是工作表在工作薄中的位置,參考下面的代碼片段:
    file://創(chuàng)建Excel工作表
    jxl.write.WritableSheet ws = wwb.createSheet("Test Sheet 1", 0);
      "這鍋也支好了,材料也準備齊全了,可以開始下鍋了!",現(xiàn)在要做的只是實例化API所提供的Excel基本數(shù)據(jù)類型,并將它們添加到工作表中就可以了,參考下面的代碼片段:
    file://1.添加Label對象
    jxl.write.Label labelC = new jxl.write.Label(0, 0, "This is a Label cell");
    ws.addCell(labelC);
    //添加帶有字型Formatting的對象
    jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES, 18,
    WritableFont.BOLD, true);
    jxl.write.WritableCellFormat wcfF = new jxl.write.WritableCellFormat(wf);
    jxl.write.Label labelCF = new jxl.write.Label(1, 0, "This is a Label Cell", wcfF);
    ws.addCell(labelCF);
    //添加帶有字體顏色Formatting的對象
    jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL, 10,
    WritableFont.NO_BOLD, false,
    UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED);
    jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);
    jxl.write.Label labelCFC = new jxl.write.Label(1, 0, "This is a Label Cell", wcfFC);
    ws.addCell(labelCF);
    //2.添加Number對象
    jxl.write.Number labelN = new jxl.write.Number(0, 1, 3.1415926);
    ws.addCell(labelN);
    //添加帶有formatting的Number對象
    jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
    jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(nf);
    jxl.write.Number labelNF = new jxl.write.Number(1, 1, 3.1415926, wcfN);
    ws.addCell(labelNF);
    //3.添加Boolean對象
    jxl.write.Boolean labelB = new jxl.write.Boolean(0, 2, false);
    ws.addCell(labelB);
    //4.添加DateTime對象
    jxl.write.DateTime labelDT = new jxl.write.DateTime(0, 3, new java.util.Date());
    ws.addCell(labelDT);
    //添加帶有formatting的DateFormat對象
    jxl.write.DateFormat df = new jxl.write.DateFormat("dd MM yyyy hh:mm:ss");
    jxl.write.WritableCellFormat wcfDF = new jxl.write.WritableCellFormat(df);
    jxl.write.DateTime labelDTF = new jxl.write.DateTime(1, 3, new java.util.Date(), wcfDF);
    ws.addCell(labelDTF);
      這里有兩點大家要引起大家的注意。第一點,在構造單元格時,單元格在工作表中的位置就已經(jīng)確定了。一旦創(chuàng)建后,單元格的位置是不能夠變更的,盡管單元格的內(nèi)容是可以改變的。第二點,單元格的定位是按照下面這樣的規(guī)律(column, row),而且下標都是從0開始,例如,A1被存儲在(0, 0),B1被存儲在(1, 0)。
      最后,不要忘記關閉打開的Excel工作薄對象,以釋放占用的內(nèi)存,參見下面的代碼片段:
    file://寫入Exel工作表
    wwb.write();
    //關閉Excel工作薄對象
    wwb.close();
      這可能與讀取Excel文件的操作有少少不同,在關閉Excel對象之前,你必須要先調用write()方法,因為先前的操作都是存儲在緩存中的,所以要通過該方法將操作的內(nèi)容保存在文件中。如果你先關閉了Excel對象,那么只能得到一張空的工作薄了。
    拷貝、更新Excel工作薄
      接下來簡要介紹一下如何更新一個已經(jīng)存在的工作薄,主要是下面二步操作,第一步是構造只讀的Excel工作薄,第二步是利用已經(jīng)創(chuàng)建的Excel工作薄創(chuàng)建新的可寫入的Excel工作薄,參考下面的代碼片段:(完整代碼見ExcelModifying.java)
    file://創(chuàng)建只讀的Excel工作薄的對象
    jxl.Workbook rw = jxl.Workbook.getWorkbook(new File(sourcefile));
    //創(chuàng)建可寫入的Excel工作薄對象
    jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile), rw);
    //讀取第一張工作表
    jxl.write.WritableSheet ws = wwb.getSheet(0);
    //獲得第一個單元格對象
    jxl.write.WritableCell wc = ws.getWritableCell(0, 0);
    //判斷單元格的類型, 做出相應的轉化
    if(wc.getType() == CellType.LABEL)
    {
    Label l = (Label)wc;
    l.setString("The value has been modified.");
    }
    //寫入Excel對象
    wwb.write();
    //關閉可寫入的Excel對象
    wwb.close();
    //關閉只讀的Excel對象
    rw.close();
      之所以使用這種方式構建Excel對象,完全是因為效率的原因,因為上面的示例才是API的主要應用。為了提高性能,在讀取工作表時,與數(shù)據(jù)相關的一些輸出信息,所有的格式信息,如:字體、顏色等等,是不被處理的,因為我們的目的是獲得行數(shù)據(jù)的值,既使沒有了修飾,也不會對行數(shù)據(jù)的值產(chǎn)生什么影響。唯一的不利之處就是,在內(nèi)存中會同時保存兩個同樣的工作表,這樣當工作表體積比較大時,會占用相當大的內(nèi)存,但現(xiàn)在好像內(nèi)存的大小并不是什么關鍵因素了。
      一旦獲得了可寫入的工作表對象,我們就可以對單元格對象進行更新的操作了,在這里我們不必調用API提供的add()方法,因為單元格已經(jīng)于工作表當中,所以我們只需要調用相應的setXXX()方法,就可以完成更新的操作了。
      盡單元格原有的格式化修飾是不能去掉的,我們還是可以將新的單元格修飾加上去,以使單元格的內(nèi)容以不同的形式表現(xiàn)。
      新生成的工作表對象是可寫入的,我們除了更新原有的單元格外,還可以添加新的單元格到工作表中,這與示例2的操作是完全一樣的。
      最后,不要忘記調用write()方法,將更新的內(nèi)容寫入到文件中,然后關閉工作薄對象,這里有兩個工作薄對象要關閉,一個是只讀的,另外一個是可寫入的。


      下面是在一個Excel表格中創(chuàng)建一個矩陣的簡單例子:
    import org.apache.poi.hssf.usermodel.*;
    import java.io.FileOutputStream;



    // code run against the jakarta-poi-1.5.0-FINAL-20020506.jar.
    public class PoiTest {
    static public void main(String[] args) throws Exception {
    FileOutputStream fos = new FileOutputStream("foo.xls");
    HSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet s = wb.createSheet();
    wb.setSheetName(0, "Matrix");
    for(short i=0; i<50; i++) {
    HSSFRow row = s.createRow(i);
    for(short j=0; j<50; j++) {
    HSSFCell cell = row.createCell(j);
    cell.setCellValue(""+i+","+j);
    }
    }
    wb.write(fos);
    fos.close();
    }
    }
    這段代碼首先創(chuàng)建一個Workbook,從該Workbook中得到一個表格、命名,然后繼續(xù)寫入一個50x50的矩陣。最后輸出到一個名為foo.xls的Excel文件,甚至在Apple Mac機上也可以打開。
    POI項目是Java應用的令人興奮的一步,為用戶提供了Windows文檔集成的新功能,允許Java開發(fā)人員方便地擴展其產(chǎn)品的功能。

    posted @ 2008-05-17 13:18 Stephen 閱讀(418) | 評論 (1)編輯 收藏

    DBCC DBREINDEX重建索引提高SQL Server性能

    大多數(shù)SQL Server表需要索引來提高數(shù)據(jù)的訪問速度,如果沒有索引,SQL Server 要進行表格掃描讀取表中的每一個記錄才能找到索要的數(shù)據(jù)。索引可以分為簇索引和非簇索引,簇索引通過重排表中的數(shù)據(jù)來提高數(shù)據(jù)的訪問速度,而非簇索引則通過維護表中的數(shù)據(jù)指針來提高數(shù)據(jù)的索引。

    1. 索引的體系結構

    為什么要不斷的維護表的索引?首先,簡單介紹一下索引的體系結構。SQL Server在硬盤中用8KB頁面在數(shù)據(jù)庫文件內(nèi)存放數(shù)據(jù)。缺省情況下這些頁面及其包含的數(shù)據(jù)是無組織的。為了使混亂變?yōu)橛行颍鸵伤饕I伤饕螅陀辛怂饕摵蛿?shù)據(jù)頁,數(shù)據(jù)頁保存用戶寫入的數(shù)據(jù)信息。索引頁存放用于檢索列的數(shù)據(jù)值清單(關鍵字)和索引表中該值所在紀錄的地址指針。索引分為簇索引和非簇索引,簇索引實質上是將表中的數(shù)據(jù)排序,就好像是字典的索引目錄。非簇索引不對數(shù)據(jù)排序,它只保存了數(shù)據(jù)的指針地址。向一個帶簇索引的表中插入數(shù)據(jù),當數(shù)據(jù)頁達到100%時,由于頁面沒有空間插入新的的紀錄,這時就會發(fā)生分頁,SQL Server 將大約一半的數(shù)據(jù)從滿頁中移到空頁中,從而生成兩個半的滿頁。這樣就有大量的數(shù)據(jù)空間。簇索引是雙向鏈表,在每一頁的頭部保存了前一頁、后一頁地址以及分頁后數(shù)據(jù)移動的地址,由于新頁可能在數(shù)據(jù)庫文件中的任何地方,因此頁面的鏈接不一定指向磁盤的下一個物理頁,鏈接可能指向了另一個區(qū)域,這就形成了分塊,從而減慢了系統(tǒng)的速度。對于帶簇索引和非簇索引的表來說,非簇索引的關鍵字是指向簇索引的,而不是指向數(shù)據(jù)頁的本身。

    為了克服數(shù)據(jù)分塊帶來的負面影響,需要重構表的索引,這是非常費時的,因此只能在需要時進行。可以通過DBCC SHOWCONTIG來確定是否需要重構表的索引。

     

    2. DBCC SHOWCONTIG用法

    下面舉例來說明DBCC SHOWCONTIGDBCC REDBINDEX的使用方法。以應用程序中Employee數(shù)據(jù)作為例子,在 SQL ServerQuery analyzer輸入命令:

    use database_name

    declare @table_id int

    set @table_id=object_id('Employee')

    dbcc showcontig(@table_id)

    輸出結果:

    DBCC SHOWCONTIG scanning 'Employee' table...

    Table: 'Employee' (1195151303); index ID: 1, database ID: 53

    TABLE level scan performed.

    - Pages Scanned................................: 179

    - Extents Scanned..............................: 24

    - Extent Switches..............................: 24

    - Avg. Pages per Extent........................: 7.5

    - Scan Density [Best Count:Actual Count].......: 92.00% [23:25]

    - Logical Scan Fragmentation ..................: 0.56%

    - Extent Scan Fragmentation ...................: 12.50%

    - Avg. Bytes Free per Page.....................: 552.3

    - Avg. Page Density (full).....................: 93.18%

    DBCC execution completed. If DBCC printed error messages, contact your system administrator.

    通過分析這些結果可以知道該表的索引是否需要重構。如下描述了每一行的意義:

    信息                                           描述

    Pages Scanned                    表或索引中的長頁數(shù)

    Extents Scanned                 表或索引中的長區(qū)頁數(shù)

    Extent Switches                  DBCC遍歷頁時從一個區(qū)域到另一個區(qū)域的次數(shù)

    Avg. Pages per Extent         相關區(qū)域中的頁數(shù)

    Scan Density[Best Count:Actual Count]       

    Best Count是連續(xù)鏈接時的理想?yún)^(qū)域改變數(shù),Actual Count是實際區(qū)域改變數(shù),Scan Density100%表示沒有分塊。

    Logical Scan Fragmentation   掃描索引頁中失序頁的百分比

    Extent Scan Fragmentation    不實際相鄰和包含鏈路中所有鏈接頁的區(qū)域數(shù)

    Avg. Bytes Free per Page       掃描頁面中平均自由字節(jié)數(shù)

    Avg. Page Density (full)         平均頁密度,表示頁有多滿

     從上面命令的執(zhí)行結果可以看的出來,Best count23 Actual Count25這表明orders表有分塊需要重構表索引。下面通過DBCC DBREINDEX來重構表的簇索引。

    3. DBCC DBREINDEX 用法

    重建指定數(shù)據(jù)庫中表的一個或多個索引。

    語法

    DBCC DBREINDEX

        (    [ 'database.owner.table_name'   

                [ , index_name

                    [ , fillfactor ]

                ]

            ]

        )    

    參數(shù)

    'database.owner.table_name'

    是要重建其指定的索引的表名。數(shù)據(jù)庫、所有者和表名必須符合標識符的規(guī)則。有關更多信息,請參見使用標識符。如果提供 database owner 部分,則必須使用單引號 (') 將整個 database.owner.table_name 括起來。如果只指定 table_name,則不需要單引號。

    index_name

    是要重建的索引名。索引名必須符合標識符的規(guī)則。如果未指定 index_name 或指定為 ' ',就要對表的所有索引進行重建。

    fillfactor

    是創(chuàng)建索引時每個索引頁上要用于存儲數(shù)據(jù)的空間百分比。fillfactor 替換起始填充因子以作為索引或任何其它重建的非聚集索引(因為已重建聚集索引)的新默認值。如果 fillfactor 0DBCC DBREINDEX 在創(chuàng)建索引時將使用指定的起始 fillfactor

    同樣在Query Analyzer中輸入命令:

    dbcc dbreindex('database_name.dbo.Employee','',90)

    然后再用DBCC SHOWCONTIG查看重構索引后的結果:

    DBCC SHOWCONTIG scanning 'Employee' table...

    Table: 'Employee' (1195151303); index ID: 1, database ID: 53

    TABLE level scan performed.

    - Pages Scanned................................: 178

    - Extents Scanned..............................: 23

    - Extent Switches..............................: 22

    - Avg. Pages per Extent........................: 7.7

    - Scan Density [Best Count:Actual Count].......: 100.00% [23:23]

    - Logical Scan Fragmentation ..................: 0.00%

    - Extent Scan Fragmentation ...................: 0.00%

    - Avg. Bytes Free per Page.....................: 509.5

    - Avg. Page Density (full).....................: 93.70%

    DBCC execution completed. If DBCC printed error messages, contact your system administrator.

    通過結果我們可以看到Scan Denity100%

    ******

    原文鏈接:《如何提高SQL SERVER的性能》

    http://www.csdn.com.cn/database/1142.htm

    作者:unknown

    posted @ 2008-05-17 11:47 Stephen 閱讀(335) | 評論 (0)編輯 收藏

    4月30日,因某些原因需要在上班時間重啟下應用,
    結果重啟后就報錯無法使用,從下午4點多一直到下班系統(tǒng)都無法使用,
    由于系統(tǒng)報的錯誤始終是spring的applicationContext加載失敗,一直在找配置文件的原因,
    其中嘗試還原備份,切換應用等等好多操作,都沒有辦法,
    開始反饋系統(tǒng)出錯的電話很多,頭腦一直是亂的,等到下班以后才靜下心來找原因,
    后來發(fā)現(xiàn)本地測試的應用也無法啟動,
    最后發(fā)現(xiàn)是hibernata的tld文件的下載地址失效了,原來的那個地址在網(wǎng)絡上突然已經(jīng)無法訪問,
    通過其他方式找到TLD文件,打到hibernate 包里面,問題解決.

    此事的教訓:
    1,TLD文件一定要改為從本地取,不能用默認的從網(wǎng)絡讀取的;
    2,遇事要冷靜,不要著急,慌亂,每次都這么說,但每次都著急,需要改進.

    posted @ 2008-05-17 11:36 Stephen 閱讀(407) | 評論 (0)編輯 收藏
    主站蜘蛛池模板: 在线观看成人免费| 久久久久亚洲AV成人片| 美女视频黄的全免费视频网站| 一级片在线免费看| 亚洲av成人综合网 | 亚洲免费福利在线视频| 久久精品国产亚洲AV不卡| 妞干网免费视频观看| 69影院毛片免费观看视频在线| 精品国产免费一区二区三区| 亚洲色www永久网站| 亚洲酒色1314狠狠做| 亚洲另类激情综合偷自拍图| 免费v片视频在线观看视频| 午夜性色一区二区三区免费不卡视频| 叮咚影视在线观看免费完整版| 美女被爆羞羞网站在免费观看| 亚洲人成网站色在线观看| 亚洲综合在线成人一区| 久久夜色精品国产亚洲AV动态图 | 亚洲伊人久久大香线蕉影院| 亚洲欧洲日韩不卡| 亚洲国产日韩在线视频| 国产亚洲AV手机在线观看| 亚洲女人被黑人巨大进入| 国产一区视频在线免费观看| 免费看a级黄色片| 毛片高清视频在线看免费观看| 国产免费丝袜调教视频| 1000部免费啪啪十八未年禁止观看 | 亚洲黄色免费电影| 久久91亚洲精品中文字幕| 亚洲av之男人的天堂网站| 曰韩亚洲av人人夜夜澡人人爽 | 亚洲精品无码av片| 亚洲另类无码专区丝袜| 亚洲精品人成网线在线播放va| 亚洲乱码av中文一区二区| 欧美色欧美亚洲另类二区| 污视频网站免费观看| 一级特黄a大片免费|