當開始我們寫的商品分類業務層,是前台每次直接訪問資料庫進行資料讀取,這樣的設計在高併發的情況下容易導致資料庫崩潰的傳送,因此我們需要進行優化處理
為什麼使用redis
因為redis的資料存在快取中所有讀取快,壓力相對於直接訪問資料庫小
優化思路:
使用者在第一次訪問的時候,先去拿取redis快取中的資料,判斷為空,然後查詢資料庫存入redis的**快取中,並將資料返回到前台展示給客戶,下次訪問直接從redis的快取中讀取
為什麼要設計**快取
因為如果要使用集群,單將資料存入乙個伺服器中,進行負載均衡時資料不能同步
redis的使用
查詢資料庫的方法
public listgetalldataby_db()
查詢出的資料進行拼裝
private void makestructure(listproducttypes, listproducttypes1) );
for (producttype producttype : producttypes1) else
}} 這裡判斷redis快取中是否有資料,沒有呼叫查詢資料庫的方法,放入快取中
public listgettreedata() catch (exception e)
//判斷是否為null
if (stringutils.isempty(redis))else
//傳入一級分類集合 和 所有的資料 進行選單層級拼
makestructure(producttypes, producttypes1);
return producttypes;
}}
頁面靜態化
使用freemaker,velocity技術進行頁面靜態化
velocity的工具類
我們只需要傳入model(資料) 還有模板路徑 和生成路徑即可
public class velocityutils
/*** 返回通過模板,將model中的資料替換後的內容
* @param model
* @param templatefilepathandname
* @return
*/public static string getcontentbytemplate(object model, string templatefilepathandname) catch (exception e)
return "";
} /**
* 根據模板,靜態化model到指定的檔案 模板檔案中通過訪問model來訪問設定的內容
* * @param model
* 資料物件
* @param templatefilepathandname
* 模板檔案的物理路徑
* @param targetfilepathandname
* 目標輸出檔案的物理路徑
*/public static void staticbytemplate(object model, string templatefilepathandname, string targetfilepathandname) catch (exception e)
} /**
* 靜態化內容content到指定的檔案
* * @param content
* @param targetfilepathandname
*/public static void staticby******(object content, string targetfilepathandname) ";
velocitycontext context = new velocitycontext();
context.put("content", content);
stringwriter writer = new stringwriter();
ve.evaluate(context, writer, "", template);
try catch (ioexception e)
}
@override
public boolean updatebyid(producttype entity)
Confluence 6 其他頁面操作和頁面大小
在 confluence 的頁面中,你可以對 confluence 進行下面的一些操作 我們建議你不要在頁面或者附件名中使用特殊字串。如果你使用了特殊的字串,頁面或者附件可能不能在 confluence 的搜尋中找到,同時也有可能導致 confluence 的功能損壞。如果你對乙個頁面進行重新命名,...
C map的基本操作和使用
map是c 的乙個標準容器,她提供了很好一對一的關係,在一些程式中建立乙個map可以起到事半功倍的效果,總結了一些map基本簡單實用的操作!1.map最基本的建構函式 mapmapstring mapmapint mapmapstring map char string mapchar mapmap...
C map的基本操作和使用
map是c 的乙個標準容器,她提供了很好一對一的關係,在一些程式中建立乙個map可以起到事半功倍的效果,總結了一些map基本簡單實用的操作!1.map最基本的建構函式 mapmapstring mapmapint mapmapstring map char string mapchar mapmap...