原创 爲什麼String的hashCode選擇 31 作爲乘子

本文轉載自田小波的https://www.tianxiaobo.com/2018/01/18/String-hashCode-方法爲什麼選擇數字31作爲乘子/ 某天,我在寫代碼的時候,無意中點開了 String hashCode 方法。然

原创 Java8中findAny和findFirst的區別

試驗了一下java stream中的findAny和findFirst,發現都返回了列表中的第一個元素。那麼,這兩種方法的區別是什麼呢? 查看了一下Java API document: findFirst: findFirst Opt

原创 Spring boot cacheable源碼及默認配置

一. Spring boot cache原理 第一步. 自動配置類 ​自動啓動類:CacheAutoConfiguration 屬性配置:CacheProperties 主啓動類添加:@EnableCaching註解 cache  POM

原创 MySQL索引的更新策略

對於數據的每一次更新,MySQL並不會每次都會更新索引(針對非唯一性索引而言),索引的更新策略是這樣的: 在InnoDB中,增刪改都會立刻修改主鍵or唯一索引,但是不會rebuild全局索引,而是對這些索引增加值(或移除值)。 對於非唯一

原创 Spring Boot Cacheable的默認實現

StackOverFlow上有一個問題https://stackoverflow.com/questions/37780249/spring-boot-cachable-cache-size,提問者使用了Spring Boot的@Enab

原创 Spring註解執行的默認順序

對於同一個方法,上面加了n個註解,如下所示。 @AnnotationOne @AnnotationTwo public void test() { ……………………………… } 如果,不加order來強制表示順序的話,這2個註解執

原创 如何更加穩妥地做校驗

在工作期間,師兄教我一個更爲保險的校驗順序: 從JDK的AQS官方文檔上 https://bugs.openjdk.java.net/browse/JDK-6503247 可以看到: 如果是這樣處理異常的話: try { ...

原创 SpringBoot 自定義參數校驗

作者附:可以看JBOSS官方文檔:https://docs.jboss.org/hibernate/validator/4.2/reference/zh-CN/html/validator-customconstraints.html#v

原创 1元,5元,10元,20元,50元、100元面值人民幣組合給定x元的問題

問題描述 目前市面上的紙幣主要有1元,5元,10元,20元,50元、100元六種,如果要買一件商品x元,有多少種貨幣組成方式? 解答 我們先進行如下變量的定義: dp[i][sum] = 用前 i 種硬幣構成sum金額的所有組合數。

原创 詳解布隆過濾器的原理、使用場景和Java代碼示例

今天碰到個業務,他的 Redis 集羣有個大 Value 用途是作爲布隆過濾器,自己之前只是聽說過這個,但是沒深入瞭解過,趁這個機會補充一下知識。 在進入正文之前,之前看到的有句話我覺得說得很好: Data structures are

原创 Spring Cache Annotation 使用的注意點和小技巧

使用spring中的cacheable註解需要注意的點,列舉了如下: 默認Cache Key的注意點 對一個方法增加緩存是很簡單的一件事,只需要簡單加上@Cacheable註解就OK了。 @Cacheable(value = "rese

原创 如何在Java註解中放一個list

示例如下: public @interface CustomAnnot { String[] author() default "me"; String description() default ""; } 用這個註解

原创 對含有null的List進行findAny會報Null Pointer錯誤

做了一個實驗: List<String> list = new ArrayList<String>(); list.add(null); list.add(null); Optional<String> result = list.st

原创 使用Spring Cache Annotation時如何不緩存空值

在插入緩存時,會有<key,value>,我們希望value=null時,不要存入緩存,怎麼實現呢? 使用 unless="#result == null"註解就可以,代碼示例如下: @Cacheable(value="defaultC

原创 Java的DateTimeFormatter/SimpleDateFormat如何轉義特殊字符

對於JAVA中的 DateTimeFormatter,或者主要是爲了日期能夠格式化地生成字符串,比如可以使用 yyyy-MM-dd HH:mm:ss 來生成 2019-10-16 21:00:16 這種格式的字符串。 這裏有一個需求,希望