原创 @AllArgsConstructor與@JsonFormat一起使用時遇到的問題及對序列化的理解

問題描述: 有以下實體類: @Data @ToString @AllArgsConstructor public class UpdateTargetInfoBean { @JsonFormat(pattern = "yyyy

原创 解決使用springboot+ jpa + @query原生sql查詢,無法動態插入表名的問題

問題描述: 在使用springboot2.0 + jpa+ @query原生sql查詢時,無法動態插入表名 public interface BalanceTargetInfoRepositoryWithNativeQuery exte

原创 java8 lambda表達式去重

在使用java8的stream流對List集合操作時,遇到了去重問題。原有的distinct()方法需要重寫對象的equals()和hashCode()方法,比較麻煩,而且寫在實體裏比較難看。於是查閱資料,寫了如下代碼: List

原创 使用Postman的Pre-request Script自動生成通過網關需要校驗的簽名

後端代碼一般都在網關裏設置了簽名算法,訪問接口時,需要傳簽名參數通過網關才能訪問這些接口。在使用postman進行接口測試時,可以使用Pre-request Script編寫js代碼完成簽名算法,進而完成接口的訪問。 下面舉個算法簽名的例

原创 springboot2.0.4+rabbitMQ配置

最近的業務需要用到rabbitMQ,這裏記錄一下配置。本地使用Docker自己啓動的rabbitMQ測試,線上使用的阿里的消息隊列 for AMQP,完全兼容 RabbitMQ 開源生態,不用修改代碼。 1.導入依賴包 <depende

原创 關於http調用第三方API,如果第三方API異常,http的耗時問題

      最近項目出現了一個bug,同事在他的項目中使用http調用了我在其他項目中的接口,我的接口拋出異常,導致同事的項目出現了問題。趕快解決自己接口中的bug,改完後,就能正常使用了。但是感覺很不妥,我們一般儘量避免使用http或者

原创 使用RestTemplate進行http調用格式轉換問題

之前http調用都是自己封裝的HttpClients,比較麻煩。最近發現有新的API:RestTemplate可以直接調用接口,非常方便,省得自己封裝請求了。 開始使用: String url = targetInfoUrl +"?us

原创 數據庫查找數據的返回值問題

碼代碼的過程中,經常會遇到空指針的問題。今天重構代碼,發現對一個數據庫查詢操作的List類型的返回值進行操作時,從來沒有出現空指針異常,而我知道這個查詢的數據很大部分情況下在數據庫中並沒有記錄。既然沒有數據那List<Object>類型的

原创 lombok註解:@AllArgsConstructor 的一個異常

問題描述: 有以下實體類: @Data @ToString @AllArgsConstructor public class UpdateTargetInfoBean { @JsonFormat(pattern = "yyyy

原创 刪除mysql中的重複記錄只保留一條語句

DELETE FROM device_info WHERE mac IN ( SELECT * FROM ( SELECT mac from device_info GROUP BY mac

原创 SpringBoot異步註解@Async解析

        在寫一個綁定設備的接口,需要立即響應。但是有一個增加成長值的需求需要在這個綁定設備的接口中實現,該需求需要http調用其他項目的接口,比較耗時,同時這個需求不需要立即返回。因此,想到使用異步的方式實現該方法。於是開始研究@

原创 代碼實例理解線程池的配置屬性

1.合理利用線程池能夠帶來三個好處: 第一:降低資源消耗。通過重複利用已創建的線程降低線程創建和銷燬造成的消耗。 第二:可有效控制最大併發線程數,提高系統資源利用率,同時可以避免過多的資源競爭,避免阻塞。 第三:提供定時執行、定期執行、單

原创 getTime()獲取時間戳方法與時區有關

1.問題來源 測試的同事反饋說APP海外版本的時間與實際時間少了8個小時。於是開始排查問題,最後發現問題出在getTime()函數上。 數據庫裏存儲的數據是Date類型,我將Date類型通過getTime()方法轉換爲時間戳返回給APP顯

原创 使用Postman的Pre-request Script自動生成簽名

後端代碼一般都在網關裏設置了簽名算法,訪問接口時,需要傳簽名參數通過網關才能訪問這些接口。在使用postman進行接口測試時,可以使用Pre-request Script編寫js代碼完成簽名算法,進而完成接口的訪問。 下面舉個算法簽名的例

原创 @Value註解爲什麼不能直接爲靜態變量賦值

問題描述: @Value("${oss.endpoint}") private static String endpoint; 說明:oss.endpoint爲springboot配置文件application.properties中配