admin 发布的文章

Dubbo是什么?

Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。
Dubbo[]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。

Spring集成

Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

Zookeeper集成

Dubbo采用全Zookeeper作为注册中心,服务提供者在此发布服务,服务消费者在此获取需要调用的服务。
有三个项目组成dubbo-api,dubbo-server,dubbo-client组成。

- 阅读剩余部分 -

try{

A.close();

B.close();

}catch (

Exception e) {}

建议修改为:

try{

A.close();

}catch (Exception e) {}

try{

B.close();

}catch (Exception e) { }

避免A.close()出现异常导致B.close();资源无法回收

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()操作。

至于最后一种方法的实现方式,还需要查查资料了。

 

 

一、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能够把它保存的记录根据键排序,默认是按升序排序。

开放 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