原创 位運算

1 十進制,八進制和十六進制 2 原碼,反碼和補碼 在內存中,數據以二進制的方式存儲,且最小單位是字節。對於有符號的數值,無論正反,計算機都是以補碼的形式進行存儲。 1)正數的原碼,反碼和補碼都相同。 以整型數字4爲例: 原碼:00

原创 在Ubuntu 上搭建hadoop-2.6.0-cdh分佈式集羣

在Ubuntu 上搭建hadoop-2.6.0-cdh分佈式集羣1 虛擬機配置2 集羣網絡配置2.1 修改主機名2.2 添加映射3 集羣ssh免密登錄配置3.1 生成公鑰和私鑰3.2 將公鑰複製到遠程機器中3.3免密ssh登陸測試4

原创 查找算法-二分法

1 原理和步驟 有序數組插入和刪除操作中,由於所有靠後的數據都需要移動以騰開空間,所以速度較慢。在查找方面,無序數組是通過線性查找,而有序數組可以通過二分法進行快速查找,速度比無序數組快很多。 二分法的時間複雜度爲0(log n

原创 希爾排序

1 實現原理和步驟      採用插入排序對arr這個數組進行排列,假如位置爲0到10000的按照升序排好,將待插入數值a[10001]與a[10000]進行比較,如果a[10001]大於a[10000]時,則將帶插入數據的位置爲1000

原创 Java併發編程之Callable類和Future接口

1 Callable類和Future接口介紹 JDK5開始,Java創建多線程的方法新增了Callable接口,源碼如下:public interface Callable<V> { V call() throws Excepti

原创 內存溢出和內存泄露的區別

1 內存溢出 內存溢出(OutOfMemory,OOM)是指程序在申請內存時,沒有足夠的內存空間供其使用,出現OOM。在Java虛擬機規範的描述中,除了程序計數器外,虛擬機內存的其他幾個運行時區域都有發生OOM異常的可能。 public

原创 GC對象的判定和GC算法

一 GC對象的判定 1 引用計數算法        對於一個對象A,只要有任何一個對象引用了A,則A的引用計數器就加1,當引用失效時,引用計數器就減1。只要對象A的引用計數器的值爲0,則對象A就不可能再被使用。主要缺點是很難解決對象之間相

原创 平衡二叉搜索樹——紅黑樹

一、背景 二叉搜索樹具體較高的運行效率,其查找的時間複雜度爲log(N)。但是在極端情況下,假如插入一組從大到小的數據,如圖所示,則其查找的時間複雜度變爲N。 紅黑樹是在二叉搜索樹的基礎上,加入紅黑性質,使其成爲一顆平衡二叉樹,從而保證

原创 哈希算法

1 哈希表的原理和用途 哈希表是基於數組來實現,它提供了快速的插入操作和查找操作。在初始階段插入的數據量較少時,插入、刪除和查找只需接近常量時間,即時間複雜度爲0(1)。如果不需要有序遍歷數據,並且可以提前預測數據量的大小,那麼哈希表在的

原创 SimpleDateFormat非線程不安全

1 單線程環境 類SimpleDateFormate常用於時間格式轉換,在單線程環境下運行結果正常,如下所示 public class MyThread extends Thread { private SimpleDateForm

原创 3種簡單排序:冒泡排序、選擇排序和插入排序

1 冒泡排序 1.1 實現原理和過程 冒泡排序是所有排序中最基本的一種,其核心思想是交換排序,通過相鄰數據的交換來達到排序目的,缺點是效率低,時間複雜度爲O(n^2)。具體過程如下:(1)依次比較數組中相鄰兩個元素的大小 (2)如果前面的

原创 Guava併發編程之ListenableFuture類

1 Future接口的缺點 通過Future接口的get()方法可以獲取類Callable的返回值,但是此方法最大缺點是阻塞的,因此在併發環境下,效率比較低。Google公司提供的開源Guava庫提供了有效的處理異步Future的問題。

原创 虛擬機中Ubuntu 14.04安裝VMwareTools詳解

1 VMwareTools工具的作用: 解決linux和Win7不能相互複製黏貼的問題。 2 安裝步驟: 2.1 在vmware-workstation的安裝目錄中找到linux.iso,利用Xftp工具將其導入ubuntu中/home

原创 在Ubuntu中安裝MySQL數據庫並使用SQLyog進行連接

1 下載MySQL數據庫 root@ubuntu:~# apt-get installmysql-server root@ubuntu:~# apt-get isntallmysql-client root@ubuntu:~# apt-g

原创 volatile關鍵字

1 volatile關鍵字的作用 volatile關鍵字是JVM提供的一種輕量級的同步機制,主要要2種作用: 1.1 保證此變量對所有線程的可見性 即一個線程修改了公共數據,新值對於其他線程來說是可以立即得知的。 public clas