一些基礎概念 Day27 2018-12-17
物件導向, 類載入器, JDBC, Spring 基礎概念
為什麼說Java是一門平臺無關語言?
平臺無關實際的含義是“一次編寫到處執行”。Java 能夠做到是因為它的位元組碼(byte code)可以執行在任何作業系統上,與底層系統無關。為什麼 Java 不是100%物件導向?
Java 不是100%物件導向,因為它包含8個原始資料型別,例如 boolean、byte、char、int、float、double、long、short。它們不是物件。什麼是 singleton class,如何建立一個 singleton class?
Singleton class 在任何時間同一個 JVM 中只有一個例項。可以把建構函式加 private 修飾符建立 singleton。什麼是多型?
多型簡單地說“一個介面,多種實現”。多型的出現使得在不同的場合同一個介面能夠提供不同功能,具體地說可以讓變數、函式或者物件能夠提供多種功能。下面是多型的兩種型別:
編譯時多型
執行時多型
編譯時多型主要是對方法進行過載(overload),而執行時多型主要通過使用繼承或者實現介面。
什麼是執行時多型,也稱動態方法分配?
在 Java 中,執行時多型或動態方法分配是一種在執行過程中的方法過載。在這個過程中,通過呼叫父類的變數引用被過載的方法。下面是一個例子:
class Car {
void run()
{
System.out.println(“car is running”);
}
}
class Audi extends Car {
void run()
{
System.out.prinltn(“Audi is running safely with 100km”);
}
public static void main(String args[])
{
Car b= new Audi(); //向上轉型
b.run();
}
}
- Java類載入器包括幾種?它們之間的關係是怎麼樣的?
Java 類載入器有:
引導類載入器(bootstrap class loader):只載入 JVM 自身需要的類,包名為 java、javax、sun 等開頭。
擴充套件類載入器(extensions class loader):載入 JAVA_HOME/lib/ext 目錄下或者由系統變數 -Djava.ext.dir 指定位路徑中的類庫。
應用程式類載入器(application class loader):載入系統類路徑 java -classpath 或 -Djava.class.path 下的類庫。
自定義類載入器(java.lang.classloder):繼承 java.lang.ClassLoader 的自定義類載入器。
注意:-Djava.ext.dirs 會覆蓋 Java 本身的 ext 設定,造成 JDK 內建功能無法使用。可以像下面這樣指定引數:
1
-Djava.ext.dirs=./plugin:$JAVA_HOME/jre/lib/ext。
它們的關係如下:
啟動類載入器,C++實現,沒有父類。
擴充套件類載入器(ExtClassLoader),Java 實現,父類載入器為 null。
應用程式類載入器(AppClassLoader),Java 實現,父類載入器為 ExtClassLoader 。
自定義類載入器,父類載入器為AppClassLoader。
- 什麼是JDBC驅動?
JDBC Driver 是一種實現 Java 應用與資料庫互動的軟體。JDBC 驅動有下面4種:
JDBC-ODBC bridge 驅動
Native-API 驅動(部分是 Java 驅動)
網路協議驅動(全部是 Java 驅動)
Thin driver(全部是 Java 驅動)
- 使用 Java 連線資料庫有哪幾步?
註冊驅動類
新建資料庫連線
新建語句(statement)
查詢
關閉連線 - 列舉Spring配置中常用的重要註解。
下面是一些重要的註解:
@Required
@Autowired
@Qualifier
@Resource
@PostConstruct
@PreDestroy
- Spring中的Bean是什麼?列舉Spring Bean的不同作用域。
Bean 是 Spring 應用的骨架。它們由 Spring IoC 容器管理。換句話說,Bean 是一個由 Spring IoC 容器初始化、裝配和管理的物件。
下面是 Spring Bean 的5種作用域:
Singleton:每個容器只建立一個例項,也是 Spring Bean 的預設配置。由於非執行緒安全,因此確保使用時不要在 Bean 中共享例項變數,一面出現資料不一致。
Prototype:每次請求時建立一個新例項。
Request:與 prototype 相同,區別在於只針對 Web 應用。每次 HTTP 請求時建立一個新例項。
Session:每次收到 HTTP 會話請求時由容器建立一個新例項。
全域性 Session:為每個門戶應用(Portlet App)建立一個全域性 Session Bean。
相關文章
- 產品手記|一些基礎概念
- 傳智黑馬java基礎學習——day27Java
- 領域驅動系列:澄清一些基礎概念
- Vue 基礎概念Vue
- MySQL基礎概念MySql
- HTTP基礎概念HTTP
- JVM 基礎概念JVM
- Vue基礎概念Vue
- Elaticsearch基礎概念
- Oracle基礎概念Oracle
- Bamboo基礎概念
- 1章 基礎概念
- java 基礎概念 (1)Java
- JavaScript WebGL 基礎概念JavaScriptWeb
- Elastic Stack基礎概念AST
- MySQL(一)基礎概念MySql
- ZooKeeper 概念與基礎
- tensorflow基礎概念
- Hadoop 基礎概念Hadoop
- 一、storm基礎概念ORM
- python基礎概念Python
- NestJS 基礎概念JS
- python基礎教程(2)python的一些基本概念Python
- 軟體測試面試必備的一些基礎理論概念面試
- Java基礎概念知識Java
- RocketMQ基礎概念之BrokerMQ
- 圖論(一)--基礎概念圖論
- Spring 5 基礎概念Spring
- 【Storm篇】--Storm基礎概念ORM
- 音視訊基礎概念
- ApacheStorm官方文件——基礎概念ApacheORM
- Python 基礎概念篇Python
- Activiti 基礎概念 筆記筆記
- RAID基礎概念整理AI
- 分包基礎概念+使用分包
- 監督學習基礎概念
- RabbitMQ 入門之基礎概念MQ
- PHP 物件導向基礎概念PHP物件