package com.lsy.java;
import org.junit.Test;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class WordCount {
@Test
public void testWordCount() {
FileReader fr = null;
BufferedWriter bw = null;
try {
Map<Character, Integer> map = new HashMap<Character, Integer>();
fr = new FileReader("dbcp.txt");
int c = 0;
while ((c = fr.read()) != -1) {
char ch = (char) c;
if (map.get(ch) == null) {
map.put(ch, 1);
} else {
map.put(ch, map.get(ch) + 1);
}
}
bw = new BufferedWriter(new FileWriter("wordcount.txt"));
Set<Map.Entry<Character, Integer>> entrySet = map.entrySet();
for (Map.Entry<Character, Integer> entry : entrySet) {
switch (entry.getKey()) {
case ' ':
bw.write("空格=" + entry.getValue());
break;
case '\t'://\t表示tab 键字符
bw.write("tab键=" + entry.getValue());
break;
case '\r'://
bw.write("回车=" + entry.getValue());
break;
case '\n'://
bw.write("换行=" + entry.getValue());
break;
default:
bw.write(entry.getKey() + "=" + entry.getValue());
break;
}
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bw != null) {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
dbcp连接池常用基本配置属性
1.initialSize :连接池启动时创建的初始化连接数量(默认值为0)
2.maxActive :连接池中可同时连接的最大的连接数(默认值为8,调整为20,高峰单机器在20并发左右,自己根据应用场景定)
3.maxIdle:连接池中最大的空闲的连接数,超过的空闲连接将被释放,如果设置为负数表示不限制(默认为8个,maxIdle不能设置太小,因为假如在高负载的情况下,连接的打开时间比关闭的时间快,会引起连接池中idle的个数 上升超过maxIdle,而造成频繁的连接销毁和创建,类似于jvm参数中的Xmx设置)
4.minIdle:连接池中最小的空闲的连接数,低于这个数量会被创建新的连接(默认为0,调整为5,该参数越接近maxIdle,性能越好,因为连接的创建和销毁,都是需要消耗资源的;但是不能太大,因为在机器很空闲的时候,也会创建低于minidle个数的连接,类似于jvm参数中的Xmn设置)
5.maxWait :最大等待时间,当没有可用连接时,连接池等待连接释放的最大时间,超过该时间限制会抛出异常,如果设置-1表示无限等待(默认为无限,调整为60000ms,避免因线程池不够用,而导致请求被无限制挂起)
6.poolPreparedStatements:开启池的prepared(默认是false,未调整,经过测试,开启后的性能没有关闭的好。)
7.maxOpenPreparedStatements:开启池的prepared 后的同时最大连接数(默认无限制,同上,未配置)
8.minEvictableIdleTimeMillis :连接池中连接,在时间段内一直空闲, 被逐出连接池的时间
9.removeAbandonedTimeout :超过时间限制,回收没有用(废弃)的连接(默认为 300秒,调整为180)
10.removeAbandoned :超过removeAbandonedTimeout时间后,是否进 行没用连接(废弃)的回收(默认为false,调整为true)
一=1
。=1
调=6
将=1
换行=21
上=2
下=1
程=1
同=3
而=2
回车=21
不=4
后=3
小=2
成=1
逐=1
耗=1
候=1
创=5
初=1
空格=15
造=1
否=1
性=3
(=1
)=3
个=4
中=7
-=1
.=10
启=4
是=4
0=12
1=4
2=3
3=2
4=1
5=2
制=5
6=2
7=1
常=2
8=4
根=1
9=1
为=16
值=2
A=4
繁=1
求=1
E=1
假=1
I=6
行=1
M=1
O=1
限=7
P=2
S=3
打=1
T=3
W=1
X=2
属=1
也=1
池=12
a=21
b=5
c=3
d=19
e=39
f=2
器=2
表=2
i=17
j=2
l=15
m=23
n=14
景=1
o=10
p=9
r=12
s=6
t=13
u=3
v=7
并=1
x=8
z=1
空=5
类=2
避=1
的=29
和=2
于=4
源=1
频=1
应=1
抛=1
废=2
没=4
动=1
被=4
线=1
情=1
经=1
默=9
高=2
回=2
因=4
峰=1
直=1
建=5
能=4
都=1
最=6
开=4
销=2
需=1
异=1
挂=1
弃=2
(=10
)=8
有=3
,=38
引=1
化=1
:=10
会=4
;=1
负=2
够=1
大=6
用=6
在=4
太=2
未=2
本=1
收=2
机=2
场=1
示=2
似=2
放=2
资=1
但=1
升=1
等=3
测=1
配=2
免=1
低=2
当=1
单=1
置=7
据=1
数=12
关=2
整=6
起=2
载=1
好=2
要=1
如=3
超=5
待=3
内=1
消=1
很=1
越=2
定=1
果=2
认=9
接=27
新=1
况=1
段=1
设=5
毁=2
参=3
过=6
释=2
始=1
量=2
发=1
近=1
秒=1
比=1
试=1
这=1
进=1
连=26
无=4
该=2
左=1
自=1
快=1
闭=2
可=2
己=1
闲=5
右=1
间=9
致=1
时=14
请=1
基=1
出=2
导=1