實習筆記(一)

自定義注解:

自定義注解中有三個元注解@Target,@Retention,@Document

/*** 系統日志注解** @author Mark sunlightcs@gmail.com*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface SysLog {String value() default "";
}

@Target(ElementType.METHOD) 表示只能在方法上聲明

@Retention 元注解 注解標記其他的注解用于指明標記的注解保留策略

首先要明確生命周期長度 SOURCE < CLASS < RUNTIME ,所以前者能作用的地方后者一定也能作用。
一般如果需要在運行時去動態獲取注解信息,那只能用 RUNTIME 注解,比如@RestController使用RUNTIME注解
如果要在編譯時進行一些預處理操作,比如生成一些輔助代碼(如 ButterKnife),就用 CLASS注解;
如果只是做一些檢查性的操作,比如 @Override 和 @SuppressWarnings,使用SOURCE 注解。
注解@Deprecated,用來表示某個類或屬性或方法已經過時,不想別人再用時,在屬性和方法上用@Deprecated修飾
@Documented注解標記的元素,Javadoc工具會將此注解標記元素的注解信息包含在javadoc中。默認,注解信息不會包含在Javadoc中。

instanceof

  • ?instanceof 是 Java 的保留關鍵字。
  • ?作用是:測試它左邊的對象是否是它右邊的類的實例,返回 boolean 的數據類型
  • ?instanceof是Java中的二元運算符,左邊是對象,右邊是類;當對象是右邊類或子類所創建對象時,返回true;否則,返回false。

@XmlRootElement

便于對象與xml文件之間的轉換

@XmlRootElement( name="doc" )
public class Document {@XmlElementprotected Foo foo;// ...
}
<?xml version="1.0" encoding="UTF-8"?>
<doc><foo>...</foo>
</doc>

Java Document 工具類

Java 對本地HTML文件的讀取和寫入的工具類,可以用來修改靜態HTML的內容

@Deprecated 說明

  • 若類、方法、屬性加上該注解之后,表示不再建議使用,調用時會出現刪除線,但并不代表不能用,只是不推薦使用,因為有更好的替代

二級緩存

Redis+Guava

Guava Cache?是其中的一個專門用于處理本地緩存的輕量級框架,是全內存方式的本地緩存,而且是線程安全

和 ConcurrentMap 相比,Guava Cache 可以限制內存的占用,并可設置緩存的過期時間,可以自動回收數據,而 ConcurrentMap 只能通過靜態方式來控制緩存,移除數據元素需要顯示的方式來移除。

先去查看緩存,若緩存中沒有數據則去訪問數據庫,同時將數據更新至緩存

優點:

  • 保證最小的緩存量滿足精確查詢業務,避免冷數據占用寶貴的內存空間
  • 對增刪改查業務入侵小、刪除即同步
  • 可插拔,對于老系統升級,歷史數據無需在啟動時初始化緩存

缺點:

  • 數據量需可控,在無限增長業務場景不適用
  • 在微服務場景不利于全局緩存應用

微服務場景下,多個微服務使用一個大緩存,流數據業務下,高頻讀取緩存對 Redis 壓力很大,最終導致緩存雪崩,進而引發我們的服務雪崩。我們使用本地緩存結合 Redis 緩存使用,降低 Redis 壓力,同時本地緩存沒有連接開銷,性能更優

熱點數據(熱key)放到我們JVM的本地緩存中,本地緩存可以使用caffeine,ehcache,guava。本文介紹Guava進行實現。

如果是通過redis集群來實現的,我們可以通過一致性hash算法構建一個hash環,主要是防止某一個或者某些個redis結點宕機或者下線而導致數據丟失的問題以及我們后面動態進行擴容的問題

?hash取模算法,實際上對目標表或者目標數據庫進行hash取模,一旦目標表或者數據庫發生數量上的變化,就會導致所有數據都需要進行遷移,為了減少這種大規模的數據影響,才引入了一致性hash算法。

一致性哈希將整個哈希值空間組織成一個虛擬的圓環,取模運算不是直接對這四個表來完成,而是對2^32來實現,

?

?

guava的數據回收策略
對于guava的數據刪除分為被動移除和主動移除兩種

被動移除
基于大小的移除
看字面意思就知道就是按照緩存的大小來移除,如果即將到達指定的大小,那就會把不常用的鍵值對從cache中移除。

guava提供了兩個基于時間移除的方法:

  • expireAfterAccess(long, TimeUnit) 這個方法是根據某個鍵值對最后一次訪問之后多少時間后移除
  • expireAfterWrite(long, TimeUnit) 緩存項在給定時間內沒有被寫訪問(創建或覆蓋),則回收。如果認為緩存數據總是在固定時候后變得陳舊不可用,這種回收方式是可取的

基于引用的移除

  • 這種移除方式主要是基于java的垃圾回收機制,根據鍵或者值的引用關系決定移除。

主動移除數據
主動移除有三種方法:

  • 單獨移除 Cache.invalidate(key)
  • 批量移除 Cache.invalidateAll(keys)
  • 移除所有 Cache.invalidateAll()
    ?

參考:千萬級并發架構下,如何進行關系型數據庫的分庫分表_ZNineSun的博客-CSDN博客

Redis+Guava實現高性能的二級緩存_guavacache和redis結合使用_ZNineSun的博客-CSDN博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/37741.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37741.shtml
英文地址,請注明出處:http://en.pswp.cn/news/37741.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2023全國大學生數學建模競賽C題思路模型代碼

目錄 1.C題思路模型&#xff1a;比賽開始后&#xff0c;第一時間更新&#xff0c;獲取見文末名片 2.比賽時間&#xff1a;2023年9月7日18點到2023年9月10日20點 3 全國大學生數學建模競賽常見數模問題 3.1 分類問題 3.2 優化問題 詳細思路見此名片&#xff0c;開賽第一時間…

面試題解析 | 為什么Redis使用單線程性能會優于多線程?

大家好&#xff0c;我是小米&#xff01;今天我要和大家聊一個有關Redis的熱門面試題&#xff1a;為什么Redis使用單線程性能會優于多線程&#xff1f;相信這個問題在很多同學心中都曾經糾結過&#xff0c;那么接下來&#xff0c;就讓我們一起來揭開這個技術之謎吧&#xff01;…

LeetCode 37題:解數獨

題目 編寫一個程序&#xff0c;通過填充空格來解決數獨問題。 數獨的解法需 遵循如下規則&#xff1a; 數字 1-9 在每一行只能出現一次。數字 1-9 在每一列只能出現一次。數字 1-9 在每一個以粗實線分隔的 3x3 宮內只能出現一次。&#xff08;請參考示例圖&#xff09; 數獨…

IDEA簡單拷貝一份新項目記錄

IDEA簡單拷貝項目記錄 拷貝后改項目名&#xff0c;然后iml 配置文件改項目名&#xff0c;然后 .idea 中的compiler.xml 里面的name標簽改項目名。 就可以了

【軟件工程】軟件測試

軟件測試的對象 軟件程序文檔 測試對象&#xff1a;各個階段產生的源程序和文檔。 軟件測試的目的 基于不同的立場&#xff0c;對軟件測試的目的存在著兩種完全對立的觀點。 &#xff08;1&#xff09;一種觀點是通過測試暴露出軟件中所包含的故障和缺陷(從用戶的角度)&#xf…

ssh-keygen 做好免密登錄后不生效

免密說明 通常情況下&#xff0c;我們ssh到其他服務器需要知道服務器的用戶名和密碼。對于需要經常登錄的服務器每次都輸入密碼比較麻煩&#xff0c;因此我們可以在兩臺服務器上做免密登錄&#xff0c;即在A服務器可以免密登錄B服務器。 在A服務器上登錄B服務器時&#xff0c;…

Tik Tok娛樂+電商MCN怎么做?

在美國外的熱門市場中&#xff0c;TikTok 主要做的區域市場包括中東、拉美、歐洲和東亞&#xff0c;而這里面適合做電商的其實并不多。 歐洲、東亞都屬于成熟市場&#xff0c;且 TikTok 本身在歐洲面臨 DSA 法案更嚴格的審查&#xff0c;與在英國相同&#xff0c;歐洲各市場消…

第G1周:生成對抗網絡(GAN)入門

&#x1f368; 本文為[&#x1f517;365天深度學習訓練營]內部限免文章&#xff08;版權歸 *K同學啊* 所有&#xff09; &#x1f356; 作者&#xff1a;[K同學啊] 一、理論基礎 生成對抗網絡&#xff08;Generative Adversarial Networks, GAN&#xff09;是近年來深度學習領域…

Windows安裝Go開發環境

Windows安裝Go開發環境 一、Go語言下載地址 https://golang.google.cn/dl/ 二、設置工作空間GOPATH目錄(Go語言開發的項目路徑) 首先進入我的C盤&#xff08;你放到其他盤也行&#xff09;&#xff0c;新建一個文件夾&#xff0c;名字叫做mygo&#xff08;這個就是你的工作目…

ArcGIS Maps SDK for JavaScript系列之一:在Vue3中加載ArcGIS地圖

目錄 ArcGIS Maps SDK for JavaScript簡介ArcGIS Maps SDK for JavaScript 4.x 的主要特點和功能AMD modules 和 ES modules兩種方式比較Vue3中使用ArcGIS Maps SDK for JavaScript的步驟創建 Vue 3 項目安裝 ArcGIS Maps SDK for JavaScript創建地圖組件 ArcGIS Maps SDK for …

“深入理解JVM:探索Java虛擬機的內部工作原理“

標題&#xff1a;深入理解JVM&#xff1a;探索Java虛擬機的內部工作原理 摘要&#xff1a;本文將深入探索Java虛擬機&#xff08;JVM&#xff09;的內部工作原理&#xff0c;包括JVM的架構、類加載、內存管理、垃圾回收機制等方面。通過理解JVM的內部工作原理&#xff0c;我們…

華為開源自研AI框架昇思MindSpore應用案例:基于MindSpore框架的UNet-2D案例實現

目錄 一、環境準備1.進入ModelArts官網2.使用CodeLab體驗Notebook實例 二、環境準備與數據讀取三、模型解析Transformer基本原理Attention模塊 Transformer EncoderViT模型的輸入整體構建ViT 四、模型訓練與推理模型訓練模型驗證模型推理 近些年&#xff0c;隨著基于自注意&…

改造舊項目-長安分局人事費用管理系統

一、系統環境搭建 1、搭建前臺環境 vue3vite構建項目復制“銀稅系統”頁面結構&#xff0c;包括&#xff1a;路由、vuex存儲、菜單、登錄&#xff08;復制一個干凈的空架子&#xff09; 2、搭建后臺環境 新三大框架 SSMP聚合工程&#xff1a;common、admin&#xff0c;新的…

JAVA冒泡排序

package com.hzh.javase.day03;public class maopao {public static void main(String[] args) {int[] arr {2, 11,4,7,5,22,15,37,12,1};int zjvalue 0;//中間值boolean boofalse; //冒泡比較相鄰元素將小的提前打的放后 // 外層循環時用來控制輪數 // 內存循…

2023國賽數學建模E題思路分析

文章目錄 0 賽題思路1 競賽信息2 競賽時間3 建模常見問題類型3.1 分類問題3.2 優化問題3.3 預測問題3.4 評價問題 4 建模資料 0 賽題思路 &#xff08;賽題出來以后第一時間在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 競賽信息 全國大學生數學建模…

Linux服務器上配置HTTP和HTTPS代理

本文將向你分享如何在Linux服務器上配置HTTP和HTTPS代理的方法&#xff0c;解決可能遇到的問題&#xff0c;讓你的爬蟲項目順利運行&#xff0c;暢爬互聯網&#xff01; 配置HTTP代理的步驟 1. 了解HTTP代理的類型&#xff1a;常見的有正向代理和反向代理兩種類型。根據實際需求…

涉及近300個業務場景,重慶銀行數字員工平臺建設解析

隨著數字化轉型戰略規劃的逐步落地&#xff0c;重慶銀行于2022年6月成功建設了數字員工平臺&#xff0c;該平臺已成為行內數字化轉型的標桿應用。數字員工平臺以RPA&#xff08;機器人流程自動化&#xff09;為基礎&#xff0c;AI&#xff08;人工智能&#xff09;技術為抓手&a…

PHP最簡單自定義自己的框架view使用引入smarty(8)--自定義的框架完成

1、實現效果。引入smarty&#xff0c; 實現assign和 display 2、下載smarty&#xff0c;創建緩存目錄cache和擴展extend 點擊下面查看具體下載使用&#xff0c;下載改名后放到extend PHP之Smarty使用以及框架display和assign原理_PHP隔壁老王鄰居的博客-CSDN博客 3、當前控…

leetcode 力扣刷題 旋轉矩陣(循環過程邊界控制)

力扣刷題 旋轉矩陣 二維矩陣按圈遍歷&#xff08;順時針 or 逆時針&#xff09;遍歷59. 旋轉矩陣Ⅱ54. 旋轉矩陣劍指 Offer 29. 順時針打印矩陣 二維矩陣按圈遍歷&#xff08;順時針 or 逆時針&#xff09;遍歷 下面的題目的主要考察點都是&#xff0c;二維數組從左上角開始順…

輸出無重復的3位數和計算無人機飛行坐標

編程題總結 題目一&#xff1a;輸出無重復的3位數 題目描述 從{1,2,3,4,5,6,7,8,9}中隨機挑選不重復的5個數字作為輸入數組‘selectedDigits’&#xff0c;能組成多少個互不相同且無重復數字的3位數?請編寫程》序&#xff0c;從小到大順序&#xff0c;以數組形式輸出這些3位…