Springboot中的緩存Cache和CacheManager原理介紹

背景理解

什麼是緩存,為什麼要用緩存

程序運行中,在內存保持一定時間不變的數據就是緩存。簡單到寫一個Map,裏面放着一些key,value數據,就已經是個緩存了

所以緩存並不是什麼高大上的技術,只是個概念,把要多次使用的東西存在一個變量里,時不時取出來使用,就達到了緩存的目的,緩存就是存放數據的容器

那為什麼要用緩存呢,是因為要多次使用。一個程序總有一些數據時可預見被多次使用(預見的準不準就是常說的命中率)

比如一個複雜的計算結果,一次數據庫訪問取得的數據等耗時耗資源的數據就能放入緩存,目的就是為了節省開銷,我們要用有限的資源(CPU,內存,帶寬等等)盡量做最多的事情。

為什麼要用SpringCache(緩存的演變過程)

緩存的思考

如果我們要設計一個緩存,最基本的功能是存和取:

1.能在緩存里存放數據

2.能在緩存里取出數據

可是這不夠呀,比如以下的思考

1.取數據時判斷,數據是否存在,如果不存在是不是要數據庫取

2.如果是過期的內容是不是要更新

3.如果我有多個緩存,一個是我自己設計的HashMap緩存,一個是名聲很大的redis,還有….,那需要個緩存管理器呀

為了讓緩存更好用,更“智能”,越來越多的需求就會被提出來,而緩存就是這樣一步步演變直到SpringCache橫空出世,功能十分強大(說白了就是我們少寫很多代碼)

SpringCache的好處

SpringCache包含兩個頂級接口,Cache(緩存)和CacheManager(緩存管理器),顧名思義,用CacheManager去管理一堆Cache。

最最關鍵的地方:抱緊了Spring的大腿,可以使用註解就能完成數據進入緩存!!

給大家舉個例子,就知道多簡單了

首先,Springboot中會自動加載一個CacheManager(它有默認的實現類),所以只要寫好一個自定義的Cache即可(如果想用系統定義好的或者第三方如RedisCache也行,記得向Spring註冊這個bean即可)

@Component
public class MyCache implements Cache {
  /*
       實現接口方法,一些關於數據set和get的方法
       CacheManager是根據Cache的名字進行管理的
       所以假設這個Cache名為MyCache
  */  
}

然後在得出數據的方法上寫上註釋即可

@Cacheable(value = "MyCache",key = "#id")
public String getNavegationURLs(String id) {
        //一個獲取數據的方法
}

這樣就會在調用這個方法時,會以id為key值,在名為MyCache的Cache容器中查找(註解中value就是緩存名字,不同名字指定使用不同的緩存)

如果沒查到,則執行方法 getNavegationURLs,將返回值存入緩存

如果找到了,就直接將從緩存取值,直接返回,不用執行方法 getNavegationURLs

還有其他方便的Cache註解自行百度,重要的是我們根本不用寫任何關於調用緩存的邏輯代碼,只用關注於緩存自身的邏輯

註解如何起作用的,源碼流程大致了解

為什麼要了解源碼

最直接的原因是因為SpringCache是不支持靈活的緩存時間設置的,所以想了解大概的來龍去脈去實現一個支持緩存過期時間設置和自動更新的類(之後會寫實現博文)。

高大上的原因是想通過這次探索,去了解下Spring對類的管理機制,去接觸下AOP的實現

SpringCache源碼簡單分析

大家從上面例子有沒發現問題,Cache和CacheManager是怎樣做關聯的,其實是Spring掃包實現的

凡是繼承了Cache接口的類,都會被自動注入進CacheManager中,最終存儲於CacheManager的實現類中

 

 接着會生成被@Cacheable(或者其他SpringCache註解修飾過)的代理類,並會將管理它的CacheManager賦值進去

 看這段代碼,就知道如果要設置多個CacheManager,就得在眾多實現類的其中一個加上@Primary,不然會Spring會報錯能選擇的Bean太多而不知道用哪個

 

代理類生成后(包括會根據不同的註解生成信息類CacheOperationMetadata,到時候就會根據這個類的內容進行緩存操作,說白了就是調用我們實現Cache裏面的各種方法)

Springboot底層初始化完成后,進入我們寫的代碼邏輯

