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

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

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

    @hunter129

    天天學習,好好向上!

       :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      21 隨筆 :: 5 文章 :: 37 評論 :: 0 Trackbacks

    #

    做web開發(fā)的時候,有時候需要根據鍵盤進行一些操作,例如按下Enter的時候提交表單,禁止用戶輸入某些特殊字符,設置快捷鍵等等。這時候需要找出用戶按下的是那些按鍵,每次都找對照表太麻煩了.so..寫了這么個小程序來測試按鍵。^_^
    其中的charCode是根據ascii表轉換的,不一定準確。

    keyCode :
    charCode :
    shift-key :
    ctrl-key :
    alt-key :

    下面是ascii編碼表:
    ascii編碼表
    源代碼:
    <script type="text/javascript">
    function showKey(e){
    = e || window.event;
    document.getElementById(
    "keyCode").value = e.keyCode;
    document.getElementById(
    "charCode").value = String.fromCharCode(e.keyCode);
    document.getElementById(
    "shiftKey").value = e.shiftKey;
    document.getElementById(
    "ctrlKey").value = e.ctrlKey;
    document.getElementById(
    "altKey").value = e.altKey;
    }
    $(document).ready(
    function(){
    document.onkeydown 
    = showKey;
    });
    </script>
    <br />
    <table>
        
    <tbody>
            
    <tr>
                
    <td>keyCode : </td>
                
    <td><input id="keyCode" type="text" /> </td>
            
    </tr>
            
    <tr>
                
    <td>charCode  : </td>
                
    <td><input id="charCode" type="text" /> </td>
            
    </tr>
            
    <tr>
                
    <td>shift-key : </td>
                
    <td><input id="shiftKey" type="text" /> </td>
            
    </tr>
            
    <tr>
                
    <td>ctrl-key : </td>
                
    <td><input id="ctrlKey" type="text" /> </td>
            
    </tr>
            
    <tr>
                
    <td>alt-key : </td>
                
    <td><input id="altKey" type="text" /> </td>
            
    </tr>
        
    </tbody>
    </table>
    其中我使用了jquery來初始化document的onkeydown事件。如果你不使用jquery可以用下面這段代碼
    window.onload = function(){
      document.onkeydown 
    = showKey;
    };

    代替
    $(document).ready(function(){
    document.onkeydown 
    = showKey;
    });

    posted @ 2008-02-02 17:00 hunter129 閱讀(1615) | 評論 (5)編輯 收藏


    轉的~~
    原文
    http://www.cnblogs.com/yxonline/archive/2007/07/09/811434.html
    我們期待自己成為一個優(yōu)秀的軟件模型設計者,但是,要怎樣做,又從哪里開始呢?

    將下列原則應用到你的軟件工程中,你會獲得立桿見影的成果。

    1. 人遠比技術重要

    你開發(fā)軟件是為了供別人使用,沒有人使用的軟件只是沒有意義的數據的集合而已。許多在軟件方面很有成就的行家在他們事業(yè)的初期卻表現平平,因為他們 那時侯將主要精力都集中在技術上。顯然,構件(components),EJB(Enterprise Java Beans)和代理(agent)是很有趣的東西。但是對于用戶來說,如果你設計的軟件很難使用或者不能滿足他們的需求,后臺用再好的技術也于事無補。多 花點時間到軟件需求和設計一個使用戶能很容易理解的界面上。

    2. 理解你要實現的東西

    好的軟件設計人員把大多數時間花費在建立系統(tǒng)模型上,偶爾寫一些源代碼,但那只不過是為了驗證設計過程中所遇到的問題。這將使他們的設計方案更加可行。

    3. 謙虛是必須的品格

    你不可能知道一切,你甚至要很努力才能獲得足夠用的知識。軟件開發(fā)是一項復雜而艱巨的工作,因為軟件開發(fā)所用到的工具和技術是在不斷更新的。而且, 一個人也不可能了解軟件開發(fā)的所有過程。在日常生活中你每天接觸到的新鮮事物可能不會太多。但是對于從事軟件開發(fā)的人來說,每天可以學習很多新東西(如果 愿意的話)。

    4. 需求就是需求

    如果你沒有任何需求,你就不要動手開發(fā)任何軟件。成功的軟件取決于時間(在用戶要求的時間內完成)、預算和是否滿足用戶的需求。如果你不能確切知道用戶需要的是什么,或者軟件的需求定義,那么你的工程注定會失敗。

    5. 需求其實很少改變,改變的是你對需求的理解

    Object ToolSmiths公司(www.objecttoolsmiths.com)的Doug Smith常喜歡說:“分析是一門科學,設計是一門藝術”。他的意思是說在眾多的“正確”分析模型中只存在一個最“正確”分析模型可以完全滿足解決某個具 體問題的需要(我理解的意思是需求分析需要一絲不茍、精確的完成,而設計的時候反而可以發(fā)揮創(chuàng)造力和想象力 - 譯者注)。

    如果需求經常改動,很可能是你沒有作好需求分析,并不是需求真的改變了。

    你可以抱怨用戶不能告訴你他們想得到什么,但是不要忘記,收集需求信息是你工作。

    你可以說是新來的開發(fā)人員把事情搞得一團糟,但是,你應該確定在工程的第一天就告訴他們應該做什么和怎樣去做。

    如果你覺得公司不讓你與用戶充分接觸,那只能說明公司的管理層并不是真正支持你的項目。

    你可以抱怨公司有關軟件工程的管理制度不合理,但你必須了解大多同行公司是怎么做的。

    你可以借口說你們的競爭對手的成功是因為他們有了一個新的理念,但是為什么你沒先想到呢?

    需求真正改變的情況很少,但是沒有做好需求分析工作的理由卻很多。

    6. 經常閱讀

    在這個每日都在發(fā)生變化的產業(yè)中,你不可能在已取得的成就上陶醉太久。

    每個月至少讀2、3本專業(yè)雜志或者1本專業(yè)書籍。保持不落伍需要付出很多的時間和金錢,但會使你成為一個很有實力的競爭者。

    7. 降低軟件模塊間的耦合度

    高耦合度的系統(tǒng)是很難維護的。一處的修改引起另一處甚至更多處的變動。

    你可以通過以下方法降低程序的耦合度:隱藏實現細節(jié),強制構件接口定義,不使用公用數據結構,不讓應用程序直接操作數據庫(我的經驗法則是:當應用程序員在寫SQL代碼的時候,你的程序的耦合度就已經很高了)。

    耦合度低的軟件可以很容易被重用、維護和擴充。

    8. 提高軟件的內聚性

    如果一個軟件的模塊只實現一個功能,那么該模塊具有高內聚性。高內聚性的軟件更容易維護和改進。

    判斷一個模塊是否有高的內聚性,看一看你是否能夠用一個簡單的句子描述它的功能就行了。如果你用了一段話或者你需要使用類似“和”、“或”等連詞,則說明你需要將該模塊細化。

    只有高內聚性的模塊才可能被重用。

    9. 考慮軟件的移植性

    移植是軟件開發(fā)中一項具體而又實際的工作,不要相信某些軟件工具的廣告宣傳(比如java 的宣傳口號write once run many ? 譯者注)。

    即使僅僅對軟件進行常規(guī)升級,也要把這看得和向另一個操作系統(tǒng)或數據庫移植一樣重要。

    記得從16位Windows移植到32位windows的“樂趣”嗎 ?當你使用了某個操作系統(tǒng)的特性,如它的進程間通信(IPC)策略,或用某數據庫專有語言寫了存儲過程。你的軟件和那個特定的產品結合度就已經很高了。

    好的軟件設計者把那些特有的實現細節(jié)打包隱藏起來,所以,當那些特性該變的時候,你的僅僅需要更新那個包就可以了。

    10. 接受變化

    這是一句老話了:唯一不變的只有變化。

    你應該將所有系統(tǒng)將可能發(fā)生的變化以及潛在需求記錄下來,以便將來能夠實現(參見“Architecting for Change”,Thinking Objectively, May 1999)

    通過在建模期間考慮這些假設的情況,你就有可能開發(fā)出足夠強壯且容易維護的軟件。設計強壯的軟件是你最基本的目標。

    11. 不要低估對軟件規(guī)模的需求

    Internet 帶給我們的最大的教訓是你必須在軟件開發(fā)的最初階段就考慮軟件規(guī)模的可擴充性。

    今天只有100人的部門使用的應用程序,明天可能會被有好幾萬人的組織使用,下月,通過因特網可能會有幾百萬人使用它。

    在軟件設計的初期,根據在用例模型中定義的必須支持的基本事務處理,確定軟件的基本功能。然后,在建造系統(tǒng)的時候再逐步加入比較常用的功能。

    在設計的開始考慮軟件的規(guī)模需求,避免在用戶群突然增大的情況下,重寫軟件。

    12. 性能僅僅是很多設計因素之一

    關注軟件設計中的一個重要因素--性能,這好象也是用戶最關心的事情。一個性能不佳的軟件將不可避免被重寫。

    但是你的設計還必須具有可靠性,可用性,便攜性和可擴展性。你應該在工程開始就應該定義并區(qū)分好這些因素,以便在工作中恰當使用。性能可以是,也可以不是優(yōu)先級最高的因素,我的觀點是,給每個設計因素應有的考慮。

    13. 管理接口

    “UML User Guide”(Grady Booch,Ivar Jacobson和Jim Rumbaugh ,Addison Wesley, 1999)中指出,你應該在開發(fā)階段的早期就定義軟件模塊之間的接口。

    這有助于你的開發(fā)人員全面理解軟件的設計結構并取得一致意見,讓各模塊開發(fā)小組相對獨立的工作。一旦模塊的接口確定之后,模塊怎樣實現就不是很重要了。

    從根本上說,如果你不能夠定義你的模塊“從外部看上去會是什么樣子”,你肯定也不清楚模塊內要實現什么。

    14. 走近路需要更長的時間

    在軟件開發(fā)中沒有捷徑可以走。

    縮短你的在需求分析上花的時間,結果只能是開發(fā)出來的軟件不能滿足用戶的需求,必須被重寫。

    在軟件建模上每節(jié)省一周,在將來的編碼階段可能會多花幾周時間,因為你在全面思考之前就動手寫程序。

    你為了節(jié)省一天的測試時間而漏掉了一個bug,在將來的維護階段,可能需要花幾周甚至幾個月的時間去修復。與其如此,還不如重新安排一下項目計劃。

    避免走捷徑,只做一次但要做對(do it once by doing it right)。

    15. 別信賴任何人

    產品和服務銷售公司不是你的朋友,你的大部分員工和高層管理人員也不是。

    大部分產品供應商希望把你牢牢綁在他們的產品上,可能是操作系統(tǒng),數據庫或者某個開發(fā)工具。

    大部分的顧問和承包商只關心你的錢并不是你的工程(停止向他們付款,看一看他們會在周圍呆多長時間)。

    大部分程序員認為他們自己比其他人更優(yōu)秀,他們可能拋棄你設計的模型而用自己認為更好的。

    只有良好的溝通才能解決這些問題。

    要明確的是,不要只依靠一家產品或服務提供商,即使你的公司(或組織)已經在建模、文檔和過程等方面向那個公司投入了很多錢。

    16. 證明你的設計在實踐中可行

    在設計的時候應當先建立一個技術原型, 或者稱為“端到端”原型。以證明你的設計是能夠工作的。

    你應該在開發(fā)工作的早期做這些事情,因為,如果軟件的設計方案是不可行的,在編碼實現階段無論采取什么措施都于事無補。技術原型將證明你的設計的可行性,從而,你的設計將更容易獲得支持。

    17. 應用已知的模式

    目前,我們有大量現成的分析和設計模式以及問題的解決方案可以使用。

    一般來說,好的模型設計和開發(fā)人員,都會避免重新設計已經成熟的并被廣泛應用的東西。http://www.ambysoft.com/processPatternsPage.html收藏了許多開發(fā)模式的信息。

    18. 研究每個模型的長處和弱點

    目前有很多種類的模型可以使用,如下圖所示。用例捕獲的是系統(tǒng)行為需求,數據模型則描述支持一個系統(tǒng)運行所需要的數據構成。你可能會試圖在用例中加 入實際數據描述,但是,這對開發(fā)者不是非常有用。同樣,數據模型對描述軟件需求來說是無用的。每個模型在你建模過程中有其相應的位置,但是,你需要明白在 什么地方,什么時候使用它們。

    19. 在現有任務中應用多個模型

    當你收集需求的時候,考慮使用用例模型,用戶界面模型和領域級的類模型。

    當你設計軟件的時候,應該考慮制作類模型,順序圖、狀態(tài)圖、協(xié)作圖和最終的軟件實際物理模型。

    程序設計人員應該慢慢意識到,僅僅使用一個模型而實現的軟件要么不能夠很好地滿足用戶的需求,要么很難擴展。

    20. 教育你的聽眾

    你花了很大力氣建立一個很成熟的系統(tǒng)模型,而你的聽眾卻不能理解它們,甚至更糟-連為什么要先建立模型都不知道。那么你的工作是毫無意義的。

    教給你開發(fā)人員基本的建模知識;否則,他們會只看看你畫的漂亮圖表,然后繼續(xù)編寫不規(guī)范的程序。

    另外, 你還需要告訴你的用戶一些需求建模的基礎知識。給他們解釋你的用例(uses case)和用戶界面模型,以使他們能夠明白你要表達地東西。當每個人都能使用一個通用的設計語言的時候(比如UML-譯者注),你的團隊才能實現真正的合作。

    21. 帶工具的傻瓜還是傻瓜

    你給我CAD/CAM工具,請我設計一座橋。但是,如果那座橋建成的話,我肯定不想當第一個從橋上過的人,因為我對建筑一竅不通。

    使用一個很優(yōu)秀的CASE工具并不能使你成為一個建模專家,只能使你成為一個優(yōu)秀CASE工具的使用者。成為一個優(yōu)秀的建模專家需要多年的積累,不 會是一周針對某個價值幾千美元工具的培訓。一個優(yōu)秀的CASE工具是很重要,但你必須學習使用它,并能夠使用它設計它支持的模型。

    22. 理解完整的過程

    好的設計人員應該理解整個軟件過程,盡管他們可能不是精通全部實現細節(jié)。

    軟件開發(fā)是一個很復雜的過程,還記得《object-oriented software process》第36頁的內容嗎?除了編程、建模、測試等你擅長工作外,還有很多工作要做。

    好的設計者需要考慮全局。必須從長遠考慮如何使軟件滿足用戶需要,如何提供維護和技術支持等。

    23. 常做測試,早做測試

    如果測試對你的軟件來說是無所謂的,那么你的軟件多半也沒什么必要被開發(fā)出來。

    建立一個技術原型供技術評審使用,以檢驗你的軟件模型。

    在軟件生命周期中,越晚發(fā)現的錯誤越難修改,修改成本越昂貴。盡可能早的做測試是很值得的。

    24. 把你的工作歸檔

    不值得歸檔的工作往往也不值得做。歸檔你的設想,以及根據設想做出的決定;歸檔軟件模型中很重要但不很明顯的部分。 給每個模型一些概要描述以使別人很快明白模型所表達的內容。

    25. 技術會變,基本原理不會

    如果有人說“使用某種開發(fā)語言、某個工具或某某技術,我們就不需要再做需求分析,建模,編碼或測試”。不要相信,這只說明他還缺乏經驗。拋開技術和 人的因素,實際上軟件開發(fā)的基本原理自20世紀70年代以來就沒有改變過。你必須還定義需求,建模,編碼,測試,配置,面對風險,發(fā)布產品,管理工作人員 等等。

    軟件建模技術是需要多年的實際工作才能完全掌握的。好在你可以從我的建議開始,完善你們自己的軟件開發(fā)經驗。

    以雞湯開始,加入自己的蔬菜。然后,開始享受你自己的豐盛晚餐吧。

    posted @ 2008-01-31 22:59 hunter129 閱讀(303) | 評論 (2)編輯 收藏

    項目中用到 長文本作為內容
    pojo中使用 string 類型 數據 oracle9i 用的的clob字段
    pojo:

    private String content;
    public void setContent(String content){
        
    this.content = content;
    }
    hibernate配置
    <property name="content" column="C_Content" type="text" length="10000"></property>

    發(fā)現當content 字段的內容在 1000~2000 字符長度中間的時候出現 sql錯誤
    而文本長度小于1000 長于2000 都沒有問題
    問題:hibernate配置中l(wèi)ength="10000"屬性是做什么用的?我嘗試過 將他配置成1000,5000,1w或者不配置 最后執(zhí)行的結果都一樣

    資料 google baidu。。。
    一般認為 length指定的是text的最大長度,這里顯然不是
    又有認為 是將java中string 值當作clob處理的最小長度,也就是當string長度小于這個值的時候 當string處理,當string大于這個長度的時候當text(clob)處理。但是我將length設置為1000時,輸入1k+文本 依然有sql錯誤。超過2000卻沒有問題。
    so..這兩個都不是答案.
    又有人說,介個是jdbcbug 換成10g的就米有問題了。遂嘗試..未果,問題依舊。
    finally..這個length屬性到底干嘛用 沒搞清楚.. 抑或 不該這么配置?

    繼續(xù)尋找,找到另外一種解決辦法。可以通過spring來解決這個問題
    hibernate配置
    <property name="content" column="C_Content" type="org.springframework.orm.hibernate3.support.ClobStringType"
    length
    ="10000"></property>

    spring配置
    <bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler">   
            
    <property name="nativeJdbcExtractor">
                
    <ref local="nativeJdbcExtractor"/>
            
    </property>  
    </bean>   
    <bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor">   
    </bean>
    上面2個bean是關鍵
    然后在sessionFactory的bean中加入
    <bean id="sessionFactory"
            class
    ="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            
    <property name="lobHandler">   
                
    <ref bean="oracleLobHandler" />   
            
    </property>
            。。。其他
    </bean>


    問題解決,但是length="10000" 屬性依然無用,可正常插入 任意長度的字符串
    但是這樣的話 數據庫就不能跨平臺了..so 期待跨數據庫平臺的 方案~~
    posted @ 2008-01-28 15:48 hunter129 閱讀(4188) | 評論 (7)編輯 收藏

    tomcat與oracle xdb 的http服務都是使用8080端口,這個我們這些web開發(fā)人員帶來了不少麻煩。
    解決xdb和tomcat的8080端口沖突問題
    1.改變xdb的http和ftp服務端口
    使用sys登錄sqlplus
    sqlplus sys/syspassword as sysdba
    然后執(zhí)行如下的腳本
    ------------------------------
    --  Change  the  HTTP/WEBDAV  port  from  8080  to  8081
    call  dbms_xdb.cfg_update(updateXML(
       dbms_xdb.cfg_get()
       ,  '/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()'
       ,  8081))
    /
    --  Change  the  FTP  port  from  2100  to  2111
    call  dbms_xdb.cfg_update(updateXML(
           dbms_xdb.cfg_get()
       ,  '/xdbconfig/sysconfig/protocolconfig/ftpconfig/ftp-port/text()'
       ,  2111))
    /
    COMMIT;
    EXEC  dbms_xdb.cfg_refresh;

    2.當然是改變tomvat的端口啦~
    打開tomcat安裝目錄 /conf/server.xml 文件 將其中的所有服務端口都改了就ok了~~


    posted @ 2008-01-23 19:56 hunter129 閱讀(348) | 評論 (0)編輯 收藏

    下面是個zoho的表單

    在下面的表單中填入你要提交的內容,刷新第二個frame,會看到你提交的內容,很有意思吧^_^

    提交的結果

    posted @ 2008-01-19 21:31 hunter129 閱讀(199) | 評論 (0)編輯 收藏

    僅列出標題
    共4頁: 上一頁 1 2 3 4 
    主站蜘蛛池模板: 日本无卡码免费一区二区三区| 69视频免费在线观看| 巨胸喷奶水视频www网免费| 久久丫精品国产亚洲av不卡| A级毛片高清免费视频在线播放| 亚洲综合精品网站| 国产激情久久久久影院老熟女免费 | 亚洲一区二区精品视频| 国产午夜亚洲精品不卡免下载| 国产精品久久久久久久久免费| 亚洲第一精品电影网| 国产精品色拉拉免费看| 中文字幕无码精品亚洲资源网久久| 国产成人午夜精品免费视频| 亚洲人成网站色7799| 国产免费131美女视频| 国产精品视频全国免费观看| 亚洲精品狼友在线播放| 最近中文字幕无免费| 国产色在线|亚洲| 日本二区免费一片黄2019| 西西人体大胆免费视频| 亚洲区小说区激情区图片区| 亚洲视频在线免费看| 亚洲人成欧美中文字幕| 亚洲成a人片在线观看国产| 三上悠亚在线观看免费| 亚洲精品视频在线免费| 日韩特黄特色大片免费视频| 日日躁狠狠躁狠狠爱免费视频| 精品亚洲永久免费精品| 中文字幕乱码免费视频| 国内成人精品亚洲日本语音| 在线观看午夜亚洲一区| 我们的2018在线观看免费高清| 亚洲av无码有乱码在线观看| 亚洲成AV人片在线观看| 波多野结衣久久高清免费| 999zyz**站免费毛片| 亚洲一级毛片在线播放| 亚洲乱码中文字幕综合234 |