原创 二叉樹算法解題思路總結(二)

第一步:先考慮用遞歸的方式解決問題,注意遞歸的終止條件。有的遞歸需要用到回溯法和全局變量 第二步:如果遞歸無法解決問題,考慮迭代法,具體的迭代方式參考層序遍歷和非遞歸遍歷 本篇文章主要介紹迭代法,題目來自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