1. 程式人生 > >Java面試手寫程式碼No.3(Singleton)

Java面試手寫程式碼No.3(Singleton)

Java設計模式——單例模式(第3種為最終模式)

拋磚引玉 一:懶漢模式

/*
 * 問題域:設計一個能且只能產生一個物件的類
 */
//單列模式一------懶漢模式
/*
 * 1、它是一種預載入的實現。不管程式碼中有沒有用到getInstance,都會被產生;
 * 2、執行緒絕對安全的
 */
public class Singleton {
	
	private static Singleton sin = new Singleton();
	
	private Singleton(){
		
	}
	
	public static Singleton getInstance(){
		return sin;
	}

}
拋磚引玉 二:餓漢模式
//單列模式二-----餓漢模式
/*
 * 1、延遲載入實現,只有在真正需要Singleton物件的時候才產生
 * 2、不加同步,執行緒不安全;加同步,效率低
 */
public class Singleton {
	
	private static Singleton sin;
	
	private Singleton(){
		
	}
	
	public synchronized static Singleton getInstance(){
		if(sin == null){
			sin = new Singleton();
		}
		return sin;
	}
}
最終的--模式:單例模式  之雙鎖機制
//單列模式三---雙鎖機制
//既支援延遲載入,又支援執行緒安全的高併發
public class Singleton {
	
	private static Singleton sin;
	
	private Singleton(){
		
	}
	
	public static Singleton getInstance(){		
		if(sin == null){			
			synchronized(Singleton.class){				
				if(sin == null){
					sin = new Singleton();
					
				}
			}
		}
		return sin;
	}
	
}




相關推薦

Java面試程式碼No.3Singleton

Java設計模式——單例模式(第3種為最終模式) 拋磚引玉 一:懶漢模式 /* * 問題域:設計一個能且只能產生一個物件的類 */ //單列模式一------懶漢模式 /* * 1、它是一種預載入的實現。不管程式碼中有沒有用到getInstance,都會被產生; *

面試程式碼的題目

提取出來的場景模擬:對於1–16,呼叫一次方法,就讓他產生4個數字,呼叫4次完畢,產生4組不同的數字! 注意:nextInt(101)是產生0-100之間的任意整數,不包括101. * 完整程式碼

歸併排序 筆試面試程式碼常考

歸併排序是將兩個或者兩個以上的有序序列進行合併的一種排序演算法。採用了分治的思想。 它的主要思路是將序列分為兩個子序列,對於兩個最終有序的子序列進行合併,得到有序的整體序列。 如何保證子序列有序呢?對子序列採用同樣的方式進行劃分,當子序列長度為1時,子序列有序,此時合

JAVA面試必備的知識寶典

java相關概念面向對象的三個特征封裝,繼承,多態.這個應該是人人皆知.有時候也會加上抽象.多態的好處允許不同類對象對同一消息做出響應,即同一消息可以根據發送對象的不同而采用多種不同的行為方式(發送消息就是函數調用).主要有以下優點:可替換性:多態對已存在代碼具有可替換性.可擴充性:增加新的子類不影響已經存在

JAVA面試必備的知識寶典

java數據類型相關java中int char,long各占多少字節?|類型|位數|字節數| |-|-|-| |short|2|16| |int|4|32| |long|8|64| |float|4|32 |double|8|64| |char|2|16|64位的JVM當中,int的長度是多少?Java 中,

新手上手Tensorflow之數字識別應用2

本系列為應用TensorFlow實現手寫數字識別應用的全過程的程式碼實現及細節討論。按照實現流程,分為如下幾部分: 1. 模型訓練並儲存模型 2. 通過滑鼠輸入數字並儲存 2. 影象預處理 4. 讀入模型對輸入的圖片進行識別 本文重點討論模型的儲存以及讀入問題。 關於Tens

新手上手Tensorflow之數字識別應用1

學深度學習有一段時間了,各種演算法研究一通,什麼CNN啦,RNN啦,LSTM啦,RCNN啦,各種論文看了一堆。看沒看懂且不說(心虛。。),回來我想把訓練的模型看看實際效果的時候,才發現TensorFlow的好多基本功能還不會。好吧,還是拿著Mnist資料集搞一波手寫數字識別的全流程吧!涉

