<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### BitMap Bit-map就是用一個bit位來標記某個元素對應的Value, 而Key即是該元素。由于采用了Bit為單位來存儲數據,因此在存儲空間方面,可以大大節省 ### 算法 我們通過一個具體的例子來說明 BitMap 的原理,假設我們要對 0-31 內的 3 個元素 (10, 17,28) 排序,那么我們就可以采用 BitMap 方法(假設這些元素沒有重復) 如下圖,要表示 32 個數,我們就只需要 32 個 bit(4Bytes),首先我們開辟 4Byte 的空間,將這些空間的所有 bit 位都置為 0 ![](https://img.kancloud.cn/ad/91/ad91d491b0b2748ef38ae919c8b1b7fa_986x101.png) 然后,我們要添加(10, 17,28) 這三個數到 BitMap 中,需要的操作就是在相應的位置上將0置為1即可。如下圖,比如現在要插入 10 這個元素,只需要將藍色的那一位變為1即可 ![](https://img.kancloud.cn/13/03/1303510391d0db8fa88364697702050b_986x202.png) 將這些數據插入后,假設我們想對數據進行排序或者檢索數據是否存在,就可以依次遍歷這個數據結構,碰到位為 1 的情況,就當這個數據存在 ``` public static void sort(String[] args) { int[] bitmap = new int[1000]; int[] nums = {398, 2, 30, 4, 88, 500, 999, 233, 399}; for(int i = 0; i < nums.length;i ++){ bitmap[nums[i]] = 1; } int index = 0; int[] result = new int[nums.length]; for(int i = 0; i < bitmap.length;i ++){ if(1 == bitmap[i]){ result[index] = i; index++; } } System.err.println(Arrays.toString(result)); } ``` #### redis用setbit(bitmap)統計活躍用戶 Redis支持對String類型的value進行基于二進制位的置位操作。通過將一個用戶的id對應value上的一位,通過對活躍用戶對應的位進行置位,就能夠用一個value記錄所有活躍用戶的信息。如下圖所未,下圖中的bitmap有9個位被置為1,表示這9個位上對應的用戶是今天的活躍用戶。其中第15位表示uid為15的用戶,第一位表示uid為0的用戶。(如果你的uid不是從1開始的,比如從100000開始,實際上你也可以相應的用uid減去初始值來表示其位數,比如1000000用戶對應到bitmap的第一位) ![](//upload-images.jianshu.io/upload_images/19080939-37652b4eb7b20469.png?imageMogr2/auto-orient/strip|imageView2/2/w/320/format/webp) 具體的代碼類似下面這樣: redis.setbit(play:yyyy-mm-dd, user\_id, 1) 這樣一次記錄的復雜度是O(1),在Redis中速度非常快
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看