1、數據庫連接池的運行機制
(1) 程序初始化時創建連接池
(2) 使用時向連接池申請可用連接
(3) 使用完畢,將連接返還給連接池
(4) 程序退出時,斷開所有連接,並釋放資源
2、3.1643是float還是double?
java中帶有小數點的默認爲double型,float型需要加f標記
3、單例模式
* 單例模式最優方案
* 線程安全 並且效率高
*
*/
public class SingletonTest {
// 定義一個私有構造方法
private SingletonTest() {
}
//定義一個靜態私有變量(不初始化,不使用final關鍵字,使用volatile保證了多線程訪問時instance變量的可見性,避免了instance初始化時其他變量屬性還沒賦值完時,被另外線程調用)
private static volatile SingletonTest instance;
//定義一個共有的靜態方法,返回該類型實例
public static SingletonTest getIstance() {
// 對象實例化時與否判斷(不使用同步代碼塊,instance不等於null時,直接返回對象,提高運行效率)
if (instance == null) {
//同步代碼塊(對象未初始化時,使用同步代碼塊,保證多線程訪問時對象在第一次創建後,不再重複被創建)
synchronized (SingletonTest.class) {
//未初始化,則初始instance變量
if (instance == null) {
instance = new SingletonTest();
}
}
}
return instance;
}
}
4、冒泡排序
public void sort(int[] a)
{
int temp = 0;
for (int i = a.length - 1; i > 0; --i)
{
for (int j = 0; j < i; ++j)
{
if (a[j + 1] < a[j])
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
5、String與StringBuffer的區別
StringBuffer類的對象能夠被多次的修改,並且不產生新的未使用對象。
Java 中 StringBuffer 和 String 是有一定的區別的,
首先,String 是被 final 修飾的,他的長度是不可變
的,就算調用 String 的
concat 方法,那也是把字符串拼接起來並重新創建一個
對象,把拼接後的 String 的值賦給新創建的對象,而
StringBuffer 的長度是
可變的,調用StringBuffer 的 append 方法,來改變
StringBuffer 的長度,並且,相比較於 StringBuffer,
String 一旦發生長度變化,是非常耗費內存的!