使用JAVA程式從數據庫中查詢大量的數據時出現異常:java.lang.OutOfMemoryError: JAVA heap space
使用JAVA程式從數據庫中查詢大量的數據時出現異常:java.lang.OutOfMemoryError: JAVA heap space
第一种:
Map map = new HashMap();
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
}
效率高,以后一定要使用此种方式!
第二种:
Map map = new HashMap();
Iterator iter = map.keySet().iterator();
while (iter.hasNext()) {
Object key = iter.next();
Object val = map.get(key);
}
效率低,以后尽量少使用!
HashMap的遍历有两种常用的方法,那就是使用keyset及entryset来进行遍历,但两者的遍历速度是有差别的
http://blog.sciencenet.cn/blog-384997-677933.html 此文来自科学网温凯博客,转载请注明出处。
檔案下載:39238375
/** * 漢諾塔問題 * * 精確計算出到底需要移動多少次才能夠將漢諾塔從柱子A搬到柱子B(柱子C作緩沖) * 輸入:漢諾塔的層次數 * 輸出:移動次數和移動動作 * 思路:遞歸 * 使用:直接在main函數new Test(漢諾塔的層次數) * * @author Fiay * */ public class Test { private static String a = "柱子A"; private static String b = "柱子B"; private static String c = "柱子C"; private int level; private int turns; /*省略Getter and Setter*/ public Test(){} public Test(int level){ this.level = level; this.turns = getTurnsByLevel(this.level); System.out.println("完成!\n共需要"+turns+"步"); } public int getTurnsByLevel(int level){ System.out.println("漢諾塔層次數为:"+level+"\n開始!"); showSolution(level,a,b,c); return turns-1; } public void showSolution(int level,String a,String b,String c){ if(level>0){ showSolution(level-1,a,c,b); System.out.println(turns+" - 從("+a+")移到("+b+")\t"); showSolution(level-1,c,b,a); }else{ turns++; } } public static void main(String args[]){ new Test(2); //new Test(3); //new Test(4); } }
1、下载安装 JDK程序:jdk-1_5_0_07-windows-i586-p.exe
2、设置环境变量:方法为“我的电脑”属性---高级---环境变量
增加“CLASSPATH”内容为“.;I:Program FilesJavajdk1.5.0_07libtools.jar;I:Program FilesJavajdk1.5.0_07libdt.jar;d:class;”。注意安装位置路径!
增加“JAVA_HOME”内容为“I:Program FilesJavajdk1.5.0_07;”
在PATH中添加“I:Program FilesJavajdk1.5.0_07bin;I:Program FilesJavajdk1.5.0_07jre/bin;”在前面加的。
3、进入CMD,在任意盘符下试运行JACAC看是否正常。要多试几次的。可进入JAVAC所在目录运行先。
4、如果路径没问题,可以在记事本上输入
public class HelloJAVA
{
public static void main(String[] args)
{
System.out.println("Hello JAVA!");
}
}
更名为HelloJAVA.java,放在D:/CLASS
由資料庫名稱得到資料庫的表資訊,包括表的欄位和屬性,可以自動的生成資料庫持久層操作代碼。
public int create( ) {
Connection con = null;
Statement sm = null;
ResultSet rs = null;
PreparedStatement ps = null;
StringBuffer sb = new StringBuffer();
sb.append("INSERT INTO tx_test (");
sb.append("TITLE,PRODUCT_ID,COMMENTATOR,CONTENT");
sb.append(" ) ");
sb.append(" VALUES (");
sb.append("?,?,?,?");
sb.append(")");
int id=0;
try {
con = ds.getConnection();
ps = con.prepareStatement(sb.toString());
ps.setString(1, "");
ps.setInt(2, 1);
ps.setString(3, "");
ps.setString(4, "");
ps.execute();
sm = con.createStatement();
sm.execute("SELECT LAST_INSERT_ID() LAST_INSERT_ID");
rs = sm.getResultSet();
if (rs != null) {
if (rs.next()) {
int iRet = rs.getInt("LAST_INSERT_ID");
id = iRet;
}
}
rs.close();
sm.close();
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
try {
if (ps != null) {
ps.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
try {
if (con != null) {
con.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
return id;
}
一、JFrame中setDefaultCloseOperation的使用方法
转载自:http://blog.csdn.net/coder_xia/article/details/6566708
一、标准C和C++都可用
1、获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t timer0 )。 精确到秒。
测试程序如下:
1 #include <time.h> 2 #include <stdio.h> 3 int main() 4 { 5 time_t start ,end ; 6 double cost; 7 time(&start); 8 sleep(1); 9 time(&end); 10 cost=difftime(end,start); 11 printf("%f/n",cost); 12 return 0; 13 }
本程序在fedora9测试通过。
关于代码中的sleep函数,需要注意的是:
1)在windows下,为Sleep函数,且包含windows.h
2)关于sleep中的数,在Windows和Linux下1000代表的含义并不相同,Windows下的表示1000毫秒,也就是1秒钟;Linux下表示1000秒,Linux下使用毫秒级别的函数可以使用usleep。
2、clock_t clock(),clock()
本文继续介绍23种设计模式系列之单例模式。
概念:
java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。
单例模式有以下特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。总之,选择单例模式就是为了避免不一致状态,避免政出多头。
一、懒汉式单例
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
轉載於:HTTP://blog.sina.com.cn/s/blog_8f54b9f901014fl9.html
1、PermGen space的全稱是Permanent Generation space,是指記憶體的永久保存區域OutOfMemoryError: PermGen space從表面上看就是記憶體益出,解決方法也一定是加大記憶體。說說為什麼會記憶體益出:這一部分用於存放Class和Meta的資訊,Class在被 Load的時候被放入PermGen space區域,它和和存放Instance的Heap區域不同,GC(Garbage Collection)不會在主程式運行期對PermGen space進行清理,所以如果你的APP會LOAD很多CLASS的話,就很可能出現PermGen space錯誤。這種錯誤常見在web伺服器對JSP進行pre compile的時候。
本文由 ImportNew - 劉志軍 翻譯自 JAVAranch。歡迎加入JAVA小組。轉載請參見文章末尾的要求。
1.下載NppExec」套件 下載地址
2.解壓縮至Notepad++的「plugins」資料夾
3.啟動Notepad++
4.按 F6 > 輸入以下指令
cd $(CURRENT_DIRECTORY)
javac $(FILE_NAME)
java $(NAME_PART)
5.按Ctrl + F6就可以編譯