锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
]]>
class Class1
{
聽static void bubbleSort(int[] a)
聽{
聽聽for (int j = a.length - 1; j > 0; j--) // outer loop (backward)
聽聽聽for (int i = 0; i < j; i++) // inner loop (forward)
聽聽聽聽if (a[i] > a[i+1]) //Swap
聽聽聽聽{
聽聽聽聽聽a[i] = a[i] + a[i+1];
聽聽聽聽聽a[i+1] = a[i] - a[i+1];
聽聽聽聽聽a[i] = a[i] - a[i+1];
聽聽聽聽}
聽}
聽public static void main(String[] args)
聽{
聽聽int[] a = new int[]{-1,-2,9,4,5,3,7,1,2,3,1,2,3,-3,2,-19};
聽聽//int[] a = new int[]{9,8,7,6,5,4,3,2,1,0,11};
聽聽bubbleSort(a);
聽聽for (int i=0; i < a.length; i++)
聽聽{
聽聽聽System.out.println(a[i]);
聽聽}
聽}
}
C# Code:
class Class1
{
聽static void BubbleSort(int[] a)
聽{
聽聽for (int j = a.Length - 1; j > 0; j--) // outer loop (backward)
聽聽聽for (int i = 0; i < j; i++) // inner loop (forward)
聽聽聽聽if (a[i] > a[i+1])
聽聽聽聽{
聽聽聽聽聽//a[i] = a[i] + a[i+1];
聽聽聽聽聽//a[i+1] = a[i] - a[i+1];
聽聽聽聽聽//a[i] = a[i] - a[i+1];
聽聽聽聽聽Swap(ref a[i],ref a[i+1]);
聽聽聽聽}
聽}
聽static void Swap(ref int x,ref int y)
聽{
聽聽x = x + y;
聽聽y = x - y;
聽聽x = x - y;
聽}
聽static void Main(string[] args)
聽{
聽聽int[] a = new int[]{-1,-2,9,4,5,3,7,1,2,3,1,2,3,-3,2,-19};
聽聽//int[] a = new int[]{9,8,7,6,5,4,3,2,1,0,11};
聽聽BubbleSort(a);
聽聽for (int i=0; i < a.Length; i++)
聽聽{
聽聽聽System.Console.WriteLine(a[i]);
聽聽}
聽聽System.Console.ReadLine();
聽}
}
]]>
Singleton
妯″紡涓昏浣滅敤鏄繚璇佸湪Java搴旂敤紼嬪簭涓紝涓涓被Class鍙湁涓涓疄渚嬪瓨鍦?/span>銆?span lang="EN-US">
鍦ㄥ緢澶氭搷浣滀腑錛屾瘮濡傚緩绔嬬洰褰?鏁版嵁搴撹繛鎺ラ兘闇瑕佽繖鏍風殑鍗曠嚎紼嬫搷浣?/span>銆?span lang="EN-US">
榪樻湁, singleton鑳藉琚姸鎬佸寲; 榪欐牱錛?span style="COLOR: blue">澶氫釜鍗曟佺被鍦ㄤ竴璧峰氨鍙互浣滀負涓涓姸鎬佷粨搴撲竴鏍峰悜澶栨彁渚涙湇鍔?/span>錛屾瘮濡傦紝浣犺璁哄潧涓殑甯栧瓙璁℃暟鍣紝姣忔嫻忚涓嬈¢渶瑕佽鏁幫紝鍗曟佺被鑳藉惁淇濇寔浣忚繖涓鏁幫紝騫朵笖鑳?span lang="EN-US">synchronize鐨勫畨鍏ㄨ嚜鍔ㄥ姞1錛屽鏋滀綘瑕佹妸榪欎釜鏁板瓧姘鎬箙淇濆瓨鍒版暟鎹簱錛屼綘鍙互鍦ㄤ笉淇敼鍗曟佹帴鍙g殑鎯呭喌涓嬫柟渚跨殑鍋氬埌銆?span lang="EN-US">
鍙﹀鏂歸潰錛?span lang="EN-US">Singleton涔熻兘澶熻鏃犵姸鎬佸寲銆傛彁渚涘伐鍏鋒ц川鐨勫姛鑳斤紝
Singleton
妯″紡灝變負鎴戜滑鎻愪緵浜嗚繖鏍峰疄鐜扮殑鍙兘銆備嬌鐢?span lang="EN-US">Singleton鐨勫ソ澶勮繕鍦ㄤ簬鍙互鑺傜渷鍐呭瓨錛屽洜涓哄畠闄愬埗浜嗗疄渚嬬殑涓暟錛屾湁鍒╀簬Java鍨冨溇鍥炴敹錛?span lang="EN-US">garbage collection錛夈?span lang="EN-US">
鎴戜滑甯稿父鐪嬪埌宸ュ巶妯″紡涓被瑁呭叆鍣?span lang="EN-US">(class loader)涓篃鐢?span lang="EN-US">Singleton妯″紡瀹炵幇鐨?span lang="EN-US">,鍥犱負琚鍏ョ殑綾誨疄闄呬篃灞炰簬璧勬簮銆?span lang="EN-US">
濡備綍浣跨敤?
涓鑸?span lang="EN-US">Singleton妯″紡閫氬父鏈夊嚑縐嶅艦寮?span lang="EN-US">:
絎竴縐嶅艦寮?/span>
:
public class Singleton {
銆銆private Singleton(){}
銆銆//鍦ㄨ嚜宸卞唴閮ㄥ畾涔夎嚜宸變竴涓疄渚嬶紝鏄笉鏄緢濂囨紵
銆銆//娉ㄦ剰榪欐槸private 鍙緵鍐呴儴璋冪敤
銆銆privatestatic Singleton instance = new Singleton();
銆銆//榪欓噷鎻愪緵浜嗕竴涓緵澶栭儴璁塊棶鏈?span lang="EN-US">class鐨勯潤鎬佹柟娉曪紝鍙互鐩存帴璁塊棶銆銆
銆銆public static Singleton getInstance() {
銆銆銆銆return instance; 銆銆
銆銆 }
}
絎簩縐嶅艦寮?/span>
:
public class Singleton {
private static
Singleton instance = null;
銆銆publicstaticsynchronized Singleton getInstance() {
銆銆//榪欎釜鏂規硶姣斾笂闈㈡湁鎵鏀硅繘錛屼笉鐢ㄦ瘡嬈¢兘榪涜鐢熸垚瀵硅薄錛屽彧鏄涓嬈°銆銆 銆
銆銆//浣跨敤鏃剁敓鎴愬疄渚嬶紝鎻愰珮浜嗘晥鐜囷紒
銆銆if (instance==null)
銆銆銆銆instance錛?span lang="EN-US">new Singleton();
銆銆return instance; 銆銆
}
}
浣跨敤Singleton.getInstance()鍙互璁塊棶鍗曟佺被銆?span lang="EN-US">
涓婇潰絎簩涓艦寮忔槸lazy initialization錛屼篃灝辨槸璇寸涓嬈¤皟鐢ㄦ椂鍒濆Singleton錛屼互鍚庡氨涓嶇敤鍐嶇敓鎴愪簡
銆?span lang="EN-US">
娉ㄦ剰鍒?span lang="EN-US">lazy initialization褰㈠紡涓殑synchronized錛岃繖涓?span lang="EN-US">synchronized寰堥噸瑕侊紝濡傛灉娌℃湁synchronized錛岄偅涔堜嬌鐢?span lang="EN-US">getInstance()鏄湁鍙兘寰楀埌澶氫釜Singleton瀹炰緥銆傚叧浜?span lang="EN-US">lazy initialization鐨?span lang="EN-US">Singleton鏈夊緢澶氭秹鍙?span lang="EN-US">double-checked locking (DCL)鐨勮璁猴紝鏈夊叴瓚h呰繘涓姝ョ爺絀躲?span lang="EN-US">
涓鑸涓虹涓縐嶅艦寮忚鏇村姞瀹夊叏浜涖?span lang="EN-US">
浣跨敤Singleton娉ㄦ剰浜嬮」錛?span lang="EN-US">
鏈夋椂鍦ㄦ煇浜涙儏鍐典笅錛屼嬌鐢?span lang="EN-US">Singleton騫朵笉鑳借揪鍒?span lang="EN-US">Singleton鐨勭洰鐨勶紝濡傛湁澶氫釜Singleton瀵硅薄鍚屾椂琚笉鍚岀殑綾昏鍏ュ櫒瑁呰澆錛涘湪EJB榪欐牱鐨勫垎甯冨紡緋葷粺涓嬌鐢ㄤ篃瑕佹敞鎰忚繖縐嶆儏鍐碉紝鍥犱負EJB鏄法鏈嶅姟鍣紝璺?span lang="EN-US">JVM鐨勩?span lang="EN-US">
浠g爜錛氶タ姹夊紡鍗曟佺被
public class EagerSingletion{
private static final EagerSingletion m_instance= new EagerSingletion();
private EagerSingletion(){} //
縐佹湁鏋勯犲嚱鏁幫紝闃叉琚?span lang="EN-US">new
/**
*
闈欐佸伐鍘傛柟娉?span lang="EN-US">
*/
public static EagerSingletion getInstance(){
return m_instance;
}
}
浠g爜錛氭噿姹夊紡鍗曟佺被
public class LazySingletion{
private static final LazySingletion m_instance= null;
private LazySingletion(){} //
縐佹湁鏋勯犲嚱鏁幫紝闃叉琚?span lang="EN-US">new
/**
*
綰跨▼瀹夊叏錛岄潤鎬佸伐鍘傛柟娉曪紝淇濊瘉榪斿洖鍞竴瀹炰緥
*/
public static synchronized EagerSingletion getInstance(){
if(m_instance = null){
m_instance = new EagerSingletion();
}
return m_instance;
}
}