# JSP 簡答題
JSP 中動態 include 與靜態 include 的區別?
> 動態 include: `<jsp:include page="included.jsp" flush="true" />`
> 靜態 include:`<%@ include file="included.htm" %> `
> 1、靜態導入是將被導入頁面的代碼完全融入,兩個頁面融合成一個整體 Servlet;而動態導入則是在 Servlet 中使用 include 方法來引入被導入頁面的內容。
> 2、靜態導入時被導入頁面的編譯指令會起作用;而動態導入時被導入頁面的編譯指令則失去作用,只是插入被導入頁面的 body 內容。
> 3、動態包含還可以增加額外的參數。
---
# Java 簡答題
什么是數據庫連接池?
> 數據庫連接是一種有限的昂貴的資源,數據庫連接影響到程序的性能指標。數據庫連接池正是針對這個問題提出來的。數據庫連接池負責分配、管理和釋放數據庫連接,它允許應用程序重復使用一個現有的數據庫連接,而再不是重新建立一個;釋放空閑時間超過最大空閑時間的數據庫連接來避免因為沒有釋放數據庫連接而引起的數據庫連接遺漏。這項技術能明顯提高對數據庫操作的性能。
---
# Java 簡答題
HashMap 和 Hashtable 的區別?
1、繼承的歷史不同
~~~
public class Hashtable extends Dictionary implements Map
public class HashMap extends AbstractMap implements Map
~~~
Hashtable 是繼承自 Dictionary 類的,而 HashMap 則是 Java 1.2 引進的 Map 接口的一個實現。
2、安全性不同
HashMap 是非 synchronized,效率上比 hashTable 要高,而 HashTable 在默認的情況下是 synchronized,這意味著 HashTable 是線程安全的,多個線程可以共享一個 HashTable;而如果沒有正確的同步的話,多個線程是不能共享 HashMap 的。Java 5以后提供了 ConcurrentHashMap,它是 HashTable 的替代,比 HashTable 的擴展性更好。當然,我們可以通過以下方法讓 HashMap 同步:
~~~
Map m = Collections.synchronizeMap(hashMap);
~~~
3、是否可為空值的異同
HashMap 可以讓你將空值作為一個表條目的 key 或 value 。HashMap 中只有一條記錄可以是一個空的 key,但任意數量的條目可以是空的 value。這就是說,如果在表中沒有發現搜索鍵,或者如果發現了搜索鍵,但它是一個空的值,那么 get() 將返回 null;而 HashTable 則不行,key 和 value 都不允許出現 null 值。