原创 Volatile關鍵字解讀(二)

併發編程三要素 在併發編程的過程中,我們經常會遇到這三種問題:原子性、有序性和可見性 原子性 即一次操作如果涉及到一個或者多個步驟,要不全部執行成功並且中途不被打斷,要麼全部都不執行或者全部回滾到初態 怎麼理解這段話呢?舉個例子,

原创 Volatile關鍵字解讀(三)

Java內存模型 前面講解了內存模型的基本知識,本節主要對Java內存模型進行說明   在Java虛擬機規範中試圖定義一種Java內存模型(Java Memory Model,JMM)來屏蔽不同硬件和操作系統的差異性,保證在各個平

原创 Java序列化與反序列化(Serializable&&Externalizable)

概念 序列化:將Java對象轉換爲字節序列的過程 反序列化:將字節序列轉換爲Java對象的過程 爲什麼要這麼操作 我們都知道可以通過網絡傳遞圖片、視頻、文件等等數據信息,而這些信息最終都是以二進制序列傳遞的。那麼Java對象呢?如

原创 Volatile關鍵字解讀(四)

volatile原理 前面講解了一些內存相關的基礎知識作爲本節的一個鋪墊,本節開始講解volatile的用法 被volatile修飾的共享變量具有以下兩個功能 變量可見性:一旦變量被某個線程修改,會立刻回寫入內存,保證其他線程的

原创 設計模式01-單例模式

單例模式 單例模式是設計模式中最簡單的一個,也是使用最多的一個 用途 當對象只需要一個時:如線程池、日誌對象、緩存、註冊表對象等等 如果創建了多個對象,會造成意想不到的結果,如內存溢出、資源耗盡、系統異常等 實現方式 需

原创 Volatile關鍵字解讀(一)

volatile關鍵字很多人都聽說過,但真正使用起來並不是那麼簡單容易,因爲這關係到很多內存模型相關的知識點,本人最近在網上翻看了很多資料,在此做一下總結,根據前人的經驗,我主要從四個方面進行解讀: * 內存模型的介紹 * 併發編

原创 Finally的使用場景解析

轉載出處 : Java finally 的用法,看這一篇就夠了 finally的用法說明概述什麼是finallyfinally用法1、簡單的finally示例2. 不帶catch的finally語句3. finally使用場景fi

原创 clone的用法--淺拷貝和深拷貝

淺拷貝 在Java中我們對於基本數據類型變量的拷貝通常是重新複製一份或者是對對象的引用重新複製一份,這種拷貝方式是淺拷貝 深拷貝 有時候我們想拷貝整個對象的內容包括和這個對象相關聯的對象的所有內容,這種拷貝是深拷貝 實現方式 通常

原创 設計模式02-工廠模式

目的 工廠模式主要是爲創建對象提供一些過渡接口,將創建對象的具體過程對外部屏蔽隔離起來,以達到較高的靈活性的目的 分類 工廠模式主要分爲三類: 1)簡單工廠模式(Simple Factory) 2)工廠方法模式(Factor

原创 java對象轉換map

背景介紹 原理說明 反射概念 功能作用 實現方式 方法介紹 實例展示 對象轉MAP 背景介紹   今天在項目研發的過程中遇到這樣一個需求,在一個統一處理類的入口要將所有後面處理流程需要用到的值統一塞進上下

原创 java基礎--static和final的用法

static 被static修飾的變量或者方法不依賴於對象來進行訪問,只要對應的類被加載,就可以通過類名直接訪問 簡言之static就是用來在沒有創建對象的情況下訪問類的變量或者方法 用途 static修飾的變量或者方法被稱作靜

原创 Java基礎--抽象類和接口的區別

接口和抽象類。這兩者有太多相似的地方,又有太多不同的地方。很多人在初學的時候會以爲它們可以隨意互換使用,但是實際則不然。 抽象類 在講解抽象類之前,先了解一下抽象方法。抽象方法是一種特殊方法,只有聲明,而沒有具體實現,抽象方法聲明格式:

原创 java--集合類型list、set、Map的用法和區別

集合類是我們日常使用中操作最頻繁的一個Java類型,在講解之前我們先看下他們之間的關係 Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set

原创 RSA 加密算法

【RSA加密算法原理】 http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html 【RSA實現方式】 http://www.ruanyifeng.com/blog

原创 java--靜態綁定和動態綁定

一個Java程序的執行要經過編譯和執行(解釋)這兩個步驟,同時Java又是面向對象的編程語言。當子類和父類存在同一個方法,子類重寫了父類的方法,程序在運行時調用方法是調用父類的方法還是子類的重寫方法呢,這應該是我們在初學Java時遇到的問