天天看點

java 緩存資料字典,JAVA項目字典與緩存搭配使用方法解析

JAVA項目字典與緩存搭配使用方法解析

字典資料是什麼?

這裡說了字典不是軟體工程中說的資料字典。

字典資料:用于動态設定某對象的屬性是屬于在一個可列舉的資料範圍内的某一類型資料,使用字典類型作為該類别屬性的唯一辨別

如:使用者類型:學生,老師,家長,校長等

有什麼作用?

字典資料由兩個表組成:字典類型表 dict_type,字典類型資料表 dict_data

這個資料相當于java中的枚舉類,可以被使用于前端的資料展示,下拉框資料集使用。

沒有資料字典時業務操作方法:

定義學生枚舉類,在代碼中使用枚舉類的key進行資料儲存,在查詢資料後,轉換key對應的中文名稱label标簽傳回給前端。

缺點:如新增使用者類型,修改學生類型對應中文名稱時,需要修改代碼。

使用字典時業務操作方法。

後端業務資料存儲的是字典類型的key值,即label标簽表示學生類型對應的key值 student,

新增資料時前端通過下拉菜單擷取學生類型某一個類型key進行新增,查詢資料時根據字典資料表的使用者類型作為下拉框查詢條件選擇。

優點:當key為student的資料中文名稱發生改變時,不需要後端進行代碼修改。

如新增使用者時,設定使用者的類型,下拉框的資料可以從資料庫擷取資料,不用前端關心資料集的内容,

在業務中使用

不使用緩存的方式使用字典資料:

業務中使用方式,傳回使用者清單資料,将使用者類型的字典資料從資料庫中查詢出來,然後進行轉換。

在前端查詢資料時,前端查詢使用者類型的下拉資料集,作為條件,傳類型key值作為查詢條件查詢資料。

與緩存搭配使用字典資料。

自己控制資料緩存。靈活性高:Ehcache,Redis等記憶體緩存架構進行處理。

如果是單機項目。可以使用記憶體緩存。

緩存的使用方式有多種:

如使用Mybatis自帶的一級緩存,二級緩存。但如果使用的是不同的SqlSession進行資料查詢,這不會用到一級緩存。

單機項目最好還是使用記憶體緩存架構,如Ehcache,用Map來存儲所有字典資料。在更新字典資料後,直接整個更新緩存資料。

{

"字典類型": [

{

"key": "label"

}

]

}

如果是分布式(雖然沒實際用過):可以使用redis這種外置的非關系型資料庫存儲緩存資料。即一個類型一個key來存儲資料。如

RedisUtils.put( "dict:type_user_type" ) RedisUtils.get( "dict:type_user_type" )

以上就是本文的全部内容,希望對大家的學習有所幫助,也希望大家多多支援我們。

時間: 2020-09-24

java 緩存資料字典,JAVA項目字典與緩存搭配使用方法解析

全排列算法-遞歸與字典序的實作方法(Java) 全排列: 從n個不同元素中任取m(m≤n)個元素,按照一定的順序排列起來,叫做從n個不同元素中取出m個元素的一個排列.當m=n時所有的排列情況叫全排列. 例如: 1 .2 .3三個元素的全排列為: {1,2,3},{1,3,2},{2,1,3},{2,3,1},{3,1,2},{3,2,1}. ------------------------------------------------------ 解法1(遞歸) 如下圖:要對1.2.3.4進行

本文執行個體講述了java實作對map的字典序排序操作.分享給大家供大家參考,具體如下: java中對map的字典序排序,算法驗證比對微信官網https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=&附錄1-JS-SDK使用權限簽名算法" import java.util.ArrayList; import java.util.Collectio

字典序法就是按照字典排序的思想逐一産生所有排列. 在數學中,字典或詞典順序(也稱為詞彙順序,字典順序,字母順序或詞典順序)是基于字母順序排列的單詞按字母順序排列的方法. 這種泛化主要在于定義有序完全有序集合(通常稱為字母表)的元素的序列(通常稱為計算機科學中的單詞)的總順序. 對于數字1.2.3......n的排列,不同排列的先後關系是從左到右逐個比較對應的數字的先後來決定的.例如對于5個數字的排列 12354和12345,排列12345在前,排列12354在後.按照這樣的規定,5個數字的所有的

java 緩存資料字典,JAVA項目字典與緩存搭配使用方法解析

簡介 Trie樹,又稱為字首樹或字典樹,是一種有序樹,用于儲存關聯數組,其中的鍵通常是字元串.與二叉查找樹不同,鍵不是直接儲存在節點中,而是由節點在樹中的位置決定.一個節點的所有子孫都有相同的字首,也就是這個節點對應的字元串,而根節點對應空字元串. 它的主要特點如下: 根節點不包含字元,除根節點外的每一個節點都隻包含一個字元. 從根節點到某一節點,路徑上經過的字元連接配接起來,為該節點對應的字元串. 每個節點的所有子節點包含的字元都不相同. 如下是一棵典型的Trie樹: Trie的來源是Retrie

java 緩存資料字典,JAVA項目字典與緩存搭配使用方法解析

