import java.io.*;import java.text.*;import java.math.*;//import java.util.*;public class gaojingdutest {public static void main(String[] args){//double 型資料的小數點控制輸出double a=1113.141592653;DecimalFormat formatter1=new
package ch10;public class MergeSort {/** * 二路歸併排序的遞迴演算法-入口 * @param <T> * @param t * @return */public static <T extends Comparable> boolean mergeSortRecursive(T[] t){if(t==null || t.length <= 1) return true;MSortRecursive(t, 0,
package ch10;/** * successful-折半插入排序 * @author songjie * */public class BinaryInsertSort {public static <T extends Comparable> boolean binaryInsertSort(T[] t){if(t==null || t.length <= 1) return true;for(int i=1 ; i<=t.length-1 ; i++){T
package ch10;public class QuickSort {/** * successfully-快速排序 * 使用了泛型-自然排序 * @param <T> * @param t */public static <T extends Comparable> void quikSort(T[] t){recursiveSort(t, 0, t.length-1);}/** * 快速排序-遞迴調用 * @param <T> * @param t *
package cn.edu.bnu.songjie.ch10.selfclassloader;import java.io.*;/** * 自訂的類載入器,只需要擴充ClassLoader,然後覆蓋它的findClass(Sring name)方法即可, * 該方法根據參數指定的類名,返回對應的Class對象的引用。 * @author songjie * */public class MyClassLoader extends ClassLoader{private String name;
notifyAll前:在對象上休息區內休息notifyAll後:在排隊等待獲得對象鎖。 notify和notifyAll都是把某個對象上休息區內的線程喚醒,notify只能喚醒一個,但究竟是哪一個不能確定,而notifyAll則喚醒這個對象上的休息室中所有的線程. notify會由線程調度隨機挑選一個正在處於WAIT狀態的線程去執行,該線程接下來處於RUNNABLE狀態。notifyAll會由線程調度喚醒所有在鎖上等待的線程,這些線程自由競爭,其中一個線程競爭勝出,然後執行,處於RUNNABL
package ch10;/** * 2-路插入排序 * @author songjie * */public class TwoWayInsertSort {/** * * @param <T> * @param t:原始數組 * @param s:待返回的排好序的數組 * @return * @throws IllegalArgumentException */public static <T extends Comparable> boolean
package ch10;public class ShellInsertSort {/** * 希爾排序 * @param <T> * @param t:待排序數組 * @param dlta:增量數組 * @return */public static <T extends Comparable> boolean shellSort(T[] t, int[] dlta){if(t==null || t.length<=1) return
個人理解僅供參考。 synchronized對於同一顆cpu或者說同一個核來說,是原子性的。諸多線程只能同步訪問被同步的域。這些線程之間必須形成競爭關係,競爭被同步的資源。執行個體: static int a;synchronized(a){//do something
在java6以後我們不但接觸到了Lock相關的鎖,也接觸到了很多更加樂觀的原子修改操作,也就是在修改時我們只需要保證它的那個瞬間是安全的即可,經過相應的封裝後可以再處理對象的並發修改,以及並發中的ABA問題,本文講述Atomic系列的類的實現以及使用方法,其中包含:基本類:AtomicInteger、AtomicLong、AtomicBoolean;參考型別:AtomicReference、AtomicReference的ABA執行個體、AtomicStampedRerence、AtomicMa
在大家使用spring MVC或Hibernate
前面有一篇文章提及到亂碼的產生:http://blog.csdn.net/xieyuooo/article/details/6919007那麼知道主要原因是編碼和解碼方式不一樣,那麼有些時候如果我們知道編碼方式,那麼解碼自然很好搞,例如輸出的contentType會告訴瀏覽器我輸出的內容是什麼編碼格式的,否則瀏覽器會才用一個當前預設的字元集編碼來處理;本文要將一些java如何處理沒有帶正常協議頭部的字元集應當如何來處理。這裡就說的是檔案字元集,在瞭解字元集之前,回到上一篇文章說到預設字元集,自訂
在C、C++中有很多排序演算法,但是通常排序演算法不得不讓程式員在寫代碼的過程中陷入對底層很多指標和位置的理解,java不希望這樣,所以排序大多可以由java幫你做掉,例如,你要對一個數組排序,就通過:Collections.sort(list)那麼這個list就被排序了,排序最終調用的是Arrays.sort方法來完成的,所以數組自然是用Arrays.sort了,而SortedSet裡面內部也有排序功能也是類似的方式的來實現的,只是內部調用了相關的方法來完成而已;SortedSet只是一個介面
文章簡單,相信在很多網站都能搜尋到java
其實本文非常簡單,不過有很多朋友經常問,網上很多例子也寫個大概,很多人也只是知道和大概,就本文而來讀起來非常的輕鬆,不過算是一些小技巧;但是我們的程式中相信用得最多的就是char數組和byte[]數組,而String就是由char[]數組組成的,一般情況下我們就可以認為String用得是最多的對象之一。有關Sring的空間利用率方面,這裡不想多說,只能說很低很低,尤其是你定義的String長度很短的時候,簡直利用率不好說;在前序的一篇文章中說明了關於java的對象空間申請方法以及對象在JVM內部
其實寫java的人貌似和CPU沒啥關係,最多最多和我們在前面提及到的如何將CPU跑滿、如何設定線程數有點關係,但是那個演算法只是一個參考,很多情境不同需要採取實際的手段來解決才可以;而且將CPU跑滿後我們還會考慮如何讓CPU不是那麼滿,呵呵,人類,就是這麼XX,呵呵,好了,本文要說的是其他的一些東西,也許你在java的寫代碼時幾乎不用關注CPU,因為滿足業務才是第一重要的事情,如果你要做到架構層級,為架構提供很多共用資料緩衝之類的東西,中間必然存在很多資料的徵用問題,當然java提供了很多con
今日整理了吸血鬼數位演算法,自己調整了一部分,從網上又看到一個,不過沒看懂其演算法,他對效能的提高在10倍哦 先看我整理後的代碼import java.util.Arrays;/** * 吸血鬼數字,高效率版本.<br> * 一個4位元字,可以拆分2個2位元數位乘積,順序不限。<br> * 比如 1395 =15 * 93 * * @author 老紫竹(laozizhu.com) */public class Vampire { public static
byte buffer一般在網路互動過程中java使用得比較多,尤其是以NIO的架構中;看名字就知道是以位元組碼作為緩衝的,先buffer一段,然後flush到終端。而本文要說的一個重點就是HeapByteBuffer與DirectByteBuffer,以及如何合理使用DirectByteBuffer。1、HeapByteBuffer與DirectByteBuffer,在原理上,前者可以看出分配的buffer是在heap地區的,其實真正flush到遠端時候會先拷貝得到直接記憶體,再做下一步操作(
原本以部落格為主,在眾多朋友的支援下,今年決心寫一本java書籍,不論是否能收到大家的關注,也會盡心去寫好每一條內容。其實目前java方面的書籍十分多,而高手看來,十本書有8、9本是垃圾書,要麼是本身寫得不好,或者沒有闡述到真正想要的,要麼是抄來抄去。也許我寫書帶著兩個目的,一個是我寫的是否能給你帶來價值,否則我沒必要寫。第二如果市面上有差不多的書,我寫著更沒意思,我希望解決某些人群,在成長中遇到困難所可能想要看到的一本書,請看下面介紹。我寫書的主旨是為何呢?我(大家可以叫我小胖或胖哥),我還不
吸血鬼數字是指位元為偶數的數字,可以由一對數字相乘得到,而這對數字各包含乘積的一半位元的數字,其中從最初的數字中選取的數字可以任意排序。以2個0結尾的數字是不允許的,例如,下列數字都是吸血鬼數字:1260 = 21*601827 =21*872187 =27*81寫該程式的思想是:1.首先找到滿足這個等式的3個數,然後再從其中選出是吸血鬼數位數字。下面的vampire函數就是先找出這樣的等式,然後調用CompareString()函數來判斷是否是吸血鬼數字。public static void