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

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

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

    騎士の圣殿

     

    Dom4j的使用(全而好的文章)

         摘要: DOM4J是dom4j.org出品的一個開源XML解析包,它的網站中這樣定義:
    Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP.
      閱讀全文

    posted @ 2007-11-06 16:27 最後の騎士 閱讀(602) | 評論 (0)編輯 收藏

    [轉]利用Java生成靜態HMTL頁面

         摘要: 隨著網站訪問量的加大,每次從數據庫讀取都是以效率作為代價的,靜態頁加在搜索時,也會被優先考慮。互聯網上流行的做法是將數據源代碼寫入數據庫再從數據庫讀取生成靜態面,這樣無形間就加大了數據庫。將現有的JSP頁直接生成靜態頁,將會節省很多。   閱讀全文

    posted @ 2007-11-05 11:47 最後の騎士 閱讀(4273) | 評論 (0)編輯 收藏

    [轉]通用分頁標簽【廢棄以前的兩個設計不合理的標簽】

         摘要: 通用分頁標簽【廢棄以前的兩個設計不合理的標簽】   閱讀全文

    posted @ 2007-11-02 15:33 最後の騎士 閱讀(208) | 評論 (0)編輯 收藏

    常用的幾種 Javascript Ajax Tabs

         摘要: 在頁面上的Tab功能是最常用的,這樣可以節省很多版面。而完成這樣的Tab功能的Javascript Ajax,有多種選擇,其中常用有以下若干種  閱讀全文

    posted @ 2007-11-01 14:59 最後の騎士 閱讀(317) | 評論 (0)編輯 收藏

    五種提高 SQL 性能的方法

         摘要: 有時, 為了讓應用程序運行得更快,所做的全部工作就是在這里或那里做一些很小調整。啊,但關鍵在于確定如何進行調整!  閱讀全文

    posted @ 2007-10-31 11:15 最後の騎士 閱讀(319) | 評論 (0)編輯 收藏

    JAVA進階--詳細解讀Hibernate包的作用

         摘要: Hibernate一共包括了23個jar包,令人眼花繚亂。本文將詳細講解Hibernate每個jar包的作用,便于你在應用中根據自己的需要進行取舍。
      閱讀全文

    posted @ 2007-10-29 16:09 最後の騎士 閱讀(191) | 評論 (0)編輯 收藏

    有關亂碼的處理---中國程序員永遠無法避免的話題

         摘要: 為什么說亂碼是中國程序員無法避免的話題呢?這個首先要從編碼機制上說起,大家都是中文和英文的編碼格式不是一樣,解碼也是不一樣的!如果中國的程序員不會遇到亂碼,那么只有使用漢語編程。  閱讀全文

    posted @ 2007-10-26 13:47 最後の騎士 閱讀(446) | 評論 (0)編輯 收藏

    Java語法總結 - 內部類

    從Java1.1開始引入了內部類以來,它就引起了人們的激烈爭論。其實任何優秀的語言特性用得不好就是濫用,內部類用得不好就會導致代碼像迷宮一樣,導致出現毫無重用的綜合征。

    1、內部類分為成員內部類、靜態嵌套類、方法內部類、匿名內部類。
    幾種內部類的共性:
    A、內部類仍然是一個獨立的類,在編譯之后會內部類會被編譯成獨立的.class文件,但是前面冠以外部類的類命和$符號。
    B、內部類不能用普通的方式訪問。內部類是外部類的一個成員,因此內部類可以自由地訪問外部類的成員變量,無論是否是private的。

    2、成員內部類:形式如下
        class Outer {
            class Inner{}
        }       
    編譯上述代碼會產生兩個文件:Outer.class和Outer$Inner.class。
    成員內部類內不允許有任何靜態聲明!下面代碼不能通過編譯。
        class Inner{
            static int a = 10;
        }
    能夠訪問成員內部類的唯一途徑就是通過外部類的對象!

    A、從外部類的非靜態方法中實例化內部類對象。

        class Outer {
            
    private int i = 10;
            
    public void makeInner(){
                Inner in 
    = new Inner();
                in.seeOuter();
            }
            
    class Inner{
                
    public void seeOuter(){
                    System.out.print(i);
                }
            }
        }

    表面上,我們并沒有創建外部類的對象就實例化了內部類對象,和上面的話矛盾。事實上,如果不創建外部類對象也就不可能調用makeInner()方法,所以到頭來還是要創建外部類對象的。
    你可能試圖把makeInner()方法修飾為靜態方法,即static public void makeInner()。這樣不創建外部類就可以實例化外部類了!但是在一個靜態方法里能訪問非靜態成員和方法嗎?顯然不能。它沒有this引用。沒能跳出那條規則!但是如果在這個靜態方法中實例化一個外部類對象,再用這個對象實例化外部類呢?完全可以!也就是下一條的內容。

    B、從外部類的靜態方法中實例化內部類對象。
        class Outer {
            private int i = 10;
            class Inner{
                public void seeOuter(){
                    System.out.print(i);
                }
            }    
            public static void main(String[] args) {
                Outer out = new Outer();
                Outer.Inner in = out.new Inner();
                //Outer.Inner in = new Outer().new Inner();
                in.seeOuter();
            }
        }

    被注釋掉的那行是它上面兩行的合并形式,一條簡潔的語句。
    對比一下:在外部類的非靜態方法中實例化內部類對象是普通的new方式:Inner in = new Inner();
    在外部類的靜態方法中實例化內部類對象,必須先創建外部類對象:Outer.Inner in = new Outer().new Inner();

    C、內部類的this引用。
    普通的類可以用this引用當前的對象,內部類也是如此。但是假若內部類想引用外部類當前的對象呢?用“外部類名”.this;的形式,如下例的Outer.this。
        class Outer {
            class Inner{
                public void seeOuter(){
                    System.out.println(this);
                    System.out.println(Outer.this);
                }
            }
        }

    D、成員內部類的修飾符。
    對于普通的類,可用的修飾符有final、abstract、strictfp、public和默認的包訪問。
    但是成員內部類更像一個成員變量和方法。
    可用的修飾符有:final、abstract、public、private、protected、strictfp和static。
    一旦用static修飾內部類,它就變成靜態內部類了。


    3、方法內部類。
    顧名思義,把類放在方法內。
        class Outer {
            public void doSomething(){
                class Inner{
                    public void seeOuter(){
                    }
                }    
            }
        }
    A、方法內部類只能在定義該內部類的方法內實例化,不可以在此方法外對其實例化。

    B、方法內部類對象不能使用該內部類所在方法的非final局部變量。
    因為方法的局部變量位于棧上,只存在于該方法的生命期內。當一個方法結束,其棧結構被刪除,局部變量成為歷史。但是該方法結束之后,在方法內創建的內部類對象可能仍然存在于堆中!例如,如果對它的引用被傳遞到其他某些代碼,并存儲在一個成員變量內。正因為不能保證局部變量的存活期和方法內部類對象的一樣長,所以內部類對象不能使用它們。
    下面是完整的例子:
        class Outer {
            public void doSomething(){
                final int a =10;
                class Inner{
                    public void seeOuter(){
                        System.out.println(a);
                    }
                }   
                Inner in = new Inner();
                in.seeOuter();
            }
            public static void main(String[] args) {
                Outer out = new Outer();
                out.doSomething();
            }
         }

    C、方法內部類的修飾符。
    與成員內部類不同,方法內部類更像一個局部變量。
    可以用于修飾方法內部類的只有final和abstract。

    D、靜態方法內的方法內部類。
    靜態方法是沒有this引用的,因此在靜態方法內的內部類遭受同樣的待遇,即:只能訪問外部類的靜態成員。


    4、匿名內部類。
    顧名思義,沒有名字的內部類。表面上看起來它們似乎有名字,實際那不是它們的名字。

    A、繼承式的匿名內部類。
        class Car {
            public void drive(){
                System.out.println("Driving a car!");
            }
        }
        
        class Test{
            public static void main(String[] args) {
                Car car = new Car(){
                    public void drive(){
                        System.out.println("Driving another car!");
                    }
                };
                car.drive();
            }
        }
    結果輸出了:Driving another car! Car引用變量不是引用Car對象,而是Car匿名子類的對象。
    建立匿名內部類的關鍵點是重寫父類的一個或多個方法。再強調一下,是重寫父類的方法,而不是創建新的方法。因為用父類的引用不可能調用父類本身沒有的方法!創建新的方法是多余的。簡言之,參考多態。

    B、接口式的匿名內部類。
        interface  Vehicle {
            public void drive();
        }
        
        class Test{
            public static void main(String[] args) {
                Vehicle v = new Vehicle(){
                    public void drive(){
                        System.out.println("Driving a car!");
                    }
                };
                v.drive();
            }
        }
    上面的代碼很怪,好像是在實例化一個接口。事實并非如此,接口式的匿名內部類是實現了一個接口的匿名類。而且只能實現一個接口。

    C、參數式的匿名內部類。
    class Bar{
        void doStuff(Foo f){}
    }

    interface Foo{
        void foo();
    }

    class Test{
        static void go(){
            Bar b = new Bar();
            b.doStuff(new Foo(){
                public void foo(){
                    System.out.println("foofy");
                }
            });
        }
    }


    5、靜態嵌套類。
    從技術上講,靜態嵌套類不屬于內部類。因為內部類與外部類共享一種特殊關系,更確切地說是對實例的共享關系。而靜態嵌套類則沒有上述關系。它只是位置在另一個類的內部,因此也被稱為頂級嵌套類。
    靜態的含義是該內部類可以像其他靜態成員一樣,沒有外部類對象時,也能夠訪問它。靜態嵌套類不能訪問外部類的成員和方法。
        class Outer{
            static class Inner{}
        }
        class Test {
            public static void main(String[] args){
                Outer.Inner n = new Outer.Inner();
            }
        }

    posted @ 2007-10-24 10:53 最後の騎士 閱讀(204) | 評論 (0)編輯 收藏

    Log4配置

    一、常用輸出格式

    %c   列出logger名字空間的全稱,如加上{<層數>}表示出從最內層算起的指定層數的名字空間
    %X  按MDC(Mapped Diagnostic Context,線程映射表)輸出日志。通常用于多個客戶端連接同一臺服務器,方便服務器區分是那個客戶端訪問留下來的日志。
    %p  日志信息級別
    %d   %d{<日期格式>}:日志信息產生時間,使用ISO8601定義的日期格式
    %C   日志信息所在地(全限類名)
    %m   產生的日志具體信息
    %n    輸出日志信息換行
    %F 顯示調用logger的源文件名
    %l     輸出日志事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數
    %L    顯示調用logger的代碼行
    %M   顯示調用logger的方法名
    %r     顯示從程序啟動時到記錄該條日志時已經經過的毫秒數
    %t     輸出產生該日志事件的線程名
    %% 顯示一個
    二、log4j.properties

    #控制包中日志輸出級別
    log4j.logger.org.apache.struts = debug

    # 應用于控制臺
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.Threshold=DEBUG
    log4j.appender.CONSOLE.Target=System.out
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n
    #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n

    #應用于文件
    log4j.appender.FILE=org.apache.log4j.FileAppender
    log4j.appender.FILE.File=file.log
    log4j.appender.FILE.Append=false
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n
    # Use this layout for LogFactor 5 analysis

    # 應用于文件回滾
    log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
    log4j.appender.ROLLING_FILE.Threshold=ERROR
    log4j.appender.ROLLING_FILE.File=rolling.log
    log4j.appender.ROLLING_FILE.Append=true
    log4j.appender.ROLLING_FILE.MaxFileSize=100KB
    log4j.appender.ROLLING_FILE.MaxBackupIndex=10
    log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n


    #應用于socket
    log4j.appender.SOCKET=org.apache.log4j.net.SocketAppender
    log4j.appender.SOCKET.RemoteHost=localhost
    log4j.appender.SOCKET.Port=5001
    log4j.appender.SOCKET.LocationInfo=true
    # Set up for Log Facter 5
    log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
    log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n


    # Log Factor 5 Appender
    log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
    log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000

    # 發送日志給郵件
    log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
    log4j.appender.MAIL.Threshold=FATAL
    log4j.appender.MAIL.BufferSize=10
    log4j.appender.MAIL.From=web@www.wuset.com
    log4j.appender.MAIL.SMTPHost=www.wusetu.com
    log4j.appender.MAIL.Subject=Log4J Message
    log4j.appender.MAIL.To=web@www.wusetu.com
    log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
    log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n

    # 用于數據庫
    log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
    log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
    log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
    log4j.appender.DATABASE.user=root
    log4j.appender.DATABASE.password=
    log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %-4r [%t] %-5p %c %x - %m%n')
    log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
    log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n

    #每日回滾日志文件
    log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.A1.File=SampleMessages.log4j
    log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
    log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout

    #自定義Appender
    log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
    log4j.appender.im.host = mail.cybercorlin.net
    log4j.appender.im.username = username
    log4j.appender.im.password = password
    log4j.appender.im.recipient = corlin@cybercorlin.net
    log4j.appender.im.layout=org.apache.log4j.PatternLayout
    log4j.appender.im.layout.ConversionPattern =[framework] %d - %-4r [%t] %-5p %c %x - %m%n

    posted @ 2007-10-23 13:13 最後の騎士 閱讀(206) | 評論 (0)編輯 收藏

    學習java的30個目標

            1.你需要精通面向對象分析與設計(OOA/OOD)、涉及模式(GOF,J2EEDP)以及綜合模式。你應該十分了解UML,尤其是class,object,interaction以及statediagrams。
      2.你需要學習JAVA語言的基礎知識以及它的核心類庫(collections,serialization,streams,networking, multithreading,reflection,event,handling,NIO,localization,以及其他)。
      3.你應該了解JVM,classloaders,classreflect,以及垃圾回收的基本工作機制等。你應該有能力反編譯一個類文件并且明白一些基本的匯編指令。
      4.如果你將要寫客戶端程序,你需要學習WEB的小應用程序(applet),必需掌握GUI設計的思想和方法,以及桌面程序的SWING,AWT, SWT。你還應該對UI部件的JAVABEAN組件模式有所了解。JAVABEANS也被應用在JSP中以把業務邏輯從表現層中分離出來。
      5.你需要學習java數據庫技術,如JDBCAPI并且會使用至少一種persistence/ORM構架,例如Hibernate,JDO, CocoBase,TopLink,InsideLiberator(國產JDO紅工廠軟件)或者iBatis。
      6.你還應該了解對象關系的阻抗失配的含義,以及它是如何影響業務對象的與關系型數據庫的交互,和它的運行結果,還需要掌握不同的數據庫產品運用,比如:oracle,mysql,mssqlserver。
      7.你需要學習JAVA的沙盒安全模式(classloaders,bytecodeverification,managers,policyandpermissions,
    codesigning, digitalsignatures,cryptography,certification,Kerberos,以及其他)還有不同的安全/認證 API,例如JAAS(JavaAuthenticationandAuthorizationService),JCE (JavaCryptographyExtension),JSSE(JavaSecureSocketExtension),以及JGSS (JavaGeneralSecurityService)。

      8.你需要學習Servlets,JSP,以及JSTL(StandardTagLibraries)和可以選擇的第三方TagLibraries。
      9.你需要熟悉主流的網頁框架,例如JSF,Struts,Tapestry,Cocoon,WebWork,以及他們下面的涉及模式,如MVC/MODEL2。
      10.你需要學習如何使用及管理WEB服務器,例如tomcat,resin,Jrun,并且知道如何在其基礎上擴展和維護WEB程序。
     11.你需要學習分布式對象以及遠程API,例如RMI和RMI/IIOP。
      12.你需要掌握各種流行中間件技術標準和與java結合實現,比如Tuxedo、CROBA,當然也包括javaEE本身。

      13.你需要學習最少一種的XMLAPI,例如JAXP(JavaAPIforXMLProcessing),JDOM(JavaforXMLDocumentObjectModel),DOM4J,或JAXR(JavaAPIforXMLRegistries)。
      14.你應該學習如何利用JAVAAPI和工具來構建WebService。例如JAX-RPC(JavaAPIforXML/RPC),SAAJ (SOAPwithAttachmentsAPIforJava),JAXB(JavaArchitectureforXMLBinding),JAXM(JavaAPIforXMLMessaging), JAXR(JavaAPIforXMLRegistries),或者JWSDP(JavaWebServicesDeveloperPack)。
      15.你需要學習一門輕量級應用程序框架,例如Spring,PicoContainer,Avalon,以及它們的IoC/DI風格(setter,constructor,interfaceinjection)。
      16.你需要熟悉不同的J2EE技術,例如JNDI(JavaNamingandDirectoryInterface),JMS (JavaMessageService),JTA/JTS(JavaTransactionAPI/JavaTransactionService),JMX (JavaManagementeXtensions),以及JavaMail。
      17.你需要學習企業級JavaBeans(EJB)以及它們的不同組件模式:Stateless/StatefulSessionBeans,EntityBeans(包含Bean- ManagedPersistence[BMP]或者Container-ManagedPersistence[CMP]和它的EJB-QL),或者 Message-DrivenBeans(MDB)。
      18.你需要學習如何管理與配置一個J2EE應用程序服務器,如WebLogic,JBoss等,并且利用它的附加服務,例如簇類,連接池以及分布式處理支援。你還需要了解如何在它上面封裝和配置應用程序并且能夠監控、調整它的性能。
      19.你需要熟悉面向方面的程序設計以及面向屬性的程序設計(這兩個都被很容易混淆的縮寫為AOP),以及他們的主流JAVA規格和執行。例如AspectJ和AspectWerkz。
      20.你需要熟悉對不同有用的API和frame work等來為你服務。例如Log4J(logging/tracing),Quartz (scheduling),JGroups(networkgroupcommunication),JCache(distributedcaching), Lucene(full-textsearch),JakartaCommons等等。
    21.如果你將要對接或者正和舊的系統或者本地平臺,你需要學習JNI (JavaNativeInterface) and JCA (JavaConnectorArchitecture)。
      22.你需要熟悉JINI技術以及與它相關的分布式系統,比如掌握CROBA。
      23.你需要JavaCommunityProcess(JCP)以及他的不同JavaSpecificationRequests(JSRs),例如Portlets(168),JOLAP(69),DataMiningAPI(73),等等。
      24.你應該熟練掌握一種JAVAIDE例如sunOne,netBeans,IntelliJIDEA或者Eclipse。(有些人更喜歡VI或EMACS來編寫文件。隨便你用什么了:)
      25.JAVA(精確的說是有些配置)是冗長的,它需要很多的人工代碼(例如EJB),所以你需要熟悉代碼生成工具,例如XDoclet。
      26.你需要熟悉一種單元測試體系(JNunit),并且學習不同的生成、部署工具(Ant,Maven)。
      27.你需要熟悉一些在JAVA開發中經常用到的軟件工程過程。例如RUP(RationalUnifiedProcess)andAgilemethodologies。
      28.你需要能夠深入了解加熟練操作和配置不同的操作系統,比如GNU/linux,sunsolaris,macOS等,做為跨平臺軟件的開發者。
      29.你還需要緊跟java發展的步伐,比如現在可以深入的學習javaME,以及各種java新規范,技術的運用,如新起的web富客戶端技術。
      30.你必需要對opensource有所了解,因為至少java的很多技術直接是靠開源來驅動發展的,如java3D技術。

    posted @ 2007-10-22 10:05 最後の騎士 閱讀(199) | 評論 (0)編輯 收藏

    僅列出標題
    共2頁: 上一頁 1 2 

    導航

    統計

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章分類

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日韩毛片免费在线观看| 午夜福利不卡片在线播放免费| 日韩激情淫片免费看| 亚洲乱码在线视频| h视频在线观看免费完整版| 亚洲韩国—中文字幕| 免费一级不卡毛片| 亚洲AV无码乱码国产麻豆| a成人毛片免费观看| 久久夜色精品国产嚕嚕亚洲av| 四虎影视无码永久免费| 国产亚洲欧洲精品| 一级毛片**不卡免费播| 337p日本欧洲亚洲大胆艺术| 8x8x华人永久免费视频| 亚洲伊人久久大香线蕉| 18禁成年无码免费网站无遮挡 | 国产精品免费无遮挡无码永久视频| 亚洲美女又黄又爽在线观看| 永久免费AV无码网站国产| 亚洲专区在线视频| 欧美男同gv免费网站观看| 亚洲AV无码专区在线观看成人| 全部免费国产潢色一级| 中文字幕不卡免费视频| 亚洲尹人九九大色香蕉网站| 中文字幕av无码无卡免费| 久久无码av亚洲精品色午夜| 亚洲精品无码专区久久同性男| 国产免费无码AV片在线观看不卡| 中文字幕亚洲综合久久| 免费观看的a级毛片的网站| 美女黄频a美女大全免费皮| 亚洲熟妇丰满多毛XXXX| 亚洲精品视频免费在线观看| 亚洲aⅴ天堂av天堂无码麻豆| 国产亚洲精品拍拍拍拍拍| 在线日本高清免费不卡| 亚洲国产日韩视频观看| 亚洲人午夜射精精品日韩| 久久精品人成免费|