壓縮過程: 前面已經寫過一篇哈夫曼壓縮,LZW字典壓縮與哈夫曼壓縮的不同之處在于不需要把編碼寫入檔案,編碼表是在讀檔案中生成的,首先将0-255個ASCLL碼與對應的數字存入哈希表中,作為基礎碼表. 這裡的字尾為目前 字首+字尾 如果在碼表中存在,字首等于字首+字尾.如果不存在,将字首+字尾所表示的字元串寫入編碼表編碼,同時将字首寫入壓縮檔案中.這裡重點注意一下,一個位元組所能表示的數字範圍為0-255,是以我們将一個字元的編碼變成兩個位元組寫進去,分别寫入它的高八位和低八位,比如256即為0000

在實際應用中,大家使用的密碼可以說多種多樣,但是無論有多少,其組成不遑是有可列印字元組成的,我們可以認為 class CreateDic{ private int BitNum; private String Str; public void SetBitNum(int num) { BitNum=num; } public void SetStr(String str) { Str=str; } public int GetBitNum(){ return BitNum; } public S

一直寫過數組全排列的算法,當時接觸的是使用回溯的方法,這樣可以保證生成的全排列一定是按照字典序的,但是今天在做leetcode上的一道題時,問題是要你找到某個排列情況的下一個按照字典序排列的狀态. 如果直接一點,大可從頭開始做全排列,然後到目标狀态時,在做一次即可找到要的狀态,但是如果題目給的狀态非常靠後,則要花費很大的代價,這樣做就顯得有些笨拙了. 是以做這道題的時候一直在思考如何按照字典序生成全排列. 假設此時給出的狀态時5 2 4 3 1,那麼下一個狀态要如何确定呢?首先從人的視角來看,絕

java 緩存資料字典,JAVA項目字典與緩存搭配使用方法解析

相關閱讀: Java零基礎教程之Windows下安裝 JDK的方法圖解 官網下載下傳 你是 Windows 環境,是以,打開浏覽器,輸入位址:http://tomcat.apache.org/download-70.cgi 選擇對應的 ..-bit Windows zip下載下傳就可以了. 安裝 找到你下載下傳的 ZIP 包,解壓到你認為合适的目錄,其實這是免安裝版. 啟動 進入 bin 目錄,找到startup.bat輕按兩下,這樣就算啟動了 Tomcat 了,現在在浏覽器輸入位址+端口8080(預設)即可看

廢話不多說了,直接給大家貼代碼了,具體代碼如下所示: import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.apache.poi.hssf.

代碼實作Shape 代碼實作Selector StateListDrawable與GradientDrawable 的運用 在Android開發中,我們時常會用到自定義drawable樣式,在drawable中設定shape樣式或是selector選擇器,但是有時如果一個xml中需要用到多個drawable樣式,并且裡面設定的樣式隻是有細微的差别改變,那麼自定義多個drawable樣式會顯得比較臃腫,使得drawable的xml檔案太多,管理麻煩,是以有時本星覺得可以在代碼中建立drawable

本文執行個體講述了Java使用FilenameFilter查找出目錄下指定字尾的檔案.分享給大家供大家參考,具體如下: 在項目中需要查找指定目錄下特定字尾的檔案,在jdk官網上檢視資料時找到了FilenameFilter這個類,怎麼用也寫了,但是就是沒給個例子,對有些人實在有些不友善,這也是寫這篇文章的初衷,雖然簡單但希望能幫到需要的小夥伴們 下面直接入正題,給出demo程式: package net.csdn.johnhuster; import java.io.File; import java

求一個n階行列式,一個比較簡單的方法就是使用全排列的方法,那麼簡述以下全排列算法的遞歸實作. 首先舉一個簡單的例子說明算法的原理,既然是遞歸,首先說明一下出口條件.以[1, 2]為例 首先展示一下主要代碼(完整代碼在後面),然後簡述 //對數組array從索引為start到最後的元素進行全排列 public void perm(int[]array,int start) { if(start==array.length) { //出口條件 for(int i=0;i

Java小項目中WEB-INF下jsp頁面如何通路 一:一般為啥要把jsp頁面放在WEB-INF呐? 這樣主要是為了網站的安全的角度來說的,WEB-INF是安全目錄Tomcat 預設的通路路徑是WebRoot下的index.jsp,放在WEB-INF下的頁面一般不配置是無法通路的. 你的站點肯定有些頁面是需要經過登入驗證或其他驗證後才能通路的啊,這些頁面就放在web-inf裡. 如果是能不經過驗證就通路的頁面,比如首頁.登入頁.歡迎頁這種,就不要放在web-inf裡  二: 下面來看如何通路We

JavaScript onkeypress 事件 使用者按下或按住一個鍵盤按鍵時會觸發 onkeypress 事件. 注意:onkeypress 事件與 onkeydown事件有些細微差别,onkeypress 事件不做相應功能鍵按下的處理.具體可将下面的示例更改為 onkeydown 事件後,可輸入 !@#$ 等特殊字元即可體會出二者之間的差别. 提示 Internet Explorer/Chrome 浏覽器使用 event.keyCode 取回被按下的字元,而 Netscape/Firefox

java 緩存資料字典,JAVA項目字典與緩存搭配使用方法解析

官網下載下傳 直接打開官網:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 我安裝的是 1.7 版本,當然,你可以選擇自己合适版本. 安裝 下載下傳的是.exe檔案,沒什麼好講的,都是直接下一步下一步.當然,你可以選擇合适的安裝路徑,我選擇了F:\Java. 接着選擇jre安裝路徑: 環境變量 桌面上找到 計算機(此電腦)右鍵,點選屬性--進階系統設定--環境變量,就可以開始編輯了.