標籤:Java
什麼是SolrCloud
SolrCloud是Solr提供的分布式搜尋方案,當你需要大規模,容錯,分布式索引和檢索能力時使用SolrCloud。當一個系統的索引資料量少的時候是不需要使用SolrCloud的,當索引量很大,搜尋請求並發很高,這時需要使用SolrCloud來滿足這些需求。
SolrCloud是基於Solr和Zookeeper的分布式搜尋方案,它的主要思想是使用Zookeeper作為叢集的配置資訊中心。
它有幾個特色功能:
1)集中式的配置資訊
2)自動容錯
3)近即時搜尋
4)查詢時自動負載平衡
solr怎麼設定搜尋結果排名靠前(得分)?
可以設定文檔中域的boost值,boost值越高計算出來的相關度得分就越高,排名也就越靠前。此方法可以把熱點商品或者是推廣商品的排名提高。
SpringMVC全域異常處理
整個系統只有一個,
使用方法:
1)需要實現一個介面
HandlerExceptionResolver
2)需要在springmvc中配置。
處理邏輯:
捕獲整個系統中發生的異常。
1、異常寫入記錄檔
2、及時通知開發人員。發郵件、簡訊。
展示一個錯誤頁面,例如:您的網路故障,請重試。
網頁靜態化
好處:1.有利於搜尋引擎最佳化2.提高訪問速度3解決高並發
靜態檔案產生的時機:當後台添加、編輯商品時產生靜態網頁
1、mq發送訊息
2、接收到訊息,產生靜態頁面
3、nginx訪問靜態頁面。
什麼是sso系統
單點登入是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。
登入的處理流程:
1、登入頁面提交使用者名稱密碼。
2、登入成功後產生token。Token相當於原來的jsessionid,字串,可以使用uuid。
3、把使用者資訊儲存到redis。Key就是token,value就是TbUser對象轉換成json。
4、使用String類型儲存Session資訊。可以使用“首碼:token”為key
5、設定key的到期時間。類比Session的到期時間。一般半個小時。
6、把token寫入cookie中。
如何判斷是否登入
1.從cookie中取token
2.取不到未登入
3.取到token,到redis中查詢token是否到期
4.如果到期,為登入狀態
5.沒有到期,登入狀態
實現購車商品資料同步
1、要求使用者登入。
2、把購物車商品列表儲存到資料庫中。推薦使用redis。
3、Key:使用者id,value:購車商品列表。推薦使用hash,hash的field:商品id,value:商品資訊。
4、在使用者未登入情況下寫cookie。當使用者登入後,訪問購物車列表時,
a)把cookie中的資料同步到redis。
b)把cookie中的資料刪除
c)展示購物車列表時以redis為準。
d)如果redis中有資料cookie中也有資料,需要做資料合併。相同商品數量相加,不同商品添加一個新商品。
5、如果使用者登入狀態,展示購物車列表以redis為準。如果未登入,以cookie為準。
瀏覽器跨域問題
跨域是指從一個網域名稱的網頁去請求另一個網域名稱的資源。瀏覽器出於安全的考慮,不允許不同源的請求
JSONP解決AJAX跨域問題:
JSONP是伺服器與用戶端跨源通訊的常用方法。最大特點就是簡單適用,老式瀏覽器全部支援,伺服器改造非常小。
它的基本思想是,網頁通過添加一個<script>元素,向伺服器請求JSON資料,這種做法不受同源政策限制;伺服器收到請求後,將資料放在一個指定名字的回呼函數裡傳回來。
海量資料的儲存問題
如今隨著互連網的發展,資料的量級也是呈指數的增長,從GB到TB到PB。對資料的各種操作也是愈加的困難,傳統的關係性資料庫已經無法滿足快速查詢與插入資料的需求。這個時候NoSQL的出現暫時解決了這一危機。它通過降低資料的安全性,減少對事務的支援,減少對複雜查詢的支援,來擷取效能上的提升。
但是,在有些場合NoSQL一些折衷是無法滿足使用情境的,就比如有些使用情境是絕對要有事務與安全指標的。這個時候NoSQL肯定是無法滿足的,所以還是需要使用關係性資料庫。如果使用關係型資料庫解決海量儲存的問題呢?此時就需要做資料庫叢集,為了提高查詢效能將一個資料庫的資料分散到不同的資料庫中儲存。
Java電商項目面試題(二)