分析代碼遇到的知識點

spring參數註解

@Null 被註釋的元素必須爲null
@NotNull 被註釋的元素不能爲null
@AssertTrue 被註釋的元素必須爲true
@AssertFalse 被註釋的元素必須爲false
@Min(value) 被註釋的元素必須是一個數字,其值必須大於等於指定的最小值
@Max(value) 被註釋的元素必須是一個數字,其值必須小於等於指定的最大值
@DecimalMin(value) 被註釋的元素必須是一個數字,其值必須大於等於指定的最小值
@DecimalMax(value) 被註釋的元素必須是一個數字,其值必須小於等於指定的最大值
@Size(max,min) 被註釋的元素的大小必須在指定的範圍內。
@Digits(integer,fraction) 被註釋的元素必須是一個數字,其值必須在可接受的範圍內
@Past 被註釋的元素必須是一個過去的日期
@Future 被註釋的元素必須是一個將來的日期
@Pattern(value) 被註釋的元素必須符合指定的正則表達式。
@Email 被註釋的元素必須是電子郵件地址
@Length 被註釋的字符串的大小必須在指定的範圍內
@NotEmpty 被註釋的字符串必須非空
@Range 被註釋的元素必須在合適的範圍內
@Valid Controller層要對實體類進行校驗時,需要添加此註解

參數註解實例可參考:
spring後端接收參數註解


@requestparam和@requestbody的區別

參考文章:
@RequestParam與@RequestBody對比


Pagehelper源碼理解


mySql執行計劃

MySQL explain執行計劃詳解


mySql模糊搜索提高效率

有的博客上說是用mysql的LOCATE來進行模糊搜索效率會比LIKE高。有待測試。
具體真正提高模糊搜索效率的官方說明未找到。


@Transactional

簡單掌握 Spring 中@Transactional 的使用
註解@Transactional的propagation屬性介紹及代碼展示

@Transactional詳解(一)
@Transactional詳解(二)


int和Integer的區別

  1. Integer是int的包裝類,int則是java的一種基本數據類型
  2. Integer變量必須實例化後才能使用,而int變量不需要
  3. Integer實際是對象的引用,當new一個Integer時,實際上是生成一個指針指向此對象;而int則是直接存儲數據值
  4. Integer的默認值是null,int的默認值是0

參考文章:
int和Integer的比較


FreeMarker使用

我們項目中用到的freemarker
在這裏插入圖片描述

FreeMarker官方中文手冊
FreeMarker基礎使用


StringBUffer、StringBuilder

String、StringBuffer與StringBuilder的區別及應用場景


java IO流原理、概念、操作流程學習。

看書,不要看博客。


String.format()的用法

String.format()的詳細用法


Iterator,for,forEach

Iterator,for,forEach的遍歷和效率
經過測試,Iterator不管在1萬還是100萬數量級下,遍歷效率都比其他兩種方式都來得低。
for遍歷在1萬以下元素裏最快,如果元素在10萬個以上,那麼forEach就是最快的。
以上測試是基於博客中給出的例子,在本地進行測試的結果,並非一定正確,因爲我們項目中可能數組、集合存儲的元素不同,可能會影響到這三種方式遍歷的效率。所以在項目中,有遍歷到數據量大的數組或集合,還是應該要實地做下測試。


@Data

@Data註解的類,編譯後會自動給我們加上下列方法:

  • 所有屬性的get和set方法
  • toString 方法
  • hashCode方法
  • equals方法

@Controlleradvice

@ControllerAdvice 註解,可以用於定義@ExceptionHandler、@InitBinder、@ModelAttribute,並應用到所有@RequestMapping中。
@ControllerAdvice 攔截異常並統一處理
Spring MVC之@ControllerAdvice詳解


Lombok

瞭解Lombok


同步調用轉換成異步消息交互的場景和原則

  1. 比如在買機票系統中,機票支付完成後需要通知出票系統出票、代金券系統發券。如果使用同步調用,那麼出票系統、代金券系統宕機是會影響到機票支付系統。如果我們將同步調用替換成異步消息,機票支付系統發送機票支付成功的消息到消息中間件,出票系統、代金券系統從消息中間件訂閱消息。這樣一來,出票系統、代金券系統的宕機也就不會對機票支付系統造成任何影響了。
  2. 分清主次,主要的功能,對其他功能有影響的,要同步。對於主要功能沒有影響的,就可以異步處理。如上面的機票問題,還有就是電商的支付,也是同一道理。
  3. 耗時較長的程序。如之前E行銷生成保單。就是提交數據後,保存成功即返回,讓生成保單的PDF文件異步來生成,因爲這個保單生成耗時較長。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章