原创 java實現排序(2)-冒泡排序

引言 也許冒泡排序,一個剛出大學的的程序員可能寫的出來,反而工作了幾年的老程序員可能會寫不出來,你還寫的出來麼?在本篇博文中,詳細介紹了冒泡排序的概念,同時用數組和雙向鏈表來實現,附帶一種通俗的優化方法。筆者目前整理的一些blog

原创 java實現(3)-堆

引言 堆,我們一般作爲二叉堆的一種總稱,它是建立在二叉樹之上的。在本篇博文中,會詳細介紹堆的結構和原理,以至於寫出堆的實現。在代碼實現中我們主要是針對於插入和刪除做一些操作,在刪除中我們只考慮刪除最小的,而不涉及更深一步的操作。筆

原创 java實現(2)-AVL樹

引言 在上一篇博文中,介紹了二叉查找樹。在二叉查找樹的基礎上,深入研究一下AVL樹,並用代碼實現核心模塊:插入和刪除。在本篇博文中主要詳細介紹了AVL樹的平衡概念,同時介紹解決平衡問題的旋轉問題。在實現代碼部分詳細介紹在插入的時候

原创 JDK1.8源碼逐字逐句帶你理解LinkedHashMap底層

引言 關於java中的不常見模塊,讓我一下子想我也想不出來,所以我希望以後每次遇到的時候我就加一篇。上次有人建議我寫全所有常用的Map,所以我研究了一晚上LinkedHashMap,把自己感悟到的解釋給大家。在本篇博文中,我會用一

原创 java實現排序(1)-插入排序

引言 排序模塊會把所有的排序算法都整理一遍,方便自己以後回身學習。在本篇博文中主要介紹了時間複雜度爲O(N^2)的插入排序算法,並用demo進行實現。不過在開始之前需要學習一些基礎的數學知識,希望對大家有所幫助。筆者目前整理的一些

原创 java I/O系統(4)-RandomAccessFile類

引言 RandomAccessFile類是在java.io中的一個工具類,它獨立於字符流與字節流之外,自成一派。它的核心功能就是random功能。他可以隨機訪問到文件的任意位置的資源,對於超大文件的局部修改有很大的幫助。在本篇博文中詳細介

原创 JDK1.8源碼逐字逐句帶你理解HashMap底層(1)

引言: 自己在學習這個東西的時候,發現網上很多關於HashMap底層介紹的文章基於的jdk版本比較低。因爲我對比之後發現編碼風格有了比較大的改變。而且,今天我想嘗試一種很通俗的方式來嘗試記錄這次的學習。在本文中我主要整理了HashMap類

原创 GC-談談“生死”

引言: 今天週六,技術博客不會斷更。今天想和大家聊聊“生死”。有研讀過jvm的小夥伴們知道java相比於c++來說,內存動態分配和垃圾回收技術是兩大核心。一個對象的出生由我們來創造,但是對象的死亡很多時候並不由我們決定,而是由垃圾回收技術

原创 java實現排序(6)-快速排序

引言 快速排序,作爲一個編程人員來說,肯定都是接觸過的。那麼,你還記得怎麼去實現麼,怎麼優化呢?在本篇博文中,會詳細介紹快速排序的過程,對於不是唯一的過程(可變或者可選),我們討論各種優化的方法。筆者目前整理的一些blog針對面試都是超高

原创 JDK1.8逐字逐句帶你理解ConcurrentHashMap(3)

引言 這篇是介紹ConcurrentHashMap的第三篇,第一篇主要介紹了在jdk1.8中所用到的一些關鍵知識點,第二篇主要學習了ConcurrentHashMap的組織結構與線程安全的實現,同時介紹了幾個極其重要的內部類。這一篇主要是

原创 JVM你必需知道的基礎

引言: 昨天寫了一篇關於java中對象生死的問題,主要目的是想讓大家感覺一下我所感受到的東西:其實jvm也非常有意思,甚至對象的創建與消亡都可能觸動你的心絃。所以,今天我打算深入學習一下jvm必要基礎(上一篇博文也略有涉及),主要介紹一下

原创 JDK1.8逐字逐句帶你理解ConcurrentHashMap

引言: 在前幾篇博文中我詳細介紹了HashMap的底層實現原理,後來我接連寫了三天JVM和GC的一些知識,那些知識偏向於理論。今天換點口味,和大家一起研究學習一下ConcurrentHashMap的底層實現,因爲jdk1.8在HashMa

原创 java面試算法題(1)

引言 本篇博文中核心介紹的是一些java很精闢的運算符操作,包含一些獨特的思維。在面試的過程中,也可能會遇到這些問題。筆者在阿里巴巴的電話面試過程中就遇到這樣的一個問題。分享給大家。 題目 給出一組整形(int)數組,在這個數組中只有一個

原创 java I/O系統(9)-對象序列化與還原

引言 萬物皆對象,在我們程序運行中,對象只要在引用鏈上存在引用,那麼它就會一直存在。但是當我們程序結束的時候,那麼對象就會消亡。那麼在jvm不運行的時候我們仍能夠保存下來是非常有意義的,在java中可以用序列化來實現。序列化其實也是IO系

原创 GC-垃圾收集算法與關鍵收集器

引言: 在筆者的上兩篇博文中,主要介紹了jvm的結構和對象的“生死”問題。今天主要來說說垃圾收集算法與各種關鍵的收集器,分析比較各種收集算法的優劣。如果時間和篇幅允許的話對內存動態分配做一些解釋,因爲垃圾回收和動態分配是java的兩大基本