<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 72, comments - 66, trackbacks - 0, articles - 0

    2009年12月23日


    sudo vim /etc/vmware/config

    在最下面添加一句話:
    xkeymap.nokeycodeMap = true

    posted @ 2010-06-09 15:39 Fingki.li 閱讀(590) | 評論 (0)編輯 收藏

    在使用Iterator處理Collection時,注意java.util.ConcurrentModificationException。
    1.如果你僅僅是對collection進行遍歷查詢,那么不必擔心什么。
    2.但如果你在遍歷過程中要對collection進行刪除,那么你就要注意了。
    For example:
    private void testDel() {  
    1.     List<String> list = new ArrayList<String>();  
    2.     for (int i = 0; i < 10; i++) {  
    3.         String str = "td" + i;  
    4.         list.add(str);  
    5.     }  
    6.   
    7.     for (Iterator it = list.iterator(); it.hasNext();) {  
    8.         String str = (String) it.next();  
    9.         if (str.equals("td5")) {  
    10.             // list.remove(str);  // 刪除方法一 
    11.             it.remove();  // 刪除方法二 
    12.         }  
    13.     }  

    上面的代碼運行沒有問題,但如果你用“方法一”替代“方法二”,則會出現java.util.ConcurrentModificationException。
    (用for-each遍歷也會出個類似問題)
    具體原因是可以看一下先看看List中的remove方法源碼:
    1. public boolean remove(Object o) {  
    2.     if (o == null) {  
    3.         for (int index = 0; index < size; index++)  
    4.             if (elementData[index] == null) {  
    5.                 fastRemove(index);  
    6.                 return true;  
    7.             }  
    8.     } else {  
    9.         for (int index = 0; index < size; index++)  
    10.             if (o.equals(elementData[index])) {  
    11.                 fastRemove(index);  
    12.                 return true;  
    13.             }  
    14.     }  
    15.     return false;  
    16. }  
    17.   
    18. private void fastRemove(int index) {  
    19.     modCount++; // 特別注意這里,這里只增加了modCount的值  
    20.     int numMoved = size - index - 1;  
    21.     if (numMoved > 0)  
    22.         System.arraycopy(elementData, index + 1, elementData, index,  
    23.                 numMoved);  
    24.     elementData[--size] = null; // Let gc do its work  

    接著看。刪除后得到下一個元素的代碼,it.next():  it為AbstractList的內部類Iterator的一個實例。
    1. public E next() {  
    2.     checkForComodification();  
    3.     try {  
    4.         E next = get(cursor);  
    5.         lastRet = cursor++;  
    6.         return next;  
    7.     } catch (IndexOutOfBoundsException e) {  
    8.         checkForComodification();  
    9.         throw new NoSuchElementException();  
    10.     }  
    11. }  
    12.   
    13. final void checkForComodification() {  //注意這個方法
    14.     if (modCount != expectedModCount)  //檢查這兩個值是否相同
    15.         throw new ConcurrentModificationException();  

    最后看Iterator的remove()方法的源代碼:
    1. public void remove() {  
    2.     if (lastRet == -1)  
    3.         throw new IllegalStateException();  
    4.     checkForComodification();  
    5.     try {  
    6.         AbstractList.this.remove(lastRet);  
    7.         if (lastRet < cursor)  
    8.             cursor--;  
    9.         lastRet = -1;  
    10.         expectedModCount = modCount; // 設置expectedModCount  
    11.     } catch (IndexOutOfBoundsException e) {  
    12.         throw new ConcurrentModificationException();  
    13.     }  
    14. }  
    15.   
    16. final void checkForComodification() {  
    17.     if (modCount != expectedModCount)  
    18.         throw new ConcurrentModificationException();  

    這下就明白了,list的remove方法只修改了modCount值,而iterator的remove能同步modCount和expectedModCount.



    posted @ 2010-03-02 12:22 Fingki.li 閱讀(5084) | 評論 (1)編輯 收藏

    Ubuntu 時區時間設置:
    執行
    tzselect(有的版本用tzconfig)
    按照提示進行選擇時區
    sudo cp /usr/share/zoneinfo/Asia/ShangHai /etc/localtime
    執行
    sudo ntpdate cn.pool.ntp.org
    cn.pool.ntp.org是位于中國的公共NTP服務器,用來同步你的時間

    時間
    sudo date

    posted @ 2010-03-02 11:51 Fingki.li 閱讀(466) | 評論 (0)編輯 收藏

    各國語言代碼列表:
    English 1033 1033
    German 1031 1031
    French 1036 1036
    Japanese 1041 1041
    Danish 1030 1030
    Spanish 3082 3082
    Italian 1040 1040
    Dutch 1043 1043
    Norwegian 2068 2068
    Portuguese 2070 2070
    Finnish 1035 1035
    Swedish 1053 1053
    Czech 1029 1029
    Hungarian 1038 1038
    Polish 1045 1045
    Romanian 1048 1048
    Croatian 1050 1050
    Slovak 1051 1051
    Slovene 1060 1060
    Greek 1032 1032
    Bulgarian 1026 1026
    Russian 1049 1049
    Turkish 1055 1055
    British English 2057 1033
    Estonian 1061 1061
    Latvian 1062 1062
    Lithuanian 1063 1063
    Brazilian 1046 1046
    Traditional Chinese 1028 1028
    Korean 1042 1042
    Simplified Chinese 2052 2052
    Arabic 1025 1025
    Thai 1054 1054

    posted @ 2009-12-23 17:33 Fingki.li 閱讀(985) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 亚洲无人区一区二区三区| kk4kk免费视频毛片| 久久精品国产69国产精品亚洲| 最近最新的免费中文字幕| 日韩视频免费在线观看| www成人免费观看网站| 亚洲精品无播放器在线播放 | 97人妻精品全国免费视频| 美女裸免费观看网站| 亚洲中文字幕无码久久2020| 97亚洲熟妇自偷自拍另类图片| 国产精品亚洲美女久久久| 免费看一级做a爰片久久| 毛片免费vip会员在线看| 亚洲免费黄色网址| 日韩精品内射视频免费观看| 亚洲一区二区三区免费| 深夜A级毛片视频免费| 色天使色婷婷在线影院亚洲| 国产人成亚洲第一网站在线播放| 亚洲AV色吊丝无码| 亚洲伊人久久大香线蕉结合| 亚洲免费福利视频| 亚洲国产精品yw在线观看| 精品亚洲成a人片在线观看少妇 | 国产免费一级高清淫曰本片| 男女啪啪免费体验区| mm1313亚洲国产精品无码试看| 亚洲日本VA午夜在线电影| 国产精品高清视亚洲一区二区| 亚洲日韩一区精品射精| 久久久国产亚洲精品| 亚洲乱亚洲乱妇24p| 亚洲国产成人无码AV在线| 亚洲综合av一区二区三区| 中文字幕乱码亚洲无线三区 | 最近免费字幕中文大全视频| 无码专区AAAAAA免费视频| 久久爰www免费人成| 人妻丰满熟妇无码区免费| 亚洲免费网站在线观看|