原创 (關於抽象類)以下程序的輸出內容是什麼

Java關於抽象類的相關約定爲:抽象類一定存在構造方法,子類也一定遵循對象實例化流程。先調用父類構造,再調用子類構造 那麼以下程序的輸出內容是什麼 abstract class A{ public A(){ //2

原创 抽象類的使用和注意事項

抽象類 抽象類的定義與使用 定義:抽象類只是比普通類多了一些抽象方法 抽象方法:只聲名而未實現的方法(沒有方法體),抽象方法必須使用 abstract關鍵字類定義。並且抽象方法所在的類也一定要使用abstrac

原创 關於代碼塊的經典考題(以下代碼塊的執行順序是什麼)

代碼塊 a)普通代碼塊 b)構造塊:類中定義的代碼塊,對象產生時執行,產生幾個對象執行幾次,優先於構造方法 c)靜態代碼塊:類加載時執行,優先於構造塊,只執行一次,main中的優先於main 關於代碼塊有一個經典的問題,就是構造方

原创 什麼是”代理設計模式“,如何使用

代理設計模式 特點:兩個子類共同實現同一個接口,其中一個子類負責真實業務實現,另一個子類完成輔助真實業務主題的操作 用我們生活中經常碰見的例子來說明,在玩遊戲時會有“代練”幫助玩家上分,在買東西時會有“代購”幫助買家購買相應的東西

原创 三子棋C語言實現

//三子棋 //1.打印棋盤 //2.電腦落子,判斷是否結束 //3.玩家落子,判斷遊戲是否結束 //4.重複以上 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #includ

原创 關於軟件測試你必須知道的名詞

關於軟件測試的基本概念 什麼是軟件測試 軟件測試其實就是一個找Bug的過程,它來驗證軟件能否正常運行 爲什麼要做軟件測試 對於一個產品來說,測試是至關重要的,研發造就了產品,測試保障了產品,同時通過分析錯誤產生的原因,階段

原创 死磕多線程(7)-深入理解AQS(源碼解析)

本篇文章將對AQS進行深入瞭解,並對其源碼進行解析 對AQS源碼的分析主要基於以下兩個方面: 1.獨佔鎖的獲取(acquire)與釋放(release) 2.獨佔鎖的特性: 響應中斷IockInterrutibly()-acqui

原创 c語言三種方法求n的k次方

// 方法一:遞歸 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int Power(int n,int k) //題目中有兩

原创 驗證程序的輸入

       在我們編寫的大部分代碼中,都需要用戶進行輸入,如果沒有輸入前驗證的話,用戶的任意一個隨意輸入都會造成代碼的崩潰,爲了避免讀取用戶的無效輸入,輸入驗證對每個程序都是必要的。 例如程序需要輸入一個小數:       在此介紹三種

原创 工廠設計模式(如何把客戶端的new操作解耦到第三方)

工廠設計模式 將客戶端的new操作解耦到第三方(工廠類) 例如現在模擬“顧客購買電腦”這樣一個操作,傳統模式如下: interface Computer{ void printComputer(); } class Mac

原创 如何使用“模板設計模式”

在瞭解“模板設計模式”之前要先了解關於抽象類的相關概念: 抽象類的定義與使用 a)定義:抽象類只是比普通類多了一些抽象方法 b)抽象方法:只聲名而未實現的方法(沒有方法體),抽象方法必須使用abstract關鍵字類定義。並且抽

原创 死磕多線程(6)-lock體系簡介

Lock體系: JDK1.5之後,增加java.util.concurrent.locks提供了與內建鎖完全不同的實現多線程共享資源訪問機制。失去了內建鎖隱式的加鎖與解鎖的過程,增加了 可中斷的獲取鎖 以及 超時獲取鎖 以

原创 JVM(1)-Java的內存區域劃分

一、JVM簡介 JVM是通過軟件模擬Java字節碼指令集,JVM只保留了PC寄存器,而普遍的虛擬機有很多寄存器 從JDK1.3至今,HotSport爲默認JVM 二、Java的內存區域劃分 1、線程私有內存:每個線程都有,彼此之間

原创 Scanner類的bug

Scanner類的bug 在用Scanner類進行讀入時,我發現了一個奇怪的現象: Scanner scanner = new Scanner(System.in); String name; name = scanner.nex

原创 死磕多線程(10)-線程池

一、線程池優點 降低資源消耗:通過重複利用已經創建的線程,降低線程創建與銷燬帶來的損耗 提高響應速度:當任務到達時,無需等待線程創建就可以立即執行 提高線程的可管理性:使用線程池可以統一進行線程分配,調度與監控 二、線程池的繼承關