原创 單元測試—— Spring @Scheduled

系列文章 《單元測試—— Mock 對象行爲之 Mockito》 《單元測試—— Spring 環境下測試之 SpringJUnit4ClassRunner》 《單元測試—— 強大的 PowerMock》 Maven依賴 <de

原创 多線程競爭執行,誰先跑完用誰?

       做性能優化時,遇到一些跨不過的坎,如果能夠繞過問題本身來解決該問題也是不錯的選擇。本人在做 MongoDB 聯合查詢時,遇到了性能瓶頸,使用 MongoDB 內部聯合查詢時 Mongo竟然不會使用索引,效率低下,不得采用數據

原创 Collection 刪除元素的高效寫法

        Collection 如果使用 foreach 來刪除會拋 ConcurrentModificationException 異常,檢查併發修改。即在 foreach 迭代的過程中修改Collection 是不被允許的,因此

原创 卸載動態庫DLL(Dynamic Link Library)

       在給熱部署系統熱加載資源時,如果不掌握對象和資源的生命週期,系統運行時很容易產生一些意想不到的錯誤。從Jar 加載到系統中,到被替換,不同的資源生命週期是不一樣的。        首先是對象,如果一個對象沒有手動的丟棄,那麼

原创 非關係型數據庫MongoDB聯合查詢解決方案

前言         關係型數據庫的使用有一套數學理論支撐,數據庫表結構優化其實質就是優化範式。通常在關係型數據庫中使用的第三範式。然而,在非關係型數據庫中,使用第二範式更能夠發揮非關係型數據庫中的優勢。         第二範式需要滿足

原创 Map 家族

Map 實現類 線程安全否 自然排序 Key的底層結構 Key是否可爲null 特性 HashMap 否 無序 數組+(鏈表或者紅黑樹) 是 hash(null) = 0; 因此,map.get(null) 是有值的 查詢快,O(

原创 @Target 的ElemenType釋義

Element 應用類型 釋義  ElementType.TYPE 類 Can be applied to any element of a class ElementType.FIELD 成員變量 Can be applied to a

原创 不同的進製表示轉換十進制

進制 Java表示方式 例子 轉10進制的方式 轉10進制的結果 16進制 0x**** 0xABC C * 10^0 + B * 10^1 + A * 10^2 96768 8進制 0**** 017 7 * 8^0 + 1 * 8^1

原创 可變參數如果傳入基本類型數組會怎麼樣?

可變參數如果傳入基本類型數組,JVM會當整個數組當做一個參數來處理。如果傳入的是封裝類型的數組,那麼數組中內容會被拆分成多個參數傳入方法。代碼如下:  public static void main(String[] args)

原创 Java獲取UTC時間

工具:joda-time Mvn: <!-- https://mvnrepository.com/artifact/joda-time/joda-time --> <dependency> <groupId>joda-time<

原创 Lombok 看這篇就夠了

前提 自從進公司實習後,項目代碼中能用 Lombok 的都用了,畢竟這麼好的輪子要充分利用好。也可以減少一些 get/set/toString 方法的編寫,雖說 IDEA 的插件可以自動生成 get/set/toString 方法,但是使

原创 Java 8 Stream的性能到底如何?

原文鏈接:https://www.hollischuang.com/archives/3364 之前的文章中我們介紹了Java 8中Stream相關的API,我們提到Stream API可以極大

原创 Java 8中處理集合的優雅姿勢——Stream

原文鏈接:https://www.hollischuang.com/archives/3333        在Java中,集合和數組是我們經常會用到的數據結構,需要經常對他們做增、刪、改、查、

原创 MongoDB 使用 count 帶來的分頁問題與應對措施

       count 在MongoDB 存在着不小的問題,對比關係型數據庫,無固定結構的數據存儲對 count 函數存在着天然的缺陷,在大量數據情況下,count 函數計算非常慢,這對分頁查詢產生了不小的影響。        毫無疑問

原创 爲什麼不推薦使用Spring @Scheduled 中的 Cron 表達式

原因:        Spring @Scheduled 使用非常方便,你只需要在指定執行定時任務的方法上添加 @Scheduled 註釋即可,但是在最近用 @Scheduled 使用 Cron 表達式時,出現了大問題,問題如下: