1. 程式人生 > >Java高階知識(學習筆記)

Java高階知識(學習筆記)

1.properties:屬性配置檔案工具

properties props = new properties();

//載入xx.properties屬性配置檔案

prop.load(Test.class.getClassLoader().getResourceAsStream("xx.properties"));

//取配置引數

String value = props.getProperty("key");

2.動態代理

根據一個或者多個介面,用jdk的proxy框架構造出一個動態代理類的物件

那麼這個動態代理物件上就具備哪些介面上的方法

只不過這些方法的具體邏輯是定義在InvocationHandler實現類的invoke()方法中

Object o = proxy.newProxyInstance(ReadData.class.getClassLoader(),new Class<?>[]{ReadData.class},new InvocationHandler(){

public Object invoke(Object proxy,Method method,Object[],args){

}

}};

o.findProductById(3);//該呼叫其實被動態代理機制攔截,執行的是invoke裡面的邏輯

3.利用動態代理封裝一個RPC框架

給客戶端一個動態代理物件,客戶就以為拿到了服務端的一個實現類的物件就愉快地調起了方法,他還以為真的在他的機器上呼叫到了這個方法,而本質上,他的呼叫行為被我們提供的動態代理物件上的invoke所攔截,在invoke中向遠端伺服器進行了通訊互動,拿到結果再返回給使用者。

4.執行緒安全問題

加一把執行緒鎖:

synchronized(標記,eg.SellRunnable.class);