学习dubbo框架的问题
- InputStream : 是所有字節輸入流的超類,一般使用它的子類:FileInputStream等,它能輸出字節流;
- InputStreamReader : 是字節流與字符流之間的橋梁,能將字節流輸出為字符流,并且能為字節流指定字符集,可輸出一個個的字符;
Properties的load方法其實就是傳進去一個輸入流,字節流或者字符
流,字節流利用InputStreamReader轉化為字符流,然后字符流用
BufferedReader包裝,BufferedReader讀取properties配置文件,每
次讀取一行,分割成兩個字符串。因為Properties是Map的子類,
然后用put將兩個字符串裝進Properties對象。
?
Class<T>在實例化的時候,T要替換成具體類
Class<?>它是個通配泛型,?可以代表任何類型
?
method invoke 方法
java.lang.reflect.Method public Object invoke(Object obj, Object... args) 參數: obj:從中調用底層方法的對象,必須是實例化對象 args: 用于方法調用,是一個object的數組,因為參數有可能有多個 返回: 使用參數args在obj上指派該對象所表示的方法的結果。 invoke方法中的obj就是一個實例化對象,可以直接返回對象的中每個屬性的值。 加上后面的agrs結果是一樣的。 就是調用類中的方法,最簡單的用法是可以把方法參數化invoke(class, method)
比如你Test類里有一系列名字相似的方法setValue1、setValue2等等
可以把方法名存進數組v[],然后循環里invoke(test,v[i]),就順序調用了全部setValue
?
synchronized詳解 ?
Java語言的關鍵字,當它用來修飾一個方法或者一個代碼塊的時候,能夠保證在同一時刻最多只有一個線程執行該段代碼。
?
???? 一、當兩個并發線程訪問同一個對象object中的這個synchronized(this)同步代碼塊時,一個時間內只能有一個線程得到執行。另一個線程必須等待當前線程執行完這個代碼塊以后才能執行該代碼塊。
?
???? 二、然而,當一個線程訪問object的一個synchronized(this)同步代碼塊時,另一個線程仍然可以訪問該object中的非synchronized(this)同步代碼塊。
?
???? 三、尤其關鍵的是,當一個線程訪問object的一個synchronized(this)同步代碼塊時,其他線程對object中所有其它synchronized(this)同步代碼塊的訪問將被阻塞。
?
???? 四、第三個例子同樣適用其它同步代碼塊。也就是說,當一個線程訪問object的一個synchronized(this)同步代碼塊時,它就獲得了這個object的對象鎖。結果,其它線程對該object對象所有同步代碼部分的訪問都被暫時阻塞。
?
???? 五、以上規則對其它對象鎖同樣適用.
?
HashMap和Hashtable的區別
HashMap和Hashtable都實現了Map接口,但決定用哪一個之前先要弄清楚它們之間的分別。主要的區別有:線程安全性,同步(synchronization),以及速度。
- HashMap幾乎可以等價于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受為null的鍵值(key)和值(value),而Hashtable則不行)。
- HashMap是非synchronized,而Hashtable是synchronized,這意味著Hashtable是線程安全的,多個線程可以共享一個Hashtable;而如果沒有正確的同步的話,多個線程是不能共享HashMap的。Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的擴展性更好。
- 另一個區別是HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。所以當有其它線程改變了HashMap的結構(增加或者移除元素),將會拋出ConcurrentModificationException,但迭代器本身的remove()方法移除元素則不會拋出ConcurrentModificationException異常。但這并不是一個一定發生的行為,要看JVM。這條同樣也是Enumeration和Iterator的區別。
- 由于Hashtable是線程安全的也是synchronized,所以在單線程環境下它比HashMap要慢。如果你不需要同步,只需要單一線程,那么使用HashMap性能要好過Hashtable。
- HashMap不能保證隨著時間的推移Map中的元素次序是不變的。
?
?
[java] view plaincopy print?- package?com.xiaozhi.helloio;??
- ??
- import?java.io.FileInputStream;??
- import?java.io.IOException;??
- import?java.util.Properties;??
- ??
- public?class?Test7?{??
- ??
- ????public?static?void?main(String[]?args)?throws?IOException?{??
- ????????Properties?properties=new?Properties();??
- ????????properties.load(new?FileInputStream("c:\\xiaozhi.properties"));??
- ????????System.out.println(properties.getProperty("lisi"));??
- ????????System.out.println(properties.getProperty("zhangsan"));??
- ????}??
- }?
?
?
?
轉載于:https://www.cnblogs.com/zlj1992/p/7234662.html
總結
以上是生活随笔為你收集整理的学习dubbo框架的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 注册一个商贸公司多少钱
- 下一篇: ck手表换电池花了70,我感觉被坑了。这