原创 java網絡編程

什麼是網絡? 網絡就是講一些計算機連在一起,並且可以實現計算機與計算機之間的通信。 通常來說將網絡分爲:局域網,城域網和互聯網。 那麼在網絡中計算機之間是如何區分的呢或者說我們在使用計算機通信的時候怎麼才能知道指定的計算機呢? 此時就有

原创 HashMap和Hashtable的比較

在面試的時候,java集合最容易被問到的知識就是HashMap與Hashtable的比較,通常我們也很容易回答出一下幾點: 1、HashMap是線程不安全的,在多線程環境下會容易產生死鎖,但是單線程環境下運行效率高;Hashtable線程

原创 java多態

面向對象的三大基本特徵:封裝,繼承和多態。 封裝:就是將類的內部實現細節封裝和數據封裝起來,不對外暴露實,向外部提供接口,來操作內部封裝的數據。 繼承:爲了提高代碼的重用性,如果一個類A和類B是IS-A關係,則可以使用繼承。 多態:指

原创 java 繼承

爲什麼需要繼承? //大學生類 public class UnStudent{ //定義屬性 String name; Int ID; Int age; //定義方法 public void

原创 兩個Integer對象比較

我們都知道java中對象之間用==進行的比較是內存地址之間的比較,也就是說==比較的話,如果兩個引用指向堆內存中同一個對象那麼就返回true,否則返回false。 Integer對象之間的比較 首先來看一下這樣一段代碼: public s

原创 java類加載機制

類加載 類的加載指的是將類的.class文件中的二進制數據讀入到內存中,將其放在運行時數據區的方法區內,然後在堆區創建一個java.lang.Class對象,用來封裝類在方法區內的數據結構。類的加載的最終產品是位於堆區中的Class對象

原创 java垃圾回收

垃圾回收 當一個對象不再被使用的時候,虛擬機就需要找到不在被使用的對象,然後將其所佔的堆內存回收,以供後面的對象創建使用。 意義 引入了垃圾回收機制,使c++程序員最頭疼的內存管理的問題迎刃而解,它使得Java程序員在編寫程序的時候不

原创 ConcurrentHashMap源碼分析

前言 ConcurrentHashMap是java.util.concurrent包下的一個類,它設計出來是用來在某些情況下替換Hashtable的。相比Hashtable它能夠更加高效的進行多線程操作,並不一定需要像Hashtable一

原创 jdk1.8 ThreadLocal源碼研究

ThreadLocal是什麼 顧名思義,ThreadLocal爲線程局部變量 使用場景 JDBC的連接connection對象都是非線程安全對象。所以在web環境下,使用一個線程處理一個請求的時候,需要從數據庫連接池中取出connecti

原创 將數組的0元素都移動到最後

給定一個整數的數組,要求將數組中的所有的0元素移動到數組的最後,其他的元素保持原來的順序。要求:空間複雜度不能超過O(1)example:給定數組[0,2,0,7]轉換後應爲[2,7,0,0]輸入:第一行輸入一個數位數組的長度其他的數爲數

原创 java內存模型

前言 併發處理的廣泛應用是使得Amdahl定律代替摩爾定律成爲計算機性能發展源動力的根本原因,也是人類“壓榨”計算機運算能力的最有力武器。 現代計算機的處理器在追求運算速度的提升的同時,也朝着多核化方向發展。這個趨勢越來越明顯,已經成

原创 jvm內存模型

Java和C++之間有一堵內存動態分配和垃圾收集技術所圍成的“高牆”,牆外面的人想進去,牆裏面的人卻想出來。 運行時數據區域 java虛擬機在執行程序的過程中會把所管理的內存劃分爲若干個不同的數 據區域。這些區域各自有自個的用途,以及

原创 打招呼

前記 寫博客,記錄發生在自己身上的點點滴滴,這可能是一件讓我開心的事,或者是一件讓我感到難過的是事。但是,重要的不是事情的本身,而是我在這件事當中的過與得失,以及自己的體會到的人情世故。 我相信,發生在自己身邊對自己成長有幫助的事,自己

原创 快速排序

快速排序主要採用分治的思想。假設對一個數組arr[l…r]進行快速排序,採用分治思想可以分爲三分: 分解:選取一個主元,假設它的索引位置爲q,將arr[l…r]以q爲分割點分割爲兩個(可能爲空)子數組arr[l…q-1]和arr[q+1…

原创 java多線程

什麼是程序,進程和線程? 程序:是爲了實現某些目的使用計算機語言編寫的指令集。 進程:一個程序運行起來就會形成一個進程,程序退出後進程也就結束了。進程有獨立的內存和數據空間。 線程:輕量級的進程。線程是進程裏面不同的路徑,或獨立的任務。