每日一得

          不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開(kāi)發(fā)
          最近關(guān)心的內(nèi)容:SSH,seam,flex,敏捷,TDD
          本站的官方站點(diǎn)是:顛覆軟件

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

          2006年12月11日 #

               摘要: 你每天經(jīng)常訪問(wèn)哪些站點(diǎn)?

          你的收藏夾里有多少收藏的站點(diǎn)?  閱讀全文
          posted @ 2008-08-09 14:42 Alex 閱讀(2390) | 評(píng)論 (2)編輯 收藏

               摘要: 上次參加open party朋友拿了一本《開(kāi)源技術(shù)選型手冊(cè)》,翻了一下,整理成腦圖(圖的效果還是比文字好哦)  閱讀全文
          posted @ 2008-08-06 10:30 Alex 閱讀(2499) | 評(píng)論 (5)編輯 收藏

               摘要: 從svn版本上checkout出來(lái)的新的版本,dwr部分的xml配置文件是紅色提示錯(cuò)誤,一開(kāi)始以為是jsp的普通驗(yàn)證錯(cuò)誤,后發(fā)現(xiàn)不是那么回事。  閱讀全文
          posted @ 2008-08-04 15:00 Alex 閱讀(1572) | 評(píng)論 (0)編輯 收藏

          1.很多人喜歡用代碼開(kāi)發(fā)工具的debug功能來(lái)跟蹤問(wèn)題,雖然最終可以解決問(wèn)題,但是從方向或者思想上不建議這樣做,我依然記得最初我的技術(shù)經(jīng)理對(duì)我說(shuō)過(guò) “代碼不是調(diào)出來(lái)的”。

          2.不是調(diào)出來(lái)的那是怎么出來(lái)的呢? “寫(xiě)出來(lái)的。” 呵呵,別扭,但是想想看,是否有點(diǎn)道理?

          3.從另一個(gè)層面,我們需要加強(qiáng)代碼的規(guī)范的寫(xiě)法,這就好比設(shè)計(jì),先盡量將設(shè)計(jì)(在敏捷的年代似乎談設(shè)計(jì)不太入流,那么你可以認(rèn)為那是一種思考吧)做的到位一點(diǎn)

          4.回到一個(gè)大的命題:戰(zhàn)略如果錯(cuò)誤,執(zhí)行的越快死的越快;同理,思路或者方向如果有問(wèn)題,做的越帶勁,你越難受。

          5.讓我們朝這個(gè)目標(biāo)挺進(jìn):代碼一次編寫(xiě)就通過(guò)! 我見(jiàn)過(guò)一些這樣的高人,只要你努力,是可以做到的。

          posted @ 2008-08-03 20:56 Alex 閱讀(2456) | 評(píng)論 (23)編輯 收藏

               摘要: 又一陣熱風(fēng)吹過(guò)來(lái)了,猶如當(dāng)初的asp,猶如近段時(shí)間的SOA  閱讀全文
          posted @ 2008-08-03 01:02 Alex 閱讀(2011) | 評(píng)論 (2)編輯 收藏

               摘要:   閱讀全文
          posted @ 2008-07-03 14:13 Alex 閱讀(1607) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文
          posted @ 2008-07-03 14:12 Alex 閱讀(2972) | 評(píng)論 (1)編輯 收藏

               摘要:   閱讀全文
          posted @ 2008-07-03 14:11 Alex 閱讀(3523) | 評(píng)論 (5)編輯 收藏

          //本站點(diǎn)內(nèi)容來(lái)自于 顛覆軟件

          1.機(jī)器的ip經(jīng)常改變,到公司一個(gè)ip,到客戶(hù)那一個(gè)ip,到家又是一個(gè)ip,不知怎么搞的,今天到家oracle的dbconsole就啟動(dòng)不了了.

          2.用命令行的方式啟動(dòng) emctl.bat start dbconsole,結(jié)果還提示ORACLE_SID 還沒(méi)有設(shè)置,暈,這個(gè)怎么沒(méi)有了,set 一個(gè)吧 set ORACLE_SID=dggmcc (我的數(shù)據(jù)庫(kù)實(shí)例)

          3.還是有錯(cuò),提示找不到192.168.0.52.這個(gè)地址,應(yīng)該是ip和當(dāng)初裝數(shù)據(jù)庫(kù)的時(shí)候IP不一樣的緣故,將hosts設(shè)置一下 192.168.0.52   IDEA

          4.OK

          posted @ 2008-07-03 14:10 Alex 閱讀(1047) | 評(píng)論 (0)編輯 收藏

          1.架構(gòu)的分類(lèi):業(yè)務(wù)架構(gòu)、數(shù)據(jù)庫(kù)架構(gòu)、軟件設(shè)計(jì)架構(gòu),正在流行的所謂soa架構(gòu)也算吧

          2. 涉及到的主要內(nèi)容:

          • 需求分析
          • 領(lǐng)域分析
          • UML建模
          • 文檔設(shè)計(jì)管理
          • 設(shè)計(jì)模式
          • 基于javaEE5的設(shè)計(jì)(jsf+EJB3)[個(gè)人感覺(jué)jboss seam是最好的代表了]

          3.今天一同事說(shuō)在網(wǎng)上看到統(tǒng)計(jì)數(shù)據(jù)說(shuō)基于soa的架構(gòu)做的項(xiàng)目比傳統(tǒng)的做法成功率確實(shí)高,可能性是存在的,不過(guò)也不排除這些統(tǒng)計(jì)數(shù)據(jù)是某些大廠贊助的結(jié)果 :)

          4.今年打算有機(jī)會(huì)的話(huà)培訓(xùn)一下軟件設(shè)計(jì)師的課程,內(nèi)容摘要如下:(來(lái)自國(guó)信培訓(xùn))

          一、面向?qū)ο蠓治鲈O(shè)計(jì)與UML

          Ø 面向?qū)ο蠓治雠c設(shè)計(jì)OOAD

          Ø UML建模與ICONIX進(jìn)程

          Ø 領(lǐng)域建模與用例建模

          Ø 需求分析與UseCase

          Ø 健壯性分析

          Ø 時(shí)序圖

          Ø 對(duì)象圖、狀態(tài)圖、活動(dòng)圖與協(xié)作圖

          Ø 類(lèi)圖、包圖與組件圖

          Ø 部署圖

          Ø UMLRUP

          Ø 設(shè)計(jì)進(jìn)度和設(shè)計(jì)粒度的控制

          二、設(shè)計(jì)模式

          Ø GOF設(shè)計(jì)模式

          Ø 創(chuàng)建型模式

          Ø 結(jié)構(gòu)型模式

          Ø 行為型模式

          Ø 模式擴(kuò)展

          Ø 開(kāi)源項(xiàng)目中的設(shè)計(jì)模式

          Ø 模式與交流

          三、軟件設(shè)計(jì)管理

          Ø 軟件設(shè)計(jì)文檔

          Ø 軟件流程改進(jìn)策略

          Ø 軟件設(shè)計(jì)風(fēng)險(xiǎn)管理

          四、相關(guān)軟件設(shè)計(jì)案例集

          posted @ 2008-07-03 14:08 Alex 閱讀(1585) | 評(píng)論 (0)編輯 收藏

          //本站點(diǎn)內(nèi)容來(lái)自于www.foxlog.org


          1.中國(guó)還沒(méi)有真正偉大的軟件公司,就當(dāng)自己做一下白日夢(mèng)了

          2.需要一個(gè)協(xié)同軟件,比如oracle協(xié)作套件,或者IBM的Lotus,目的,提供郵件、文檔、工作空間、門(mén)戶(hù)、網(wǎng)絡(luò)會(huì)議、移動(dòng)辦公等,讓公司的所有資源在一個(gè)統(tǒng)一的平臺(tái)上實(shí)施;當(dāng)然,出于成本考慮,我也可以選擇google的企業(yè)套件,最直接的方式了,而且效果不錯(cuò),不過(guò)沒(méi)有網(wǎng)絡(luò)會(huì)議和門(mén)戶(hù)功能,可以考慮使用webEx等 (近期,流行的一個(gè)觀點(diǎn)是在協(xié)作平臺(tái)里引入web2.0的相關(guān)技術(shù))

          3.需要一個(gè)學(xué)習(xí)平臺(tái),比如oracle ilearing.用于員工的入職須知,技能培訓(xùn),為學(xué)習(xí)型組織提供一個(gè)最有力的幫助,最大的問(wèn)題可能不是學(xué)習(xí)平臺(tái)本身,而是學(xué)習(xí)內(nèi)容的規(guī)劃和設(shè)計(jì),必要的時(shí)候需要購(gòu)買(mǎi) .  學(xué)習(xí)平臺(tái)最終的目的就是一是培訓(xùn)員工,另一個(gè)就是知識(shí)共享。現(xiàn)在很多公司有這么一個(gè)毛病,公司運(yùn)營(yíng)了很多年,但是隨著員工的逐步更換和流失,很多以前精華的東西都不見(jiàn)了,如果主意了知識(shí)的共享和積累(通過(guò)軟件平臺(tái)),這個(gè)問(wèn)題就是另一種情況了.

          4.需要一個(gè) oa平臺(tái),主要基于公司的業(yè)務(wù)流程,目前大多數(shù)oa是基于工作流的機(jī)制來(lái)實(shí)現(xiàn)。事實(shí)上,oa的發(fā)展歷程已經(jīng)比較長(zhǎng)了,也相對(duì)比較成熟,但是究竟能發(fā)揮多大作用或者該如何發(fā)揮最大的作用還依然是一個(gè)問(wèn)題。

          5.建立一個(gè)項(xiàng)目管理系統(tǒng)平臺(tái),所有項(xiàng)目都在上面監(jiān)控,它應(yīng)該是動(dòng)態(tài)的,可以看到每一天的進(jìn)度,最好能從上面能對(duì)項(xiàng)目的各個(gè)組員的工作作出評(píng)估,作出即時(shí)的溝通和修正。

          6.軟件開(kāi)發(fā)過(guò)程系統(tǒng):包含架構(gòu)設(shè)計(jì)管理、開(kāi)發(fā)動(dòng)態(tài)控制管理、版本控制、測(cè)試管理 .這些內(nèi)容的主要目的是保證開(kāi)發(fā)的規(guī)范話(huà)、文檔化

          7.會(huì)議系統(tǒng)管理. 每個(gè)公司都需要開(kāi)會(huì),但是開(kāi)會(huì)的層次差別太大了,存在的問(wèn)題主要有:會(huì)議目標(biāo)不明確,會(huì)議過(guò)程沒(méi)有效率,會(huì)議結(jié)果不明確,會(huì)議結(jié)束后沒(méi)有后期跟蹤管理.關(guān)于這方面可以推薦一篇文章 九段秘書(shū)

          8.以上好像偏重于技術(shù)的層面比較多,實(shí)際上一個(gè)公司的老總最看重的其實(shí)必然是市場(chǎng),所以一個(gè)適合自己公司的ERP或者CRM系統(tǒng)也許是必要的,注意,我這里說(shuō)的是也許。

          9.最后,所有的軟件僅僅提供了一個(gè)平臺(tái),它是“死”的,或者說(shuō)其本身并不會(huì)發(fā)生什么作用,更關(guān)鍵的是看不見(jiàn)的“軟件”——企業(yè)文化,一切的效率與創(chuàng)新都來(lái)自于公司的文化氛圍,在這個(gè)基礎(chǔ)上,軟件才會(huì)有推波助瀾的作用。

          posted @ 2008-07-03 14:07 Alex 閱讀(1084) | 評(píng)論 (3)編輯 收藏

               摘要: 很多東西是拿來(lái)被利用的,被 Fuck的,不是讓你消磨時(shí)間的.  閱讀全文
          posted @ 2007-09-01 12:42 Alex 閱讀(2565) | 評(píng)論 (5)編輯 收藏

               摘要: 項(xiàng)目,是一個(gè)范圍很廣的概念,三峽大壩是一個(gè)項(xiàng)目,IT企業(yè)的一次開(kāi)發(fā)任務(wù)也是一個(gè)項(xiàng)目,個(gè)人某個(gè)時(shí)間段的活動(dòng)安排仍然可以看作是一個(gè)項(xiàng)目.

            閱讀全文
          posted @ 2007-08-19 13:15 Alex 閱讀(1829) | 評(píng)論 (7)編輯 收藏

               摘要: 經(jīng)常用到update語(yǔ)句,不過(guò)很少用到其他表的數(shù)據(jù)來(lái)更新當(dāng)前表,這次用到了,總結(jié)一下

            閱讀全文
          posted @ 2007-08-19 12:49 Alex 閱讀(2275) | 評(píng)論 (1)編輯 收藏

          key words: plsql,導(dǎo)出數(shù)據(jù),大數(shù)據(jù)量

          最近的賬務(wù)的項(xiàng)目中需要導(dǎo)出Excel報(bào)表,數(shù)據(jù)量比較大,解決方案如下 :

          1.通過(guò)plsql在服務(wù)器端查詢(xún)出符合要求的紀(jì)錄,然后直接寫(xiě)到文本文件中

          2.在web端通過(guò)流的方式讀文本文件,通過(guò)POI寫(xiě)到Excel,將生成的Excel流寫(xiě)到respoonse實(shí)現(xiàn)下載

          這樣做的好處是不必一次性將滿(mǎn)足條件的紀(jì)錄全部取出來(lái),而是通過(guò)流的方式.

          這個(gè)方式原來(lái)在處理Blob類(lèi)型的字段時(shí)有直接的getStream來(lái)支持的,這次普通的數(shù)據(jù)只好通過(guò)文件的方式來(lái)實(shí)現(xiàn).

          貼一段sample的代碼


          sql 代碼
           
          1. create or replace procedure alex_table_to_txt(filepath varchar2,filename varchar2) is  
          2. --var  
          3. v1 alex2.name%type;  
          4. v2 alex2.address%type;  
          5. v3 alex2.groupname%type;  
          6.   
          7. output varchar2(200);  
          8.   
          9. --file var  
          10. file_handle UTL_FILE.FILE_TYPE;  
          11.   
          12. cursor readtable is select t.name,t.address,t.groupname from alex2 t;  
          13. begin  
          14. file_handle:=utl_file.fopen(filepath,filename,'w',6000);  
          15. open readtable;  
          16.   
          17. loop  
          18. fetch readtable into v1,v2,v3;  
          19. exit when readtable%notfound;  
          20. output:=v1 || ',' || v2 || ',' || v3 ;  
          21. utl_file.put_line(file_handle,output);  
          22.   
          23. end loop;  
          24.   
          25. close readtable;  
          26. utl_file.fclose(file_handle);  
          27. end alex_table_to_txt;  
          28. /  

           

          歡迎討論你的方案

          posted @ 2007-08-18 12:46 Alex 閱讀(4274) | 評(píng)論 (1)編輯 收藏

               摘要: 一般來(lái)說(shuō),我們碰到問(wèn)題都是無(wú)非google,看相關(guān)文檔,請(qǐng)教專(zhuān)家,問(wèn)圈子里的朋友,等等。我這里說(shuō)的主要是個(gè)人自己的解決思路。

            閱讀全文
          posted @ 2007-08-18 12:17 Alex 閱讀(1369) | 評(píng)論 (2)編輯 收藏

          好久沒(méi)有來(lái)這里了,blogjava的朋友們你們還好嗎。

          我的 blog搬家了,以后將主要在這里維護(hù): www.foxlog.org 

          需要和我交換連接的朋友請(qǐng)聯(lián)系我 mail to me :  idea.wang@gmail.com,或者在我 blog留言
          http://www.foxlog.org/%E7%BB%99%E6%88%91%E7%95%99%E8%A8%80
          posted @ 2007-07-27 15:21 Alex 閱讀(661) | 評(píng)論 (0)編輯 收藏

          1.查看系統(tǒng)Swap空間使用

          [root@jumper usr]# free
                       total       used       free     shared    buffers     cached
          Mem:        513980     493640      20340          0     143808     271780
          -/+ buffers/cache:      78052     435928
          Swap:      1052248      21256    1030992

          2.在空間合適處創(chuàng)建swap文件

          [root@jumper usr]# mkdir swap
          [root@jumper usr]# cd swap
          [root@jumper swap]# dd if=/dev/zero of=swapfile bs=1024 count=10000
          10000+0 records in
          10000+0 records out
          [root@jumper swap]# ls -al
          total 10024
          drwxr-xr-x    2 root     root         4096  7月 28 14:58 .
          drwxr-xr-x   19 root     root         4096  7月 28 14:57 ..
          -rw-r--r--    1 root     root     10240000  7月 28 14:58 swapfile


          [root@jumper swap]# mkswap swapfile
          Setting up swapspace version 1, size = 9996 KiB


          3.激活swap文件
          [root@jumper swap]# swapon swapfile
          [root@jumper swap]# ls -l
          total 10016
          -rw-r--r--    1 root     root     10240000  7月 28 14:58 swapfile
          [root@jumper swap]# free
                       total       used       free     shared    buffers     cached
          Mem:        513980     505052       8928          0     143900     282288
          -/+ buffers/cache:      78864     435116
          Swap:      1062240      21256    1040984
          [root@jumper swap]#  

           

           

          Swap,即交換區(qū),除了安裝Linux的時(shí)候,有多少人關(guān)心過(guò)它呢?其實(shí),Swap的調(diào)整對(duì)Linux服務(wù)器,特別是Web服務(wù)器的性能至關(guān)重要。通過(guò)調(diào)整Swap,有時(shí)可以越過(guò)系統(tǒng)性能瓶頸,節(jié)省系統(tǒng)升級(jí)費(fèi)用。 

          本文內(nèi)容包括: 


          Swap基本原理 

          突破128M Swap限制 

          Swap配置對(duì)性能的影響 

          Swap性能監(jiān)視 

          有關(guān)Swap操作的系統(tǒng)命令 
          Swap基本原理 

          Swap的原理是一個(gè)較復(fù)雜的問(wèn)題,需要大量的篇幅來(lái)說(shuō)明。在這里只作簡(jiǎn)單的介紹,在以后的文章中將和大家詳細(xì)討論Swap實(shí)現(xiàn)的細(xì)節(jié)。 

          眾所周知,現(xiàn)代操作系統(tǒng)都實(shí)現(xiàn)了"虛擬內(nèi)存"這一技術(shù),不但在功能上突破了物理內(nèi)存的限制,使程序可以操縱大于實(shí)際物理內(nèi)存的空間,更重要的是,"虛擬內(nèi)存"是隔離每個(gè)進(jìn)程的安全保護(hù)網(wǎng),使每個(gè)進(jìn)程都不受其它程序的干擾。 

          Swap 空間的作用可簡(jiǎn)單描述為:當(dāng)系統(tǒng)的物理內(nèi)存不夠用的時(shí)候,就需要將物理內(nèi)存中的一部分空間釋放出來(lái),以供當(dāng)前運(yùn)行的程序使用。那些被釋放的空間可能來(lái)自一些很長(zhǎng)時(shí)間沒(méi)有什么操作的程序,這些被釋放的空間被臨時(shí)保存到Swap空間中,等到那些程序要運(yùn)行時(shí),再?gòu)腟wap中恢復(fù)保存的數(shù)據(jù)到內(nèi)存中。這樣,系統(tǒng)總是在物理內(nèi)存不夠時(shí),才進(jìn)行Swap交換。 

          計(jì)算機(jī)用戶(hù)會(huì)經(jīng)常遇這種現(xiàn)象。例如,在使用Windows系統(tǒng)時(shí),可以同時(shí)運(yùn)行多個(gè)程序,當(dāng)你切換到一個(gè)很長(zhǎng)時(shí)間沒(méi)有理會(huì)的程序時(shí),會(huì)聽(tīng)到硬盤(pán)"嘩嘩"直響。這是因?yàn)檫@個(gè)程序的內(nèi)存被那些頻繁運(yùn)行的程序給"偷走"了,放到了Swap區(qū)中。因此,一旦此程序被放置到前端,它就會(huì)從Swap區(qū)取回自己的數(shù)據(jù),將其放進(jìn)內(nèi)存,然后接著運(yùn)行。 

          需要說(shuō)明一點(diǎn),并不是所有從物理內(nèi)存中交換出來(lái)的數(shù)據(jù)都會(huì)被放到Swap中(如果這樣的話(huà),Swap就會(huì)不堪重負(fù)),有相當(dāng)一部分?jǐn)?shù)據(jù)被直接交換到文件系統(tǒng)。例如,有的程序會(huì)打開(kāi)一些文件,對(duì)文件進(jìn)行讀寫(xiě)(其實(shí)每個(gè)程序都至少要打開(kāi)一個(gè)文件,那就是運(yùn)行程序本身),當(dāng)需要將這些程序的內(nèi)存空間交換出去時(shí),就沒(méi)有必要將文件部分的數(shù)據(jù)放到 Swap空間中了,而可以直接將其放到文件里去。如果是讀文件操作,那么內(nèi)存數(shù)據(jù)被直接釋放,不需要交換出來(lái),因?yàn)橄麓涡枰獣r(shí),可直接從文件系統(tǒng)恢復(fù);如果是寫(xiě)文件,只需要將變化的數(shù)據(jù)保存到文件中,以便恢復(fù)。但是那些用malloc和new函數(shù)生成的對(duì)象的數(shù)據(jù)則不同,它們需要Swap空間,因?yàn)樗鼈冊(cè)谖募到y(tǒng)中沒(méi)有相應(yīng)的"儲(chǔ)備"文件,因此被稱(chēng)作"匿名"(Anonymous)內(nèi)存數(shù)據(jù)。這類(lèi)數(shù)據(jù)還包括堆棧中的一些狀態(tài)和變量數(shù)據(jù)等。所以說(shuō),Swap 空間是"匿名"數(shù)據(jù)的交換空間。 

          突破128M Swap限制 

          經(jīng)常看到有些Linux(國(guó)內(nèi)漢化版)安裝手冊(cè)上有這樣的說(shuō)明:Swap空間不能超過(guò)128M。為什么會(huì)有這種說(shuō)法?在說(shuō)明"128M"這個(gè)數(shù)字的來(lái)歷之前,先給問(wèn)題一個(gè)回答:現(xiàn)在根本不存在128M的限制!現(xiàn)在的限制是2G! 

          Swap 空間是分頁(yè)的,每一頁(yè)的大小和內(nèi)存頁(yè)的大小一樣,方便Swap空間和內(nèi)存之間的數(shù)據(jù)交換。舊版本的Linux實(shí)現(xiàn)Swap空間時(shí),用Swap空間的第一頁(yè)作為所有Swap空間頁(yè)的一個(gè)"位映射"(Bit map)。這就是說(shuō)第一頁(yè)的每一位,都對(duì)應(yīng)著一頁(yè)Swap空間。如果這一位是1,表示此頁(yè)Swap可用;如果是0,表示此頁(yè)是壞塊,不能使用。這么說(shuō)來(lái),第一個(gè)Swap映射位應(yīng)該是0,因?yàn)椋谝豁?yè)Swap是映射頁(yè)。另外,最后10個(gè)映射位也被占用,用來(lái)表示Swap的版本(原來(lái)的版本是Swap_space ,現(xiàn)在的版本是swapspace2)。那么,如果說(shuō)一頁(yè)的大小為s,這種Swap的實(shí)現(xiàn)方法共能管理"8 * ( s - 10 ) - 1"個(gè)Swap頁(yè)。對(duì)于i386系統(tǒng)來(lái)說(shuō)s=4096,則空間大小共為133890048,如果認(rèn)為 1 MB=2^20 Byte的話(huà),大小正好為128M。 

          之所以這樣來(lái)實(shí)現(xiàn)Swap空間的管理,是要防止Swap空間中有壞塊。如果系統(tǒng)檢查到Swap中有壞塊,則在相應(yīng)的位映射上標(biāo)記上0,表示此頁(yè)不可用。這樣在使用Swap時(shí),不至于用到壞塊,而使系統(tǒng)產(chǎn)生錯(cuò)誤。 

          現(xiàn)在的系統(tǒng)設(shè)計(jì)者認(rèn)為: 

          1.現(xiàn)在硬盤(pán)質(zhì)量很好,壞塊很少。 

          2.就算有,也不多,只需要將壞塊羅列出來(lái),而不需要為每一頁(yè)建立映射。 

          3.如果有很多壞塊,就不應(yīng)該將此硬盤(pán)作為Swap空間使用。 

          于是,現(xiàn)在的Linux取消了位映射的方法,也就取消了128M的限制。直接用地址訪問(wèn),限制為2G。 

          Swap配置對(duì)性能的影響 

          分配太多的Swap空間會(huì)浪費(fèi)磁盤(pán)空間,而Swap空間太少,則系統(tǒng)會(huì)發(fā)生錯(cuò)誤。 

          如果系統(tǒng)的物理內(nèi)存用光了,系統(tǒng)就會(huì)跑得很慢,但仍能運(yùn)行;如果Swap空間用光了,那么系統(tǒng)就會(huì)發(fā)生錯(cuò)誤。例如,Web服務(wù)器能根據(jù)不同的請(qǐng)求數(shù)量衍生出多個(gè)服務(wù)進(jìn)程(或線程),如果Swap空間用完,則服務(wù)進(jìn)程無(wú)法啟動(dòng),通常會(huì)出現(xiàn)"application is out of memory"的錯(cuò)誤,嚴(yán)重時(shí)會(huì)造成服務(wù)進(jìn)程的死鎖。因此Swap空間的分配是很重要的。 

          通常情況下,Swap空間應(yīng)大于或等于物理內(nèi)存的大小,最小不應(yīng)小于64M,通常Swap空間的大小應(yīng)是物理內(nèi)存的2-2.5倍。但根據(jù)不同的應(yīng)用,應(yīng)有不同的配置:如果是小的桌面系統(tǒng),則只需要較小的Swap空間,而大的服務(wù)器系統(tǒng)則視情況不同需要不同大小的Swap空間。特別是數(shù)據(jù)庫(kù)服務(wù)器和Web服務(wù)器,隨著訪問(wèn)量的增加,對(duì)Swap空間的要求也會(huì)增加,具體配置參見(jiàn)各服務(wù)器產(chǎn)品的說(shuō)明。 

          另外,Swap分區(qū)的數(shù)量對(duì)性能也有很大的影響。因?yàn)镾wap交換的操作是磁盤(pán)IO的操作,如果有多個(gè) Swap交換區(qū),Swap空間的分配會(huì)以輪流的方式操作于所有的Swap,這樣會(huì)大大均衡IO的負(fù)載,加快Swap交換的速度。如果只有一個(gè)交換區(qū),所有的交換操作會(huì)使交換區(qū)變得很忙,使系統(tǒng)大多數(shù)時(shí)間處于等待狀態(tài),效率很低。用性能監(jiān)視工具就會(huì)發(fā)現(xiàn),此時(shí)的CPU并不很忙,而系統(tǒng)卻慢。這說(shuō)明,瓶頸在 IO上,依靠提高CPU的速度是解決不了問(wèn)題的。 
          系統(tǒng)性能監(jiān)視 

          Swap空間的分配固然很重要,而系統(tǒng)運(yùn)行時(shí)的性能監(jiān)控卻更加有價(jià)值。通過(guò)性能監(jiān)視工具,可以檢查系統(tǒng)的各項(xiàng)性能指標(biāo),找到系統(tǒng)性能的瓶頸。本文只介紹一下在Solaris下和Swap相關(guān)的一些命令和用途。 

          最常用的是Vmstat命令(在大多數(shù)Unix平臺(tái)下都有這樣一些命令),此命令可以查看大多數(shù)性能指標(biāo)。 

          例如: 
          # vmstat 3 
          procs memory swap io system cpu 
          r b w swpd free buff cache si so bi bo in cs us sy id 
          0 0 0 0 93880 3304 19372 0 0 10 2 131 10 0 0 99 
          0 0 0 0 93880 3304 19372 0 0 0 0 109 8 0 0 100 
          0 0 0 0 93880 3304 19372 0 0 0 0 112 6 0 0 100 
          ............ 

          命令說(shuō)明: 
          vmstat 后面的參數(shù)指定了性能指標(biāo)捕獲的時(shí)間間隔。3表示每三秒鐘捕獲一次。第一行數(shù)據(jù)不用看,沒(méi)有價(jià)值,它僅反映開(kāi)機(jī)以來(lái)的平均性能。從第二行開(kāi)始,反映每三秒鐘之內(nèi)的系統(tǒng)性能指標(biāo)。這些性能指標(biāo)中和Swap有關(guān)的包括以下幾項(xiàng): 


          procs下的w 
          它表示當(dāng)前(三秒鐘之內(nèi))需要釋放內(nèi)存、交換出去的進(jìn)程數(shù)量。 

          memory下的swpd 
          它表示使用的Swap空間的大小。 

          Swap下的si,so 
          si表示當(dāng)前(三秒鐘之內(nèi))每秒交換回內(nèi)存(Swap in)的總量,單位為kbytes;so表示當(dāng)前(三秒鐘之內(nèi))每秒交換出內(nèi)存(Swap out)的總量,單位為kbytes。 
          以上的指標(biāo)數(shù)量越大,表示系統(tǒng)越忙。這些指標(biāo)所表現(xiàn)的系統(tǒng)繁忙程度,與系統(tǒng)具體的配置有關(guān)。系統(tǒng)管理員應(yīng)該在平時(shí)系統(tǒng)正常運(yùn)行時(shí),記下這些指標(biāo)的數(shù)值,在系統(tǒng)發(fā)生問(wèn)題的時(shí)候,再進(jìn)行比較,就會(huì)很快發(fā)現(xiàn)問(wèn)題,并制定本系統(tǒng)正常運(yùn)行的標(biāo)準(zhǔn)指標(biāo)值,以供性能監(jiān)控使用。 

          另外,使用Swapon-s也能簡(jiǎn)單地查看當(dāng)前Swap資源的使用情況。例如: 
          # swapon -s 
          Filename Type Size Used Priority 
          /dev/hda9 partition 361420 0 3 

          能夠方便地看出Swap空間的已用和未用資源的大小。 

          應(yīng)該使Swap負(fù)載保持在30%以下,這樣才能保證系統(tǒng)的良好性能。 

          有關(guān)Swap操作的系統(tǒng)命令 


          增加Swap空間,分以下幾步: 
          1)成為超級(jí)用戶(hù) 
          $su - root 

          2)創(chuàng)建Swap文件 
          # dd if=/dev/zero of=swapfile bs=1024 count=65536 

          創(chuàng)建一個(gè)有連續(xù)空間的交換文件。 

          3)激活Swap文件 
          #/usr/sbin/swapon swapfile 

          swapfile指的是上一步創(chuàng)建的交換文件。 4)現(xiàn)在新加的Swap文件已經(jīng)起作用了,但系統(tǒng)重新啟動(dòng)以后,并不會(huì)記住前幾步的操作。因此要在/etc/fstab文件中記錄文件的名字,和Swap類(lèi)型,如: 
          /path/swapfile none Swap sw,pri=3 0 0 

          5)檢驗(yàn)Swap文件是否加上 
          /usr/sbin/swapon -s 


          刪除多余的Swap空間。 
          1)成為超級(jí)用戶(hù) 

          2)使用Swapoff命令收回Swap空間。 
          #/usr/sbin/swapoff swapfile 

          3)編輯/etc/fstab文件,去掉此Swap文件的實(shí)體。 

          4)從文件系統(tǒng)中回收此文件。 
          #rm swapfile 

          5)當(dāng)然,如果此Swap空間不是一個(gè)文件,而是一個(gè)分區(qū),則需創(chuàng)建一個(gè)新的文件系統(tǒng),再掛接到原來(lái)的文件系統(tǒng)上。

          posted @ 2007-06-18 14:27 Alex 閱讀(1020) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文
          posted @ 2007-06-13 16:43 Alex 閱讀(3759) | 評(píng)論 (4)編輯 收藏


          come from here

          如果將需求分析階段的工作歸結(jié)為編寫(xiě)需求規(guī)格說(shuō)明書(shū),這種簡(jiǎn)化的做法往往是導(dǎo)致項(xiàng)目后期層出不窮問(wèn)題的罪魁禍?zhǔn)住=ㄗh采用以下步驟形成軟件需求:獲取用戶(hù)需求→分析用戶(hù)需求→編寫(xiě)需求文檔→評(píng)審需求文檔→管理需求。下面我們先來(lái)討論前兩個(gè)步驟(獲取用戶(hù)需求、分析用戶(hù)需求)的做法。

          獲取用戶(hù)需求

            這是該階段的一個(gè)最重要的任務(wù)。以下為獲取用戶(hù)需求需要執(zhí)行的活動(dòng)(如圖1所示)。

            ● 了解客戶(hù)方的所有用戶(hù)類(lèi)型以及潛在的類(lèi)型。然后,根據(jù)他們的要求來(lái)確定系統(tǒng)的整體目標(biāo)和系統(tǒng)的工作范圍。

            ● 對(duì)用戶(hù)進(jìn)行訪談和調(diào)研。交流的方式可以是會(huì)議、電話(huà)、電子郵件、小組討論、模擬演示等不同形式。需要注意的是,每一次交流一定要有記錄,對(duì)于交流的結(jié)果還可以進(jìn)行分類(lèi),便于后續(xù)的分析活動(dòng)。例如,可以將需求細(xì)分為功能需求、非功能需求(如響應(yīng)時(shí)間、平均無(wú)故障工作時(shí)間、自動(dòng)恢復(fù)時(shí)間等)、環(huán)境限制、設(shè)計(jì)約束等類(lèi)型。

            ● 需求分析人員對(duì)收集到的用戶(hù)需求做進(jìn)一步的分析和整理。下面是幾條常見(jiàn)的準(zhǔn)則:

            ⑴對(duì)于用戶(hù)提出的每個(gè)需求都要知道“為什么”,并判斷用戶(hù)提出的需求是否有充足的理由;

            

            圖1 獲取用戶(hù)需求的活動(dòng)

            ⑵將那種以“如何實(shí)現(xiàn)”的表述方式轉(zhuǎn)換為“實(shí)現(xiàn)什么”的方式,因?yàn)樾枨蠓治鲭A段關(guān)注的目標(biāo)是“做什么”,而不是“怎么做”;

            ⑶分析由用戶(hù)需求衍生出的隱含需求,并識(shí)別用戶(hù)沒(méi)有明確提出來(lái)的隱含需求(有可能是實(shí)現(xiàn)用戶(hù)需求的前提條件),這一點(diǎn)往往容易忽略掉,經(jīng)常因?yàn)閷?duì)隱含需求考慮得不夠充分而引起需求變更。

            ● 需求分析人員將調(diào)研的用戶(hù)需求以適當(dāng)?shù)姆绞匠式唤o用戶(hù)方和開(kāi)發(fā)方的相關(guān)人員。大家共同確認(rèn)需求分析人員所提交的結(jié)果是否真實(shí)地反映了用戶(hù)的意圖。需求分析人員在這個(gè)任務(wù)中需要執(zhí)行下述活動(dòng):

            ⑴明確標(biāo)識(shí)出那些未確定的需求項(xiàng)(在需求分析初期往往有很多這樣的待定項(xiàng));

            ⑵使需求符合系統(tǒng)的整體目標(biāo);

            ⑶保證需求項(xiàng)之間的一致性,解決需求項(xiàng)之間可能存在的沖突。

          分析用戶(hù)需求

            在很多情形下,分析用戶(hù)需求是與獲取用戶(hù)需求并行的,主要通過(guò)建立模型的方式來(lái)描述用戶(hù)的需求,為客戶(hù)、用戶(hù)、開(kāi)發(fā)方等不同參與方提供一個(gè)交流的渠道。這些模型是對(duì)需求的抽象,以可視化的方式提供一個(gè)易于溝通的橋梁。用戶(hù)需求的分析與獲取用戶(hù)需求有著相似的步驟,區(qū)別在于分析用戶(hù)需求時(shí)使用模型來(lái)描述,以獲取用戶(hù)更明確的需求。分析用戶(hù)需求需要執(zhí)行下列活動(dòng):

            ● 以圖形表示的方式描述系統(tǒng)的整體結(jié)構(gòu),包括系統(tǒng)的邊界與接口;

            ● 通過(guò)原型、頁(yè)面流或其它方式向用戶(hù)提供可視化的界面,用戶(hù)可以對(duì)需求做出自己的評(píng)價(jià);

            ● 系統(tǒng)可行性分析,需求實(shí)現(xiàn)的技術(shù)可行性、環(huán)境分析、費(fèi)用分析、時(shí)間分析等;

            ● 以模型描述系統(tǒng)的功能項(xiàng)、數(shù)據(jù)實(shí)體、外部實(shí)體、實(shí)體之間的關(guān)系、實(shí)體之間的狀態(tài)轉(zhuǎn)換等方面的內(nèi)容。

            

            圖2 DFD示意圖

            用于需求建模的方法有很多種,最常用的包括數(shù)據(jù)流圖(DFD)、實(shí)體關(guān)系圖(ERD)和用例圖(Use Case)三種方式。DFD作為結(jié)構(gòu)化系統(tǒng)分析與設(shè)計(jì)的主要方法,已經(jīng)得到了廣泛的應(yīng)用,DFD尤其適用于MIS系統(tǒng)的表述。DFD使用四種基本元素來(lái)描述系統(tǒng)的行為,過(guò)程、實(shí)體、數(shù)據(jù)流和數(shù)據(jù)存儲(chǔ)。DFD方法直觀易懂,使用者可以方便地得到系統(tǒng)的邏輯模型和物理模型,但是從DFD圖中無(wú)法判斷活動(dòng)的時(shí)序關(guān)系。圖2描述的是某個(gè)項(xiàng)目的DFD示意圖。

            ERD方法用于描述系統(tǒng)實(shí)體間的對(duì)應(yīng)關(guān)系,需求分析階段使用ERD描述系統(tǒng)中實(shí)體的邏輯關(guān)系,在設(shè)計(jì)階段則使用ERD描述物理表之間的關(guān)系。需求分析階段使用ERD來(lái)描述現(xiàn)實(shí)世界中的對(duì)象。ERD只關(guān)注系統(tǒng)中數(shù)據(jù)間的關(guān)系,而缺乏對(duì)系統(tǒng)功能的描述。如果將ERD與DFD兩種方法相結(jié)合,則可以更準(zhǔn)確地描述系統(tǒng)的需求。

            在面向?qū)ο蠓治龅姆椒ㄖ型ǔJ褂肬se Case來(lái)獲取軟件的需求。Use Case通過(guò)描述“系統(tǒng)”和“活動(dòng)者”之間的交互來(lái)描述系統(tǒng)的行為。通過(guò)分解系統(tǒng)目標(biāo),Use Case描述活動(dòng)者為了實(shí)現(xiàn)這些目標(biāo)而執(zhí)行的所有步驟。Use Case方法最主要的優(yōu)點(diǎn),在于它是用戶(hù)導(dǎo)向的,用戶(hù)可以根據(jù)自己所對(duì)應(yīng)的Use Case來(lái)不斷細(xì)化自己的需求。此外,使用Use Case還可以方便地得到系統(tǒng)功能的測(cè)試用例。

          編寫(xiě)需求文檔

            需求文檔可以使用自然語(yǔ)言或形式化語(yǔ)言來(lái)描述,還可以添加圖形的表述方式和模型表征的方式。需求文檔應(yīng)該包括用戶(hù)的所有需求(功能性需求和非功能性需求)。

          評(píng)審需求文檔

            需求文檔完成后,需要經(jīng)過(guò)正式評(píng)審,以便作為下一階段工作的基礎(chǔ)。一般的評(píng)審分為用戶(hù)評(píng)審和同行評(píng)審兩類(lèi)。用戶(hù)和開(kāi)發(fā)方對(duì)于軟件項(xiàng)目?jī)?nèi)容的描述,是以需求規(guī)格說(shuō)明書(shū)作為基礎(chǔ)的;用戶(hù)驗(yàn)收的標(biāo)準(zhǔn)則是依據(jù)需求規(guī)格說(shuō)明書(shū)中的內(nèi)容來(lái)制訂,所以評(píng)審需求文檔時(shí)用戶(hù)的意見(jiàn)是第一位的。而同行評(píng)審的目的,是在軟件項(xiàng)目初期發(fā)現(xiàn)那些潛在的缺陷或錯(cuò)誤,避免這些錯(cuò)誤和缺陷遺漏到項(xiàng)目的后續(xù)階段。

          管理需求

            

            圖1 需求變更流程

            需求的變更是不可避免的,如何以可控的方式管理軟件的需求,對(duì)于項(xiàng)目的順利進(jìn)行有著重要的意義。如果匆匆忙忙地完成用戶(hù)調(diào)研與分析,則往往意味著不穩(wěn)定的需求。所以需求管理要保證需求分析各個(gè)活動(dòng)都得到了充分的執(zhí)行。對(duì)于需求變更的管理,則主要使用需求變更流程和需求跟蹤矩陣的管理方式。需求變更流程和需求跟蹤矩陣分別如圖1和圖2所示。

            

            圖2 需求跟蹤矩陣

            常見(jiàn)問(wèn)題及建議

            Q、客戶(hù)與最終用戶(hù)的區(qū)別是什么?

            A、可以借助圖3來(lái)說(shuō)明它們之間的區(qū)別。

            

            圖3 需求獲取渠道示意圖

            軟件需求來(lái)自系統(tǒng)工程與客戶(hù)兩個(gè)方面,其中客戶(hù)是主要的需求提供者(系統(tǒng)工程需求也來(lái)自于客戶(hù))。客戶(hù)需要搜集其最終用戶(hù)的需求并考慮自身的需求,然后再提供給開(kāi)發(fā)方。假如客戶(hù)并未去認(rèn)真搜集最終用戶(hù)的需求,開(kāi)發(fā)方便需要做到這一點(diǎn),因?yàn)橄到y(tǒng)最終要滿(mǎn)足最終用戶(hù)的需求。

            Q、如何進(jìn)行用戶(hù)訪談?

            A、首先,一定要事先確定訪談的目的和提綱。其次,因?yàn)橛脩?hù)往往并不知道應(yīng)該提供哪些方面的需求,所以需要開(kāi)發(fā)人員引導(dǎo)。

            Q、用戶(hù)訪談內(nèi)容是什么?

            A、首先,請(qǐng)用戶(hù)描述他們?nèi)绾瓮瓿勺约寒?dāng)前的工作,并與用戶(hù)一起抽象出一個(gè)工作流程或工作模型。然后,在得到用戶(hù)的認(rèn)可后,向用戶(hù)解釋自己是怎樣來(lái)實(shí)現(xiàn)這些功能的,并說(shuō)明哪些環(huán)節(jié)可以用自動(dòng)化方式實(shí)現(xiàn)等。

            Q、采用哪一種方式做需求分析最好?

            A、不同的需求分析有不同的特點(diǎn)。還沒(méi)有哪一種方法可以完全替代別的方法,否則,現(xiàn)在就不會(huì)存在不同的需求建模方式了。一般來(lái)說(shuō),可以使用DFD+ERD來(lái)描述那些功能層次比較清晰的需求;而USE CASE則適于描述功能結(jié)構(gòu)復(fù)雜的需求。做需求分析的目的是為了建立需求的模型,不同的子系統(tǒng)有可能使用不同的建模方法。

            Q、怎樣做原型,原型的目的是什么?

            A、通常使用原型分析方法來(lái)幫助開(kāi)發(fā)方進(jìn)一步獲取用戶(hù)需求或讓用戶(hù)確認(rèn)需求。開(kāi)發(fā)方往往先向用戶(hù)提供一個(gè)可視界面作為原型,并在界面上布置必要的元素以演示用戶(hù)所需要的功能。可以使用第四代語(yǔ)言(例如Visual Basic、Delphi等)來(lái)快速生成用戶(hù)界面,也可以使用FrontPage等網(wǎng)頁(yè)制作工具來(lái)生成用戶(hù)可視的頁(yè)面流。

            原型的目的往往是獲取需求。但有時(shí)也使用原型的方式來(lái)驗(yàn)證關(guān)鍵技術(shù)或技術(shù)難點(diǎn)。對(duì)于技術(shù)原型,界面則往往被忽略掉。

          posted @ 2007-06-12 17:47 Alex 閱讀(993) | 評(píng)論 (0)編輯 收藏

          echo "begin to start oracle"
          lsnrctl start
          sqlplus /nolog 
          <<EOF
          connect /as sysdba
          startup
          exit
          exit
          echo "oracle have started"
          posted @ 2007-06-12 09:13 Alex 閱讀(1164) | 評(píng)論 (0)編輯 收藏

          已經(jīng)打印了,晚上看一下,感覺(jué)不錯(cuò)。

          download

          posted @ 2007-06-11 18:24 Alex 閱讀(671) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文
          posted @ 2007-06-04 00:18 Alex 閱讀(2074) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文
          posted @ 2007-06-02 11:50 Alex 閱讀(974) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文
          posted @ 2007-05-29 11:32 Alex 閱讀(1492) | 評(píng)論 (5)編輯 收藏

               摘要:   閱讀全文
          posted @ 2007-05-24 09:52 Alex 閱讀(1217) | 評(píng)論 (2)編輯 收藏

               摘要:   閱讀全文
          posted @ 2007-05-14 09:05 Alex 閱讀(13385) | 評(píng)論 (8)編輯 收藏

               摘要:   閱讀全文
          posted @ 2007-05-13 17:15 Alex 閱讀(1928) | 評(píng)論 (3)編輯 收藏

               摘要:   閱讀全文
          posted @ 2007-05-13 16:41 Alex 閱讀(5682) | 評(píng)論 (13)編輯 收藏

          key words: jstl,struts,log4j

          1.jstl
          jstl的配置參考這篇文章:
          http://foolmouse.cnblogs.com/archive/2006/04/20/380695.html

          在iAS904服務(wù)器上的jstl的版本只能用1.0 的
          "standard.jar和jstl.jar文件拷貝到\WEB-INF\lib\
          "

          2.struts
          struts的配置主要是把 相關(guān)jar文件(struts.jar,struts-legacy.jar)拷貝到\WEB-INF\lib
          ,另外,struts需要用到一些apache的commons的包(commons-beanutils.jar,commons-collections-2.1.1.jar,commons-digester.jar)

          3.log4j
          log4j經(jīng)常有莫名其妙的問(wèn)題,有時(shí)候能出來(lái)log有時(shí)候又不能出來(lái)log,最后把log4j.xml統(tǒng)一改為log4j.properties,暫時(shí)看好像有效果。

          4。web.xml配置

          <taglib>
                  
          <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
                  
          <taglib-location>/WEB-INF/c-1_0.tld</taglib-location>
              
          </taglib>
              
          <taglib>
                  
          <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
                  
          <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
              
          </taglib>
              
          <taglib>
                  
          <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
                  
          <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
              
          </taglib>
              
          <taglib>
                  
          <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
                  
          <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
              
          </taglib>


          今天終于先在iAS里部署完了struts,下一步把hibernate放進(jìn)去,上次部署過(guò)一次,沒(méi)有成功,據(jù)說(shuō)是和toplink有點(diǎn)沖突。 知道的兄弟分享下oc4j中部署hibernate
          posted @ 2007-05-08 19:11 Alex 閱讀(1344) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文
          posted @ 2007-04-11 16:09 Alex 閱讀(7800) | 評(píng)論 (8)編輯 收藏

               摘要:   閱讀全文
          posted @ 2007-03-30 08:34 Alex 閱讀(811) | 評(píng)論 (0)編輯 收藏

          key words: contentType,meta

          come from here


          ?

          在經(jīng)典同時(shí)看到兩個(gè)關(guān)于ContentType的問(wèn)題

          http://bbs.blueidea.com/thread-2729935-1-1.html

          http://bbs.blueidea.com/thread-2729945-1-1.html

          所以查了下資料,copy了一份詳細(xì)的ContentType的列表

          ?

          不同的ContentType 會(huì)影響客戶(hù)端所看到的效果.

          默認(rèn)的ContentType為 text/html? 也就是網(wǎng)頁(yè)格式.

          代碼如:

          <% response.ContentType ="text/html" %>?
          <!--#i nclude virtual="/ContentType.html" -->

          顯示的為網(wǎng)頁(yè),而

          <% response.ContentType ="text/plain" %>?
          <!--#i nclude virtual="/sscript/

          則會(huì)顯示html原代碼.

          以下為一些常用的 ContentType

          GIF images
          <% response.ContentType ="image/gif" %>?
          <!--#i nclude virtual="/myimage.gif" -->
          JPEG images
          <% response.ContentType ="image/jpeg" %>?
          <!--#i nclude virtual="/myimage.jpeg" -->
          TIFF images
          <% response.ContentType ="image/tiff" %>?
          <!--#i nclude virtual="/myimage.tiff" -->
          MICROSOFT WORD document
          <% response.ContentType ="application/msword" %>?
          <!--#i nclude virtual="/myfile.doc" -->
          RTF document
          <% response.ContentType ="application/rtf" %>?
          <!--#i nclude virtual="/myfile.rtf" -->
          MICROSOFT EXCEL document
          <% response.ContentType ="application/x-excel" %>?
          <!--#i nclude virtual="/myfile.xls" -->
          MICROSOFT POWERPOINT document
          <% response.ContentType ="application/ms-powerpoint" %>?
          <!--#i nclude virtual="/myfile.pff" -->
          PDF document
          <% response.ContentType ="application/pdf" %>?
          <!--#i nclude virtual="/myfile.pdf" -->
          ZIP document
          <% response.ContentType ="application/zip" %>?
          <!--#i nclude virtual="/myfile.zip" -->

          ?

          下面是更詳細(xì)的ContentType

          application/andrew-insetez
          application/mac-binhex40hqx
          application/mac-compactprocpt
          application/mathml+xmlmathml
          application/msworddoc
          application/octet-streambin dms lha lzh exe class so dll
          application/odaoda
          application/oggogg
          application/pdfpdf
          application/postscriptai eps ps
          application/rdf+xmlrdf
          application/smilsmi smil
          application/srgsgram
          application/srgs+xmlgrxml
          application/vnd.mifmif
          application/vnd.mozilla.xul+xmlxul
          application/vnd.ms-excelxls
          application/vnd.ms-powerpointppt
          application/vnd.wap.wbxmlwbxml
          application/vnd.wap.wmlc.wmlc wmlc
          application/vnd.wap.wmlscriptc.wmlsc wmlsc
          application/voicexml+xmlvxml
          application/x-bcpiobcpio
          application/x-cdlinkvcd
          application/x-chess-pgnpgn
          application/x-cpiocpio
          application/x-cshcsh
          application/x-directordcr dir dxr
          application/x-dvidvi
          application/x-futuresplashspl
          application/x-gtargtar
          application/x-hdfhdf
          application/x-httpd-php.php .php4 .php3 .phtml
          application/x-httpd-php-source.phps
          application/x-javascriptjs
          application/x-koanskp skd skt skm
          application/x-latexlatex
          application/x-netcdfnc cdf
          application/x-pkcs7-crl.crl
          application/x-shsh
          application/x-sharshar
          application/x-shockwave-flashswf
          application/x-stuffitsit
          application/x-sv4cpiosv4cpio
          application/x-sv4crcsv4crc
          application/x-tar.tgz tar
          application/x-tcltcl
          application/x-textex
          application/x-texinfotexinfo texi
          application/x-trofft tr roff
          application/x-troff-manman
          application/x-troff-meme
          application/x-troff-msms
          application/x-ustarustar
          application/x-wais-sourcesrc
          application/x-x509-ca-cert.crt
          application/xhtml+xmlxhtml xht
          application/xmlxml xsl
          application/xml-dtddtd
          application/xslt+xmlxslt
          application/zipzip
          audio/basicau snd
          audio/midimid midi kar
          audio/mpegmpga mp2 mp3
          audio/x-aiffaif aiff aifc
          audio/x-mpegurlm3u
          audio/x-pn-realaudioram rm
          audio/x-pn-realaudio-pluginrpm
          audio/x-realaudiora
          audio/x-wavwav
          chemical/x-pdbpdb
          chemical/x-xyzxyz
          image/bmpbmp
          image/cgmcgm
          image/gifgif
          image/iefief
          image/jpegjpeg jpg jpe
          image/pngpng
          image/svg+xmlsvg
          image/tifftiff tif
          image/vnd.djvudjvu djv
          image/vnd.wap.wbmp.wbmp wbmp
          image/x-cmu-rasterras
          image/x-iconico
          image/x-portable-anymappnm
          image/x-portable-bitmappbm
          image/x-portable-graymappgm
          image/x-portable-pixmapppm
          image/x-rgbrgb
          image/x-xbitmapxbm
          image/x-xpixmapxpm
          image/x-xwindowdumpxwd
          model/igesigs iges
          model/meshmsh mesh silo
          model/vrmlwrl vrml
          text/calendarics ifb
          text/csscss
          text/html.shtml html htm
          text/plainasc txt
          text/richtextrtx
          text/rtfrtf
          text/sgmlsgml sgm
          text/tab-separated-valuestsv
          text/vnd.wap.wml.wml wml
          text/vnd.wap.wmlscript.wmls wmls
          text/x-setextetx
          video/mpegmpeg mpg mpe
          video/quicktimeqt mov
          video/vnd.mpegurlmxu
          video/x-msvideoavi
          video/x-sgi-moviemovie
          x-conference/x-cooltalkice

               摘要:   閱讀全文
          posted @ 2007-03-28 16:55 Alex 閱讀(4579) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文
          posted @ 2007-03-26 22:18 Alex 閱讀(36118) | 評(píng)論 (7)編輯 收藏

               摘要:   閱讀全文
          posted @ 2007-03-20 16:23 Alex 閱讀(3380) | 評(píng)論 (1)編輯 收藏

          key words : jsp防盜鏈 header

          最近碰到盜鏈的問(wèn)題,即復(fù)制一個(gè)url地址,在另一個(gè)地方也能訪問(wèn)。

          index.jsp頁(yè)面
          <html>
          ??
          <head><title>Simple?jsp?page</title></head>
          ??
          <body>Place?your?content?here

          ??here?is?index?jsp
          ????get?header?info
          ??
          <a?href="a.jsp">a.jsp</a>
          ??
          </body>
          </html>

          a.jsp頁(yè)面
          <html>
          ??
          <head><title>Simple?jsp?page</title></head>
          ??
          <body>Place?your?content?here

          ??here?is?a.?jsp
          ????get?header?info
          ??
          <%=request.getHeader("Referer")%>
          ??
          <%if(null?==?request.getHeader("Referer")?||?request.getHeader("Referer").indexOf("yourdomain.com")?<?0){%>
          ?????做人要厚道
          ??
          <%}else{%>
          ??合法訪問(wèn)
          ??
          <%}%>
          ??
          </body>
          </html>


          即從內(nèi)部訪問(wèn)可以,直接粘貼地址在另一個(gè)瀏覽器里訪問(wèn)禁止
          posted @ 2007-03-13 10:01 Alex 閱讀(5949) | 評(píng)論 (8)編輯 收藏

               摘要:   閱讀全文
          posted @ 2007-03-12 00:40 Alex 閱讀(12402) | 評(píng)論 (18)編輯 收藏

               摘要:   閱讀全文
          posted @ 2007-02-25 00:20 Alex 閱讀(413) | 評(píng)論 (0)編輯 收藏

               摘要:   閱讀全文
          posted @ 2007-02-24 23:37 Alex 閱讀(1900) | 評(píng)論 (2)編輯 收藏

          key words: pd, powerdesigner,外建

          在PD中建立外鍵碰到一個(gè)問(wèn)題,如: forum(id,name)表,forum_thread(id,forum_id)表,需要將forum的id設(shè)為forum_thread的外建,指向forum_id,默認(rèn)的在 PD中是將主鍵設(shè)為外建.

          需要如下設(shè)置才可以:

          foreign_key.png
          posted @ 2007-01-31 10:42 Alex 閱讀(1318) | 評(píng)論 (0)編輯 收藏

          key words: 上傳文件

          目里面有上傳文件的需求,我想了一下不外乎下面兩種處理方法:

          1. 在數(shù)據(jù)庫(kù)表中建立一個(gè)blob字段存放用戶(hù)上傳文件.
          2. 在服務(wù)器上建立一個(gè)文件夾保存用戶(hù)上傳文件,數(shù)據(jù)庫(kù)表中只存放該文件的url地址.

          我本人現(xiàn)在比較傾向于第2種方案, 主要原因是擔(dān)心方案1的效率(我用的是mysql數(shù)據(jù)庫(kù))。 但是處理過(guò)程中除了維護(hù)數(shù)據(jù)庫(kù)中表的字段還要維護(hù)上傳的文件,稍微麻煩一點(diǎn)。

          大家在項(xiàng)目里面又是怎么做呢? 給我點(diǎn)建議!謝謝


          討論內(nèi)容見(jiàn): javaeye

          robin更建議第二種方案,放在數(shù)據(jù)庫(kù)中主要的問(wèn)題是 AppServer吃不消,開(kāi)銷(xiāo)比較大.

          上面是摘錄,不過(guò)我們這里用的是Oracle9i AS,在Oracle的協(xié)作套間里一般文檔或者上傳的文件都是保存在數(shù)據(jù)庫(kù)里,還把這個(gè)特性作為Oracle 與別的協(xié)作套件之間不同的賣(mài)點(diǎn)。

          大家以為如何? 我直覺(jué)是Oracle的DB和oc4j的AppServer對(duì)付這個(gè)似乎沒(méi)有開(kāi)銷(xiāo)上的擔(dān)心,但是沒(méi)有實(shí)際檢測(cè)過(guò)。

          換句話(huà)說(shuō),文件的管理是放在文件夾里方便還是數(shù)據(jù)庫(kù)里方便? 有點(diǎn)為難

          update (2007-5-13):
          還有一種方案結(jié)合了數(shù)據(jù)庫(kù)和IO,我認(rèn)為比較可行,就是文件存在數(shù)據(jù)庫(kù),但是下載的時(shí)候第一次從數(shù)據(jù)庫(kù)下載,然后第一次這個(gè)文件保存在一個(gè)臨時(shí)文件夾下面,以后每次下載的時(shí)候總是先檢查此臨時(shí)文件夾,如果已經(jīng)存在則直接下載,如果沒(méi)有則從數(shù)據(jù)庫(kù)重復(fù)這個(gè)動(dòng)作。當(dāng)然,保存在臨時(shí)文件夾下的文件的命名需要唯一,這個(gè)應(yīng)該沒(méi)有問(wèn)題。
          posted @ 2007-01-31 09:06 Alex 閱讀(1973) | 評(píng)論 (4)編輯 收藏


          這個(gè)年代的偶像很多,值得學(xué)習(xí)的也很多,,如果讓我說(shuō),我覺(jué)得在現(xiàn)在這個(gè)急功近利的所謂2.0時(shí)代,阿甘精神更值得我們學(xué)習(xí)。

          什么是阿甘精神?
          1。奔跑。 不停的奔跑,不要停下來(lái)
          2。不斷地重復(fù),如果你做的不夠好,那就說(shuō)明你還重復(fù)的不夠多。
          3。執(zhí)著。 不要相信權(quán)威,按自己的意志去做。

          現(xiàn)在,聰明的人很多,但是小聰明似乎更多,包括我。

          你認(rèn)可阿甘精神么? 如果是,頂一下。

          剛看到關(guān)于阿甘精神的另一個(gè)有意思的摘錄:



          "
          阿甘就是看到一個(gè)目標(biāo)就走過(guò)去了,別的人是,看見(jiàn)一個(gè)目標(biāo),先訂一個(gè)作戰(zhàn)計(jì)劃,然后匍匐前進(jìn),往左閃,往右躲,再弄個(gè)掩體…一輩子就看他閃轉(zhuǎn)騰挪活得那叫一個(gè)花哨,最后哪兒也沒(méi)到達(dá)。
          "

          很形象哦。

          祝各位在2007年工作進(jìn)步。

          posted @ 2007-01-30 08:59 Alex 閱讀(1232) | 評(píng)論 (2)編輯 收藏

          key words: js,javascript,檢查上傳文件大小

          有時(shí)需要在客戶(hù)端獲得待上傳得文件大小,google了一下,發(fā)現(xiàn)下面這個(gè)用法.

          <html>??
          <input?type="file"?name="file1"?onchange="ShowSize(this.value)">??
          <script?language="JavaScript">??
          <!--??
          function?ShowSize(files)??
          {??
          ??
          var?fso,f;??
          ??fso
          =new?ActiveXObject("Scripting.FileSystemObject");??
          ??f
          =fso.GetFile(files);
          ??
          var?mySize?=?f.size/1024;
          ??alert(mySize
          +"?K?");??
          }
          ??
          //-->??
          </script>??
          </html>


          BTW: 奇怪,COS上傳組件里怎么沒(méi)有獲得上傳文件大小的方法?? MultipartRequest里是沒(méi)有,有知道的兄弟通知下哦
          posted @ 2007-01-25 17:16 Alex 閱讀(10423) | 評(píng)論 (4)編輯 收藏

               摘要: key words : hibernate spring daocome from : http://lpacec.javaeye.com/blog/46220???1.??package?infoweb.dao;?????????2.?????????3.?import?java.util.List;?????????4.?import?java.util.Iterator;?????????5...  閱讀全文
          posted @ 2007-01-25 09:24 Alex 閱讀(921) | 評(píng)論 (0)編輯 收藏

          key words: REST webservice

          轉(zhuǎn)自廖宇雷的Weblog

          REST 是由 Roy Fielding 在他的論文《Architectural Styles and the Design of Network-based Software Architectures》中提出的一個(gè)術(shù)語(yǔ)。

          REST 是英文 Representational State Transfer 的縮寫(xiě),有中文翻譯為“具象狀態(tài)傳輸”(參考:《SIP/IMS網(wǎng)絡(luò)中的Representational State Transfer (REST)和數(shù)據(jù)分布》)。

          —————————————

          前面的內(nèi)容比較枯燥,我說(shuō)說(shuō)我自己的理解。

          但是 REST 到底是什么呢?論文我看不懂,不過(guò)找到一篇更簡(jiǎn)單易懂的東西:《Building Web Services the REST Way》

          根據(jù)這篇文章,我整理了一下我自己對(duì) REST 的理解:

          REST 首先只是一種架構(gòu)樣式,不是一種標(biāo)準(zhǔn)。這點(diǎn)和 Ajax 類(lèi)似,兩者都是利用現(xiàn)有的成熟技術(shù)。

          在 REST 的定義中,一個(gè) Web 應(yīng)用總是使用固定的 URI 向外部世界呈現(xiàn)(或者說(shuō)暴露)一個(gè)資源

          URI 是英文 Uniform Resource Identifier 的縮寫(xiě),中文翻譯“通用資源標(biāo)志符”。

          “通用資源標(biāo)志符”是指唯一標(biāo)識(shí)一個(gè)資源(xhtml 文件、圖片、css 樣式表)的字符串。當(dāng)然了,RFC 中定義的 URI 復(fù)雜得多,不過(guò)我們此處將 URI 想象成一個(gè)人的身份證號(hào)碼就行了(你不能有兩個(gè)同時(shí)有效的身份證號(hào)碼,一個(gè)號(hào)碼也不可能同時(shí)對(duì)應(yīng)兩個(gè)人)。而我們天天掛在嘴邊的 URL 地址就是 URI 的一種表現(xiàn)形式(個(gè)人理解,有錯(cuò)請(qǐng)糾正)。

          知道什么是 URI 后,我們來(lái)看一個(gè)實(shí)際例子:

          http://www.example.com/photo/logo 指向 example.com 網(wǎng)站(可以視為一個(gè) Web 應(yīng)用)中類(lèi)型為 photo,名字為 logo 的資源。我們用瀏覽器訪問(wèn)這個(gè) URI,看到的將可能是一個(gè) xhtml 文檔,其中用 <img src=”……” /> 來(lái)顯示實(shí)際的照片。

          http://www.example.com/photo/logo 很容易讓你想到 URL 重寫(xiě)。事實(shí)上,這個(gè)地址很可能會(huì)在服務(wù)器內(nèi)部處理為 http://www.example.com/photo.php?name=logo 這樣的地址。photo.php 是服務(wù)器端的一個(gè)動(dòng)態(tài)腳本文件,根據(jù) name 參數(shù)生成 xhtml 文檔返回給瀏覽器。

          現(xiàn)在假設(shè)我們要獲取這張照片的 XML 文檔。XML 文檔中包含照片的文件名、文件大小、拍攝日期等等信息。也就是說(shuō)我們要獲取“同一個(gè)資源的不同表現(xiàn)形式的數(shù)據(jù)”。對(duì)于這個(gè)要求,我們可以很容易的用另一個(gè) URL 地址達(dá)到:http://www.example.com/xml/logo。

          但是,這就違背了“URI 唯一標(biāo)識(shí)一個(gè)資源”的定義。如果我們要獲取同一個(gè)資源的多種表現(xiàn)形式,那么就要使用更多的 URL,從而給一個(gè)資源指定了多個(gè)不同的 URI。

          而在 REST 中,不管是獲取照片的 xhtml 文檔還是 XML 文檔,或者照片文件本身,都是用同一個(gè) URI,就是 http://www.example.com/photo/logo。

          那這是怎么辦到的呢?Ruby On Rails 中是通過(guò)分辨 HTTP Request Header 信息來(lái)分辨客戶(hù)端是想要取得資源的哪一種表現(xiàn)形式的數(shù)據(jù)。

          當(dāng)我們用瀏覽器訪問(wèn)一個(gè)網(wǎng)址時(shí),瀏覽器會(huì)構(gòu)造一個(gè) HTTP 請(qǐng)求。這個(gè)請(qǐng)求有一個(gè)頭信息,其中包括了本次請(qǐng)求接受何種類(lèi)型的數(shù)據(jù)。通常瀏覽器發(fā)送的 HTTP 請(qǐng)求頭中,Accept 的值都是 */*,也就說(shuō)接受服務(wù)器返回的任何類(lèi)型的數(shù)據(jù)。

          看到這里,聰明的家伙應(yīng)該知道了。只要我們指定一個(gè)特定的 Accept 參數(shù),那么服務(wù)器就可以通過(guò)判斷該參數(shù)來(lái)決定返回什么類(lèi)型的數(shù)據(jù)。所以在一個(gè)采用 REST 架構(gòu)的應(yīng)用中,要獲取同一個(gè)資源的不同表現(xiàn)形式的數(shù)據(jù),只需要使用不同的 HTTP 請(qǐng)求頭信息就行了。

          如果考慮為 Web 應(yīng)用增加 Web Services,這種技術(shù)的價(jià)值就體現(xiàn)出來(lái)了。比如我寫(xiě)了一個(gè) Delphi 程序,現(xiàn)在只需要構(gòu)造一個(gè)包含 Accept: text/xml 的 HTTP 請(qǐng)求頭,然后將請(qǐng)求發(fā)送到 http://www.example.com/photo/logo 就可以了。返回的結(jié)果就是一個(gè) XML 文檔,而不是 xhtml 文檔。

          因?yàn)槲覀兊?HTTP 請(qǐng)求頭信息有不同的狀態(tài),從而可以獲得不同的數(shù)據(jù),所以叫做“具象狀態(tài)傳輸” :)

          —————————————

          除了上面的用法,REST 還有進(jìn)一步的擴(kuò)展。

          我們?cè)?Web 應(yīng)用中處理來(lái)自客戶(hù)端的請(qǐng)求時(shí),通常只考慮 GET 和 POST 這兩種 HTTP 請(qǐng)求方法。實(shí)際上,HTTP 還有 HEAD、PUT、DELETE 等請(qǐng)求方法。而在 REST 架構(gòu)中,用不同的 HTTP 請(qǐng)求方法來(lái)處理對(duì)資源的 CRUD(創(chuàng)建、讀取、更新和刪除)操作:

          • POST: 創(chuàng)建
          • GET: 讀取
          • PUT: 更新
          • DELETE: 刪除

          經(jīng)過(guò)這樣的一番擴(kuò)展,我們對(duì)一個(gè)資源的 CRUD 操作就可以通過(guò)同一個(gè) URI 完成了:

          http://www.example.com/photo/logo(讀取)
          仍然保持為 [GET] http://www.example.com/photo/logo

          http://www.example.com/photo/logo/create(創(chuàng)建)
          改為 [POST] http://www.example.com/photo/logo

          http://www.example.com/photo/logo/update(更新)
          改為 [PUT] http://www.example.com/photo/logo

          http://www.example.com/photo/logo/delete(刪除)
          改為 [DELETE] http://www.example.com/photo/logo

          從而進(jìn)一步規(guī)范了資源標(biāo)識(shí)的使用。

          通過(guò) REST 架構(gòu),Web 應(yīng)用程序可以用一致的接口(URI)暴露資源給外部世界,并提供對(duì)資源的操作服務(wù)。這對(duì)于以資源為中心的 Web 應(yīng)用來(lái)說(shuō)非常重要。例如照片共享網(wǎng)站、用戶(hù)社區(qū)等。

          —————————————

          Ruby On Rails 1.2 版對(duì) REST 有很好的支持,但要在 PHP 中應(yīng)用 REST 還需要解決不少問(wèn)題:

          • 如何在服務(wù)端判斷 PUT、DELETE 請(qǐng)求方法;
          • 如何獲取用 PUT、DELETE 請(qǐng)求方法中傳遞的數(shù)據(jù);
          • 如何獲取 HTTP 請(qǐng)求頭信息中的 Accept 參數(shù)值;
          • 如何在瀏覽器端發(fā)起 PUT 和 DELETE 請(qǐng)求。

          不過(guò)我仔細(xì)看了 PHP 文檔,我覺(jué)得上面幾個(gè)問(wèn)題都是可以解決的。

          服務(wù)端綜合使用 $_SERVER[’HTTP_ACCEPT’]、$_SERVER[’REQUEST_URI’]、$_SERVER[’REQUEST_METHOD’]、$_SERVER[’QUERY_STRING’] 這些變量應(yīng)該可以搞定前面三個(gè)問(wèn)題。而第四個(gè)問(wèn)題則可以用 JavaScript 的 XMLHttpRequest 對(duì)象來(lái)實(shí)現(xiàn)。

          不過(guò)我想 REST 的真正價(jià)值在于 Web Services,而不是通過(guò)瀏覽器操作的應(yīng)用程序。

          —————————————

          參考:

          posted @ 2007-01-23 08:30 Alex 閱讀(449) | 評(píng)論 (0)編輯 收藏

          key words : web快速開(kāi)發(fā)

          web快速開(kāi)發(fā)是一個(gè)值得期待的東西,最早我接觸過(guò)codecharge,是一個(gè)商業(yè)軟件,功能據(jù)說(shuō)很強(qiáng)大,我試用過(guò),支持php,asp,jsp等多語(yǔ)言,但是感覺(jué)對(duì)java的支持不是很順手,接著就是asp,這個(gè)好也不好,原因就不說(shuō)了,因?yàn)槲覍?duì)java關(guān)注。

          2. 接著就是dorado ,剛看到的,感覺(jué)也不錯(cuò),有asp的風(fēng)格,不過(guò)更適合j2ee的環(huán)境 ,這里是他們的在線演示demo,有興趣的可以看一下

          3. 最后,剛google了一下,Oracle也有一個(gè)基于Oracle數(shù)據(jù)庫(kù)的快速開(kāi)發(fā)產(chǎn)品? : APEX,基于瀏覽器做DB 開(kāi)發(fā),原來(lái)的名字叫做HTML DB,名字很直觀,據(jù)說(shuō)Oracle的metalink就是用這個(gè)實(shí)現(xiàn)的,應(yīng)該功能不賴(lài)。

          4.對(duì)了,再補(bǔ)充一個(gè)現(xiàn)在很熱的,Ror,聽(tīng)說(shuō)javaeye的網(wǎng)站要重新用ruby1.2開(kāi)發(fā),試用過(guò)一點(diǎn),感覺(jué)確實(shí)令人震驚,值得關(guān)注。

          java的技術(shù)其實(shí)是看著很熱鬧,比較大的東西也不少,但是真正關(guān)注web這一塊的其實(shí)不多,無(wú)論是struts還是webwork,離我們所說(shuō)的真正的“快速開(kāi)發(fā)”的距離很遠(yuǎn),而以上一些工具的出現(xiàn)也許會(huì)逐步改善j2ee在這一領(lǐng)域的現(xiàn)狀。

          我之所以對(duì)這個(gè)目前有點(diǎn)興趣,確實(shí)有一種強(qiáng)烈的反差在折磨著我,因?yàn)槲蚁嘈旁趈2ee的web開(kāi)發(fā)里確實(shí)存在本來(lái)要開(kāi)發(fā)1周多的工作量很可能用一個(gè)好的工具幾個(gè)小時(shí)就搞定了,這是一件多么荒唐搞笑的事情?如果dorado在它的產(chǎn)品中真的能做到這樣那我們的java開(kāi)發(fā)那么坑吃坑吃的折騰個(gè)什么勁啊? 也許真的有奇跡,我寧愿相信有這樣的奇跡。

          大家有什么好的想法可以討論一下。
          posted @ 2007-01-20 22:56 Alex 閱讀(3785) | 評(píng)論 (7)編輯 收藏

          key words: powerdesign,power , design

          引言:
          發(fā)現(xiàn)powerdesign的文檔真的是不多,不過(guò)powerdesign還是很有用的,見(jiàn)到此類(lèi)文檔就收藏下吧.

          轉(zhuǎn)自edeed

          ?附上一些使用pd11的心得:

          1、安裝PD v11.0版

          2、由pdm生成建表腳本時(shí),字段超過(guò)15字符就發(fā)生錯(cuò)誤(oracle)
          原因未知,解決辦法是打開(kāi)PDM后,會(huì)出現(xiàn)Database的菜單欄,進(jìn)入Database - Edit Current DBMS -script-objects-column-maxlen,把value值調(diào)大(原為30),比如改成60。出現(xiàn)表或者其它對(duì)象的長(zhǎng)度也有這種錯(cuò)誤的話(huà)都可以選擇對(duì)應(yīng)的objects照此種方法更改!
          或者使用下面的這種方法:
          生成建表腳本時(shí)會(huì)彈出Database generation提示框:把options - check model的小勾給去掉,就是不進(jìn)行檢查(不推薦)!
          或者可以修改C:\Program Files\Sybase\PowerDesigner Trial 11\Resource Files\DBMS\oracl9i2.xdb文件
          修改好后,再cdm轉(zhuǎn)為pdm時(shí),選擇“Copy the DBMS definition in model”把把這個(gè)資源文件拷貝到模型中。

          3、生成的建表腳本中如何把對(duì)象的雙引號(hào)去掉?
          打開(kāi)cdm的情況下,進(jìn)入Tools-Model Options-Naming Convention,把Name和Code的標(biāo)簽的Charcter case選項(xiàng)設(shè)置成Uppercase或者Lowercase,只要不是Mixed Case就行!
          或者選擇Database->Edit current database->Script->Sql->Format,有一項(xiàng)CaseSensitivityUsingQuote,它的 comment為“Determines if the case sensitivity for identifiers is managed using double quotes”,表示是否適用雙引號(hào)來(lái)規(guī)定標(biāo)識(shí)符的大小寫(xiě),可以看到右邊的values默認(rèn)值為“YES”,改為“No”即可!
          或者在打開(kāi)pdm的情況下,進(jìn)入Tools-Model Options-Naming Convention,把Name和Code的標(biāo)簽的Charcter case選項(xiàng)設(shè)置成Uppercase就可以!

          4、建立一個(gè)表后,為何檢測(cè)出現(xiàn)Existence of index的警告
          A table should contain at least one column, one index, one key, and one reference.
          可以不檢查 Existence of index 這項(xiàng),也就沒(méi)有這個(gè)警告錯(cuò)誤了!
          意思是說(shuō)沒(méi)有給表建立索引,而一個(gè)表一般至少要有一個(gè)索引,這是一個(gè)警告,不用管也沒(méi)有關(guān)系!

          5、創(chuàng)建一個(gè)表在修改字段的時(shí)候,一修改name的內(nèi)容,code也跟著變化,如何讓code不隨著name變化
          Name和Code 的右側(cè)都有一個(gè)按鈕“=”,如果需要不同步的話(huà),把這個(gè)按鈕彈起來(lái)就可以了。
          Tools->General Options->Dialog->Name to Code Mirroring (去掉)

          6、由CDM生成PDM時(shí),自動(dòng)生成的外鍵的重命名
          PDM Generation Options->Detail->FK index names默認(rèn)是%REFR%_FK,改為FK_%REFRCODE%,其中%REFRCODE%指的就是CDM中Relationship的code!另外自動(dòng)生成的父字段的規(guī)則是PDM Generation Options->Detail->FK column name template中設(shè)置的,默認(rèn)是%.3:PARENT%_%COLUMN%,可以改為Par%COLUMN%表示是父字段!

          7、如何防止一對(duì)一的關(guān)系生成兩個(gè)引用(外鍵)
          要定義關(guān)系的支配方向,占支配地位的實(shí)體(有D標(biāo)志)變?yōu)楦副怼?br />在cdm中雙擊一對(duì)一關(guān)系->Detail->Dominant role選擇支配關(guān)系

          8、修改報(bào)表模板中一些術(shù)語(yǔ)的定義
          即文件:C:\Program Files\Sybase\PowerDesigner Trial 11\Resource Files\Report Languages\Chinese.xrl
          Tools-Resources-Report Languages-選擇Chinese-單擊Properties或雙擊目標(biāo)
          修改某些對(duì)象的名稱(chēng):Object Attributes\Physical Data Model\Column\
          ??????? ForeignKey:外鍵
          ??????? Mandatory:為空
          ??????? Primary:主鍵
          ??????? Table:表
          用查找替換,把“表格”替換成“表”
          修改顯示的內(nèi)容為別的:Values Mapping\Lists\Standard,添加TRUE的轉(zhuǎn)化列為是,F(xiàn)ALSE的轉(zhuǎn)化列為空
          另外Report-Title Page里可以設(shè)置標(biāo)題信息
          posted @ 2007-01-17 09:55 Alex 閱讀(3166) | 評(píng)論 (3)編輯 收藏

          key words : beanShell ,動(dòng)態(tài)腳本

          原來(lái)第一次是在osworkflow中聽(tīng)說(shuō)過(guò)beanShell,最近又碰到,感覺(jué)還是挺有用的,比如對(duì)于我來(lái)說(shuō)我就想有一些class文件拿過(guò)來(lái)直接調(diào)用看看,但有不想搭建一個(gè)麻煩的環(huán)境,而beanshell就可以滿(mǎn)足我這個(gè)需求。

          假設(shè)我欲調(diào)用的java為MyShit
          package?com.app;

          public?class?MyShit
          {
          ????
          static{
          ????????System.out.println(
          "this?is?in?static?blog");
          ????}

          ????
          public?static?void?main(String[]?args){
          ????????System.out.println(
          "this?is?in?main?method?:?hello?shit");
          ????}

          ????
          public?void?shit(){
          ????????System.out.println(
          "hello?shit!!!");
          ????}


          ????
          public?static?void?haha(){
          ????????System.out.println(
          "this?is?static?method?haha");
          ????}

          }


          javac ...
          java ..

          在dos中設(shè)置classpath,指向該class文件

          set classpath=%classpath%;c:\beanshell

          編寫(xiě)一個(gè) bsh的bat文件,便于dos直接調(diào)用beanshell腳本
          ?
          java?bsh.Interpreter?%1


          編寫(xiě)一個(gè)test.bsh腳本
          //mytest
          import?com.app.*;

          print(
          "hello,it's?a?beanShell?test");

          List?list??
          =?new?ArrayList();
          list.add(
          "111");
          list.add(
          "222");
          list.add(
          "333");

          print(
          "the?list?=?"?+?list);

          Date?date?
          =?new?Date();
          print(
          "the?date?=?"?+?date);

          //method?test

          add(?a,?b?)?
          {
          ????
          return?a?+?b;
          }


          foo?
          =?add(1,?2);????????????//?3
          print("foo?=?"?+?foo);
          foo?
          =?add("Oh",?"?baby");???//?"Oh?baby"
          print("foo?=?"?+?foo);

          //about?object
          foo()?{
          ????print(
          "foo");
          ????x
          =5;

          ????bar()?
          {
          ????????print(
          "foo's?method?bar()");
          ????}


          ????
          return?this;
          }


          myfoo?
          =?foo();????//?prints?"foo"
          print(?myfoo.x?);?//?prints?"5"
          myfoo.bar();??????//?prints?"bar"

          MyShit?shit?
          =?new?MyShit();
          shit.shit();
          shit.main(
          null);
          print(
          "do?you?shit");

          //MyShit.haha();


          在dos下運(yùn)行 bsh test.bsh就OK了

          另外,beanshell作為動(dòng)態(tài)腳本語(yǔ)言可以結(jié)合 spring2.0的新特性,你新寫(xiě)的業(yè)務(wù)類(lèi)可以直接修改而不用重新發(fā)布,怎么樣,是不是比較方便,詳細(xì)操作請(qǐng)參考Springframework 2.0 與 ZK 混合開(kāi)發(fā)實(shí)例

          試一試!

          詳細(xì)使用請(qǐng)參考官方文檔
          posted @ 2007-01-09 20:01 Alex 閱讀(6519) | 評(píng)論 (7)編輯 收藏

          key words: 連接池 數(shù)據(jù)庫(kù)

          發(fā)現(xiàn)一個(gè)有意思的現(xiàn)象,好多人在開(kāi)發(fā)過(guò)程中不知道是出于訓(xùn)練自己編碼還是為了重新發(fā)明輪子,總之明明已經(jīng)存在的功能他非要自己實(shí)現(xiàn)一遍。

          今天又碰到一個(gè)。

          jdbc的連接,好多人也喜歡自己實(shí)現(xiàn)一個(gè)連接池,但是對(duì)于app server來(lái)說(shuō)本身一般都有支持連接池的,為什么不用呢?
          寫(xiě)了一通又長(zhǎng)又臭的代碼,自己以為牛B的很,其實(shí)算個(gè)球啊。

          不要浪費(fèi),不要自己發(fā)明輪子,你不是最牛的,一定還有比你更牛的!

          對(duì)于weblogic或者oracle以及ibm的產(chǎn)品來(lái)說(shuō),大家還是比較習(xí)慣于用容器的jndi,但是即使對(duì)于tomcat,我個(gè)人也建議用tomcat自帶的。

          附: jndi連接數(shù)據(jù)庫(kù)

          public?final?static?synchronized?Connection?getConnection(String?inputJNDI)?throws
          ??????DBMException?
          {
          ????Connection?conn?
          =?null;
          ????String?strConnJNDI?
          =?null;
          ????
          try?{
          ??????Context?ctx?
          =?new?InitialContext();
          ??????_log.debug(ctx);

          ??????
          if?(null?!=?inputJNDI)?{
          ????????
          if(inputJNDI.length()?>?0)
          ??????????strConnJNDI?
          =?inputJNDI;
          ????????
          else
          ??????????strConnJNDI?
          =?dbJndiName;
          ??????}

          ??????
          else?{
          ????????strConnJNDI?
          =?dbJndiName;
          ??????}

          ??????DataSource?ds?
          =?(DataSource)?ctx.lookup(strConnJNDI);
          ??????_log.debug(ds);
          ??????conn?
          =?ds.getConnection();
          ????}

          ????
          catch?(Exception?ex)?{
          ??????_log.error(
          "It's?error?to?get?connection",?ex);
          ??????
          throw?new?DBMException("Error?to?get?connection");
          ????}

          ????_log.debug(conn);
          ????
          return?conn;
          ??}


          以此類(lèi)推,類(lèi)似于xml解析等的工作也沒(méi)有必要自己一步一步地用dom或者什么亂七八糟的sax自己去搞一遍,搞了半天就使為了得到其中的一個(gè)value,何苦來(lái)著???? 如果你不是為了做研究,那么,效率第一,安全第一.

          隨便說(shuō)說(shuō),也許有人不同意我的觀點(diǎn),沒(méi)關(guān)系,盡管談?wù)劊? :)
          posted @ 2007-01-04 20:58 Alex 閱讀(1949) | 評(píng)論 (8)編輯 收藏

          key words: 2007 plans

          新的一年開(kāi)始了,制定一個(gè)計(jì)劃吧

          說(shuō)說(shuō)你有什么計(jì)劃

          如圖:

          2007-plans.png
          posted @ 2007-01-03 23:31 Alex 閱讀(1507) | 評(píng)論 (12)編輯 收藏

          key words: tomcat,數(shù)據(jù)源配置,datasource

          把一個(gè)應(yīng)用從4.1移到5.5數(shù)據(jù)源死活不出來(lái),用probe察看了一下居然datasource配置錯(cuò)誤.

          4.x的配置如下:

          <Context?path="/cpms"?docBase="cpms"???debug="99"?privileged="true">
          ????????????
          <Resource?name="jdbc/report"?auth="Container"?type="javax.sql.DataSource"/>
          ????????????
          <ResourceParams?name="jdbc/report">?
          ????????????????
          <parameter>
          ????????????????????
          <name>username</name>
          ????????????????????
          <value>root</value>
          ????????????????
          </parameter>
          ????????????????
          <parameter>
          ????????????????????
          <name>password</name>
          ????????????????????
          <value>XXX</value>
          ????????????????
          </parameter>
          ????????????????
          <parameter>
          ????????????????????
          <name>driverClassName</name>?
          ????????????????????
          <value>org.gjt.mm.mysql.Driver</value>
          ????????????????
          </parameter>
          ????????????????
          <parameter>
          ????????????????????
          <name>url</name>?
          ????????????????????
          <value>jdbc:mysql://localhost/app</value>
          ????????????????
          </parameter>?
          ????????????????
          <parameter>
          ??????????
          <name>RemoveAbandoned</name>
          ??????????
          <value>true</value>
          ????????
          </parameter>
          ????????
          <parameter>
          ??????????
          <name>LogAbandoned</name>
          ??????????
          <value>true</value>
          ????????
          </parameter>
          ????????
          <parameter>
          ??????????
          <name>RemoveAbandonedTimeout</name>
          ??????????
          <value>60</value>
          ????????
          </parameter>
          ??????????????
          </ResourceParams>?
          ????
          </Context>??


          5.x的配置如下:

          <Context?path="/app"?docBase="cpms"
          ????????debug
          ="5"?reloadable="true"?crossContext="true">



          ??
          <Resource?name="jdbc/report"?auth="Container"?type="javax.sql.DataSource"
          ???????????????maxActive
          ="100"?maxIdle="30"?maxWait="10000"
          ???????????????username
          ="develop"?password="XX"?driverClassName="com.mysql.jdbc.Driver"
          ???????????????url
          ="jdbc:mysql://localhost:3306/app?autoReconnect=true"/>
          </Context>


          沒(méi)有具體看原因.知道的兄弟可以發(fā)表高見(jiàn)

          tomcat的管理和監(jiān)控推薦用probe,自帶的那個(gè)admin管理太濫了。

          posted @ 2006-12-22 12:04 Alex 閱讀(1723) | 評(píng)論 (1)編輯 收藏

          key words: sql server,單用戶(hù),master恢復(fù)

          ?作者:jankie
          日期:2006-12-1

          一、MASTER數(shù)據(jù)庫(kù)備份與恢復(fù)
          ? ?1、數(shù)據(jù)庫(kù)master正常情況下對(duì)master進(jìn)行(完全)備份;
          若要恢復(fù):
          ? ?2、停止SQL Server服務(wù);
          ? ?3、以單用戶(hù)實(shí)例的方式啟動(dòng)SQL Server,啟動(dòng)時(shí)不要把窗口關(guān)閉;(具體看二)
          ? ?4、然后再對(duì)MASTE數(shù)據(jù)庫(kù)進(jìn)行恢復(fù)即可;

          二、MSSQL單用戶(hù)實(shí)例的啟動(dòng)方法:
          ??如何在單用戶(hù)模式下啟動(dòng)SQL Server的命名實(shí)例(命令提示符)? ?
          ??在單用戶(hù)模式下從命令提示符啟動(dòng)SQL Server 的命名實(shí)例? ???
          ??從命令提示符輸入:? ???
          ??sqlservr.exe -c??-m? ?-s? ?{instancename}? ?

          例1:
          ??1、sqlserver.exe -c -m 回車(chē)(默認(rèn)實(shí)例)
          ??2、sqlserver.exe -c -m -s benet (實(shí)例名為benet)
          ? ?
          ??說(shuō)明在啟動(dòng) sqlservr.exe之前,必須在命令窗口中切換到適當(dāng)?shù)哪夸?br />如:c:\program files\microsoft sql server\mssql\bin目錄下
          posted @ 2006-12-21 15:08 Alex 閱讀(506) | 評(píng)論 (0)編輯 收藏

          key words: dll,ocx,注冊(cè)控件

          最近項(xiàng)目中用到了收銀,需要在顧顯上顯示金額.


          1.將.dll、.ocx等考到system32下。
          2.用命令注冊(cè)regsvr32.exe? .dll。(eg:regsvr32.exe? OWC11.dll)
          3.在注冊(cè)表中查看:利用名稱(chēng)或與其唯一對(duì)應(yīng)的clsid("clsid:0002E55D-0000-0000-C000-???000000000046")可查找到相關(guān)信息
          posted @ 2006-12-20 15:13 Alex 閱讀(699) | 評(píng)論 (0)編輯 收藏

               摘要: key words: bea world2006 ,workshop studio, 快速開(kāi)發(fā)

          bea world 2006 北京已經(jīng)過(guò)去好幾天了,早就想記錄一下一直忙 :)
            閱讀全文
          posted @ 2006-12-20 11:39 Alex 閱讀(2669) | 評(píng)論 (10)編輯 收藏

          key words: commons log,log4j,apache log

          前言: 對(duì)于log4j雖然在用,但是也存在一個(gè)疑問(wèn),怎么有的用apache的commons logging有的直接用log4j,下面的這篇文章解釋了我的疑問(wèn).

          轉(zhuǎn)自 here

          Apache組織開(kāi)發(fā)了一套用于支持Logging的Log4J,Java?1.4版本也引入了一套內(nèi)置的 Logging框架,如果開(kāi)發(fā)者想在這兩套Logging系統(tǒng)之間自由的切換,該怎么辦呢?答案就是,使用Commons?Logging。 Commons?Logging定義了一套抽象的Logging接口,用戶(hù)可以通過(guò)配置,使這些接口指向任何一個(gè)已存在的Logging系統(tǒng)。

          ?使用抽象Logging接口
          問(wèn)題:
          你在編寫(xiě)一個(gè)可以重復(fù)使用的庫(kù),需要寫(xiě)入Log信息,但你不想使你的Logging功能綁定在Apache?Log4J或者JDK?1.4?Logging框架上。
          解決方案:

          public?static?void?main(String[]?args)?{//自己替換[]

          ??System.setProperty("org.apache.commons.logging.Log",
          ??????"org.apache.commons.logging.impl.Jdk14Logger");
          ??Log?log?=?LogFactory.getLog("com.discursive.jccook.SomeApp");

          ??if?(log.isTraceEnabled())?{
          ????log.trace("This?is?a?trace?message");
          ??}

          ??if?(log.isDebugEnabled())?{
          ????log.debug("This?is?a?debug?message");
          ??}

          ??log.info("This?is?an?informational?message");
          ??log.warn("This?is?a?warning");
          ??log.error("This?is?an?error");
          ??log.fatal("This?is?fatal");

          }


          LogFactory.getLog方法會(huì)根據(jù)底層環(huán)境返回一個(gè)適當(dāng)?shù)腖og實(shí)現(xiàn)。如果用戶(hù)想指定一個(gè)具體的Logging系統(tǒng)實(shí)現(xiàn),可以設(shè)置org.apache.commons.logging.Log系統(tǒng)屬性。例如:
          System.setProperty("org.apache.commons.logging.Log",
          "org.apache.commons.logging.impl.Log4JLogger");
          這樣就會(huì)使用Log4J作為L(zhǎng)ogging系統(tǒng)。
          org.apache.commons.logging.Log可以設(shè)定為:
          ?org.apache.commons.logging.impl.Log4JLogger??使用Log4J
          ?org.apache.commons.logging.impl.Jdk14Logger??使用JDK?1.4?Logging框架
          ?org.apache.commons.logging.impl.SimpleLog??使用Commons?Logging內(nèi)置的簡(jiǎn)單Log實(shí)現(xiàn)
          其他:
          總結(jié)一下,Commons?Logging會(huì)按照下列順序來(lái)指定具體的Log實(shí)現(xiàn)。
          ?如果定義了org.apache.commons.logging.Log系統(tǒng)參數(shù),實(shí)用指定的Logging實(shí)現(xiàn)。
          ?如果在CLASSPATH里發(fā)現(xiàn)了Log4J,使用Log4J。
          ?如果使用的是JDK1.4,使用JDK1.4內(nèi)置的Logging框架。
          ?如果都沒(méi)有找到,則使用Commons?Logging內(nèi)置的簡(jiǎn)單Log實(shí)現(xiàn)。
          posted @ 2006-12-18 15:38 Alex 閱讀(715) | 評(píng)論 (0)編輯 收藏

          key words : 職業(yè)規(guī)劃? 高薪

          原文見(jiàn)robbin的pdf,我整理了一下腦圖

          職業(yè)規(guī)劃與高薪之路.png
          posted @ 2006-12-17 13:25 Alex 閱讀(3458) | 評(píng)論 (6)編輯 收藏

          注意:這篇文章是由無(wú)人工介入的自動(dòng)的機(jī)器翻譯系統(tǒng)翻譯完成。這些文章是微軟為不懂英語(yǔ)的用戶(hù)提供的, 以使他們能夠理解這些文章的內(nèi)容。微軟不保證機(jī)器翻譯的正確度,也不對(duì)由于內(nèi)容的誤譯或者客戶(hù)對(duì)它的使用所引起的任何直接的, 或間接的可能的問(wèn)題負(fù)責(zé)。

          概要

          Microsoft SQL Server 2000 支持同一計(jì)算機(jī)上同時(shí)運(yùn)行的多個(gè) SQLServer 數(shù)據(jù)庫(kù)引擎實(shí)例。 以下是兩種類(lèi)型的 SQLServer 數(shù)據(jù)庫(kù)引擎實(shí)例: 默認(rèn)和命名。 只能有, 任何計(jì)算機(jī)上運(yùn)行一個(gè)默認(rèn)實(shí)例并且由默認(rèn)實(shí)例運(yùn)行計(jì)算機(jī)上的名稱(chēng)標(biāo)識(shí)它。 通常指定以下列格式: 計(jì)算機(jī)名和實(shí)例名稱(chēng)
          computer_name\instance_name
          要 MicrosoftSQLServer2000JDBC, 連接命名實(shí)例通過(guò) SQL 服務(wù)器 2000 MicrosoftTextDriver 必須指定端口號(hào)與命名實(shí)例, 代替的命名實(shí)例名稱(chēng)相關(guān)聯(lián)如前面。

          更多信息

          要查找 SQLServer 實(shí)例端口號(hào), 請(qǐng)按照下列步驟:
          1.在 Microsoft SQL Server 2000 服務(wù)器, 啟動(dòng) SQL Server 網(wǎng)絡(luò)實(shí)用工具。
          2.要從 實(shí)例 下拉菜單實(shí)例依次, 常規(guī) 選項(xiàng)卡。
          3.TCP/IP, 依次 屬性 。 注意, 在 屬性 對(duì)話(huà)框中出現(xiàn)端口號(hào)為此實(shí)例。

          當(dāng)您連接到 SQLServer 通過(guò) JDBC 連接 URL 中使用只要有該值,。 下面是典型連接 URL 的示例:

          jdbc:microsoft:sqlserver: / 1433; yourServerName / 用戶(hù) = yourUser ; 密碼 = yourPwd :
          在本示例, 使用默認(rèn)端口是 1433。 將此默認(rèn)替換端口號(hào)為您命名實(shí)例。
          posted @ 2006-12-17 00:35 Alex 閱讀(1240) | 評(píng)論 (0)編輯 收藏

          key words: jsp,jstl,1.0,1.1,fn函數(shù)

          原來(lái)一直用struts,最近項(xiàng)目里有人用jstl,我也就順便拿來(lái)用,感覺(jué)還是不錯(cuò)。

          過(guò)程中碰到一些小的問(wèn)題總結(jié)如下:

          一。版本問(wèn)題
          jstl存在1.0和1.1的差異問(wèn)題,用EL建議需要在1.1的版本下,1.1的URI的標(biāo)志為:
          <%@?taglib?uri="http://java.sun.com/jsp/jstl/core"?prefix="c"%>
          <%@?taglib?uri="http://java.sun.com/jsp/jstl/functions"?prefix="fn"%>

          注意,1.0版本沒(méi)有/jsp/.

          如果用的1.0會(huì)出現(xiàn)如下異常
          org.apache.jasper.JasperException:?/public/left_tree.jsp(100,24)?According?to?TLD?or?attribute?directive?in?tag?file,?attribute?items?does?not?accept?any?expressions
          ????org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:
          510)
          ????org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:
          375)
          ????org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:
          314)
          ????org.apache.jasper.servlet.JspServlet.service(JspServlet.java:
          264)
          ????javax.servlet.http.HttpServlet.service(HttpServlet.java:
          802)
          ????org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:
          75)
          ????org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:
          77)
          ????com.wellsoon.zfzw.webapp.common.VabAccessFilter.doFilter(VabAccessFilter.java:
          43)


          root?cause?



          二。打開(kāi)EL

          <%@?page?contentType="text/html;charset=gb2312"?language="java"?isELIgnored="false"?%>

          前提是容器支持2.0,即使支持默認(rèn)也未必打開(kāi),最安全的方式就是顯示打開(kāi) isELIgnored="false"

          三.fn的用法
          對(duì)于Vo里的一個(gè)List作length的計(jì)算或判斷很方便
          <table?width="160"?border="0"?cellspacing="0"?cellpadding="4">
          ????????????????????????
          <c:forEach?items="${menuInfos}"?var="m">
          ????????????????????????????
          <c:if?test="${fn:length(m.subMenus)>0}">
          ??????????????????????????
          <tr>
          ????????????????????????????
          <td>
          ????????????????????????????????
          <script?language="JavaScript">
          ??????????????????????????????????????
          var?tObj?=?new?treeClass("A1")
          ??????????????????????????????????????tObj.start();
          ?????????????????????????????????????tObj.m_start(
          "<c:out?value="${m.menuModule}"/>",0);
          ????????????????????????????????????
          <c:forEach?items="${m.subMenus}"?var="sub">
          ??????????????????????????????????????tObj.add_Sub(
          "<c:out?value="${sub.menuName}"/>","<%=path%>
          <c:out?value=
          "${sub.url}"/>","mymain");
          ????????????????????????????????????
          </c:forEach>
          ?????????????????????????????????????tObj.m_end();
          ??????????????????????????????????????tObj.end();
          ??????????????????????????????????????tObj.print();
          ?????????????????????????????????
          </script>
          ????????????????????????????
          </td>
          ????????????????????????
          </tr>
          ????????????????????????????
          </c:if>
          ????????????????????????
          </c:forEach>

          ????????????????????
          </table>
          ?
          四.tld的聲明可以在web.xml作顯式聲明也可以用http作直接URL聲明
          推薦用本地的方式.

          posted @ 2006-12-11 19:21 Alex 閱讀(2807) | 評(píng)論 (2)編輯 收藏

          主站蜘蛛池模板: 彭水| 景德镇市| 汉中市| 黄龙县| 顺昌县| 台前县| 德阳市| 韩城市| 甘孜县| 山阳县| 石嘴山市| 谢通门县| 宣汉县| 慈溪市| 渭源县| 桂东县| 克山县| 财经| 英德市| 苍山县| 微博| 麻城市| 皋兰县| 铁力市| 泌阳县| 渭南市| 中超| 东丽区| 嘉善县| 永登县| 漾濞| 河西区| 修武县| 新兴县| 始兴县| 祥云县| 钦州市| 连云港市| 灵川县| 余江县| 应用必备|