/**
* 解密
* @param saveFile
*/
public static void decrypt(File saveFile) {
try {
BufferedReader reader = null;
reader = new BufferedReader(new FileReader(saveFile));
String tempString = null;
String str2 =null;
while ((tempString = reader.readLine()) != null) {
str2=URLDecoder.decode(tempString);
}
FileOutputStream fos = new FileOutputStream(saveFile);
fos.write(str2.getBytes());
fos.close();
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws UnsupportedEncodingException {
System.out.println(URLDecoder.decode("C:\\Documents and Settings\\chenchangqing\\Desktop\\实物转移_20110824030821.xml", "GBK"));
}
static {
System.out.println("static自由å—被执行"); //å…ˆæ‰§è¡Œé™æ€å—
counter = 1;
}
public static int getTotalCount() {
return counter;
}
public Count() {
counter++;
serialNumber=counter;
}
public static void main(String[] args)
{
System.out.println("main() invoked");
System.out.println("counter = "+Count.counter);
Count t=new Count();
System.out.println("counter = "+Count.counter+" "+t.serialNumber);
}
}
java.lang.Math是一个final¾c»ï¼Œä¸å¯è¢«ç‘ô承,finalå˜é‡æ˜¯å¼•用å˜é‡ï¼Œåˆ™ä¸å¯ä»¥æ”¹å˜å®ƒçš„引用对象åQŒä½†å¯ä»¥æ”¹å˜å¯¹è±¡çš„æ•°æ®ï¼Œfinalæ–ÒŽ(gu¨©)³•ä¸å¯ä»¥è¢«è¦†ç›–åQŒä½†å¯ä»¥è¢«é‡è½½ã€?br />
如:
class Aclass
{
int a;
//æž„é€ å™¨
public Aclass()
{
a = 100;
}
final public void paint(){
System.out.println("55555555");
}
final public void paint(int i){
System.out.println(i);
}
public void setA(int theA)
{
a = theA;
}
public int getA()
{
return a;
}
}
//å®šä¹‰ä¸€ä¸ªç±»æ¥æµ‹è¯?br />
public class TestFinal
{
//如果finalå˜é‡æ˜¯å¼•用å˜é‡ï¼Œåˆ™ä¸å¯ä»¥æ”¹å˜å®ƒçš„引用对象åQŒä½†å¯ä»¥æ”¹å˜å¯¹è±¡çš„æ•°æ?br />
final Aclass REF_VAR=new Aclass();
public static void main(String[] args)
{
TestFinal tf = new TestFinal();
tf.REF_VAR.setA(1);
System.out.println(tf.REF_VAR.getA());
tf.REF_VAR.paint();
tf.REF_VAR.paint(1);
}
}
1åQŒå¾®è½¯ç›®å‰æ²¡æœ‰å‘布针对SQL Server 2008专用的JDBC驱动½E‹åºåQŒä‹É用SQL Server 2005 的就å¯ä»¥äº†ï¼Œä½†æ˜¯åQŒéœ€è¦æ³¨æ„: SQL Server 2008çš„æ–°åŠŸèƒ½æ— æ³•ä½¿ç”¨åQŒè¿™ä¸ªå¿…™åȉ专用的JDBCå‘å¸ƒä¹‹åŽæ‰èƒ½ä½¿ç”¨ã€‚下载地å€åQ?
Microsoft SQL Server 2005 JDBC Driver 1.2
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=c47053eb-3b64-4794-950d-81e1ec91c1ba
2åQŒè®¾¾|®ç«¯å£äؓ固定端å£åQ?/p>
SQL Server é…ç½®½Ž¡ç†å™¨ï¼ŒæŒ‰å›¾è®„¡½®å›_¯
注æ„åQšåЍæ€ç«¯å£è®¾ä¸ºç©ºåQŒå³å¯ç¦ç”¨åЍæ€ç«¯å?/p>
˜qžæŽ¥çš„写法:
jdbc:sqlserver://192.168.3.6:1368;databaseName=æ•°æ®åº“å¿U?user=用户å?password=密ç
éœ€è¦æ³¨æ„:
1. 最ž®è¿žæŽ¥æ•°æ˜¯è¿žæŽ¥æ± ä¸€ç›´ä¿æŒçš„æ•°æ®åº“连接,所以如果应用程åºå¯¹æ•°æ®åº“连接的使用é‡ä¸å¤§ï¼Œž®†ä¼šæœ‰å¤§é‡æ•°æ®åº“˜qžæŽ¥èµ„æºè¢«æµªè´V€?br />
2. æœ€å¤§è¿žæŽ¥æ•°æ˜¯è¿žæŽ¥æ± èƒ½ç”³è¯ïLš„æœ€å¤§è¿žæŽ¥æ•°åQŒå¦‚果数æ®åº“˜qžæŽ¥è¯äh±‚‘…è¿‡æ¤æ•°åQŒåŽé¢çš„æ•°æ®åº“è¿žæŽ¥è¯·æ±‚å°†è¢«åŠ å…¥åˆ°½{‰å¾…队列ä¸ï¼Œ˜q™ä¼šå½±å“之åŽçš„æ•°æ®åº“æ“作ã€?/p>
æ•°æ®åº“è¿žæŽ¥æ± çš„ä¸¤ä¸ªä“Q务:
1. é™åˆ¶æ¯ä¸ªåº”用或系¾lŸå¯ä»¥æ‹¥æœ‰çš„æœ€å¤§èµ„æºï¼Œä¹Ÿå°±æ˜¯ç¡®å®šè¿žæŽ¥æ± 的大ž®ï¼ˆPoolSizeåQ‰ã€?br />
2. åœ¨è¿žæŽ¥æ± çš„å¤§ž®ï¼ˆPoolSizeåQ‰èŒƒå›´å†…ã€æœ€å¤§é™åº¦åœ°ä½¿ç”¨èµ„æºåQŒç¾ƒçŸæ•°æ®åº“讉K—®çš„ä‹É用周期ã€?/p>
例如åQ?物熘qžæŽ¥æ•?00个,æ¯ä¸ª˜qžæŽ¥æä¾›250个StatemetåQŒé‚£ä¹ˆåƈå‘çš„Statementæ€ÀL•°ä¸?00*250=50000个ã€?/p>
Javaå¼€æºè¿žæŽ¥æ± åQ?br />
Jakarta DBCP å¯ç›´æŽ¥åœ¨åº”用½E‹åºä¸ä‹É用。(比较常用åQŒé›†æˆåœ¨Tomcatå’ŒStrutsä¸ï¼‰
C3P0是Hibernate的默认数æ®åº“˜qžæŽ¥æ± 。(常用åQŒHibernateåQ?br />
其他的还有Proxoolã€DDConnectionBrokerã€DBPoolã€XAPoolã€Primroseã€SmartPoolã€MiniConnectionPoolManagerã€?/p>
DBCP代ç 实现åQ?br />
//åˆ›å¾æ•°æ®æº?br />
public static DataSource setupDataSource(String connectURI) {
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName(org.gjt.mm.mysql.Driver);
ds.setUsername("username");
ds.setPassword("password");
ds.setUrl(connectURI);
return ds;
}
//关闿•°æ®æº?br />
public static void shutdownDataSource(DataSource ds) throws SQLException {
BasicDataSource bds = (BasicDataSource)ds;
bds.close();
}
//æ•°æ®æºçš„使用
DataSource dataSource = getDataSource();
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = dataSource.getConnection();
pstmt = conn.prepareStatement("select * from users");
rs = pstmt.executeQuery();
while(rs.next()) {
System.out.println(rs.getInt("id"));
}
} catch(Exception e) {
e.printStackTrace();
} finally {
try {
rs.close();
pstmt.close();
conn.close();
} catch(Exception ex) {
ex.printStackTrace();
}
}
在Tomcatä¸é…¾|®æ•°æ®åº“˜qžæŽ¥æ± :
我们使用Tomcatä¸libæ–‡äšg夹下的tomcat-dbcp.jarã€?br />
1. 修改server.xmlæ–‡äšgåœ?lt;Service>ä¸å†™å…¥ä»¥ä¸‹ä»£ç ?
<Context path="/WebProject" docBase="WebProject" reloadable="true" crossContext="true">
<Resource auth="Container" name="jdbc/CompanyDB" type="javax.sql.DataSource"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;DataBaseName=Company"
username="sa"
password="root"
maxActive="100"
maxIdle="30"
maxWait="10000"
removeAbandoned=“true”
removeAbandonedTimeOut="10"
logAbandoned="true"/>
</Context>
pathåQšå·¥½E‹èµ\径ã€?br />
docBaseåQšå·¥½E‹åå—ã€?br />
nameåQšJNDIçš„åå—ã€?br />
typeåQšæ•°æ®æºçš„ç±»ã€?br />
factoryåQšæŒ‡å®šç”Ÿæˆçš„DataReourceçš„factory¾cÕdåQ›é»˜è®¤DBCP工厂¾c…R€?br />
driverClassNameåQšæ•°æ®åº“驱动åã€?br />
urlåQšæ•°æ®åº“˜qžæŽ¥çš„URLã€?br />
usernameåQšæ•°æ®åº“用户åã€?br />
passwordåQšæ•°æ®åº“密ç ã€?br />
maxActiveåQšæœ€å¤§è¿žæŽ¥æ•°æ®åº“敎ͼŒè®¾äØ“0表示没有é™åˆ¶ã€?br />
maxIdleåQšæœ€å¤§ç‰å¾…æ•°é‡ï¼Œè®¾äØ“0表示没有é™åˆ¶ã€?br />
maxWaitåQšæœ€å¤§ç‰å¾…秒敎ͼŒå•ä½ä¸ºmsã€?br />
removeAbandonedåQšæ˜¯å¦è‡ªæˆ‘䏿–,默认为falseã€?br />
removeAbandonedTimeOutåQšå‡ ¿U’åŽä¼šè‡ªæˆ‘䏿–,removeAbandoned必须为trueã€?br />
logAbandonedåQšæ˜¯å¦è®°å½•䏿–事ä»Óž¼Œé»˜è®¤ä¸ºfalseã€?/p>
2. 修改web.xmlæ–‡äšgåQŒå¢žåŠ ä¸€ä¸ªæ ‡½{¾ï¼Œè¾“入以下代ç åQ?br />
<resource-ref>
<description>Company Connection</description>
<res-ref-name>jdbc/CompanyDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
res-ref-nameåQšæŒ‡å®šJNDIçš„åå—ã€?br />
res-typeåQšæŒ‡å®šèµ„æºç±»åã€?br />
res-authåQšæŒ‡å®šèµ„æºçš„Managerã€?br />
3. 代ç ä¸ä‹É用JNDIä»£ç ˜q›è¡ŒèŽ·å–åQ?br />
Context ctx = new InitalContext()åQ?br />
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/CompanyDB");
Connection conn = ds.getConnection();
注æ„åQšjava:comp/env/ 是javaä¸JNDI固定写法ã€?/span>
注æ„åQšå¦‚果该é…置出现错误åQŒé‡‡ç”¨å¦ä¸€¿Uæ–¹å¼è¿›è¡Œé…¾|?/span>
在tomcatä¸çš„server.xmlä¸è¿›è¡Œé…¾|®ï¼Œè€Œåœ¨context.xmlä¸è¿›è¡Œè®¾¾|?br />
代ç 如下åQ?br />
<Resource name="jdbc/CompanyDB" type="javax.sql.DataSource" password="root"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" maxIdle="2" maxWait="5000" username="sa" url="jdbc:sqlserver://localhost:1433;DataBaseName=Company" maxActive="100"/>
web.xml的设¾|®åŒä¸Šä¸€ä¸ªé…¾|®ä¸€æ —÷€?br />