顯示具有 「JAVA 學習專區」 標籤的文章。 顯示所有文章
顯示具有 「JAVA 學習專區」 標籤的文章。 顯示所有文章

2013-08-14

排序演算法 Sorting algorithm

排序演算法 Sorting algorithm


泡沫排序法(Bubble Sort)

原理:逐次比較兩個相鄰的資料,按照排序的條件交換位置,直到全部資料依序排好為止。

泡沫排序法的特性 :
1、循環次數=資料個數-1
2、在每一次排列循環之後,到少有一個資料可以排列到正確位置;再進行下一個循環的排列時,便可以減少此資料的比較。


程式碼:

For i = 5 To 1 Step -1'將一個資料排到位置
If aData(i) < aData(i - 1) Then
tmp = aData(i - 1)
aData(i - 1) = aData(i)
aData(i) = tmp
End If


選擇排序法(Selection Sort)

原理:第一遍由資料中選取最小的資料和第一個資料對調、第二遍由資料中選取第二小的資料和第二個資料對調(因最小的資料已排到第一個位置)、依此循環直到最後一個資料,即完成資料的排序。



插入排序(Insertion Sort)

 原理:先由最初的二個數排列好,找出第三個數(下一個尚未排列的數)來依序和已完成排列的數比較後,決定插入的位置,放入資料後將其後的資料向後移。重覆上述步驟直到最後一個資料,即完成資料的排序。




2013-07-22

研究人員揭露 Java 7 新漏洞,10年前的手法就可攻陷

研究人員揭露 Java 7 新漏洞,10年前的手法就可攻陷


Gowdiak並批評,如果甲骨文的Java SE有採用任何的軟體安全保證程序,就應該在Java SE 7發表前便解決Reflection API的缺陷,也應能杜絕10年前的攻擊手法,從該漏洞可合理懷疑要不是甲骨文的安全政策與程序不值一提,就是執行層面有問題。


波蘭資安業者Security Explorations周四(7/18)透過Full Disclosure揭露了Java SE 7中的安全漏洞,宣稱這雖然是個新發現的漏洞,但以10年前的技術就能攻陷。


Security Explorations執行長Adam Gowdiak表示,該漏洞允許駭客利用10年前便廣為人知的手法來攻擊Java虛擬機器,此類的威脅應該是在添增新功能至核心的虛擬機器時便應在第一時間防止的,更令人訝異的是在Java SE 7中的Reflection API並未採取應有的保護機制來防堵該攻擊。

Reflection API為一在包含Java等高階虛擬機器語言中非常普遍的技術,可用來檢查與修改物件在運行時的架構及行為。


Security Explorations已經打造出該漏洞的概念性攻擊程式,並證實可執行於Java SE 7 Update 25及之前的版本,將可入侵Java虛擬機器的基本功能。

Gowdiak並批評,如果甲骨文的Java SE有採用任何的軟體安全保證程序,就應該在Java SE 7發表前便解決Reflection API的缺陷,也應能杜絕10年前的攻擊手法,從該漏洞可合理懷疑要不是甲骨文的安全政策與程序不值一提,就是執行層面有問題。

從去年底開始,資安研究人員便不斷披露Java的安全漏洞,Facebook、蘋果及微軟都成為Java漏洞的受害者,還有不少業者建議使用者暫時關閉瀏覽器中的Java功能以避免受到影響,雖然甲骨文今年以來已多次釋出Java更新,然而Java的安全問題似乎仍未解決。

轉載自《iThome

2013-07-19

Java 教程《語法說明》註解

Java 教程《語法說明》註解


■ 註解
/* This is a comment. */
// This is also a comment.
/** 文件式註解 */

[說明]
1. 在 /* */ 或 /** */ 內的文字或 // 後的文字都會被 Java compiler 忽略
2. 建議的註解內容:
 A) 每一程式的頂端的註解:
   1> 程式名稱
   2> 設計者名稱
   3> 最後版本的日期
   4> 該程式的描述
 B) 在 method 開頭前的註解:
   1> 類別名稱和method名稱
   2> 該method 的作用目的
   3> 任何有關該method須注意之處,例如錯誤狀況處理或該method可處理或無法處理的特別之處
 C) variable 代表的意義
3. 文件式註解
 A) javadoc.exe 可解析程式碼內的註解文件。
 B) Javadoc.exe 的使用有兩種主要型式:內嵌式HTML,或是文件標籤(doc tag,以@ 符號為首的命令,這個符號必須置於
   註解的最前面,也就是扣掉最前面的* 之後的最前面處)。
 C) 文件式註解內容有三種型式,註解位置需分別出現於 class、variable 和 method 之前。

註解標籤 與 類別相關的標籤
  @version 版本編號(須使用 -version 選項)
  @author  作者姓名(須使用 -author 選項)
‧ 與方法相關的標籤
 @ param、 @return、 @throws、 @exception

‧ 一般標籤
  @see 表示有所關聯的類別或方法;也可以使用標記(label)或超鏈結,或是產生內嵌的文字鏈結(鏈結不會出現在 See Also 標題下方)
   A) 參照其它類別
     @see PackageName.ClassName
   B) 參照另一個方法
     @see ClassName#methodName
     @see PackageName.ClassName#methodName(Type idType id)
   C) 使用超鏈結 
     @see <a href="LinkURL">Link</a>
   D) 使用標記
     @see name label
   E) 產生內嵌的文字鏈結
     { @see API-Name label }

[限制]
1. 不能使用巢狀(nested)註解
2. javadoc.exe 只會針對存取層級為 public 或 protected 的 members 進行註解文件的處理,不會處理 private 層級
 的 members,除非打開 -private 選項,一併處理 private 成員,因為只有宣告為 public 和 protected 的成員,
 才能被外界存取;而針對 class 所做的註解,都會處理並輸出。

