原创 python腳本導出Elasticsearch數據到csv文件

以下是個導出es數據到csv文件的簡單腳本,腳本簡單易懂,主要解決了兩個問題: Elasticsearch數據含中文寫入csv文件會亂碼 unicode編碼的中文數據寫入csv文件會亂碼 from elasticsearch impor

原创 Swagger添加BasicAuth和OAuth2.0認證

一個沒有添加認證的swagger配置類大概長這樣 @Bean public Docket docket() { return new Docket(DocumentationType.SWAGGER_2).host(sw

原创 SpringBoot實現Mysql百萬級數據量導出並避免OOM的解決方案

  前言 動態數據導出是一般項目都會涉及到的功能。它的基本實現邏輯就是從mysql查詢數據,加載到內存,然後從內存創建excel或者csv,以流的形式響應給前端。 參考 https://grokonez.com/spring-framew

原创 Java8日期格式化

Java8之前的版本,格式化日期常使用SimpleDateFormat,但這個類並不是線程安全的,通常要用作局部變量或者使用ThreadLocal包裝。或者使用額外的joda time 依賴來對日期進行操作。 但是到了Java8,這類煩惱

原创 ElasticSearch 2.4.X實現中文拼音排序

前言 最近接到一個需求,要求實現搜索框的搜索結果可以按照中文排序,本人靈機一動,那不很簡單嗎,直接按照es自帶的sort功能處理下不就行了嗎?兩分鐘的代碼量,半天的喝茶時間,白賺半天的故事點,嘿嘿。 然而問題纔剛剛開始,多次測試結果表明,

原创 git提示文件有修改但實際文件無修改解決方案

某天快快樂樂的編程中,發現項目的部分文件提示版本有變更,但通過git比較發現文件實際上無任何改動。 捉摸不定之際,忽然想起來最近好像修改了項目文件夾的權限,根據這個思路找到了靠譜的解決方案。 即通過通過設置git config下core.

原创 Java將對象寫入Excel文件

本文通過poi依賴實現將java對象寫入excel之中,核心理念是通過反射獲取Java對象的getter方法和屬性,通過getter方法獲取要寫入excel中的值,再通過屬性上的自定義註解獲取excel標題行,然後以文件流的方式寫入exc

原创 JPA何時必須使用@Param註解

最近JPA踩坑,使用自定義的@Query報出下面的異常: org.springframework.dao.InvalidDataAccessApiUsageException: For queries with named paramet

原创 Java獲取指定字符串在另一個字符串中的出現次數

百度發現很多答案都是錯誤的,全是相互抄襲,也不經過驗證就放出來,這裏提供正確的搜索算法。 方案一,使用KMP算法,KMP算法是一種改進的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人們稱它爲克

原创 線上k8s環境swagger2調用接口失敗

最近後端項目集成了swagger2,瀏覽器正常打開了swagger-ui.html,但是調用接口時卻報404錯誤,仔細一看是接口調用地址和瀏覽器訪問地址並不相同。 分析了下接口調用地址的host,它竟然是k8s環境中的後端應用的serv

原创 swagger-ui.html頁面無法打開解決方案

最近項目集成swagger2,結果本地swagger-ui.html可以打開,但是線上環境卻無法打開。倒騰了一番終於解決問題,總結了以下幾個解決方案: 1.@EnableWebMvc註解必須去掉! 2.請實現WebMvcConfigure

原创 SpringBoot實現單元測試時回滾事務

SpringBoot跑個單元測試只需要在測試類加兩個註解就行了。 @RunWith(SpringRunner.class) @SpringBootTest 然而這樣的單元測試默認是提交事務的,一般的場景下都是要對事務進行回滾的。要支持回

原创 使用MockMvc來代替RestTemplate對Controller進行單元測試

對Controller進行單元測試可以通過RestTemplat發送一個http請求來實現。也可以通過MockMvc來實現,二者還是有很大區別的,參考Difference between MockMvc and RestTemplate

原创 ElasticSearch實現中文拼音排序

前言 最近接到一個需求,要求實現搜索框的搜索結果可以按照中文排序,本人靈機一動,那不很簡單嗎,直接按照es自帶的sort功能處理下不就行了嗎?兩分鐘的代碼量,半天的喝茶時間,白賺半天的故事點,嘿嘿。 然而問題纔剛剛開始,多次測試結果表明,

原创 Java生成滿足正則表達式的隨機密碼

生成隨機密碼,密碼至少要包含 大寫字母,小寫字母,數字,特殊字符四者中的三種組合,並且要滿足線程安全。代碼如下: public class PasswordGenerator { private static final Stri