一、unix:
1.ps -ef|grep tomcat
2.mkdir dir
3.打tar包:tar -cvf XXX.tar XXX
4.解壓tar包:tar -xvf XXX.tar
二、java
1.HashMap和HashTable的區(qū)別:HashMap不是線程安全的,HashTable是線程安全的
HashTable不允許null值(key和value都不可以),HashMap允許null值(key和value都可以)。
HashTable使用Enumeration,HashMap使用Iterator。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。
Hashtable是基于陳舊的Dictionary類,完成了Map接口;HashMap是Java 1.2引進(jìn)的Map接口的一個(gè)實(shí)現(xiàn)(HashMap繼承于AbstractMap,AbstractMap完成了Map接口)。
HashTable中hash數(shù)組默認(rèn)大小是11,增加的方式是 old*2+1。HashMap中hash數(shù)組的默認(rèn)大小是16,而且一定是2的指數(shù)。
哈希值的使用不同,HashTable直接使用對(duì)象的hashCode。
2.什么是java的序列化?如何實(shí)現(xiàn)java的序列化:
序列化就是一種用來處理對(duì)象流的機(jī)制,所謂對(duì)象流也就是將對(duì)象的內(nèi)容進(jìn)行流化。可以對(duì)流化后的對(duì)象進(jìn)行讀寫操作,也可將流化后的對(duì)象傳輸于網(wǎng)絡(luò)之間。序列化是為了解決在對(duì)對(duì)象流進(jìn)行讀寫操作時(shí)所引發(fā)的問題。
序列化的實(shí)現(xiàn):將需要被序列化的類實(shí)現(xiàn)Serializable接口,然后使用一個(gè)輸出流(如:FileOutputStream)來構(gòu)造一個(gè)ObjectOutputStream(對(duì)象流)對(duì)象,接著,使用ObjectOutputStream對(duì)象的writeObject(Object obj)方法就可以將參數(shù)為obj的對(duì)象寫出(即保存其狀態(tài)),要恢復(fù)的話則用輸入流。
3.什么是java的單例模式?寫一個(gè)單例模式;
單例模式:確保某一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。這個(gè)類稱為單例類。
代碼清單1:餓漢式單例類
public class EagerSingleton
{
private static final EagerSingleton m_instance = new EagerSingleton();
/**
* 私有的默認(rèn)構(gòu)造方法
*/
private EagerSingleton() { }
/**
* 靜態(tài)方法獲得單例
*/
public static EagerSingleton getInstance()
{
return m_instance;
}
}
代碼清單2:懶漢式單例類
package com.javapatterns.singleton.demos;
public class LazySingleton
{
private static LazySingleton m_instance = null;
/**
* 私有的默認(rèn)構(gòu)造方法,保證外界無法直接實(shí)例化
*/
private LazySingleton() { }
/**
* 靜態(tài)方法,返還此類的惟一實(shí)例
*/
public synchronized static LazySingleton getInstance()
{
if (m_instance == null)
{
m_instance = new LazySingleton();
}
return m_instance;
}
}
4.靜態(tài)塊與構(gòu)造器在繼承中的執(zhí)行順序:
public class TestExeuteOrder {
public static void main(String[] args) {
Parent p = new ChildTest();
p = new ChildTest();
}
}
class ChildTest extends Parent{
static{
System.out.println("in child static");
}
public ChildTest(){
System.out.println("in child construtor");
}
}
class Parent{
static{
System.out.println("in parent static");
}
public Parent(){
System.out.println("in parent construtor");
}
}運(yùn)行結(jié)果:in parent static
in child static
in parent construtor
in child construtor
in parent construtor
in child construtor5.成員內(nèi)部類:public class TestExeuteOrder{
class Inner{
void test(){
if(TestExeuteOrder.this.flag){
System.out.println("what a funny");
}
}
}
private boolean flag = true;
public TestExeuteOrder(){
new Inner().test();
}
public static void main(String[] args){
new TestExeuteOrder();
}
}運(yùn)行結(jié)果:what a funny6.參數(shù)傳遞:public class TestExeuteOrder{
public static void main(String[] args){
String a = "ello";
TestExeuteOrder t = new TestExeuteOrder();
t.change(a);
System.out.println(a);
}
public void change(String str){
str += "H";
}
}結(jié)果:ello7.參數(shù)傳遞2:public class TestExeuteOrder{
public static void main(String[] args){
StringBuffer x = new StringBuffer("A");
StringBuffer y = new StringBuffer("B");
change(x,y);
System.out.println(x+" "+y);
}
public static void change(StringBuffer a,StringBuffer b){
a.append(b);
b = a;
}
}結(jié)果為:AB B8.public class TestExeuteOrder{
public static void main(String[] args){
String a = "good";
char[] b = new char[]{'a','b','c'};
method(a,b);
System.out.println("a="+a+"------>b="+new String(b));
}
public static void method(String a,char[] b){
a = "Test ok";
b[0] = 'g';
}
}
結(jié)果:
a=good------>b=gbc
三、SQL:
1.存儲(chǔ)過程與函數(shù)的區(qū)別:
1)前者,程序頭部聲明用的是procedure;后者,程序頭部聲明用的是function;
2)前者,不需要描述返回類型,后者需要;
3)前者可以作為一個(gè)獨(dú)立的pl/sql語句來執(zhí)行;后者不能獨(dú)立運(yùn)行,必須作為表達(dá)式的一部分條用;
4)sql語句中不可調(diào)用procedure,但可以調(diào)用function;
2.查詢student表中name重復(fù)的記錄:
select * from student where name in(select name from student group by sname having count(*) >1);3.table表中有兩列A,B,如果A>B選擇A,如果A<B,選擇B:
select( case when s1.A>s1.B then s1.A when s1.A<s1.B then s1.B end) re from student s1;
Gavin