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

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

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

    @OverWrite BlogJava

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      128 隨筆 :: 0 文章 :: 29 評(píng)論 :: 0 Trackbacks

    2008年3月6日 #

    httpclient已停止維護(hù),其替代產(chǎn)品為 Apache HttpComponents 。 官方聲明如下(詳細(xì)信息點(diǎn)擊這里):
    The Commons HttpClient project is now end of life, and is no longer being developed. It has been replaced by the Apache HttpComponents project in its HttpClient and HttpCore modules, which offer better performance and more flexibility.

    HttpClient 是 Apache Jakarta Common 下的子項(xiàng)目,可以用來(lái)提供高效的、最新的、功能豐富的支持 HTTP 協(xié)議的
    客戶端程工具包,并且它支持 HTTP 協(xié)議最新的版本和建議。本文首先介紹 HTTPClient,然后根據(jù)作者實(shí)際工作經(jīng)驗(yàn)給出了一些常見問(wèn)題的解決方法。 

    所以打算用HttpClient的朋友,可以考慮使用HttpComponents 了。
    HttpComponents 入門,筆者認(rèn)為 iteye上的一篇文章寫的不錯(cuò),大家可以參考 《HttpComponents入門解析》
    posted @ 2012-08-12 17:50 vesung 閱讀(397) | 評(píng)論 (0)編輯 收藏

    現(xiàn)在本本屏幕越來(lái)越小, 在上面運(yùn)行eclipse就會(huì)顯得字體小, 那么如何調(diào)整字體大小那?
    方法一:
        打開菜單 window->preferences->general->appearance->colors and fonts
    打開basec里面的text font 進(jìn)行編輯會(huì)彈出一個(gè)字體編輯的窗口, 在里面調(diào)整字體即可。

    方法二:
        因?yàn)閑clipse版本眾多,所以菜單路徑也會(huì)有所差異。 還有一種方法可以不用擔(dān)心不同版本的差異:
        開始先打開菜單 window->preferences   在左上角數(shù)據(jù)font 回車, eclipse就會(huì)自動(dòng)搜索出可以設(shè)置字體的地方了。 接下來(lái)打開basec里面的text font 進(jìn)行編輯會(huì)彈出一個(gè)字體編輯的窗口, 在里面調(diào)整字體即可。 


    一點(diǎn)小技巧希望對(duì)大家能有所幫助。
    posted @ 2012-07-26 14:46 vesung 閱讀(43764) | 評(píng)論 (1)編輯 收藏

    這篇文章在chinaunix上看到,寫的很不錯(cuò)。希望能對(duì)學(xué)習(xí)linux的人有所幫助。

    隨著Linux應(yīng)用的擴(kuò)展許多朋友開始接觸Linux,根據(jù)學(xué)習(xí)Windwos的經(jīng)驗(yàn)往往有一些茫然的感覺(jué):不知從何處開始學(xué)起。作為一個(gè) Linux系統(tǒng)管理員,我看了許多有關(guān)Linux的文檔和書籍,并為學(xué)習(xí)Linux付出了許多艱苦的努力。當(dāng)真正獲得了一份正式的Linux系統(tǒng)管理工作 后,我更加深刻地理解了Linux的靈魂:服務(wù)與多用戶。Linux系統(tǒng)知識(shí)是非常廣博的,但是只要掌握了重點(diǎn)知識(shí),管理它并沒(méi)有想象中的那么可怕。在下 面我會(huì)將作為系統(tǒng)管理員的一些工作心得和總結(jié)出來(lái)的經(jīng)驗(yàn)系統(tǒng)地介紹給大家。

    一、 學(xué)習(xí)的目的

    通過(guò)Linux的學(xué)習(xí)掌握UNIX的目的想必不用多說(shuō)了,在這個(gè)網(wǎng)絡(luò)人才身價(jià)倍增的年代,想靠技術(shù)吃飯又不想掌握網(wǎng)絡(luò)和編程技術(shù)是不明智的。當(dāng)一人第一次 聽說(shuō)Linux并躍躍欲試的時(shí)候,總會(huì)提出幾個(gè)?,它是什么(What)? 為什么要用它(Why)? 怎樣學(xué)習(xí)它(How)?做為開放源碼運(yùn)動(dòng)的主要組成部分,Linux的應(yīng)用越來(lái)越廣泛,從我們平時(shí)的娛樂(lè)、學(xué)習(xí),到商業(yè)、政府辦公,再到大規(guī)模計(jì)算的應(yīng) 用。為了滿足人們的需求,各種各樣的、基于Linux的應(yīng)用軟件層出不窮。只要具備了LinuX的基本功,并具有了自學(xué)的能力之后,都可以通過(guò)長(zhǎng)期的學(xué)習(xí) 將專項(xiàng)內(nèi)容予以掌握。

    二、 從命令開始從基礎(chǔ)開始

    常常有些朋友一接觸Linux 就是希望構(gòu)架網(wǎng)站,根本沒(méi)有想到要先了解一下Linux 的基礎(chǔ)。這是相當(dāng)困難的。雖然Linux桌面應(yīng)用發(fā)展很快,但是命令在Linux中依然有很強(qiáng)的生命力。Linux是一個(gè)命令行組成的操作系統(tǒng),精髓在命 令行,無(wú)論圖形界面發(fā)展到什么水平這個(gè)原理是不會(huì)變的,Linux命令有許多強(qiáng)大的功能:從簡(jiǎn)單的磁盤操作、文件存取、到進(jìn)行復(fù)雜的多媒體圖象和流媒體文 件的制作。這里筆者把它們中比較重要的和使用頻率最多的命令,按照它們?cè)谙到y(tǒng)中的作用分成幾個(gè)部分介紹給大家,通過(guò)這些基礎(chǔ)命令的學(xué)習(xí)我們可以進(jìn)一步理解 Linux系統(tǒng):

    ●安裝和登錄命令:login、 shutdown、 halt、 reboot 、mount、umount 、chsh
    ●文件處理命令:file、 mkdir、 grep、dd、 find、 mv 、ls 、diff、 cat、 ln
    ●系統(tǒng)管理相關(guān)命令: df、 top、 free、 quota 、at、 lp、 adduser、 groupadd kill、 crontab、 tar、 unzip、 gunzip 、last
    ●網(wǎng)絡(luò)操作命令:ifconfig、 ip 、ping 、 netstat 、telnet、 ftp、 route、 rlogin rcp 、finger 、mail 、nslookup
    ●系統(tǒng)安全相關(guān)命令: passwd 、su、 umask 、chgrp、 chmod、chown、chattr、sudo、 pswho

    三、 選擇一本好的Linux書籍

    無(wú)論在論壇還是讀者反饋中,我們看到最多的問(wèn)題往往是某個(gè)新手,在安裝或使用linux的過(guò)程中遇到一個(gè)具體的問(wèn)題就開始提問(wèn),很多都是重復(fù)性的問(wèn)題,甚 至有不少人連基本的問(wèn)題描述都不是很清楚。這說(shuō)明很多初學(xué)linux的人還沒(méi)有掌握基本功。怎樣才能快速提高掌握l(shuí)inux的基本功呢? 最有效的方法莫過(guò)于學(xué)習(xí)權(quán)威的linux工具書,工具書對(duì)于學(xué)習(xí)者而言是相當(dāng)重要的。一本錯(cuò)誤觀念的工具書卻會(huì)讓新手整個(gè)誤入歧途。目前國(guó)內(nèi)關(guān)于 linux的書籍有很多不過(guò)精品的不多,筆者強(qiáng)烈建議閱讀影印本的“o'reilly原版linux圖書”,而且出版社還提供了一個(gè)非常好的路線圖


    四 、養(yǎng)成在命令行下工作

    一定要養(yǎng)成在命令行下工作的習(xí)慣,要知道X-window只是運(yùn)行在命令行模式下的一個(gè)應(yīng)用程序。在命令行下學(xué)習(xí)雖然一開始進(jìn)度較慢,但是熟悉后,您未來(lái) 的學(xué)習(xí)之路將是以指數(shù)增加的方式增長(zhǎng)的。從網(wǎng)管員來(lái)說(shuō),命令行實(shí)際上就是規(guī)則,它總是有效的,同時(shí)也是靈活的。即使是通過(guò)一條緩慢的調(diào)制解調(diào)器線路,它也 能操縱幾千公里以外地遠(yuǎn)程系統(tǒng)。

    五、用Unix思維思考Linux

    由于Linux是參照Unix的思想來(lái)設(shè)計(jì)的,理解和掌握它就必須以Unix的思維來(lái)進(jìn)行,而不能以Windows思維。不可否認(rèn),windows 在市場(chǎng)上的成功很大一部分在于技術(shù)思想的獨(dú)到之處。可是這個(gè)創(chuàng)新是在面對(duì)個(gè)人用戶的前提下進(jìn)行的,而面對(duì)著企業(yè)級(jí)的服務(wù)應(yīng)用,它還是有些力不從心。多年來(lái) 在計(jì)算機(jī)操作系統(tǒng)領(lǐng)域一直是二者獨(dú)大:unix在服務(wù)器領(lǐng)域,Windows在個(gè)人用戶領(lǐng)域。由此可見,用戶需求決定了所采用的操作系統(tǒng)。不管什么原因, 如果要學(xué)習(xí)Linux,那么首先要將思維從Windows的“這個(gè)小河” 中拖出來(lái),放入U(xiǎn)nix的海洋。

    六 、學(xué)習(xí)shell

    對(duì)于Shell(中文名稱殼),習(xí)慣Windows的讀者肯定是非常陌生的,因?yàn)閃indows只有一個(gè)“Shell”(如果可以說(shuō)是Shell的話), 那就是Windows自己。用一句話容易理解的解釋就是,shell是用戶輸入命令與系統(tǒng)解釋命令之間的中介。最直觀的說(shuō)法,一種Shell有一套自己的 命令。舉一個(gè)容易理解的例子,Linux的標(biāo)準(zhǔn)Shel是Bash Shel;Solaris的shell是B shell;Linux的Shell是以命令行的方式表現(xiàn)出來(lái)的。讀者可能會(huì)不理解,Windows從命令行“進(jìn)化”到了圖形界面,那么Linux現(xiàn)在還 使用命令行豈不是一種倒退?

    當(dāng)初我剛剛接觸Linux時(shí)就曾有過(guò)這種想法。可是后來(lái)發(fā)現(xiàn),如果使用圖形界面,那么分配給應(yīng)用軟件的資源就少了,在價(jià)格昂貴的服務(wù)器上,能夠以較低的硬件配置實(shí)現(xiàn)同樣的功能是非常重要的。

    下面舉例說(shuō)明,一臺(tái)服務(wù)器有1GB內(nèi)存,假設(shè)其中512MB用于處理圖形界面,若要安裝一個(gè)需要784MB內(nèi)存的數(shù)據(jù)庫(kù)軟件,惟一的辦法就是擴(kuò)大內(nèi)存。但 是如果使用命令行,系統(tǒng)可能只需要64MB內(nèi)存,其它的內(nèi)存就可以供數(shù)據(jù)庫(kù)軟件使用了。使用命令行,不僅是內(nèi)存,而且CPU及硬盤等資源的占用都要節(jié)省很 多。所以,作為服務(wù)器使用命令行是優(yōu)點(diǎn)而不是缺點(diǎn)。既然Shell有這么多優(yōu)點(diǎn),就必須要學(xué)習(xí)它。
    七、勤于實(shí)踐

    要增加自己Linux 的技能,只有通過(guò)實(shí)踐來(lái)實(shí)現(xiàn)了。所以,趕快找一部計(jì)算機(jī),趕快安裝一個(gè) Linux 發(fā)行版本,然后進(jìn)入精彩的Linux世界。相信對(duì)于你自己的 Linux 能力必然大有斬獲。此外,人腦不像計(jì)算機(jī)的硬盤一樣,除非硬盤壞掉了或者是資料被你抹掉了,否則儲(chǔ)存的資料將永遠(yuǎn)而且立刻的記憶在硬盤中。在人類記憶的曲 線中,你必須要不斷的重復(fù)練習(xí)才會(huì)將一件事情記得比較熟。

    同樣的,學(xué)習(xí) Linux 也一樣,如果你無(wú)法經(jīng)常學(xué)習(xí)的話,學(xué)了后面的,前面的忘了。你對(duì)Linux命令熟悉后你可以開始搭建一個(gè)小的Linux網(wǎng)絡(luò),這是最好的實(shí)踐方法。 Linux是網(wǎng)絡(luò)的代名詞,Linux網(wǎng)絡(luò)服務(wù)功能非常強(qiáng)大,不論是郵件服務(wù)器、Web服務(wù)器、DNS服務(wù)器等都非常完善。當(dāng)然你不需搭建所有服務(wù),可以 慢慢來(lái)。需要說(shuō)明的是這個(gè)Linux網(wǎng)絡(luò)對(duì)于初學(xué)者有兩三臺(tái)計(jì)算機(jī)即可。自己多動(dòng)手,不要非要等著別人幫你解決問(wèn)題。

    八、學(xué)會(huì)使用文檔

    和私有操作系統(tǒng)不同,各個(gè)Linux的發(fā)行版本的技術(shù)支持時(shí)間都較短,這對(duì)于Linux初學(xué)者是往往不夠的。其實(shí)當(dāng)你安裝了一個(gè)完整的Linux系統(tǒng)后其 中已經(jīng)包含了一個(gè)強(qiáng)大的幫助,只是可能你還沒(méi)有發(fā)現(xiàn)和使用它們的技巧。主流Linux發(fā)行版都自帶非常詳細(xì)的文檔(包括手冊(cè)頁(yè)和FAQ),從系統(tǒng)安裝到系 統(tǒng)安全,針對(duì)不同層次的人的詳盡文檔,仔細(xì)閱讀文檔后40%問(wèn)題都可在此解決。查閱經(jīng)典工具書和Howto,特別是Howto是全球數(shù)以萬(wàn)計(jì)的 Linux、Unix的經(jīng)驗(yàn)總結(jié)非常有參考價(jià)值通常40%的問(wèn)題同樣可以解決。安裝一個(gè)新的軟件時(shí)先看README,再看INSTALL然后看FAQ,最 后才動(dòng)手安裝,這樣遇到問(wèn)題就知道為什么。如果說(shuō)明文檔不看,結(jié)果出了問(wèn)題再去論壇來(lái)找答案反而浪費(fèi)時(shí)間。

    當(dāng)查找文檔時(shí), 一定要看文檔是在何種版本、何種環(huán)境及何種狀態(tài)下出現(xiàn)的何種結(jié)果。對(duì)于文檔的有效性, 一時(shí)還無(wú)法在操作前就知道結(jié)論如何,那么對(duì)某個(gè)專題或問(wèn)題,閱讀相關(guān)的多篇文章將會(huì)節(jié)省大量的時(shí)間,還可以保證盡量“干凈”的環(huán)境,有效避免因?yàn)椴煌僮? 所造成的更多問(wèn)題。操作時(shí)要仔細(xì)核對(duì)各個(gè)步驟及輸出的結(jié)果,盡量保持與文檔一致。

    九、在Linux論壇獲取幫助

    如果上面的措施沒(méi)有解決問(wèn)題,此時(shí)你就需要Linux社區(qū)的幫助了。需要說(shuō)明的是你要有周全的思考,準(zhǔn)備好你的問(wèn)題,不要草率的發(fā)問(wèn),否則只會(huì)得到到草率 的回答或者根本得不到任何答案。越表現(xiàn)出在尋求幫助前為解決問(wèn)題付出的努力,你越能得到實(shí)質(zhì)性的幫助。最好先搜尋一下論壇是否有您需要的文章。這樣可以獲 得事半功倍的效果。

    你需要提供精確有效的信息。這并不是要求你簡(jiǎn)單的把成噸的出錯(cuò)代碼或者數(shù)據(jù)完全轉(zhuǎn)儲(chǔ)摘錄到你的提問(wèn)中。如果你有龐大而復(fù)雜的測(cè)試條件,盡量把它剪裁得越小 越好。可能你會(huì)遇到這種情況,對(duì)于一個(gè)問(wèn)題會(huì)出現(xiàn)不同內(nèi)容回答,這時(shí)你需要通過(guò)實(shí)踐來(lái)驗(yàn)證。另外把這個(gè)問(wèn)題放在其他Linux社區(qū)請(qǐng)求幫助也是一種選擇。 如果得不到答案,請(qǐng)不要以為我們覺(jué)得無(wú)法幫助你。有時(shí)只是看到你問(wèn)題的人不知道答案罷了。這時(shí)換一個(gè)社區(qū)是不錯(cuò)的選擇。

    十、學(xué)習(xí)專業(yè)英文

    如果你想深入學(xué)習(xí)Linux,看不懂因?yàn)槲臋n實(shí)在是太難了。寫的最好的,最全面的文檔都是英語(yǔ)寫的,最先發(fā)布的技術(shù)信息也都是用英語(yǔ)寫的。即便是非英語(yǔ)國(guó)家的人發(fā)布技術(shù)文檔,也都首先翻譯成英語(yǔ)在國(guó)際學(xué)術(shù)雜志和網(wǎng)絡(luò)上發(fā)表。

    通過(guò)man、info等命令,可以從在線幫助中快速地獲得所需要的命令和操作方法。不要害怕海量的系統(tǒng)幫助,仔細(xì)閱讀幾個(gè)man或info文檔就會(huì)發(fā)現(xiàn), 這些幫助幾乎都按照固定格式寫成一命令名稱、參數(shù)、參數(shù)說(shuō)明、使用例子、參考等。當(dāng)英語(yǔ)成為一種習(xí)慣,就會(huì)自覺(jué)地查找或訂閱互聯(lián)網(wǎng)上感興趣的英文材料。這 樣,在不知不覺(jué)中就已經(jīng)和世界同步。

    十一、在社區(qū)共享你的經(jīng)驗(yàn)

    隨著Linux應(yīng)用的擴(kuò)展,出現(xiàn)了不少Linux社區(qū)。其中有一些非常優(yōu)秀的社區(qū):水木清華、其中有一些非常優(yōu)秀的社區(qū):www.linuxforum.net(國(guó)內(nèi)最高水平GNU站點(diǎn))、http://www.chinaunix.net/ (中國(guó)最大的Unix技術(shù)社區(qū)),隨著知識(shí)的不斷積累,就可以把自己動(dòng)手解決一些前人沒(méi)有遇到的問(wèn)題寫出文檔在網(wǎng)絡(luò)上共享給其他讀者。這個(gè)時(shí)候,也就成為 了一名“高手”。Linux的使用者一般都是專業(yè)人士,他們有著很好的電腦背景且愿意協(xié)助他人,Linux高手更具有鼓勵(lì)新手的文化精神。

    最后是一個(gè)筆者的Linux學(xué)習(xí)的路線圖(roadmap):

    ●了解Linux 的基礎(chǔ)知識(shí),這些包含了用戶管理、群組的概念、權(quán)限的觀念等;
    ●掌握至少50個(gè)以上的常用命令;
    ●掌握.tgz、.rpm等軟件包的常用安裝方法
    ●學(xué)習(xí)添加外設(shè),安裝設(shè)備驅(qū)動(dòng)程序(比如網(wǎng)卡)
    ●熟悉Linux文件系統(tǒng) 和目錄結(jié)構(gòu)。
    ●掌握vi,gcc,gdb等常用編輯器,編譯器,調(diào)試器 。
    ●理解shell別名、管道、I/O重定向、輸入和輸出以及shell腳本編程。
    ●網(wǎng)絡(luò)的基礎(chǔ)包括: 掌握路由概念、OSI七層網(wǎng)絡(luò)模型、TCP/IP模型及相關(guān)服務(wù)對(duì)應(yīng)的層次對(duì)于Linux學(xué)習(xí)非常重要的。然后學(xué)習(xí)Linux環(huán)境下的組網(wǎng)。
    posted @ 2008-07-31 17:49 vesung 閱讀(393) | 評(píng)論 (0)編輯 收藏

    國(guó)外開發(fā)者博客中有一篇有趣的文章,將程序員按水平像軟件版本號(hào)那樣劃分為不同的版本。相對(duì)于在招聘時(shí)分為初級(jí),中級(jí),高級(jí)程序員,直接表明需要某種語(yǔ)言N版本的程序員或許更方便直接。根據(jù)作者的觀點(diǎn),可將WEB開發(fā)者大致分為以下幾個(gè)版本:

    Alpha:閱讀過(guò)一些專業(yè)書籍,大多數(shù)能用Dreamweaver或者FrontPage幫朋友制作一些Web頁(yè)面。但在他們熟練掌握HTML代碼以前,你大概不會(huì)雇傭他們成為職業(yè)的WEB制作人員。

    Beta:已經(jīng)比較擅長(zhǎng)整合站點(diǎn)頁(yè)面了,在HTML技巧方面也有一定造詣,但還是用Tables來(lái)制作頁(yè)面,不了解CSS,在面對(duì)動(dòng)態(tài)頁(yè)面或數(shù)據(jù)庫(kù)連接時(shí)還是底氣不足。

    Pre Version 1 (0.1):比Beta版的開發(fā)者水平要高。熟悉HTML,開始了解CSS是如何運(yùn)作的,懂一點(diǎn)JavaScript,但還是基于業(yè)余水準(zhǔn),逐步開始關(guān)心動(dòng)態(tài)站點(diǎn)搭建和數(shù)據(jù)庫(kù)連接的知識(shí)。這個(gè)版本的WEB開發(fā)人員還遠(yuǎn)不能成為雇主眼中的香餑餑。

    1.0: 能夠基本把控整個(gè)站點(diǎn)開發(fā),針對(duì)每個(gè)問(wèn)題盡可能的找到最直接的解決辦法。但對(duì)可測(cè)性,可擴(kuò)展性以及在不同(層)框架下如何選擇最合適的WEB設(shè)計(jì)工具尚無(wú)概念。這個(gè)版本的WEB開發(fā)者有良好的技術(shù)基礎(chǔ),需要有進(jìn)一步的幫助和指導(dǎo)。

     

    2.0:懂面向?qū)ο蟮木幊陶Z(yǔ)言,理解分層開發(fā)的必要性,關(guān)注代碼分離,對(duì)問(wèn)題尋找更完美的解決方法,偶然也會(huì)考慮設(shè)計(jì)模式的問(wèn)題,但對(duì)此仍然概念不清。屬于優(yōu)秀的初級(jí)開發(fā)者,能完成較松散的代碼開發(fā)(相對(duì)大型嚴(yán)謹(jǐn)?shù)恼军c(diǎn)開發(fā)而言),在面對(duì)較復(fù)雜問(wèn)題尋找解決辦法時(shí)需要周邊人的幫助。

    3.0:開始較為深入的理解面向?qū)ο缶幊毯驮O(shè)計(jì)模式,了解他們的用途,當(dāng)看到好的設(shè)計(jì)模式時(shí)能看透其本質(zhì),逐步關(guān)注分層的架構(gòu)解決辦法和可測(cè)試性。理解不同的開發(fā)語(yǔ)言并能說(shuō)出他們的異同(例如各自的優(yōu)勢(shì))。屬于優(yōu)秀的中級(jí)別開發(fā)者,雇主也確信他們最終能找到問(wèn)題的解決辦法,這個(gè)版本的人可以給1.0和2.0的開發(fā)者以指導(dǎo)。但他們對(duì)架構(gòu)的理解仍然不夠清晰,值得一提的是,只要給予一些指導(dǎo),他們能很快理解并熟記做出的決定,以及選定方案的優(yōu)勢(shì)所在。

    4.0:理解模式,重視用戶的反饋。著手研究方法論,架構(gòu)設(shè)計(jì)和軟件開發(fā)的最佳入口。頭腦中已經(jīng)形成了超越開發(fā)語(yǔ)言,技術(shù)架構(gòu)的整體方案,可根據(jù)需求解構(gòu)程序。能從理論的角度,不同模式如何融合成最佳形態(tài),將多種X-驅(qū)動(dòng)的模式應(yīng)用到不同的方案中。是精通多語(yǔ)言的高手,理解不同系統(tǒng)和方法論的細(xì)微差別,屬于高級(jí)程序員。這個(gè)級(jí)別的人能夠輕易的輔導(dǎo)2.0和3.0的程序員,將他們推向更高的級(jí)別。

    5.0:從系統(tǒng)的角度考慮問(wèn)題。對(duì)各種系統(tǒng)結(jié)構(gòu)有深入研究,能對(duì)整個(gè)代碼架構(gòu)中的問(wèn)題進(jìn)行改進(jìn)。在團(tuán)隊(duì)粘合性以及代碼安全性方面有杰出貢獻(xiàn)。對(duì)1.0到4.0版本的開發(fā)人員出現(xiàn)的問(wèn)題能及時(shí)察覺(jué),讓整個(gè)團(tuán)隊(duì)保持積極性且保持興奮的狀態(tài)創(chuàng)建軟件解決辦法。舉例來(lái)說(shuō),他們總是對(duì)新的技術(shù)和信息保持饑渴狀態(tài),試圖用最簡(jiǎn)便的方案解決開發(fā)任務(wù)。在整個(gè)IT團(tuán)隊(duì)中獲得信任,屬于高級(jí)程序員和架構(gòu)師。

    那么,您屬于哪個(gè)版本的程序員呢?

    posted @ 2008-06-29 23:28 vesung 閱讀(625) | 評(píng)論 (1)編輯 收藏

    中國(guó)互聯(lián)網(wǎng)審查制度的不透明一直為人所詬病。現(xiàn)在還不清楚56.com是因?yàn)槭裁撮_罪了監(jiān)管機(jī)構(gòu),也不知道該網(wǎng)站會(huì)關(guān)閉多久。這些疑問(wèn)也表明籠罩整個(gè)中國(guó)互聯(lián)網(wǎng)視頻領(lǐng)域的風(fēng)險(xiǎn),即使是那些有明智投資方支持的大型互聯(lián)網(wǎng)公司也面臨著同樣的問(wèn)題。該網(wǎng)站至少募集了3,000萬(wàn)美元資金,投資方中包括風(fēng)險(xiǎn)投資巨頭Sequoia Capita和華特•迪斯尼(Walt Disney Co.)旗下的Steamboat Ventures。

    網(wǎng)絡(luò)視頻主管部門之一的中國(guó)國(guó)家廣電總局(SARFT)沒(méi)有回復(fù)記者就56.com問(wèn)題的采訪申請(qǐng)。該網(wǎng)站首席財(cái)務(wù)長(zhǎng)張福興(Jay Chang)拒絕發(fā)表評(píng)論,其投資方的人士也拒絕置評(píng)。

    看來(lái)清理行動(dòng)開始下狠手了。
    posted @ 2008-06-23 08:54 vesung 閱讀(352) | 評(píng)論 (0)編輯 收藏

    不說(shuō)廢話了,直接看代碼:
    頁(yè)面:
    <html>
    <head>
    <script type='text/javascript' src='jquery.js'></script>
    <script type='text/javascript'>
    //js代碼1
    <script>

    <body>
    <table>
     
    <tr>
      
    <td>級(jí)聯(lián)菜單</td>
      
    <td>
        
    <select name='city' class='amenu'>
         
    <option value=''>-市局全部-</option>
         
    <option value='1'>a市</option>
         
    <option value='2'>b市</option>
         
    <option value='3'>c市</option>
        
    </select>
      
    </td>
      
    <td>
        
    <select name='country' class='amenu'>
         
    <option value=''>-縣局全部-</option>
         
    <option value='1'>test</option>
        
    </select>
      
    </td>
      
    <td>
        
    <select name='taxOffice' class='amenu'>
         
    <option value=''>-所全部-</option>
         
    <option value='1'>test</option>    
        
    </select>
      
    </td>
      
    <td>
        
    <select name='taxOffical' class='amenu'>
         
    <option value=''>-職員全部-</option>
         
    <option value='1'>test</option>    
        
    </select>
      
    </td>
     
    </tr>
    </table>
    </body>

    對(duì)應(yīng)的js代碼:
    js代碼1:
    //本菜單是4級(jí)級(jí)聯(lián)菜單,采用jquery框架來(lái)實(shí)現(xiàn)
    $(document).ready(function(){
     
    //為所有class為amenu的元素綁定onchange事件
     $('.amenu').change(function(){
      
    //記錄本級(jí)菜單標(biāo)志
      var orgLevel = this.name;
      
    //下級(jí)菜單
      var nextMenu = $(this).parents().next().children[0];
      
    //ajax動(dòng)作提交的對(duì)象(后臺(tái)采用java程序)
      var postUrl = 'pubOrgAjax.do';

      
    //如果本菜單是最后一級(jí)菜單的話則不做任何動(dòng)作
      if(orgLevel=='taxOffical') return true;
      
    //本級(jí)菜單選擇為全部選項(xiàng),則下級(jí)菜單也置為全部
      if(this.value == ''){
       
    var firstOption = nextMenu.option[0];
       nextMenu.length
    =0;
       nextMenu.options.add(firstOption);
       
    return true;
      }


      
    //ajax動(dòng)作
      $.post(postUrl,{orgFlag:orgLevel,orgCode:this.value},function(xml){
        
    var dicts = $('dict',xml);
        
    if(dicts.length<1){alert('返回?cái)?shù)據(jù)錯(cuò)誤,請(qǐng)重新登陸');return false;}
        
    //清空nextMenu
        if(nextMenu.options[0].value == ''){
          
    var firstOption = nextMenu.options[0].text;
          nextMenu.length 
    = 0;
          nextMenu.options.add(
    new Option(firstOption,''));
        }
    else{
          nextMenu.length 
    = 0;
        }

        
    //為清空后的nextMenu填充新值
        for(var i=0;i<dicts.length;i++){
          
    var newOption = new Option($('name',dicts[i]).text(),$('code',dicts[i]).text());
          nextMenu.options.add(newOption);
        }

        
      }
    );
      
     }
    );
    }
    );

    后臺(tái)返回的數(shù)據(jù)格式:
    <?xml version="1.0" cencodeing="gbk"?>
    <ajax-response>
    <response>
     
    <dict>
        
    <code>1</code>
        
    <name>市局1</name>
     
    </dict>
     
    <dict>
     
     
    </dict>

     
    </response>
    </ajax-respnse>

    posted @ 2008-06-12 09:44 vesung 閱讀(9840) | 評(píng)論 (5)編輯 收藏

    Yahoo本周發(fā)表研發(fā)一年的Yahoo!BrowserPlus預(yù)覽版,這是一個(gè)用來(lái)延伸網(wǎng)絡(luò)應(yīng)用的平臺(tái),開發(fā)人員可透過(guò)該平臺(tái)結(jié)合桌面程序,而用戶只要透過(guò)瀏覽器就能執(zhí)行利用該平臺(tái)開發(fā)的網(wǎng)絡(luò)應(yīng)用。

    現(xiàn)階段BrowserPlus平臺(tái)所提供的功能包括自桌面拖曳、客戶端的圖像處理,以及桌面通知工具等。Yahoo指出,BrowserPlus的最大特色就是可以直接新增或更新服務(wù)而不用重新啟動(dòng)瀏覽器,甚至不需重新下載網(wǎng)頁(yè),對(duì)使用者而言,這代表在執(zhí)行這些新應(yīng)用時(shí)不用進(jìn)行安裝或受到其他干擾;開發(fā)人員則能透過(guò)單一的功能呼叫檢視或啟動(dòng)新服務(wù)。

    Yahoo展示了基于BrowserPlus所設(shè)計(jì)的應(yīng)用范例,其中一個(gè)為照片上傳工具Photo Uploader,該工具參考了Flickr Uploader桌面應(yīng)用程序的功能,用戶可以透過(guò)瀏覽器,從桌面上拖曳照片,并進(jìn)行諸如旋轉(zhuǎn)、改變大小以及特效等簡(jiǎn)單的編輯功能。

    BrowserPlus屬于近來(lái)風(fēng)行的豐富網(wǎng)絡(luò)應(yīng)用程序(RIA)平臺(tái),Yahoo利用該平臺(tái)替開發(fā)人員處理了復(fù)雜的軟件發(fā)表及更新功能,讓開發(fā)人員及使用者皆能從中受益。

    Yahoo目前僅允許Yahoo及其合作伙伴使用BrowserPlus,預(yù)計(jì)在公開版本發(fā)表后才會(huì)供其他開發(fā)人員使用。現(xiàn)階段BrowserPlus支持Windows XP及Mac OS X等操作系統(tǒng),以及IE、Firefox及Safari等瀏覽器,未來(lái)將支持更多的平臺(tái)。

    Yahoo指出,Yahoo致力于開發(fā)開放的平臺(tái),其中一項(xiàng)重點(diǎn)是提供開發(fā)人員用來(lái)開發(fā)內(nèi)容的客戶端工具,Yahoo先前已釋出Yahoo用戶接口鏈接庫(kù)(Yahoo!User Interface Library,YUI)開放源碼計(jì)劃,BrowserPlus則是提供以瀏覽器為基礎(chǔ)的網(wǎng)站開發(fā)解決方案,該平臺(tái)之后也將朝開放的目標(biāo)前進(jìn)。

    豐富網(wǎng)絡(luò)應(yīng)用程序平臺(tái)成為各大業(yè)者爭(zhēng)相競(jìng)逐的領(lǐng)域,市場(chǎng)上類似的平臺(tái)還包括微軟發(fā)表的Silverlight、Adobe的AIR,以及Mozilla基金會(huì)所開發(fā)的Prism等

    posted @ 2008-06-05 08:50 vesung 閱讀(423) | 評(píng)論 (0)編輯 收藏

    (轉(zhuǎn)載)
    2007年6月項(xiàng)目準(zhǔn)備開始了,剛來(lái)到一個(gè)新的項(xiàng)目組,什么都是新的,除了我自己。

    需要一個(gè)新的框架來(lái)開發(fā)項(xiàng)目,香港的同事決定使用Dojo,DWR, 我開始學(xué)習(xí)使用dojo,時(shí)間很短,但是我還是基本上熟悉了dojo的基本控件和架構(gòu)。在此基礎(chǔ)上搭建起了項(xiàng)目的基本框架。這是一個(gè)單頁(yè)面,基于ajax和dojo widget的系統(tǒng),一切都那么的新奇,又充滿挑戰(zhàn),但是既然dojo有這么多后臺(tái),又有香港同事的推薦,我顯得自信滿滿。

    框架搭建的同事,也開始后了緊鑼密鼓的招兵買馬,一起都像是從零開始。陸陸續(xù)續(xù),招了5個(gè)程序員和一個(gè)測(cè)試員。開始了整個(gè)項(xiàng)目的快速開發(fā),由于需求由香港負(fù)責(zé),而且需求做的比較細(xì)致,基本上問(wèn)題很少。Dojo 卻是麻煩不斷。

    首先的一個(gè)壞消息是當(dāng)我們做完了幾乎全部300個(gè)頁(yè)面的時(shí)候,dojo宣布0.43不在得到支持,取而代之是完全不同的dojo0.9。 而且dojo0.9 還不是穩(wěn)定的版本,問(wèn)題多多,讓我們騎虎難下,最后還是決定按兵不動(dòng)。 隨之而來(lái),是dojo1.0,dojo1.1 的陸續(xù)發(fā)布,但是一直都無(wú)法讓我看到希望的曙光。 與之相對(duì)的是ext在國(guó)內(nèi)的廣泛使用和熱烈追捧。

    Dojo 的控件有很多奇怪的地方,日期選擇控件的行為非常怪異,與國(guó)內(nèi)的使用習(xí)慣很不相同。而且樣式極其丑陋,當(dāng)字體放大縮小的時(shí)候更是丑陋。顯示的格式和保存的格式需要分別指定。我們修改了大量的代碼。

    dojo 的下拉框也被用戶投訴,過(guò)濾之后一定要再選擇一次或者按回車才能選定結(jié)果,前臺(tái)值和后臺(tái)值分開操作也帶來(lái)很多不變。

    dojo 的驗(yàn)證文本框顏色現(xiàn)實(shí)有bug,我們不得不修改代碼

    dojo的對(duì)話框也有問(wèn)題,對(duì)話框中無(wú)法在彈出對(duì)話框。對(duì)話框的操作和控制很不靈活。

    js代碼不利于管理,容易發(fā)生命名沖突。

     

    致命的問(wèn)題發(fā)生在項(xiàng)目的后期,在客戶的系統(tǒng)進(jìn)行測(cè)試時(shí)發(fā)現(xiàn)。dojo的性能非常差,在賽揚(yáng)2G的電腦上,一個(gè)頁(yè)面顯示的時(shí)間竟然需要17秒。簡(jiǎn)直就是噩夢(mèng)。

    另外使用dojo的對(duì)話框時(shí)出現(xiàn)cpu占用100%而且一直不回落下來(lái)。

    頁(yè)面載入完成的時(shí)候,它有將整個(gè)頁(yè)面重新刷新一次,又需要花費(fèi)額外的5到8s時(shí)間,不僅花費(fèi)更多的時(shí)間,而且嚴(yán)重影響客戶體驗(yàn)。

     

    還有開發(fā)過(guò)程中碰到的無(wú)數(shù)問(wèn)題,雖然一個(gè)一個(gè)被解決,但是無(wú)疑是一次一次痛苦的煎熬。

     

    最后,在性能面前,我被dojo徹底打敗,如此的速度是任何客戶都無(wú)法忍受的,客戶不可能為了這個(gè)系統(tǒng)全部升級(jí)電腦cpu。而且還有很多未知的問(wèn)題可能還沒(méi)有被發(fā)覺(jué),不如內(nèi)存泄露,可能導(dǎo)致資源耗盡,內(nèi)存耗盡。cpu 的占用可能在使用時(shí)間長(zhǎng)了之后越來(lái)越高,等等,這些都是我擔(dān)心的問(wèn)題。

     

    使用Ajax或者說(shuō)Rich client,一定要謹(jǐn)慎啊。使用新的技術(shù)和框架,一定要謹(jǐn)慎,這是我的教訓(xùn),希望給同行們一個(gè)參考。

    posted @ 2008-06-04 11:32 vesung 閱讀(2099) | 評(píng)論 (2)編輯 收藏

    看兩段代碼:
    import java.util.ArrayList;   
    import java.util.List;   
      
    public class TailRecursionTest {   
        
    public static void main(String[] args) {   
            TailRecursionTest t 
    = new TailRecursionTest();   
            
    for (int i = 0; i < 10000; i++)   
                t.a(
    0);   
        }
       
      
        
    public void a(int j) {   
            j
    ++;   
            List list 
    = new ArrayList<Integer>(100000);   
            
    // 對(duì)list進(jìn)行處理   
        }
       
    }

    沒(méi)啥特殊的,僅僅是為了測(cè)試,我們將a方法調(diào)用10000次,a方法創(chuàng)建一個(gè)有100000個(gè)元素的list的局部變量。
    第二個(gè)程序:
    import java.util.ArrayList;   
    import java.util.List;   
      
    public class TailRecursionTest2 {   
        
    public static void main(String[] args) {   
            TailRecursionTest2 t 
    = new TailRecursionTest2();   
            t.a(
    0);   
        }
       
      
        
    public void a(int j) {   
            System.out.println(j);   
            j
    ++;   
            
    if (j == 10000)   
                
    return;   
            List list 
    = new ArrayList<Integer>(100000);   
            
    // 對(duì)list進(jìn)行處理   
            a(j);   
        }
       
    }
      

    也沒(méi)啥特殊的,就是將循環(huán)換成了遞歸,a方法做的事情沒(méi)變。兩個(gè)都跑一下,程序1順利結(jié)束,程序2出問(wèn)題了,啥問(wèn)題?如下:
    161  
    162  
    163  
    164  
    165  
    Exception in thread 
    "main" java.lang.OutOfMemoryError: Java heap space   
        at java.util.ArrayList.
    <init>(Unknown Source)   
        at TailRecursionTest2.a(TailRecursionTest2.java:
    17)   
        at TailRecursionTest2.a(TailRecursionTest2.java:
    20)   
        at TailRecursionTest2.a(TailRecursionTest2.java:
    20)   
        at TailRecursionTest2.a(TailRecursionTest2.java:
    20)   
        at TailRecursionTest2.a(TailRecursionTest2.java:
    20

    我倒,才運(yùn)行166次了,heap就滿了。問(wèn)題在哪呢?oh,yep,你肯定想到了,是不是重復(fù)創(chuàng)建list這個(gè)大集合引起的呢?它不是局部變量嗎?怎么也會(huì)溢出?是的,list是局部變量,在a的方法棧里引用著,指向heap上的大對(duì)象,更關(guān)鍵的問(wèn)題在于,java是沒(méi)有尾遞歸優(yōu)化的,遞歸方法是不會(huì)使用同一個(gè)棧幀,每一次遞歸調(diào)用,都將壓入新的棧幀,并且這個(gè)棧幀上又new了一個(gè)list變量,引用著heap上新的一個(gè)大集合。隨著棧深度的增加, jvm里維持著一條長(zhǎng)長(zhǎng)的方法調(diào)用軌跡以便你能回來(lái),在方法沒(méi)有返回之前,這些list變量一直被各自的棧幀引用著,不能被GC,你說(shuō),能不OOM嗎?

        也許,你想到了個(gè)補(bǔ)救方法來(lái)挽救程序2,就是每次在處理完list后,我把它設(shè)置為null,不讓棧幀繼續(xù)引用著它,咱編寫對(duì)gc友好的代碼,這不就行了,試試:


    import java.util.ArrayList;   
    import java.util.List;   
      
    public class TailRecursionTest2 {   
        
    public static void main(String[] args) {   
            TailRecursionTest2 t 
    = new TailRecursionTest2();   
            t.a(
    0);   
        }
       
      
        
    public void a(int j) {   
            System.out.println(j);   
            j
    ++;   
            
    if (j == 10000)   
                
    return;   
            List list 
    = new ArrayList<Integer>(100000);   
            
    // 對(duì)list進(jìn)行處理   
            list = null;  //gc友好   
            a(j);   
        }
       
    }
     

    得意洋洋,我跑一下看看,這次跑到4000多次,但是:
       
    4289  
    4290  
    4291  
    4292  
    java.lang.StackOverflowError   
        at sun.nio.cs.ext.DoubleByteEncoder.encodeArrayLoop(Unknown Source)   
        at sun.nio.cs.ext.DoubleByteEncoder.encodeLoop(Unknown Source)   
        at java.nio.charset.CharsetEncoder.encode(Unknown Source) 

    總結(jié):在java里,遞歸最好咱還是別用,老老實(shí)實(shí)地while、for;就算遞歸了,最好遞歸方法不要new太大的對(duì)象,除非你能確定遞歸的深度不是那么大,否則OOM和堆棧溢出的陰影將籠罩著你。
    posted @ 2008-06-03 09:14 vesung 閱讀(1565) | 評(píng)論 (0)編輯 收藏

    先看下面表格:

    作用域
    當(dāng)前類 同一package 子孫類
    其他package
    public √   
    √   
    √   
    √   
    protected
    √   
    √   
    √   
      × 
    default √   
    √   
      × 
      × 
    private √   
      × 
      × 
      × 

    不寫時(shí)默認(rèn)為default

    我們先看類:

    public class  Test 可以在任何地方訪問(wèn),無(wú)論是否為當(dāng)前package
    class Test 只允許當(dāng)前的package使用,不允許其它package使用
    class 不與許prirvate和protected ,所以不討論了

    我們?cè)倏捶椒?br /> private 的只允許類自己使用,子類都不可見。但允許inner類調(diào)用,因?yàn)閕nner類屬于他自己。

    class Test 里面的方法
      public 和default和protected 方法,允許同包的訪問(wèn),因?yàn)轭愂莇efault的,所以方法不可能大于它

    public class Test 里面的方法
      private 只允許自己內(nèi)部訪問(wèn)
     default 只允許同包的訪問(wèn)
      protected 只允許同包和子類訪問(wèn)
      public 可以任意訪問(wèn)
    posted @ 2008-06-02 09:12 vesung 閱讀(879) | 評(píng)論 (0)編輯 收藏

         摘要:   默認(rèn)的序列化機(jī)制并不難操縱。然而,假若有特殊要求又該怎么辦呢?我們可能有特殊的安全問(wèn)題,不希望對(duì)象的某一部分序列化;或者某一個(gè)子對(duì)象完全不必序列化,因?yàn)閷?duì)象恢復(fù)以后,那一部分需要重新創(chuàng)建。 此時(shí),通過(guò)實(shí)現(xiàn)Externalizable接口,用它代替Serializable接口,便可控制序列化的具體過(guò)程。這個(gè)Externalizable接口擴(kuò)展了Serializable,并增添了兩個(gè)...  閱讀全文
    posted @ 2008-05-28 12:00 vesung 閱讀(677) | 評(píng)論 (0)編輯 收藏

    JNDI是J2EE中一個(gè)很重要的標(biāo)準(zhǔn),通常我們是在EJB編程中用到, 
    Tomcat4.0中提供了在JSP和Servelt中直接使用JNDI的方法,下面談一下在Tomcat4.0中配置和使用JNDI的方法 
    (以通過(guò)JNDI連接數(shù)據(jù)庫(kù)為例) 
    假設(shè)使用的數(shù)據(jù)庫(kù)是mysql,實(shí)驗(yàn)例子在TOMCAT_HOME/webapps/DBTest目錄中 

    A.將mysql的JDBC連接庫(kù)mm.mysql-2.0.9-bin.jar放入TOMCAT_HOME/common/lib中 

    B.配置TOMCAT_HOME/conf/serer.xml文件在<Service>;段中加入一個(gè)Context: 
    <Context path="/DBTest" docBase="DBTest" 
    debug="5" reloadable="true" crossContext="true"> 
    </Context> 
    這是DBTest的根路徑,這是為了在DBTest中使用做準(zhǔn)備. 

    C.在上面加入的<Context>;段加入 
    <Resource name="jdbc/TestDB" 
    auth="Container" 
    type="javax.sql.DataSource"/> 

    <ResourceParams name="jdbc/TestDB">
    <parameter> 
    <name>;factory</name> 
    <value>;org.apache.commons.dbcp.BasicDataSourceFactory</value> 
    </parameter> 

    <!-- Maximum number of dB connections in pool. Make sure you 
    configure your mysqld max_connections large enough to handle 
    all of your db connections. Set to 0 for no limit. 
    --> 
    <parameter>
    <name>;maxActive</name>
    <value>;100</value>
    </parameter>

    <!-- Maximum number of idle dB connections to retain in pool. 
    Set to 0 for no limit. 
    -->
    <parameter> 
    <name>;maxIdle</name> 
    <value>;30</value> 
    </parameter> 

    <!-- Maximum time to wait for a dB connection to become available 
    in ms, in this example 10 seconds. An Exception is thrown if 
    this timeout is exceeded. Set to -1 to wait indefinitely. 
    --> 
    <parameter> 
    <name>;maxWait</name> 
    <value>;10000</value> 
    </parameter> 

    <!-- MySQL dB username and password for dB connections --> 
    <parameter> 
    <name>;username</name>; 
    <value>;test</value> 
    </parameter> 
    <parameter> 
    <name>;password</name> 
    <value>;test</value> 
    </parameter> 

    <!-- Class name for mm.mysql JDBC driver -->; 
    <parameter>; 
    <name>;driverClassName</name>; 
    <value>;org.gjt.mm.mysql.Driver</value> 
    </parameter> 

    <!-- The JDBC connection url for connecting to your MySQL dB.--> 
    <parameter> 
    <name>;url</name> 
    <value>;jdbc:mysql://localhost:3306/test</value> 
    </parameter> 
    </ResourceParams> 

    這里每一個(gè)小段都有英文注解,是Tomcat提供的,我們可以將按照Sample加入,主要修改的是driverClassName, 
    url,和用戶帳號(hào);需要強(qiáng)調(diào)的是"jdbc/TestDB"就是JDNI要查找的Name.

    在web.xml中加入 
    <resource-ref> 
    <description>;DB Connection</description> 
    <res-ref-name>;jdbc/TestDB</res-ref-name> 
    <res-type>;javax.sql.DataSource</res-type> 
    <res-auth>;Container</res-auth> 
    </resource-ref> 
    這里的jdbc/TestDb要和C中Resource段的name匹配 

    posted @ 2008-04-25 09:02 vesung 閱讀(431) | 評(píng)論 (0)編輯 收藏

    一、DataSource接口是一個(gè)更好的連接數(shù)據(jù)源的方法:
      JDBC1.0是原來(lái)是用DriverManager類來(lái)產(chǎn)生一個(gè)對(duì)數(shù)據(jù)源的連接。JDBC2.0用一種替代的方法,使用DataSource的實(shí)現(xiàn),代碼變的更小巧精致,也更容易控制。
      一個(gè)DataSource對(duì)象代表了一個(gè)真正的數(shù)據(jù)源。根據(jù)DataSource的實(shí)現(xiàn)方法,數(shù)據(jù)源既可以是從關(guān)系數(shù)據(jù)庫(kù),也電子表格,還可以是一個(gè)表格形式的文件。當(dāng)一個(gè)DataSource對(duì)象注冊(cè)到名字服務(wù)中,應(yīng)用程序就可以通過(guò)名字服務(wù)獲得DataSource對(duì)象,并用它來(lái)產(chǎn)生一個(gè)與DataSource代表的數(shù)據(jù)源之間的連接。
      關(guān)于數(shù)據(jù)源的信息和如何來(lái)定位數(shù)據(jù)源,例如數(shù)據(jù)庫(kù)服務(wù)器的名字,在哪臺(tái)機(jī)器上,端口號(hào)等等,都包含在DataSource對(duì)象的屬性里面去了。這樣,對(duì)應(yīng)用程序的設(shè)計(jì)來(lái)說(shuō)是更方便了,因?yàn)椴⒉恍枰残缘陌羊?qū)動(dòng)的名字寫死到程序里面去。通常驅(qū)動(dòng)名字中都包含了驅(qū)動(dòng)提供商的名字,而在DriverManager類中通常是這么做的。如果數(shù)據(jù)源要移植到另一個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)中,代碼也很容易做修改。所需要做的修改只是更改DataSource的相關(guān)的屬性。而使用DataSource對(duì)象的代碼不需要做任何改動(dòng)。
      由系統(tǒng)管理員或者有相應(yīng)權(quán)限的人來(lái)配置DataSource對(duì)象。配置DataSource,包括設(shè)定DataSource的屬性,然后將它注冊(cè)到JNDI名字服務(wù)中去。在注冊(cè)DataSource對(duì)象的的過(guò)程中,系統(tǒng)管理員需要把DataSource對(duì)象和一個(gè)邏輯名字關(guān)聯(lián)起來(lái)。名字可以是任意的,通常取成能代表數(shù)據(jù)源并且容易記住的名字。在下面的例子中,名字起為:InventoryDB,按照慣例,邏輯名字通常都在jdbc的子上下文中。這樣,邏輯名字的全名就是:jdbc/ InventoryDB。
      一旦配置好了數(shù)據(jù)源對(duì)象,應(yīng)用程序設(shè)計(jì)者就可以用它來(lái)產(chǎn)生一個(gè)與數(shù)據(jù)源的連接。下面的代碼片段示例了如何用JNDI上下文獲得一個(gè)一個(gè)數(shù)據(jù)源對(duì)象,然后如何用數(shù)據(jù)源對(duì)象產(chǎn)生一個(gè)與數(shù)據(jù)源的連接。開始的兩行用的是JNDI API,第三行用的才是JDBC的API:
       Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("jdbc/InventoryDB");Connection con = ds.getConnection("myPassword", "myUserName");
      在一個(gè)基本的DataSource實(shí)現(xiàn)中,DataSource.getConnection方法返回的Connection對(duì)象和用DriverManager.getConnection方法返回的Connection對(duì)象是一樣的。因?yàn)镈ataSource提供的方便性,我們推薦使用DataSource對(duì)象來(lái)得到一個(gè)Connection對(duì)象。我們希望所以的基于JDBC2.0技術(shù)的數(shù)據(jù)庫(kù)驅(qū)動(dòng)都包含一個(gè)基本的DataSource的實(shí)現(xiàn),這樣就可以在應(yīng)用程序中很容易的使用它。
      對(duì)于普通的應(yīng)用程序設(shè)計(jì)者,是否使用DataSource對(duì)象只是一個(gè)選擇問(wèn)題。但是,對(duì)于那些需要用的連接池或者分布式的事務(wù)的應(yīng)用程序設(shè)計(jì)者來(lái)說(shuō),就必須使用DataSource對(duì)象來(lái)獲得Connection,原因在下面我們會(huì)提到。
       二、Connection pooling(連接池):
      連接池是這么一種機(jī)制,當(dāng)應(yīng)用程序關(guān)閉一個(gè)Connection的時(shí)候,這個(gè)連接被回收,而不是被destroy,因?yàn)榻⒁粋€(gè)連接是一個(gè)很費(fèi)資源的操作。如果能把回收的連接重新利用,會(huì)減少新創(chuàng)建連接的數(shù)目,顯著的提高運(yùn)行的性能。
      假設(shè)應(yīng)用程序需要建立到一個(gè)名字為EmpolyeeDB的DataSource的連接。使用連接池得到連接的代碼如下:
       Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("jdbc/EmployeeDB");Connection con = ds.getConnection("myPassword", "myUserName");除了邏輯名字以外,我們發(fā)現(xiàn)其代碼和上面舉的例子的代碼是一樣的。邏輯名字不同,就可以連接到不同的數(shù)據(jù)庫(kù)。DataSource對(duì)象的getConnection方法返回的Connection是否是一個(gè)連接池中的連接完全取決于DataSource對(duì)象的實(shí)現(xiàn)方法。如果DataSource對(duì)象實(shí)現(xiàn)與一個(gè)支持連接池的中間層的服務(wù)器一起工作,DataSource對(duì)象就會(huì)自動(dòng)的返回連接池中的連接,這個(gè)連接也是可以重復(fù)利用的。
      是否使用連接池獲得一個(gè)連接,在應(yīng)用程序的代碼上是看不出不同的。在使用這個(gè)Connection連接上也沒(méi)有什么不一樣的地方,唯一的不同是在java的finally語(yǔ)句塊中來(lái)關(guān)閉一個(gè)連接。在finally中關(guān)閉連接是一個(gè)好的編程習(xí)慣。這樣,即使方法拋出異常,Connection也會(huì)被關(guān)閉并回收到連接池中去。代碼應(yīng)該如下所示:
      try{…
      }catch(){…
      }finally{ if(con!=null)con.close();}
      三、分布式事務(wù):
      獲得一個(gè)用來(lái)支持分布式事務(wù)的連接與獲得連接池中的連接是很相似的。同樣,不同之處在于DataSource的實(shí)現(xiàn)上的不同,而不是在應(yīng)用程序中獲得連接的方式上有什么不同。假設(shè)DataSource的實(shí)現(xiàn)可以與支持分布式事務(wù)中間層服務(wù)器一起工作,得到連接的代碼還是如下所示:
       Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("jdbc/EmployeeDB"); Connection con = ds.getConnection("myPassword", "myUserName");由于性能上的原因,如果一個(gè)DataSource能夠支持分布式的事務(wù),它同樣也可以支持連接池管理。
      從應(yīng)用程序設(shè)計(jì)者的觀點(diǎn)來(lái)看。是否支持分布式的事務(wù)的連接對(duì)它來(lái)說(shuō)沒(méi)什么不同,唯一的不同是在事務(wù)的邊界上(開始一個(gè)事務(wù)的地方和結(jié)束一個(gè)事務(wù)的地方),開始一個(gè)事務(wù)或者結(jié)束一個(gè)事務(wù)都是由事務(wù)服務(wù)器來(lái)控制的。應(yīng)用程序不應(yīng)該做任何可能妨礙服務(wù)的事情。應(yīng)用程序不能夠直接調(diào)用事務(wù)提交commit或者回滾rollback操作,也不能夠使用事務(wù)的自動(dòng)提交模式auto-commit mode(在數(shù)據(jù)庫(kù)操作完成的時(shí)候自動(dòng)的調(diào)用commit或者rollback)。 
     
    在一個(gè)連接參與了分布式事務(wù)的時(shí)候,下面的代碼是你不能做的(con表示支持分布式事務(wù)的連接Connection)。
      con.commit();或者con.rollback();或者con.setAutoCommit(true);對(duì)于通常的Connection來(lái)說(shuō),缺省的是auto-commit模式。而對(duì)于支持分布式事務(wù)的Connection來(lái)說(shuō),缺省不是auto-commit模式。注意,即使Connection是支持事務(wù)的,它也可以用于沒(méi)有事務(wù)的情況。關(guān)于事務(wù)邊界的限制只是是對(duì)分布式事務(wù)的情況下才成立的。
      配置支持連接池的DataSource的時(shí)候,涉及到配置ConnectionPoolDataSource對(duì)象,這個(gè)對(duì)象是三層體系結(jié)構(gòu)中的中間層來(lái)管理連接池的。同樣的,在配置支持分布式事務(wù)的時(shí)候,需要配置XADataSource,XADataSource是中間層用來(lái)管理分布式事物的對(duì)象。ConnectionPoolDataSource和XADataSource是由驅(qū)動(dòng)提供商提供的,對(duì)應(yīng)用程序的設(shè)計(jì)者來(lái)說(shuō)是透明的。和基本的DataSource一樣,系統(tǒng)管理員來(lái)配置ConnectionPoolDataSource和XADataSource對(duì)象。
      四、結(jié)果集(RowSet接口):
      結(jié)果集對(duì)象是一行行數(shù)據(jù)的容器。根據(jù)其目的,可以通過(guò)多種方法實(shí)現(xiàn)。RowSet及其相關(guān)的接口與JDBC2.0的標(biāo)準(zhǔn)擴(kuò)展API有點(diǎn)不同,他們并不是驅(qū)動(dòng)的一部分,RowSet是在驅(qū)動(dòng)的上層實(shí)現(xiàn)的,可以由其它的任何人來(lái)實(shí)現(xiàn)他們。
      任何類型的rowset都實(shí)現(xiàn)了RowSet接口,RowSet接口擴(kuò)展了ResultSet接口。這樣RowSet對(duì)象就有了ResultSet對(duì)象所有的功能。能夠通過(guò)getXXX方法得到數(shù)據(jù)庫(kù)中的某列值,通過(guò)updateXXX方法可以修改某列值,可以移動(dòng)光標(biāo),是當(dāng)前行變?yōu)榱硪恍小?
      當(dāng)然,我們更感興趣的是RowSet接口提供的新的功能。作為一個(gè)JavaBean組件,RowSet對(duì)象可以增加或者刪除一個(gè)listener(監(jiān)聽者),可以get或者set其屬性值,這些屬性中,有一個(gè)是字符串,表示一個(gè)對(duì)數(shù)據(jù)庫(kù)Query請(qǐng)求,RowSet接口定義了設(shè)定參數(shù)的方法,也提供了執(zhí)行這個(gè)請(qǐng)求的方法。這意味著RowSet對(duì)象能夠執(zhí)行查詢請(qǐng)求,可以根據(jù)它產(chǎn)生的結(jié)果集進(jìn)行計(jì)算。同樣,RowSet也可以根據(jù)任何表格數(shù)據(jù)源進(jìn)行計(jì)算,所以,它不局限于關(guān)系數(shù)據(jù)庫(kù)。
      從數(shù)據(jù)源得到數(shù)據(jù)之后,RowSet對(duì)象可以和數(shù)據(jù)源斷開連接,rowset也可以被序列化。這樣,RowSet就可以通過(guò)網(wǎng)絡(luò)傳遞給瘦客戶端。
      RowSet可以被重新連接到數(shù)據(jù)源,這樣,做的修改就可以存回到數(shù)據(jù)源中去。如果產(chǎn)生了一個(gè)listener,當(dāng)RowSet的當(dāng)前行移動(dòng),或者數(shù)據(jù)被修改的時(shí)候,監(jiān)聽者就會(huì)收到通知。例如,圖形用戶界面組件可以注冊(cè)成為監(jiān)聽者,當(dāng)RowSet更改的時(shí)候,圖形用戶界面接到通知,就可以修改界面,來(lái)符合它所表示的RowSet。
      根據(jù)不同的需要,RowSet接口可以通過(guò)多種方法來(lái)實(shí)現(xiàn)。Java software已經(jīng)寫了一個(gè)CachedRowSet實(shí)現(xiàn),從http://developer.java.sun.com/developer/earlyAccess/crs/index.html中可以得到這個(gè)實(shí)現(xiàn)。
      與CachedRowSet類不樣的是,JDBCRowSet類總是保持一個(gè)和數(shù)據(jù)源的連接。這樣,在ResultSet外圍簡(jiǎn)單到加了一層,是基于JDBC技術(shù)的驅(qū)動(dòng)看起來(lái)象是一個(gè)簡(jiǎn)單的JavaBean組件一樣。

      總結(jié):JDBC2.0標(biāo)準(zhǔn)擴(kuò)展API通過(guò)見DataSource注冊(cè)到JNDI名字服務(wù)上,將JDBC技術(shù)擴(kuò)展為一個(gè)全新的概念。使應(yīng)用程序的代碼更加精巧,易于控制。新的API支持了連接池,支持分布式的事務(wù)。最后,還使java應(yīng)用程序可以在網(wǎng)絡(luò)上傳播結(jié)果集,是不可以滾動(dòng)的ResultSet變成了可以滾動(dòng)的RowSet。
    posted @ 2008-04-21 08:58 vesung 閱讀(3256) | 評(píng)論 (0)編輯 收藏

    JDBC 2.0 API被劃分為兩部分:JDBC 2.0核心API和JDBC 2.0標(biāo)準(zhǔn)擴(kuò)展API。核心API在java.sql里面。這是原來(lái)的版本就實(shí)現(xiàn)了的基本的功能。標(biāo)準(zhǔn)擴(kuò)展API在javax.sql里面。由JDBC2.0規(guī)范新規(guī)定的一些接口在這里面。當(dāng)然,JDBC2.0也對(duì)原來(lái)版本的java.sql核心做了一些改動(dòng)。不過(guò)不是很大。原來(lái)JDBC1.0的程序可以不加修改的在JDBC2.0上運(yùn)行。這是Java的一貫的良好的作風(fēng)。最新的JDBC包可以從sun公司的網(wǎng)站上下載。 
      JDBC2.0的擴(kuò)展API增加了一些數(shù)據(jù)訪問(wèn)和數(shù)據(jù)源訪問(wèn)的重大的功能。這中間有一些是主要用來(lái)做企業(yè)計(jì)算的。用JDBC2.0的新的擴(kuò)展包,JDBC提供了一個(gè)從JAVA2平臺(tái)的通用的數(shù)據(jù)訪問(wèn)的方法。
      首先,我們來(lái)看看JDBC標(biāo)準(zhǔn)擴(kuò)展的API怎樣來(lái)和JDBC2.0結(jié)合在一起的。JDBC2.0包括兩個(gè)包:
      1、 java.sql包,個(gè)包里面是JDBC2.0的核心API。它包括了原來(lái)的JDBC API(JDBC 1.0版本),再加上一些新的2.0版本的API。這個(gè)包在Java 2 Platform SDK里面有。
      2、 javax.sql包,這里面是JDBC2.0的標(biāo)準(zhǔn)擴(kuò)展API。這個(gè)包是一個(gè)全新的,在Java 2 Platform SDK, Enterprise Edition里面單獨(dú)提供。
      JDBC2.0的核心API包括了JDBC1.0的API,并在此基礎(chǔ)上增加了一些功能,對(duì)某些性能做了增強(qiáng)。使java語(yǔ)言在數(shù)據(jù)庫(kù)計(jì)算的前端提供了統(tǒng)一的數(shù)據(jù)訪問(wèn)方法,效率也得到了提高。
      JDBC是向后兼容的,JDBC1.0的程序可以不加修改的運(yùn)行在JDBC2.0上。但是,假如程序中用到了JDBC2.0的新特性,就必須要運(yùn)行在JDBC2.0版本上。
      概括的來(lái)說(shuō),JDBC核心API的新特性在兩個(gè)方面做了工作。一個(gè)是支持一些新的功能,另一個(gè)就是支持SQL3的數(shù)據(jù)類型。
      1、 在支持新功能方面:包括結(jié)果集可以向后滾動(dòng),批量的更新數(shù)據(jù)。另外,還提供了UNICODE字符集的字符流操作。
      2、 在支持SQL3的數(shù)據(jù)類型方面:包括新的SQL3數(shù)據(jù)類型,增加了對(duì)持久性對(duì)象的存貯。
      為了對(duì)數(shù)據(jù)的存取,操作更加方便,JDBC的新特性是應(yīng)用程序的設(shè)計(jì)更容易了。例如:數(shù)據(jù)塊的操作能夠顯著的提高數(shù)據(jù)庫(kù)訪問(wèn)的性能。新增加的BLOB, CLOB,和數(shù)組接口能夠是應(yīng)用程序操作大塊的數(shù)據(jù)類型,而不必客戶端在存貯之前進(jìn)行其它的處理。這樣,就顯著的提高了內(nèi)存的使用效率。
       下面我們來(lái)介紹JDBC2.0的標(biāo)準(zhǔn)擴(kuò)展API。標(biāo)準(zhǔn)擴(kuò)展API分為如下幾個(gè)方面:
      1、 DataSource接口:和Java名字目錄服務(wù)(JNDI)一起工作的數(shù)據(jù)源接口。它提供了對(duì)數(shù) 吹囊恢指玫牧臃椒ā?br>;  2、 Connection pooling(連接池):可以重復(fù)使用連接,而不是對(duì)每個(gè)請(qǐng)求都使用一個(gè)新的連接。
      3、 Distrubute transaction(分布式的事務(wù)):在一個(gè)事務(wù)中涉及到了多個(gè)數(shù)據(jù)庫(kù)服務(wù)器。
      4、 Rowsets:JavaBean組件包含了結(jié)果集,主要用來(lái)將數(shù)據(jù)傳給瘦客戶,或者提供一個(gè)可以滾動(dòng)的結(jié)果集。
    posted @ 2008-04-10 11:29 vesung 閱讀(713) | 評(píng)論 (0)編輯 收藏

    1.$("#idName")
        獲取元素id為idName的元素 
     如:html
    <a id="myLinck" href="#"></a>
    $("#myLinck") 會(huì)返回<a id="myLinck"></a>元素
    -----------------------------------
    2.$(".className")
        獲取元素class屬性為className的元素集合
    如:html
    <a class="a1" href="#">1</a>
    <a class="a1" href="#">2</a>
    <a class="a2" href="#">3</a>
    $(".a1")返回[<a class="a1" href="#">1</a>,<a class="a1" href="#">2</a>]
    ---------------------------------------
    3.$("input[@type='text']")
        獲取所有type=text的input元素
    如:html
    <input type='text'/>
    <input type='text/>
    <input type='checkbox'/>
    $("input[@type='text']")返回[<input type='text'/><input type='text/>]
    posted @ 2008-03-24 17:53 vesung 閱讀(539) | 評(píng)論 (0)編輯 收藏

    普通的dom對(duì)象一般可以通過(guò)$()轉(zhuǎn)換成jquery對(duì)象。
    如:$(document.getElementById("msg"))則為jquery對(duì)象,可以使用jquery的方法。
    由于jquery對(duì)象本身是一個(gè)集合。所以如果jquery對(duì)象要轉(zhuǎn)換為dom對(duì)象則必須取出其中的某一項(xiàng),一般可通過(guò)索引取出。
    如:$("#msg")[0],$("div").eq(1)[0],$("div").get()[1],$("td")[5]這些都是dom對(duì)象,可以使用dom中的方法,但不能再使用Jquery的方法。
    以下幾種寫法都是正確的: 字串8

    $("#msg").html();
    $("#msg")[0].innerHTML;
    $("#msg").eq(0)[0].innerHTML;
    $("#msg").get(0).innerHTML;

    posted @ 2008-03-24 17:38 vesung 閱讀(693) | 評(píng)論 (0)編輯 收藏

    為了支持 AJAX 功能。這個(gè)包定義了 Ajax.Request 類。

    假如你有一個(gè)應(yīng)用程序可以通過(guò)url http://yoursever/app/get_sales?empID=1234&year=1998與服務(wù)器通信。它返回下面這樣的XML 響應(yīng)。

     

     

    <?xml version="1.0" encoding="utf-8" ?>
    <ajax-response>
        
    <response type="object" id="productDetails">
            
    <monthly-sales>
                
    <employee-sales>
                    
    <employee-id>1234</employee-id>
                    
    <year-month>1998-01</year-month>
                    
    <sales>$8,115.36</sales>
                
    </employee-sales>
                
    <employee-sales>
                    
    <employee-id>1234</employee-id>
                    
    <year-month>1998-02</year-month>
                    
    <sales>$11,147.51</sales>
                
    </employee-sales>
            
    </monthly-sales>
        
    </response>
    </ajax-response>

     

    Ajax.Request對(duì)象和服務(wù)器通信并且得到這段XML是非常簡(jiǎn)單的。下面的例子演示了它是如何完成的。

     

    <script>
        
    function searchSales()
        
    {
            
    var empID = $F('lstEmployees');
            
    var y = $F('lstYears');
            
    var url = 'http://yoursever/app/get_sales';
            var pars = 'empID=+ empID + '&year=+ y;
           
    var myAjax = new Ajax.Request(
                        url,
                        
    {method: 'get', parameters: pars, onComplete: showResponse}
                        );

        }


        
    function showResponse(originalRequest)
        
    {
            
    //put returned XML in the textarea
            $('result').value = originalRequest.responseText;
        }

    </script>

    <select id="lstEmployees" size="10" onchange="searchSales()">
        
    <option value="5">Buchanan, Steven</option>
        
    <option value="8">Callahan, Laura</option>
        
    <option value="1">Davolio, Nancy</option>
    </select>
    <select id="lstYears" size="3" onchange="searchSales()">
        
    <option selected="selected" value="1996">1996</option>
        
    <option value="1997">1997</option>
        
    <option value="1998">1998</option>
    </select>
    <br><textarea id=result cols=60 rows=10 ></textarea>


    你看到傳入 Ajax.Request構(gòu)造方法的第二個(gè)對(duì)象了嗎? 參數(shù){method: 'get', parameters: pars, onComplete: showResponse} 表示一個(gè)匿名對(duì)象的真實(shí)寫法。他表示你傳入的這個(gè)對(duì)象有一個(gè)名為 method 值為 'get'的屬性,另一個(gè)屬性名為 parameters 包含HTTP請(qǐng)求的查詢字符串,和一個(gè)onComplete 屬性/方法包含函數(shù)showResponse

    還有一些其它的屬性可以在這個(gè)對(duì)象里面定義和設(shè)置,如 asynchronous,可以為truefalse 來(lái)決定AJAX對(duì)服務(wù)器的調(diào)用是否是異步的(默認(rèn)值是 true)。

    這個(gè)參數(shù)定義AJAX調(diào)用的選項(xiàng)。在我們的例子中,在第一個(gè)參數(shù)通過(guò)HTTP GET命令請(qǐng)求那個(gè)url,傳入了變量 pars包含的查詢字符串, Ajax.Request 對(duì)象在它完成接收響應(yīng)的時(shí)候?qū)⒄{(diào)用showResponse 方法。

    也許你知道, XMLHttpRequest在HTTP請(qǐng)求期間將報(bào)告進(jìn)度情況。這個(gè)進(jìn)度被描述為四個(gè)不同階段:Loading, Loaded, Interactive, 或 Complete。你可以使 Ajax.Request 對(duì)象在任何階段調(diào)用自定義方法 ,Complete 是最常用的一個(gè)。想調(diào)用自定義的方法只需要簡(jiǎn)單的在請(qǐng)求的選項(xiàng)參數(shù)中的名為 onXXXXX 屬性/方法中提供自定義的方法對(duì)象。 就像我們例子中的 onComplete 。你傳入的方法將會(huì)被用一個(gè)參數(shù)調(diào)用,這個(gè)參數(shù)是 XMLHttpRequest 對(duì)象自己。你將會(huì)用這個(gè)對(duì)象去得到返回的數(shù)據(jù)并且或許檢查包含有在這次調(diào)用中的HTTP結(jié)果代碼的 status 屬性。

    還有另外兩個(gè)有用的選項(xiàng)用來(lái)處理結(jié)果。我們可以在onSuccess 選項(xiàng)處傳入一個(gè)方法,當(dāng)AJAX無(wú)誤的執(zhí)行完后調(diào)用, 相反的,也可以在onFailure選項(xiàng)處傳入一個(gè)方法,當(dāng)服務(wù)器端出現(xiàn)錯(cuò)誤時(shí)調(diào)用。正如onXXXXX 選項(xiàng)傳入的方法一樣,這兩個(gè)在被調(diào)用的時(shí)候也傳入一個(gè)帶有AJAX請(qǐng)求的XMLHttpRequest對(duì)象。

    我們的例子沒(méi)有用任何有趣的方式處理這個(gè) XML響應(yīng), 我們只是把這段XML放進(jìn)了一個(gè)文本域里面。對(duì)這個(gè)響應(yīng)的一個(gè)典型的應(yīng)用很可能就是找到其中的想要的信息,然后更新頁(yè)面中的某些元素, 或者甚至可能做某些XSLT轉(zhuǎn)換而在頁(yè)面中產(chǎn)生一些HTML。
    完。
    摘自:https://compdoc2cn.dev.java.net

    posted @ 2008-03-21 17:45 vesung 閱讀(879) | 評(píng)論 (0)編輯 收藏

    ? Fed救市之舉令中國(guó)控制通脹難度加大 (原文地址)
            在援救完貝爾斯登公司(Bear Stearns Cos.)后,美國(guó)聯(lián)邦儲(chǔ)備委員會(huì)(Fed)主席貝南克(Ben Bernanke)今晚可能會(huì)再次送出減息良藥。(編者:最新消息,F(xiàn)ed周二已宣布將關(guān)鍵利率下調(diào)75個(gè)基點(diǎn)。)而這對(duì)于香港和中國(guó)大陸市場(chǎng)來(lái)說(shuō)又意味著什么呢?對(duì)正面臨著十幾年來(lái)最高通貨膨脹率的中國(guó)貨幣政策制定者而言,F(xiàn)ed的“靈丹”卻可能產(chǎn)生副作用。但是,只要中國(guó)繼續(xù)堅(jiān)持現(xiàn)行的匯率制度,就不得不生生吞下這顆藥丸,而且還必須硬著頭皮去應(yīng)對(duì)。中國(guó)央行(People's Bank of China)加息而Fed大幅降息,產(chǎn)生的直接影響就是中美利差進(jìn)一步擴(kuò)大,使得熱錢問(wèn)題再次成為眾矢之的。上周公布的數(shù)據(jù)顯示,F(xiàn)ed 1月份的緊急降息造成中美貨幣市場(chǎng)利差達(dá)到了50個(gè)基點(diǎn),并使得流入中國(guó)大陸的外商直接投資規(guī)模進(jìn)一步增大。今年前兩個(gè)月流入中國(guó)大陸的外商直接投資較上年同期增長(zhǎng)了75%。這些外資到底是進(jìn)行商業(yè)投資還是純粹出于投機(jī)目的不得而知,不過(guò)可以肯定的一點(diǎn)是,中美利差的擴(kuò)大勢(shì)必會(huì)增強(qiáng)人民幣升值預(yù)期。上周五人民幣升至匯改以來(lái)最高水平,達(dá)到1美元兌人民幣7.0844元。
    .... ...
    ? Fed救市之舉令中國(guó)控制通脹難度加大 
    posted @ 2008-03-19 09:24 vesung 閱讀(292) | 評(píng)論 (0)編輯 收藏

    struts響應(yīng)用戶請(qǐng)求的工作流程:

    Request

    |
    V

    ActionServlet

    |

    如果不存在相應(yīng)的Action則否則返回error,流程結(jié)束

    |
    V

    創(chuàng)建ActionForm

    |

    進(jìn)行validatge校驗(yàn),如果沒(méi)有通過(guò)校驗(yàn)則返回error


    創(chuàng)建Action

    |
    V

    執(zhí)行Action的execute方法,并返回ActionForword對(duì)象

    |
    V

    return respose
    結(jié)束

     

     

    posted @ 2008-03-11 11:22 vesung 閱讀(744) | 評(píng)論 (1)編輯 收藏

         摘要: 文章來(lái)源:新浪網(wǎng)

    基于城鎮(zhèn)居民和農(nóng)村居民的人均純收入實(shí)現(xiàn)較大躍升的現(xiàn)實(shí),國(guó)務(wù)院總理溫家寶在今年的政府工作報(bào)告中特別強(qiáng)調(diào)了收入分配的問(wèn)題,“逐步提高居民收入在國(guó)民收入分配中的比重,提高勞動(dòng)報(bào)酬在初次分配中比重”。

      個(gè)中關(guān)鍵就是要“調(diào)整國(guó)民收入分配格局,深化收入分配制度改革。”并多渠道增加農(nóng)民收入,確保農(nóng)民工工資按時(shí)足額發(fā)放。還要“提高企業(yè)職工工資的水平,建立企業(yè)職工工資正常增長(zhǎng)和支付保障機(jī)制,……健全并落實(shí)最低工資制度。”

      同時(shí),改革國(guó)有企業(yè)工資總額管理辦法,加強(qiáng)對(duì)壟斷行業(yè)企業(yè)工資監(jiān)管。對(duì)此,勞動(dòng)和社會(huì)保障部勞動(dòng)工資司司長(zhǎng)邱小平表示,既要通過(guò)采取措施,促進(jìn)非壟斷行業(yè)的企業(yè)職工工資收入逐步提高;又要對(duì)壟斷行業(yè)的高收入采取措施,加以有效調(diào)控。
      閱讀全文
    posted @ 2008-03-06 08:57 vesung 閱讀(465) | 評(píng)論 (0)編輯 收藏

    主站蜘蛛池模板: 久久久久亚洲?V成人无码| a一级爱做片免费| 91麻豆国产免费观看| 毛片基地免费视频a| 亚洲国产午夜福利在线播放| 亚洲国产精品无码中文lv| 一级有奶水毛片免费看| 99在线视频免费观看视频 | 国产1000部成人免费视频| 国产美女在线精品免费观看| 亚洲精品视频在线观看免费| 1000部啪啪未满十八勿入免费| 一级毛片视频免费| 久久夜色精品国产亚洲av| 亚洲欧美日韩久久精品| 尤物永久免费AV无码网站| 九九久久国产精品免费热6| 野花高清在线观看免费3中文| 国产综合精品久久亚洲| 亚洲精品无码中文久久字幕| 国产美女做a免费视频软件| 国产精品亚洲а∨天堂2021| 国产精品亚洲产品一区二区三区| 国产免费无码一区二区| 亚洲国产一级在线观看| 中文字幕看片在线a免费| 全黄a免费一级毛片人人爱| 国产成人无码免费网站| 久久91亚洲精品中文字幕| 99久久久国产精品免费无卡顿| 亚洲欧洲无码一区二区三区| 亚洲成av人在片观看| 亚洲日本VA中文字幕久久道具| 亚洲福利视频一区二区| 黄色片免费在线观看| 亚洲一区AV无码少妇电影☆| 中文字幕免费视频| 美女被免费视频网站| 激情内射亚洲一区二区三区| 成人无码区免费视频观看| 99久久99这里只有免费的精品 |