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

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

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

    隨筆-23  評論-6  文章-1  trackbacks-0
      2005年9月26日

    sourceforge http://www.sourceforge.net
    java.net http://www.java.net

    www.eclipse.org

    www.opensource.org

    Lomboz http://www.objectlearn.com/index.jsp (J2EE plugin for Eclipse)
    htmlArea http://sourceforge.net/projects/itools-htmlarea/ (所見即所得的在線HTML編輯器)
    XmlBuddy http://www.xmlbuddy.com/ (XML Editor plugin for Eclipse)
    JFreeChart http://www.jfree.org/ (用于生成圖表的項(xiàng)目)
    EclipseME http://eclipseme.sourceforge.net/ (J2ME Developmnt Plugin for Eclipse)
    mvnForum http://sourceforge.net/projects/mvnforum/ (論壇)
    jChatBox http://www.javazoom.net/index.shtml (用servlet實(shí)現(xiàn)的WEB聊天引擎)
    POI http://jakarta.apache.org/poi/index.html (用于處理Excel,WORD等文檔的項(xiàng)目)
    FileUpload http://jakarta.apache.org/commons/fileupload/ (用于處理HTTP文件上傳得項(xiàng)目)
    PDFBox http://sourceforge.net/projects/pdfbox/ (處理PDF文檔的項(xiàng)目)
    Lucene http://jakarta.apache.org/lucene/index.html (搜索引擎)
    Digester http://jakarta.apache.org/commons/digester/ (處理XML信息的項(xiàng)目)
    DBCP http://jakarta.apache.org/commons/dbcp/ (數(shù)據(jù)庫連接池)
    AXIS http://ws.apache.org/axis/ (WebService 的實(shí)現(xiàn)框架)
    Jetspeed http://portals.apache.org/jetspeed-1/ (Portal)
    HSQLDB http://sourceforge.net/projects/hsqldb/ (Im memory Database Engine)
    CEWOLF http://sourceforge.net/projects/cewolf/ (一套標(biāo)簽庫實(shí)現(xiàn)Web報(bào)表,使用的是jFreeChart引擎)
    Struts Menu http://sourceforge.net/projects/struts-menu/ (基于Struts的Web菜單項(xiàng)目)
    htmlparser http://sourceforge.net/projects/htmlparser/ (用于解析HTML信息的項(xiàng)目)
    Mondrian http://sourceforge.net/projects/mondrian/(Open Source OLAP Database)
    ProGuard http://sourceforge.net/projects/proguard/(Java的混淆器)
    InfoGlue http://sourceforge.net/projects/infoglue/ (J2EE 內(nèi)容管理系統(tǒng))
    JPivot http://sourceforge.net/projects/jpivot/ (基于WEB的OLAP 展現(xiàn))
    http://java-source.net/

    http://www.javaalmanac.com - Java開發(fā)者年鑒一書的在線版本. 要想快速查到某種Java技巧的用法及示例代碼, 這是一個(gè)不錯(cuò)的去處.
    http://www.onjava.com - O'Reilly的Java網(wǎng)站. 每周都有新文章.
    http://java.sun.com - 官方的Java開發(fā)者網(wǎng)站 - 每周都有新文章發(fā)表.
    http://www.developer.com/java - 由Gamelan.com 維護(hù)的Java技術(shù)文章網(wǎng)站.
    http://www.java.net - Sun公司維護(hù)的一個(gè)Java社區(qū)網(wǎng)站.
    http://www.builder.com - Cnet的Builder.com網(wǎng)站 - 所有的技術(shù)文章, 以Java為主.
    http://www.ibm.com/developerworks/java - IBM的Developerworks技術(shù)網(wǎng)站; 這是其中的Java技術(shù)主頁.
    http://www.javaworld.com - 最早的一個(gè)Java站點(diǎn). 每周更新Java技術(shù)文章.
    http://www.devx.com/java - DevX維護(hù)的一個(gè)Java技術(shù)文章網(wǎng)站.
    http://www.fawcette.com/javapro - JavaPro在線雜志網(wǎng)站.
    http://www.sys-con.com/java - Java Developers Journal的在線雜志網(wǎng)站.
    http://www.javadesktop.org - 位于Java.net的一個(gè)Java桌面技術(shù)社區(qū)網(wǎng)站.
    http://www.theserverside.com - 這是一個(gè)討論所有Java服務(wù)器端技術(shù)的網(wǎng)站.
    http://www.jars.com - 提供Java評論服務(wù). 包括各種framework和應(yīng)用程序.
    http://www.jguru.com - 一個(gè)非常棒的采用Q&A形式的Java技術(shù)資源社區(qū).
    http://www.javaranch.com - 一個(gè)論壇,得到Java問題答案的地方,初學(xué)者的好去處。
    http://www.ibiblio.org/javafaq/javafaq.html - comp.lang.java的FAQ站點(diǎn) - 收集了來自comp.lang.java新聞組的問題和答案的分類目錄.
    http://java.sun.com/docs/books/tutorial/ - 來自SUN公司的官方Java指南 - 對于了解幾乎所有的java技術(shù)特性非常有幫助.
    http://www.javablogs.com - 互聯(lián)網(wǎng)上最活躍的一個(gè)Java Blog網(wǎng)站.
    http://java.about.com/ - 來自About.com的Java新聞和技術(shù)文章網(wǎng)站
    HttpClient http://jakarta.apache.org/commons/httpclient/ 處理http客戶端的接口

    原文地址
    http://blog.csdn.net/Xviewee/archive/2007/12/17/1944374.aspx
    posted @ 2011-05-05 15:31 ceaboat 閱讀(1123) | 評論 (0)編輯 收藏
     

    演示視頻請點(diǎn)擊

    1.   概述

    高效率開發(fā)、易用、功能穩(wěn)定、執(zhí)行效率高、維護(hù)成本低、需求變更是軟件開發(fā)遵循的守則,然而現(xiàn)實(shí)中我們面臨各種各樣的問題:

    1.     程序員A,程序員B開發(fā)同樣的功能,理解不同、開發(fā)用時(shí)、及開發(fā)質(zhì)量良莠不齊,延遲交付時(shí)間普遍。相反監(jiān)督者需要花費(fèi)更多精力與時(shí)間可以彌補(bǔ),加大投入成本。

    2.     后期維護(hù)成本高,如由于測試跟不上BUG檢測不到、需求變更等。

    3.     同行競爭的壓力,如A公司開發(fā)模塊實(shí)際時(shí)間10工作日、B公司開發(fā)模塊實(shí)際時(shí)間15工作日,競標(biāo)會(huì)處于劣勢。

    4.     隨著公司業(yè)務(wù)擴(kuò)展,項(xiàng)目繁多,招攬人員越多、管理難度越大等因素日漸凸顯,造成企業(yè)發(fā)展的瓶頸。

    5.     人員的培養(yǎng)需要大量成本,與人員的不穩(wěn)定性因素對企業(yè)造成損失較大,如人員請假、離職等。

    6.     開發(fā)測試—QA—用戶測試試運(yùn)營運(yùn)營,是軟件開發(fā)中耗費(fèi)成本巨大的一個(gè)循環(huán)過程鏈,制約企業(yè)發(fā)展。

    上述是據(jù)個(gè)人經(jīng)驗(yàn)總結(jié),Db2view是針對上述問題的一個(gè)解決方案。

    2.   Db2view架構(gòu)

    Db2view是以高效、穩(wěn)定、易用、低成本維護(hù)為目的所研制的一套輕量級非入侵式、自動(dòng)化開發(fā)平臺(tái)。兼容多種架構(gòu),如SSHstruts—spring—ibatis等容易集成到系統(tǒng),根據(jù)多年的行業(yè)經(jīng)驗(yàn),高效的針對各行業(yè)業(yè)務(wù)特點(diǎn),最大化減少建設(shè)與維護(hù)成本。目前已在多個(gè)項(xiàng)目實(shí)施,不斷完善。
    2.1          Db2view總體架構(gòu)圖

               
        

                2.2          平臺(tái)說明

            2.2.1              db2view核心層

    Db2view:根據(jù)編寫的SQL,在所有元素?fù)?jù)中,勾選需要顯示的元素?fù)?jù)列,即可生成自定義顯示列表。

    如select school_id,school_name,school_code, school_manager from school

    然后在配置界面勾選school_name, school_manager字段,則顯示的列表為:

    school_name

    school_manager

    廣東廣雅中學(xué)

    黃光裕

    廣州先烈東小學(xué)

    王興東

    查詢:在SQL里涉及并且勾選的元素?fù)?jù)字段中,可以選擇是否作為查詢的字段,勾選后該列成為查詢項(xiàng),如果是時(shí)間字段還可以進(jìn)行時(shí)間區(qū)間查詢的選擇。

    排序:列表中的每個(gè)字段都可以進(jìn)行升序與降序的排列功能。

    自定義字段名:對每個(gè)列名稱進(jìn)行界面配置,如勾選school_name、school_manager字段,可以對school_name定義顯示列名為:學(xué)校名稱、school_manager顯示列名為:學(xué)校管理員,修改后列表顯示如下:

    學(xué)校名稱

    學(xué)校管理員

    廣東廣雅中學(xué)

    黃光裕

    廣州先烈東小學(xué)

    王興東

    轉(zhuǎn)義詞:數(shù)據(jù)庫中記錄男女使用0,1表示,而界面需要顯示為男女文字的信息,使用轉(zhuǎn)義詞可以達(dá)到效果。

    刪除:界面化配置是否需要?jiǎng)h除功能,刪除指定字段的表記錄。

              2.2.2              擴(kuò)展層

    操作:所有列表均可以添加外部操作(如增加、批量刪除)與行內(nèi)操作(編輯、刪除),由此構(gòu)成一個(gè)完整的業(yè)務(wù)功能。(示例見演示視頻)

     

    數(shù)據(jù)導(dǎo)出:界面化配置是否需要excel數(shù)據(jù)導(dǎo)出功能,根據(jù)查詢的條件顯示的數(shù)據(jù),可選擇導(dǎo)出當(dāng)前所見數(shù)據(jù)與所有滿足條件的數(shù)據(jù)兩個(gè)選擇。

     

    模板定制:界面化配置模板,方便為不同的客戶需求定制不同的顯示模板。

     

    換膚:界面化配置皮膚,每個(gè)模板依據(jù)規(guī)范可以有不同的皮膚更換功能。

     

    數(shù)據(jù)安全:加入訪問權(quán)限控制規(guī)則,保障功能數(shù)據(jù)安全性。(待實(shí)現(xiàn))

       3.   平臺(tái)優(yōu)缺點(diǎn)

      

      3.1          優(yōu)點(diǎn)
    (1)
    高效率開發(fā):db2view平臺(tái)開發(fā)工具采用全界面配置,編寫業(yè)務(wù)SQL,簡單配置,即可完成。列表功能開發(fā)以分鐘計(jì)時(shí),15分鐘可以完成一個(gè)高質(zhì)量列表的功能開發(fā)。

        (2)易用性:界面編寫SQL,然后配置即可得到一個(gè)界面友好,高質(zhì)量的功能列表。將傳統(tǒng)程序員需要熟悉各種復(fù)雜的技術(shù)框架解放出來,專注于業(yè)務(wù)邏輯,大大降低企業(yè)由于人員離職或其他情況所帶來的損失。

        (3)功能穩(wěn)定:所有功能使用統(tǒng)一內(nèi)核,經(jīng)過多個(gè)項(xiàng)目的迭代驗(yàn)證其穩(wěn)定性、可靠性。

        (4)低成本維護(hù):   所有的功能需要維護(hù)的只有業(yè)務(wù)SQL與配置文件,最大化的減少維護(hù)的成本。

    比較現(xiàn)今流行的SSH架構(gòu)開發(fā)流程:

    維護(hù)成本是流程涉及的內(nèi)容,成本花費(fèi)高。

    Db2view開發(fā)流程:

    維護(hù)成本只有業(yè)務(wù)SQL與配置文件,易于維護(hù)。

        (5)快速響應(yīng)需求變更:如業(yè)務(wù)更改字段名、添加或刪除顯示字段、

    添加查詢字段、功能刪除等維護(hù)工作都能夠在極短的時(shí)間內(nèi)響應(yīng)。
     

        (6)無需重啟服務(wù)器:功能的生成與修改實(shí)時(shí)生效,無需重啟服務(wù)器。

     


    3.2          缺點(diǎn)
    (1)   
    平臺(tái)仍需完善,暫不能夠滿足所有業(yè)務(wù)需求界面化

           (2)    平臺(tái)操作友好性仍待提高,如轉(zhuǎn)義詞的添加、新添加配置等

        4.   平臺(tái)支撐環(huán)境

    數(shù)據(jù)庫:ORACLE 10G以上版本

    語言:JAVA

    JDK版本:1.4以上

    服務(wù)器:Tomcat,JBoss,Resin,WebSphere,WebLogic等主流服務(wù)器。

        5.   部署

    根據(jù)開發(fā)模式分為兩種部署方式。

    面向服務(wù)式模式:

    作為分布式服務(wù)器對外提供服務(wù),生成功能鏈接嵌入應(yīng)用系統(tǒng)。該模式的優(yōu)點(diǎn):

    1.    對應(yīng)用系統(tǒng)完全無入侵,100%輕量級開發(fā)。

    2.    產(chǎn)品升級調(diào)試簡單。

    缺點(diǎn):

    1.    需要開放應(yīng)用的數(shù)據(jù)庫訪問權(quán)限。

    2.    涉及操作并有關(guān)聯(lián)動(dòng)作:如刪除功能在A系統(tǒng)開發(fā),B系統(tǒng)是Db2view,關(guān)聯(lián)頁面需要設(shè)置同域方能進(jìn)行交互。

    3.    安全性相對另一種模式低。

     

       組件模式:

    作為組件集成到開發(fā)項(xiàng)目中,容易管理,安全性也高。

    優(yōu)點(diǎn):

    安全性高,可根據(jù)開發(fā)系統(tǒng)的權(quán)限要求做安全性控制

        缺點(diǎn):

    升級調(diào)試相對復(fù)雜。

    5分鐘生成功能例子,對此工具有興趣者請加群:12990321.

    posted @ 2010-04-01 17:47 ceaboat 閱讀(1419) | 評論 (0)編輯 收藏
    #1 ?世界上最經(jīng)典的25句話

    1.記住該記住的,忘記該忘記的。改變能改變的,接受不能改變的。

    2.能沖刷一切的除了眼淚,就是時(shí)間,以時(shí)間來推移感情,時(shí)間越長,沖突越 淡,仿佛不斷稀釋的茶。

    3.怨言是上天得至人類最大的供物,也是人類禱告中最真誠的部分。

    4.智慧的代價(jià)是矛盾。這是人生對人生觀開的玩笑。

    5.世上的姑娘總以為自己是驕傲的公主(除了少數(shù)極丑和少數(shù)極聰明的姑娘例外)。

    6.如果敵人讓你生氣,那說明你還沒有勝他的把握。

    7.如果朋友讓你生氣,那說明你仍然在意他的友情。

    8.令狐沖說“有些事情本身我們無法控制,只好控制自己。”

    9.我不知道我現(xiàn)在做的哪些是對的,那些是錯(cuò)的,而當(dāng)我終于老死的時(shí)候我才知道這些。所以我現(xiàn)在所能做的就是盡力做好待著老死。

    10.也許有些人很可惡,有些人很卑鄙。而當(dāng)我設(shè)身為他想象的時(shí)候,我才知道:他比我還可憐。所以請?jiān)徦心阋娺^的人,好人或者壞人。

    11.魚對水說你看不到我的眼淚,因?yàn)槲以谒铮f我能感覺到你的眼淚,因?yàn)槟阍谖倚睦铩?

    12.快樂要有悲傷作陪,雨過應(yīng)該就有天晴。如果雨后還是雨,如果憂傷之后還是憂傷.請讓我們從容面對這離別之后的離別。微笑地去尋找一個(gè)不可能出現(xiàn)的你!

    13.死亡教會(huì)人一切,如同考試之后公布的結(jié)果——雖然恍然大悟,但為時(shí)晚矣~!

    14.你出生的時(shí)候,你哭著,周圍的人笑著;你逝去的時(shí)候,你笑著,而周圍的人在哭!一切都是輪回!!!! 我們都在輪回中!!!!

    15.男人在結(jié)婚前覺得適合自己的女人很少,結(jié)婚后覺得適合自己的女人很多。

    16.于千萬人之中,遇見你所遇見的人;于千萬年之中,時(shí)間的無涯荒野里,沒有早一步,也沒有晚一步,剛巧趕上了 。

    17.每個(gè)人都有潛在的能量,只是很容易:被習(xí)慣所掩蓋,被時(shí)間所迷離,被惰性所消磨。

    18.人生短短幾十年,不要給自己留下了什么遺憾,想笑就笑,想哭就哭,該愛的時(shí)候就去愛,無謂壓抑自己。

    19.《和平年代》里的話:當(dāng)幻想和現(xiàn)實(shí)面對時(shí),總是很痛苦的。要么你被痛苦擊倒,要么你把痛苦踩在腳下。

    20.真正的愛情是不講究熱鬧不講究排場不講究繁華更不講究嚎頭的。

    21.生命中,不斷地有人離開或進(jìn)入。于是,看見的,看不見的;記住的,遺忘了。生命中,不斷地有得到和失落。于是,看不見的,看見了;遺忘的,記住了。然而,看不見的,是不是就等于不存在?記住的,是不是永遠(yuǎn)不會(huì)消失?

    22.我們確實(shí)活得艱難,一要承受種種外部的壓力,更要面對自己內(nèi)心的困惑。在苦苦掙扎中,如果有人向你投以理解的目光,你會(huì)感到一種生命的暖意,或許僅有短暫的一瞥,就足以使我感奮不已。

    23.我不去想是否能夠成功,既然選擇了遠(yuǎn)方,便只顧風(fēng)雨兼程;我不去想,身后會(huì)不會(huì)襲來寒風(fēng)冷雨,既然目標(biāo)是地平線,留給世界的只能是背影。

    24.后悔是一種耗費(fèi)精神的情緒.后悔是比損失更大的損失,比錯(cuò)誤更大的錯(cuò)誤.所以不要后悔 。

    25.日出東海落西山,愁也一天,喜也一天;遇事不鉆牛角尖,人也舒坦,心也舒坦。
    posted @ 2006-12-05 11:31 ceaboat 閱讀(241) | 評論 (0)編輯 收藏

    現(xiàn)象一:
             錯(cuò)誤信息:
                     java.lang.SecurityException: sealing violation: can't seal package oracle.jdbc.driver: already loaded
             原因:
                     was啟動(dòng)的lib里存在多個(gè)ORACLE DRIVER。
             解決:
                     保留最新的一個(gè)驅(qū)動(dòng)包解決。
             遺留問題:
                     開發(fā)環(huán)境使用TOMCAT發(fā)布無此問題,JBUILDER2006開發(fā)中包是有優(yōu)先順序的,即使存在多個(gè)
             相同的類,優(yōu)先選擇第一個(gè)找到的類。WAS在這方面顯然存在不足,排異容錯(cuò)性不夠強(qiáng)大。
    現(xiàn)象二:
            錯(cuò)誤信息:
                   
    Error 500: LinkageError while defining class: com.gzedu.eecn.structure.login.action.UserLoginAction Could not be defined due to: com/gzedu/eecn/structure/login/action/UserLoginAction (Illegal constant pool type) This is often caused by having a class defined at multiple locations within the classloader hierarchy. Other potential causes include compiling against an older or newer version of the class that has an incompatible method signature. Dumping the current context classloader
          
    原因:
                     上傳的文件已經(jīng)損壞。重復(fù)試過很多次,發(fā)現(xiàn)本機(jī)器通過SSH上傳過程中文件已經(jīng)損壞。
             屬于本機(jī)問題。
            解決:
                   通過同事的機(jī)器上傳文件解決
            總結(jié):
                    類似此問題出現(xiàn)的幾率很小,可以認(rèn)為是相同的環(huán)境,使用相同的方式做一件事情也有可能出現(xiàn)
           不同的效果。再次出現(xiàn)類似問題可以更快的定位錯(cuò)誤點(diǎn)。
    現(xiàn)象三:
            錯(cuò)誤信息:
                      com.ibm.ws.jsp.translator.JspTranslationException: JSPG0227E: 轉(zhuǎn)換 /login.jsp: 
    /login.jsp(1,1) --> JSPG0145E: 未知 JSP 元素:jsp:directive.pagelanguage
             原因:
                      windows環(huán)境、tomcat作為服務(wù)器開發(fā),部署到sit、unix環(huán)境,會(huì)出現(xiàn)頁面不同的開發(fā)環(huán)境會(huì)
             有中文問題,或是說重復(fù)定義encoding的問題頁面編碼問題。
             解決:
                按照如下進(jìn)行修改和配置;
                         
    1. 對于不是被include的頁面必須使用;
                   <%@ page contentType="text/html;charset=GBK" pageEncoding="GBK" language="java" %>
                   。 大寫GBK
                         2. 對于被Include的頁面必須使用如下;
                   。<%@ page pageEncoding="GBK" language="java" %>
                 注:在TOMCAT4.1.30-->was5.0,6.0出現(xiàn)此問題
            

    posted @ 2006-01-25 15:09 ceaboat 閱讀(2065) | 評論 (0)編輯 收藏
    sun.jdbc.rowset.CachedRowSet是sun提供的緩存數(shù)據(jù)集的一個(gè)類(數(shù)據(jù)集持久化),對BLOG,CLOG不能支持,LOG的容量是4G,結(jié)果集里存在LOG字段緩存時(shí)會(huì)報(bào)java.lang.NumberFormatException: For input string: "4294967295"
    據(jù)說sun對LOG的支持原來是2G,不曉得是否有支持4G的類。

    對于原來使用的com.sun.rowset.CachedRowSetImpl深感疑惑此類在緩存number字段的時(shí)候如果SCALE沒聲明會(huì)報(bào)不能小于0的異常
    posted @ 2005-12-09 09:57 ceaboat 閱讀(856) | 評論 (0)編輯 收藏
    1.GB2312支持拼音排序,GBK、GB18030不支持。2005年11月23日15:31:42
    2.websphere5與6的區(qū)別:5對路徑不需要/,而6必須要/,否則因?yàn)樯倭?找不到相應(yīng)的配置文件
    posted @ 2005-11-23 15:31 ceaboat 閱讀(346) | 評論 (0)編輯 收藏

    參與一個(gè)項(xiàng)目要做到:
    1.項(xiàng)目中有你參與整個(gè)項(xiàng)目進(jìn)展會(huì)順利的多。體現(xiàn)你的重要性。
    2.一個(gè)人的能力再強(qiáng),精力是有限的。切記不可體現(xiàn)個(gè)人主義,充分發(fā)揮團(tuán)隊(duì)能力,協(xié)調(diào)、配合往往比
       技術(shù)重要性排前一個(gè)位置。
    3.主動(dòng)承擔(dān)一些責(zé)任,對團(tuán)隊(duì)可提高士氣融合的氣氛、對個(gè)人當(dāng)成一個(gè)磨練的機(jī)會(huì)。
    4.注意項(xiàng)目中遇到的一些細(xì)小的問題。最不起眼的就是最能考驗(yàn)個(gè)人細(xì)心的程度,自己負(fù)責(zé)的事情要做到
       最好。
    5.同一件事情不同的人處理效果不同。

    posted @ 2005-11-10 00:21 ceaboat 閱讀(440) | 評論 (0)編輯 收藏
    通過URL來訪問網(wǎng)站,action里request.getMothod()得到的GET.
    而通過FORM來提交的則可以設(shè)置POST,可以通過這兩種方
    式的差異來做一些第一次訪問與之后訪問的一些個(gè)性化設(shè)置。
    posted @ 2005-11-09 20:17 ceaboat 閱讀(368) | 評論 (0)編輯 收藏

    增加翻頁接口,滿足各種分頁不同的界面化顯示。
    代碼已經(jīng)開發(fā)完,工具需要做小量修改,進(jìn)期主要任務(wù)是編寫使用手冊。
    2005年10月16日21:43:36

    posted @ 2005-10-16 21:43 ceaboat 閱讀(357) | 評論 (0)編輯 收藏
    10.1到珠海過關(guān)的時(shí)候檢查邊防證,偶可是沒那小本本,邊警上來搜查,抓了4個(gè)人下去補(bǔ)辦。(很多人都是沒辦的)看來穿著整齊是有點(diǎn)效果,人品好麻煩自然少
    posted @ 2005-10-03 21:50 ceaboat 閱讀(424) | 評論 (0)編輯 收藏

    打算到上海浙江一帶去放松,解決工作上的壓力。現(xiàn)在是去不成了,國慶4天假,廣州不是放松的好地方。白云山還算可以一去,只好改去珠海玩兩天,吃點(diǎn)海鮮補(bǔ)償補(bǔ)償了

    posted @ 2005-10-01 12:59 ceaboat 閱讀(417) | 評論 (0)編輯 收藏
    WASD支持熱啟動(dòng),修改代碼保存服務(wù)器進(jìn)行實(shí)時(shí)更新,CachedRowSet crs = new CachedRowSetImpl();緩存數(shù)據(jù)集出異常。服務(wù)器熱啟動(dòng)與緩存機(jī)制之間有沖突。
    posted @ 2005-10-01 12:54 ceaboat 閱讀(436) | 評論 (0)編輯 收藏

    ??????????????????????????????????????????????????????????測試源代碼

    CapabilityForConnection?主運(yùn)行程序,讀取配置文件init.properties、reference.properties初始化參數(shù)。調(diào)用POOLTEST(一次完整的測試用例),計(jì)算其平均時(shí)間與使用連接數(shù)

    package?com.cea.repository.test;

    import
    ?org.apache.commons.logging.LogFactory;
    import
    ?org.apache.commons.logging.Log;
    import
    ?java.util.Properties;
    import
    ?java.io.FileInputStream;
    import
    ?java.io.InputStream;

    public?class
    ?CapabilityForConnection?{
    ????
    private?static?Log?log?=?LogFactory.getLog(CapabilityForConnection.class
    );
    ????
    /**

    ?????*?計(jì)算一次測試所消耗的時(shí)間
    ?????
    */
    ????
    public?static?long?times?=?0;
    ????
    /**

    ?????*?連接數(shù)
    ?????
    */
    ????
    public?static?long?psize?=?0;

    ????
    public?static?void?main(String[]?args)?throws
    ?Exception?{
    ????????
    /**

    ?????????*?運(yùn)行的次數(shù)
    ?????????
    */
    ????????
    int?size?=?1;
    ????????
    /**

    ?????????*?見POOLTEST說明
    ?????????
    */
    ????????
    int?execsum?=?0;
    ????????
    /**

    ?????????*?見POOLTEST說明
    ?????????
    */
    ????????
    int?opencon?=?0;
    ????????
    /**

    ?????????*?execsum對應(yīng)properties的命名
    ?????????
    */
    ????????String?execs?
    =?null;
    ????????
    /**

    ?????????*?opencon對應(yīng)properties的命名
    ?????????
    */
    ????????String?openc?
    =?null;

    ????????
    long?sumtime?=?0
    ;
    ????????Properties?prop?
    =?initProperty("reference.properties"
    );
    ????????Properties?init?
    =?initProperty("init.properties"
    );

    ????????
    if?(init.size()?>?0
    )?{
    ????????????Object?o?
    =?init.get("init"
    );
    ????????????size?
    =
    ?Integer.parseInt(o.toString());
    ????????????execs?
    =?init.get("name0"
    ).toString();
    ????????????openc?
    =?init.get("name1"
    ).toString();
    ????????}

    ????????
    for?(int?i?=?0;?i?<?prop.size()?/?2;?i++
    )?{
    ????????????execsum?
    =?Integer.parseInt(prop.getProperty(execs?+
    ?i).toString());
    ????????????opencon?
    =?Integer.parseInt(prop.getProperty(openc?+
    ?i).toString());
    ????????????sumtime?
    =?0
    ;
    ????????????psize?
    =?0
    ;
    ????????????log.info(
    ""?+?(i?+?1)?+?"組數(shù)據(jù):"
    );
    ????????????log.info(
    "并發(fā)應(yīng)用數(shù):"?+?execsum?+?"?模擬連接數(shù):"?+
    ?opencon);

    ????????????String[]?reference?
    =?{""?+?execsum,?""?+
    ?opencon};
    ????????????
    for?(int?j?=?0;?j?<?size;?j++
    )?{
    ????????????????times?
    =?0
    ;
    ????????????????PoolTest.main(reference);
    ????????????????sumtime?
    +=
    ?times;
    ????????????}
    ????????????log.info(
    ""?+?(i?+?1)?+?"組數(shù)據(jù)共執(zhí)行"?+?size?+?"次;平均耗時(shí)為:"?+

    ?????????????????????sumtime?
    /?(size?*?execsum)?+?"毫秒");
    ????????????log.info(
    "平均使用"?+?psize?/?size?+?"個(gè)連接"
    );

    ????????}
    ????}

    ????
    private?static?Properties?initProperty(String?filename)?throws
    ?Exception?{
    ????????InputStream?is?
    =?new
    ?FileInputStream(filename);
    ????????Properties?prop?
    =?new
    ?Properties();
    ????????prop.load(is);
    ????????
    return
    ?prop;

    ????}
    }

    POOLTEST計(jì)算一次完整過程耗時(shí),統(tǒng)計(jì)消耗的連接
    package?com.cea.repository.test;

    import
    ?com.cea.repository.test.testdata.MainExecute;
    import
    ?java.util.HashMap;
    import
    ?java.util.Map;
    import
    ?com.cea.repository.connection.PoolSupper;
    import
    ?org.apache.commons.logging.LogFactory;
    import
    ?org.apache.commons.logging.Log;
    /**

    ?*
    ?*?

    Title:?連接池性能測試


    ?*
    ?*?

    Description:?測試不合理的利用連接對WEB應(yīng)用所造成影響.


    ?*
    ?*?

    Copyright:?Copyright?(c)?2005


    ?*
    ?*?

    Company:?


    ?*
    ?*?
    @author?小舟
    ?*?
    @version
    ?1.0
    ?
    */

    public?class?PoolTest?extends?Thread?{
    ????
    private?static?Log?log?=?LogFactory.getLog(PoolTest.class
    );
    ????
    /**

    ?????*?并發(fā)執(zhí)行MainExecute的數(shù)量
    ?????
    */
    ????
    private?static?int?EXECUTESUM?=?35;
    ????
    /**

    ?????*?一次MainExecute執(zhí)行所請求的連接數(shù)
    ?????
    */
    ????
    public?static?int?CONNECTIONS?=?3;
    ????
    /**

    ?????*?記錄所使用的連接
    ?????
    */
    ????
    public?static?Map?poolTestMap?=?new?HashMap();
    ????
    /**

    ?????*?第sum次執(zhí)行MainExecute所需要的時(shí)間
    ?????
    */
    ????
    public?int?sum?=?0;

    ????
    public?void
    ?run()?{
    ????????
    try
    ?{
    ????????????
    long?s?=
    ?System.currentTimeMillis();
    ????????????com.cea.repository.test.testdata.MainExecute.main(
    null
    );
    ????????????
    long?t?=?System.currentTimeMillis()?-
    ?s;
    ????????????CapabilityForConnection.times?
    +=
    t;
    //
    ????????????if(CapabilityForConnection.times?//????????????????CapabilityForConnection.times?=?t;
    //
    ????????????}

    //
    ????????????log.info("time"?+?(++sum)?+?":"?+
    //???????????????????????????????(System.currentTimeMillis()?-?s));

    ????????}?catch?(Exception?ex)?{
    ????????}
    ????}

    ????
    public?static?void?main(String[]?args)?throws
    ?Exception?{
    ????????
    if(args!=?null?&&?args.length>1
    ){
    ????????????EXECUTESUM?
    =?Integer.parseInt(args[0
    ]);
    ????????????CONNECTIONS?
    =?Integer.parseInt(args[1
    ]);
    ????????}

    ????????PoolSupper.initPool();
    ????????startExec(EXECUTESUM);
    ????????
    //設(shè)定足夠長的時(shí)間等待所有程序執(zhí)行完,得到準(zhǔn)確的并發(fā)執(zhí)行所消耗的時(shí)間

    ????????try?{
    ????????????Thread.sleep(
    6000
    );
    ????????}?
    catch
    ?(InterruptedException?ex)?{
    ????????????ex.printStackTrace();
    ????????}
    ????????log.info(
    "運(yùn)行平均耗時(shí):"?+?CapabilityForConnection.times/
    EXECUTESUM);
    ????????
    //如果條件成立,證明連接沒有被回收,只要存在一個(gè)相同的,就證明連接被重復(fù)利用了

    ????????CapabilityForConnection.psize?+=poolTestMap.size();
    ????????
    if?(poolTestMap.size()?==
    ?EXECUTESUM)?{
    ????????????log.info(
    "不存在重復(fù)使用的連接,共創(chuàng)建"?+?poolTestMap.size()+?"個(gè)連接"
    ?);
    ????????}?
    else
    ?{
    ????????????log.info(
    "共使用"?+?poolTestMap.size()+?"個(gè)連接"
    ?);
    ????????}
    ????????clear();
    ????}

    ????
    private?static?void?startExec(int
    ?EXECUTESUM)?{
    ????????
    int?i?=?0
    ;
    ????????
    while?(i?<
    ?EXECUTESUM)?{
    ????????????
    if?(i++?<
    ?EXECUTESUM)?{
    ????????????????
    try
    ?{
    ????????????????????
    new
    ?PoolTest().start();
    ????????????????}?
    catch
    ?(Exception?ex2)?{
    ????????????????}
    ????????????}
    ????????}
    ????}
    ????
    private?static?void
    ?clear()?{
    ????????poolTestMap?
    =?new
    ?HashMap();
    ????}


    }

    簡單的不能再簡單的測試代碼:
    package?com.cea.repository.test.testdata;

    import
    ?com.cea.repository.connection.drive.ConnectionFactory;
    import
    ?java.sql.Connection;
    import
    ?java.sql.Statement;
    import
    ?java.sql.ResultSet;
    import
    ?java.sql.PreparedStatement;
    import
    ?java.util.HashMap;
    import
    ?java.util.Map;
    import
    ?java.util.List;
    import
    ?java.util.ArrayList;
    import
    ?com.cea.repository.test.PoolTest;
    import
    ?com.cea.repository.connection.poolpository.PoolFactory;

    /**

    ?*?
    ?*?

    Title:?


    ?*?

    Description:?


    ?*?

    Copyright:?Copyright?(c)?2004


    ?*?

    Company:?cea


    ?*?
    @author?小舟
    ?*?
    @version
    ?1.0
    ?
    */

    public?class?MainExecute?{
    ????
    public?static?void?main(String[]?args)?throws
    ?Exception?{
    ???????testConnection();
    ????}

    ????
    static?void?testConnection()?throws
    ?Exception?{
    ????????
    for?(int?i?=?0;?i?<?PoolTest.CONNECTIONS;?i++
    )?{
    ????????????Connection?con?
    =
    ?PoolFactory.newInstance();
    ????????????
    //這里的改變直接影響連接的復(fù)用

    ????????????Thread.sleep(50);
    ????????????PoolTest.poolTestMap.put(con.toString(),?
    ""
    );
    ????????????con.close();
    ????????}
    ????}

    }

    三個(gè)配置文件的內(nèi)容:
    init.properties文件
    #運(yùn)行的次數(shù)
    init
    =5

    #并發(fā)執(zhí)行MainExecute的數(shù)量所匹配的名字
    name0
    =execsum
    #一次MainExecute執(zhí)行所請求的連接數(shù)所匹配的名字
    name1
    =opencon

    reference.properties文件
    #過濾數(shù)據(jù)
    execsum0
    =10

    opencon0
    =1
    #第一次測試數(shù)據(jù)
    execsum1
    =100
    opencon1
    =6
    #第二次測試數(shù)據(jù)
    execsum2
    =85
    opencon2
    =9
    #第三次測試數(shù)據(jù)
    execsum3
    =140
    opencon3
    =3

    最后一個(gè)是pool-config.xml數(shù)據(jù)源配置:
    xml?version="1.0"?encoding="GB2312"?>
    <DataResources>
    ??
    <ResourceParams?dateIndentity="boat1">
    ????
    <defaultAutoCommit>falsedefaultAutoCommit>
    ????
    <initialSize>30initialSize>
    ????
    <maxActive>40maxActive>
    ????
    <minIdle>0minIdle>
    ????
    <maxIdle>18maxIdle>
    ????
    <maxWait>10000maxWait>
    ????
    <username>forumusername>
    ????
    <password>kingpassword>
    ????
    <driverClassName>oracle.jdbc.driver.OracleDriverdriverClassName>
    ????
    <url>jdbc:oracle:thin:@192.168.1.3:1521:gzesturl>
    ????
    <removeAbandoned>trueremoveAbandoned>
    ????
    <removeAbandonedTimeout>10removeAbandonedTimeout>
    ????
    <logAbandoned>truelogAbandoned>
    ??
    ResourceParams>
    DataResources>
    posted @ 2005-09-26 22:36 ceaboat 閱讀(1652) | 評論 (0)編輯 收藏
    主站蜘蛛池模板: 亚洲愉拍99热成人精品热久久| 3d成人免费动漫在线观看| 黄网站色视频免费看无下截| 亚洲妇女无套内射精| 亚洲人成人伊人成综合网无码| 亚洲高清有码中文字| 亚洲熟女精品中文字幕| 亚洲gay片在线gv网站| 久久久久亚洲AV无码去区首| 亚洲av无码专区在线观看亚| 欧洲亚洲综合一区二区三区 | 日韩精品福利片午夜免费观着| 国产免费久久精品99re丫y| 免费不卡视频一卡二卡| 最近中文字幕无免费视频| 免费无码看av的网站| 免费人成视频x8x8入口| 国产精品亚洲不卡一区二区三区 | 18禁成年无码免费网站无遮挡| 成人免费a级毛片| 日韩人妻无码免费视频一区二区三区| 日韩一品在线播放视频一品免费| 国产一级大片免费看| 国产美女亚洲精品久久久综合| 亚洲国产精品一区二区久久| 亚洲国产模特在线播放| 亚洲欧洲国产综合AV无码久久| 麻豆安全免费网址入口| 中文字幕手机在线免费看电影| 99在线观看精品免费99| 成熟女人牲交片免费观看视频| 国产免费啪嗒啪嗒视频看看 | 国产成人免费高清激情明星| 成熟女人特级毛片www免费| 又爽又黄无遮挡高清免费视频| 中文字幕在线亚洲精品 | 亚洲裸男gv网站| 亚洲一二成人精品区| 亚洲人精品亚洲人成在线| 国产精品亚洲一区二区三区| 免费毛片在线看不用播放器|