JAVA 对资源的close()建议分开操作
try{
A.close();
B.close();
}catch (
Exception e) {}
建议修改为:
try{
A.close();
}catch (Exception e) {}
try{
B.close();
}catch (Exception e) { }
避免A.close()出现异常导致B.close();资源无法回收
JAVA Integer转String各方法对比
Integer 转为String三种方法有以下三种方法,
Integer obj=1;
1:String.valueOf(obj);
2:obj.toString();
3:""+obj;
我们分别按照以上方法循环执行以上操作,代码如下:
public static void main(String[] args) {
int loopTime = 50000;
Integer i = 0;
long startTime = System.currentTimeMillis();
String str = null;
for (int j = 0; j < loopTime; j++) {
str = String.valueOf(i);
}
System.out.println("String.valueOf():" + (System.currentTimeMillis() - startTime) + "ms");
startTime = System.currentTimeMillis();
for (int j = 0; j < loopTime; j++) {
str = i.toString();
}
System.out.println("Integer.toString():" + (System.currentTimeMillis() - startTime) + "ms");
startTime = System.currentTimeMillis();
for (int j = 0; j < loopTime; j++) {
str = i + "";
}
System.out.println("i + \"\":" + (System.currentTimeMillis() - startTime) + "ms");
}
执行结果如下,基本就在以下结果附近徘徊
String.valueOf():5ms
Integer.toString():2ms
i + "":9ms
可见Integer.toString(),执行时间最短最快,自己在做的过程中很多地方却用了第三种方式。我们看看String.valueOf()的源码:
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
可以看出前两者实现相差不大,只是多做了一次为空的判断,也许我们在在做转换的时候就已经做了。所以我们在做转字符串操作时,尽量用Integer.toString()操作。
至于最后一种方法的实现方式,还需要查查资料了。
JAVA基础知识点(1)
一、String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?
1、String是字符串常量,StringBuffer和StringBuilder都是字符串变量。后两者的字符内容可变,而前者创建后内容不可变。
2、String不可变是因为在JDK中String类被声明为一个final类。
3、StringBuffer是线程安全的,而StringBuilder是非线程安全的。
ps:线程安全会带来额外的系统开销,所以StringBuilder的效率比StringBuffer高。如果对系统中的线程是否安全很掌握,可用StringBuffer,在线程不安全处加上关键字Synchronize。
二、Vector,ArrayList, LinkedList的区别是什么?
答: 1、Vector、ArrayList都是以类似数组的形式存储在内存中,LinkedList则以链表的形式进行存储。
2、List中的元素有序、允许有重复的元素,Set中的元素无序、不允许有重复元素。
3、Vector线程同步,ArrayList、LinkedList线程不同步。
4、LinkedList适合指定位置插入、删除操作,不适合查找;ArrayList、Vector适合查找,不适合指定位置的插入、删除操作。
5、ArrayList在元素填满容器时会自动扩充容器大小的50%,而Vector则是100%,因此ArrayList更节省空间。
三、HashTable, HashMap,TreeMap区别?
答: 1、HashTable线程同步,HashMap非线程同步。
2、HashTable不允许<键,值>有空值,HashMap允许<键,值>有空值。
3、HashTable使用Enumeration,HashMap使用Iterator。
4、HashTable中hash数组的默认大小是11,增加方式的old*2+1,HashMap中hash数组的默认大小是16,增长方式一定是2的指数倍。
5、TreeMap能够把它保存的记录根据键排序,默认是按升序排序。
centos6 iptables简单操作
开放 80端口 iptables -I INPUT -p tcp --dport 80 -j ACCEPT
禁止访问 80端口 iptables -I INPUT -p tcp --dport 80 -j DROP
设置好以后保存:service iptables save
保存以后重启:service iptables restart