1.
......代碼段......
<script language="javascript">
alert("數(shù)據(jù)插入成功");
</script>
<%response.sendRedirect("adddoc.jsp");%>
</body>
</html>
以前我的意途是彈出一個對話框后再sendRedirect,因為JSP是在服務(wù)器端執(zhí)行,所以必須這樣:
<script language=javascript>
alert("數(shù)據(jù)插入成功");
location.href="adddoc.jsp";
</script>
2.
select * from table1 where ghy1 like '[a-z]'
這個語句查詢A-Z的單個字母
如果一個人的名字是AA,,ZZ就查詢不出來,何解:
select * from table1 where left(ghy1,1) between 'a' and 'z'
select * from table1 where ghy1 like '[a-z]%'
3.
隨機抽取記錄:
select top n * from tablename order by newid()
4.
使文本框和密碼框高度一致:
<input type="text" style="height=20.0pt"><input type="password" style="height=20.0pt">
5.
文本域插入數(shù)據(jù)庫時有特殊符號可以這樣:
prep = conn.prepareStatement("insert into table values(?)");
prep.setString(1, request.getParameter("text"));
//這樣無論有什么特殊字符都自動搞掂,無需轉(zhuǎn)換
6.
截取字符串函數(shù),對網(wǎng)頁中顯示超長文字截短時使用:
**
* 將字符串截短,取前n個字符,英文算半個字符。
* @param orignalString 原字符串
* @param length 長度
* @param chopedString 超過部分的表示字符串
* @return 截取的字符串
*/
public static String chop(String orignalString,int length,String chopedString) {
if (orignalString==null||orignalString.length()==0) {
return orignalString;
}
orignalString=orignalString.replaceAll(" "," ");
if (orignalString.length()<length) {
return orignalString;
}
StringBuffer buffer=new StringBuffer(length);
length=length*2;
int count=0;
int stringLength=orignalString.length();
int i=0;
for (;count<length&&i<stringLength;i++) {
char c=orignalString.charAt(i);
if (c<'\u00ff') {
count++;
} else {
count+=2;
}
buffer.append(c);
}
if (i<stringLength) {
buffer.append(chopedString);
}
return buffer.toString();
}
7.
產(chǎn)生不大于X的數(shù)并且這個數(shù)大于Y
X-(X-Y)*Math.random()
8.
一個初始化的基本概念:
class Test{
int i ; //class 的成員
public void test() {
System.out.println(i);//編譯通過
int j ; //不是class的成員,必須手動初始化
System.out.println(j); //失敗
}
}
9.
頁面上有一錨點,點擊按鈕去定位到錨點
<input type=button onclick= "window.location.href = '#anchorName' " >
10.
在JSP文件中的<%%>中怎么“大語句段”注釋?
<%--
--% >
11.
使table列寬固定:
<table style= "word-break:break-all " >
12.
關(guān)于抽象類的一些解釋:
http://community.csdn.net/Expert/TopicView2.asp?id=4645044&datebasetype=now
13.
我喜歡這個鏈接:
http://topic.csdn.net/
14.
區(qū)別:
HASHSET:
此類實現(xiàn) Set 接口,由哈希表(實際上是一個 HashMap 實例)支持。它不保證集合的迭代順序;特別是它不保證該順序恒久不變。此類允許使用 null 元素。
此類為基本操作提供了穩(wěn)定性能,這些基本操作包括 add、remove、contains 和 size,假定哈希函數(shù)將這些元素正確地分布在桶中。對此集合進行迭代所需的時間與 HashSet 實例的大小(元素的數(shù)量)和底層 HashMap 實例(桶的數(shù)量)的“容量”的和成比例。因此,如果迭代性能很重要,則不要將初始容量設(shè)置得太高(或?qū)⒓虞d因子設(shè)置得太低)。
注意,此實現(xiàn)不是同步的。 如果多個線程同時訪問一個集合,而其中至少一個線程修改了該集合,那么它必須 保持外部同步。這通常是通過對自然封裝該集合的對象執(zhí)行同步操作來完成的。如果不存在這樣的對象,則應該使用 Collections.synchronizedSet 方法來“包裝”集合。最好在創(chuàng)建時完成這一操作,以防止對 HashSet 實例進行意外的不同步訪問:
Set s = Collections.synchronizedSet(new HashSet(...));
此類的 iterator 方法返回的迭代器是快速失敗 的:在創(chuàng)建迭代器之后,如果對集合進行修改,除非通過迭代器自身的 remove 方法,否則在任何時間以任何方式對其進行修改,Iterator 都將拋出 ConcurrentModificationException。因此,面對并發(fā)的修改,迭代器很快就會完全失敗,而不冒將來在某個不確定時間發(fā)生任意不確定行為的風險。
注意,迭代器的快速失敗行為無法得到保證,因為一般來說,不可能對是否出現(xiàn)不同步并發(fā)修改做出任何硬性保證。快速失敗迭代器在盡最大努力拋出 ConcurrentModificationException。因此,為提高這類迭代器的正確性而編寫一個依賴于此異常的程序是錯誤做法:迭代器的快速失敗行為應該僅用于檢測程序錯誤。
HASHMAP:
基于哈希表的 Map 接口的實現(xiàn)。此實現(xiàn)提供所有可選的映射操作,并允許使用 null 值和 null 鍵。(除了不同步和允許使用 null 之外,HashMap 類與 Hashtable 大致相同。)此類不保證映射的順序,特別是它不保證該順序恒久不變。
此實現(xiàn)假定哈希函數(shù)將元素正確分布在各桶之間,可為基本操作(get 和 put)提供穩(wěn)定的性能。迭代集合視圖所需的時間與 HashMap 實例的“容量”(桶的數(shù)量)及其大小(鍵-值映射關(guān)系數(shù))的和成比例。所以,如果迭代性能很重要,則不要將初始容量設(shè)置得太高(或?qū)⒓虞d因子設(shè)置得太低)。
HashMap 的實例有兩個參數(shù)影響其性能:初始容量 和加載因子。容量 是哈希表中桶的數(shù)量,初始容量只是哈希表在創(chuàng)建時的容量。加載因子 是哈希表在其容量自動增加之前可以達到多滿的一種尺度。當哈希表中的條目數(shù)超出了加載因子與當前容量的乘積時,通過調(diào)用 rehash 方法將容量翻倍。
通常,默認加載因子 (.75) 在時間和空間成本上尋求一種折衷。加載因子過高雖然減少了空間開銷,但同時也增加了查詢成本(在大多數(shù) HashMap 類的操作中,包括 get 和 put 操作,都反映了這一點)。在設(shè)置初始容量時應該考慮到映射中所需的條目數(shù)及其加載因子,以便最大限度地降低 rehash 操作次數(shù)。如果初始容量大于最大條目數(shù)除以加載因子,則不會發(fā)生 rehash 操作。
如果很多映射關(guān)系要存儲在 HashMap 實例中,則相對于按需執(zhí)行自動的 rehash 操作以增大表的容量來說,使用足夠大的初始容量創(chuàng)建它將使得映射關(guān)系能更有效地存儲。
注意,此實現(xiàn)不是同步的。如果多個線程同時訪問此映射,而其中至少一個線程從結(jié)構(gòu)上修改了該映射,則它必須 保持外部同步。(結(jié)構(gòu)上的修改是指添加或刪除一個或多個映射關(guān)系的操作;僅改變與實例已經(jīng)包含的鍵關(guān)聯(lián)的值不是結(jié)構(gòu)上的修改。)這一般通過對自然封裝該映射的對象進行同步操作來完成。如果不存在這樣的對象,則應該使用 Collections.synchronizedMap 方法來“包裝”該映射。最好在創(chuàng)建時完成這一操作,以防止對映射進行意外的不同步訪問,如下所示:
Map m = Collections.synchronizedMap(new HashMap(...));
由所有此類的“集合視圖方法”所返回的迭代器都是快速失敗 的:在迭代器創(chuàng)建之后,如果從結(jié)構(gòu)上對映射進行修改,除非通過迭代器自身的 remove 或 add 方法,其他任何時間任何方式的修改,迭代器都將拋出 ConcurrentModificationException。因此,面對并發(fā)的修改,迭代器很快就會完全失敗,而不冒在將來不確定的時間任意發(fā)生不確定行為的風險。
注意,迭代器的快速失敗行為不能得到保證,一般來說,存在不同步的并發(fā)修改時,不可能作出任何堅決的保證。快速失敗迭代器盡最大努力拋出 ConcurrentModificationException。因此,編寫依賴于此異常程序的方式是錯誤的,正確做法是:迭代器的快速失敗行為應該僅用于檢測程序錯誤。
---------------------------------------------------------
HashSet(散列表): 它實現(xiàn)了Set接口,也就意味著它的元素不能有重復值出現(xiàn)。并且在HashSet中沒有g(shù)et()方法,但可以通過iterator()來實現(xiàn)。要注意的是假如要在HasSet中存放一些對象,那么你得重定義hashCode()與equals()二個方法來保不可以存放相同的內(nèi)容的元素。對于hashcode()所返回的值,hashset用它來計算(通過特定的函數(shù))該對象在內(nèi)存中的存放位置;后者主要用來判斷二個對象的內(nèi)容是否相等而返回對應的boolen型。
HashMap: 主要特點是存放的一個鍵值對,一些有用的方法是可返回視圖(我覺得可以把它理解為一個集合)如:keyset(),values(),entyset()等。
15.
還是區(qū)別:
|
Collection是List Set的父接口,List是有序的,而Set中元素都是不能重復的;和Map接口搞清楚后,然后記住有什么樣的數(shù)據(jù)結(jié)構(gòu) 就有什么樣的實現(xiàn)類,比如ArrayList,數(shù)組鏈表是由數(shù)組后推而成,可以使用LIST的接口操作這個鏈表,但是確有數(shù)組的特性(存取效率高),有堆棧的數(shù)據(jù)結(jié)構(gòu),就有Stack,有樹結(jié)構(gòu),就有Tree,有散列表,就有Hashtable
16.
動態(tài)下拉表單:
<TR>
<TD><bean:message key="user.jsp.deid"/></TD>
<TD>
<SELECT name="deid">
<logic:iterate id="depart" name="departarray1" >
<option value="<bean:write name="depart" property="deId"/>">
<bean:write name="depart" property="deName"/>
</option>
</logic:iterate>
</SELECT>
</TD>
</TD>
</TR>
---------------------------------------
<html:select property="personnelId">
<html:option value="">請選擇</html:option>
<html:options collection="personList" property="personId" labelProperty="personName"/>
</html:select>
html:options自動幫你迭代personList中的內(nèi)容,前提是personList是Collection類型的,而且封裝的是一個包含personId,personName屬性的對象
property顯示的是value,labelProperty顯示的是頁面看到的內(nèi)容
17.
Set接口中重寫hashCode()會提高性能?
建議給自己寫得class全部加上一個hashCode,否則會使用object的hashcode,全都一樣,會導致很多問題。記得《Effective java》中有一條就是:如果你寫了equals,必須要寫hashcode,我的一位大佬講equals調(diào)用前會先比較hashcode,若hashcode不相等則不會比較。set是不允許重復的,這意味著你加入set中的數(shù)據(jù)會和set中已有的數(shù)據(jù)進行比較,所以,一定要寫hashcode,這樣才能加快比較速度。hashcode也要寫得好點,盡量避免碰撞
18.
在Struts技術(shù)中,“超級鏈接”使用ForwardAction類進行實現(xiàn)
三個必須有的屬性path parameter type
例:
<action path="/viewsignin" parameter="/security/signin.jsp" type="org.apache.struts.actions.ForwardAction"/>
19.
Date now=new Date();
Timestamp ts = new Timestamp(now.getTime());
ps.setTimestamp(8, ts);
ps.executeUpdate();
往數(shù)據(jù)庫中插入日期方法
20.
<td height="50" align="left" valign="top" style="position:relative"><div id="Layer2" style="position:absolute; width:132px; height:38px; z-index:2; left: 472px;">sdafasdf</div></td>
21.
驗證郵箱格式的正則表達式(Struts)
public ActionErrors validate(ActionMapping actionMapping,
HttpServletRequest httpServletRequest) {
String style =
"^[a-zA-Z][a-zA-Z0-9._-]*@([a-zA-Z0-9-_]+\\.)+(com|gov|net|com\\.cn|edu\\.cn)$";
Pattern ptt = Pattern.compile(style);
Matcher mch=ptt.matcher(email);
ActionErrors errors = new ActionErrors();
if ((name == null || name.equals(""))) {
ActionError error = new ActionError("error.name");
errors.add("name", error);
} else
if (!mch.matches()) {
ActionError error = new ActionError("error.email");
errors.add("email", error);
}
return errors;
}
|
22.
自動隔行換背景的css
tr{
background-color:expression(rowIndex%2?'#ffffcc':'')
}
23.
SQL Server計算年齡,想象中簡單,其實很難:
declare @Birtyday smalldatetime
set @Birtyday ='2000-11-27'
--set @Birtyday =getdate()
select datediff(year,@Birtyday,getdate())
- case when datediff(day,dateadd(year,datediff(year,@Birtyday,getdate()),@Birtyday),getdate()) >= 0 then 0 else 1 end
24.
SmoothGallery 2.0在IE6中521行出錯,改正FIX如下:
changed code from:
function startGallery() { var myGallery = new gallery($('myGallery'), { timed: true }); } window.onDomReady(startGallery);
changed code to:
function startGallery() { var myGallery = new gallery($('myGallery'), { timed: true, embedLinks:false, textShowCarousel:'Show Gallery'}); myGallery.showCarousel(); } window.addEvent('domready',startGallery);
25.
sc create svn binpath= "C:\svn-win32-1.4.6\svn-win32-1.4.6\bin\svnserve.exe --service -r G:\svnproject" displayname= "Subversion Server" depend= Tcpip start= auto
26.
HTML標記的權(quán)重是1,CLASS的權(quán)重是10,ID的權(quán)重是100,繼承的權(quán)重為0