日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

学习dubbo框架的问题

發(fā)布時(shí)間:2023/11/27 生活经验 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习dubbo框架的问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • InputStream : 是所有字節(jié)輸入流的超類,一般使用它的子類:FileInputStream等,它能輸出字節(jié)流;
  • InputStreamReader : 是字節(jié)流與字符流之間的橋梁,能將字節(jié)流輸出為字符流,并且能為字節(jié)流指定字符集,可輸出一個(gè)個(gè)的字符;

Properties的load方法其實(shí)就是傳進(jìn)去一個(gè)輸入流,字節(jié)流或者字符


流,字節(jié)流利用InputStreamReader轉(zhuǎn)化為字符流,然后字符流用


BufferedReader包裝,BufferedReader讀取properties配置文件,每


次讀取一行,分割成兩個(gè)字符串。因?yàn)镻roperties是Map的子類,


然后用put將兩個(gè)字符串裝進(jìn)Properties對(duì)象。

?

Class<T>在實(shí)例化的時(shí)候,T要替換成具體類
Class<?>它是個(gè)通配泛型,?可以代表任何類型

?

method invoke 方法

java.lang.reflect.Method public Object invoke(Object obj, Object... args) 參數(shù): obj:從中調(diào)用底層方法的對(duì)象,必須是實(shí)例化對(duì)象 args: 用于方法調(diào)用,是一個(gè)object的數(shù)組,因?yàn)閰?shù)有可能有多個(gè) 返回: 使用參數(shù)args在obj上指派該對(duì)象所表示的方法的結(jié)果。 invoke方法中的obj就是一個(gè)實(shí)例化對(duì)象,可以直接返回對(duì)象的中每個(gè)屬性的值。 加上后面的agrs結(jié)果是一樣的。 就是調(diào)用類中的方法,最簡(jiǎn)單的用法是可以把方法參數(shù)化
invoke(class, method)
比如你Test類里有一系列名字相似的方法setValue1、setValue2等等
可以把方法名存進(jìn)數(shù)組v[],然后循環(huán)里invoke(test,v[i]),就順序調(diào)用了全部setValue

?

synchronized詳解


?

Java語言的關(guān)鍵字,當(dāng)它用來修飾一個(gè)方法或者一個(gè)代碼塊的時(shí)候,能夠保證在同一時(shí)刻最多只有一個(gè)線程執(zhí)行該段代碼。

?

???? 一、當(dāng)兩個(gè)并發(fā)線程訪問同一個(gè)對(duì)象object中的這個(gè)synchronized(this)同步代碼塊時(shí),一個(gè)時(shí)間內(nèi)只能有一個(gè)線程得到執(zhí)行。另一個(gè)線程必須等待當(dāng)前線程執(zhí)行完這個(gè)代碼塊以后才能執(zhí)行該代碼塊。

?

???? 二、然而,當(dāng)一個(gè)線程訪問object的一個(gè)synchronized(this)同步代碼塊時(shí),另一個(gè)線程仍然可以訪問該object中的非synchronized(this)同步代碼塊。

?

???? 三、尤其關(guān)鍵的是,當(dāng)一個(gè)線程訪問object的一個(gè)synchronized(this)同步代碼塊時(shí),其他線程對(duì)object中所有其它synchronized(this)同步代碼塊的訪問將被阻塞。

?

???? 四、第三個(gè)例子同樣適用其它同步代碼塊。也就是說,當(dāng)一個(gè)線程訪問object的一個(gè)synchronized(this)同步代碼塊時(shí),它就獲得了這個(gè)object的對(duì)象鎖。結(jié)果,其它線程對(duì)該object對(duì)象所有同步代碼部分的訪問都被暫時(shí)阻塞。

?

???? 五、以上規(guī)則對(duì)其它對(duì)象鎖同樣適用.

?

HashMap和Hashtable的區(qū)別

HashMap和Hashtable都實(shí)現(xiàn)了Map接口,但決定用哪一個(gè)之前先要弄清楚它們之間的分別。主要的區(qū)別有:線程安全性,同步(synchronization),以及速度。

  1. HashMap幾乎可以等價(jià)于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受為null的鍵值(key)和值(value),而Hashtable則不行)。
  2. HashMap是非synchronized,而Hashtable是synchronized,這意味著Hashtable是線程安全的,多個(gè)線程可以共享一個(gè)Hashtable;而如果沒有正確的同步的話,多個(gè)線程是不能共享HashMap的。Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的擴(kuò)展性更好。
  3. 另一個(gè)區(qū)別是HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。所以當(dāng)有其它線程改變了HashMap的結(jié)構(gòu)(增加或者移除元素),將會(huì)拋出ConcurrentModificationException,但迭代器本身的remove()方法移除元素則不會(huì)拋出ConcurrentModificationException異常。但這并不是一個(gè)一定發(fā)生的行為,要看JVM。這條同樣也是Enumeration和Iterator的區(qū)別。
  4. 由于Hashtable是線程安全的也是synchronized,所以在單線程環(huán)境下它比HashMap要慢。如果你不需要同步,只需要單一線程,那么使用HashMap性能要好過Hashtable。
  5. HashMap不能保證隨著時(shí)間的推移Map中的元素次序是不變的。

?


?

[java] view plaincopy print?
    1. package?com.xiaozhi.helloio;??
    2. ??
    3. import?java.io.FileInputStream;??
    4. import?java.io.IOException;??
    5. import?java.util.Properties;??
    6. ??
    7. public?class?Test7?{??
    8. ??
    9. ????public?static?void?main(String[]?args)?throws?IOException?{??
    10. ????????Properties?properties=new?Properties();??
    11. ????????properties.load(new?FileInputStream("c:\\xiaozhi.properties"));??
    12. ????????System.out.println(properties.getProperty("lisi"));??
    13. ????????System.out.println(properties.getProperty("zhangsan"));??
    14. ????}??
    15. }?

      ?

      ?

      ?

轉(zhuǎn)載于:https://www.cnblogs.com/zlj1992/p/7234662.html

總結(jié)

以上是生活随笔為你收集整理的学习dubbo框架的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。