如果這時進入了該類的方法,如:

 

 代碼跟進去,你會神奇的發現進入了代理類的intercept方法,怎麼進去的呢~(具體原理看下面3.0)

 這裏面就會根據註解類型,進行緩存的邏輯判斷,然後決定會不會調用我們寫的方法~

 代理類原理介紹(AOP切面之類的都是通過代理哦)

Spring代理分為兩種:

1.JDK原生動態代理,要求被代理的類需要實現接口(通過接口來實現的代理

那麼代理類滿足以下條件:

首先實現一個InvocationHandler,方法調用會被轉發到該類的invoke()方法。 意思是:對代理對象的所有接口方法調用都會轉發到InvocationHandler.invoke()方法,在invoke()方法里我們可以加入任何邏輯,比如修改方法參數,加入日誌功能、安全檢查功能等;之後我們通過某種方式執行真正的方法體  
2.CGLIB動態代理,不要求被代理的類需要實現接口,但是final的方法無法被代理(
通過繼承來實現代理) 那麼代理類滿足以下條件: 實現一個MethodInterceptor,方法調用會被轉發到該類的intercept()方法

具體內容可以參考這篇精品博客:

如果你想自己實現代理類(就是不喜歡用工具包),其實也行啊,輸出符合class規範的二進制字節碼就行啦~~~(認真學習JVM規範吧)

 

至此,該分享的就分享完啦,有什麼問題歡迎留言一起探討~

 

 

 

 

 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

esp8266 smartconfig-智能配網分析和使用及注意事項

基本知識:

  樂鑫⾃主研發的 ESP-TOUCH 協議采⽤的是 Smart Config(智能配置)技術,幫助⽤戶將 采⽤ ESP8266EX 和 ESP32 的設備(以下簡稱“設備”)連接⾄ Wi-Fi ⽹絡。⽤戶只需在⼿ 機上進⾏簡單操作即可實現智能配置。整個過程如下圖所示:

   

 由於設備在⼀開始並未連接⾄⽹絡,ESP-TOUCH App ⽆法直接向設備發送信息。通過 ESP-TOUCH 通信協議,具備 Wi-Fi ⽹絡接⼊能⼒的設備(例如智能⼿機)就可以向接 ⼊點 (AP) 發送⼀系列 UDP 包,其中每⼀包的⻓度(即 Length 字段)都按照 ESPTOUCH 通信協議進⾏編碼,SSID 和密碼就包含在 Length 字段中,隨後設備便可以獲 得並解析出所需的信息。數據包結構如圖 1-2 所示:

 

源碼和app:

源碼的路徑如下所示:

源碼路徑:

根據你的所需進行修改或直接安裝,筆者的截圖如下所示:

 

操作步驟:

準備⼀台⽀持 ESP-TOUCH 的設備,開啟配置功能;
將⼿機連接⾄路由器;
打開安裝在⼿機上的 ESP-TOUCH App;
在 App 界⾯輸⼊路由器的 SSID 和密碼(若路由不加密則密碼為空),開始連接。

注意事項:

• 設備與⼿機建⽴鏈路所需的時間和兩者之間的距離有關,若距離很近,僅需數秒即可完成。

• 在開啟設備端 ESP-TOUCH 智能配置功能之前,請確保路由器已經開啟。由於開啟此功能后,設備會先 掃描周圍的 AP 信息,如果路由器沒有開啟,則⽆法獲取周圍的 AP 列表。

• ESP-TOUCH App 端發送序列有超時限制,即如果沒有在規定的時間配置上路由,App 會返回配置失敗 信息(參考 App 源碼)。設備端也會有超時限制,從設備鎖定通道開始計時到獲取 SSID 和密碼信息, 如果達到超時限制但並未獲取到 SSID 和密碼信息,設備會⾃動重新開始⼀次 Smart Config。⽤戶可以通 過 esptouch_set_timeout(uint8 time_s) 或 esp_smartconfig_set_timeout(uint8 time_s) 設置超時時 間。

• Smart Config 過程中設備需要開啟 Sniffer 模式,所以在 ESP8266 上 Station 和 soft-AP 模式都是關閉 的,不要調⽤其他相關 API。ESP32 不受此限制,可以同時開啟 Sniffer 和 Station 模式。

• 配置結束后,發送端獲取設備的 IP,設備端也會返回發送端的 IP,如果⽤戶需要⾃定義發送端和設備端 的信息交互,可以使⽤此 IP 信息進⾏局域⽹通信。 • 如果路由器設置了“AP 隔離”,會出現設備連接路由器成功,但 App 未收到連接成功的提示的現象。

• ⽀持⼿機同時配置多個設備到同⼀路由器上,配置時 App 端選擇接收多個返回結果。

• ESP8266 和 ESP32 不⽀持 5G 和 11AC 模式,因此不⽀持 Smart Config 連接 5G 或 11AC 模式的路由 器。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

湖北禁用廚餘垃圾餵豬 違規可罰5萬元

摘錄自2020年1月7日星島日報報導

中國非洲豬瘟疫情持續,湖北省政府立法,直接使用廚餘垃圾餵豬,將罰款最高5萬元人民幣,將於3月1日起實施。

政府指,為加強廚餘垃圾管理,保障食品安全,促進廚餘垃圾資源化利用和無害化處理,所以實施《湖北省餐廚垃圾管理辦法》規定。根據規定,在廚餘垃圾投放、收集、運輸、處置過程中,不得實施下列行為:將廚餘垃圾與其他生活垃圾混合投放;將廚餘垃圾排入污水排水管道、雨水管道等市政公共設施以及河道、湖泊、水庫等公共水域;隨意傾倒、拋撒廚餘垃圾等。

另外亦規定直接使用廚餘垃圾餵豬的,由縣級以上政府農業農村主管部門責令停止違法行為,可以處5000元以上2萬元以下罰款;情節嚴重的,處2萬元以上5萬元以下罰款。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

南非八獅遭毒殺 爪及鼻子被割下疑圖製藥

摘錄自2020年1月7日星島日報報導

南非近日有八隻獅子被人非法獵殺,另有仍在母獅體內的胎兒亦因此胎死腹中。部分獅子的腳掌及鼻子亦被人割去,懷疑是用作製作藥物,警方目前仍在調查案件。

事發在西北省斯瓦圖根斯(Swartruggens)附近一個農場,51歲的負責人布洛姆上周五(3日)在場內視察時,發現兩隻雄獅及六隻母獅被獵殺,獅子的爪以及鼻子亦被人割下。其中兩隻母獅各懷有三隻幼獅,但全都胎死腹中。另外,有兩隻幼獅剛在案發前出生,因喝下中毒母獅的奶水而死亡,事發後,該獅子家族僅剩一隻雌性幼獅「Yoda」,由於牠由布洛姆以奶樽餵哺而沒有喝下有毒的奶水,因此逃過一劫。

布洛姆在現場找到四組腳印,警方目前正調查案件,暫無人被捕。在南非,由於獅子及老虎等動物的部分身體部位可製成藥材,因此盜獵事件不時發生。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

環團舉辦「絕膠」活動 52間商戶參與減廢

摘錄自2020年1月7日星島日報報導

環保團體綠領行動今(7日)午在銅鑼灣記利佐治街舉行《全程「絕膠」日》推廣活動,提醒市民每日實踐「絕膠」生活,減少使用即棄塑膠。綠領行動調查顯示,香港人每星期最少共丟棄4640萬件即棄塑膠產品,廢塑膠問題非常嚴峻。

綠領行動舉辦爲期兩年的「全城絕膠大行動」,呼籲大眾和商戶在日常生活實踐拒絕即棄塑膠,至今成功邀請52間食肆和零售商戶參加行動。

綠領行動推出「絕膠地圖」網頁,所有店鋪已登錄在網頁中,方便市民搜尋及光顧。參加商戶需要做到包括淘汰所有過度包裝產品、拒絕不自攜器皿或餐具買外賣之顧客、提供可重用餐具或器皿,以及不主動派發即棄塑膠予顧客中的兩項,就會獲發「絕膠」店舖標籤。

現時香港每日有2343公噸塑膠棄置在堆填區,比去年上升一成,情況令人擔心,他期望立法會能盡快通過都市固體廢物收費草案,提供經濟誘因,令市民從源頭減廢。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

傳蘋果電動車將於 2019 年問世

蘋果公司生產汽車傳聞已久,美國《華爾街日報》21 日報導,蘋果正全力研發電動車,希望在 2019 年問世。   報導指出,蘋果電動車計劃的代號為「泰坦」(Titan),車款類型則像廂型休旅車。蘋果除了已聘請無人駕駛領域的專家外,也將泰坦的開發團隊由 600 人擴大 3 倍至 1,800 人,且可能會與傳統車廠合作,但蘋果官方發言人,拒絕對此消息作出評論。   外媒 AppleInsider 上周曾指出,蘋果已向電動車生產商特斯拉招兵買馬。 雖然有報導稱蘋果聘請無人駕駛領域的專家,但首款汽車仍需人操控駕駛。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

特斯拉將於 9 月 29 日對外發表 Model X

特斯拉宣布,將於美國時間 9 月 29 日在加州費利蒙市發佈旗下 SUV 車型 Model X。   費利蒙市是特斯拉汽車工廠所在地,特斯拉屆時可能會公佈 Model X 的價格和車型配置。而 Model X 將於 9 月 30 日開始首批交車,現在訂車的客戶可於明年初交車。   Model X 後車門採鷗翼式設計,充飽電後可行駛里程達 240 英里,靜止加速到時速 60 英里只需 3.8 秒,極速時速 155 英里。由於車身重量比 Model S 要重,因此它的續航里程也有所縮水,單次充電可行駛 230 至 265 英里  

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

Tesla 不懼挖角,Elon Musk:不合格的員工都去了蘋果

  蘋果公司啟動電動車研發專案後,從汽車廠商、電池製造商挖角了大量員工,包括電動車製造商 Tesla,近日 Tesla CEO Elon Musk 在接受採訪時表示,他並不擔心蘋果挖角工程師和管理人員,被挖角的員工多是被 Tesla 解雇的,如果員工無法承擔在 Tesla 的工作,那可以考慮去蘋果公司。   蘋果公司的電動車專案遭到了許多汽車產業人士的唱衰,Tesla CEO Elon Musk 表示,歡迎蘋果公司加入電動車產業,但研發汽車的難度遠高於智慧手機和手錶,在汽車產業內不可能找到一家像富士康那樣的代工廠,汽車的供應鏈和製造環節更加複雜,對於一家毫無汽車產業背景的公司而言,研發電動汽車不是一件容易的事。   蘋果公司從汽車產業挖角了大量研發人才,不少 Tesla 的員工也跳槽到了蘋果,Elon Musk 對於蘋果的挖角並不擔心,據他透露在公司內部蘋果公司被稱為 Tesla 的墳墓,如果你在 Tesla 幹不下去了,可以考慮去蘋果公司謀個職位。     本文全文授權轉載自《科技新報》——〈〉

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

中國成立電動汽車充電基礎設施促進聯盟,解決電動汽車充電難問題

12日,國家能源局會同有關部門在江蘇省常州市組織召開全國電動汽車充電基礎設施促進聯盟成立暨建設經驗交流現場會,宣佈國家電動汽車充電基礎設施促進聯盟正式成立。   據新華社消息,近年來,中國當前充電設施發展仍然存在認識不統一、配套政策不完善、協調推進難度大、標準規範不健全等問題。為此,國家明確提出,到2020年要完成為500萬輛電動汽車配套建設相應規模的充電基礎設施的任務目標。   “大力推進電動汽車充電基礎設施建設,有利於解決電動汽車充電難題,對於打造大眾創業、萬眾創新和增加公共產品、公共服務“雙引擎”,實現穩增長、調結構、惠民生具有重要意義。”國家能源局副局長鄭柵潔介紹。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

上海明年電動車免費牌照可望延續

近年積極在推廣電動車的上海,據該市的新能源汽車推進辦人士透露,明年上海的免費牌照政策可望延續。據業界專家指出,由於上海車牌動輒 9 至 10 萬人民幣,這項政策對電動車發展極有助益。   據解放網報導,上海未來在標誌性的文化場所、學校、醫院等公共場所,將率先推廣公共充電站建設;在公務車、公共交通領域率先應用電動汽車取得突破,提高電動汽車在汽車消費市場的比重,形成「電動汽車+分時租賃」的公共交通新常態。   電動汽車租賃相關的 evcard 分時租賃專案,則以從郊區發展到市中心,今年年底前將會有 500 個充電站建成 。截 至目前,上海新能源汽車免費掛上海車牌的入圍品牌已經有30 多家,總共發放了 3 萬張。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!