国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Java程序性能和速度優(yōu)化實例

2019-11-18 14:22:56
字體:
來源:轉載
供稿:網(wǎng)友

  例一:應用具有I/O Buffer功能Class
import java.io.*;
 
public class IoTest {
public static void main(String args[]) {
 
try {
FileReader fr = new FileReader(args[0]);
BufferedReader br = new BufferedReader(fr);
 
while ( br.readLine() != null ) {
System.out.}
fis.close();
} catch ( IOException ioe ) {
System.out.println("The I/O exception is " + ioe);
}
 
}
 
}
 
在上例中,程序使用了具有Buffer功能的Class,使得Disk I/O的讀取速度大大提高。BufferedReader 是取代DataInputStream 而提高讀寫速度的Java Class。在新的Java版本中,已不建議使用 DataInputStream,因為其讀寫是基于字符為單位的。
 
例二:字符串運算處理
 
public class String
Operation {
public static void main(String args[]) {
 
String sqlQuery = null;
String sqlCondition = " conditionC = conditionD ");
 
StringBuffer sb = new StringBuffer();
 
sb.append("select * from database table where ");
sb.append(" conditionA = conditionB and ");
 
if ( ! sqlCondition.equals(null) {
sb.append(sqlCondition);
} else {
sb.append(" conditionE = conditionF ");
}
 
sqlQuery = sb.toString();
 
// Then connect to the database then excute the database query
// .......
 
}
 
}
 
在上例中,使用StingBuffer class來完成數(shù)據(jù)庫查詢建立,避免使用String class的"+="操作,以減少JVM在內存中創(chuàng)建新的對象,占用資源,增加JVM回收資源負擔。讀者可以使用Java Proflier功能來具體比較使用不同的String操作,JVM需要完成多少資源回收和運行時間。因此在JVM中對String直接進行"+="是非常昂貴的運算。

例三:處理昂貴的數(shù)據(jù)庫初始化
 
目前許多網(wǎng)站可以透過Web服務器查詢數(shù)據(jù)庫,如何提高數(shù)據(jù)庫查詢速度成為許多程序員關注的問題。在Java Servlets或jsp中可以通過init() 或Jspinit()來實現(xiàn),以下是一具體Java Servlet與數(shù)據(jù)庫對話實例。
  
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
 
public class DatabaseServlet extends HttpServlet {
 
public void init( ServletConfig conf) throws ServletException {
super.init(conf);
 
Connection conn = null;
 
try {
Class.forName("sun.jdbc.odbc.JdcOdbcDriver");
Conn = DriverManager.getConnection("jdbc:odbc:yourDSN,"","");
} catch ( SQLException sqle ) {
System.err.println("your error exception is " + sqle);
} catch ( ClassNotFoundException cnfe ) {
System.err.println("your error exception is " + cnfe);
}
}
 
public void doGet( HttpServletRequest req, HttpServletResponse res) throws
ServletException, IOException {
res.setContentType("text/Html");
ServletOutputStream out = null;
 
// Your HTML formatter
out.println(" Your HTML");
 
try {
 
Statement stmt = conn.creatStatement();
ResultSet rs = stmt.excuteQuery("select * from yourDatabasetable ");
 
while ( rs.next() ) {
// Processing your data
}
} catch ( SQLException sqle ) {
out.println("The SQL error is " + sqle);
}
 
// output your processing result to HTML page
 
out.println(" your HTML");
 
rs.close();
stmt.close();
 
}
 
public void destroy() {
try {
conn.close();
} catch ( SQLException sqle ) {
System.err.println("your SQL error is " + sqle);
}
}
 
}
 
在上例中,由于Java Servlet運行機制的特點,將昂貴的數(shù)據(jù)庫初始化運算在整個Servlet運行中僅只調用一次的init()中完成,以減少不必要的重復性數(shù)據(jù)庫運算。讀者可以根據(jù)應用的具體情況,甚至將數(shù)據(jù)庫的Statement和ResultSet部分移至init()中完成,或者調用PreparedStatement與CallableStatement來優(yōu)化數(shù)據(jù)庫的運算。同時,對數(shù)據(jù)庫的連接的關閉由destroy()一次性完成。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 三亚市| 广西| 万全县| 浦城县| 修武县| 长垣县| 诏安县| 镇沅| 团风县| 吴江市| 于田县| 安丘市| 吉隆县| 彰化市| 临夏县| 工布江达县| 和顺县| 玉树县| 溆浦县| 友谊县| 克拉玛依市| 扎兰屯市| 建德市| 天柱县| 绍兴县| 东丰县| 冕宁县| 渭源县| 故城县| 双辽市| 甘孜| 和静县| 凯里市| 湘乡市| 阜南县| 手机| 高邮市| 嵩明县| 观塘区| 泾源县| 镇康县|