Time of Update: 2018-12-03
一直都做Android開發,而且編譯JNI代碼都是用Google提供的NDK,今天做個J2SE平台的JNI,發現離開Android平台還多少不習慣了,編譯so庫都弄了半天,記下編譯命令,以備後用。編譯前提安裝JDK和gcc/g++環境,我用的是gcc。步驟如下:1.編譯Java原始碼javac FifoTest.java2. 產生*.H標頭檔javah FifoTest.java3.實現*.C檔案,如FifoTest.c# coding...4. 編譯*.c檔案產生
Time of Update: 2018-12-03
常見的Java設計模式有以下23種:建立型模式 1、Factory 方法(FactoryMethod): 定義一個用於建立對象的介面,讓子類決定將哪一個類執行個體化。Factory Method 使一個類的執行個體化延遲到其子類。 2、抽象原廠模式(Abstract Factory):提供一個建立一系列相關或相互依賴對象的介面,而無需指定它們具體的類。 3、建造模式(Builder): 將一個複雜物件的構建與它的表示分離,使同樣的構建過程可以建立不同的表示。
Time of Update: 2018-12-03
原廠模式一共分為三種,分別是:簡單原廠模式,Factory 方法模式和抽象原廠模式。先來說說簡單原廠模式,簡單原廠模式一般不在實際中是用,因為它的擴充性不好,例如我們添加一個新的類,而需要去更改現有的類,為了一個新需求去更改原有類的代碼,那麼就有可能引入新的bug,如果是新加一個類,而不改變原有類這就可以非常有效地降低引入新bug的風險,因此,擴充性是非常重要的。下面是一個簡單原廠模式的例子:public interface Person{ } public class
Time of Update: 2018-12-03
在並發環境下,如果同步不適當,後果是很嚴重的:會造成資料混亂和爭用情況,導致程式崩潰,產生不正確的結果,或者是不可預計的運行。另一方面,不當或過度地使用同步會導致其它問題,比如效能很差和死結。當然,效能差雖然不如資料混亂那麼嚴重,但也是一個嚴重的問題,因此同樣不可忽視。解決共用資源衝突問題時,可以考慮使用鎖機制。Java鎖Java為我們提供了synchronized 關鍵字,它包括兩種用法:synchronized 方法和 synchronized 塊。 synchronized
Time of Update: 2018-12-03
本文給出Java語言版的計算大數階乘的程式,本文使用動態數組的儲存計算過程的中間結果和最終結果。每個short型數組元素表示4位10進位數。順便說一下,這是我的第一個Java程式。import java.util.Scanner;/** * * @author liangbch@263.net */public class Fac { public Fac() { } public static void Calc(int n) {
Time of Update: 2018-12-03
FAQ001.------------------------------------------------------------------------Q:JBuilderX中的WebModule自動打包成WAR檔案,不能把*.swf、*.doc、*.css檔案打包進 去?-------------------------------------------------------------------------------A:可以手工在相應目錄下執行“ jar cvf
Time of Update: 2018-12-03
1 建立一個java project,命名為:webstart(名字可能隨便取),加入程式:package jws;import javax.swing.*;public class HelloWorld {private JFrame jFrame;private JPanel jPanel;private JLabel label;public HelloWorld() {jFrame = new JFrame("HelloWorld Test Frame");label = new
Time of Update: 2018-12-03
import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.security.InvalidKeyException; import java.security.KeyStore; import java.security.KeyStoreException; import
Time of Update: 2018-12-03
單例模式(Singleton) 1.介紹:也叫單子模式,是一種常用的軟體設計模式。在應用這個模式時,單例對象的類必須保證只有一個執行個體存在。許多時候整個系統只需要擁有一個的全域對象,這樣有利於我們協調系統整體的行為。比如在某個伺服器程式中,該伺服器的配置資訊存放在一個檔案中,這些配置資料由一個單例對象統一讀取,然後服務進程中的其他對象再通過這個單例對象擷取這些配置資訊。這種方式簡化了在複雜環境下的組態管理。
Time of Update: 2018-12-03
一直都是Windows下做Java開發,沒辦法,很多東西離不開它。把以前掌握的一點linux知道都給忘沒了。恰巧有同事下載並燒錄了一ubuntu10.04的光碟片,於是乎,把公司辦公用電腦的win7格掉,安上ubuntu,花了一點時間把Java開發環境配置好。感覺ubuntu相當好用啊。上張: 以後就用它了。 不知道Thinkpad T60
Time of Update: 2018-12-03
本人編著的《Java程式設計標準教程》已由人民郵電出版社出版發行了。封面(無法上傳圖片,只好找個連結): 購買連結: china-pub:http://www.china-pub.com/49806人郵官網:http://www.ptpress.com.cn/Book.aspx?id=18091 說明:本書是Sun公司SCJP認證考試的指定用書。全書共13章。第1章全面系統地介紹了Java語言的發展史、特性、Java開發環境的搭建、Java程式的編寫編譯和運行過程以及Java開發常用IDE工具的
Time of Update: 2018-12-03
Java 語言筆記Java SE:Java標準版,用於案頭級應用和資料庫開發;Java EE:Java企業版,用於企業級開發;Java ME:Java手持版,用於嵌入式和移動式開發。 Chapt 11) Java區分大小寫;2) Java編譯器時有副檔名,運行程式時沒有副檔名;3) 來源程式裡的類名要和檔案名稱相同。 Chapt 21) Java裡面沒有sizeof()操作符;2) Java標識符要以英文字母開頭,由英文字母和數字組成;3)
Time of Update: 2018-12-03
在linux下java程式顯示中文亂碼是個不大不小的問題。最近正使用NetBeans進行RCP應用開發,中文顯示一直是方塊,於是找到了一種簡單的方法可以修複亂碼問題。以下方法在Ubuntu 6.06LTS下測試通過,假設使用者的jre路徑為 /opt/jdk1.5.0_09/jrecd /opt/jdk1.5.0_09/jre/lib/fonts/sudo mkdir fallback將C:/WINDOWS/Fonts/simsun.ttc拷貝到
Time of Update: 2018-12-03
Factory 方法(FactoryMethod):定義一個用於建立對象的介面,讓子類決定將哪一個類執行個體化。Factory Method 使一個類的執行個體化延遲到其子類。Factory 方法模式,這個方法有效地解決了簡單原廠模式擴充性差的問題,想要進行擴充,只需要新加類就行,不需要更改原有類,下面是一個例子:public interface Person{ } public class Student implements Person{ } public class
Time of Update: 2018-12-03
java多線程一般都會講消費者-生產者模型生產者與消費者模型中,要保證以下幾點:1 同一時間內只能有一個生產者生產2 同一時間內只能有一個消費者消費3 生產者生產的同時消費者不能消費4 訊息佇列滿時生產者不能繼續生產5 訊息佇列空時消費者不能繼續消費----------------------------------------------------Message類public class Message { public static int id;public String
Time of Update: 2018-12-03
插入排序(InsertSort)插入排序通過把序列中的值插入一個已經排序好的序列中,直到該序列的結束。插入排序是對冒泡排序的改進。它比冒泡排序快2倍。一般不用在資料大於1000的場合下使用插入排序,或者重複排序超過200資料項目的序列。1、思想每次選擇一個元素K插入到之前已排好序的部分A[1…i]中,插入過程中K依次由後向前與A[1…i]中的元素進行比較。若發現發現A[x]>=K,則將K插入到A[x]的後面,插入前需要移動元素2、演算法時間複雜度最好的情況下:正序有序(從小到大),這樣只需
Time of Update: 2018-12-03
最近在網上看到一則SleepSort演算法(用Shell指令碼寫的):代碼如下:---------------------------------------------------------------------------- #!/bin/bashfunction f() { sleep "$1" echo "$1"}while [ -n "$1" ]do f "$1" & shiftdonewait----------------------------
Time of Update: 2018-12-03
快速排序(QuickSort)1、思想快速排序是一個就地排序,分而治之,大規模遞迴的演算法。從本質上來說,它是歸併排序的就地版本。快速排序可以由下面四步組成。(1) 如果不多於1個資料,直接返回。(2) 一般選擇序列最左邊的值作為支點資料。(3) 將序列分成2部分,一部分都大於支點資料,另外一部分都小於支點資料。(4) 對兩邊利用遞迴排序數列。快速排序比大部分排序演算法都要快。儘管我們可以在某些特殊的情況下寫出比快速排序快的演算法,但是就通常情況而言,沒有比它更快的了。快速排序是遞迴的,對於記憶
Time of Update: 2018-12-03
冒泡排序(BubbleSort)1、思想通過無序區中相鄰記錄關鍵字間的比較和位置的交換,使關鍵字最小的記錄如氣泡一般逐漸往上“漂浮”直至“水面”。 2、時間複雜度 最好情況下:正序有序,則只需要比較n次。故,為O(n) 最壞情況下: 逆序有序,則需要比較(n-1)+(n-2)+……+1,故,為O(N*N) 3、穩定性 排序過程中只交換相鄰兩個元素的位置。因此,當兩個數相等時,是沒必要交換兩個數的位置的。所以,它們的相對位置並沒有改變,冒泡排序演算法是穩定的! 4、實現 public
Time of Update: 2018-12-03
歸併排序(MergeSort)1、思想: 多次將兩個或兩個以上的有序表合并成一個新的有序表。 2、演算法時間複雜度 最好的情況下:一趟歸併需要n次,總共需要logN次,因此為O(N*logN) 最壞的情況下,接近於平均情況下,為O(N*logN) 說明:對長度為n的檔案,需進行logN 趟二路歸併,每趟歸併的時間為O(n),故其時間複雜度無論是在最好情況下還是在最壞情況下均是O(nlgn)。3、穩定性