servlet中有个destroy()方法,servlet每次被调用完成后,都将被销毁不推荐使用后一种方法
解决方案 »
- 求各位大神帮忙,如何使用HQL获取序列
- 求助:几分钟之后的时间怎么得到
- S2SH项目中备份与恢复数据库问题?
- 向JAVA高手索要build.xml,100分赠
- VC调用java写的webservice,请大家帮忙啊
- jbuilderx的bt问题~~各位高手指点一下拉~~
- jboss+tomcat如何结合在一起的,菜菜的问题,,进来拿分把...
- 程序编译错误,兄弟们帮忙呀!
- Properties 是做什么用的啊?
- 一个html页面的搜索框不是form表单,那么如何往controller中传值?
- J2EE的源代码能不能下载到的?至少我希望能有Servlet,JSP的源代码。。。
- 郁闷,散分了--100,顺便问几个问题
2.多耗内存(影响不大)、执行效率低、没了编译时类型检查,易出错(最大的损失)。
对于第一点:执行效率低
因为一般程序里大量的都是String类型变量,所以在程序里都直接将HashMap.get出来的直接转换为String,在执行时,没什么过多的类型转换,应该没多大影响?
对于第二点:编译时类型检查
还是前面所说的,因为都是String类型,也转换成了String类型,也没多少类型检查,关于其他类型转换,内部控制一下就完了,少很多代码。非常高效。
我只是想这样在性能上会有多大影响。这种方式主要的问题在性能上。对JAVA实现的底层机制不清楚,所以弄不清在性能上有什么不同
public Object get(Object key) {
Entry tab[] = table; if (key != null) {
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;
for (Entry e = tab[index]; e != null; e = e.next)
if ((e.hash == hash) && key.equals(e.key))
return e.value;
} else {
for (Entry e = tab[0]; e != null; e = e.next)
if (e.key==null)
return e.value;
} return null;
}public Object put(Object key, Object value) {
// Makes sure the key is not already in the HashMap.
Entry tab[] = table;
int hash = 0;
int index = 0; if (key != null) {
hash = key.hashCode();
index = (hash & 0x7FFFFFFF) % tab.length;
for (Entry e = tab[index] ; e != null ; e = e.next) {
if ((e.hash == hash) && key.equals(e.key)) {
Object old = e.value;
e.value = value;
return old;
}
}
} else {
for (Entry e = tab[0] ; e != null ; e = e.next) {
if (e.key == null) {
Object old = e.value;
e.value = value;
return old;
}
}
} modCount++;
if (count >= threshold) {
// Rehash the table if the threshold is exceeded
rehash(); tab = table;
index = (hash & 0x7FFFFFFF) % tab.length;
} // Creates the new entry.
Entry e = new Entry(hash, key, value, tab[index]);
tab[index] = e;
count++;
return null;
}
想必不用多说吧2. 对于编译时类型检查,指的是如果通过方法调用,编译器能检查出调用的方法对不对,而用HashMap,key的大小写不对,或有拼写错误,要到运行时才能发现,或者运行时也不能发现,当由于这些错误引起页面中某个数据出不来,而数据库中确实有数据时,查起错来很痛苦的。而在编程时,很多错误都是拼写错误。
牺牲点性能没什么关系,在某些情况下,这些都是不同程度的妥协。
如果从绝对的角度上要讲究性能,那根本不用OO,只用以前的面向过程,性能不是更好。
如果系统上了,某些地方性能不如意,再进行针对性的优化,更好。
所以,这些都是从综合角度去考虑的。
其次,拼写错误,从来没犯过,因为KEY一般都对应数据库字段。直接从字段名COPY过来,绝不会错。