原创 StringBuffer和String常量累加效率比較

1.對於常量字符串的累加,由於Java在編譯時就可以確定字符串的取值,在編譯時就進行了計算,合成了一個單獨的長字符串,運行時的執行效率要高於StringBuilder。 2.對於編譯時無法確定取值的字符串,Java使用StringBuil

原创 求兩個字符串的最長公共子序列(DP實現)

算法原理 用二維數組c[i][j]記錄串x1x2⋯xi與y1y2⋯yj的LCS長度,則可得到狀態轉移方程 如果某一個字符串長度爲0,則公共子序列長度爲0; 如果字符串長度都不爲0,如果xi=yj,那麼公共子序列長度爲兩個字符比較之前的公

原创 高效數組複製方法arrayCopy()

JDK中提供了一個高效的API來實現數組複製。 public static native void arraycopy(Object src, int srcPos,

原创 位圖應用,原理和性能分析

1.應用 在平時的開發過程中,會有一些bool型數據需要存取,比如用戶一年的簽到記錄,簽了是1,沒簽是0,要記錄365天。如果使用普通的key/value,每個用戶要記錄365個,當用戶數上億時,需要相當大的存儲空間。 Redis提供了位

原创 Hyperloglog應用、原理和性能分析

1.應用 Hyperloglog提供不精確的去重計數方案,如統計一個網站的UV(獨立訪客數),同一個用戶一天之內的多次請求只能計數一次,如果使用set集合來統計的話,會非常浪費存儲空間。 雖然不精確但是也不是非常不精確,標準誤差是0.81

原创 布隆過濾器應用,原理和性能分析

1.應用 布隆過濾器用於判斷某一個值是不是已經存在。比如我們在使用新聞客戶端看新聞時,它會給我們不停地推薦新的內容,而它每次推薦時都要去重,以去掉那些我們已經看過的內容。 布隆過濾器是專門用來解決這種去重問題的,它在起到去重作用的同時,在

原创 分割字符串同時去除所有空白字符

假設獲取到的id列表是以英文逗號分割的,獲取id列表需要去除其中包含的空白字符,可以用下面的語句 String[] channelIds = request.getChannelIds().replaceAll("\\s*", "").

原创 jackson-databind升級2.7版本到2.10.0

1.直接修改jackson-databind的版本號爲2.10.0 啓動報錯,找不到類。 2.升級版本號同時加上jackson-core依賴 <dependency> <groupId>com.fasterxml.jackson.

原创 位圖,Hyperloglog和布隆過濾器對比

項目 場景 實現原理 缺陷 誤差分析 內存分析 實踐應用 位圖 有一些bool型數據需要存取,比如用戶一年的簽到記錄,簽了是1,沒簽是0,要記錄365天。如果使用普通的key/value,每個用戶要記錄3

原创 Java的IntegerCache

本文將介紹 Java 中 Integer 緩存的相關知識。這是 Java 5 中引入的一個有助於節省內存、提高性能的特性。首先看一個使用 Integer 的示例代碼,展示了 Integer 的緩存行爲。接着我們將學習這種實現的原因和目的。

原创 效率更高的字符串分隔方法

StringTokenizer類是JDK中提供的專門用來處理字符串分隔子串的工具類,處理效率高於split。 典型的構造方法: 其中str是要分割處理的字符串,delim是分割符號。可以使用nextToken()或者nextElemen

原创 java api中關於進制轉換的函數

//十進制轉成十六進制:Integer.toHexString(n1);//十進制轉成八進制Integer.toOctalString(n1);//十進制轉成二進制Integer.toBinaryString(12);//十六進制轉成十進

原创 Java中的自動裝箱與拆箱

自動裝箱和拆箱從Java 1.5開始引入,目的是將原始類型值轉自動地轉換成對應的對象。自動裝箱與拆箱的機制可以讓我們在Java的變量賦值或者是方法調用等情況下使用原始類型或者對象類型更加簡單直接。如果你在Java1.5下進行過編程的話,你

原创 java.util.List的subList方法

List<E> subList(int fromIndex, int toIndex); 返回數組中下標範圍爲[fromIndex, toIndex)的列表。 當fromIndex==toIndex==數組長度時,返回空列表。 當ind

原创 遍歷列表的三種方法

JDK1.5之後,遍歷列表操作至少有三種方法:ForEach操作,迭代器和for循環。 使用方法如下: String[] strs = new String[]{"1", "2", "3"}; List<String> list = A