<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                開源IMDG通常都提供了SPI或其他接口,供用戶自行擴展。以Hazelcast為例,我們可以用一些好玩的小工具增強其查詢、Map和后端持久化的功能。這些小工具雖然看起來很小,但功能也非常強大。 ![](https://box.kancloud.cn/2016-08-31_57c6b13e32b00.jpg) ### SQL查詢 JoSQL非常簡單易用,只需幾步就可以在普通Java對象上實現SQL查詢功能,而且對標準SQL支持的還很全面呢。同時也提供了接口,我們可以自定義想要的SQL函數。 ![](https://box.kancloud.cn/2016-08-31_57c6b13e45e3f.jpg) 它與Hazelcast的集成方法非常簡單,就是新建一個Predicate子類。查詢時使用我們新建的這個類,Hazelcast執行時會將我們新定義的apply發送到各個結點上執行,將符合條件的數據返回并匯總,最后返回給我們。利用JoSQL對Hazelcast查詢的where過濾條件增強比較容易,但是想利用JoSQL的groupby、join和各種匯總函數對Hazelcast進行增強的話改動比較大,因為Hazelcast的設計就是進行簡單的過濾查詢,返回值都是對象。要擴展的話可能要利用Hazelcast的MapReduce和Aggregator接口。 ![](https://box.kancloud.cn/2016-08-31_57c6b13e5aa4a.jpg) ### 堆外存儲 JDK中提供了直接申請堆外內存的方法,就是ByteBuffer.allocateDirect(),其底層調用的是Sun私有的Unsafe.allocateMemory()。因為像Hazelcast這些開源IMDG都把堆外存儲緩存數據作為商業版的主打功能之一,所以我們需要自行擴展。但是自己管理堆外內存很麻煩,涉及到空閑內存分配、回收、內存碎片等等管理問題,所以我們還是希望直接使用第三方的產品。在這一領域,目前已經有一些開源產品了: ???MapDB:嵌入式數據庫,提供文件和堆外存儲,以及ACID支持。 ???DirectMemory:Apache旗下的開源項目,目前還是0.3版本。 ???其他:HugeCollections、Fast-serialization等。 以MapDB為例,看一下它的使用方法。具體與Hazelcast的集成方法稍稍麻煩一些,需要實現三個Hazelcast的類,可以參考GitHub上的項目:Hugecast和mapdb-hz-offheap。 ![](https://box.kancloud.cn/2016-08-31_57c6b13e6fe2f.jpg) ### 后端持久化 使用IMDG時,我們通常還要為每個對象的緩存提供數據加載和持久化類,從而實現緩存的初始化加載和read/write-through功能。可以簡單地使用JDBC+DozerMap實現數據的加載保存和實體對象裝配,或者利用Hibernate簡化這個過程。每種IMDG都提供了對應的擴展接口,例如Hazelcast的擴展點是MapLoader或MapStore,具體實現方式很簡單就不列舉了。
                  <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>

                              哎呀哎呀视频在线观看