原创 Java NIO 實現網絡通信

Java NIO 的相關資料很多,對 channel,buffer,selector 如何相關概念也有詳細的闡述。但是,不親自寫代碼調試一遍,對這些概念的理解仍然是一知半解。即使代碼跑起來,也不見得有多懂這些概念,因爲只是膚淺的嘗試,但膚淺

原创 Java NIO 之 FileChannel

從 JDK1.4 開始(2002 年發佈的),Java 提供了 NIO ,主要包含在 java.nio 軟件包及其子包中,並被命名爲 New I/O(NIO)距今已經十幾年了,其實已經算不得新了。Java NIO 網上有很多詳細的文檔和書籍

原创 Map 類集合鍵值對是否可空?

集合類KeyValueSuper說明Hashtable不允許爲 null不允許爲 nullDictionary線程安全ConcurrentHashMap不允許爲 null不允許爲 nullAbstractMap分段鎖技術TreeMap不允許

原创 Java 創建線程有哪幾種方法

1. 繼承 Thread 類,然後調用 start 方法。 Javaclass SampleThread extends Thread { //重寫run方法,線程運行後,跑的就是run方法  public void run

原创 Java 中如何判斷數組中是否包含某個值?

有 4 種方法1. 使用 List Javapublic static boolean useList(String[] arr, String targetValue) { return Arrays.asList(arr).contai

原创 Java 的 NIO 是如何工作的?

在這個數據爆炸的時代,有大量的數據在系統中流動,一個應用系統的瓶頸往往都是 IO 瓶頸。傳統的 javaIO 模型是 BIO,也就是同步阻塞 IO,數據在寫入 OutputStream 或者從 InputStream 讀取時,如果沒有數據沒

原创 Spring Expression Language(SpEL)速查指南

Spring Expression Language(SpEL)是一種表達式語言。它能在運行時通過構建表達式、存取對象的屬性值或者調用對象的方法等操作。SpEL 支持如下的運算操作:運算類型操作符算數運行+, -, *, /, %, ^,

原创 深拷貝和淺拷貝的區別是什麼,如何實現?

深拷貝是徹底的拷貝,兩對象中所有的成員都是獨立的一份,而且,成員對象中的成員對象也是獨立一份。淺拷貝中的某些成員變量可能是共享的,深拷貝如果不夠徹底,就是淺拷貝。下圖就是一個徹底的深拷貝,每一個成員都有一份對應的拷貝:而下面這個圖是淺拷貝,

原创 Java 中,什麼是字符串的不可變性?

字符串的不可變性是指字符串一旦被創建,就會在堆上生成這個字符串的實例,並且不可被改變,任何方法都不會改變字符串本身,而只會創建一個新的字符串。 JavaString s = "abcd"; s = s.concat("ef");12Stri

原创 Java 8 對線程池有哪些改進?

Java8 中,默認創建線程池的方法多了一個——Executors.newWorkStealingPool(),newWorkStealingPool 的文檔描述:“Creates a work-stealing thread pool u

原创 線程的 yield 方法有什麼用?

單詞 yield 有一箇中文意思是車輛或行人的讓行,線程中的 yield 也是這個意思,表示該線程主動失去 CPU 調度,進入就緒狀態,讓優先級更高的線程先運行。這只是一種策略,至於 CPU 是否真的去找一個更高優先級的線程去運行,則依賴於

原创 Java 內存模型簡述

Java 內存模型是面試官最喜歡問的問題之一。Java 內存在邏輯功能上分成 5 個區。方法區,堆區,JVM 棧,方法棧,程序計數器(PC 寄存器)。其中方法區,堆區是所有線程都共享的。JVM 棧,方法棧,程序計數器(PC 寄存器)是每個線

原创 Java 中 Comparable 和 Comparator 有何不同?

Comparable 和 Comparator 都有比較的含義,那麼他們之前有什麼區別?1.ComparatorComparator 是一個接口,一個類如果實現了這個接口,必須實現 compareTo 方法,也就是意味着這個類的實例之間可以

原创 synchronized 關鍵字的用法?

如果面試問到這個題目,那麼就可以竊喜了,因爲太簡單了,只要寫過多線程代碼的人,肯定用到過 synchronized 關鍵字。我把答案總結在這裏,背誦一下就可以了。synchronized 關鍵字表示了 Java 的一個實現同步的鎖,線程進入

原创 Spring 中的感知接口

Sring 中有一個 Aware 接口,並且有許多子接口繼承於它。如其名字一樣,實現這種接口的 Bean,能自身感知到容器的存在,容器在操作 Bean 的過程中,會調用感知接口中的方法。Spring 設計的這些接口,等於埋下了很多鉤子函數,