Time of Update: 2018-12-05
經常會有人問,如果重寫了equals方法,是不是一定要重寫hashcode方法呢? 答案是yes,因為如果不重寫,那麼基於hash結構的那些東東比如hashMap,HashSet等等會出現非你想象的結果。why?看一下HashMap的源碼,get也是一樣的判斷邏輯:public V put(K key, V value) { if (key == null) return putForNullKey(value); int hash =
Time of Update: 2018-12-05
不知道出於什麼原因,在Ubuntu 10.04以及更新的Ubuntu系統中,預設的官方資料來源中已經不包含sun-java6-jdk這個軟體包了,但是我們可以通過另外的資料來源來安裝Sun Java。首先添加額外資料來源:add-apt-repository "deb http://archive.canonical.com/ lucid partner"更新資料來源:sudo apt-get update此時即可安裝Sun Javasudo apt-get install sun-java6-
Time of Update: 2018-12-05
android開發中,對線程的操作比較悲催,start一個線程後,必須將標誌位置false後過一段時間軸程才會停止。 當我們再次用到線程的時候,不管Thread.isAlife()返回的是true還是false,如果我們再次Thread.start(),就會下面這樣一個錯誤: java.lang.IllegalThreadStateException: Thread already started
Time of Update: 2018-12-05
堆排序的時間複雜度為O(nlogn),相對於插入排序的O(n^2),它有很大的優勢;對歸併排序來講,時間複雜度上兩者一致,但是堆排序具有空間原址性,不用像歸併那樣還要有數組的複製操作。因此,堆排序的優點多多, 下面給出演算法導論裡堆排序的java實現。 /** * 堆排序 * */ public void heapSort(int[] A){ //先建立數組對應的最大堆 buildMaxHeap(A,A.
Time of Update: 2018-12-05
在開發中,有些時候我們要對一個集合中的對象的某個屬性進行按拼音排序,便於更快的找到漢字,我採用Comparator介面,在實現這個介面裡定義定序,取得比較對象的漢字編碼,並將其轉換成字串,運用String類的 compareTo()方法對兩對象進行比較。說了這麼多,怎麼還不貼代碼啊。。。一,建一個要排序的對象實體類ProvinceVO。/* * Copyright 2013 The JA-SIG Collaborative. All rights reserved. * distributed
Time of Update: 2018-12-05
有一個需求,要求反轉一個數組,並把這個數組中小於0的資料處理用0代替public class Test5 { public static void main(String[] args) { int[] array = new int[] { 1, 3, -1, 5, -2 }; System.out.println("原數組為:"); for (int i = 0; i < array.length; i++) {
Time of Update: 2018-12-05
之前有一個曆經三年的項目,負責其中一個AS,最後實現的效能和功能已經超出了我的預期,尤其作為電信運營層級所要求的效能,各類的過載保護等等。最近這個項目可能又要翻出來,這一年多來,位置沒有變化,部門的名字換了兩趟,名片上的除了名字外什麼都不對。實驗室搬了兩次,手頭的機器也更換了。最近有空的時候就整理一下,當時有一些對JAVA很有趣的效能文檔,可惜一下子沒找著。我想發現一些問題還是整理一下,刪除所有項目有關的東西,放在網上,也方便自己查閱。 開發環境篇Makefile的編寫——用於C和JAVAJ
Time of Update: 2018-12-05
做項目的時候經常要遇到編寫檔案下載的模組,如果遇到檔案名稱就是英數位情況,那麼就很簡單,不會出現任何亂碼。但是如果出現了類似中文或者別的其他文字的時候,檔案名稱就會出現亂碼。那麼如何去避免呢,就要在檔案下載的代碼之前對檔案名稱做一些處理轉換。 在IE中,我們要用到URLEncoder類來進行轉換,代碼如下filename =
Time of Update: 2018-12-05
在工作了一段時間,對Java有了比較深入的運用後說說自己的感覺。 我自己的職業也許要給一些人罵,我坦誠說我是做對日外包的,做這個工作不是說我對日本有多麼的好感,只不過現在工作難找,而且我們也屬於出口日本,也不是從日本進口,所以心裡覺得也不算過分。我們公司有兩個外包部門,我所在的部門主要做得是J2EE架構的B/S或者B2C開發,另外一個外包部門做.NET的比較多。
Time of Update: 2018-12-05
Tomcat啟動時報如下錯誤: java.lang.OutOfMemoryError: PermGen space解決辦法: 配置相關記憶體大小。其中按照啟動tomcat的不同方式,分如下三種情況 a):如果是eclipse的tomcat外掛程式啟動tomcat,在“window”菜單-“Preferences”-“Tomcat”-“JVM Settings”中添加JVM參數如下即可: -Xms128M -Xmx512M -XX:PermSize=128M
Time of Update: 2018-12-05
代理類Proxy.getProxyClass(ClassLoader loader,Class<?> … interfaces)擷取一個代理類的位元組碼對象,返回Class類型Proxy.newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h)擷取一個動態代理類的執行個體對象動態代理類:class proxy{InvocationHandler
Time of Update: 2018-12-05
<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]><![endif]-->枚舉枚舉就是要把某一類型的變數只能為某些特定的值中的一個,這樣可以把錯誤在編譯階段就顯現出來,這是比普通變數優越的地方.用普通類類比枚舉類 class WeekDay(){private
Time of Update: 2018-12-05
<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso
Time of Update: 2018-12-05
轉自:http://lavasoft.blog.51cto.com/62575/221932Java線程:並發協作-生產者消費者模型 對於多線程程式來說,不管任何程式設計語言,生產者和消費者模型都是最經典的。就像學習每一門程式設計語言一樣,Hello
Time of Update: 2018-12-05
下面這段代碼的執行結果是怎樣的呢?publc int test(){int x;try{x = 1;return x;}catch(Exception e){x = 2;return x;}finally{x =
Time of Update: 2018-12-05
在java的異常類體系中,Error和RuntimeException是非檢查型異常(unchecked exception),其他的都是檢查型異常(unchecked
Time of Update: 2018-12-05
摘自:《Java Performance》第三章Initial Heap Space Size ConfigurationThis section describes how to use live data size calculations to determine an initial Java heap size. Figure 7-3 shows the fields that identify an application’s live data size. It is wise
Time of Update: 2018-12-05
這裡有如何設定path和classpath的詳細資料。 當我們在Windows命令列中使用Java時,我們會發現在任何一個地方輸入java,系統都會有反應,儘管在那個地方時沒有java.exe的。系統是怎麼做到的呢?其實很簡單,答案就在系統的環境變數中的path屬性。這個過程是這樣的,系統首先在目前的目錄下尋找java.exe,若沒有,它會找系統變數下的path,若這個path中有,那麼就會按這個路徑來找到java.exe,並執行這個檔案。Classpath對應的是JDK中的工具,也需要設定,否
Time of Update: 2018-12-05
在java中,一個線程用一個Thread對象表示一般每一個java程式都有一個main方法(applet沒有),它是主線程的進入點而用Thread表示的線程,進入點自然不是main了,而是run方法定義一個線程,主要就是寫它的run方法寫run有兩種方法,一種是繼承Thread類,然後重寫它的run另一種是實現Runnable介面,然後重寫它的run,如下所示:============================//用外部類實現多線程class ThreadTest2 { public
Time of Update: 2018-12-05
java 的集合類包含兩部分,一部分是實現了介面Collection的類,另一部分是實現了介面Map的類.注意雖然後者沒有實現Collection介面,但是它們都是Collections(不是Collection)的一部分.下面的內容基於jdk1.5以上.其中用到了泛型.下面之所以列出它們的方法,是為了讓大家瞭解一下它們的規律先看實現了Collection的類.它的方法主要可以分為:1.添加,刪除 2.查詢 3.其他1.添加,刪除: boolean add(Object),boolean