Time of Update: 2017-01-19
本文執行個體講述了Java基於Runtime調用外部程式出現阻塞的解決方案, 是一個很實用的技巧。分享給大家供大家參考。具體分析如下:有時候在java代碼中會調用一些外部程式,比如SwfTools來轉換swf、ffmpeg來轉換視頻等。如果你的代碼這樣寫:Runtime.getRuntime().exec(command),會發現程式一下就執行完畢,而在命令列裡要執行一會,是因為java沒有等待外部程式的執行完畢,此時就需要使用阻塞,來等待外部程式執行結果:InputStream stderr
Time of Update: 2017-01-19
鎖作為並發共用資料,保證一致性的工具,在JAVA平台有多種實現(如 synchronized 和 ReentrantLock等等 )
Time of Update: 2017-01-19
本文執行個體講述了Java集合Set、List、Map的遍曆方法,分享給大家供大家參考。具體方法如下:package com.shellway.javase;import java.util.ArrayList;import java.util.Collection;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Map;import
Time of Update: 2017-01-19
堆和棧是Java資料結構裡非常重要的概念,本文較為詳細的分析了二者之間的區別。供大家參考。具體如下:Java的堆是一個運行時資料區,類的(對象從中分配空間。這些對象通過new、newarray、anewarray和multianewarray等 指令建立,它們不需要程式碼來顯式的釋放。堆是由記憶體回收來負責的,堆的優勢是可以動態地分配記憶體大小,生存期也不必事先告訴編譯器,因為它是在運行時
Time of Update: 2017-01-19
本文執行個體講述了Java讀取檔案的簡單實現方法,非常實用。分享給大家供大家參考之用。具體方法如下:這是一個簡單的讀取檔案的代碼,並試著讀取一個log檔案,再輸出。主要代碼如下:import java.io.*;public class FileToString { public static String readFile(String fileName) { String output = ""; File file = new File(fileName); if(
Time of Update: 2017-01-19
Java方法中的可變參數類型是一個非常重要的概念,有著非常廣泛的應用。本文就以執行個體形式對此加以分析。具體如下:一般來說,許多Java初學者在看到下面的這段代碼的時候,都會問一個問題:dealArray方法裡那三個小點點是什麼啊?public class TestVarArgus { public static void dealArray(int... intArray){ } public static void main(String args[]){
Time of Update: 2017-01-19
本文執行個體講述了Java中BigDecimal類的簡單用法,是Java程式設計中非常實用的技巧,分享給大家供大家參考。具體用法分析如下:一般來說,一提到Java裡面的商業計算,我們都知道不能用float和double,因為他們無法進行精確計算。但是Java的設計者給編程人員提供了一個很有用的類BigDecimal,他可以完善float和double類無法進行精確計算的缺憾。BigDecimal類位於java.maths類包下。首先我們來看下如何構造一個BigDecimal對象。它的建構函式很多
Time of Update: 2017-01-19
本文執行個體講述了Java的單例模式,是Java程式設計中非常重要的概念。分享給大家供大家參考。具體分析如下:所謂單子模式就是在整個應用過程中只向外界提供唯一的一份執行個體,也就是說在應用時只有一個執行個體,這樣也就不用反反覆複的建立執行個體了。那麼根據他的要求,看下面一個最簡單的單例模式的代碼:public class Singleton { private static Singleton single = new Singleton(); private Singleton(){
Time of Update: 2017-01-19
本文以執行個體形式詳細講述了Java的反射機制,是Java程式設計中重要的技巧。分享給大家供大家參考。具體分析如下:首先,Reflection是Java 程式開發語言的特徵之一,它允許運行中的 Java 程式對自身進行檢查,或者說"自審",並能直接操作程式的內部屬性。例如,使用它能獲得 Java 類中各成員的名稱並顯示出來。 Java 的這一能力在實際應用中也許用得不是很多,但是在其它的程式設計語言中根本就不存在這一特性。例如,Pascal、C 或者 C++
Time of Update: 2017-01-19
一,建立檔案和目錄的關鍵技術點如下: 1、File類的createNewFile根據抽象路徑建立一個新的空檔案,當抽象路徑制定的檔案存在時,建立失敗 2、File類的mkdir方法根據抽象路徑建立目錄 3、File類的mkdirs方法根據抽象路徑建立目錄,包括建立不存在的父目錄
Time of Update: 2017-01-19
Java平台的垃圾收集機制顯著提高了開發人員的效率,但是一個實現糟糕的垃圾收集器可能過多地消耗應用程式的資源。在Java虛擬機器效能最佳化系列的第三部分,Eva Andreasson向Java初學者介紹了Java平台的記憶體模型和垃圾收集機制。她解釋了為什麼片段化(而不是垃圾收集)是Java應用程式效能的主要問題所在,以及為什麼分代垃圾收集和壓縮是目前處理Java應用程式片段化的主要辦法(但不是最有新意的)。垃圾收集(GC)的目的是釋放那些不再被任何使用中的物件引用的Java對象所佔用的記憶體,
Time of Update: 2017-01-19
本文將是JVM 效能最佳化系列的第二篇文章(第一篇:傳送門),Java 編譯器將是本文討論的核心內容。本文中,作者(Eva
Time of Update: 2017-01-19
鎖作為並發共用資料,保證一致性的工具,在JAVA平台有多種實現(如 synchronized 和 ReentrantLock等等 ) 。這些已經寫好提供的鎖為我們開發提供了便利,但是鎖的具體性質以及類型卻很少被提及。本系列文章將分析JAVA下常見的鎖名稱以及特性,為大家答疑解惑。1、自旋鎖自旋鎖是採用讓當前線程不停地的在迴圈體內執行實現的,當迴圈的條件被其他線程改變時 才能進入臨界區。如下複製代碼 代碼如下:public class SpinLock { private
Time of Update: 2017-01-19
當我們想要在Java中使用TCP/IP通過網路連接到伺服器時,就需要建立java.net.Socket對象並串連到伺服器。假如希望使用Java NIO,也可以建立Java NIO中的SocketChannel對象。建立Socket下面的範例程式碼是串連到IP地址為78.64.84.171伺服器上的80連接埠,這台伺服器就是我們的Web伺服器(www.jb51.net),而80連接埠就是Web服務連接埠。複製代碼 代碼如下:Socket socket = new Socket("78.46.84.
Time of Update: 2017-01-19
裝飾者模式可以給已經存在的對象動態添加能力。下面,我將會用一個簡單的例子來示範一下如何在程式當中使用裝飾者模式。1.裝飾者模式讓我們來假設一下,你正在尋找一個女朋友。有很多來自不同國家的女孩,比如:美國,中國,日本,法國等等,他們每個人都有不一樣的個性和興趣愛好,如果需要在程式當中類比這麼一種情況的話,假設每一個女孩就是一個Java類的話,那麼就會有成千上萬的類,這樣子就會造成類的膨脹,而且這樣的設計的可擴充性會比較差。因為如果我們需要一個新的女孩,就需要建立一個新的Java類,這實際上也違背了
Time of Update: 2017-01-19
Java針對多線程下的數值安全計數器設計了一些類,這些類叫做原子類,其中一部分如下:java.util.concurrent.atomic.AtomicBoolean;java.util.concurrent.atomic.AtomicInteger;java.util.concurrent.atomic.AtomicLong;java.util.concurrent.atomic.AtomicReference;下面是一個對比 AtomicInteger 與 普通 int
Time of Update: 2017-01-19
Retention註解Retention(保留)註解說明,這種類型的註解會被保留到那個階段. 有三個值:1.RetentionPolicy.SOURCE —— 這種類型的Annotations只在原始碼層級保留,編譯時間就會被忽略2.RetentionPolicy.CLASS —— 這種類型的Annotations編譯時間被保留,在class檔案中存在,但JVM將會忽略3.RetentionPolicy.RUNTIME ——
Time of Update: 2017-01-19
簡單Java註解JDK5提供的簡單註解類型只有3個. 這三個都是用來預防錯誤或者進行提醒的,分別是:1.Override2.Deprecated3.Suppresswarnings需要注意,JDK5(另一個說法,Tiger)實際上並沒有許多內建註解;相反,它允許核心Java支援註解特性的能力. JSR-175中嚴格規定它用來定義中繼資料功能. 需要由程式員編寫自訂的註解類型,其他JSR標準也編寫了一系列標準註解類型. 下面將用執行個體來深入講解這三個簡單註解.Override
Time of Update: 2017-01-19
Java註解介紹基於註解(Annotation-based)的Java開發無疑是最新的開發趨勢.[譯者注: 這是05年的文章,在2014年,毫無疑問,多人合作的開發,使用註解變成很好的合作方式,相互之間的影響和耦合可以很低].基於註解的開發將Java開發人員從繁瑣笨重的設定檔中解脫出來. Java 5.0中首次引入了註解,註解是這個JDK版本的特性之一,將程式員書寫Java樣本API檔案的工作轉交給了編譯器. 當不再維護分開的原始碼和API文檔後,代碼和文檔會更容易維護.
Time of Update: 2017-01-19
預設的,Frame或者JFrame自身已經實現了滑鼠拖拽標題列移動視窗的功能。 只是,當你不滿意java的JFrame樣式,隱藏了標題列和邊框,又或者乾脆直接使用JWindow,那你又該怎麼實現滑鼠拖拽移動視窗的目的呢?最開始,我簡單的在mouseDragged方法裡frame.setLocation(e.getX(), e.getY()),結果,frame拖拽的時候不停地閃爍,位置在螢幕上不斷跳動。後來網上查資料,找到了答案。 這裡給一個簡單的樣本,一看就明白: