一、優化商品型別的方案選擇
1.後台管理-redis快取
2.**主頁-頁面靜態化
二、為什麼要對商品型別進行優化(面試)
三、**實現
1.搭建公共的服務模組
2.測試 - eureka中有服務
四、redis公共服務
1.新增redis的依賴
2.匯入redis的工具類
3.完成redis的訪問值的介面
@restcontroller
public class rediscontroller implements redisclient catch (exception e)
}/**
* 獲取快取資料
* @param key
* @return
*/public ajaxresult get(@requestparam("key")string key) catch (exception e)
}4.完成feign的客戶端介面
(1)新增openfeign的依賴
(2)寫客戶端介面和返回托底資料的factory
@feignclient(value = 「common-service」,fallbackfactory = redisfallbackfactory.class)
public inte***ce redisclient
@override
public ajaxresult get(string key)
};}
5.在商品服務中 (查詢商品列表的介面中做更改)
(1)先從快取中查詢
(2)如果沒有,在查詢資料庫,同步到快取中
(3)返回資料
@override
public list loadtypetree()
//返回資料
return producttypes;
}6.測試,修改bug
(1)呼叫公共介面400錯誤,請求頭太長
(2)在公共服務中配置tomcat請求頭的大小–自己查
五、**主頁面靜態化
1.準備模板
執行專案-搭建乙個前端伺服器
npm install -g live-server
live-server --port=8081
2.編寫公共的頁面靜態化的介面
(1)新增velocity的依賴
(2)匯入工具包
(3)寫介面
(4)寫feign的客戶端
3.寫乙個介面(本身這個介面需要後台管理頁面的乙個按鈕來呼叫),我們直接通過postman來呼叫
/***/
@override
public void genhomepage() {
//第一步 : 生成product.type.vm.html
mapmap = new hashmap<>();
string templatepath = "e:\\ideaproject\\aigou-parent\\aigou-product-parent\\aigou-product-service\\src\\main\\resources\\template\\product.type.vm";
string targetpath = "e:\\ideaproject\\aigou-parent\\aigou-product-parent\\aigou-product-service\\src\\main\\resources\\template\\product.type.vm.html";
//model 就是list 存放所有的商品型別
listproducttypes = loadtypetree();
map.put("model",producttypes);
map.put("templatepath",templatepath);
map.put("targetpath",targetpath);
staticpageclient.genstaticpage(map);
//第二步 : 生成home.html
map = new hashmap<>();
templatepath = "e:\\ideaproject\\aigou-parent\\aigou-product-parent\\aigou-product-service\\src\\main\\resources\\template\\home.vm";
targetpath = "e:\\ideaproject\\aigou-web-parent\\aigou-web-home\\home.html";
//model 中要有乙個資料是staticroot
mapmodel = new hashmap<>();
model.put("staticroot","e:\\ideaproject\\aigou-parent\\aigou-product-parent\\aigou-product-service\\src\\main\\resources\\");
map.put("model",model);
map.put("templatepath",templatepath);
map.put("targetpath",targetpath);
staticpageclient.genstaticpage(map);
4.測試–靜態資源(css,js,image)路徑不對 angularjs按商品型別,點選加入購物車
lang en charset utf 8 titletitle style src angular 1.5.5 angular.min.js script 宣告模板 為模板新增控制器 scope products 判斷彈出框 scope.fun function if n 0 else if n ...
基於ES的商品搜尋優化方案
新增底紋熱搜提示 動態的切換搜尋底紋,搜尋底紋為 商品銷售排名topn,通過快取獲取重新整理,兩個小時進行重新整理。聯動詞建立商品名稱,品牌,類目 型別,屬性 等實體的索引,通過查詢推薦實現搜尋聯動,索引進行動態更新。1.文字歸一 1 去除停用詞,如 使用者不小心輸入的特殊符號 標點符號 2 大小寫...
商品秒殺問題的解決方案
假設num是儲存在資料庫中的字段,儲存了被秒殺產品的剩餘數量。if num 0 假設在乙個併發量較高的場景,資料庫中num的值為1時,可能同時會有多個程序讀取到num為1,程式判斷符合條件,搶購成功,num減一。這樣會導致商品超發的情況,本來只有10件可以搶購的商品,可能會有超過10個人搶到,此時n...