2017年5月7日 星期日

電影分享:墊底辣妹(ビリギャル)

還沒看過這部電影或書籍的朋友們,推薦找一個時間來好好地來看一下這部真人真事的故事吧~
光看片名你可能以為這是一部爽片吧?  不~相信我你看完這部作品你的想法會改變~ 看完電影我馬上到博客來訂了這本書.....




這個奇蹟,也可能發生在你與孩子的身上。
孩子和部屬一樣,世界上沒有無用之人,只有無用的領導者。

Java:Http連線出現The requested URL was rejected訊息

如果在Http連線時,出現<html><head><title>Request Rejected</title></head><body>The requested URL was rejected. Please consult with your administrator.<br><br>Your support ID is: 10354558644722555446</body></html>訊息,表示你沒設定RequestProperty。



解決方法:

URL u = new URL(url);

 HttpURLConnection c = (HttpURLConnection) u.openConnection();

c.setRequestProperty("User-Agent", "Mozilla/5.0");   //要加入這行程式碼

c.connect();

Java:javax.net.ssl.SSLHandshakeException 錯誤

在Java裡可以透過建立HttpURLConnection與HttpClient物件來實作HTTP的連線方法,但是可能會出現javax.net.ssl.SSLHandshakeException 錯誤。


解決方法:

如果使用HttpURLConnection出現上述錯誤,請把網址https://裡的s拿掉,變成http://就可以了。

那如果使用HttpClient的話,要使用https的話,需要自行載入ssl key程式碼如下:


       KeyStore trustStore  = KeyStore.getInstance(KeyStore.getDefaultType()); 
        FileInputStream instream = new FileInputStream(new File("my.keystore")); 
        try { 
            trustStore.load(instream, "nopassword".toCharArray()); 
        } finally { 
            try { instream.close(); } catch (Exception ignore) {} 
        } 
        SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore); 
        Scheme sch = new Scheme("https", 443, socketFactory); 
        httpclient.getConnectionManager().getSchemeRegistry().register(sch); 

其中my.keystore就是需要載入的憑證檔案。

2017年5月3日 星期三

2017年5月1日 星期一

Java:final用法

在Java裡常看到final關鍵字,在方法、變數、類別宣告時,加入final關鍵字就會有不能變動的特性產生。


  1. 在方法加上final之後,就不能對子類別的資料進行覆寫(overriding)
  2. 在變數加上final之後,就不能對變數的值進行改變
  3. 在類別加上final之後,就不能延伸這個類別

範例:

1.在方法加上final


class Car{
	public final void show(){
		
	}
}
class RacingCar extends Car{
	public final void show(){  //無法再子類別中定義show()方法
		
	}
}

2.在變數加上final


class Car{
	
	final int num = 4;
	
	public  void show(){
		num=5;    //無法變更值
	}
}

3.在類別加上final


final class Car{
	
	
}
class RacingCar extends Car{  //無法繼承Car類別
	
}

Java : this() 與 super() 用法

在Java裡我們經常會在建構子裡看到this()和super()這兩個敘述,那麼這兩個敘述到底有什麼意思呢? 其實它們在Java當中都是用來呼叫建構子的方法,不過這兩者仍然是有差異的:

this():呼叫同一類別內的其他建構式。

super():從子類別呼叫其父類別的建構式。

要特別注意的是:這兩種敘述都必須寫在建構子內的第一行,所以同一建構子內部不能同時存在this()和super()。另外,當建構子有多載(overloading)時,this()和super()都會根據()內的引數來判斷要呼叫哪一個建構子。


範例:

this():


class Car{
 
 
 public Car(){
  System.out.println("無參數的建構子");
 }
 public Car(int n,double gas){
  this();
  System.out.println("有參數的建構子");
 }
 
}

public class Sample {

 public static void main(String[] args) {
  
  Car c1 = new Car(123,25.0);
 }

}
/*
執行結果: 
無參數的建構子
有參數的建構子
*/

super():


class Car{
 
 
 public Car(){
  System.out.println("無參數的建構子");
 }
 public Car(int n,double gas){
  this();
  System.out.println("有參數的建構子");
 }
 
}
class RacingCar extends Car{
 public RacingCar(){
  super();
 }
}

public class Sample {

 public static void main(String[] args) {
  
  RacingCar c1 = new RacingCar();
 }

}
//執行結果: 無參數的建構子