原创 設計模式之單例模式

回顧概念: Java中單例模式是一種常見的設計模式,單例模式的寫法有好幾種,我在這裏主要介紹兩種:懶漢式單例和餓漢式單例。   單例模式有以下特點:   1、單例類只能有一個實例。   2、單例類必須自己創建自己的唯一實例

原创 平衡二叉樹的插入旋轉

平衡二叉樹定義(AVL樹)  平衡二叉樹是在二叉排序樹(BST)上引入的,就是爲了解決二叉排序樹的不平衡性,而不平衡性又是時間複雜度增大的主要原因。  例如:數組a=[12,24,37,45,53,93]建立二叉排序樹爲下圖所示

原创 class對象詳解

我們知道,對於java語言,我們一般先寫一個類對象,表示對某一類對象概述,其中包括屬性,方法等。我們在對類對象編譯時,會產生一個.class對象,jvm在加載類對象時,是加載.class 對象文件,我們一般實例化對象,也就是 new對象時

原创 每次啓動懂maven項目都必須關閉javaw.exe進程

最近幾天一致在搞配置問題,今天總於解決了。下面說問題: 我發現我每次配置完maven build的goals運行,總是會出現TOMCAT綁定接口問題,我做的方法就是不斷地關掉JAVAw.exe進程。但這不是根本。最終被我解決了,是因爲ec

原创 Cannot convert 0 of type class java.lang.Integer to class java.lang.Boolean

org.apache.catalina.core.ApplicationDispatcher invoke SEVERE: Servlet.service() for servlet jsp threw exception javax.e

原创 Thread.interrupt()方法理解

原博客地址: 多線程編程 實戰篇 (四) 不客氣地說,至少有一半人認爲,線程的”中斷”就是讓線程停止。 如果你也這麼認爲,那你對多線程編程還沒有入門。 在java中,線程的中斷(interrupt)只是改變了線程的中斷狀態,至於這個中

原创 Volatile和Synchronized對可見性和原子性的支持

在學習併發編程的時候,遇見了volatile和synchronized關鍵字問題,volatile是可以保證可見性,但無法保證原子性,synchronized關鍵字由於其是加鎖機制,肯定是可以保證原子性的。但是它能保證可見性嗎?也就是說被

原创 解壓字符串

題目: 某位程序員想出了一種壓縮字符串的方法,壓縮後的字符串如下:3{a}2{bc}, 3{a2{c}},2{abc}3{cd}ef,現在需要你寫出一個解壓程序,還原原始的字符串,如: s=“3{a}2{bc}”return “aaa

原创 ConcurrentHashmap中的size()方法簡單解釋

本文所有的源碼都是基於JDK1.8 ConcurrentHashmap中的size()方法源碼: public int size() { long n = sumCount(); return ((n <

原创 Java-break,continue,return用法

當年的我也算是基礎小王子,但是長時間的不用導致我與他們越來越陌生了,所以我要把他們記在我的本本上。 首先我們要明白,java中到底有多少個循環關鍵字? 答:沒錯,就是3個,他們分別是:for(初始值;條件變量;增量),do{}…whi

原创 堆排序—Java

堆排序: 一棵完全二叉樹,如果父節點的值大於等於左右節點的值,則稱此完全二叉樹爲小根堆(小頂堆);如果父節點的值小於等於左右節點的值,則次完全二叉樹爲大根堆(大頂堆)。 堆排序是建立在大頂堆或小頂堆的基礎上的,通過不斷的交換堆頂元素和堆

原创 Java中的檢查異常和未檢查異常

已檢查異常,指的是一個函數的代碼邏輯沒有錯誤,但程序運行時會因爲IO等錯誤導致異常,你在編寫程序階段是預料不到的。如果不處理這些異常,程序將來肯定會出錯。所以編譯器會提示你要去捕獲並處理這種可能發生的異常,不處理就不能通過編譯。 就比如

原创 java private修飾的類和變量

private主要用來修飾變量和方法,一般不會用來修飾類,除非是內部類。 1.new對象 被private修飾的變量和方法,只能在自己對象內部使用,其他對象即使是new你這個對象也是獲取不到被private修飾的變量以及方法的。 pu

原创 HashMap和ConcurrentHashMap流程圖

本文表達HashMap和ConcurrentHashMap中的put()方法的執行流程圖,基於JDK1.8的源碼執行過程。 HashMap的put()方法: ConcurrentHashMap的put()方法: final V pu

原创 static和final修飾方法

static修飾的方法是靜態方法,所有的對象共用一份,也就是共享方法。static方法是可以被繼承,然後可以被重寫和重載。 final修飾的方法是不可變方法,final方法所在類被繼承時,被final修飾的方法是不能被重寫的,但是可以重載