Java面試系列總結 :JavaSE高階

1. 說說你對Java中反射的理解 Java 中的反射首先是能夠獲取到 Java 中要反射類的位元組碼,獲取位元組碼有三種方法,1.Class.forName(className) 2.類名.class 3.this.getClass()。然後將位元組碼中的方法,變數,建構函式等

吳裕雄 python神經網絡 數字圖片識別5

end false new ppm sqrt 格式 ica utils lin import kerasimport matplotlib.pyplot as pltfrom keras.models import Sequentialfrom keras.layers i

Java面試系列總結 :JavaSE基礎2 常用 API

1. Math.round(11.5)等於多少?Math.round(- 11.5) 又等於多少? Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。 四捨五入的原理是在引數上加 0.5然後進行取整。 2.

Java面試系列總結 :JavaSE基礎1 面向物件/語法/異常

1. 面向物件都有哪些特性以及你對這些特性的理解 繼承:繼承是從已有類得到繼承資訊建立新類的過程。提供繼承資訊的類被稱為父類(超類、基類);得到繼承資訊的類被稱為子類(派生類)。繼承讓變化中的軟體系統有了一定的延續性,同時繼承也是封裝程式中可變因素的 重要

C++輕量級文法分析器更新,程式碼+DEMO×3下載

最新問題! 問題在於這條產生式: statement : block | sentence | ifstmt | whilestmt | forstmt; 當加入了ifstmt,whilestmt,

Java面試2018常考題目彙總

因為最近在忙著找工作,看到了很多面試整理的文章,於是便有了自己也寫一篇,部分原創,大部分是我四處蒐集的,我想整理一份最全最新的文章,方便大家總結!廢話不多說,開始! 一、JAVA基礎篇-概念 1.簡述你所知道的Linux: Linux起源於1991年

基於SVM和KNN的數字的識別分類——小試牛刀篇

下面分別採用的是k近鄰演算法(KNN)和SVM實現的手寫數字識別。 python實現程式碼: # -*- coding: utf-8 -*- import os import numpy as np def img2vector(filename, label): #

Java面試2018常考題目彙總

1、servlet執行流程客戶端發出http請求,web伺服器將請求轉發到servlet容器,servlet容器解析url並根據web.xml找到相對應的servlet,並將request、response物件傳遞給找到的servlet,servlet根據request就可以

pytorch + visdom AutoEncode 和 VAE(Variational Autoencoder) 處理 數字資料集MNIST

環境 系統:win10 cpu:i7-6700HQ gpu:gtx965m python : 3.6 pytorch :0.3 資料 使用 mnist,使用方法前面文章有。 train_dataset = da

深入Java日記——自己一個ORM框架1

眾所周知,ORM框架有很多,例如Hibernate,MyBatis,還有BeetlSQL等等,裡面獲取有很多我們不需要的功能,本系列部落格主要教大家如何寫一個簡單的ORM框架 這個ORM框架主要有以下功能: 1. 生成JavaBean程式碼 2. 通過

ORM入門篇

物件關係對映(英語:(Object Relational Mapping,簡稱ORM,或O/RM,或O/R mapping),是一種程式技術,用於實現面向物件程式語言裡不同型別系統的資料之間的轉換 [1]  。從效果上說,它其實是建立了一個可在程式語言裡使用的--“虛擬物件資料庫”。 面向物件是從軟

你也可以自己的Promise

我寫這篇文章不打算介紹Promise產生的原因以及它解決的問題,我只是想寫一篇關於實現自己Promise的文章。如果程式碼以及邏輯

Java面試專題-多執行緒篇2- 鎖和執行緒池

​   開篇介紹 大家好,公眾號【Java極客思維】近期會整理一些Java高頻面試題分享給小夥伴,也希望看到的小夥伴在找工作過程中能夠用得到!本章節主要針對Java一些多執行緒高頻面試題進行分享。   Q1: 樂觀鎖 和 悲觀鎖 樂觀鎖: 樂觀鎖(Optimistic Locking)