顯示具有 JAVA 標籤的文章。 顯示所有文章
顯示具有 JAVA 標籤的文章。 顯示所有文章

2015年5月12日 星期二

關於 Java 反編譯

command  line :
  • javap -private {class name}

example :   javap -private Learn_2_1.class



使用Intellij IDEA 14 ,開發scala (未使用sbt),IDE會將scala轉成 .class檔,會放置out資料夾中,此時就可使用  javap -private {class name} 來查看scala 如何將 scala轉成 java程式碼。



另外在反編譯上有個好用的JAD(Java Decompiler)  一個小咖啡杯,只要將要反編譯的拖拉過去就可以看到結果啦。


JAD:
  • wiki  :   http://en.wikipedia.org/wiki/JAD_(JAva_Decompiler)
  • tools  :   http://jd.benow.ca/
  • tools  :   http://www.brouhaha.com/~eric/software/mocha/


2013年6月30日 星期日

Jsoup Java 網路爬蟲套件

使用Jsoup 來分析HTML頁面

使用範例:

import java.net.URL;
import java.util.Iterator;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupCrawlerUT {

public static void main(String[] args)  throws Exception{

//URL 以yahoo股票為測試
        URL url = new URL("http://tw.stock.yahoo.com/q/q?s=2002");
        
        /*
         * 向網頁伺服發出請求,並將回應分析成document。
         * 第一個參數是:請求位置與QueryString。
         * 第二個參數是:連線時間(毫秒),在指定時間內若無回應則會丟出IOException
         */       
        Document doc = Jsoup.parse(url, 3000);
        
        //取回所center下所有的table
        Elements tables = doc.select("center>table");
        
        Iterator iterator;
        
        //print all table 
        /*
        for(Element table : tables)
        {
            //get td Iterator
        iterator = table.select("td").iterator();           
           
            while(iterator.hasNext())
            {               
                System.out.println("data" + ": " + iterator.next().text().trim());
            }        
        } 
        */        
        System.out.println("--------------------------------------------------");        
        Element  table;
        
     //取標頭
        table = tables.get(1).select("table").get(0);        
        iterator = table.select("th").iterator();       
        while(iterator.hasNext())
        {               
            System.out.println("data" + ": " + iterator.next().text().trim());
        } 
        
        System.out.println("--------------------------------------------------");  
        
        //取內容        
        //取索引1的table
        table = tables.get(1).select("table").get(1);
        
        //get td Iterator
     iterator = table.select("td").iterator();       
        while(iterator.hasNext())
        {               
            System.out.println("data" + ": " + iterator.next().text().trim());
        }         
  }
}


輸出:

2010年6月9日 星期三

Java 編譯詳細說明與使用注意事項,package有無差很大

§Javac 與 Java 使用注意細節
今天小弟編譯時未注意package讓我莫名其妙爽爽,所以研究了一下將其寫成筆記記錄。

Setp1.建立測試資料夾結構如下

  • C:\MyProject\Classes\tw\com\test
  • C:\MyProject\source
  • 可善用命令列來建立
  • 建立資料夾指令:md [資料夾名稱]
Setp2.於source底下建立SayHello.java
C:\MyProject\source編寫如下Java Source code ,完成後存成SayHello.java檔
  • 注意此檔未使用package宣告。
  • 注意不管是使用筆記本或是NotePad++來編輯,存檔格式請用ANSI,使用UTF8反而會讓中文輸出會變成亂碼。
public class SayHello

public static void main(String[] args)
System.out.println("hello 歡迎來到小J的部落格"); 

Step3.用javac編譯.java檔成為.class檔
小技巧:輸入命令可以善用Tab鍵來代替檔名輸入,將會快速許多。
於command line中輸入:
  1. C:\>cd MyProject
  2. C:\MyProject>cd source
  3. C:\MyProject\source>javac SayHello.java
如此會在source產生一個編譯好的SayHello.class於source資料夾中。

Step4.用java執行.class檔
輸入:
  • C:\MyProject\source>java SayHello
輸出:
  • hello 歡迎來到小J的部落格
Step5.使用javac與參數-d將編譯好之檔案置放於classes
小技巧:..\其實也可以使用../代替
輸入:
  • C:\MyProject\source>javac -d ..\classes SayHello.java
  • C:\MyProject\source>cd.. \classes
  • C:\MyProject\classes>
  • C:\MyProject\classes>dir
  • 如此可以看見classes資料夾中產生了一個SayHello.class
輸入:
  • C:\MyProject\classes>java SayHello
輸出:
  • hello 歡迎來到小J的部落格
Step6.清除掉剛剛產生的.class檔

2010年6月4日 星期五

JAVA JDK 安裝與測試

§JAVA JDK 安裝與測試 For Winsows
SunJAVA官方網頁下載JDK,JDK下載頁面。

●選擇JDK下載
下載Java Platform, Standard Edition版本,點擊JAVA圖示或Download JDK進入下載選擇頁面

●選擇版本支援平台
1.選擇Windows或Windows64
2.點擊Download下載,會彈出一個登入視窗,
可以直接關掉進入下載頁面。















●點擊檔案開始下載
下載頁中,點擊jdk-6u20-windows-i586.exe下載檔案。




2010年5月11日 星期二

JAVA Encapsulation(Java 封裝) , get/set method

§JAVA封裝,get與set method
封裝觀念在物件導向中語沒有什麼不同,只是Java的get與set使用方式上與ActionScript3規則不太相同,以下將Java與AS3,的get與set使用方式整理一下。

Java Encapsulation Example:
Java中可由abstract宣告,告知編譯器這是抽象類別。
這是一個Animal(動物)類別,他是一個抽象類別(形容並代表各種動物,並非具體的形容),所以宣
告為abstract,在JAVA中宣告為abstrace的類別是不可以透由new實體化物件

//Animal 類別
//命名空間,在Win系統上package代表一個資料架,這代表Animal這個類是放在animal資料夾理。
package animal; 
abstract public class Animal
{
 //宣告一個型別String,名稱為food的私有變數。
 private String _food;
 //建構子,Java的建構子是支援overlod的,之後談到method的overload再來介紹。
 public Animal()
 {
  //建構式,java中若不編輯,會自動隱含宣告一個空args的建構式。
 }
 //Food 封裝
 public void setFood(String food)
 {
  if(_food == food)
   return;
  _food = food;
 }
 public String getFood()
 {
  return _food;
 }
}
 

2010年5月7日 星期五

JAVA PATH,環境變數設定

此篇是關於JDK安裝後PATH設定,關於JDK的安裝方法可參考Eclipse與JDK安裝篇
Windows7
Step 1.電腦圖示上點擊滑鼠右鍵打開操作選單,點擊內容(R),以進入系統。

操作選單












Step 2.系統中於左側中找到進階系統設定點擊,以進入系統內容。
系統介面









Step3.於系統內容中,確定於進階環境中,點擊右下環境變數,打開環境變數面板
以便設定Java JDK Path。