lqxue

          常用鏈接

          統(tǒng)計

          book

          tools

          最新評論

          #

          java String ==

          一般來說,程序代碼中的字符串常量經(jīng)過編譯之后,都具有唯一性,即,內(nèi)存中不會存在兩份相同的字符串常量。

          (通常情況下,C++,C語言程序編譯之后,也具有同樣的特性。)

          比如,我們有如下代碼。

          String A = “atom”;

          String B = “atom”;

          我們有理由認為,A和B指向同一個字符串常量。即,A==B。

          注意,聲明字符串變量的代碼,不符合上面的規(guī)則。

          String C= new String(“atom”);

          String D = new String(“atom”);

          這里的C和D的聲明是字符串變量的聲明,所以,C != D。

          posted @ 2007-12-05 16:14 lqx 閱讀(172) | 評論 (0)編輯 收藏

          技術(shù)補習之序列化ID(serialVersionUID)

          簡單來說,Java的序列化機制是通過在運行時判斷類的serialVersionUID來驗證版本一致性的。在進行反序列化時,JVM會把傳來的字節(jié)流中的serialVersionUID與本地相應(yīng)實體(類)的serialVersionUID進行比較,如果相同就認為是一致的,可以進行反序列化,否則就會出現(xiàn)序列化版本不一致的異常。

          當實現(xiàn)java.io.Serializable接口的實體(類)沒有顯式地定義一個名為serialVersionUID,類型為long的變量時,Java序列化機制會根據(jù)編譯的class自動生成一個serialVersionUID作序列化版本比較用,這種情況下,只有同一次編譯生成的class才會生成相同的serialVersionUID

          如果我們不希望通過編譯來強制劃分軟件版本,即實現(xiàn)序列化接口的實體能夠兼容先前版本,未作更改的類,就需要顯式地定義一個名為serialVersionUID,類型為long的變量,不修改這個變量值的序列化實體都可以相互進行串行化和反串行化。



          源自:http://sharajava.javaeye.com/blog/102886

          posted @ 2007-11-14 13:58 lqx 閱讀(504) | 評論 (0)編輯 收藏

          二叉樹的遍歷

           

           

          前序遍歷二叉樹算法的框架是
          若二叉樹為空,則空操作;
          否則
          訪問根結(jié)點 (V);
          前序遍歷左子樹 (L);
          前序遍歷右子樹 (R)。

          遍歷結(jié)果
          - + a * b - c d / e f

          中序遍歷二叉樹算法的框架是:
          若二叉樹為空,則空操作;
          否則
          中序遍歷左子樹 (L);
          訪問根結(jié)點 (V);
          中序遍歷右子樹 (R)。

          遍歷結(jié)果
            a + b * c - d - e / f



          后序遍歷二叉樹算法的框架是
          若二叉樹為空,則空操作;
          否則
          后序遍歷左子樹 (L);
          后序遍歷右子樹 (R);
          訪問根結(jié)點 (V)。

          遍歷結(jié)果
          a b c d - * + e f / -


          參考文檔:http://51zk.csai.cn/sjjg/200608291542281644.htm
                               http://faculty.math.tsinghua.edu.cn/faculty/~jli/teaching/2006/Fall/ds/347,32,后序遍歷 (Postorder Traversal)

          posted @ 2007-11-09 16:11 lqx 閱讀(534) | 評論 (0)編輯 收藏

          javascript 判斷是否是ie,是否是特定版本

          是否是Opera:
          is_opera = /opera/i.test(navigator.userAgent)
          是否是IE:
          is_ie = (/msie/i.test(navigator.userAgent) && !is_opera)

          是否是ie7:
          (is_ie && /msie 7\.0/i.test(navigator.userAgent));

          posted @ 2007-11-06 17:32 lqx 閱讀(1081) | 評論 (0)編輯 收藏

          tomcat 遠程部署]

          1、tomcat-users.xml should include one more role, 'admin'..e.g.

          <?xml version='1.0' encoding='utf-8'?>
          <tomcat-users>
          <role rolename="admin"/>
          <role rolename="manager"/>
          <role rolename="tomcat"/>
          <role rolename="role1"/>
          <user username="admin" password="secret" roles="manager,admin"/>
          <user username="tomcat" password="tomcat" roles="tomcat"/>
          <user username="role1" password="tomcat" roles="role1"/>
          <user username="both" password="tomcat" roles="tomcat,role1"/>
          </tomcat-users>
          2、ant 腳本

          <target name="tomcatDeploy" depends="compile">
            
          <taskdef name="tdeploy" classname="org.apache.catalina.ant.DeployTask">
              
          <classpath refid="cp">
              
          </classpath>
            
          </taskdef>
            
          <tdeploy url="${tomcat.url}" username="${tomcat.username}" password="${tomcat.password}" path="${tomcat.path}" war="${dir.target}/${warFileName}" />
           
          </target>
           
          <target name="tomcatUndeploy" description="Remove web application">
            
          <taskdef name="tomcatUndeploy" classname="org.apache.catalina.ant.UndeployTask" classpathref="cp" />
            
          <tomcatUndeploy url="${tomcat.url}" username="${tomcat.username}" password="${tomcat.password}" path="${tomcat.path}"/>
            
          </target>

          posted @ 2007-10-29 11:10 lqx 閱讀(680) | 評論 (0)編輯 收藏

          [收集]java5 的一些的性

          @SuppressWarnings與前兩個注釋有所不同,你需要添加一個參數(shù)才能正確使用,這些參數(shù)值都是已經(jīng)定義好了的,我們選擇性的使用就好了,參數(shù)如下:

          參數(shù)

          語義

          deprecation

          使用了過時的類或方法時的警告

          unchecked

          執(zhí)行了未檢查的轉(zhuǎn)換時的警告,例如當使用集合時沒有用泛型 (Generics) 來指定集合保存的類型

          fallthrough

          Switch 程序塊直接通往下一種情況而沒有 Break 時的警告

          path

          在類路徑、源文件路徑等中有不存在的路徑時的警告

          serial

          當在可序列化的類上缺少 serialVersionUID 定義時的警告

          finally

          任何 finally 子句不能正常完成時的警告

          all

          關(guān)于以上所有情況的警告

             

          Override

            Override表示,它所注釋的方法應(yīng)該重寫超類中具有相同簽名的方法:
          @Override

            public int hashCode() {

            ...

            }


            看上面的例子,如果沒有在hashCode中將“C”大寫,在編譯時不會出現(xiàn)錯誤,但是在運行時將無法像期望的那樣調(diào)用該方法。通過添加Override標簽,編譯器會提示它是否真正地執(zhí)行了重寫。

            在超類發(fā)生改變的情況中,這也很有幫助。如果向該方法中添加一個新參數(shù),而且方法本身也被重命名了,那么子類將突然不能編譯,因為它不再重寫超類的任何東西。

          枚舉

            


            enum非常像public static final int聲明,后者作為枚舉值已經(jīng)使用了很多年。對int所做的最大也是最明顯的改進是類型安全――您不能錯誤地用枚舉的一種類型代替另一種類型,這一點和int不同,所有的int對編譯器來說都是一樣的。除去極少數(shù)例外的情況,通常都應(yīng)該用enum實例替換全部的枚舉風格的int結(jié)構(gòu)。

            枚舉提供了一些附加的特性。EnumMap和EnumSet這兩個實用類是專門為枚舉優(yōu)化的標準集合實現(xiàn)。如果知道集合只包含枚舉類型,那么應(yīng)該使用這些專門的集合來代替HashMap或HashSet。

            大部分情況下,可以使用enum對代碼中的所有public static final int做插入替換。它們是可比的,并且可以靜態(tài)導入,所以對它們的引用看起來是等同的,即使是對于內(nèi)部類(或內(nèi)部枚舉類型)。注意,比較枚舉類型的時候,聲明它們的指令表明了它們的順序值。

            “隱藏的”靜態(tài)方法

            兩個靜態(tài)方法出現(xiàn)在所有枚舉類型聲明中。因為它們是枚舉子類上的靜態(tài)方法,而不是Enum本身的方法,所以它們在java.lang.Enum的javadoc中沒有出現(xiàn)。

            第一個是values(),返回一個枚舉類型所有可能值的數(shù)組。

            第二個是valueOf(),為提供的字符串返回一個枚舉類型,該枚舉類型必須精確地匹配源代碼聲明。

            方法

            關(guān)于枚舉類型,我們最喜歡的一個方面是它可以有方法。過去您可能需要編寫一些代碼,對public static final int進行轉(zhuǎn)換,把它從數(shù)據(jù)庫類型轉(zhuǎn)換為JDBC URL。而現(xiàn)在則可以讓枚舉類型本身帶一個整理代碼的方法。下面就是一個例子,包括DatabaseType枚舉類型的抽象方法以及每個枚舉實例中提供的實現(xiàn):

            
            public enum  DatabaseType {

            ORACLE {

            public String getJdbcUrl() {...}

            },

            MYSQL {

            public String getJdbcUrl() {...}

            };

            public abstract String getJdbcUrl();

            }


            現(xiàn)在枚舉類型可以直接提供它的實用方法。例如:

            DatabaseType dbType = ...;

            String jdbcURL = dbType.getJdbcUrl();

            要獲取URL,必須預先知道該實用方法在哪里。

          可變參數(shù)(Vararg)

           Log.log(String code, String... args)
          協(xié)變返回

            協(xié)變返回的基本用法是用于在已知一個實現(xiàn)的返回類型比API更具體的時候避免進行類型強制轉(zhuǎn)換。在下面這個例子中,有一個返回Animal對象的Zoo接口。我們的實現(xiàn)返回一個AnimalImpl對象,但是在JDK 1.5之前,要返回一個Animal對象就必須聲明。:

            
              public interface Zoo  {

            public Animal getAnimal();

            }

            public class ZooImpl implements Zoo {

            public Animal getAnimal(){

            return new AnimalImpl();

            }

            }
            協(xié)變返回的使用替換了三個反模式:
          • 直接字段訪問。為了規(guī)避API限制,一些實現(xiàn)把子類直接暴露為字段:

                  ZooImpl._animal
                 另一種形式是,在知道實現(xiàn)的實際上是特定的子類的情況下,在調(diào)用程序中執(zhí)行向下轉(zhuǎn)換:



            

          ((AnimalImpl)ZooImpl.getAnimal()).implMethod();

            



              
          • 我看到的最后一種形式是一個具體的方法,該方法用來避免由一個完全不同的簽名所引發(fā)的問題:


            

          ZooImpl._getAnimal();

            這三種模式都有它們的問題和局限性。要么是不夠整潔,要么就是暴露了不必要的實現(xiàn)細節(jié)。

            協(xié)變

            協(xié)變返回模式就比較整潔、安全并且易于維護,它也不需要類型強制轉(zhuǎn)換或特定的方法或字段:

            public AnimalImpl getAnimal(){

            return new AnimalImpl();

            }

            使用結(jié)果:

            ZooImpl.getAnimal().implMethod();

          參考:http://www.linuxpk.com/43834.html

          posted @ 2007-10-23 17:15 lqx 閱讀(786) | 評論 (0)編輯 收藏

          怎樣同時啟動多個mysql?

          啟動mysql
          nohup ./mysqld --basedir=/home/cvsadmin/mysql --datadir=/home/cvsadmin/mysql/data --port=3308 --socket=/tmp/mysqld3308.bak & 

          登錄mysql
          ./mysql -uroot -p --socket=/tmp/mysqld3308.bak

          posted @ 2007-10-21 13:05 lqx 閱讀(354) | 評論 (0)編輯 收藏

          solaris 下怎么設(shè)置環(huán)境變量

          sh:  
            variable=value  
            export   variable  
             
            csh:  
            setenv   variable   value

          posted @ 2007-10-21 10:40 lqx 閱讀(474) | 評論 (0)編輯 收藏

          mysql 判斷表是否存在

          SHOW   TABLES   LIKE   '%tb_bp_d_case%';  
          select `TABLE_NAME` from `INFORMATION_SCHEMA`.`TABLES` where `TABLE_NAME`='res_mos_cpu_statistics'

          posted @ 2007-10-20 14:58 lqx 閱讀(3921) | 評論 (0)編輯 收藏

          [收藏]Core JavaScript 1.5 Reference:Global Objects:RegExp

          http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:RegExp

          posted @ 2007-10-19 14:31 lqx 閱讀(250) | 評論 (0)編輯 收藏

          僅列出標題
          共18頁: First 上一頁 4 5 6 7 8 9 10 11 12 下一頁 Last 
          主站蜘蛛池模板: 德钦县| 凤翔县| 郧西县| 安宁市| 石阡县| 灵丘县| 东阳市| 新丰县| 乌审旗| 灵台县| 静海县| 松江区| 巨野县| 杨浦区| 外汇| 忻州市| 佛教| 永川市| 名山县| 黑河市| 东丰县| 南部县| 卢湾区| 临高县| 义乌市| 南昌县| 凤冈县| 商都县| 金门县| 文安县| 峨眉山市| 芷江| 崇明县| 武夷山市| 通许县| 阳西县| 甘德县| 综艺| 化德县| 南涧| 镇康县|