原创 二叉樹算法解題思路總結(二)
第一步:先考慮用遞歸的方式解決問題,注意遞歸的終止條件。有的遞歸需要用到回溯法和全局變量 第二步:如果遞歸無法解決問題,考慮迭代法,具體的迭代方式參考層序遍歷和非遞歸遍歷 本篇文章主要介紹迭代法,題目來自leetcode和牛客網
原创 鏈表算法解題思路總結
解題思路 啞結點+雙指針 啞結點:在一個鏈表的前邊添加一個結點 雙指針:(1)快慢指針(2)前驅指針和工作指針 題目來自leetcode和牛客網的劍指offer 一、刪除結點 1.刪除鏈表中的結點:leetcode237 思路分析
原创 線程池的參數詳解
一、ThreadPoolExecutor的方法說明 爲了方便測試,先學習一下相關的方法 1.繼承關係 Executor是一個頂層接口,在它裏面只聲明瞭一個方法execute(Runnable),返回值爲void,參數爲Runna
原创 ThreadLocal應用及原理
1.如何創建ThreadLocal 構造函數如下所示 // 1. 直接創建對象 private static ThreadLocal myThreadLocal = new ThreadLocal() // 2. 創建泛型對象
原创 阻塞隊列的原理
一、什麼是阻塞隊列 阻塞隊列(BlockingQueue)是一個支持兩個附加操作的隊列。 這兩個附加的操作是:在隊列爲空時,獲取元素的線程會等待隊列變爲非空。當隊列滿時,存儲元素的線程會等待隊列可用。 常見的有以下幾種 (1)Ar
原创 Java實現二叉樹的遍歷(遞歸和非遞歸)
現有一顆如下圖所示的二叉樹 一、基本概念 (1)先序遍歷(深度優先遍歷): 前、中、後這三個詞是針對根節點的訪問順序而言的 先訪問根結點,再訪問左子結點,最後訪問右子結點。 圖中的二叉樹的先序遍歷的順序是1 2 4 8 9 5
原创 二叉樹算法解題思路總結(一)
第一步:先考慮用遞歸的方式解決問題,注意遞歸的終止條件。有的遞歸需要用到回溯法和全局變量 第二步:如果遞歸無法解決問題,考慮迭代法,具體的迭代方式參考層序遍歷和非遞歸遍歷 本篇文章只介紹第一步相關的內容,題目來自leetcode
原创 java中compareTo和compare方法之比較
這兩個方法經常搞混淆,現對其進行總結以加深記憶。 1. compareTo(Objecto)方法是java.lang.Comparable<T>接口中的方法,當需要對某個類的對象進行排序時,該類需要實現Comparable<
原创 關於樹的面試題
1.完全二叉樹與滿二叉樹: (1)滿二叉樹:要麼是葉子結點(結點的度爲0),要麼結點同時具有左右子樹(結點的度爲2)。 (2)完全二叉樹:除了最後一層以外,每層結點都完全填滿,在最後一層上如果不是滿的,則只缺少右邊的若干結點。
原创 java併發面試題
1. 線程與進程的區別 (1)進程是具有一定獨立功能的程序,是操作系統進行資源分配和調度的一個獨立單位; 線程是進程的一個實體,是CPU調度和分派的基本單位,是比進程更小的能獨立運行的基本單位。 (2)進程是執行着的應用程序,而線程是進程
原创 哈希表
1.什麼是哈希表: 元素是鏈表的數組 Hash Table,也叫散列表,是根據關鍵碼值(Key Value)而直接進行訪問的的一種數據結構。也就是說,它通過把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找速度。這個函數叫做散列函數,存放
原创 FileReader和BufferedReader的區別
1.FileReader不能一行行讀,BufferedReader可以一行行地讀 2.BufferedReader可以一行行地讀效率高,因爲減少了IO的次數
原创 Spring常見面試問題
以下爲spring常見面試問題: 1、什麼是Spring框架?Spring框架有哪些主要模塊? Spring框架是一個爲Java應用程序的開發提供了綜合、廣泛的基礎性支持的Java平臺。 Spring幫助開發者解決
原创 TCP、UDP、IP 協議分析
互連網早期的時候,主機間的互連使用的是NCP協議。這種協議本身有很多缺陷,如:不能互連不同的主機,不能互連不同的操作系統,沒有糾錯功能。爲了改善這種缺點,大牛弄出了TCP/IP協議。現在幾乎所有的操作系統都實現了TCP/IP協議棧。 T
原创 Java搞定面試中的二叉樹題目
package BinaryTreeSummary; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList