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

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

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

    posts - 72, comments - 66, trackbacks - 0, articles - 0

    2008年7月1日


    sudo vim /etc/vmware/config

    在最下面添加一句話:
    xkeymap.nokeycodeMap = true

    posted @ 2010-06-09 15:39 Fingki.li 閱讀(590) | 評論 (0)編輯 收藏

    在使用Iterator處理Collection時,注意java.util.ConcurrentModificationException。
    1.如果你僅僅是對collection進行遍歷查詢,那么不必擔心什么。
    2.但如果你在遍歷過程中要對collection進行刪除,那么你就要注意了。
    For example:
    private void testDel() {  
    1.     List<String> list = new ArrayList<String>();  
    2.     for (int i = 0; i < 10; i++) {  
    3.         String str = "td" + i;  
    4.         list.add(str);  
    5.     }  
    6.   
    7.     for (Iterator it = list.iterator(); it.hasNext();) {  
    8.         String str = (String) it.next();  
    9.         if (str.equals("td5")) {  
    10.             // list.remove(str);  // 刪除方法一 
    11.             it.remove();  // 刪除方法二 
    12.         }  
    13.     }  

    上面的代碼運行沒有問題,但如果你用“方法一”替代“方法二”,則會出現java.util.ConcurrentModificationException。
    (用for-each遍歷也會出個類似問題)
    具體原因是可以看一下先看看List中的remove方法源碼:
    1. public boolean remove(Object o) {  
    2.     if (o == null) {  
    3.         for (int index = 0; index < size; index++)  
    4.             if (elementData[index] == null) {  
    5.                 fastRemove(index);  
    6.                 return true;  
    7.             }  
    8.     } else {  
    9.         for (int index = 0; index < size; index++)  
    10.             if (o.equals(elementData[index])) {  
    11.                 fastRemove(index);  
    12.                 return true;  
    13.             }  
    14.     }  
    15.     return false;  
    16. }  
    17.   
    18. private void fastRemove(int index) {  
    19.     modCount++; // 特別注意這里,這里只增加了modCount的值  
    20.     int numMoved = size - index - 1;  
    21.     if (numMoved > 0)  
    22.         System.arraycopy(elementData, index + 1, elementData, index,  
    23.                 numMoved);  
    24.     elementData[--size] = null; // Let gc do its work  

    接著看。刪除后得到下一個元素的代碼,it.next():  it為AbstractList的內部類Iterator的一個實例。
    1. public E next() {  
    2.     checkForComodification();  
    3.     try {  
    4.         E next = get(cursor);  
    5.         lastRet = cursor++;  
    6.         return next;  
    7.     } catch (IndexOutOfBoundsException e) {  
    8.         checkForComodification();  
    9.         throw new NoSuchElementException();  
    10.     }  
    11. }  
    12.   
    13. final void checkForComodification() {  //注意這個方法
    14.     if (modCount != expectedModCount)  //檢查這兩個值是否相同
    15.         throw new ConcurrentModificationException();  

    最后看Iterator的remove()方法的源代碼:
    1. public void remove() {  
    2.     if (lastRet == -1)  
    3.         throw new IllegalStateException();  
    4.     checkForComodification();  
    5.     try {  
    6.         AbstractList.this.remove(lastRet);  
    7.         if (lastRet < cursor)  
    8.             cursor--;  
    9.         lastRet = -1;  
    10.         expectedModCount = modCount; // 設置expectedModCount  
    11.     } catch (IndexOutOfBoundsException e) {  
    12.         throw new ConcurrentModificationException();  
    13.     }  
    14. }  
    15.   
    16. final void checkForComodification() {  
    17.     if (modCount != expectedModCount)  
    18.         throw new ConcurrentModificationException();  

    這下就明白了,list的remove方法只修改了modCount值,而iterator的remove能同步modCount和expectedModCount.



    posted @ 2010-03-02 12:22 Fingki.li 閱讀(5084) | 評論 (1)編輯 收藏

    Ubuntu 時區時間設置:
    執行
    tzselect(有的版本用tzconfig)
    按照提示進行選擇時區
    sudo cp /usr/share/zoneinfo/Asia/ShangHai /etc/localtime
    執行
    sudo ntpdate cn.pool.ntp.org
    cn.pool.ntp.org是位于中國的公共NTP服務器,用來同步你的時間

    時間
    sudo date

    posted @ 2010-03-02 11:51 Fingki.li 閱讀(466) | 評論 (0)編輯 收藏

    各國語言代碼列表:
    English 1033 1033
    German 1031 1031
    French 1036 1036
    Japanese 1041 1041
    Danish 1030 1030
    Spanish 3082 3082
    Italian 1040 1040
    Dutch 1043 1043
    Norwegian 2068 2068
    Portuguese 2070 2070
    Finnish 1035 1035
    Swedish 1053 1053
    Czech 1029 1029
    Hungarian 1038 1038
    Polish 1045 1045
    Romanian 1048 1048
    Croatian 1050 1050
    Slovak 1051 1051
    Slovene 1060 1060
    Greek 1032 1032
    Bulgarian 1026 1026
    Russian 1049 1049
    Turkish 1055 1055
    British English 2057 1033
    Estonian 1061 1061
    Latvian 1062 1062
    Lithuanian 1063 1063
    Brazilian 1046 1046
    Traditional Chinese 1028 1028
    Korean 1042 1042
    Simplified Chinese 2052 2052
    Arabic 1025 1025
    Thai 1054 1054

    posted @ 2009-12-23 17:33 Fingki.li 閱讀(985) | 評論 (0)編輯 收藏

    記得06年時,看過類似的文章,今又看到了,收藏一下,以備后驗!

    ********************************

    讓我來告訴大家為什么房價這么高,肉價會漲得這么厲害 本文以最淺顯得道理闡
    述經濟的原理,進而闡述經濟的真相。不會有任何所謂的學 術妓 女們常用來欺
    騙人民的深奧的學術理論,還事實以清白,真相只有一個,讓我 們擦亮眼睛,洞
    觀今天發生的一切。 我不是經濟學家,但我比經濟學誠實,本文在以下幾方面闡
    述中國經濟的真相。
        1、什么是經濟發展?
        2、什么是對外貿易?
        3、什么是通貨膨脹?
        4、房價能綁架中國經濟嗎?
        5、房價和通貨膨脹有關系嗎?
        6、房價高漲的原動力是什么?
        7、房價一直漲下去,開發商會笑還是會哭?什么情況下會笑?什么情況

    下 會哭?
        8、坐在華爾街辦公室的財團們是如何吸干中國山區一個農民的血汗的
        9、在有關這場圍繞房價和通貨膨脹之間的各方博弈中可能選擇的中庸路

    線   

        1、 什么是經濟發展?
        簡單的講經濟發展就是有錢,但錢從何來?錢只能印出來。那么到底是
    什 么使印鈔機不停的運轉?
        假設一個島上有1000口人,與世隔絕,人與人之間交換物品過活,但有
    時 候你手里用來交換的東西不一定就是對方想要的,怎么辦?于是人們就用都喜
    歡的 金銀作為交換的東西,于是交換方便了。但金銀要磨損,攜帶也不方便,當
    交換活 動頻繁時,發現這個東西太繁瑣,限制了交換活動,于是為了解決這個問
    題,想了 一個辦法,就是由島上的管理者發行一種符號,用它來代替金銀,于是
    鈔票出現了 。
        剛開始這種鈔票可以隨時得兌換金銀。大家都很放心,因為鈔票就是金
    銀 。可是島上金銀的產量太小,當人們的交換活動更加頻繁時,鈔票不夠用了,
    只能 暫停交換。暫停交換的后果就是大家不生產別人想要的東西了,因為雖然別
    人用, 但交換不出去,套用現在的話說就是經濟發展減速了。
        于是大家想了一個辦法,成立一家錢莊,這個錢莊是大家的,由錢莊來
    發 行鈔票,印出的鈔票借給想用錢的人,然后這個人有錢了再還給錢莊。于是銀
    行就 出現了。
        銀行的出現,能保證交換活動更持續的進行,大家都拼命的生產,島上
    的 東西越來越多,銀行根據產品的生產數量,不停的印制鈔票,以保證交換能更
    深入 的進行。
        后來人們的交換活動更頻繁了,一家錢莊太少了,于是出現了很多錢莊
    , 總要有個管錢莊的吧,于是指定一家錢莊管理其他錢莊,并且鈔票只能由這家
    錢莊 印刷,然后通過其他錢莊借給用錢的人,中央銀行就這么也出現了。   
         2、什么是對外貿易?
        有一天島上的人發明了船,于是就到處劃船跑,發現了另一個島嶼,那
    上 面也有人,也有鈔票,也像自己島上這么活動。但自己島上生產的東西多,那
    個島 上生產的東西少,1元錢在自己的島上能買1斤大米,那個島上的一元錢只能
    買半斤 大米,于是另外島上的錢來這個島上買東西時只能2元換1元才行。于是匯
    率出現了 。算好匯率后,他們開始互相買賣東西到對方島上,這就是對外貿易。
    對外貿易豐 富了人們的生活生產需要,使交換活動到了一個空前的高潮。

        3、什么是通貨膨脹?
        由于島上生產的產品太多了,以至于沒法準確估計到底該發行多少鈔票
    , 發行多了的時候,因為沒有那么多產品可買,產品就開始漲價,發行少了呢就
    開始 降價,為了保證價格穩定,央行要求各錢莊要把一部分錢放在央行里面用來
    調節產 品的價格,根據價格情況多放和少放。這就是存款準備金率。
        可是有一部分聰明人開始怎么才能把錢弄到自己手上,他在海邊撿了一
    顆 石子,說這個石子值100萬快錢,把它賣給了一個人,這個人覺得整個島上的
    錢加一 起也沒有100萬啊,怎么辦,于是向錢莊借,錢莊也沒有這么多錢,于是
    把印鈔機打 開,印了這100萬,借給了他買了這個石子。
        然后這個人開始賣這個石子,100萬賣給了第二個人,由于第一個賣石子
    的 人把錢花了,所以島上的錢多了,所以這一百萬可以籌集到,多買些產品就有
    了。 但當把這個石子以200萬轉讓的時候,錢莊只能又印了100萬鈔票,就這樣鈔
    票越印 越多,可是當這個石子不停的流動轉讓時,大家并不覺得島上的錢多,產
    品價格還 是原來的那樣。可是當這個石子不流通或流通的慢時,大家覺得錢多了
    ,可是如果 當持有石子的人把它扔到大海里,那就等于島上憑空多出N多個100
    萬來,怎么辦, 央行最害怕的就是這顆石子沒了。它沒了島上產品的價格就會飛
    漲,就會通貨膨脹 。那么持有石子的人就綁架了島上的經濟。   

        4、房價能綁架中國經濟嗎?
        中國的房地產已經使中國央行發行了太多的人民幣,如果房價下降,等
    于 把那顆石子投進了海里,那么多印出來的錢會使中國產品價格飛漲,會發生嚴
    重的 通貨膨脹。
        看似房價與石子毫無相干,可是他們的屬性是一樣的,就是價格和價值
    嚴 重的背離。實際上房地產的崩盤受害最大的并不是中國的商業銀行,而是整個
    中國 經濟體系。為什么go-vern-ment遲遲沒有把房價降下來,不是降不下來,如
    果真想降房價, 只需要一道政令,房地產價格會在一夜之間土崩瓦解。可是后果
    誰能承擔,嚴重通 貨膨脹誰來負責?
        房地產業已經綁架了中國的經濟,是無可置疑的,是客觀實在的,沒有
    人 能改變。
        不管誰是總理,廉潔也好,貪污也好,都希望社會和諧,可這是一個棘
    手 的問題。

       5、房價和通貨膨脹有關系嗎?
        可更棘手的問題還不僅僅在這里。如果降房價,面對的是馬上的通貨膨
    脹 ,可不降房價,那么面對的就是更嚴重的通貨膨脹,何去何從?
        所以最可靠的辦法就是穩定房價,然后在社會產品增加時,減少貨幣的
    投 放量,加上其他政策如加息、增加商業銀行準備金率、縮小信貸規模等輔助手
    段, 來使中國經濟軟著陸,這是最好的辦法,我們看到的一切政令也是這個邏輯
    。不信 的話,可以查閱一下近年來go-vern-ment發布的一系列調控房地產業的措
    施。
        可是為什么房價不穩定而且更加的瘋長呢?難道是KFS與go-vern-ment在
    博弈嗎?告 訴你在中國沒有人能和party叫板,幾個肚子大點的KFS 是沒有這個
    實力的。實際上是 幕后的另一只黑手在和中國go-vern-ment博弈,這支黑手就是
    外資,以美國為代表的帝國主 義攫取中國人民血汗的黑手。   

       6、房價高漲的原動力是什么?
        使房價上漲的動力很多,房價上漲對其有利的人就是動力之一,比如:
    為 了GDP和個人利益的地方go-vern-ment、為了賺錢的KFS、炒房族、以至于買了
    房的所謂“房 奴”都是是房價上漲的動力,可是最大的原動力不是這些,是外資
    ,是美國的以攫 取超額利潤的各大財團。
         KFS作為商人,為了賺取高額利潤不是什么傷天害理的事情,可是各行
    各 業都有商人,難道想賺就有嗎?那除非是神話。房地產業的開發商也一樣,不
    是他 們想賺多少就有多少的。根據價值規律,當商品的價格和價值嚴重背離時,
    會有一 種趨向正常價格回歸的力量鉗制價格的上漲,可是在中國的房地產業,這
    種規律似 乎不起作用,一個重要的原因是忽視了一個參考范圍的原因,如果以中
    國經濟本身 而言確實打破了這個規律,可是目前的情況是有一股力量在維持著房
    地產業的價格 ,即托市,那么誰在托市呢?
         誰能在房地產業失控能得到巨額利潤的人就是托市的人。
        討論這個問題前,現看一下中國的外匯儲備情況。中國的外匯儲備在近
    幾 年迅速由1、2千億突破萬億,并且還在迅速的增長,難道是中國人民奮發圖強
    ,掙 來的嗎?這個不需要證明,看中國的GDP增幅就知道,外匯儲備的增長速度
    明顯大于 GDP的增幅。顯然不是掙來的,那么除了掙來的一部分,那么就是所謂
    的 “國際熱 錢”的涌入,而國際熱錢的涌入的目的只有一個,就是要取得高額
    的回報。
        國際熱錢進入中國市場后,首先要兌換成人民幣,那么一下子哪有這么
    多 人民幣呢?只有一個辦法就是讓印鈔機沒日沒夜的工作,然后這筆錢用來托住
    已是 燙手山芋的房地產市場,就是拼命的投資房地產業,當房地產價格因背離價
    值而向 下波動時,通過托市再把它抬高,反復如此,給人的表象就是房產價格決
    沒有偏離 價值。導致房價越漲越高。
        而KFS呢,他們一到房子將要賣不出去的時候,就有人出高價買下來,他
    們 怎么會降價,如果沒有這部分資金在運作,別說是KFS聯盟,就是全國只有一
    個KFS ,價格也會降下來,沒有人買了,難道等房子發霉嗎?
         那么外資持有這么多高價房產做什么?不怕砸到手里嗎?
        不怕!為什么呢?在這個資本運作的過程中,有一個冤大頭在最底下接
    著 呢,是誰呢?就是中國的商業銀行,由于火爆的房地產市場,一流的流通性,
    近年 來沒有看到任何萎縮的跡象,放了貸款就盈利,為什么不貸款呢?沒有理由
    不放貸 款。
        加之中國老百姓買房的心情,外資可以輕易的把高價房轉嫁到中國的銀
    行 和消費者身上,連炒房的農民都能賺到一杯羹,職業的外資會賠錢嗎?
        那么房價一直漲下去,會怎樣呢?請看下一節:“7、房價一直漲下去,
    開 發商會笑還是會哭?什么情況下會笑?什么情況下會哭?”     
    7、房價一直漲下去,開發商會笑還是會哭?什么情況下會笑?什么情況下 會哭

        在中國go-vern-ment近幾年來密集的幾十道金牌的調控下,房價還是如
    脫了韁的野 馬一樣狂奔不止。暫且不論何時能停止上漲的勢頭,畢竟房價在目前
    還是上漲的, 所以我們就看看房價上漲不止會帶來什么。
        首先:由于GDP上漲,中國go-vern-ment為了維持上文說的“保持產品交
    換的繼續” 要不斷地投放人民幣,即開動印鈔機。只要房地產這個石子還沒有投
    入到大海里去 ,還有一定的流通性,那么就不會有通貨膨脹的發生。
        其次:開發商會在這個過程中也賺取巨大的利潤。
        再次:能看到的是,炒房族會賺錢、所謂的買房的“房奴”會增值。
        都賺錢!可是在這個過程中到底誰虧了呢?錢從哪里來呢?如果你是有
    炒 股的經驗就會知道,如果投資價格和價值背離的商品,你賺的錢就是別人賠的
    錢, 那么套用到房地產上,就是買房自住的人,現在看似增值,那是鏡中月、水
    中花, 你不變現就不是你的。再有就是當價格完全回歸真實價值的時候,有時甚
    至會到真 實價值一下,被高價房套住的投資者。還有一個就是開發商!
        為什么說開發商也有賠錢呢?大家知道商人的本性是賺錢,賺取利潤。
    如 果一個商人投機一次就永遠都不做這個生意了,他是賺錢了,可他不是商人,
    這種 商業行為沒有意義。由于商人的本性,所以賺來的錢會繼續擴大再生產,在
    能賺錢 的領域不斷的加大投資。這個道理從生活中就可看出來,越是做大生意的
    人總喊沒 錢,因為要更大的流動資金來維持其擴大再生產的需要。
        所以一旦房價回歸真實的價值之時,就是有一大批開發商崩潰之日。這
    個 是不以任何人的意志和任何行為為轉移的。如果現在有開發商逃離房地產業的
    角斗 場,那么跑得慢的就是最后的輸家。如果都不跑,就像擊鼓傳花一樣,最后
    拿到接 力棒的就是接盤者。有句話叫:“出來混遲早是要還的”。也許只不過是
    方式不一 樣,看誰的運氣好而已。
        可是現在卻沒有任何的KFS賠錢的跡象,有的是KFS不斷的賺錢,老百姓
    送 錢都來不及。只是因為目前房價還在上漲,房產還在不斷的流動。
        一個巨大的問題來了,這樣不斷上漲的房價何時是個頭啊,請看下一節
    : “8、坐在華爾街辦公室的財團們是如何吸干中國山區一個農民的血汗的”

        8、坐在華爾街辦公室的財團們是如何吸干中國山區一個農民的血汗的
         Mao.ZD說過:“帝國主義沒有睡大覺,而是天天在蠢蠢欲動,在圖謀不軌
    , 想達到他們的罪惡目的。誠然他們的氣焰的確沒有以前那么囂張,但他們確實在
    活動 著。”是不是冷戰結束就代表著人類的和平得以實現呢?“一句上帝面前人
    人平等 ”就能掩蓋帝國主義噬血的本質嗎?人人平等的理念是對的,但它只不過
    是帝國主 義用來欺騙人們的伎倆罷了,說到和做到永遠是兩碼事。
        國際財團通過國際熱錢涌入中國,使人民幣加大發行量,然后通過房地
    產 炒作,把中國的國內價格水平無限制的提高,GDP的增長又一次使人民幣的發
    行量被 迫提高。國際財團心黑手狠,雙管齊下,目的就是使中國經濟熱到燙手,
    熱到讓每 個中國人為之瘋狂。
        我們暫不去關心這個過程,我們放眼未來,看看這一過程的結果是什么
    樣 呢?換句話說財團的目的是什么呢?
        很明顯,中國人最不愿意看到的事情,就是財團們最樂見的結果。先做
    個 假設,比如國際熱錢在投資的中國房地產領域里上演最后的瘋狂后,然后把房
    產成 功解套全部變現,如果此時人民幣兌美元的匯率達到美國預期最高時,匯率
    是熱錢 逃離時需要相乘的那個倍數,會發生什么誰都能想到,所有熱錢會一夜之
    間全部兌 換美元逃離。財團們會賺得溝滿壕平,中國市場上除了錢就是錢,能遮
    住天的大把 人民幣將成為中國人民的噩夢。
        這是中國人最不愿意看到的事情,也是財團最樂見的結果。近期美國不
    斷 的通過政治、貿易等手段逼迫人民幣升值,而中國go-vern-ment遲遲不升值或
    小范圍的升值 ,遠遠沒有達到美國go-vern-ment的預期,這是在出口處的中美之
    間的博弈。美國逼迫人民 幣升值的狼子野心昭然若揭!
        順便提一句,如果真的這個升值預期達到了,中國樓市將重演日本上世
    紀 90年代崩盤的歷史。只是那時中國經濟也會像日本一樣進入一個連續低迷不振
    的不 歸路。
        在這種攸關民族生存的問題上,go-vern-ment會坐視不管嗎?就算是退
    一步來講, 一個完全不負責任的go-vern-ment遇到這種情況,因為這個資本運作
    同時也極大侵犯了go-vern-ment 的利益,也會拼命反搏的。
        那么中國go-vern-ment會以什么樣的方式來化解這一“經濟危機”呢?
    請看下一節 :“在有關這場圍繞房價和通貨膨脹之間的各方博弈中可能選擇的中
    庸路線”。

      9、在有關這場圍繞房價和通貨膨脹之間的各方博弈中可能選擇的中庸路線
        我一直相信:物極必反,中庸,是老祖宗留給后人解決棘手問題的殺手
    锏 !
        既然是中國房地產“綁架”了中國的經濟,那么我們就從“綁架”說起
    。 何為“綁架”,應該是相對弱的一方,拿著相對強的一方的“要害”,使相對
    強的 一方即便有能力對付弱的一方,但礙于投鼠忌器,無力可施。
        我們先來看看綁架雙方的陣容和各自手上的籌碼。房地產業的主體是KFS
    , 所以KFS算一方,它綁架的要害是中國經濟,那中國經濟是誰的要害呢?是中
    國人民 的要害,代表中國人民的,目前只能是中國go-vern-ment。中國go-vern
    -ment算一方。外資呢?它是 煽風點火者,劃到KFS一方。中國go-vern-ment一方
    有公權力,可以通過稅收、財政、經濟政 策、行政手段對KFS陣營施力,KFS陣營
    通過源源不斷的后備資金來綁架中國經濟, 且不斷的提高贖金。
        問題已經擺在這里,怎么辦呢?沖上去一槍擊斃,那歹徒非撕票不可,
    太 極端不可行。所以有為go-vern-ment開出藥方,只要實現了某某一條既可降低
    房價的主意, 就猶如這一槍擊斃一樣是不可行的。我們想象如何解救綁架事件的
    ,首先要穩定住 對方的情緒,再一步步地靠近,但這種靠近雖會引起歹徒的敵意
    ,但不會導致他撕 票,然后再進一步穩定情緒,再靠近,然后條件成熟時,再穩
    準狠,即保證人質的 安全,又要保證歹徒一舉拿下。這才是真正的營救。
        所以中庸才是解決棘手問題的殺手锏。極端、盲目、冒進是要不得的。
        針對如何解決中國房地產市場的綁架問題,就要圍繞問題的關鍵部分一
    步 步地施加反作用力,然后一舉成功,才是正道。
        第一個關鍵的部分就是匯率,中國go-vern-ment會嚴把匯率關,我們可
    以預期的是 ,人民幣兌滅元的匯率決不會過快升值,但會小幅升值,就是要穩定
    對方的情緒, 如果一點不升,對方會狗急跳墻,如果升的過快,是給自己掘墓,
    所以為什么中國 匯率升幅總是猶抱琵琶半遮面,看看美國go-vern- ment的態度
    跟一個綁匪是多么的 貼切,我要一瓶果汁,為什么拿來半瓶水。可又說不出什么
    來,畢竟還能暫時解渴 。
        第二個關鍵是限制資產流動性,既然房地產能綁架中國經濟,說明它舉
    足 輕重,限制房產的流通性,就可以限制資產的流動性,注意這里是兩個概念,
    “資 產流動性”和“房產流通性”。兩者完全不同,但又息息相關。房產流通性
    減弱, 資產流動性減弱,那么需要印刷的人民幣就減少。就像那個石子,不流通
    馬上通脹 ,不漲價流通沒問題,可是行不通,外資也不同意。既然是不斷的上漲
    價格,只能 一步步地限制房產流通,只要房產流通性少一點,通脹就會顯現一點
    ,然后再通過 上調準備金率和加息等柔性政策來調整一點,用柳葉棉絲掌來化解
    泰森的一記重拳 ,以綿柔克強剛、化千鈞于無形,這就是中國go-vern-ment的策
    略(這好像是中國人最擅長 的事情)。我們從官方媒體就能看到相關的消息,樓
    市簽約率在下降,即流通性在 下降,然后物價開始有所漲幅,如豬肉等副食產品
    ,但央行馬上上調準備金率和加 息,來穩定物價。不知各位看官是否也看出些端
    倪。可預期的是,到完全化解危機 之前,會不斷地加息和調高準備金率,同時房
    產流通性會越來越弱,這個預言是否 準確可在以后的央行政策上驗證。等完全消
    除了由于經濟過熱導致的通貨膨脹預期 ,那么就是房地產價格回歸真實價值之時

        不管你看到沒看到,這已是最后的瘋狂,我們從兩方面來分析:
        第一,如果這場博弈以外資勝利而告終,那么中國經濟將步日本90年代
    持 續下滑的深淵,由于外資撤走,房市賴以生存的支柱坍塌,房價會一落千丈,
    可到 時候不管是KFS還是老百姓都將承受經濟下滑之苦,持有的貨幣迅速貶值,
    即便房價 落下,也不一定買的起。這是中國go-vern-ment和中國人民不可接受的
    ,也是無法接受的。
        第二,如果外資以失敗而告終,即在匯率上把住出口,讓房價回歸真實
    價 值,把外資同樣套在中國,這才是勝利的前提。那么以美國財團為首的帝國主
    義噬 血者必將瘋狂報復,會在投資、出口等各方面對中國施加壓力。我們今天人
    民幣升 值沒有達到美國預期,已經導致中國出口到美國的產品受打壓,進而引起
    了眾多的 貿易摩擦,由此可見一斑。我們知道,經濟發展的三套馬車是,投資、
    出口和消費 ,在投資、出口領域遭到報復會影響中國經濟的發展,但我相信不會
    影響我們的發 展速度,別忘了還有一套馬車是“消費”,房價下降后,如果你是
    愛國者,請現在 保護好你的錢包,到時千萬別羞羞答答,要果斷地出手買房,中
    國經濟會在消費領 域異軍突起,繼續獨占世界經濟引擎的鰲頭。

    posted @ 2009-12-18 15:55 Fingki.li 閱讀(527) | 評論 (0)編輯 收藏

    看了這篇文章,真的讓我無語了。。。

    *****************************************以下轉載*********************************************

    昨晚,和一個開典當行的同學喝酒。
    我問同學,“你買了多少套房子,多少間鋪面?”

    “房子22套,鋪面12間。”同學炫耀似的答道。

    “那你花了多少錢呢?”同學雖然是千萬級的富翁,但他也不至于能把千萬多的錢壓在固定資產上吧!我心中默算了一下,非常懷疑!
    現在買房子,傻瓜才掏錢!虧你還是個生意人!”同學鄙視的看著我。

    同學的話,簡直令我震耳欲聾,使我目瞪口呆。我連忙虛心請教。于是,同學就對我說出一番匪夷所思、驚世駭俗的話來......以下,都是我同學的話,雖然詞句有些出入,但基本語意我還是轉述清楚了的。


    一、買房不掏錢,你是怎么操作的?

    同學的話——
    你知道,我的典當生意完全是靠錢生錢。第一次買房時,雖然我有能力一次性付清全款,但我還是不愿意那么多的現金被房子壓死。那時,正流行“零首付”,于是,我一分錢沒花,貸款18萬買了房(貸款期限為一年)。

    一年期滿,要還房款和利息了。也不知道是我幸運呢?還是我倒霉!那時,我的資金被一筆業務占用了。為了業務,我不僅還不起房款不說,還得另外新增貸款。迫 不得已,我找老關系——銀行的信貸部經理溝兌。當我吞吞吐吐的把“延期還房款并另外新增貸款”的要求說出來后,沒想到,信貸經理卻詭秘的一笑,非常爽快的 答應了。

    信貸經理給我出的主意很簡單:讓我老婆,以兩倍的價格,貸款買我的房子,貸款期限也是一年。
    “兩倍的貸款,那就是兩倍的利息啊!你這不是變著方的剝削我嗎?”我還沒有反應過來。
    “如果到時,你不還款呢?”信貸經理很鎮定。
    “啊......”
    “被銀行收房,沒有什么大不了的!關鍵是除去稅費后,我還憑空白得了17萬。不,這17萬我可不能一個人得,我至少要分給他5萬。”很快,我反應過來。于是,我對信貸經理會心的一笑......
    這,就是我第一次買房的經歷。

    我后來的買房經歷都與此類似,也就是:堅決的不掏一分錢,全部用銀行的貸款買房子;然后,如果遇見不明真象的投資者(說是投資者,其實是傻帽)買房,那就 高價賣給他。如果一直沒有投資者買房,那就不斷的把自己的房子加價轉貸給自己,不斷的用銀行的錢來還銀行的債。

    并且,我是開典當行的,與銀行的關系是一般人無法比的。一般老百姓買房,大都選擇20年按揭,而我買房從來都是只貸款一年,到期了才還本金和利息。這樣操作,不用交月供。而貸款到期后,我只須做做“紙面文章”轉貸款一下。實際上,我一分錢也不用掏。


    二、我不信,在實際生活中能有如此荒謬的事情。你講的是“童話”吧!

    同學的話:兄弟!我是看你人對,才給你講這些掏心窩的話。你怎么可以不相信我呢?你要怎樣才能相信我呢?
    作者發言:你就給我講點實際的例子吧!
    同學的話:你知道王二麻子是怎么發家的嗎?
    作者發言:“那你說說。”王二麻子是我的另外一個同學,現在是開發房地產的億萬級富翁。
    同學的話——

    那我就說說。

    想當年,王二麻子那個落魄啊!就連他注冊公司的注冊資金,也是我臨時拆借給他的。如今,別看王二麻子表面風光,他拿地的錢,是從銀行貸款的;修房子的錢,是建筑商墊資的。總之,他就是一個完全的“空手道”。

    房子修好后,王二麻子在正式開盤前,通常要舉行一個“內部認購會”。這個內部認購,其實就是王二麻子召集公司內部員工和一些象我這樣的、相熟的炒房客(或 者干脆是一些從招聘會上收集的、眾多的、應聘者的“身份證復印件”),以這些人的名義來買房子,全部用銀行貸款來買。這,就是所謂的“開發商囤房”。

    并且,此次交易上報給銀行的交易價,必須比實際的內部交易價提高30%。為什么?因為貸款買房要首付兩成啊!舉個例子,如果你想收回100萬,那你就必須 以130萬的房價向銀行貸款。這樣,銀行給你的錢就是:130萬×0.8=104萬;你實際裝進口袋的錢就是:104萬—4萬(給相關銀行人員的“好處費 ”)=100萬。

    就這樣,通過開盤前的內部認購,王二麻子其實已經成功的全部收回了投資,把所有的風險轉給了銀行。到這時,王二麻子才會開始打廣告賣房子,并歸還“買地的銀行貸款”和“修房子的建筑商墊資”。


    作者發言:后面又怎么操作呢?

    同學的話——

    你怎么那樣笨啊!稍微聰明一點的人都能想到,后面的操作方法,其實與我炒房的方法是一樣的,也就是:“如果遇見不明真象的投資者(說是投資者,其實是傻 帽)買房,那就高價賣給他;如果一直沒有投資者買房,那就不斷的把自己的房子加價轉貸給自己,不斷的用銀行的錢來還銀行的債。”

    不過,由于已經收回了按揭貸款的首付款,所以后面的操作并不需要每一次都加價30%,只需按著樓市房價本來的上漲幅度加價就可以了(即每年上漲14%左右)。

    什么?萬一房價上漲幅度不足于支付貸款利息怎么辦?笑話,你什么時候看見過中國樓市的房價上漲幅度低于當年的貸款利息了?

    明白了吧!這,就是中國樓市的房價只能上漲不能下跌;并且,房價的上漲幅度還不能低于當年貸款利息的真正原因!!
    想想就覺得可笑,居然有學者說,“建筑成本和地價的不斷上漲,是房價飛漲的原因。”這簡直是扯蛋! 其實,“金融成本”才是房價構成的大頭,至少要占目前房價的50%。

    以上海倒塌的蓮花河畔景苑為例。網上公布,其樓面價格不到604元/平方米,建筑成本也不到1300元/平方米(其實,網上公布的建筑成本并不準確。市法 院電梯公寓的建筑質量總該比它好吧,建筑成本也沒有超過1000元/平方米)這么便宜的房子,開發商為什么非得要把它賣到14000元/平方米呢?賣低一 點、少賺一點不行嗎?答案是不行的。原因很簡單,“金融游戲”是有成本的,每這樣操作一次,房子就必須加價一次。只有不斷的加價,上述操作才有生存的空 間。所以,蓮花河畔景苑前年賣7000元/平方米,去年賣10000元/平方米,今年就得非要賣14000元/平方米。俗話說“豆腐盤成了肉價錢”。這, 就是“金融游戲”的代價!

    有句話道出了目前中國樓市的實情,“房子是用來炒的,不是用來住的;商品房是賣給銀行的,不是賣給老百姓的。”
    老同學,請你想一想,現在的樓市,房價明明已經遠遠的超過了老百姓的實際購買能力(也就意味著房子永遠賣不出去),為什么房價還會不斷的上漲呢?并且,還要“量、價齊漲”呢?原因何在?正在于此!


    三、你講的,只是極個別的現象,不能代表中國樓市的整體形勢。

    同學的話——

    老同學,你太孤陋寡聞了吧。請看:

    李樹彪案:1999年9月8日到2004年1月15日,湖南郴州市住房公積金管理中心原主任李樹彪騙取公積金貸款、銀行貸款共計44筆,涉案金額1.2億元。

    康明案:2000年前后,河南鄭州康明置業有限公司通過東明花園414套房源,在工商銀行、交通銀行、建設銀行、招商銀行進行重復抵押貸款共690多套,至少套取銀行資金2億元。

    姚康達案:從2002年至2003年上半年,中國工商銀行上海外高橋保稅區支行向“姚康達”一人發放房貸7141萬元,用于炒作128套住房。

    森豪虛假按揭案:從1997年年至2002年上半年,北京市華運達房地產開發公司以森豪公寓、太利花園為幌子,采取假按揭的方式,向中行北京市分行、北京 銀行中關村支行、北京銀行展覽路支行三家銀行騙貸共計16.2億元。(請看《京城最大假按揭騙貸案震醒房市》 http://finance.people.com.cn/GB/1045/9255894.html)

    建行廣州分行案:2002年,審計署抽查建設銀行廣州地區八家支行的住房按揭貸款,發現10億元虛假按揭。僅廣東省汕尾市公安局某副局長一人,即騙取建行廣州市芳村支行按揭貸款3793萬元。

    曲滬平案:2006年,上海浦東發展銀行陸家嘴支行在已發放貸款中,發現1.26億元個人房產按揭貸款存在抵押不實,貸款代理人為“曲滬平 ”。其后更查出與曲相關的房貸高達91筆,涉及金額4億元左右。銀行不得不委托房屋中介公司出售抵押房產,以回收問題貸款。

    同泰案:2006年,北京同泰房地產公司涉嫌利用87份假業主所簽購房合同,從銀行騙貸6700萬元。

    成都虛構房產騙貸案:2005年至2008年期間,犯罪嫌疑人唐某勾結成都市房管局工作人員以虛構房產的方式辦理房產證進行騙貸。現已發現的涉案房產證已超過一百多套,涉及金額近二千萬元!而且事態還在進一步發展中。

    另外,今年銀監會三令五申的明確要求,“貸款發放必須用于滿足實體經濟的有效信貸需求,防止信貸資金流入樓市”。然而,40000億資金依然流入樓市......

    老同學,請你想一想,為什么會發生那么多的這類事情呢?為什么全國的銀行都明知道是假按揭也要把錢貸給地產商呢?難道銀行的官員們都是傻子嗎?

    其實,銀行的官員們一點都不傻。

    原因在于,銀行內部人員與開發商其實是狼狽為奸的同伙。參與這項操作的某些銀行內部人員決不是希望通過購房者支付貸款利息為銀行賺錢,坦白地說,他們是在 參與分贓——他們與開發商一起盜取不義之財,將風險轉嫁給國家銀行,而買單的是真實的購房者。一旦真實的購房者無法買下這個巨單,銀行就出現危機。 

    這時候,買單的就是全國人民了,國家必須銀行注資,消除爛帳。國家的錢哪里來?印鈔票!結果是什么?通貨膨脹,物價飛漲,老百性的錢不值錢 了,或者說老百姓的錢被搶了,被誰搶了?被國家搶去堵漏了,堵開發商和銀行某些蛀出來的大洞。這個洞如此之大,堵住了也是一個丑陋的疤,而疼的永遠是百 姓。

    所以我會說——房地產業已經成為相關單位、相關部門團結起來瓜分國家金錢(其實是老百姓的存款)的道具。
    違規又有什么大不了的?銀行官員們不怕啊!只要表面的紙上手續完備了,我就沒有了責任。即使按揭貸款是假的,又有什么關系?況且銀行有國家這 個后臺,就是虧了也不怕,反正銀行的官員們現在掙了錢就行。至于銀行以后不行了,自然有國家來管,況且那是下屆銀行官員的事情。難怪中國銀行的壞賬率居然 在40%以上!原來,在中國,最大的腐敗在銀行!!


    四、我依然認為,這只是極個別的現象。如果你講的是普遍的現象,為什么還沒有開發商被收樓呢?

    同學的話——

    原因有許多,簡單的有:

    1、你不關心房地產界的新聞。比如“曲滬平案”,上海浦東發展銀行陸家嘴支行就收了樓,不得不成為了“房東”;

    2、由于開發商在銀行內部的同伙,掩護工作做的好的緣故,案子沒暴。

    掩護工作怎么做?很簡單——只要一近債務償還期,開發商就會和“銀行內部的同伙”們一起,把房子又一次加價賣給(轉按揭)其它的“身份證復印件”(其實,房子依然在開發商手里)。這樣操作,開發商永遠不會被收樓。

    雖然這樣操作,房價會不斷的上漲,并很快的遠遠超過老百姓的實際承受能力(也就意味著房子永遠賣不出去)。但是,這樣的操作,如果只從官樣程 序上來看、只從表面的紙上手續來看的話,它是永遠合法的。這就是銀行官員們敢于給開發商打掩護的原因——因為以目前的銀行制度來說,只要表面的紙上手續完 備了,銀行的官員就沒有了責任。


    五、你的意思是,目前的銀行貸款制度有著嚴重的漏洞?

    同學的話——

    當然!

    我能不花錢的買那么多的房子和鋪面,甚至還靠房子從銀行套出那么多的周轉資金做生意,這一切,全都得感謝銀行的制度漏洞啊!銀行的貸款制度,真的是“為人民服務的好制度”啊!

    作為一個典當行的老板,以同行的眼光來看,我認為銀行貸款的制度漏洞有:

    1、抵押物價值的評定方法有缺陷。

    比如,明明開發商拿地只用了5000萬,他卻可以用這塊地抵押貸款1個億;比如,開發商修樓修到蓋頂,明明只用了7000萬(含地錢),他卻可以用這個樓抵押貸款2個億。

    如果,按照我們典當行的規矩來辦,事情又會怎樣呢?

    當開發商用這塊地抵押貸款時,我會親自去核實:開發商拿這塊地,是否真的給了政府5000萬。并且,如果這個情況屬實,他也最多只能貸款4000萬。因為我要預提風險基金啊!

    當開發商用這個樓抵押貸款時,我也會親自去核實:開發商修這個樓,是否真的花了2000萬(只算建筑成本,不含地)。我會按照各種人工、各種建筑材料的最 低價來核算這個樓的建筑成本。并且,如果開發商修這個樓的確花了2000萬,他也最多只能貸款7000萬×0.8=5600萬(連地一起抵押)。

    最后,當購房者按揭貸款時,我絕對不可能按照“購房合同交易價”來發放貸款,購房者最多能獲得的貸款金額是:7000萬×0.8×購房面積/此樓總面積。

    舉個例子:有個賣衣服的商人因為生意周轉,需要以衣服為抵押物向銀行貸款。你說說,銀行是該“按照衣服出廠價的8折”給他貸款呢?還是該“按照衣服零售價的8折”給他貸款。

    作者發言:當然該按出廠價算。如果按照零售價算的話,賣衣服的商人干脆不用開店了,他直接把衣服賣給銀行賺錢更快!恩,我明白了,怪不得在中國會出現“房子是用來炒的,不是用來住的;商品房是賣給銀行的,不是賣給老百姓的”這樣的奇聞!!!

    同學的話:是啊!抵押房的價值,不能由客戶之間的交易來決定啊!!

    2、責任追究方法有缺陷

    “只要表面的紙上手續完備了,銀行官員就沒有了責任。”這怎么可以呢?在我的典當行,我可不管你的紙上手續是否已經完備,只要是你負責的業務出了問題,嘿嘿!我就找你算帳!!!

    另外,讓國家損失16.2億的森豪虛假按揭案暴露后,相關的銀行官員居然沒有被追究責任,這怎么可以呢?嘿嘿!如果這樣的事是發生在我的典當行,不要說讓他家破人亡,我至少會讓他和他的親戚傾家蕩產!!!

    作者發言:是啊!發生金融案件后,居然不追究相關銀行官員的責任。換成是我,我也覺得“打馬虎”比盡忠職守更合算!!!怪不得中國的金融案件層出不窮。聽 君一席話,勝讀十年書!聽你說到這兒,就連我這么笨的人也知道了應該如何理順樓市——只要嚴格金融制度,讓炒房的人不能獲得投機的資金,樓市的泡沫自然的 就會散去!!

    同學的話——

    你終于聰明了一回。可惜!!!

    posted @ 2009-12-14 14:21 Fingki.li 閱讀(418) | 評論 (1)編輯 收藏

    Error info:
    E:Dynamic MMap ran out of room. Please increase the size of APT::Cache-Limit. Current value: 25165824. (man 5 apt.conf), E:Dynamic ...

    Reason: sources.list is wrong. (/etc/apt/sources.list)

    For example: the ubuntu 9.04 with the sources.list of the ubuntu 8.10, the error will be there.

    Others cases:
    Error :Synaptic Package Manager
    Error info:
    E: dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct the problem.
    E:_cache->open() failed, please report.

    please run 'dpkg --configure -a'.

    posted @ 2009-11-23 15:57 Fingki.li 閱讀(1233) | 評論 (0)編輯 收藏

         摘要: 轉載:請每一個孝順的子女耐心的看下去!  閱讀全文

    posted @ 2009-11-03 15:04 Fingki.li 閱讀(307) | 評論 (0)編輯 收藏

         摘要: 要理解IOC,推薦: 看《墨攻》理解IoC概念。
    IOC從字面來看不容易懂,但如果你看了這篇文章,相信你一定會懂。
    佩服原作者!  閱讀全文

    posted @ 2009-08-13 10:34 Fingki.li 閱讀(1367) | 評論 (1)編輯 收藏

         摘要:   閱讀全文

    posted @ 2009-08-11 17:38 Fingki.li 閱讀(12089) | 評論 (6)編輯 收藏

    對于parseInt("01")到parseInt("07");都能得到正確的結果,但如果是parseInt("08") 或parseInt("09")則返回0;
    首先看parseInt語法:parseInt(string, radix);
    其中string為要轉換的字符串,radix為二進制,八進制,十六進制或十進制。
    在默認不指定radix時,當以0x開關時,為十六進制;如果以0開關且第二位不為x,則讓為是八進制,(因為八進制不能有8,9所以報錯返回0)。
    所以,在我們用時還是明確指定進位制,以防出錯。
    如我們平時都用十進制位,我們就 parseInt("08", 10);

    posted @ 2009-07-31 15:53 Fingki.li 閱讀(3583) | 評論 (4)編輯 收藏

         摘要: vsftpd 有關錯誤 500 OOPS: vsftpd: refusing to run with writable anonymous root   閱讀全文

    posted @ 2009-07-13 10:58 Fingki.li 閱讀(11574) | 評論 (5)編輯 收藏

         摘要: Linux下application中文顯示為方塊問題的解決  閱讀全文

    posted @ 2009-07-06 10:27 Fingki.li 閱讀(1703) | 評論 (0)編輯 收藏

         摘要: jquery css hover  閱讀全文

    posted @ 2009-05-21 10:51 Fingki.li 閱讀(3771) | 評論 (0)編輯 收藏

    DWR 2.0.5,
    方法使用對象參數時報錯如下:
    Erroring: batchId[0] message[org.directwebremoting.extend.MarshallException: Error marshalling test.User:

    一個最可能的原因是 User沒有一個無參的construction。

    暈。。。
    朋友們注意呀!

    posted @ 2009-04-23 15:23 Fingki.li 閱讀(1460) | 評論 (0)編輯 收藏

    對于以太網環境下UDP傳輸中的數據包長度問題

    首先要看TCP/IP協議,涉及到四層:鏈路層,網絡層,傳輸層,應用層。
    其中以太網(Ethernet)的數據幀在鏈路層
    IP包在網絡層
    TCP或UDP包在傳輸層
    TCP或UDP中的數據(Data)在應用層
    它們的關系是 數據幀{IP包{TCP或UDP包{Data}}}
    在應用程序中我們用到的Data的長度最大是多少,直接取決于底層的限制。
    我們從下到上分析一下:
    在鏈路層,由以太網的物理特性決定了數據幀的長度為(46+18)-(1500+18),其中的18是數據幀的頭和尾,也就是說數據幀的內容最大為1500,即MTU(Maximum Transmission Unit)為1500;
    在網絡層,因為IP包的首部要占用20字節,所以這的MTU為1500-20=1480;
    在傳輸層,對于UDP包的首部要占用8字節,所以這的MTU為1480-8=1472;
    所以,在應用層,你的Data最大長度為1472。
    (當我們的UDP包中的數據多于MTU(1472)時,發送方的IP層需要分片fragmentation進行傳輸,而在接收方IP層則需要進行數據報重組,由于UDP是不可靠的傳輸協議,如果分片丟失導致重組失敗,將導致UDP數據包被丟棄)。
    從上面的分析來看,在普通的局域網環境下,UDP的數據最大為1472字節最好(避免分片重組)。
    但在網絡編程中,Internet中的路由器可能有設置成不同的值(小于默認值),Internet上的標準MTU值為576,所以Internet的UDP編程時數據長度最好在576-20-8=548字節以內。
    MTU對我們的UDP編程很重要,那如何查看路由的MTU值呢?
    對于windows OS: ping -f -l <data_length> <gateway_IP>
    如:ping -f -l 1472 192.168.0.1
    如果提示:Packets needs to be fragmented but DF set.
    則表明MTU小于1500,不斷改小data_length值,可以最終測算出gateway的MTU值;
    對于linux OS: ping -c <number> -M do -s <data_length> <gateway_IP>
    如: ping -c 1 -M do -s 1472 192.168.0.1
    如果提示 Frag needed and DF set……
    則表明MTU小于1500,可以再測以推算gateway的MTU。
    當然要修改MTU的值,那就是網管的事了(一般人沒這權限呀),我們只能申請加等待了 ^-^ .

    posted @ 2009-04-10 16:35 Fingki.li 閱讀(2415) | 評論 (0)編輯 收藏

    從JDK5開始就已經增加了對VM的監控功能jconsole,JDK1.6也有了進一步的改進。
    然而對linux特別是Ubuntu用戶來說,會碰到一些小問題。
    在終端進入java_home/bin目錄下,
    # jconsole
    結果報錯如下:
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

    原因就是在ubuntu下用java寫Swing應用程序時不能使用SystemLookAndFeel
    實際上出現這個問題是因為swing的默認laf采用systemlaf,而Ubuntu里卻沒有定義這個laf。
    一種很方便的解決方法就是把語言環境改成英文:
    # export LANG=en
    但對中文用戶很不方便(盡管swing程序可以運行)。
    另一種方法就是程序啟動時加上jvm運行時參數,比如 運行jconsole :
    # jconsole -J-Dswing.systemlaf=javax.swing.plaf.metal.MetalLookAndFeel

    另外,jconsole對于hostname也有要求,如果執行:
    # hostname -i
    顯時 127.0.0.1,則需要在 /etc/hosts中把127.0.0.1改成機器的外網IP。
    這下,我們就又多了一個jvm分析的利器。

    posted @ 2009-03-24 11:45 Fingki.li 閱讀(6280) | 評論 (2)編輯 收藏

    Kraken plugin as IM gateway is developed separately from openfire.
    It is built alongside openfire.
    Kraken build Detail:http://kraken.blathersource.org/node/9
    But I still encountered this problem when I did that.
    When I run the step:ant release,I found the following error,although BUILD SUCCESS,
    Error:
      [jasper2] 409  DEBUG No Java compiler available
      [jasper2] java.lang.NoClassDefFoundError: org/eclipse/jdt/internal/compiler/env/INameEnvironment

    NoClassDefFound,obviously,there is no class named 'INameEnvironment',
    I run 'find ./ -name jdt*' ,there is nothing really.
    I know that it need a jar named 'jdt-compiler' via google,so I download it.
    If you can find it to download you can come the following site:
    http://fisheye1.atlassian.com/viewrep/springframework/spring/lib/jdt     or
    http://softwarelivre.sapo.pt/projects/ptpos/browser/openbravopos/trunk/build/zip/lib/jdt-compiler-3.1.1.jar?rev=35
    I get jdt-compiler-3.1.1.jar from the site mentioned above,and put it into the java lib directory;
    then,add a line :<pathelement location="${java.home}/../lib/jdt-compiler-3.1.1.jar"/> in classpath of taskdef named 'jasper2' in the build.xml of Openfire
    So far so good ,I have fixed it.

    posted @ 2009-03-05 17:47 Fingki.li 閱讀(1580) | 評論 (0)編輯 收藏

    PEM : Privacy Enhanced Mail 隱私增強郵件
          是使用多種加密方式提供機密性、認證、信息完整性的因特網電子郵件,在因特網中沒有被廣泛配置;
          而現在更多的是用作密鑰格式,并且可包含私鑰(RSA和DSA)、公鑰(RSA和DSA)、X509證書,它存儲ASCII包裝的BASE64編碼的DER數據,適用于系統之間的文本模式傳輸。

    DER : Distinguished Encoding Rules 分布式編碼規則
          也可包含私鑰、公鑰和證書,它是大多數瀏覽器的默認證書格式,并且按ASN 1 DER 格式存儲進行存儲。(它沒有頭部-PEM是有文本頭部包裝的DER)。

    VoIP : Voice over Internet Protocol 網絡語音傳輸

    SIP : Session Initiation Protocol 會話發起協議

    posted @ 2009-03-04 15:42 Fingki.li 閱讀(261) | 評論 (0)編輯 收藏

    經過漫長的配置,終于搞定了windows AD、domain和Exchange2007,
    新建了帳戶后,用戶 fingki 密碼 ************** 郵件 fingki@mydomain.com 在另一臺win xp上測試。
    這里要注意DNS的配置,且要打開服務 services,確定pop3等郵件服務都已經啟動。
    首先加入該域 mydomain.com
    然后 重啟,用fingki登錄該域,一切還算順利。
    再 測試郵件收發,啟動Outlook,用fingki@mydomain.com新建一outlook帳戶,郵件服務器用戶名 fingki密碼************;其他的是默認配置。
    測試給administrator@mydomain.com發一封郵件,正常,然后再給自己發一封;
    接收郵件時,提示:由于服務器拒絕接受發件人的電子郵件地址,這封郵件無法發送。...服務器響應: '530 5.7.1 Client was not authenticated', 端口: 25, 安全(SSL): 否, 服務器錯誤: 530, 錯誤號: 0x800CCC78.
    奇怪。
    后來發現,原來exchange2007默認是采用ssl安全傳輸的,需要對 pop3設置安全連接,端口會默認變為995。(即選中:“此服務器要求安全連接SSL”)。
    按上面要求 設置pop3為SSL連接。接收郵件就正常了。
    (網上也有朋友說是DNS的MX記錄丟失,但顯然我的不屬于這種情況)。
    另外,很有意思的是如果你為Exchange用戶設定多個電子郵件地址(當然只會有一個為默認郵件地址,或叫主地址),當有人給你向這多個地址中發送郵件時,這些郵件都會發到你的主地址郵箱中。

    posted @ 2009-02-27 11:05 Fingki.li 閱讀(10529) | 評論 (3)編輯 收藏

    View cpu information command:
    1 # dmesg | grep CPU
    2 # cat /proc/cpuinfo

    you can find the following from the show :AMD Athlon(tm) 64 X2 Dual Core Processor 4000+
    It tell you :64bit cpu

    View OS version:
    # cat /proc/version
    you can see information similar to the following:
    Linux version 2.6.24-21-generic (buildd@palmer) (gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu7)) #1 SMP Tue Oct 21 23:43:45 UTC 2008

    View OS bit num:
    # getconf LONG_BIT
    you can see :32 or 64.


    posted @ 2009-02-26 10:42 Fingki.li 閱讀(349) | 評論 (0)編輯 收藏

         摘要: If you install im gateway plugin firstly, perhaps you did not encounter this problem.
    If you upgrade your im gateway plugin, perhaps you have been in trouble.
    Unfortunately,I encountered this problem some days ago.
    I used the openfire 3.4.5, and it contains the gateway plugins;  閱讀全文

    posted @ 2009-02-25 16:58 Fingki.li 閱讀(1787) | 評論 (0)編輯 收藏

         摘要: sudoer application Launcher
    On Ubuntu,run applications as sudo via Application Launcher  閱讀全文

    posted @ 2009-02-23 12:33 Fingki.li 閱讀(1318) | 評論 (0)編輯 收藏

    JSCalendar 日歷控件 使用樣例如下:

    <html>
    <head>
        <style type="text/css">@import url( /js/jscalendar/calendar-win2k-cold-1.css );</style>
        <script type="text/javascript" src="/js/jscalendar/calendar.js"></script>
        <script type="text/javascript" src="/js/jscalendar/i18n.jsp"></script>//不用i18n可以指定語言 如:<script type="text/javascript" src="/js/jscalendar/lang/calendar-en.js"></script>
        <script type="text/javascript" src="/js/jscalendar/calendar-setup.js"></script>
    </head>
    <body>
    <input type="text" size="10" name="fromDate" id="fromDate" maxlength="10" onchange="checkSpecific();" value=""/>
    <img src="images/icon_calendarpicker.gif" id="fromDateCal" />
    <br>
    <script type="text/javascript" >
        Calendar.setup(
        {
            inputField  : "fromDate",       // ID of the input field
            ifFormat    : "%m/%d/%Y",       // the date format
            button      : "fromDateCal",    // ID of the button
        });
    </script>
    </body>
    </html>
    上述示例代碼在jsp容器中運行完全正常。

    posted @ 2009-02-17 15:35 Fingki.li 閱讀(2722) | 評論 (10)編輯 收藏

    當一個類實現了序列化接口,有時會遇到 java.io.InvalidClassException 異常出現:
    java.io.InvalidClassException: com.test.Test; local class incompatible: stream classdesc serialVersionUID = 7981560250804078637, local class serialVersionUID = -8334405535174160822
    這是序列化兼容性所致;
    java通過一個名為UID(stream unique identifier)來控制,這個UID是隱式的,它通過類名,方法名等諸多因素經過計算而得,理論上是一一映射的關系,也就是唯一的。如果UID不一 樣的話,就無法實現反序列化了,并且將會得到InvalidClassException。
    當要人為的產生一個新的版本(實現并沒有改動),而拋棄以前的版本的話,可以通過顯式的聲名UID來實現:
    private static final long serialVersionUID=????;//(你可以編造一個UID,但不能有重復)

    對于上例我們可以在com.test.Test類中加入 :
    private static final long serialVersionUID=7981560250804078637l;
    這樣就解決了新老版本的兼容性問題。
    當然,對于序列化還有很多問題,慢慢研究吧。

    posted @ 2009-01-13 11:46 Fingki.li 閱讀(17590) | 評論 (3)編輯 收藏

    對volatile,看到了個很清楚的解釋,摘錄下來如下:

    volatile關鍵字有什么用?
    恐怕比較一下volatile和synchronized的不同是最容易解釋清楚的。volatile是變量修飾符,而synchronized則作用于一段代碼或方法;看如下三句get代碼:

    1. inti1;              intgeti1(){returni1;}
    2. volatile inti2;              intgeti2(){returni2;}
    3.          int i3; synchronizedintgeti3(){returni3;}

      geti1()得到存儲在當前線程中i1的數值。多個線程有多個i1變量拷貝,而且這些i1之間可以互不相同。換句話說,另一個線程可能已經改 變了它線程內的i1值,而這個值可以和當前線程中的i1值不相同。事實上,Java有個思想叫“主”內存區域,這里存放了變量目前的“準確值”。每個線程 可以有它自己的變量拷貝,而這個變量拷貝值可以和“主”內存區域里存放的不同。因此實際上存在一種可能:“主”內存區域里的i1值是1,線程1里的i1值 是2,線程2里的i1值是3——這在線程1和線程2都改變了它們各自的i1值,而且這個改變還沒來得及傳遞給“主”內存區域或其他線程時就會發生。
    而geti2()得到的是“主”內存區域的i2數值。用volatile修飾后的變量不允許有不同于“主”內存區域的變量拷貝。換句話說,一個變量經 volatile修飾后在所有線程中必須是同步的;任何線程中改變了它的值,所有其他線程立即獲取到了相同的值。理所當然的,volatile修飾的變量 存取時比一般變量消耗的資源要多一點,因為線程有它自己的變量拷貝更為高效。
    既然volatile關鍵字已經實現了線程間數據同步,又要synchronized干什么呢?呵呵,它們之間有兩點不同。首 先,synchronized獲得并釋放監視器——如果兩個線程使用了同一個對象鎖,監視器能強制保證代碼塊同時只被一個線程所執行——這是眾所周知的事 實。但是,synchronized也同步內存:事實上,synchronized在“主”內存區域同步整個線程的內存。因此,執行geti3()方法做 了如下幾步:
    1. 線程請求獲得監視this對象的對象鎖(假設未被鎖,否則線程等待直到鎖釋放)
    2. 線程內存的數據被消除,從“主”內存區域中讀入(Java虛擬機能優化此步。。。[后面的不知道怎么表達,汗])
    3. 代碼塊被執行
    4. 對于變量的任何改變現在可以安全地寫到“主”內存區域中(不過geti3()方法不會改變變量值)
    5. 線程釋放監視this對象的對象鎖
    因此volatile只是在線程內存和“主”內存間同步某個變量的值,而synchronized通過鎖定和解鎖某個監視器同步所有變量的值。顯然synchronized要比volatile消耗更多資源。

    附英文原文:
    What does volatile do?

    This is probably best explained by comparing the effects that volatile and synchronized have on a method. volatile is a field modifier, while synchronized modifies code blocks and methods. So we can specify three variations of a simple accessor using those two keywords:

    1. inti1;              intgeti1(){returni1;}
    2. volatile inti2;              intgeti2(){returni2;}
    3.          int i3; synchronizedintgeti3(){returni3;}

    geti1() accesses the value currently stored in i1 in the current thread. Threads can have local copies of variables, and the data does not have to be the same as the data held in other threads. In particular, another thread may have updated i1 in it’s thread, but the value in the current thread could be different from that updated value. In fact Java has the idea of a “main” memory, and this is the memory that holds the current “correct” value for variables. Threads can have their own copy of data for variables, and the thread copy can be different from the “main” memory. So in fact, it is possible for the “main” memory to have a value of 1 for i1, for thread1 to have a value of 2 for i1 and for thread2 to have a value of 3 for i1 if thread1 and thread2 have both updated i1 but those updated value has not yet been propagated to “main” memory or other threads.

    On the other hand, geti2() effectively accesses the value of i2 from “main” memory. A volatile variable is not allowed to have a local copy of a variable that is different from the value currently held in “main” memory. Effectively, a variable declared volatile must have it’s data synchronized across all threads, so that whenever you access or update the variable in any thread, all other threads immediately see the same value. Of course, it is likely that volatile variables have a higher access and update overhead than “plain” variables, since the reason threads can have their own copy of data is for better efficiency.

    Well if volatile already synchronizes data across threads, what is synchronized for? Well there are two differences. Firstly synchronized obtains and releases locks on monitors which can force only one thread at a time to execute a code block, if both threads use the same monitor (effectively the same object lock). That’s the fairly well known aspect to synchronized. But synchronized also synchronizes memory. In fact synchronized synchronizes the whole of thread memory with “main” memory. So executing geti3() does the following:

    1. The thread acquires the lock on the monitor for object this (assuming the monitor is unlocked, otherwise the thread waits until the monitor is unlocked).
    2. The thread memory flushes all its variables, i.e. it has all of its variables effectively read from “main” memory (JVMs can use dirty sets to optimize this so that only “dirty” variables are flushed, but conceptually this is the same. See section 17.9 of the Java language specification).
    3. The code block is executed (in this case setting the return value to the current value of i3, which may have just been reset from “main” memory).
    4. (Any changes to variables would normally now be written out to “main” memory, but for geti3() we have no changes.)
    5. The thread releases the lock on the monitor for object this.

    So where volatile only synchronizes the value of one variable between thread memory and “main” memory, synchronized synchronizes the value of all variables between thread memory and “main” memory, and locks and releases a monitor to boot. Clearly synchronized is likely to have more overhead than volatile.

    摘自:http://bianbian.org/technology/java/88.html

    posted @ 2009-01-06 15:24 Fingki.li 閱讀(402) | 評論 (0)編輯 收藏

    有synthetic標記的field和method是class內部使用的,正常的源代碼里不會出現synthetic field。小穎編譯工具用的就是jad.所有反編譯工具都不能保證完全正確地反編譯class。所以你不能要求太多。
    下面我給大家介紹一下synthetic

    下面的例子是最常見的synthetic field
    class parent
    {
    public void foo()
    {
    }
    class inner
    {
    inner()
    {
    foo();
    }
    }
    }
    非static的inner class里面都會有一個this$0的字段保存它的父對象。編譯后的inner class 就像下面這樣:
    class parent$inner
    {
    synthetic parent this$0;
    parent$inner(parent this$0)
    {
    this.this$0 = this$0;
    this$0.foo();
    }
    }
    所有父對象的非私有成員都通過 this$0來訪問。

    還有許多用到synthetic的地方。比如使用了assert 關鍵字的class會有一個
    synthetic static boolean $assertionsDisabled 字段
    使用了assert的地方
    assert condition;
    在class里被編譯成
    if(!$assertionsDisabled && !condition)
    {
    throw new AssertionError();
    }

    還有,在jvm里,所有class的私有成員都不允許在其他類里訪問,包括它的inner class。在java語言里inner class是可以訪問父類的私有成員的。在class里是用如下的方法實現的:
    class parent
    {
    private int value = 0;
    synthetic static int access$000(parent obj)
    {
    return value;
    }
    }
    在inner class里通過access$000來訪問value字段。

    摘自:
    http://www.cjsdn.net/post/print?bid=1&id=130784

    posted @ 2009-01-06 12:24 Fingki.li 閱讀(3465) | 評論 (0)編輯 收藏

    相關資料:
    IETF : http://www.potaroo.net/ietf/idref/draft-nourse-scep/
    Java SCEP : http://www.urut.ch/scep/
    OpenSCEP : http://openscep.othello.ch/

    posted @ 2009-01-04 14:25 Fingki.li 閱讀(335) | 評論 (0)編輯 收藏

    一朋友推薦給我的文章,感覺很不錯;摘抄過來,也給同行們提個醒!

    論壇里經常可以看到關于 35 歲程序員的生涯詢問, 他們之中有些人寫了十年代碼, 有些人則是因為對編程發生了興趣, 中途轉行, 以下四點是給那些 30 - 35 歲程序員的建議:

    * 照顧自己健康

    以前, 我認為 "錢" 是很重要的, 俗話說的好: "錢不是萬能, 但沒有錢萬萬不能", 所以過去我的焦點都是放在收入, 但后來我發現有比錢更重要的東西, 那是 "家", 在你沒有結婚前, 這個家的概念是指你和父母的和諧關系, 而在結婚后, 家的概念是指如何維系一個家庭, 包括和太太還有孩子的關系。

    在 IT 這個行業里, 很多人跟自己父母的想法是有差距的, 認為上一代保守, 食古不化, 講到很多東西沒法溝通, 另外, 我的很多朋友事業做很大, 但最后卻離婚了, 沒有孩子還好, 有孩子的要想更多, 只有家, 你才有奮斗的目標, 才有精神的支持, 否則就像電視里講的那一句, 失去了你, 得到江山又如何?

    但這個家的信念自從張國榮事件后, 又改變了我的看法, 那就是有比家更重要的東西, 那是你的 "健康", 這個健康包括生理和心理上的健康, 想想看你擁有了一個家, 但是因為沒有健康, 全家人都被拖下去了, 每天看著你痛苦的吊瓶子, 更嚴重的直接輕生, 這樣遺留給珍愛你的人只是更大的痛苦, 你會 C, C++, C#, Java... 又怎樣? 那時候你會認為這些通通都是屁, 做人做到能夠 "吃得下飯、睡得著覺、笑得出來" 就已經是莫大的幸福。

    35 歲會困惑的人多半是因為二十幾歲的時候就沒有做好準備, 過去的已經不可追, 現在要想的應該是 45 歲怎么辦? 有人說年輕比的是學問, 中年比的是財富, 老年比的是健康, 如果你現在不注意自己健康, 那么很快更大的困擾就會上門了, 人生每個階段都有扮演的角色, 要學會未雨綢繆, 否則不用到 50 歲, 可能 40 歲就會開始后悔了, 健康要從飲食和運動著手, 多涉獵這方面的常識, 比搞那些過幾年就要淘汰的技術有意義多了。

    * 學會投資理財

    很多人認為投資理財需要很多的錢, 這是不正確的, 會理財的人, 小錢可以積累到大, 不會理財的人, 大錢也會消耗到光, 投資理財首重的是風險管理, 沒有風險管理就像在刀口舔血一樣, 投資理財應該要趁早磨練, 不要等到 40 歲的時候才去冒險, 因為那時候你已經沒有本錢跌倒, 投資理財的方法有很多, 并不是只有房地產, 股票這些東西, 從節約, 儲蓄, 定存... 每一步都是學習, 關鍵是你要從投資的過程里去發現自己, 并且了解如何正確對待甚至對付自己, 這樣你才有機會早一日達到經濟自由, 不會提心吊膽這個那個。

    投資理財要量力而為, 不要做超過你能力所能負荷的事情, 我給程序員最好的建議是關注經濟, 不要浮躁, 錯把投機當投資, 這樣還不如定存來得可靠安全。

    * 經營你的人脈

    我覺得程序員除了普遍不善理財外, 另外人際溝通也多有問題, 很多人在離開公司的剎那, 整個人感覺也都被掏空了, 而且會有一種擔憂, 以前別人跟我說話那是因為我是某某公司的員工, 現在不是了, 可能就沒有什么人會再鳥我了, 這就是典型的人脈經營危機。

    人脈的經營不是看你有沒有朋友, 而是有沒有能幫助你同時又有實力的朋友。有些人朋友很多, 但真正遇到困難, 只能精神上支持一下, 除此外, 幫不上任何忙, 這代表人脈還是太單薄, 不要總問別人能給你什么? 也要問問你能給別人什么? 懂得去欣賞別人, 而不要像患了紅眼病一樣, 漠視別人背后的辛勞的付出, 只知道妒忌表面的風頭, 這樣, 只會將自己的路越走越窄。

    經營自己的人脈是有秘訣的, 首先你要了解自己存在的價值, 如果沒有存在的價值, 那么經營的人脈是空的, 這跟有存在價值卻不知道怎樣經營人脈, 基本上差不多, 經營人脈并不等于趨炎附勢, 而是指在得勢的時候, 就要想到落難的時刻, 待人寬厚真誠, 花無百日好, 人無千日紅, 多欣賞別人, 擇友深交, 別把時間浪費在小屁孩身上。

    * 培養廣泛興趣

    一個程序員如果除了 IT 以外, 一點其它的興趣也沒有, 那真的是很危險的事情, 像我現在年齡已經超過 35 歲了, 很快就要 40, 但我現在還是每天寫代碼, 做項目已經不是為了維生, 而是純粹興趣了, 我想我會一直寫下去, 同時開始加強自己經營管理或財務方面的知識。你說郭安定以后玩不了電腦怎么辦? 他就去寫書, 萬一雙手廢了怎么辦? 那就去配音, 萬一聲音也啞了怎么辦? 那就重回金融市場, 讓徒子徒孫幫忙著下單, 眼球看左就買, 看右就賣, 就這么一直玩下去...

    所以人生不是只有一條路, 你得為自己想好方方面面, 而廣泛的興趣可以幫助你跳脫現況, 看到更多。

    以上四點不僅是 35 歲的人要注意的, 很多甚至二十幾歲的人也要開始關注, 說真的, 很多程序員看上去每個體型都不錯, 但體格都馬馬虎虎, 很多人熬個兩天夜就不行了, 不知該說什么... 一起加油吧。

    posted @ 2008-12-26 14:59 Fingki.li 閱讀(301) | 評論 (1)編輯 收藏

    Tsung,壓力測試的好工具。
    安裝過程:
    1.獲取tsung 的源碼。http://tsung.erlang-projects.org/
    2.安裝依賴 erlang(從源碼編譯 erlang 寫的程序) gnuplot perl5(如果想看 report 中的圖形,就要裝這個)
    apt-get install erlang erlang-src gnuplot perl5 我用的是Ubuntu 8 OS.
    3.編譯安裝
    ./configure
    make
    sudo make install

    安裝完成之后的 tsung 運行腳本在 /usr/bin/tsung ,在系統 path 之中,可以直接運行。

    設置

    從 /usr/share/doc/tsung/examples 中挑一兩個例子拷貝到 ~/.tsung/tsung.xml 作為配置文件。我只需要 http 測試,所以:

    cp /usr/share/doc/tsung/examples/http_simple.xml ~/.tsung/tsung.xml

    tsung 采用了巧妙的 proxy 方式來“錄制”測試腳本。具體來說,就是建立一個本機的 http proxy 默認使用 8090 端口,在配好 firefox 使用 localhost 8090 作為代理之后(推薦 foxyproxy 插件),所有“流經”這個 proxy 的 http 動作都會被記錄下來,測試時可以“回放”這些步驟來產生請求。

    tsung rocorder
    tsung stop_recorder

    “錄制”完了,會得到一個 ~/.tsung/tsung_recorderXXXXXXXXXX.xml 文件,這就是測試時回回放的腳本。

    將這個腳本加到 tsung.xml 之中

    gedit ~/.tsung/tsung.xml

    就像這樣

    <!DOCTYPEtsungSYSTEM"/usr/share/tsung/tsung-1.0.dtd" [
     <!
    ENTITYmysession1SYSTEM"/home/yourname/.tsung/tsung_recorderXXXXXXXXXX.xml">
    ]>
    ...
    <sessions>
     
    &mysession1;
    </sessions>

    對配置稍作調整

    <monitoring>
        
    <monitorhost="localhost"type="erlang"></monitor>
     
    </monitoring>
     
    <!-- 需要配置到 localhost 無須密碼的 ssh 登錄(ssh via rsa_key),開啟了這個配置可以,獲得目標機器的 cpu 和 ram 消耗情況 -->
     
    <load>
      
    <arrivalphasephase="1"duration="1"unit="minute">
        
    <usersinterarrival="2"unit="second"></users>
      
    </arrivalphase>
     
    </load>
     
    <!-- 第1階段1分鐘(你可以自己多搞幾個階段),其中每2秒新建一個用戶,每個用戶都會完整執行 session 的測試腳本,最高并發約為 30 個,個人認為這個“逐漸加壓”的方法比 ab xxxx 的“突然加壓”要慢一些,但更科學一點 -->

    運行

    準備好了,加壓運行。

    tsung start

    運行完,在 ~/.tsung/log 目錄會生成一個以時間命名的目錄,進入這個目錄

    cd ~/.tsung/log/xxxxx
    /usr/lib/tsung/bin/tsung_stats.pl (有時可能是 /usr/local/lib/tsung/bin/tsung_stats.pl)

    生成 html 的壓力測試報告

    firefox report.html
    除了 http 以外 tsung 還可以壓很多東西,比如:jabber, postgreSQL 還可以寫插件來給任何你想要測試的東西加壓.

    posted @ 2008-12-01 10:43 Fingki.li 閱讀(1977) | 評論 (2)編輯 收藏

    通過/etc/init.d/iptables status命令查詢是否有打開80端口,如果沒有可通過兩種方式處理:
    1.修改vi /etc/sysconfig/iptables命令添加使防火墻開放80端口
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
    2.關閉防火墻
    /etc/init.d/iptables stop 
    #start 開啟 
    #restart 重啟

    posted @ 2008-11-25 17:44 Fingki.li 閱讀(669) | 評論 (0)編輯 收藏

    Backup to Script:
    首先切換到postgres用戶:
    liqingfeng@liqingfeng:~$ su postgres
    口令: 輸入密碼
    postgres@liqingfeng:/home/liqingfeng$
    然后輸入backup命令:
    pg_dump -U[username] -d -f[way of script file] [database name]
    例如:pg_dump -Upostgres -d -f/home/liqingfeng/test.sql testdb
    這樣數據庫testdb將以sql腳本形式backup到/home/liqingfeng/test.sql中。
    Restore from Script:
    還是首先要切換到postgres用戶下,輸入命令:
    psql -U[username] -d[database name] -f[way to an existing script file]
    例如:
    psql -Upostgres -dtestdb -f/home/liqingfeng/test.sql






    posted @ 2008-11-25 10:13 Fingki.li 閱讀(3719) | 評論 (0)編輯 收藏

    當進行大并發的壓力測試時,經常會出現如下Exception:Too many open files.
    查閱資料,google baidu.
    首先感謝demo的評論,使我對這個問題有了新的認識。
    經過再次查找,發現這個問題的出現原因是system對打開files數量的限制問題。
    用 ulimit -a 命令可以查看當前所有資源限制
    fingki@ubuntu:~$ ulimit -a
    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    scheduling priority             (-e) 0
    file size               (blocks, -f) unlimited
    pending signals                 (-i) 15863
    max locked memory       (kbytes, -l) 32
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 1024
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    real-time priority              (-r) 0
    stack size              (kbytes, -s) 8192
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 15863
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited
    fingki@ubuntu:~$
    可以看出,對open files的限制數是1024,我們可以通過修改這個值來增加可以打開的文件數。
    最簡單的修改方式就是用ulimit -n 命令,
    比如我打算將其改為2048,用 ulimit -n 2048.
    當你把open files的值增大到一定程度,你的Too many open files就不會再出現了。

    而對于tcp_fin_timeout,是合tcp連接相關的,當你有大量tcp連接時,或許有些性能改善;
    tcp_fin_timeout,默認情況下,win為4 min,linux為60 sec.
    可以把其相應設置短一些,以增加系統性能。

    in Windows

    1. Run regedit to start the Registry Editor
    2. Locate the following key: HKEY_LOCAL_MACHINE"System"CurrentControlSet"Services"tcpip"Parameters
    3. Add a new value named TcpTimedWaitDelay asa decimal and set the desired timeout in seconds (30-300)
    4. Reboot

    in Linux

    1. Update the configuration value by running (30 seconds used in the example)
      echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
    2. Restart the networking component, for example by running
      /etc/init.d/networking restart  or  service network restart
    在linux下,經常會有權限問題使設置不能成功,盡管你用了sudo。
    解決辦法就是先 su root,在root用戶下來執行操作,這樣就ok了。
    再有就是可能忘記root密碼了,那就 sudo passwd root,來設置一個新密碼。

    根據進一步的研究發現:服務器默認情況下對進程的處理也是有限制的,要想server處理更多用戶進程就需要調整相應參數。
    這里面有兩個文件要特別注意,
    一個是    /etc/security/limits.conf
    另一個    /etc/sysctl.conf

    當我們用ulimit -a命令可以查看 open files(默認為1024)和max user processes(默認也為1024),
    所以默認情況下這個server只允許同時打開1024個文件,處理1024個用戶進程,
    若要 臨時 改變這兩個參數值,可以使用 ulimit -n 10240 ,ulimit -u 10240,
    若要 長久 改變這兩個參數值,就要修改/ect/security/limits.conf,在文件中加上兩行:
    * - nofile 102400
    * - nproc 102400

    而對于大量使用tcp連接的應用來說,也需要對/etc/sysctl.conf中的參數進行相應優化:
    net/ipv4/ip_always_defrag = 1
    net.ipv4.ip_local_port_range = 1024    65000
    net.ipv4.tcp_max_syn_backlog = 102400
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    上面是我根據我的需求的一些參數調整,你可以根據你的需求來調整相應參數值。
    然后執行 sysctl -p命令可立即生效。sysctl -a可查看參數值。

    參考 :http://www.javaeye.com/topic/65175

    posted @ 2008-10-22 19:13 Fingki.li 閱讀(5836) | 評論 (7)編輯 收藏


    1、Scp 很好用的遠程文件安全傳輸命令
       命令格式:scp [-r] 源文件路徑 目標文件路徑
                 源文件路徑:username@hostname:文件路徑 For example:fingki2@192.168.0.2:test/a.txt (如果是本地可直接寫相應路徑)
                 目標文件路徑:username@hostname:文件路徑 For example:fingki3@192.168.0.3:test/a.txt (如果是本地可直接寫相應路徑)
                 -r:如果是傳目錄 就要加上這個參數
                 要求:遠程機器必須打開22端口
    2、ssh 很好的linux服務器登錄命令 secure shell
        簡易命令格式:ssh username@hostname 然后輸入密碼即可進入系統。
        有時你會遇到如下問題:
    The authenticity of host '172.0.x.xxx (172.0.x.xxx)' can't be established.
    RSA key fingerprint is 1f:c9:78:0a:ce:e2:e5:10:2c:b5:f4:33:19:fa:be:ec.
    Are you sure you want to continue connecting (yes/no)?

        如果你是第一次在這臺機器上使用ssh命令,輸入yes回車后,就可以輸入密碼登錄了。
        如果輸入yes后仍有問題,你可以到 ~/.ssh/下找到文件known_hosts,清除文件里面的內容,重試即可。

    3、vi列模式編輯:

      用命令打開文本:vim test.txt
      按 Esc 取消當前模式,
      按Ctrl + v 進入這種模式,
      將光標移到指定列位置,
      然后按方向鍵選定指定列,進行編輯(刪除等)

    4. 批量刪除
    如:刪除所有名字包含test的文件
    find ./ -name *test* | xargs rm -f

    posted @ 2008-09-18 17:31 Fingki.li 閱讀(1827) | 評論 (0)編輯 收藏

    前兩天一個朋友問我,為什么要寫blog?
    是呀,為什么要寫blog呢?為什么大家都在寫blog呢?
    我來說說我的想法吧。
    最開始的時候,我純粹是跟風,大家都在寫blog,自己也就想玩玩,隨便申請了一個,然后寫幾篇不相干的東西,然后忘記了;
    后來,工作中經常遇到一些技術問題,想把它記錄下來,想到了blog這種方式,很不錯,很方便,所以又開始找個相關的blog,開始寫;
    再后來,發現有好多的問題都是在別人的blog中找到的答案,很羨慕,很感激,于是也開始把自己的一些經驗拿出來和大家分享;
    慢慢的,當發現自己的文章也曾幫助過別人時,感覺很高興;于是,工作不是很忙時,就會寫一些東西和大家分享;
    我是blog的受益者,我也是blog的貢獻者!正是blog,使我們可以互補技術上的缺點,分享工作中的經驗,讓我們更快的進步!
    于是有感于blog: 是分享,是共同進步!

    posted @ 2008-09-07 23:05 Fingki.li 閱讀(1422) | 評論 (2)編輯 收藏

    About Exception:
    An invalid XML character (Unicode: 0x0) was found in the element content of the document.

    問題描述:
    當我們用
    byte[] info ;
    DocumentHelper.parseText(new String(info));
    將一個字節數組轉成字符串再轉成Document(XML格式)時,常常會遇到上述異常。
    特別是當字符串有加、解密,或編碼等情況時。

    原因:
    從異常來看,很明顯是因為字節數組中存在 Unicode: 0x0,而這個字節在Xml中被認為是非法字符。

    對于一些經過編碼或加、解密的字符串中,很容易會出現這個 0x0,
    特別是在加、解密中,經常會涉及到字符填充,而填充物通常是 0x0,
    需對于0x00-0x20 都會引起一定的問題,又因為這些字符不可見,因此用通常的編輯器進行編輯的時候找不到問題所在。
    而在轉成String后也覺察不到任何異常。
    所以在轉成XML格式時要對字符串進行檢測:
    *  Verify that no character has a hex value greater than 0xFFFD, or less than 0x20.
    * Check that the character is not equal to the tab ("t), the newline ("n), the carriage return ("r), or is an invalid XML character below the range of 0x20. If any of these characters occur, an exception is thrown.

    pubic void CheckUnicodeString(String value)
        {
        for (int i=0; i < value.Length; ++i) {
            if (value[i] > 0xFFFD)
            {
                throw new Exception("Invalid Unicode");//或者直接替換掉0x0 value[i]='"n';
            }
            else if (value[i] < 0x20 && value[i] != '"t' & value[i] != '"n' & value[i] != '"r')
            {
                throw new Exception("Invalid Xml Characters");//或者直接替換掉0x0 value[i]='"n';
            }
        }

    相關資源:
    http://msdn.microsoft.com/en-us/library/k1y7hyy9.aspx
    http://gceclub.sun.com.cn/developer/technicalArticles/Intl/Supplementary/index_zh_CN.html

    posted @ 2008-09-04 15:18 Fingki.li 閱讀(12202) | 評論 (0)編輯 收藏

    keystore是個密鑰存儲庫,我們經常用他來存儲非對稱密鑰,但有時我們也需要它來存儲一些對稱密鑰。
     public void createKeyStore() {



    try {



    KeyGenerator keyGen = KeyGenerator.getInstance("DES");







    SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");







    keyGen.init(56, random);







    SecretKey secretKey = keyGen.generateKey();







    KeyStore ks = KeyStore.getInstance("jceks");







    char password[] = {'c', 'h', 'a', 'n', 'g', 'e','i','t' };







    // Create an empty keystore



    ks.load(null, password);







    KeyStore.SecretKeyEntry skEntry = new KeyStore.SecretKeyEntry(secretKey);







    ks.setEntry("myKey", skEntry, new KeyStore.PasswordProtection(password));



     



    // store away the keystore



    java.io.FileOutputStream fos =



    new java.io.FileOutputStream("mystore");



    ks.store(fos, password);



    fos.close();







    } catch (NoSuchAlgorithmException nsaex) {



    nsaex.printStackTrace(System.err);



    } catch (NoSuchProviderException nspex) {



    nspex.printStackTrace(System.err);



    } catch (KeyStoreException ksex) {



    ksex.printStackTrace(System.err);



    } catch (CertificateException cex) {



    cex.printStackTrace(System.err);



    } catch (IOException ioex) {



    ioex.printStackTrace(System.err);



    }



    }







    上面的例子是存一個DES密鑰。



    需要注意的就是這個keystore的類型,必須是jceks,



    之前我就是使用默認的jks,導致報錯。





    posted @ 2008-09-02 10:42 Fingki.li 閱讀(797) | 評論 (0)編輯 收藏

    以往有聽說過“Microsoft Windows、FreeBSD不安全隨機數生成器信息泄露漏洞”之類的文章,大都是因為隨機函數存在漏洞生成不安全的隨機,導致可預測的加密密鑰。
    About Random
    隨機數是密碼學的一個重要部分,它通常作為初始化向量用于密鑰生成中。有許多測試根據數字計算給定數字序列的隨機性,它們考慮給定數定在序列中出現的周期,做更細致的測量,包括相同數字或其他重復形式出現的周期。
    但統計隨機性的要求與加密隨機性不同。
    一個數字序列在統計上是隨機的,但如果攻擊者可以推算出數字的序列(通過了解使用的算法和隨機種子值),那么加密是變得不安全了。
    About Pseudo Random 偽隨機數
    對于一串隨機的數字,最常見的描述就是沒有從前一個數字推算出后一個數字的數學方法。最好的隨機數是從物理過程中獲得的,因為實際物理程才是真正隨機的。事實上,一些隨機數生成器就是使用硬件設置來實現,如音頻輸入或二極管。
        從設計上來說,計算機是很確定的,因此不是生成隨機數的就好選擇。它們通常求助于一個生成統計上隨機的數字串的算法。為了確定在該算法中使用的輸入值,它們要求用戶提供一個種子值,這通常來自于系統時鐘、網卡MAC地址以及其他不同的系統參數。
        這些隨機數字很適合于計算機游戲中的示例數據或建模物理過程。不過,它們不適合于加密。它的弱點包括以下幾點:
    ●     偽隨機數是周期性的。最終將重復數字序列。
    ●     如果使用相同的種子值,將接收到序列完全一樣的“隨機”數。因此,隨機序列與種子值一樣多。
    ●     隨機數可使用逆向工程。運用算法知識,強力攻擊會立即猜測到種子值。如果種子值和時間之間有相關性,攻擊者將會推算出所有后面的“隨機”數。
     
    偽隨機數是出現許多臭名昭著的攻擊的主要原因。破解56 位DES從1997年1月的96 天到1999 年1月的22 小時15 分鐘,由于DES使用的偽隨機數生成算法導致了這個結果,有一種攻擊就是針對賭博應用程序,這種應用程序使用一個隨機數種子值來對紙牌進行排序,而洗牌的可能性是有限的。在看完開始的幾張牌后,用戶可以將當前發的牌與某種可能的洗牌序列匹配,來確定剩下牌的順序。

    另一個著名的例子就是Netscape Navigator 早期版本中的取決于時間的隨機數字生成器,它泄露了動態生成的用于加密運用SSL的會話中數據的密鑰。
    About Random encrypted 加密的隨機數
    隨機數生成是許多加密操作不可分割的組成部分。例如,加密密鑰需要盡可能地隨機,以便使它們很難被復制。加密隨機數生成器必須生成在計算上無法進行推算(低于 p < .05 的概率)的輸出;即,任何推算下一個輸出位的方法不得具有比隨機猜測更高的成功幾率。
    為了說明一連串的隨機數字是加密安全的,必須使得用戶不可能通過計算重新生成同樣序列的隨機數。遺憾的是,運用偽隨機數字,可以很容易地重新生成同樣的序列。用戶需要知道的知識就是偽隨機數生成器算法和種子值。
        通過加密保護數據基于加密算法和更為隨機的種子值就是本文要提出的方法,一個帶加密功能的隨機數產生器,可以應用于需要加密隨機數的場合.為了構成種子值,需要用不同的值組合成一個系統范圍內的種子值。這些值包括調用的應用程序可以提供的位,例如鼠標或鍵盤動作之間的用戶反應時間、象進程ID和線程ID這樣的系統和用戶數據、系統時鐘、系統計數器、自由磁盤集群屬和散列的用戶環境塊。接著使用SHA-1散列這個值,輸出用于創建一個隨機數據流(用于更新系統種子值)。這可以起作用,是因為散列值生成了看似隨機的數據,只改變源文檔(種子值)中的一個位,任何兩個輸出的散列共享它們50%的位,盡管兩個輸出只有一位之差。當然,從理論上講,有些過程還是周期性的。例如磁盤搜索時間看似隨機的,實際取決于易于確定的因素,可以被推測出來。為了獲取更好的隨機數生成,可以采用硬件生成器,例如Intel的隨機數生成器。
       
    說明:
        創建加密安全的隨機數需要更多的時間,這意味著如果需要快速地在一個短時間內生成大量隨機數(例如百萬級的數據)是不適合的。在一個簡單測試中,用本文提到的RNG生成一百萬個隨機數的時間花費差不多是偽隨機數生成器所用時間的八倍之多。

    相關資源:http://www.xfocus.net/articles/200209/451.html

    posted @ 2008-08-28 23:46 Fingki.li 閱讀(875) | 評論 (0)編輯 收藏

    到目前為止,中國已奪26金啦,中國加油!

    posted @ 2008-08-15 23:11 Fingki.li 閱讀(235) | 評論 (1)編輯 收藏

    在ubuntu-server下安裝phppgadmin遇到如下問題,記錄如下:
    首先安裝postgresql很簡單,sudo apt-get instatll postgresql
    安裝完成后,可能需要更改默認用戶postgre的密碼,這個可以查看我之前的文章。
    然后,安裝client,我打算使用phppgadmin,
    命令行下:sudo apt-get install phppgadmin
    完成后,默認同時安裝了它所依賴的apache2。
    在瀏覽器中輸入:http://localhost,顯示 It works.這說明apache2在正常工作。
    但輸入http://localhost/phppgadmin,顯示無法找到該頁,
    進入 /var/www中查看,只有index.html,所以肯定找不到phpgpadmin,
    所以需要做link,
    執行:sudo find / -name phppgadmin,查找出phppgadmin的位置,
    然后做連接: sudo ln -s /usr/share/phppgadmin phppgadmin
    之后再試瀏覽器中訪問http://localhost/phppgadmin,這次可以找到文件了,但提示是否下載php文件。
    一同事說遇到過這樣問題,說是少個libapache2-mod-php5,查看一下已經安裝了。
    于是google一番,得知:如果當您瀏覽PHP網頁的時候,瀏覽器提示您是否下載PHP文件而不是去顯示它的時候,就可能是您沒有安裝libapache2-mod-php5。當您 安裝PHP5的時候,它會被默認的安裝進去的,如果您不小心的將它遺忘了。您就需要去將它打開,sudo a2enmod php5,然后使用sudo /etc/init.d/apache2 restart來重新啟動APACHE。
    果然重啟apache2后,可以正常訪問了。






    posted @ 2008-07-31 17:43 Fingki.li 閱讀(1378) | 評論 (1)編輯 收藏

    要用java檢測網絡資源是否可用,我們可以采用以下兩種方法:
    一種方法是調用ping命令,
    如:
          Process   process=   Runtime.getRuntime().exec("ping   192.168.0.5");  
          InputStreamReader   return   =   new   InputStreamReader(process.getInputStream());  
          LineNumberReader   returnData   =   new   LineNumberReader   (return);    
       
          String   line="";  
          while((line=returnData.readLine())!=null){  
              System.out.println(line);  
          }
    通用對返回數據進行分析,來探測網絡資源的可用性;
    這種方法有一個缺點:就是許多網絡資源是不允許被ping的,從而針對這類資源無法探測。
    另一種方法是使用URL,
    如:
                    URL url = new URL("http://localhost");  
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();  
                    int state = connection.getResponseCode();  
                    String responseContent = connection.getResponseMessage();
    通過分析ResponseCode來探測網絡資源的可用性。
    另外,當指定的網絡資源走SSL時,即用https協議時,需要加入可信證書到trust.keystore.
    通常情況下,我的用的是jre的keystore:cacerts,如jdk6下的路徑為:jdk1.6.0_05/jre/lib/security/cacerts
    我們需要把指定資源的數字證書導入到信任庫 cacerts.
    可以使用keytool工具:keytool -import -alias localhost -file localhost.cer -keystore cacerts
    如果我們不想使用jre的keystore,我們可以建立自己的keystore,
            System.setProperty("javax.net.ssl.trustStore", "/home/liqingfeng/workspace/Test/mystore/localhost.keystore");
            System.setProperty("javax.net.ssl.trustStorePassword","changeit");
    用keytool命令把localhost的證書導入到指定的localhost.keystore中。這樣我們就可以用URL來探測SSL網絡資源的可用性了。

    這里必須注意的是指定網絡資源的證書的CN,必須與資源訪問地址一致,否則會報錯。
    以下是常見異常:
    當keystore中沒有指定資源的證書時:
    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    當指定資源證書的CN與資源訪問地址不匹配時:
    javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching localhost found





    posted @ 2008-07-28 15:16 Fingki.li 閱讀(3200) | 評論 (4)編輯 收藏

    Good Address:

    Command Line Tools for win32  
    http://www.vkill.net/tools.html

    腳本中心腳本庫網址:
    http://www.microsoft.com/china/technet/community/scriptcenter/scripts/default.mspx

    有關用戶和組的腳本(找得我好辛苦呀)
    http://www.microsoft.com/china/technet/community/scriptcenter/user/default.mspx

    最近發現一個不錯的jdk6 source網站,收藏一下:
    http://www.java2s.com/Open-Source/Java-Document/6.0-JDK-Modules-sun/security/sun/security/krb5/internal/ktab/KeyTab.java.htm

    http://developer.classpath.org/doc/

    http://fuseyism.com/classpath/doc/

    http://kickjava.com/src/

    http://www.docjar.com/

    VbScript語言參考
    http://book.chinaz.com/VBScript/vbsdocs/vbstoc.htm

    SUN網站
    http://www.java.sun.com
    http://java.sun.com/javase/technologies/security/


    posted @ 2008-07-21 11:50 Fingki.li 閱讀(218) | 評論 (0)編輯 收藏

    在我們用程序進行HTTP連接時,都要監測返回的httpstatus,來確定響應狀態。
    一般的情況下返回都是401,500等。
    但有時候會返回 -2146697211,這種情況一般是無法訪問指定資源。
    請檢查網絡是否異常,是否可以ping通指定資源。
    我曾見到的問題是在DNS中沒有綁定指定的域名和IP,
    例如:我要訪問的資源為:http://liqingfeng:8080 IP為192.168.0.5
    當我沒有在DNS或host中綁定它們時,我進行http連接會返回 status -2146697211
    當我綁定域名和IP后,status 200.
    另外,當返回-2146697191時,一般是證書安全問題。



    posted @ 2008-07-18 09:42 Fingki.li 閱讀(1552) | 評論 (2)編輯 收藏

    最近發現一個不錯的jdk6 source網站,收藏一下:
    http://www.java2s.com/Open-Source/Java-Document/6.0-JDK-Modules-sun/security/sun/security/krb5/internal/ktab/KeyTab.java.htm

    posted @ 2008-07-14 21:32 Fingki.li 閱讀(303) | 評論 (0)編輯 收藏

    由于項目的要求,親密接觸了windows操作.
    windows就是牛,由于其用戶數的龐大,好多應用必須圍著它轉,順應它的規則.
    相應的對其操作的一些腳本,也成了很有用的東西.
    記錄以備后查:
    腳本中心腳本庫網址:
    http://www.microsoft.com/china/technet/community/scriptcenter/scripts/default.mspx
    有關用戶和組的腳本(找得我好辛苦呀)
    http://www.microsoft.com/china/technet/community/scriptcenter/user/default.mspx

    posted @ 2008-07-09 23:34 Fingki.li 閱讀(248) | 評論 (0)編輯 收藏

    最近和capicom親密接觸了一下,感覺到它的強大,記錄以備后查.

    capicom是一個對windows來講非常重要的CryptoAPI.
    通過capicom你可以在你的應用中集成Public Key Infrastructure (PKI)功能:獲取證書庫,利用服務器證書簽名,加密數據.
    通過vbscript你可以輕松的調用它,當然,前提是你已經安裝了capicom.dll.
    注冊capicom.dll,打開cmd,轉到capicom.dll目錄下,執行:regsvr32 capicom.dll.(當然你也可以自己做個.msi來安裝)
    之后你就可以用各種腳本調用它的強大功能了
    以vbscript為例:
    拿到當前用戶的數字證書
    Const CAPICOM_MY_STORE = "My"
    Const CAPICOM_CURRENT_USER_STORE  = 2
    Const CAPICOM_STORE_OPEN_READ_ONLY = 0
    Dim oCert, oStore
    Set oStore = CreateObject ("CAPICOM.Store")
    if Err.Number <> 0 Then
       wscript.echo "CAPICOM NOT detected"
       Wscript.Quit(1)
    End if
    oStore.Open CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_READ_ONLY
    For Each oCert in oStore.Certificates
       WScript.Echo "  Subject Name: " & oCert.SubjectName
            WScript.Echo "  Issuer Name: " & oCert.IssuerName
            WScript.Echo "  SHA-1 Thumbprint: " & oCert.Thumbprint
            WScript.Echo "  Serial Number: " & oCert.SerialNumber
            WScript.Echo "  Version: " & oCert.Version
            WScript.Echo "  Valid From: " & oCert.ValidFromDate
            WScript.Echo "  Valid To: " & oCert.ValidToDate
    Next
    上面這段代碼就是得到了當前用戶的所有數字證書.
    當然你也可以得當前機器上的,AD上的等.
    store = CreateObject ("CAPICOM.Store")將返回一個證書庫.
    可利用這個store的open()方法得到相應證書庫及其中的證書.
    .open ()語法為:
    .open(StoreLocationStoreName , OpenMode)
    StoreLocation :

        CAPICOM_ACTIVE_DIRECTORY_USER_STORE 3 得到AD上已經發布的證書
        CAPICOM_CURRENT_USER_STORE 2 得到當前用戶的證書
        CAPICOM_LOCAL_MACHINE_STORE 1 得到本地機器上的證書
        CAPICOM_MEMORY_STORE 0 得到內存中的證書
    StoreName :
        CAPICOM_MY_STORE "MY" 得到當前用戶證書與CAPICOM_CURRENT_USER_STORE配合使用
        "CN=your user name on domain" 得到指定用戶的證書,一般與CAPICOM_ACTIVE_DIRECTORY_USER_STORE配合使用.
    OpenMode:    
        CAPICOM_STORE_OPEN_READ_ONLY 0 只讀方法

    經常易出錯的地方是:以上這些常量在vbscript中并沒被預定義,使用前要自己定義一下.其值就是后面相應的數字.
    之前我就是以為這此常量是VBS預定義了,所以直接用,導致操作不成功,浪費了大量時間去找原因.
    當然,你也可以直接用相應數字代替這此常量.

    了解更多請參考:
    http://msdn.microsoft.com/en-us/library/aa388130.aspx
    http://207.46.196.114/windowsserver/en/library/8f918fdc-9841-48f9-a46d-28232742239a1033.mspx?mfr=true

    posted @ 2008-07-09 23:20 Fingki.li 閱讀(3505) | 評論 (7)編輯 收藏

    最近項目中要寫vb腳本作些系統操作,收集vb中常用關鍵字對照以備后查:        
            vbCr Chr(13) 回車符。
    vbCrLf Chr(13) & Chr(10) 回車符與換行符。
    vbFormFeed Chr(12) 換頁符;在 Microsoft Windows 中不適用。
    vbLf Chr(10) 換行符。
    vbNewLine Chr(13) & Chr(10) 或 Chr(10) 平臺指定的新行字符;適用于任何平臺。
    vbNullChar Chr(0) 值為 0 的字符。
    vbNullString 值為 0 的字符串 與零長度字符串 ("") 不同;用于調用外部過程。
    vbTab Chr(9) 水平附簽。
    vbVerticalTab Chr(11) 垂直附簽;在 Microsoft Windows


    vbEmpty 0 未初始化(默認)
    vbNull 1 不包含任何有效數據
    vbInteger 2 整型子類型
    vbLong 3 長整型子類型
    vbSingle 4 單精度子類型
    vbDouble 5 雙精度子類型
    vbCurrency 6 貨幣子類型
    vbDate 7 日期子類型
    vbString 8 字符串子類型
    vbObject 9 對象
    vbError 10 錯誤子類型
    vbBoolean 11 Boolean 子類型
    vbVariant 12 Variant (僅用于變量數組)
    vbDataObject 13 數據訪問對象
    vbDecimal 14 十進制子類型
    vbByte 17 字節子類型
    vbArray 8192 數組

    常數 值 描述
    vbBlack &h00 黑色
    vbRed &hFF 紅色
    vbGreen &hFF00 綠色
    vbYellow &hFFFF 黃色
    vbBlue &hFF0000 藍色
    vbMagenta &hFF00FF 紫色
    vbCyan &hFFFF00 青色
    vbWhite &hFFFFFF 白色

    vbOKOnly 0 只顯示確定按鈕。
    vbOKCancel 1 顯示確定和取消按鈕。
    vbAbortRetryIgnore 2 顯示終止、重試和忽略按鈕。
    vbYesNoCancel 3 顯示是、否和取消按鈕。
    vbYesNo 4 顯示是和否按鈕。
    vbRetryCancel 5 顯示重試和取消按鈕。
    vbCritical 16 顯示臨界消息圖標。
    vbQuestion 32 顯示警告詢問圖標。
    vbExclamation 48 顯示警告消息圖標。
    vbInformation 64 顯示提示消息圖標。
    vbDefaultButton1 0 第一個按鈕是默認按鈕。
    vbDefaultButton2 256 第二個按鈕是默認按鈕。
    vbDefaultButton3 512 第三個按鈕是默認按鈕。
    vbDefaultButton4 768 第四個按鈕是默認按鈕。
    vbApplicationModal 0 應用程序模式。用戶必須響應消息框,才能繼續在當前應用程序中工作。
    vbSystemModal 4096 系統模式。 在 Win16 系統中, 所有應用程序都將中止直到用戶響應消息框。 在 Win32 系統中, 此常數提供一個應用

    程序模式信息框并總是保留在您可能正在運行的所有其它程序的頂部。

    常數 值 描述
    vbOK 1 確定按鈕被單擊。
    vbCancel 2 取消按鈕被單擊。
    vbAbort 3 終止按鈕被單擊。
    vbRetry 4 重試按鈕被單擊。
    vbIgnore 5 忽略按鈕被單擊。
    vbYes 6 是按鈕被單擊。
    vbNo 7 否按鈕被單擊。


    vbCr Chr(13) 回車符。
    vbCrLf Chr(13) & Chr(10) 回車符與換行符。
    vbFormFeed Chr(12) 換頁符;在 Microsoft Windows 中不適用。
    vbLf Chr(10) 換行符。
    vbNewLine Chr(13) & Chr(10) 或 Chr(10) 平臺指定的新行字符;適用于任何平臺。
    vbNullChar Chr(0) 值為 0 的字符。
    vbNullString 值為 0 的字符串 與零長度字符串 ("") 不同;用于調用外部過程。
    vbTab Chr(9) 水平附簽。
    vbVerticalTab Chr(11) 垂直附簽;在 Microsoft Windows

    vbEmpty 0 未初始化(默認)
    vbNull 1 不包含任何有效數據
    vbInteger 2 整型子類型
    vbLong 3 長整型子類型
    vbSingle 4 單精度子類型
    vbDouble 5 雙精度子類型
    vbCurrency 6 貨幣子類型
    vbDate 7 日期子類型
    vbString 8 字符串子類型
    vbObject 9 對象
    vbError 10 錯誤子類型
    vbBoolean 11 Boolean 子類型
    vbVariant 12 Variant (僅用于變量數組)
    vbDataObject 13 數據訪問對象
    vbDecimal 14 十進制子類型
    vbByte 17 字節子類型
    vbArray 8192 數組

    posted @ 2008-07-08 21:38 Fingki.li 閱讀(1306) | 評論 (0)編輯 收藏

    工作中的需要,將一個軟件應用的數據庫由hsql轉為postgresql.
    從Hsql中轉數據到postgresql時,我采用的是從 dbname.script中獲取數據的腳本,寫成新的dbname.sql,然后在postgresql中執行的方法。
    經過一番努力,終于如愿以常成功導入了數據。
    大概瀏覽一下數據,沒有什么問題,就放心的讓同事去測試了。
    不到一會兒的工夫,同事就找過來,說軟件應用中的原用戶無法登錄,報錯為用戶的privatekey無法解開(此應用采用數字證書認證,并且加密了privatekey存于數據庫)。
    我很是奇怪。
    讓同事新創建用戶,正常 ,也可以正常登錄。
    于是斷定為數據有問題。
    打開數據庫查看用戶信息表,發現privatekeyinfo字段中的數據中有好多 u000a,感覺不對,再查看一下新創建的用戶,這個字段中沒有。
    找來dbname.sql查看,果真里面有好多\u000a,實際上這一位置應為回車.替換所有的\u000a為回車,重新導入數據。
    一切OK了。
    個人感覺原因是:hsql的sql腳本不支持回車符,所以用\u000a代替;而在postgresql中,數據庫不認\u000a,導致數據被修改。
    從而privatekey無法正常解開。
    希望朋友們不要再走進這個誤區。

    posted @ 2008-07-04 15:09 Fingki.li 閱讀(326) | 評論 (0)編輯 收藏

    1 安裝:
    軟件其實很簡單,用新立得軟件包管理器搜索psql便能查到postgresql-client-8.2(同時可以搜到8.1版本,哪一個都可以),選中-應用即可。或者在終端下輸入
    xiaop@localhost$ sudo apt-get install postgresql-8.2
    在Ubuntu系統中,服務器啟動腳本放在 /etc/init.d目錄中,您可以用下面的方法來啟動,對于Fedora和Gentoo 也是類似的;
    2
    啟動PostgreSQL 數據庫服務器
    xiaop@localhost~# /etc/init.d/postgresql-8.2 start 注:啟動;
    xiaop@localhost~# /etc/init.d/postgresql-8.2 restart 注:重啟;
    xiaop@localhost~# /etc/init.d/postgresql-8.2 stop 注:停止;
    xiaop@localhost~# /etc/init.d/postgresql-8.2 status 注:查看狀態;

    3.創建用戶


    添加用戶命令格式。

    createuser 是 SQL 命令 CREATE USER的封裝。
    命令:createuser [-a] [-A] [-d] [-D] [-e] [-P] [-h 主機名] [-p port] 用戶名


    參數說明:

    [-a]:允許創建其他用戶,相當于創建一個超級用戶;
    [-A]:不允許此用戶創建其他用戶;
    [-d]:允許此用戶創建數據庫;
    [-D]:不允許此用戶創建數據庫;
    [-e]:將執行過程顯示到Shell上;
    [-P]:創建用戶時,同時設置密碼;
    [-h 主機名]:為某個主機上的Postgres創建用戶;
    [-p port]:與-h參數一同使用,指定主機的端口。


    3.1添加用戶;


    3.1.1不帶參數的創建用戶;

    xiaop@localhost~$ createuser testuser
    Shall the new user be allowed to create databases? (y/n) n --------是否可以創建數據庫:否
    Shall the new user be allowed to create more new users? (y/n) n ---------是否可以創建新用戶:否
    CREATE USER

    注:不帶參數創建用戶時,Postgres會詢問此用戶的權限,上面的例子創建了一個普通用戶;


    3.1.2 為指定的主機和端口上創建用戶 ;

    xiaop@localhost~$ createuser -h 172.28.18.51 -p 5000 -D -A -e testuser
    CREATE USER joe NOCREATEDB NOCREATEUSER;
    CREATE USER

    注:這個命令為主機172.28.18.51的5000端口創建用戶testuser, 此用戶不可以創建數據庫和其他用戶。


    3.1.3創建超級用戶;

    test@localhost~$ createuser -P -d -a -e testuser
    Enter password for new user: testuser
    Enter it again: testuser
    CREATE USER joe PASSWORD 'testuser' CREATEDB CREATEUSER;
    CREATE USER

    注:這個命令在本地創建一個超級用戶(-a),可以創建數據庫(-d), 同時要求設置密碼。


    3.2 刪除用戶:

    命令:dropuser [-i] [-h] [-p] [-e] 用戶名

    參數說明:
    [ -i]:刪除用戶前,要求確認;
    [-h 主機名]:刪除某個主機上的Postgres用戶;
    [-p port]:與-h參數一同使用,指定主機的端口;
    [-e]:將執行過程顯示到Shell上。


    3.2.1 刪除本地的Postgres用戶;

    test@localhost~$ dropuser testuser
    DROP USER


    3.2.2 刪除遠程Postgres服務器上的用戶;

    test@localhost~$ dropuser -p 5000 -h 172.28.18.51 -i -e testuser
    User "testuser" and any owned databases will be permanently deleted.
    Are you sure? (y/n) y
    DROP USER "testuser"
    DROP USER

    注:此命令刪除主機172.28.18.51(-h)的5000端口(-p)的用戶testuser,并且需要確認(-i);


    4. 創建和刪除數據庫;


    4.1創建數據庫

    看看您能否訪問數據庫服務器的第一個例子就是試著創建一個數據庫;
    要創建一個新的數據庫,在我們這個例子里叫 mydb,您可以使用下面的命令:

    test@localhost~$ createdb mydb

    它應該生成下面這樣的響應:

    CREATE DATABASE

    如果這樣,那么這一步就成功了,如果您看到類似下面這樣的信息

    createdb: command not found

    那么就是PostgreSQL沒有安裝好,要么是就根本沒裝上;
    您還可以用其它名字創建數據庫。 PostgreSQL 允許您在一個節點上創建任意數量的數據庫。 數據庫名必須是以字母開頭并且小于 63 個字符長。 一個方便的做法是創建和您當前用戶名同名的數據庫。 許多工具假設該數據庫名為缺省數據庫名,所以這樣可以節省您的敲鍵。要創建這樣的數據庫,只需要鍵入 :

    test@localhost~$ createdb


    4.2 刪除數據庫

    如果您再也不想使用您的數據庫了,那么您可以刪除它。 比如,如果您是數據庫 mydb 的所有人(創建人), 那么您就可以用下面的命令刪除它:
    test@localhost~$ dropdb mydb

    注:(對于這條命令而言,數據庫名不是缺省的用戶名。這樣您就必須聲明它。) 這個動作物理上將所有與該數據庫相關的文件都刪除并且不可取消, 因此做這件事之前一定要想清楚;


    5.訪問數據庫

    一旦您創建了數據庫,您就可以訪問它,您可以運行PostgreSQL交互的終端程序,叫psql,它允許您交互地輸入,編輯,和執行 SQL 命令。(圖形化登錄請參見6. Postgresql圖形化管理工具pgAdmin3)


    5.1 激活數據庫

    您需要啟動psql,試驗剛才的例子。您可以用下面的命令為 mydb 數據庫激活它:

    test@localhost~$ psql mydb

    如果您省略了數據庫名字,那么它缺省就是您的用戶賬號名字。

    Welcome to psql 8.2.4, the PostgreSQL interactive terminal.
    Type: \copyright for distribution terms
           \h for help with SQL commands
           \? for help with psql commands
           \g or terminate with semicolon to execute query
           \q to quit
    mydb=#

    注:最后一行 mydb=#,這個提示符意味著您是數據庫超級用戶。


    5.2 幫助和退出數據庫

    psql 程序有一些不屬于 SQL 命令的內部命令。 它們以反斜杠開頭,""。 有些這種命令在歡迎信息中列出。比如,您可以用下面的命令獲取各種PostgreSQL SQL 命令的幫助語法:
    mydb=> \h

    要退出 psql,鍵入
    mydb=> \q

    然后 psql 就會退出并且給您返回到命令行 shell; (要獲取更多有關內部命令的信息,您可以在 psql 提示符上鍵入 \?。)

    6. Postgresql圖形化管理工具pgAdmin3 ;

    版本:Version1.4.3


    6.1 安裝;


    6.1.1 Ubuntu安裝 ;

    有兩種方法:

    1.在新立得軟件包管理器中搜索pgadmin3,找到pgadmin3--應用

    2.終端下輸入命令:
    test@localhost:~$ sudo apt-get install pgadmin3


    6.1.2 其它系統的安裝;

    您可以參考其它系統正常的軟件的安裝方法,起本類似,這里就不多做介紹了;


    6.2 pgAdmin3的簡單使用;

    圖形化管理系統相對比較直觀,您可以在命令行下操作,然后在pgAdmin3下查看效果;


    6.2.1 pgAdmin3的啟動

    您可以在應用程序---系統工具中找到pgAdmin3的啟動項;
    也可以在命令行下輸入:
    test@localhost:~$ /usr/bin/pgadmin3 start


    6.2.2 連接已創建的數據庫mydb ;

    點擊檔案-----新增服務器,然后在跳出的窗口下輸入:
    地址:localhost
    描述:服務器名稱(隨意填寫)
    維護數據庫:postgres
    用戶名:自己創建一個(詳情參見創建用戶)
    密碼:和用戶名對應(創建用戶時自己創建)

    點擊確定后大家便可以查看postsql已有的數據庫了;
    注:pgAdmin3的數據庫和終端下創建的數據庫是完全同步的(可以用刷新查看效果), pgAdmin3是比較方便的圖形化管理工具,它可以創建圖表,管理數據庫等,有關pgAdmin3的詳細介紹我們在以后討論,本文主要介紹命令行下的操 作。圖形化管理工具能做到的命令行都可以做到,您可以在命令行下創建表,在pgAdmin3上查看是否同步:

    7. 創建和刪除表;


    7.1 創建新表;

    創建完數據庫之后,您就可以創建新表了,可以通過聲明表的名字和所有字段的名字及其類型來創建表,例如:
    mydb#CREATE TABLE weather (
                    city varchar(80),
                    temp_lo int, -- 最低氣溫
                    temp_hi int, -- 最高氣溫
                    prcp real, -- 降水量
                    date date
                         );

    注:您可以在 psql 里連換行符一起鍵入這些東西。 psql 可以識別該命令直到分號才結束,不要忘記“;”
    您可以在 SQL 命令中自由使用空白(也就是空格,tab,和換行符)。 這就意味著您可以用和上面不同的對齊方式鍵入命令。 兩個劃線("--") 引入注釋。 任何跟在它后面的東西直到該行的結尾都被忽略。 SQL 是對關鍵字和標識符大小寫不敏感的語言,只有在標識符用雙引號包圍時才能保留它們的大小寫屬性。


    7.2 數據類型;

    上面例子中的varchar(80) 聲明一個可以存儲最長 80 個字符的任意字符串的數據類型。 int 是普通的整數類型。 real 是一種用于存儲單精度浮點數的類型。 date 類型應該可以自解釋。
    PostgresSQL 支持標準的 SQL 類型 int,smallint, real,double precision, char(N), varchar(N),date, time,timestamp 和 interval,還支持其他的通用類型和豐富的幾何類型。 PostgreSQL 可以客戶化為定制任意的用戶定義的數據類型,您可以參考PostgreSQL的中文文檔來查詢;


    7.3 刪除表;

    如果您不再需要某個表,或者您想創建一個不同的表,那么您可以用下面的命令刪除它:
    mydb#DROP TABLE tablename


    8. 向表中添加行;


    8.1 INSERT;

    INSERT 用于向表中添加行,您可以輸入(在數據庫中操作):
    mydb#INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27');

    注:所有數據類型都使用了相當明了的輸入格式。 那些不是簡單數字值的常量必需用單引號(')包圍, 就象在例子里一樣。


    8.2 point類型輸入;

    point 類型要求一個座標對作為輸入,如下:
    mydb#INSERT INTO cities VALUES ('San Francisco', '(-194.0, 53.0)');


    8.3 COPY;

    您還可以使用 COPY 從文本文件中裝載大量數據。 這么干通常更快,因為 COPY 命令就是為這類應用優化的, 只是比 INSERT 少一些靈活性.比如:
    mydb#COPY weather FROM '/home/user/weather.txt';

    注:weather.txt是您提前寫好的符合格式標準的表格內容文檔;


    9. 查詢一個表;


    9.1 SELECT;

    要從一個表中檢索數據就是查詢這個表。 SQL 的 SELECT 就是做這個用途的。 該語句分為選擇列表(列出要返回的字段部分),表列表(列出從中檢索數據的表的部分), 以及可選的條件(聲明任意限制的部分)。比如,要檢索表 weather 的所有行,鍵入:
    SELECT * FROM weather;
    <code>
    輸出結果:
    <code>
         city | temp_lo | temp_hi | prcp | date
    ---------------+---------+---------+------+------------
    San Francisco | 46 | 50 | 0.25 | 1994-11-27
    San Francisco | 43 | 57 | 0 | 1994-11-29
    Hayward | 37 | 54 | | 1994-11-29
    (3 rows)

    您可以在選擇列表中寫任意表達式,而不僅僅是字段列表。比如,您可以:
    SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, date FROM weather;

    這樣應該得出:
         city | temp_avg | date
    ---------------+----------+------------
    San Francisco | 48 | 1994-11-27
    San Francisco | 50 | 1994-11-29
    Hayward | 45 | 1994-11-29
    (3 rows)

    請注意這里的 AS 子句是如何給輸出字段重新命名的。(AS 子句是可選的。)


    9.2 WHERE;

    一個查詢可以使用 WHERE 子句"修飾",聲明需要哪些行。 WHERE 子句包含一個布爾(真值)表達式,只有那些布爾表達式為真的行才會被返回。 允許您在條件中使用常用的布爾操作符(AND,OR, 和 NOT)。 比如,下面的查詢檢索舊金山的下雨天的天氣:
    mydb#SELECT * FROM weather
        WHERE city = 'San Francisco' AND prcp > 0.0;

    結果:
         city | temp_lo | temp_hi | prcp | date
    ---------------+---------+---------+------+------------
    San Francisco | 46 | 50 | 0.25 | 1994-11-27
    (1 row)


    9.3 排序;

    您可以要求返回的查詢是排好序的:
    mydb#SELECT * FROM weather
        ORDER BY city;

    得出結果:
         city | temp_lo | temp_hi | prcp | date
    ---------------+---------+---------+------+------------
    Hayward | 37 | 54 | | 1994-11-29
    San Francisco | 43 | 57 | 0 | 1994-11-29
    San Francisco | 46 | 50 | 0.25 | 1994-11-27

    在這個例子里,排序的順序并非絕對清晰的,因此您可能看到 San Francisco 行隨機的排序。 但是如果您使用下面的語句,那么就總是會得到上面的結果
    SELECT * FROM weather
        ORDER BY city, temp_lo;

    您可以要求查詢的結果按照某種順序排序, 并且消除重復的行輸出:
    mydb#SELECT DISTINCT city
        FROM weather;

    得出結果:
         city
    ---------------
    Hayward
    San Francisco
    (2 rows)

    再次聲明,結果行的順序可能是隨機的。


    10. 視圖;

    假設您的應用對天氣記錄和城市位置的組合列表特別感興趣, 而您又不想每次鍵入這些查詢。那么您可以在這個查詢上創建一個視圖, 它給這個查詢一個名字,您可以像普通表那樣引用它。

    進入數據庫后輸入:
    mydb#CREATE VIEW myview AS
        SELECT city, temp_lo, temp_hi, prcp, date, location
            FROM weather, cities
            WHERE city = name;

    建立視圖;

    然后選擇建好的視圖:
    SELECT * FROM myview;

    結果如下:
         city | temp_lo | temp_hi | prcp | date | location
    ---------------+---------+---------+------+------------+-----------
    San Francisco | 46 | 50 | 0.25 | 1994-11-27 | (-194,53)
    San Francisco | 43 | 57 | 0 | 1994-11-29 | (-194,53)
    (2 rows)


    11. 更新行;

    您可以用 UPDATE 命令更新現有的行。 假設您發現所有 11 月 28 日的溫度計數都低了兩度,那么您就可以用下面的方式更新數據:
    mydb#UPDATE weather
        SET temp_hi = temp_hi - 2, temp_lo = temp_lo - 2
        WHERE date > '1994-11-28';

    看看數據的新狀態:
    SELECT * FROM weather;

    結果為:
         city | temp_lo | temp_hi | prcp | date
    ---------------+---------+---------+------+------------
    San Francisco | 46 | 50 | 0.25 | 1994-11-27
    San Francisco | 41 | 55 | 0 | 1994-11-29
    Hayward | 35 | 52 | | 1994-11-29
    (3 rows)


    12. 刪除行;

    數據行可以用 DELETE 命令從表中刪除。假設您對Hayward的天氣不再感興趣,那么您可以用下面的方法把那些行從表中刪除:
    mydb#DELETE FROM weather WHERE city = 'Hayward';

    我們用下面形式的語句的時候一定要小心
    DELETE FROM tablename;

    如果沒有條件,DELETE 將從指定表中刪除所有行,把它清空。做這些之前系統不會請求您確認!


    部分參考自:http://www.chinalinuxpub.com/read.php?wid=1552

    posted @ 2008-07-04 09:12 Fingki.li 閱讀(1040) | 評論 (0)編輯 收藏

    ?linux下查看系統版本命令:

    head -n 1 /etc/issue

    posted @ 2008-07-03 15:59 Fingki.li 閱讀(803) | 評論 (0)編輯 收藏

    SUMMARY

    This article contains information about registry entries that relate to the Kerberos version 5 authentication protocol in Microsoft Windows Server 2003.


    INTRODUCTION

    Kerberos is an authentication mechanism that is used to verify user or host identity. Kerberos is the preferred authentication method for services in Windows Server 2003.

    If you are running Windows Server 2003, you can modify Kerberos parameters to help troubleshoot Kerberos authentication issues or to test the Kerberos protocol. To do this, add or modify the registry entries that are listed in the "More Information" section.

    MORE INFORMATION

    Important This section, method, or task contains steps that tell you how to modify the registry. However, serious problems might occur if you modify the registry incorrectly. Therefore, make sure that you follow these steps carefully. For added protection, back up the registry before you modify it. Then, you can restore the registry if a problem occurs. For more information about how to back up and restore the registry, click the following article number to view the article in the Microsoft Knowledge Base:
    322756 (http://support.microsoft.com/kb/322756/) How to back up and restore the registry in Windows
    Note After you finish troubleshooting or testing the Kerberos protocol, remove any registry entries that you add. Otherwise, performance of your computer may be affected.

    Registry entries and values under the Parameters key

    The registry entries that are listed in this section must be added to the following registry subkey:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
    Note If the Parameters key is not listed under Kerberos, you must create the key.
    Entry: SkewTime
    Type: REG_DWORD
    Default Value: 5 (minutes)

    This value is the maximum time difference that is permitted between the client computer and the server that accepts Kerberos authentication. In Windows 2000 checked build version, the default SkewTime value is 2 hours.

    Note A checked build version of the Windows operating system is used in production and testing environments. (A checked build is also known as a debug version.) A checked build has many compiler optimizations turned off. This kind of build helps trace the cause of problems in system software. A checked build turns on many debugging checks in the operating system code and in the system drivers. These debugging checks help the checked build identify internal inconsistencies as soon as they occur. A checked build is larger and is slower to run than an end-user version of Windows.

    An end-user version of Windows is also known as a free build version or a retail-build version. In a free build version, debugging information is removed, and Windows is built with full compiler optimizations. A free build version is faster and uses less memory than a checked build version.
    Entry: LogLevel
    Type: REG_DWORD
    Default Value: 0

    This value indicates whether events are logged in the system event log. If this value is set to any non-zero value, all Kerberos-related events are logged in the system event log.
    Entry: MaxPacketSize
    Type: REG_DWORD
    Default Value: 1465 (bytes)

    This value is the maximum User Datagram Protocol (UDP) packet size. If the packet size exceeds this value, TCP is used.
    Entry: StartupTime
    Type: REG_DWORD
    Default Value: 120 (seconds)

    This value is the time that Windows waits for the Key Distribution Center (KDC) to start before Windows gives up.
    Entry: KdcWaitTime
    Type: REG_DWORD
    Default Value: 10 (seconds)

    This value is the time Windows waits for a response from a KDC.
    Entry: KdcBackoffTime
    Type: REG_DWORD
    Default Value: 10 (seconds)


    This value is the time between successive calls to the KDC if the previous call failed.
    Entry: KdcSendRetries
    Type: REG_DWORD
    Default Value: 3

    This value is the number of times that a client will try to contact a KDC.
    Entry: DefaultEncryptionType
    Type: REG_DWORD
    Default Value: 23 (decimal) or 0x17 (hexadecimal)

    This value indicates the default encryption type for pre-authentication.
    Entry: FarKdcTimeout
    Type: REG_DWORD
    Default Value: 10 (minutes)

    This is the time-out value that is used to invalidate a domain controller from a different site in the domain controller cache.
    Entry: NearKdcTimeout
    Type: REG_DWORD
    Default Value: 30 (minutes)

    This is the time-out value that is used to invalidate a domain controller in the same site in the domain controller cache.
    Entry: StronglyEncryptDatagram
    Type: REG_BOOL
    Default Value: FALSE

    This value contains a flag that indicates whether to use 128-bit encryption for datagram packets.
    Entry: MaxReferralCount
    Type: REG_DWORD
    Default Value: 6

    This value is the number of KDC referrals that a client pursues before the client gives up.
    Entry: KerbDebugLevel
    Type: REG_DWORD
    Default Value: 0xFFFFFFFF

    This value is a list of flags that indicate the type and the level of logging that is requested. This kind of logging can be collected on the component level of Kerberos by bitwise or by one or more of the macros that are described in the following table.
    Macro NameValueNote
    DEB_ERROR 0x00000001 This is the default InfoLevel for checked builds. This produces error messages across components.
    DEB_WARN 0x00000002 This macro generates warning messages across components. In some cases, these messages can be ignored.
    DEB_TRACE 0x00000004 This macro enables general tracing events.
    DEB_TRACE_API 0x00000008 This macro enables user API tracing events that are usually logged on entry and on exit to an externally exported function that is implemented through SSPI.
    DEB_TRACE_CRED 0x00000010 This macro enables credentials tracing.
    DEB_TRACE_CTXT 0x00000020 This macro enables context tracing.
    DEB_TRACE_LSESS 0x00000040 This macro enables logon session tracing.
    DEB_TRACE_TCACHE 0x00000080 Not implemented
    DEB_TRACE_LOGON 0x00000100 This macro enables logon tracing such as in LsaApLogonUserEx2().
    DEB_TRACE_KDC 0x00000200 This macro enables tracing before and after calls to KerbMakeKdcCall().
    DEB_TRACE_CTXT2 0x00000400 This macro enables additional context tracing.
    DEB_TRACE_TIME 0x00000800 This macro enables the time skew tracing that is found in Timesync.cxx.
    DEB_TRACE_USER 0x00001000 This macro enables user API tracing that is used together with DEB_TRACE_API and that is found mostly in Userapi.cxx.
    DEB_TRACE_LEAKS 0x00002000
    DEB_TRACE_SOCK 0x00004000 This macro enables Winsock-related events.
    DEB_TRACE_SPN_CACHE 0x00008000 This macro enables events that are related to SPN cache hits and misses.
    DEB_S4U_ERROR 0x00010000 Not implemented
    DEB_TRACE_S4U 0x00020000
    DEB_TRACE_BND_CACHE 0x00040000
    DEB_TRACE_LOOPBACK 0x00080000
    DEB_TRACE_TKT_RENEWAL 0x00100000
    DEB_TRACE_U2U 0x00200000
    DEB_TRACE_LOCKS 0x01000000
    DEB_USE_LOG_FILE 0x02000000 Not implemented
    Entry: MaxTokenSize
    Type: REG_DWORD
    Default Value: 12000 (Decimal)

    This value is the maximum value of the Kerberos token. Microsoft recommends that you set this value to less than 65535.
    Entry: SpnCacheTimeout
    Type: REG_DWORD
    Default Value: 15 minutes

    This value is the lifetime of the Service Principal Names (SPN) cache entries. On domain controllers, the SPN cache is disabled.
    Entry: S4UCacheTimeout
    Type: REG_DWORD
    Default Value: 15 minutes

    This value is the lifetime of the S4U negative cache entries that are used to restrict the number of S4U proxy requests from a particular computer.
    Entry: S4UTicketLifetime
    Type: REG_DWORD
    Default Value: 15 minutes

    This value is the lifetime of tickets that are obtained by S4U proxy requests.
    Entry: RetryPdc
    Type: REG_DWORD
    Default Value: 0 (false)
    Possible values: 0 (false) or any non-zero value (true)

    This value indicates whether the client will contact the primary domain controller for Authentication Service Requests (AS_REQ) if the client receives a password expiration error.
    Entry: RequestOptions
    Type: REG_DWORD
    Default Value: Any RFC 1510 value

    This value indicates whether there are additional options that must be sent as KDC options in Ticket Granting Service requests (TGS_REQ).
    Entry: ClientIpAddress
    Type: REG_DWORD
    Default Value: 0 (This setting is 0 because of Dynamic Host Configuration Protocol and network address translation issues.)
    Possible values: 0 (false) or any non-zero value (true)

    This value indicates whether a client IP address will be added in AS_REQ to force the Caddr field to contain IP addresses in all tickets.
    Entry: TgtRenewalTime
    Type: REG_DWORD
    Default Value: 600 seconds

    This value is the time that Kerberos waits before it tries to renew a Ticket Granting Ticket (TGT) before the ticket expires.
    Entry: AllowTgtSessionKey
    Type: REG_DWORD
    Default Value: 0
    Possible values: 0 (false) or any non-zero value (true)

    This value indicates whether session keys are exported with initial or with cross realm TGT authentication. The default value is false for security reasons.

    Registry entries and values under the Kdc key

    The registry entries that are listed in this section must be added to the following registry subkey:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc
    Note If the Kdc key is not listed under Services, you must create the key.
    Entry: KdcUseClientAddresses
    Type: REG_DWORD
    Default Value: 0
    Possible values: 0 (false) or any non-zero value (true)

    This value indicates whether IP addresses will be added in the Ticket-Granting Service Reply (TGS_REP).
    Entry: KdcDontCheckAddresses
    Type: REG_DWORD
    Default Value: 1
    Possible values: 0 (false) or any non-zero value (true)

    This value indicates whether IP addresses for the TGS_REQ and the TGT Caddr field will be checked.
    Entry: NewConnectionTimeout
    Type: REG_DWORD
    Default Value: 50 (seconds)

    This value is the time that an initial TCP endpoint connection will be kept open to receive data before it disconnects.
    Entry: MaxDatagramReplySize
    Type: REG_DWORD
    Default Value: 1465 (decimal, bytes)

    This value is the maximum UDP packet size in TGS_REP and Authentication Service Replies (AS_REP) messages. If the packet size exceeds this value, the KDC returns a KRB_ERR_RESPONSE_TOO_BIG message that requests that the client switch to TCP.
    Entry: KdcExtraLogLevel
    Type: REG_DWORD
    Default Value: 2
    Possible values:
    1 (decimal) or 0x1 (hexadecimal): Audit SPN unknown errors.
    2 (decimal) or 0x2 (hexadecimal): Log PKINIT errors. (PKINIT is an Internet Engineering Task Force (IETF) Internet draft for "Public Key Cryptography for Initial Authentication in Kerberos.")
    4 (decimal) or 0x4 (hexadecimal): Log all KDC errors.
    This value indicates what information the KDC will write to event logs and to audits.
    Entry: KdcDebugLevel
    Type: REG_DWORD
    Default Value: 1 for checked build, 0 for free build

    This value indicates whether debug logging is on (1) or off (0).

    If the value is set to 0x10000000 (hexadecimal) or 268435456 (decimal), specific file or line information will be returned in the edata field of KERB_ERRORS as PKERB_EXT_ERROR errors during a KDC processing failure.

    摘自:http://support.microsoft.com/?scid=kb%3Ben-us%3B837361&x=11&y=18

    posted @ 2008-07-01 16:49 Fingki.li 閱讀(987) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 你懂的网址免费国产| 亚洲AV无码专区在线观看成人| 亚洲黄色在线观看视频| 亚洲午夜电影在线观看高清| 亚洲码欧美码一区二区三区| 黄色一级免费网站| 青柠影视在线观看免费高清| 免费无码VA一区二区三区 | 亚洲人和日本人jizz| 亚洲中文字幕一区精品自拍| 香港特级三A毛片免费观看| 成av免费大片黄在线观看| 91精品免费高清在线| 无码永久免费AV网站| 亚洲国产香蕉人人爽成AV片久久| 亚洲av伊人久久综合密臀性色| 亚洲天堂中文字幕在线观看| 亚洲精品av无码喷奶水糖心| 精品一区二区三区免费观看 | 国产v片免费播放| 亚洲一区二区三区香蕉| 亚洲日本国产精华液| 精品在线免费视频| 四虎国产成人永久精品免费| 嫩草影院在线免费观看| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 免费无码一区二区三区蜜桃| 久久WWW免费人成人片| 亚洲精品国产高清不卡在线| 亚洲视频免费播放| 黄色a三级免费看| 18观看免费永久视频| 国产国产人免费人成免费视频| 亚洲AV无码精品无码麻豆| 亚洲欧洲国产综合AV无码久久| 两个人日本WWW免费版| 最近中文字幕免费mv视频8| 亚洲婷婷五月综合狠狠爱| 亚洲性无码AV中文字幕| 黄色片免费在线观看| 四虎影库久免费视频|