JAVA之編寫簡單快取類
一、問題
這幾天寫webservice提供介面時
問題:當前臺通過條件呼叫介面查詢資料時,查詢的資料量太大。
為了減小前臺的壓力,又要減少後臺對資料庫的多次訪問(個人理解),可以使用快取類來解決該問題。
二、主要的設計邏輯如下圖:
三、具體流程:
將原來單純的通過引數傳入返回所有資料的邏輯方法改為(兩個方法+快取類)的方式
(1) 快取類:以Map形式儲存,key(此處稱為OutKey)為對應的時間字串,value也是一個map
(該map的key稱為inKey,將inKey設計為是對應的頁碼),
照指定的條數分段,將來使用者獲取時,可傳入Outerkey和inKey,首先找到指定條件
查詢出來的記錄,再根據頁碼inkey找到對應的第幾頁的資料,然後給使用者返回。
存入的細節具體如下圖:
(2)方法一:根據條件獲取查詢記錄總條數和快取類對應資料的key值(該key為存入快取Map時
的時間字串)
(3)方法二:根據key和頁碼(頁碼與內map裡的key對應),這樣即可找到某個條件查詢資料下的第幾頁數 據。
四、快取Map的定時清除
如果不同的條件多次訪問伺服器,每次都將資料存入快取Map,這樣快取Map就會越來越大,這樣就需要定
時刪除功能,定時刪除必須知道開始時間,前邊存入快取Map時的key即為對應開始時間,這樣就簡單多了
具體如下:
五、犯的小問題
(1)將如下方法的時間寫成了獲取當前時間值,哈哈,這樣導致該TimerTask方法執行時是在兩千年後.。。。。。。
(2)注意快取Map是隨伺服器關閉而內容消失的,而我,非要在調取第一個方法的時候,拿到key,然後關閉main 方法,再掉第二個方法,一直沒有拿到值,而且還自我肯定了半天是TimerTask寫錯了。。
相關推薦
JAVA之編寫簡單快取類
一、問題 這幾天寫webservice提供介面時 問題:當前臺通過條件呼叫介面查詢資料時,查詢的資料量太大。 為
從零開始學Java之 編寫簡單的工程
筆者本人從最初開始接觸C語言、C++、VC++、彙編到後來接觸PHP以及Java,在這些語言的使用過程中深刻感受到這些語言都是相同的編寫思路,程式碼編寫的方式也是大同小異,目前認為Java語言的亮點是package以及反射機制。 package不僅提供
java之基本數據類型
長整型 浮點型 java組合 float 必須 計算 line style 浮點數 11,java裏面有沒有long double類型或者比double更精度的? =========== 11,java裏面有沒有long double類型或者比double更精度
Hadoop基礎-MapReduce入門篇之編寫簡單的Wordcount測試程式碼
Hadoop基礎-MapReduce入門篇之編寫簡單的Wordcount測試程式碼 作者:尹正傑 版權宣告:原創作品,謝絕轉載!否則將追究法律責任。
Java之路:抽象類
抽象類 在Java中可以建立一種類專門用來做父類,這種類稱為“抽象類”。抽象類實際上也是一個類,只是與之前的普通類相比,內部新增了抽象方法。 1、抽象方法 抽象方法是隻宣告而未實現的方法。 例: void f(); // 只有宣告,沒有實現。 2、抽象類的定義與使
Java之路:抽象類與介面對比
先上圖: 下面詳細說下: 1、相同點 (1)都是抽象型別; (2)都可以有實現方法;抽象類中可以實現普通方法,介面中可以實現預設方法(Java 8)。 (3) 都可以不需要實現類或者繼承者去實現所有方法。(以前不行,現在介面中預設方法不需
java之MessageDigest簡單使用總結
MessageDigest是Java自帶的類, 可以通過該類進行 比如 sha1. md5等 摘要演算法 public class MD5AndSHA { public final static String MD5_SHA(String s, Stri
Java之eclipse將工具類打成Jar包、使用jar包、以及刪除jar包
Eclipse如何匯出jar包??? 選中對應的工具類,右鍵==>Export... ==>選中Java目錄下的JAR File==>Next==>選擇匯出路徑==>Fi
Java之路:System類對I/O的支援
為了支援標準輸入輸出裝置,Java定義了3個特殊的流物件常量: 錯誤輸出:public static final PrintStream err; 系統輸出:public static final PrintStream out; 系統輸入:public static final Inp
Java之路:RandomAccessFile類
Java提供了專門處理檔案的類,即RandomAccessFile(隨機訪問檔案)類。該類是Java語言中功能最為豐富的檔案訪問類。 RandomAccessFile類支援“隨機訪問”方式,“隨機”是指可以跳轉到檔案的任意位置處讀寫資料。 在訪問一個檔案的時候,不必把檔
JAVA之BDB資料庫工具類抽象實現
import java.io.File; import com.sleepycat.je.Database; import com.sleepycat.je.DatabaseConfig; import com.sleepycat.je.DatabaseEntry; import com.s
用Java Swing編寫簡單的測試小工具介面(原始碼)
Author:Pirate Leo 前段時間我負責在系統中添加了HBase用於管理海量資料,功能實現後自然到了效能測試階段,效能、可靠性、穩定性,性性都不能少。 因此就有了個內部的小需求:“給測試部提供一個工具,可以向HBase寫入資料,以達到測試所需的資料量”。
java applet 編寫簡單示例
java applet簡介: Applet可以翻譯為小應用程式,Java Applet就是用Java語言編寫的這樣的一些小應用程式,它們可以直接嵌入到網頁中,並能夠產生特殊的效果。包含Applet的網頁被稱為Java-powered頁,可以稱其為Java支援的網頁。
Java之Integer內部快取
在Java中,每次建立物件都要進行記憶體分配操作,為了減少頻繁地建立物件,許多地方採用池來存放物件,如String中的字串池,對於基本型別,對應的包裝類中皆有快取來避免頻繁建立物件,如Integer。 Integer中的靜態內部類IntegerCache原始碼
Java語言編寫簡單的QQ登入介面
import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.Label; import javax.swing.JButton; import javax.swing.JFrame; i
用Java語言編寫簡單聊天程式
<span style="font-size:18px;"></span><pre name="code" class="java"><span style=
Java之Date簡單測試
public class Demo01 { @Test public void test() { Date now=new Date(); System.err.println(now); System.out.print(""); int date=no
Java之請求傳送工具類(HttpClientUtils,爬蟲)-yellowcong
Java傳送請求,之前做過一段時間的爬蟲,所以寫了這個請求傳送的工具,這個工具偽裝成百度,然後去爬取推酷的資料,當時是由於推酷有ip訪問限制,你如果是爬蟲,就不讓訪問了,所以我偽裝成了百度,然後就可以隨便爬取推庫的資料了,當時爬了1GB多的文字資料,然後圖
Java之陣列查詢Arrays類的binarySearch()方法詳解
Arrays類的binarySearch()方法,可以使用二分搜尋法來搜尋指定的陣列,以獲得指定物件。該方法返回要搜尋元素的索引值。binarySearch()方法提供多種過載形式,用於滿足各種型別陣
Java之反射四大核心類Class/Constructor/Method/Field
首先什麼是反射?反射指的是物件的反向操作,先通過以下程式碼看看什麼是正向操作。package www.bit.java.reflect; import java.util.Date; public class Test { public static void main(S