隨筆-8  評論-19  文章-2  trackbacks-0
            2006年12月7日

          在WebWork 2.2.1中,在配置文件xwork.xml中新增加了了一個(gè)元素: default-action-ref,其實(shí)這個(gè)配置非常簡單,但是很多人不知道,所以簡單介紹一下.

          如果你在xwork.xml里面配置了default-action-ref,那么當(dāng)xwork中沒有找到對應(yīng)的action時(shí),默認(rèn)就會(huì)調(diào)用default-action-ref指定的action.

          官方的wiki文檔參考這里: http://wiki.opensymphony.com/display/WW/Action+configuration

          配置代碼如下:

           

          												<package name="myPackage" ....>
                      ...
                      <default-action-ref name="simpleViewResultAction">
                      <!--
                      An example of a default action that is just a simple class
                      that has 3 fields: successUrl, errorUrl, and inputUrl.  This action
                      parses the request url to set the result values.  In the normal case
                      it just renders velocity results of the same name as the requested url.
                      -->
                      <action name="simpleViewResultAction" class="SimpleViewResultAction">
                      <result type="velocity">${successUrl}</result>
                      
          <result name="error" type="velocity">${errorUrl}</result>
                      <result name="input" type="velocity">${inputUrl}</result>
                      
          </action>
          ... </package>

          但是要注意,一般一個(gè)package內(nèi)配置一個(gè),如果配置多個(gè),就無法預(yù)測結(jié)果了.

          注意上面的配置,第一個(gè)result的name屬性被省略了,webwork會(huì)認(rèn)為它是"SUCCESS".

          WebWork帶的例子里面就有default-action-ref的配置,可以參考.

          posted @ 2007-06-21 14:39 jie_java 閱讀(1238) | 評論 (0)編輯 收藏

          基本知識(shí)

          1.1 性能是什么

          在性能調(diào)優(yōu)之前,我們首先來了解一下性能是什么?關(guān)于性能,我想每個(gè)學(xué)習(xí)過 Java 的人都能列出幾點(diǎn),甚至可以夸夸其談。在《 Java TM Platform Performance 》一書中,定義了如下五個(gè)方面來作為評判性能的標(biāo)準(zhǔn):

          1) ????? 運(yùn)算的性能——哪一個(gè)算法的執(zhí)行性能最好?

          2) ????? 內(nèi)存的分配——程序運(yùn)行時(shí)需要耗費(fèi)多少內(nèi)存?

          3) ????? 啟動(dòng)的時(shí)間——程序啟動(dòng)需要多長時(shí)間?這在 Web 項(xiàng)目中的影響不大,但要注意部分程序需要部署或運(yùn)行在客戶端時(shí)的情形(比如 applet 程序)。

          4) ????? 程序的可伸縮性——在壓力負(fù)載的情況下,程序的性能如何?

          5) ????? 性能的感知——用戶在什么情況下會(huì)覺得程序的性能不好?

          以上五個(gè)方面,在具體的使用場景可以有選擇的去評判。至于這五方面的性能調(diào)優(yōu),在后續(xù)的章節(jié)中將會(huì)陸續(xù)的給以相應(yīng)的性能調(diào)優(yōu)策略。

          1.2 調(diào)優(yōu)的規(guī)則

          我們只需要關(guān)心對我們程序有影響,可以察覺到的性能問題,而不是每一個(gè)類中的每一個(gè)方法我們都需要想方設(shè)法的提高性能。如果程序的性能沒有達(dá)到我們所期望的要求,我們才需要考慮如何優(yōu)化性能。同樣的,晦澀的代碼雖然提高了程序的性能,但同時(shí)可能帶給我們的是維護(hù)的噩夢。我們需要折中的考慮以上兩種情況,使得程序的代碼是優(yōu)美的,并且運(yùn)行的足夠快,達(dá)到客戶所期望的性能要求。

          優(yōu)化代碼甚至?xí)?dǎo)致不良的結(jié)果, Donald Knuth (一位比較牛比較有影響的人物,具體是誰,我也忘了,誰知道,可以告訴我一下,謝謝!)曾說過,“ Premature optimization is the root of all evil” 。在開始性能調(diào)優(yōu)前,需要先指出不優(yōu)化代碼的一些理由。

          1) ????? 如果優(yōu)化的代碼已經(jīng)正常工作,優(yōu)化后可能會(huì)引入新的 bug

          2) ????? 優(yōu)化代碼趨向于使代碼更難理解和維護(hù);

          3) ????? 在一個(gè)平臺(tái)上優(yōu)化的代碼,在另一個(gè)平臺(tái)上可能更糟;

          4) ????? 花費(fèi)很多時(shí)間在代碼的優(yōu)化上,提高了很少的性能,卻導(dǎo)致了晦澀的代碼。

          確實(shí),在優(yōu)化前,我們必須認(rèn)真的考慮是否值得去優(yōu)化。

          1.3 調(diào)優(yōu)的步驟

          一般我們提高應(yīng)用程序的性能劃分為以下幾個(gè)步驟:

          1) ????? 明確應(yīng)用程序的性能指標(biāo),怎樣才符合期望的性能需求;

          2) ????? 在目標(biāo)平臺(tái)進(jìn)行測試;

          3) ????? 如果性能已經(jīng)達(dá)到性能指標(biāo), Stop

          4) ????? 查找性能瓶頸;

          5) ????? 修改性能瓶頸;

          6) ????? 返回到第 2 步。

          JDK 調(diào)優(yōu)

          2.1 選擇合適的 JDK 版本

          不同版本的 JDK ,甚至不同廠家的 JDK 可能都存在著很大的差異,對于性能優(yōu)化的程度不同。一般來說,盡可能選擇最新發(fā)布的穩(wěn)定的 JDK 版本。最新的穩(wěn)定的 JDK 版本相對以前的 JDK 版本都會(huì)做一些 bug 的修改和性能的優(yōu)化工作。

          2.2 垃圾收集 Java 堆的優(yōu)化

          垃圾收集就是自動(dòng)釋放不再被程序所使用的對象的過程。當(dāng)一個(gè)對象不再被程序所引用時(shí),它所引用的堆空間可以被回收,以便被后續(xù)的新對象所使用。垃圾收集器必須能夠斷定哪些對象是不再被引用的,并且能夠把它們所占據(jù)的堆空間釋放出來。如果對象不再被使用,但還有被程序所引用,這時(shí)是不能被垃圾收集器所回收的,此時(shí)就是所謂的“內(nèi)存泄漏”。監(jiān)控應(yīng)用程序是否發(fā)生了內(nèi)存泄漏,有一個(gè)非常優(yōu)秀的監(jiān)控工具推薦給大家—— Quest 公司的 JProbe 工具,使用它來觀察程序運(yùn)行期的內(nèi)存變化,并可產(chǎn)生內(nèi)存快照,從而分析并定位內(nèi)存泄漏的確切位置,可以精確定位到源碼內(nèi)。這個(gè)工具的使用我在后續(xù)的章節(jié)中還會(huì)做具體介紹。

          Java 堆是指在程序運(yùn)行時(shí)分配給對象生存的空間。通過 -mx/-Xmx -ms/-Xms 來設(shè)置起始堆的大小和最大堆的大小。根據(jù)自己 JDK 的版本和廠家決定使用 -mx -ms -Xmx -Xms Java 堆大小決定了垃圾回收的頻度和速度, Java 堆越大,垃圾回收的頻度越低,速度越慢。同理, Java 堆越小,垃圾回收的頻度越高,速度越快。要想設(shè)置比較理想的參數(shù),還是需要了解一些基礎(chǔ)知識(shí)的。

          Java 堆的最大值不能太大,這樣會(huì)造成系統(tǒng)內(nèi)存被頻繁的交換和分頁。所以最大內(nèi)存必須低于物理內(nèi)存減去其他應(yīng)用程序和進(jìn)程需要的內(nèi)存。而且堆設(shè)置的太大,造成垃圾回收的時(shí)間過長,這樣將得不償失,極大的影響程序的性能。以下是一些經(jīng)常使用的參數(shù)設(shè)置:

          1) ????? 設(shè)置 -Xms 等于 -XmX 的值;

          2) ????? 估計(jì)內(nèi)存中存活對象所占的空間的大小,設(shè)置 -Xms 等于此值, -Xmx 四倍于此值;

          3) ????? 設(shè)置 -Xms 等于 -Xmx 1/2 大小;

          4) ????? 設(shè)置 -Xms 介于 -Xmx 1/10 1/4 之間;

          5) ????? 使用默認(rèn)的設(shè)置。

          大家需要根據(jù)自己的運(yùn)行程序的具體使用場景,來確定最適合自己的參數(shù)設(shè)置。

          除了 -Xms -Xmx 兩個(gè)最重要的參數(shù)外,還有很多可能會(huì)用到的參數(shù),這些參數(shù)通常強(qiáng)烈的依賴于垃圾收集的算法,所以可能因?yàn)?/span> JDK 的版本和廠家而有所不同。但這些參數(shù)一般在 Web 開發(fā)中用的比較少,我就不做詳細(xì)介紹了。在實(shí)際的應(yīng)用中注意設(shè)置 -Xms -Xmx 使其盡可能的優(yōu)化應(yīng)用程序就行了。對于性能要求很高的程序,就需要自己再多研究研究 Java 虛擬機(jī)和垃圾收集算法的機(jī)制了。可以看看曹曉鋼翻譯的《深入 Java 虛擬機(jī)》一書。?


          ?
          posted @ 2007-03-19 10:12 jie_java 閱讀(363) | 評論 (0)編輯 收藏
          1、放棄
            有舍才有得!
            把握的反面就是放棄,選擇了一個(gè)機(jī)會(huì),就等于放棄了其它所有的可能。當(dāng)新的機(jī)會(huì)擺在面前的時(shí)候,敢于放棄已經(jīng)獲得的一切,這不是功虧一簣,這不是半途而廢,這是為了謀求更大的發(fā)展空間;或者什么都不為,只因?yàn)橄矚g這樣做,因?yàn)椋贻p就是最大的機(jī)會(huì)。不斷嘗試新的挑戰(zhàn),會(huì)讓人生更豐富!
            人,只有在三十歲之前才會(huì)有這個(gè)膽量,有這雄厚的資本,才能具備這個(gè)資格。
            2、失戀
            不是不在乎,是在乎不起。如果沉迷其中的悲傷,將錯(cuò)失所有更美好的一切!
            三十歲前最怕失去的,不是已經(jīng)擁有的東西,而是失去夢想。愛情如果只是一個(gè)過程,那么正是這個(gè)年齡應(yīng)當(dāng)經(jīng)歷的,如果要承擔(dān)結(jié)果,三十歲以后,可能會(huì)更有能力,更有資格。
            其實(shí),三十歲之前,我們要做的事情很多,稍縱即逝,過久地沉溺在已經(jīng)干涸的愛河的河床中,與這個(gè)年齡應(yīng)擁有的熱情活力的生命節(jié)奏不合。
            3、離婚
            不是不在乎,是重新找到真正的幸福一切還來得及。
            一位三十八歲的女友與老公結(jié)婚十五年,冷戰(zhàn)十三年,終于分手了。她說:"如果說后來不愿意離婚是為了孩子,那他第一次提出離婚我沒有同意,現(xiàn)在想來真不知道為什么。如果那個(gè)時(shí)候早分手,我的生活絕不會(huì)是今天這個(gè)樣子。現(xiàn)在再重新開始,總覺得一切都晚了。
            4、漂泊
            漂泊不是一種不幸,而是一種資格。趁著沒有家室拖累,趁著身體健康,此時(shí)不飄何時(shí)飄?相信已婚的人一定很認(rèn)同這句話。也只有漂泊過的人,才懂得珍惜日后安定的幸福。
            當(dāng)然,漂泊的不一定是身體,也許只是幻想和夢境。新世紀(jì)的時(shí)尚領(lǐng)袖是飄浮的一代,渴望漂泊的人唯一不飄的是那顆心。
            5、失業(yè)
            三十歲以前,就嘗到失業(yè)的滋味當(dāng)然是一件不幸的事,但不一定是壞事,它同時(shí)可以讓你更懂人情事故,體會(huì)人情冷暖。
            三十歲之前,就過早地固定在一個(gè)職業(yè)上,終此一生也許才是最大的不幸。失業(yè)也許讓你想起埋藏很久而塵封的夢想,也許會(huì)喚醒連你自己都從未知道的潛能。也許你本來就沒什么夢想,這時(shí)候也會(huì)逼著你去做夢。
            6、時(shí)尚
            不要追趕時(shí)尚,因?yàn)檫^多花費(fèi)與奢侈可能導(dǎo)致生活拮據(jù)或是信用破產(chǎn)。
            按說青年人應(yīng)該是最時(shí)尚的,但是獨(dú)立思考和個(gè)性生活更重要。在這個(gè)物質(zhì)社會(huì),其實(shí)對時(shí)尚的追求早已經(jīng)成為對金錢的追求。今天,時(shí)尚是物欲和世俗的同義語。
            7、格調(diào)
            這是屬于雅痞的東西,追求格調(diào)就是他們的專利。
            他們說,有格調(diào)要滿足四大要件:智能、素養(yǎng)、自信和金錢。格調(diào)就是把〝高尚〞理解成穿著、氣質(zhì)、愛好的品位和室內(nèi)裝潢。
            也就是大老粗只會(huì)表現(xiàn)談吐的庸俗,〝雅痞〞們已經(jīng)有能力庸俗他們的心靈了。主流觀念倒不是非要另類,另類已經(jīng)成為年輕人觀念的主流了,在今天,老土倒顯得另類。關(guān)鍵是當(dāng)今社會(huì)是一個(gè)創(chuàng)造觀念的時(shí)代,而不是一個(gè)固守陳舊觀念的時(shí)代。
            8、評價(jià)
            我們最不應(yīng)該做出的犧牲,就是因?yàn)閯e人的評價(jià)而改變自我!因?yàn)槟切δ阒甘之嬆_的人,其實(shí)四根手指頭正指著自己,惶惑的不知道他們遵從的規(guī)則是什么。
            千萬不要只遵從規(guī)矩做事,規(guī)矩還在創(chuàng)造之中,要根據(jù)自己的判斷做每一件事,雖然這樣會(huì)麻煩一點(diǎn)。
            9、幼稚
            不要怕人說我們幼稚,這正說明你還年輕,還充滿活力,正享受幸福的人生。〝成熟〞是個(gè)嚇人的詞兒,也是個(gè)害人的詞兒。成熟和幼稚是對一個(gè)人最大而無當(dāng)、最不負(fù)責(zé)任、最沒用的概括。
            那些庸人,絕不會(huì)有人說他們幼稚。不信,到哪天你被生活壓得老氣橫秋,暮氣沉沉的時(shí)候,人們一定會(huì)說你成熟了,你就會(huì)知道〝成熟〞是個(gè)什么東西。
            10、不適應(yīng)
            在一首搖滾?有這么一句:這個(gè)城市改變了我,這個(gè)城市不需要我。不要盲目地適應(yīng)你生存的環(huán)境,因?yàn)楹芸赡苓@環(huán)境自身已經(jīng)不適應(yīng)這個(gè)社會(huì)的發(fā)展了。
            11、失敗
            我的老師曾經(jīng)跟我說,一個(gè)人起碼要在感情上失戀一次,在事業(yè)上失敗一次,在選擇上失誤一次,才能長大。不要說失敗是成功之母那樣的老話,失敗來得越早越好,要是三十歲,四十歲之后再經(jīng)歷失敗,有些事,很可能就來不及了。
            12、錯(cuò)誤
            不要怕跌倒!犯錯(cuò),是沒有經(jīng)驗(yàn)的年輕人的專利。
            13、淺薄
            如果每看一次《鐵達(dá)尼號》就流一次眼淚,每看一次豆豆先生就笑得直不起腰,就會(huì)有人笑你淺薄。其實(shí)那只能說明你的神經(jīng)依舊非常敏銳,對哪怕非常微弱的刺激都會(huì)迅速做出適應(yīng)的反應(yīng);等你的感覺遲鈍了,人們就會(huì)說你深沉了。
            14、明星
            不是不必在乎,是不能在乎。
            明星在商品社會(huì)是一種消費(fèi)品,花了錢,聽了歌,看了電影,明星們的表現(xiàn)再好,不過是物超所值而己,也不值得崇拜呀?
            就像你在地?cái)偵匣ㄎ迨畨K錢買的仿冒皮包,別人都猜是正牌貨,物超所值了吧?你就崇拜上這個(gè)包包了嗎?
            15、代價(jià)
            不是不計(jì)代價(jià),而是要明白做任何事都要付出代價(jià)。對我們這個(gè)年齡的人來說,這絕不是一句廢話。否則,要到三十歲的時(shí)候才會(huì)明白自己曾經(jīng)付出了多少代價(jià),卻不明白為什么付出,更不明白自己得到了多少,得到什么。
            16、孤獨(dú)
            不要怕一個(gè)人,這是為自由付出的代價(jià)。
            17、失意
            包括感情上的,事業(yè)上的,也許僅僅是今天花了冤枉錢沒買到喜歡的東西,朋友家高朋滿座自己卻插不上一句話。過分在乎失意的感受,不是拿命運(yùn)的捉弄來捉弄自己,就是拿別人的錯(cuò)誤來懲罰自己。
            18、缺陷
            也許你個(gè)子矮,也許你長得不好看,也許你的嗓音像唐老鴨……那么你的優(yōu)勢就是:你不會(huì)被自己表面的淺薄的亮點(diǎn)所耽擱,少花一些時(shí)間,少走一些彎,直接發(fā)現(xiàn)你內(nèi)在的優(yōu)勢,直接挖掘自己深層的潛能。
            19、誤會(huì)
            如果出于惡意,那么解釋也沒有用;如果出于善意,就不需要解釋。專門說到〝誤會(huì)〞倒不是因?yàn)橐粋€(gè)人在三十歲之前被人誤會(huì)的時(shí)候更多,而是這個(gè)年齡的人想不開的時(shí)候更多。
            20、謠言
            這是一種傳染病,沉默是最好的疫苗。除非你能找出傳染源,否則解釋恰恰會(huì)成為病毒傳播最理想的條件。
            21、瘋狂
            這是年輕人最好的心理調(diào)適,只能說明你精力旺盛,身心健康。說你〝瘋狂〞是某些生活壓抑、心力交瘁的中老年人惡意的評價(jià),他們就像一部年久失修的機(jī)器,最需要調(diào)試,但只能微調(diào),一次大修就會(huì)讓他們完全報(bào)廢。
            穩(wěn)定三十歲之前就在乎穩(wěn)定的生活,那只有兩種可能,要么就是中了彩票,要么就是未老先衰。
            22、壓力
            中年人能夠承受多大壓力檢驗(yàn)的是他的韌性;年輕人能承受多大壓力,煥發(fā)的是他的潛能。
            23、出國
            對待出國的態(tài)度應(yīng)該像對待愛情一樣,努力爭取成敗隨緣。
            24、薪水
            給有遠(yuǎn)見的你,如果只是給人打工,薪水再高也高不到哪兒去。所以不要太計(jì)較你從工作中得到多少錢,而是在三十歲之前,機(jī)會(huì)遠(yuǎn)比金錢重要,事業(yè)遠(yuǎn)比金錢重要,將來遠(yuǎn)比金錢重要。
            對大多數(shù)人來說,三十歲之前工作的首要目標(biāo)絕不是掙錢,而是掙未來。
            25、存款
            不要在意有沒有存款,倒不一定是因?yàn)槲覀冨X少,年輕人現(xiàn)在誰都知道錢是有生命的。
            到處都是信用貸,機(jī)會(huì)這么多,條件有都很好,可以拿錢去投資,拿錢去“充電”。錢只有在它流通的過程中才是錢,否則只是一疊世界上質(zhì)量最好的廢紙。
            26、房子
            除非買房子是為了升值,或是你結(jié)婚,不然大可不必為了房子擠破頭的傷腦筋。
            有個(gè)男子,家在外地,大學(xué)畢業(yè)之后,家人就替他買了一間房子。他曾經(jīng)有個(gè)去美國工作的機(jī)會(huì),但是他覺得剛買了房子就離開上海說不過去,就放棄了。
            現(xiàn)在他工作穩(wěn)定,但總覺得自己好象一事無成。唯一的成就就是結(jié)婚了,并且有了孩子,因?yàn)樗X得不該讓這房子永遠(yuǎn)空著,所以房子變成了家。房子是都市生活的寓言,這個(gè)寓言不應(yīng)該過早的和我們相關(guān)。
            27、年齡
            接近三十歲女孩子就開始隱瞞自己的年齡,其實(shí)大可不必。現(xiàn)在青年期都延遲到四十五歲了,快三十又算得了什么呢?
            28、在乎
            這是一種拿不起、放不下的心態(tài),它的反面不是放棄,而是天馬行空,自由自在,永遠(yuǎn)保持革命樂觀主義的精神
          posted @ 2006-12-07 16:58 jie_java 閱讀(520) | 評論 (1)編輯 收藏
          主站蜘蛛池模板: 平利县| 古浪县| 贵港市| 唐海县| 和顺县| 漳平市| 丹棱县| 关岭| 肥东县| 晴隆县| 金乡县| 巨鹿县| 岱山县| 杨浦区| 茶陵县| 汉寿县| 寿光市| 耒阳市| 南充市| 兰溪市| 铁岭县| 河北省| 安陆市| 隆德县| 吴旗县| 郧西县| 视频| 湛江市| 棋牌| 苍山县| 辽中县| 疏勒县| 舒兰市| 什邡市| 涿州市| 高阳县| 读书| 凌源市| 额尔古纳市| 镇原县| 屯留县|