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

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

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

    yangxiang

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      8 隨筆 :: 0 文章 :: 73 評論 :: 0 Trackbacks

    2009年7月29日 #

    [英文出處]:21 Laws of Computer Programming
    [譯文出處]:外刊IT評論


    任何一個有經驗的程序員都知道,軟件開發遵循著一些不成文的法則。然而,如果你不遵循這些法則也并不意味著會受到懲罰;相反,有時你還會獲得意外的好處。下面的就是軟件編程中的21條法則:

    1. 任何程序一旦部署即顯陳舊。
    2. 修改需求規范來適應程序比反過來做更容易。
    3. 一個程序如果很有用,那它注定要被改掉。
    4. 一個程序如果沒用,那它一定會有很好的文檔。
    5. 任何程序里都僅僅只有10%的代碼會被執行到。
    6. 軟件會一直膨脹到耗盡所有資源為止。
    7. 任何一個有點價值的程序里都會有至少一個bug。
    8. 原型完美的程度跟審視的人數成反比,反比值會隨著涉及的資金數增大。
    9. 軟件直到被變成產品運行至少6個月后,它最嚴重的問題才會被發現。
    10. 無法檢測到的錯誤的形式無限多樣,而能被檢測到的正好相反,被定義了的十分有限。
    11. 修復一個錯誤所需要投入的努力會隨著時間成指數級增加。
    12. 軟件的復雜度會一直增加,直到超出維護這個程序的人的承受能力。
    13. 任何自己的程序,幾個月不看,形同其他人寫的。
    14. 任何一個小程序里面都有一個巨大的程序蠢蠢欲出。
    15. 編碼開始的越早,花費的時間越長。
    16. 一個粗心的項目計劃會讓你多花3倍的時間去完成;一個細心的項目計劃只會讓你多花2倍的時間。
    17. 往大型項目里添加人手會使項目更延遲。
    18. 一個程序至少會完成90%,但永遠完成不了超過95%。
    19. 如果你想麻煩被自動處理掉,你得到的是自動產生的麻煩。
    20. 開發一個傻瓜都會使用的軟件,只有傻瓜愿意使用它。
    21. 用戶不會真正的知道要在軟件里做些什么,除非使用過。
    posted @ 2010-09-30 09:50 『 Y X 』 閱讀(268) | 評論 (0)編輯 收藏

    Eclipse快捷鍵按了沒有反應可能是和其他程序設置的快捷鍵沖突了,如果確認沒有沖突,可以看看是不是如下問題。

    在工具欄(Toolbars)上面點擊右鍵,選擇“Customize Perspective...”

    看看Command Group Availability 里面有沒有勾選你所設置的快捷鍵的分組,如果沒有就勾上,再試試快捷鍵能否使用。


    posted @ 2010-08-24 09:55 『 Y X 』 閱讀(3441) | 評論 (0)編輯 收藏

        當為遺留系統加入spring時,經典問題就是遺留系統需要引用spring管理的bean。幸好spring有機制可以處理這些。

        建一個類實現ApplicationContextAware接口,有一個引用ApplicationContext的靜態成員,然后,遺留系統需要引用spring管理的bean的地方,使用這個類。

    1.比如:我這里建一個SpringContext類

    package net.blogjava.chenlb;

    import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;

    /**
     * 此類可以取得Spring的上下文.
     * Spring 使new方法創建的對象可以引用spring管理的 bean.
     * 2007-10-18 上午11:12:33
     * 
    @author chenlb
     
    */
    public class SpringContext implements ApplicationContextAware {

        
    protected static ApplicationContext context;
        
        
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            context 
    = applicationContext;
        }

        
    public static ApplicationContext getContext() {
            
    return context;
        }
    }


    2.然后在spring配置文件里加

    <bean id="springContext" class="net.blogjava.chenlb.SpringContext"></bean>


    3.其它類中引用

    MyBean myBean = (MyBean) SpringContext.getContext().getBean("myBean");


    4.如果老是寫SpringContext.getContext().getBean("...");麻煩,可以建一個工廠類來返回你要 的bean

    package net.blogjava.chenlb;

    public class MyServerFactory {

        
    public static MyBean1 getMyBean1() {
            
    return (MyBean1) SpringContext.getContext().getBean("myBean1");
        }
    }



    原文:http://chenlb.javaeye.com/blog/135897

    posted @ 2010-06-15 19:22 『 Y X 』 閱讀(317) | 評論 (0)編輯 收藏

    <%@ page import="org.springframework.web.context.support.WebApplicationContextUtils" %>
    <%@ page import="org.springframework.web.context.WebApplicationContext" %>
    <%
        WebApplicationContext context =    WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext());
        SomeBean bean=(SomeBean)context.getBean(SomeBean.class);
    %>

    posted @ 2010-06-15 19:18 『 Y X 』 閱讀(428) | 評論 (0)編輯 收藏

    1、xml.xml
    <?xml version="1.0" encoding="utf-8"?>
    <?xml-stylesheet type="text/xsl" href="xsl.xsl"?>
    <book>
        
    <title>XML與JSP</title>
        
    <chapter>
            
    <title>第1章 認識XML與DTD</title>
            
    <section>
                
    <title>XML的產生</title>
                
    <example>HelloWorld.html</example>
            
    </section>
        
    </chapter>
        
    <chapter>
            
    <title>第2章 XML名稱空間</title>
            
    <section>
                
    <title>名稱空間在元素和屬性中的應用</title>
                
    <section>
                    
    <title>名稱空間在元素中的應用</title>
                    
    <example>people.xml</example>
                
    </section>
                
    <section>
                    
    <title>缺省名稱空間</title>
                    
    <example>book.xml</example>
                
    </section>
                
    <section>
                    
    <title>名稱空間在屬性中的應用</title>
                    
    <example>book2.xml</example>
                
    </section>
            
    </section>
            
    <section>
                
    <title>名稱空間和DTD</title>
            
    </section>
        
    </chapter>
    </book>

    2、xsl.xsl
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        
    <xsl:output method="html" version="1.0" encoding="utf-8" standalone="yes"/>
        
    <xsl:template match="/">
            
    <html>
                
    <head>
                    
    <title>使用XML+XSLT生成的HTML文件</title>
                
    </head>
                
    <body>
                    
    <xsl:apply-templates select="book"/>
                
    </body>
            
    </html>
        
    </xsl:template>
        
    <xsl:template match="chapter">
            
    <br/>
            
    <br/>
            
    <xsl:value-of select="./title"/>
            
    <xsl:apply-templates select="./section"/>
        
    </xsl:template>
        
    <xsl:template match="chapter/section">
            
    <br/>
            
    <br/>
            
    <xsl:text>    </xsl:text>
            
    <!--<xsl:number format="1. " level="multiple"/>-->
            
    <xsl:number format="1. " level="multiple" count="chapter | section" from="book"/>
            
    <xsl:value-of select="./title"/>
            
    <xsl:apply-templates select="./section"/>
        
    </xsl:template>
        
    <xsl:template match="chapter/section/section">
            
    <br/>
            
    <br/>
            
    <xsl:text>        </xsl:text>
            
    <!--<xsl:number format="1. " level="multiple"/>-->
            
    <xsl:number format="1. " level="multiple" count="chapter | section" from="book"/>
            
    <xsl:value-of select="./title"/>
            
    <xsl:number value="123456789" grouping-separator="," grouping-size="3"/>
        
    </xsl:template>
    </xsl:stylesheet>

    3、java.java
    package test;

    import java.io.File;
    import java.io.IOException;

    import javax.xml.transform.Result;
    import javax.xml.transform.Source;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerConfigurationException;
    import javax.xml.transform.TransformerException;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.stream.StreamResult;
    import javax.xml.transform.stream.StreamSource;

    import org.junit.Test;

    public class Train {
        @Test
        
    public void test() throws IOException {
            String xmlFileName 
    = "d:/test/xml.xml";
            String xslFileName 
    = "d:/test/xsl.xsl";
            String htmlFileName 
    = "d:/test/html.html";
            Train.Transform(xmlFileName, xslFileName, htmlFileName);
        }

        
    public static void Transform(String xmlFileName, String xslFileName,
                String htmlFileName) {
            
    try {
                TransformerFactory tFac 
    = TransformerFactory.newInstance();
                Source xslSource 
    = new StreamSource(xslFileName);
                Transformer t 
    = tFac.newTransformer(xslSource);
                File xmlFile 
    = new File(xmlFileName);
                File htmlFile 
    = new File(htmlFileName);
                Source source 
    = new StreamSource(xmlFile);
                Result result 
    = new StreamResult(htmlFile);
                System.out.println(result.toString());
                t.transform(source, result);
            } 
    catch (TransformerConfigurationException e) {
                e.printStackTrace();
            } 
    catch (TransformerException e) {
                e.printStackTrace();
            }
        }
    }

    4、html.html
    <html>
    <head>
    <META http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>使用XML+XSLT生成的HTML文件</title>
    </head>
    <body>
        XML與JSP
        
    <br>
    <br>第1章 認識XML與DTD<br>
    <br>&nbsp;&nbsp;&nbsp;&nbsp;1.1. XML的產生
        
    <br>
    <br>第2章 XML名稱空間<br>
    <br>&nbsp;&nbsp;&nbsp;&nbsp;2.1. 名稱空間在元素和屬性中的應用<br>
    <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.1.1. 名稱空間在元素中的應用123,456,789<br>
    <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.1.2. 缺省名稱空間123,456,789<br>
    <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.1.3. 名稱空間在屬性中的應用123,456,789<br>
    <br>&nbsp;&nbsp;&nbsp;&nbsp;2.2. 名稱空間和DTD
    </body>
    </html>

    5、效果
    XML與JSP

    第1章 認識XML與DTD

        1.1. XML的產生

    第2章 XML名稱空間

        2.1. 名稱空間在元素和屬性中的應用

            2.1.1. 名稱空間在元素中的應用123,456,789

            2.1.2. 缺省名稱空間123,456,789

            2.1.3. 名稱空間在屬性中的應用123,456,789

        2.2. 名稱空間和DTD

    posted @ 2009-08-11 17:05 『 Y X 』 閱讀(5069) | 評論 (1)編輯 收藏

    VIM中常用的替換模式總結。

    0,:g/null/d

    找到null的行并且刪掉

    1,簡單替換表達式

    替換命令可以在全文中用一個單詞替換另一個單詞:

    :%s/four/4/g

    “%” 范圍前綴表示在所有行中執行替換。最后的 “g” 標記表示替換行中的所有匹配點。如果僅僅對當前行進行操作,那么只要去掉%即可

        如果你有一個象 “thirtyfour” 這樣的單詞,上面的命令會出錯。這種情況下,這個單詞會被替換成”thirty4″。要解決這個問題,用 “\<” 來指定匹配單詞開頭:

             :%s/\<four/4/g

    顯然,這樣在處理 “fourty” 的時候還是會出錯。用 “\>” 來解決這個問題:

             :%s/\<four\>/4/g

    如果你在編碼,你可能只想替換注釋中的 “four”,而保留代碼中的。由于這很難指定,可以在替換命令中加一個 “c” 標記,這樣,Vim 會在每次替換前提示你:

             :%s/\<four\>/4/gc

    2,刪除多余的空格

    要刪除這些每行后面多余的空格,可以執行如下命令:

             :%s/\s\+$//

    命令前面指明范圍是 “%”,所以這會作用于整個文件。”substitute” 命令的匹配模式是

    “\s\+$”。這表示行末($)前的一個或者多個(\+)空格(\s)。替換命令的 “to” 部分是空的:”//”。這樣就會刪除那些匹配的空白字符。

    3,匹配重復性模式

    星號項 “*” 規定在它前面的項可以重復任意次。因此:

             /a*

    匹配 “a”,”aa”,”aaa”,等等。但也匹配 “” (空字串),因為零次也包含在內。星號 “*” 僅僅應用于那個緊鄰在它前面的項。因此 “ab*” 匹配 “a”,”ab”,”abb”,”abbb”,等等。如要多次重復整個字符串,那么該字符串必須被組成一個項。組成一項的方法就是在它前面加 “\(”,后面加 “\)”。因此這個命令:

             /\(ab\)*

    匹配: “ab”,”abab”,”ababab”,等等。而且也匹配 “”。

    要避免匹配空字串,使用 “\+”。這表示前面一項可以被匹配一次或多次。

             /ab\+

    匹配 “ab”,”abb”,”abbb”,等等。它不匹配 后面沒有跟隨 “b” 的 “a”。

    要匹配一個可選項,用 “\=”。 例如:

             /folders\=

    匹配 “folder” 和 “folders”。

    4,指定重復次數

    要匹配某一項的特定次數重復,使用 “\{n,m}” 這樣的形式。其中 “n” 和 “m” 都是數字。在它前面的那個項將被重復 “n” 到 “m” 次 (|inclusive| 包含 “n” 和 “m”)。例如:

             /ab\{3,5}

    匹配 “abbb”,”abbbb” 以及 “abbbbb”。

        當 “n” 省略時,被默認為零。當 “m” 省略時,被默認為無限大。當 “,m” 省略時,就表示重復正好 “n” 次。例如:

             模式            匹配次數

             \{,4}             0,1,2,3 或 4

             \{3,}             3,4,5,等等

             \{0,1}            0 或 1,同 \=

             \{0,}             0 或 更多,同 *

             \{1,}             1 或 更多,同 \+

             \{3}              3

    5,多選一匹配

    在一個查找模式中,”或” 運算符是 “\|”。例如:

             /foo\|bar

    這個命令匹配了 “foo” 或 “bar”。更多的抉擇可以連在后面:

             /one\|two\|three

    匹配 “one”,”two” 或 “three”。

        如要匹配其多次重復,那么整個抉擇結構須置于 “\(” 和 “\)” 之間:

             /\(foo\|bar\)\+

    這個命令匹配 “foo”,”foobar”,”foofoo”,”barfoobar”,等等。

        再舉個例子:

             /end\(if\|while\|for\)

    這個命令匹配 “endif”,”endwhile” 和 “endfor”。

    posted @ 2009-07-29 23:12 『 Y X 』 閱讀(762) | 評論 (0)編輯 收藏

         摘要: Uploadify is a jQuery plugin that allows the easy integration of a multiple (or single) file uploads on your website. It requires Flash and any backend development language. An array of options allow for full customization for advanced users, but basic implementation is so easy that even coding novices can do it.
    Uploadify是jQuery的插件,用于web的多文件(或單文件)上傳。需要flash和后臺程序支持。多種自定義選項適合于高級使用者,也可以做簡單的最基本的實現,即使一個初學者也能完成。  閱讀全文
    posted @ 2009-07-29 15:01 『 Y X 』 閱讀(48663) | 評論 (72)編輯 收藏

    主站蜘蛛池模板: 免费无遮挡无码永久视频 | 亚洲欧美日韩中文无线码 | 久久99国产亚洲高清观看首页| 亚洲暴爽av人人爽日日碰| 成年女人色毛片免费看| 亚洲av无码久久忘忧草| 久久99九九国产免费看小说| 亚洲乱码一区av春药高潮| 麻豆高清免费国产一区| 亚洲国产美女在线观看| 国产片AV片永久免费观看| 亚洲人成7777影视在线观看| 4虎永免费最新永久免费地址| 亚洲国产综合精品| 久久不见久久见中文字幕免费| 亚洲一卡一卡二新区无人区| 免费无码又爽又高潮视频| 国产亚洲视频在线观看网址 | 国产福利在线免费| 亚洲欧美一区二区三区日产| 国产一级高清免费观看| rh男男车车的车车免费网站| 亚洲av最新在线网址| 久久久久久曰本AV免费免费| 亚洲一区二区三区乱码在线欧洲| 午夜a级成人免费毛片| 瑟瑟网站免费网站入口| 国产精品亚洲аv无码播放| 亚洲精品视频在线观看免费| 亚洲中文字幕无码中文| yy6080亚洲一级理论| 国产午夜精品免费一区二区三区| 亚洲妇女水蜜桃av网网站| 国产精品免费_区二区三区观看| 日韩在线一区二区三区免费视频| 亚洲精品无码Av人在线观看国产| 亚洲免费电影网站| 免费人成再在线观看网站| 亚洲自偷自偷精品| 国产男女性潮高清免费网站| 三年片在线观看免费|