原创 java clone替代方案

(1)提供一個拷貝構造函數(如果你用過C++就不會陌生) Java代碼   public RaceCar(RaceCar raceCar);            (2)提供一個靜態工廠方法,當然名字可以改變,比如deepC

原创 你真的會寫單例模式嗎-------Java實現

單例模式可能是代碼最少的模式了,但是少不一定意味着簡單,想要用好、用對單例模式,還真得費一番腦筋。本文對Java中常見的單例模式寫法做了一個總結,如有錯漏之處,懇請讀者指正。 餓漢法 顧名思義,餓漢法就是在第一次引用該類的時候

原创 從一個簡單的Java單例示例談談併發

一個簡單的單例示例 單例模式可能是大家經常接觸和使用的一個設計模式,你可能會這麼寫 public class UnsafeLazyInitiallization { private static UnsafeLazyIni

原创 Java clone() 淺克隆與深度克隆

  現在Clone已經不是一個新鮮詞語了,伴隨着“多莉”的產生這個詞語確實很“火”過一陣子,在Java中也有這麼一個概念,它可以讓我們很方便的“製造”出一個對象的副本來,下面來具體看看java中的Clone機制是如何工作的?     

原创 詳解Java中的clone方法

Java中對象的創建 clone顧名思義就是複製, 在Java語言中, clone方法被對象調用,所以會複製對象。所謂的複製對象,首先要分配一個和源對象同樣大小的空間,在這個空間中創建一個新的對象。那麼在java語言中,有幾種方式可以創

原创 httpcomponent4.0調用樣例

private static class HttpComponentUtil { private static int timeout = 5 * 1000; private static PoolingHttpClientConne

原创 Java的clone方法

什麼是"clone"?    在實際編程過程中,我們常常要遇到這種情況:有一個對象A,在某一時刻A中已經包含了一些有效值,此時可能 會需要一個和A完全相同新對象B,並且此後對B任何改動都不會影響到A中的值,也就是說,A與B是兩個獨立的對

原创 JAVA設計模式之工廠模式(簡單工廠模式+工廠方法模式)

 在面向對象編程中, 最通常的方法是一個new操作符產生一個對象實例,new操作符就是用來構造對象實例的。但是在一些情況下, new操作符直接生成對象會帶來一些問題。舉例來說, 許多類型對象的創造需要一系列的步驟: 你可能需要計算或取得

原创 java clone原理

在java中 clone爲什麼要用super.clone()方法 這裏爲什麼要用super不是this? 1.Object中的clone執行的時候使用了RTTI(run-time type identification)的機制,動態得找到

原创 Quartz Spring與Spring Task總結

    Spring對Quartz作了一個封裝,同時,Spring自己也提供了一個任務定時器(spring-task),現把它總結一下。    對於Quartz,我們使用的時候主要是注重兩個方面,一個是定時任務的業務,另一個就是Cron表

原创 spring scheduled-task集羣問題

背景 我經常使用spring自帶的輕量級的定時任務實現,即@Scheduled註解 但是在分佈式環境下,這種定時任務是不支持集羣配置的 我現在面對的場景如下: 1.雙機部署 2.系統在啓動時,需要進行一系列的數據初始化,但是這

原创 Spring-Task用法

Spring-Task 上節介紹了在spring 中使用Quartz,本文介紹Spring3.0以後自主開發的定時任務工具,spring task,可以將它比作一個輕量級的Quartz,而且使用起來很簡單,除spring相關的包外不需

原创 UML類圖幾種關係的總結

        在UML類圖中,常見的有以下幾種關係: 泛化(Generalization),  實現(Realization),關聯(Association),聚合(Aggregation),組合(Composition),依賴(De

原创 二叉排序樹與二叉堆

1 快排效率是不穩定的nlogn 2 二叉樹實現排序的效率是穩定的nlogn 3 用二叉樹實現排序有兩種方法: 二叉排序樹和二叉堆排序樹 二者在實現及原理上有不同之處。 二叉排序樹  用鏈表實現  令二叉樹的每一個節點大於

原创 使用Lock,wait/notify,Semaphore三種方式實現多線程通信

Java的多線程通信有Lock,wait/notify,Semaphore三種方式,以一道常見面試題來簡單演示這三種多線程通信方式。 兩個線程循環間隔打印指定內容,一個打印從1到52的數字,一個打印從A到Z的字母,打印輸出如下: 1