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

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

对于一个从Windows转到Linux的童鞋来说,第一个最痛苦的事情一个就是怎么编辑文件!因为Linux一切皆文本,所以本次教程会教大家在Linux系统上面怎么进行编辑文件。

1.简单说明一下vim

Linux下的文本编辑器有很多种,vi是最常用的,也是各版本Linux的标配。注意,vi仅仅是一个文本编辑器,可以给字符着色,可以自动补全,但是不像 Windows下的 word 有排版功能。虽然命令繁多,并且大多数功能都是依靠键盘输入来完成,但是一旦你熟悉后,会发现vi的功能和效率是其他图形界面编辑器无法比拟的。

虽然vi的功能已经很全了,但是还有很多地方可以改进,所以才有Vim,Vim是Vi improved的缩写,是vi的改进版。vim不但可以使用不同的颜色显示文字内容,还能够进行如shell script, C program等程序编辑的功能,你可以将vim看着一款程序编辑器。


2.三种工作模式

- 阅读剩余部分 -

Centos

Mysql数据库从mysql5.1升级到mysql5.5以后无法启动,查看日志,发现有以下日志

170112  8:19:12 [ERROR] /usr/libexec/mysqld: unknown variable 'default-character-set=utf8'

170112  8:19:12 [ERROR] Aborting

修改:vi /etc/my.cnf配置文件

[mysqld]

port=3306

default-character-set = utf8

character_set_server = utf8

改为

port=3306

#default-character-set = utf8(注释掉)

character_set_server = utf8

再重启就OK了

public static void main1(String[] args) throws IOException, TemplateException {

Configuration cfg = new Configuration();

cfg.setDirectoryForTemplateLoading(new File("D:\\"));

Template template = null;

template = cfg.getTemplate("template.xml");

template.setEncoding("utf-8");

Map dataMap = new HashMap();

dataMap.put("name", "NAME");

File outFile = new File("D:\\file.doc");

Writer out = null;

out = new BufferedWriter(new OutputStreamWriter(

new FileOutputStream(outFile), "utf-8"));

template.process(dataMap, out);

out.close();

}

D:\\template.xml是模板,模板中动态数据用freemarker标签替换

D:\\file.doc是生成出的word文档