1.
......代码段......
<script language="javascript">
alert("数据插入成功");
</script>
<%response.sendRedirect("adddoc.jsp");%>
</body>
</html>
以前我的意途是弹出一个对话框后再sendRedirect,因为JSP是在服务器端执行,所以必须这样:
<script language=javascript>
alert("数据插入成功");
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.
文本域插入数据库时有特殊符号可以这样:
prep = conn.prepareStatement("insert into table values(?)");
prep.setString(1, request.getParameter("text"));
//这样无论有什么特殊字符都自动搞掂,无需转换
6.
截取字符串函数,对网页中显示超长文字截短时使用:
**
* 将字符串截短,取前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.
产生不大于X的数并且这个数大于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.
关于抽象类的一些解释:
http://community.csdn.net/Expert/TopicView2.asp?id=4645044&datebasetype=now
13.
我喜欢这个链接:
http://topic.csdn.net/
14.
区别:
HASHSET:
此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证集合的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。
此类为基本操作提供了稳定性能,这些基本操作包括 add、remove、contains 和 size,假定哈希函数将这些元素正确地分布在桶中。对此集合进行迭代所需的时间与 HashSet 实例的大小(元素的数量)和底层 HashMap 实例(桶的数量)的“容量”的和成比例。因此,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。
注意,此实现不是同步的。 如果多个线程同时访问一个集合,而其中至少一个线程修改了该集合,那么它必须 保持外部同步。这通常是通过对自然封装该集合的对象执行同步操作来完成的。如果不存在这样的对象,则应该使用 Collections.synchronizedSet 方法来“包装”集合。最好在创建时完成这一操作,以防止对 HashSet 实例进行意外的不同步访问:
Set s = Collections.synchronizedSet(new HashSet(...));
此类的 iterator 方法返回的迭代器是快速失败 的:在创建迭代器之后,如果对集合进行修改,除非通过迭代器自身的 remove 方法,否则在任何时间以任何方式对其进行修改,Iterator 都将抛出 ConcurrentModificationException。因此,面对并发的修改,迭代器很快就会完全失败,而不冒将来在某个不确定时间发生任意不确定行为的风险。
注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器在尽最大努力抛出 ConcurrentModificationException。因此,为提高这类迭代器的正确性而编写一个依赖于此异常的程序是错误做法:迭代器的快速失败行为应该仅用于检测程序错误。
HASHMAP:
基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
此实现假定哈希函数将元素正确分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能。迭代集合视图所需的时间与 HashMap 实例的“容量”(桶的数量)及其大小(键-值映射关系数)的和成比例。所以,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。
HashMap 的实例有两个参数影响其性能:初始容量 和加载因子。容量 是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。加载因子 是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时,通过调用 rehash 方法将容量翻倍。
通常,默认加载因子 (.75) 在时间和空间成本上寻求一种折衷。加载因子过高虽然减少了空间开销,但同时也增加了查询成本(在大多数 HashMap 类的操作中,包括 get 和 put 操作,都反映了这一点)。在设置初始容量时应该考虑到映射中所需的条目数及其加载因子,以便最大限度地降低 rehash 操作次数。如果初始容量大于最大条目数除以加载因子,则不会发生 rehash 操作。
如果很多映射关系要存储在 HashMap 实例中,则相对于按需执行自动的 rehash 操作以增大表的容量来说,使用足够大的初始容量创建它将使得映射关系能更有效地存储。
注意,此实现不是同步的。如果多个线程同时访问此映射,而其中至少一个线程从结构上修改了该映射,则它必须 保持外部同步。(结构上的修改是指添加或删除一个或多个映射关系的操作;仅改变与实例已经包含的键关联的值不是结构上的修改。)这一般通过对自然封装该映射的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedMap 方法来“包装”该映射。最好在创建时完成这一操作,以防止对映射进行意外的不同步访问,如下所示:
Map m = Collections.synchronizedMap(new HashMap(...));
由所有此类的“集合视图方法”所返回的迭代器都是快速失败 的:在迭代器创建之后,如果从结构上对映射进行修改,除非通过迭代器自身的 remove 或 add 方法,其他任何时间任何方式的修改,迭代器都将抛出 ConcurrentModificationException。因此,面对并发的修改,迭代器很快就会完全失败,而不冒在将来不确定的时间任意发生不确定行为的风险。
注意,迭代器的快速失败行为不能得到保证,一般来说,存在不同步的并发修改时,不可能作出任何坚决的保证。快速失败迭代器尽最大努力抛出 ConcurrentModificationException。因此,编写依赖于此异常程序的方式是错误的,正确做法是:迭代器的快速失败行为应该仅用于检测程序错误。
---------------------------------------------------------
HashSet(散列表): 它实现了Set接口,也就意味着它的元素不能有重复值出现。并且在HashSet中没有get()方法,但可以通过iterator()来实现。要注意的是假如要在HasSet中存放一些对象,那么你得重定义hashCode()与equals()二个方法来保不可以存放相同的内容的元素。对于hashcode()所返回的值,hashset用它来计算(通过特定的函数)该对象在内存中的存放位置;后者主要用来判断二个对象的内容是否相等而返回对应的boolen型。
HashMap: 主要特点是存放的一个键值对,一些有用的方法是可返回视图(我觉得可以把它理解为一个集合)如:keyset(),values(),entyset()等。
15.
还是区别:
|
Collection是List Set的父接口,List是有序的,而Set中元素都是不能重复的;和Map接口搞清楚后,然后记住有什么样的数据结构 就有什么样的实现类,比如ArrayList,数组链表是由数组后推而成,可以使用LIST的接口操作这个链表,但是确有数组的特性(存取效率高),有堆栈的数据结构,就有Stack,有树结构,就有Tree,有散列表,就有Hashtable
16.
动态下拉表单:
<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中的内容,前提是personList是Collection类型的,而且封装的是一个包含personId,personName属性的对象
property显示的是value,labelProperty显示的是页面看到的内容
17.
Set接口中重写hashCode()会提高性能?
建议给自己写得class全部加上一个hashCode,否则会使用object的hashcode,全都一样,会导致很多问题。记得《Effective java》中有一条就是:如果你写了equals,必须要写hashcode,我的一位大佬讲equals调用前会先比较hashcode,若hashcode不相等则不会比较。set是不允许重复的,这意味着你加入set中的数据会和set中已有的数据进行比较,所以,一定要写hashcode,这样才能加快比较速度。hashcode也要写得好点,尽量避免碰撞
18.
在Struts技术中,“超级链接”使用ForwardAction类进行实现
三个必须有的属性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();
往数据库中插入日期方法
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标记的权重是1,CLASS的权重是10,ID的权重是100,继承的权重为0