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();
 }

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

2017年4月30日 星期日

Java :多載(overloading)與覆寫(overriding)

多載(overloading):
多載的定義是:在同一個類別內,另外定義一個方法名稱相同、但是參數數目和資料型態不同的方法。多載的技巧除了用在方法上之外,建構子也可以使用。

方法的多載:

class Car{
	public void setCar(String s){
		System.out.printf("車號:%s",s);
	}
	public void setCar(int d){
		System.out.printf("油量:%d",d);
	}
	public void setCar(String i,int g){
		System.out.printf("車名:%s 價錢:%d",i,g);
	}
}

public class Sample {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Car c1 = new Car();
		c1.setCar("BMW",2000000);
	}

}
//執行結果: 車名:BMW 價錢:2000000

建構子的多載:
介紹建構子的多載之前必須先了解何謂建構子,建構子和方法有點類似,但是建構子是用在當我們透過某個既有的類別建立物件時,會順便自動呼叫並執行建構式的內容。

多載也可以用在建構子上,根據上述的定義,建構子的多載就是可以同時建立多個建構式,但是參數數目和資料型態一定要不同。


class Car{
	private String name;
	private int gas,dollar;

        public Car(String name,int gas){
		
	}
	
	public Car(String name,int gas,int dollar){
		this.name = name;
		this.gas = gas;
		this.dollar = dollar;
	}
	
	public void show(){
		System.out.printf("車名:%s,油量:%d,價錢:%d",name,gas,dollar);
	}
}

public class Sample {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Car c1 = new Car("BMW",2000,1800000);
		c1.show();
	}

}
//執行結果: 車名:BMW,油量:2000,價錢:1800000

覆寫(overriding):
其定義是: 在子類別當中定義另一方法名稱、參數數量和資料型態都完全相同的方法。


class Car{
	
	public void show(){
		System.out.printf("show Car");
	}
}

class RacingCar extends Car{
	public void show(){
		System.out.println("show RacingCar");
	}
}

public class Sample {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		RacingCar c1 = new RacingCar();
		c1.show();
	}

}
//執行結果: show RacingCar