[範例]
/** class 的註解 */
public class MyClassA {
  /** variable 的註解 */
  public int instancevariableA;

  /** method 的註解 */
  public void instanceMethodB( );
}

[範例]
/** 
  * Doubles an integer 
  * 
  * @param k     The integer to double 
  * @return    An integer containing the doubled value 
  */ 

public int double( int k ) { 
  return 2*k; 


[範例]
/**
*  This is a sample comment
*  @auther : ABC
*  @version 1.0
*  @returns java.lang.String
*  @throws Exception
*/

2013-07-17

解決javac編譯時中文編碼警告的問題

解決javac編譯時中文編碼警告的問題


一.問題:
對於Java程式中的中文字於javac編譯時會出現如下的警告...
xxx.java:34: warning: unmappable character for encoding MS950
若忽略不管可能中文顯示時會出現亂碼~~~

二.方法:
只要輸入以下指令(指定編碼格式), 即可...
javac -encoding utf-8 -classpath D:\web\xxx\WEB-INF\classes;D:\web\xxx\WEB-INF\lib\struts.jar -d D:\web\xxx\WEB-INF\classes xxx.java

三.心得:
需注意的是,
若程式檔案存檔編碼格式為 ANSI 者,
可輸入 -encoding MS950,
若為 UTF-8 者,
可輸入 -encoding utf-8
以此類推~~~

四.其他:

2012-11-30

Java入門學習筆記 第一天 - 不能免俗的第一支程式 Hello World

Java入門學習筆記 第一天 - 不能免俗的第一支程式 Hello World


基礎知識

//            ← 單行註解
/*....*/     ← 整段註解


整個主程式裡的變數 ← 全域變數
在特定區域內的變數 ← 區域變數
識別字不可為關鍵字,不可為特殊符號,數字不可為首,大小寫有差


資料型態
字元      → char(ASCII)
整數      → int、byte、shart、long
小數      → double(双倍精度浮點數)、float(單倍精度浮點數)
布林      → boolean(true、false)
字串      → String 


char : 兩個 byte 的字元 ( \u0000 ~ \uFFFF )
byte : 一個 byte 的整數 ( -128 ~ 127 )
short: 兩個 byte 的整數 ( -32758 ~ 32767 )
int    : 四個 byte 的整數 ( -2147483648 ~ 2147483647 )
long : 八個 byte 的整數 ( -9223372036854775808 ~ 923372036854775807 )

'F' ← 字元
"ABCDE" ← 字串

程式裡的 等於 不等於 等於
程式裡的 等於、等於 等於 等於

※  『=』 對數學來說 就是 "等於",對program來說 則是 "指定"
     『= =』對program 來說 才是 "等於"   如下表

 
相等
指定
程式
= =
=
數學
=
 
  


a=b;           → b指定給a
a=a+1;       → a++
a=a+3;       → a+=3

螢幕輸出指令
System.out.println("雙引號內為制式文字");          ← 輸出制式文字(字串)
System.out.println(a);                                        ← a = 變數
System.out.println("制式文字"+a);                       ← 把制式文字和變數加在一起



◎精簡輸入撇步:
輸入sout再按Tab鍵      → System.out.println("");

範例:
採用制式文字加字串變數的方式,輸出Hello, World!、Hello, Alan!、Hello, FJUSA!。



解答:

public class Main {
    public static void main(String[] args) {
        String a="World!",b="Alan!",c="FJUSA!";  /*宣告A、B、C三個字串變數*/
        System.out.println("Hello, "+a);            /*將制式文字"Hello"和變數A加在一起*/
        System.out.println("Hello, "+b);            /*將制式文字"Hello"和變數B加在一起*/
        System.out.println("Hello, "+c);            /*將制式文字"Hello"和變數C加在一起*/
      }
}

輸入指令


 
import java.util.Scanner;                                /*先宣告並取得使用者的輸入字串*/
public class Main {
     public static void
main(String[] args) {
         Scanner input =new Scanner(System.in);         /*用new分配記憶體空間給input*/
         String str=input.next();                                  /*input指定給str*/
          int
i=input.nextInt();                                     /*input指定給i*/
          double
d=input.nextDouble();                        /*input指定給d*/
          System.out.println(str);                                 /*螢幕輸出str變數結果*/
          System.out.println(i);                                    /*螢幕輸出i變數結果*/
          System.out.println(d);                                   /*螢幕輸出d變數結果*/
      }
}




歷史回顧
Java入門學習筆記 第零天 - 在Windows 8環境下安裝設定JDK及NetBeans IDE


2012-11-22

Java入門學習筆記 第零天 - 在Windows 8環境下安裝設定JDK及NetBeans IDE

Java入門學習筆記 第零天 - 在Windows 8環境下安裝設定JDK及NetBeans IDE



今天開始學習Java,首先先建立學習環境:
 Java SE Development Kit(JDK) 下載:點擊
 NetBeans IDE 下載:下載


一、安裝Java SE Development Kit(JDK)
   因太簡單都按下一步即可,在此就不多做贅述。


二、設定Path
     開啟『控制台』→『系統』→『進階系統設定』



在『進階』分頁→點擊『環境變數』























點選系統變數的『Path』→『編輯』























在變數值的地方增加『C:\Program Files\Java\jdk1.7.0_07\bin』路徑











最後在『命令提示字元』輸入『javac』,如果有下述畫面即代表設定成功。
















三、安裝NetBeans IDE
       依指示安裝即可



























































































































下一篇
Java入門學習筆記 第一天 - 不能免俗的第一支程式 Hello World