原创 死鎖的原理及避免死鎖的方法

死鎖 所謂死鎖,指的是兩個或兩個以上的進程在執行過程中,由於競爭資源或者由於彼此通信而造成的一種阻塞的現象,如果無外力作用,那麼它們都將無法推進下去。此時,稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的進程稱爲死鎖進程。

原创 ArrayList、Vector、LinkedList的異同點

ArrayList、Vector和LinkedList類相同點:都在java.util包中;都是可伸縮數組,即可以動態改變長度的數組;都是List接口的實現類,(List中)元素存放有序,可重複;不同點:ArrayList和Vector底

原创 回溯法與N皇后問題JAVA實現

提出問題八皇后問題:在8*8格的國際象棋上擺放8個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。如何解決這個問題?一種常用且有效的方法是回溯法,是用樹形結構描述問題的求解過程。什麼是回溯法回溯

原创 單例模式(Singleton)實現方式及比較——JAVA設計模式

單例模式:這種模式涉及到一個單一的類,該類自己創建一個且只創建一個自己的對象。這個類提供一種訪問其唯一對象的方式,可直接訪問,不需要再實例化。單例模式的幾種實現方式:懶漢式:到用的時候纔會實例化。(不推薦使用)線程不安全:缺點:多線程不安

原创 垃圾收集器與內存分配策略(深入理解Java虛擬機筆記(二))

參考資料:《深入理解Java虛擬機:JVM高級特性與最佳實踐》 周志明 著垃圾收集器(GC)概述垃圾收集器(Garbage Collection,GC)需要完成三件事:哪些內存需要回收?什麼時候回收?如何回收?GC管理的內存區域GC主要管

原创 堆排序原理及JAVA實現

選擇類排序基本思想:在第i趟的記錄序列中選取關鍵字第i小的記錄作爲有序序列的第i個記錄。關鍵:如何從剩餘的待排序列中找出最大或最小的那個記錄。堆排序是利用堆的性質對記錄序列進行排序的一種排序方法。堆排序是選擇類排序。堆的定義堆是滿足下列性

原创 工廠方法模式(Factory Method)——Java設計模式(二)

前言在上一篇簡單工廠模式(Factory)——Java設計模式中,提出簡單工廠模式存在以下幾個缺點:工廠類集中了所有具體產品類的創建邏輯,一旦這個工廠類不能正常工作,整個系統將會受到影響。違背“開閉原則”,一旦添加新產品,就必須修改工廠類

原创 簡單工廠模式(Factory)——Java設計模式(一)

簡單工廠模式簡介簡單工廠模式屬於創建型模式,又叫作靜態工廠方法模式,不屬於23種設計模式之一。但工廠方法模式是由它衍生出來的。簡單工廠模式:由一個工廠對象決定創建出哪一種產品類的實例。即,定義一個創建對象的接口,讓其子類自己決定實例化哪一

原创 HashMap和Hashtable的區別

Java爲數據結構中的映射定義了一個接口java.util.Map,它有三個實現類:HashMap、Hashtable和TreeMap。Map是用來存儲鍵-值對的數據結構,在數組中通過數組下標來對其內容進行索引,而在Map中,則是通過對象

原创 23種設計模式總述——Java設計模式(總述)

設計模式簡介設計模式(Design pattern)代表了最佳的實踐,通常被有經驗的面向對象的軟件開發人員所採用。設計模式是軟件開發過程中面臨的一般問題的解決方案。這些解決方案是衆多軟件開發人員經過相當長的一段時間的試驗和錯誤總結出來的。

原创 Java內存區域與內存溢出異常(深入理解Java虛擬機筆記(一))

參考資料:《深入理解Java虛擬機:JVM高級特性與最佳實踐》 周志明 著      因爲有虛擬機的自動內存管理機制,Java程序員不再需要爲每個new操作去寫配對的delete/free代碼(相對C/C++程序員),而且不容易出現內

原创 快速排序原理及JAVA實現

交換類排序基本思想:對待排序記錄的關鍵字兩兩進行比較,只要發現兩個記錄爲逆序就進行交換,直到沒有逆序的記錄爲止。(如果要將整個記錄序列調整爲遞增序列,那麼關鍵字之間是遞減關係即爲逆序。)快速排序基於分治策略思想。屬於交換類排序。分治策略基