1. forward和redirect區別
forward方式:request.getRequestDispatcher("/somePage.jsp").forward(request, response);
redirect方式:response.sendRedirect("/somePage.jsp");
a.從地址欄顯示來說
forward是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,然後把這些內容
再發給瀏覽器.瀏覽器根本不知道服務器發送的內容從哪裏來的,所以它的地址欄還是原來的地址.
redirect是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器重新去請求那個地址.所以地址欄顯示的是新的URL.所
以redirect等於客戶端向服務器端發出兩次request,同時也接受兩次response。
2.從數據共享來說
forward:轉發頁面和轉發到的頁面可以共享request裏面的數據.
redirect:不能共享數據.
參考文章:http://blog.csdn.net/tenor/article/details/4077079
2.abstract class和interface有什麼異同
抽象類,使部分抽象,它是可以帶有一些有方法體的方法的
接口,的所有方法都是抽象的
抽象類是模板,接口是規範
相同點:
a.不能實例化;
b.包含未實現的方法聲明;
c.派生類必須實現未實現的方法,抽象類是抽象方法,接口則是所有成員(不僅是方法包括其他成員);
不同點:
a.接口是抽象類的變體,接口中所有的方法都是抽象的。而抽象類是聲明方法的存在而不去實現它的類。
b.接口可以多繼承,抽象類不行
c.接口定義方法,不能實現,而抽象類可以實現部分方法。
d.接口中基本數據類型爲static 而抽類象不是的
抽象類中可以有成員變量(包含靜態成員變量)、屬性、常量和靜態方法,並且他們可以是非公共的;而接口中不能有成員變量、常量、靜態方法,只能有公共的屬性。
參考文章:
http://wenku.baidu.com/link?url=GvMSf6IEn9zBOMtAuCgSrgVJWaNcYHiOeYmedLjkDOk-MxMjfVW_gmu8y3joFWmBQsLVMNLubf6eNv8K9E76kVJeAWFUoBqZChYDnBu1huS
http://blog.csdn.net/fenglibing/article/details/2745123
3. 接口是否可繼承接口? 抽象類是否可實現(implements)接口? 抽象類是否可繼承實體類(concrete class)?
接口可以繼承接口;
抽象類可以實現(implements)接口;
抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數;
4. 列數據以逗號分隔
group_concat()可用來行轉列
select id,group_concat(name) from aa group by id;
Oracle 10g開始提供wmsys.wm_concat,它可以幫助我們把行的值以逗號隔開
select t.rank, WMSYS.WM_CONCAT(t.Name) TIME From t_menu_item t GROUP BY t.rank;
5. 符號意義
==操作比較的是兩個變量的值是否相等,對於引用型變量表示的是兩個變量在堆中存儲的地址是否相同,即棧中的內容是否相同。
alert('0'==0);//true
alert('0'===0);//false
alert(undefined==null);//true
alert(null===0);//false
兩個等於會自動類型轉換後比較;三個等於必須是同樣的類型同樣的值進行比較。
Java的位運算符:與(&)、非(~)、或(|)、異或(^)
~ 按位非(NOT)(一元運算)
& 按位與(AND)
| 按位或(OR)
^ 按位異或(XOR)
>> 右移
>>> 右移,左邊空出的位以0填充
<< 左移
&= 按位與賦值
|= 按位或賦值
^= 按位異或賦值
>>= 右移賦值
>>>= 右移賦值,左邊空出的位以0填充
<<= 左移賦值
> 表示大於,如:if(a>b)...結果是boolean類型
>> 表示帶符號右移,如:int i=15; i>>2的結果是3,移出的部分將被拋棄。
轉爲二進制的形式可能更好理解,0000 1111(15)右移2位的結果是0000 0011(3),0001 1010(18)右移3位的結果是0000 0011(3)。
>>> 無符號右移:
按二進制形式把所有的數字向右移動對應位數,低位移出(捨棄),高位的空位補零。對於正數來說和帶符號右移相同,對於負數來說不同。其他結構和>>相似
6. 關於飛機繞地球飛行一圈的加油問題
http://blog.csdn.net/hinyunsin/article/details/6632062
7. 讀取文件內容並排序
File file = new File("C:\\Users\\user\\Desktop\\a.txt");
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String value = null;
Set set = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if(Integer.valueOf(o1)>Integer.valueOf(o2)){
return 1;
}else if(Integer.valueOf(o1)<Integer.valueOf(o2)){
return -1;
}
return 0;
}
});
try {
while((value=br.readLine())!=null){
System.out.println(value);
String[] t = value.split(" ");
for(String s1:t){
set.add(s1);
}
}
System.out.println("排序後結果:");
StringBuffer res = new StringBuffer("");
Iterator iterator = set.iterator();
while(iterator.hasNext()){
res.append(iterator.next()).append(" ");
}
System.out.print(res);
FileWriter fw = new FileWriter("C:\\Users\\user\\Desktop\\a_res.txt");
fw.write(res.toString());
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
8. js中的escape、unescape功能
escape: 對String對象編碼以便它們能在所有計算機上可讀,escape方法返回一個包含了charstring內容的字符串值(Unicode格式)
unescape: 解碼用escape方法進行了編碼的String對象
參考文章:http://yowukesa.iteye.com/blog/573588