原创 BufferedReader的使用及源碼分析

學習更多源碼,請關注微信公衆號:jdkSpring ,或者微信掃一下二維碼:      BufferedReader是爲了提供讀的效率而設計的一個包裝類,它可以包裝字符流。可以從字符輸入流中讀取文本,緩衝各個字符,從而實現字符、數組和行的

原创 JDK源碼(二十二):ArrayList

java.util.ArrayList是實現List接口的可調整大小的數組實現。實現所有可選的列表操作,可以存儲所有類型元素,包括null。除了實現List接口之外,這個類還提供了一些方法來操作內部用於存儲列表的數組的大小。(這個類大致相

原创 認識一下阻塞隊列

阻塞隊列(BlockingQueue)是一個支持兩個附加操作的隊列。這兩個附加的操作是:在隊列爲空時,獲取元素的線程會等待隊列變爲非空。當隊列滿時,存儲元素的線程會等待隊列可用。阻塞隊列常用於生產者和消費者的場景,生產者是往隊列裏添加元素

原创 多線程之CAS淺析

CAS簡介 比較並交換(compare and swap, CAS),是原子操作的一種,可用於在多線程編程中實現不被打斷的數據交換操作,從而避免多線程同時改寫某一數據時由於執行順序不確定性以及中斷的不可預知性產生的數據不一致問題。該操作通

原创 word、pdf、excel在線預覽

關於word、pdf、excel在線預覽,想達到完美的效果可能只能花錢買現成的接口調用了,但是在github上有個kkFileView的項目倒是可以拿來用一下,但是這個項目存在着不小的bug: 1.預覽doc或者docx時會出現內容丟失。

原创 JDK源碼(二十三):Calendar

java.util.Calendar類是一個抽象類,它提供了在特定的時間戳和一組Calendar字段之間進行轉換的方法,例如年,月,日,小時等等,以及用於操作日曆字段的方法,比如下星期的日期。時間的戳可以用毫秒值表示,該值是從1970年1

原创 JDK源碼(二十四):HashMap

java.util.HashMap實現Map接口。此實現提供所有可選的映射操作,並允許null值和null鍵。(HashMap類大致等同於Hashtable,只是它不同步並且允許空值。)這個類不保證映射的順序;特別是,它不保證順序隨時間保

原创 JDK源碼(二十五):HashSet

java.util.HashSet實現了Set接口,由一個哈希表(實際上是一個HashMap實例)支持。它不保證集合的迭代順序;特別是,它不保證順序隨時間保持不變。這個類允許null元素。HashSet實現Set接口,而Set接口繼承

原创 JDK源碼(二十六):Hashtable

java.util.Hashtable實現了一個哈希表,存儲key-value。任何非null對象都可以用作鍵或值。要成功地從哈希表存儲和檢索對象,用作鍵的對象必須實現hashCode方法和equals方法。 Hashtable的實例有兩

原创 JDK源碼(二十一):ThreadLocal

ThreadLocal類並不是用來解決多線程環境下的共享變量問題,而是用來提供線程局部變量。這些變量與普通的變量不同,因爲每個訪問一個變量的線程(通過其get或set方法)都有自己的、獨立初始化的變量副本。ThreadLocal實例通常是

原创 JDK源碼(二十):Thread

進程 進程是資源(CPU、內存等)分配的基本單位,它是程序執行時的一個實例。程序運行時系統就會創建一個進程,併爲它分配資源,然後把該進程放入進程就緒隊列,進程調度器選中它的時候就會爲它分配CPU時間,程序開始真正運行。 線程 線程是程序執

原创 JDK源碼(十九):StringBuilder和StringBuffer

將StringBuilder和StringBuffer放在一起是因爲這2個類的代碼差不多,只是StringBuilder是線程不安全的,而StringBuffer是線程安全的。 當對字符串進行修改的時候,需要使用 StringBuffer

原创 JDK源碼(十八):String

字符串廣泛應用 在 Java 編程中,在 Java 中字符串屬於對象,Java 提供了 String 類來創建和操作字符串。 字符串常量池 作爲最基礎的引用數據類型,Java 爲 String 提供了字符串常量池以提高其性能。字符串常量池

原创 JDK源碼(十七):ClassLoader

顧名思義,類加載器(ClassLoader)用來加載 Java 類到 Java 虛擬機中。一般來說,Java 虛擬機使用 Java 類的方式如下:Java 源程序(.java 文件)在經過 Java 編譯器編譯之後就被轉換成 Java 字

原创 JDK源碼(十六):Field

java.lang.reflect.Field提供類或接口的單個字段的信息和動態訪問。反射字段可以是類(靜態)字段或實例字段。Field類提供了獲取和設置某個類的字段的屬性值。 在java.lang.Class獲取Field對象的方法總共