原创 算法面試題:求最小的k個束/求數組中最小的k個數

利用快速排序的思想,找到中樞值爲k,k之前的都比它小,k之後的都比它大: java實現 public static int partition(int[] arr, int low, int high) { int pivotValue

原创 使用Lock實現多線程同步

Java JDK1.5增加了一個新特性Lock和Conndition接口,Lock對象代替了synchronized同步代碼,將同步代碼快中的鎖對象換成了Condition對象。 一個同步代碼塊只有一個鎖對象對應,如果需要兩個鎖對象的話就

原创 設計模式(bridge模式,Adapter模式,Observe模式,Template模式)

android中讀取位圖bitmap時,分給虛擬機圖片的堆棧8M的大小,很容易發生OutOfMemory異常 1, bridge模式:將抽象和實現分

原创 單例模式的線程安全問題

單例模式有兩種: 惡漢和懶漢模式. 其中懶漢模式是一種延遲初始化的方式,使用對象的時候才初始化,但是在多線程中會出現安全問題,如果我們加上同步鎖的話,會影響性能問題, 因爲每次都要判斷同步鎖,這個時候可以在同步鎖外面加一個判斷此對象是否存

原创 如何遠程訪問linux服務器的Desktop

如果我們使用雲主機的話,一般使用SecureCRT的終端軟件直接可以訪問linux服務器,但是我們想啓動圖形化界面的程序的話,就希望 能訪問服務器的Desktop,我使用的是centos 6.5系統: yum groupinstall "

原创 Merge Two Sorted Lists

Node merge(Node head1, Node head2) { if(head1==null) return head2; if(head2==null) return head1; Node p1 = hea

原创 鏈表常見面試題

1, 給定一個單鏈表,檢查是否有環:定義兩個指針fast,slow,步長分別爲2和1,從頭指針開始,如果相遇了,就說明存在環,否則不存在 1)如何知道環的長度:從第一次碰撞點開始,fast,slow指針開始走,再次相遇所走過的操作數就是環

原创 線程死鎖

爲了避免多線程訪問共享資源是會加上同步鎖,避免安全問題,但是加了同步鎖可能導致死鎖. 發生死鎖的原因: 1, 同步代碼塊內嵌套了同步代碼快 2, 並且他們的鎖對象不一樣 例如: class DeadLocker implements R

原创 集合類框架用法小結

存儲對象的方式兩種:數組和集合。數組長度固定,只能存儲類型相同的對象;集合可以存儲不同類型的對象。 集合框架大致可以分爲Map和Collection接口。 Map和Collection的區別: 1,  Map是鍵值對 2,  Ma

原创 深度優先和廣度優先

深度優先:類似二叉樹的先根遍歷,需要藉助棧和一個數組記錄是否訪問過來實現。 實現思想: 1, 訪問一個未被訪問的相鄰節點,將該節點壓棧,並標記已訪問,尋找該節點相鄰的未被訪問的節點 2, 如果找到,將該節點壓棧,並標記已訪問;如果沒有找到

原创 常用排序方法

  排序方法 時間複雜度       平均情況 最壞情況 最好情況 空間複雜度 穩定性 複雜性 Bubble O(n*n) O(n*n) O(n) O(1) 穩定 簡

原创 java中什麼時候加載類

java中加載類,也就是通過加載器把字節碼加載到內存中,他的的時機有: 1, new 一個對象時 2, 調用Class.forName("類名")方法 3,,訪問非final的static成員變量的時候,如果是static final的成

原创 java中進程間的通信

多個線程訪問同一個資源,進行進程間的通信時,需要使用wait和notify,他們都需要一個同步鎖,nofity喚醒的是這個同步鎖上出於wait的線程。notify和wait只能在同步代碼塊中被調用: class Resources {

原创 java中的static用法

static只修飾類的成員,包括方法和屬性以及代碼塊,不能修飾局部變量。 static修飾的方法,屬性以及代碼塊的特點: 1,隨着類的加載而加載 2,它屬於類,所有類的對象共享該靜態成員 3,優先於對象存在 4, 可以直接用類訪問 sta

原创 打開CHM文件,左邊目錄可以顯示,左邊內容是空白

1, 新建文件:HTMLHelp.reg 內容如下: REGEDIT4 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp] [HKEY_LOCAL_MACHINE\SOFTWARE\Micro