目前分類:JAVA (55)

瀏覽方式: 標題列表 簡短摘要

使用JAVA程式從數據庫中查詢大量的數據時出現異常:java.lang.OutOfMemoryError: JAVA heap space

在JVM中如果98%的時間是用於GC且可用的 Heap size 不足2%的時候將拋出此異常資訊。

 

JVM堆的設置是指java程式運行過程中JVM可以調配使用的內存空間的設置.JVM在啟動的時候會自動設置Heap size的值,其初始空間(即-Xms)是物理內存的1/64,最大空間(-Xmx)是物理內存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設置。
例如:java -jar -Xmn16m -Xms64m -Xmx128m MyApp.jar
如果Heap Size設置偏小,除了這些異常資訊外,還會發現程式的響應速度變慢了。GC佔用了更多的時間,而應用分配到的執行時間較少。
Heap Size 最大不要超過可用物理內存的80%,一般的要將-Xms和-Xmx選項設置為相同,而-Xmn為1/4的-Xmx值。
Heap size的 -Xms -Xmn 設置不要超出物理內存的大小。否則會提示「Error occurred during initialization of VM Could not reserve enough space for object heap」。

 

這個問題的根源是jvm虛擬機的默認Heap大小是64M,可以通過設置其最大和最小值來實現.設置的方法主要是幾個.

戮克 發表在 痞客邦 留言(0) 人氣()

第一种:
  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  此文来自科学网温凯博客,转载请注明出处。 


戮克 發表在 痞客邦 留言(0) 人氣()

未命名

檔案下載: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); } }

戮克 發表在 痞客邦 留言(0) 人氣()

原文地址:搭建JAVA3D环境配置作者:项伯羽

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

戮克 發表在 痞客邦 留言(0) 人氣()

由資料庫名稱得到資料庫的表資訊,包括表的欄位和屬性,可以自動的生成資料庫持久層操作代碼。

package edu.whut.jdbc;

 

import java.sql.Connection;

 

import java.sql.DriverManager;

 

import java.sql.ResultSet;

 

import java.sql.ResultSetMetaData;

戮克 發表在 痞客邦 留言(0) 人氣()

   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;
    }


文章標籤

戮克 發表在 痞客邦 留言(0) 人氣()

一、JFrame中setDefaultCloseOperation的使用方法

public void setDefaultCloseOperation(int operation)



設置使用者在此表單上發起 "close" 時預設執行的操作。必須指定以下選項之一:

 

* DO_NOTHING_ON_CLOSE(在 WindowConstants 中定義):不執行任何操作;要求程式在已註冊的 WindowListener 物件的 windowClosing 方法中處理該操作。
* HIDE_ON_CLOSE(在 WindowConstants 中定義):調用任意已註冊的 WindowListener 物件後自動隱藏該表單。
* DISPOSE_ON_CLOSE(在 WindowConstants 中定義):調用任意已註冊 WindowListener 的物件後自動隱藏並釋放該表單。
* EXIT_ON_CLOSE(在 JFrame 中定義):使用 System exit 方法退出應用程式。僅在應用程式中使用。

 

戮克 發表在 痞客邦 留言(0) 人氣()

未命名      

 
方法1:
import java.awt.Container;

 

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

戮克 發表在 痞客邦 留言(0) 人氣()

转载自: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()

戮克 發表在 痞客邦 留言(0) 人氣()

本文继续介绍23种设计模式系列之单例模式。

概念:
  java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。
  单例模式有以下特点:
  1、单例类只能有一个实例。
  2、单例类必须自己创建自己的唯一实例。
  3、单例类必须给所有其他对象提供这一实例。
  单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。总之,选择单例模式就是为了避免不一致状态,避免政出多头。


一、懒汉式单例

 

  1. //懒汉式单例类.在第一次调用的时候实例化自己   
  2. public class Singleton {  
  3.     //私有的默认构造子  
  4.     private Singleton() {}  
  5.     //注意,这里没有final      
  6.     private static Singleton single=null;  
  7.     //静态工厂方法   
  8.     public static Singleton getInstance() {  
  9.          if (single == null) {    
  10.              single = new Singleton();  
  11.          }    
  12.         return single;  
  13.     }  
  14. }  
Singleton通过将构造方法限定为private避免了类在外部被实例化,在同一个虚拟机范围内,Singleton的唯一实例只能通过getInstance()方法访问。

戮克 發表在 痞客邦 留言(0) 人氣()

日本人写的解码与编码实现Sourceforge.jp与swetake.com

这里把它们merge到一个jar文件里。

编码测试:
Java代码
  1.   
  2. import java.awt.Color;   
  3. import java.awt.Graphics2D;   
  4. import java.awt.image.BufferedImage;   
  5. import java.io.File;   
  6.   
  7. import javax.imageio.ImageIO;   
  8.   
  9. import com.swetake.util.Qrcode;   
  10.   
  11. public class QRCodeEncoderTest {   
  12.     public static void main(String[] args) throws Exception {   
  13.         Qrcode qrcode=new Qrcode();   
  14.         qrcode.setQrcodeErrorCorrect('M');   
  15.         qrcode.setQrcodeEncodeMode('B');   
  16.         qrcode.setQrcodeVersion(7);   
  17.   
  18.         String testString = "_-+^%$#@!~`=&)*(";   
  19.            
  20.         byte[] d =testString.getBytes("GBK");   
  21.            
  22.            
  23.         BufferedImage bi = new BufferedImage(139139, BufferedImage.TYPE_INT_RGB);   
  24.            
  25.         // createGraphics   
  26.         Graphics2D g = bi.createGraphics();   
  27.            
  28.         // set background   
  29.         g.setBackground(Color.WHITE);   
  30.         g.clearRect(00139139);   
  31.            
  32.         g.setColor(Color.BLACK);   
  33.            
  34.            
  35.         if (d.length>0 && d.length <123){   
  36.             boolean[][] b = qrcode.calQrcode(d);   
  37.                
  38.             for (int i=0;i<b.length;i++){   
  39.                    
  40.                 for (int j=0;j<b.length;j++){   
  41.                     if (b[j][i]) {   
  42.                         g.fillRect(j*3+2,i*3+2,3,3);   
  43.                     }   
  44.                 }   
  45.                
  46.             }   
  47.         }   
  48.            
  49.         g.dispose();   
  50.         bi.flush();   
  51.   
  52.         String FilePath="TestQRCode.png";   
  53.         File f = new File(FilePath);   
  54.            
  55.         ImageIO.write(bi, "png", f);   
  56.         System.out.println("doned!");   
  57.     }   
  58.        
  59. }  


戮克 發表在 痞客邦 留言(0) 人氣()

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;

 

戮克 發表在 痞客邦 留言(0) 人氣()

轉載於:HTTP://blog.sina.com.cn/s/blog_8f54b9f901014fl9.html

 

在項目中,經常有可能需要通過針式列印機列印一些票據,如快遞單,發票等...

 

之前在做JAVA列印時,也在網上找了好多資料,網上資料太多,講的也不夠詳細,走了不少彎路,在做這個之前,連針式列印機都很少接觸。。。,不多說了,言歸正傳吧

 

1、在編寫代碼之前,最好測試一下在你本機是否可以連接到列印機,正常列印,如果你本機都無法列印,也就不要指望程式可以列印了。

 

2、本機可以連接到列印機並可以列印後,就可以開始寫代碼了,首先寫一個最簡單的程式,列印一句最簡單的話,代碼如下:

 

戮克 發表在 痞客邦 留言(0) 人氣()

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的時候。

 

改正方法:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

 

2、在tomcat中redeploy時出現outofmemory的錯誤. 可以有以下幾個方面的原因:

 

1. 使用了proxool,因為proxool內部包含了一個老版本的cglib.

 

2. log4j,最好不用,只用common-logging

 

戮克 發表在 痞客邦 留言(0) 人氣()

01300000179694121758802302202  

檔案下載:43222786
 
 
 
日文字元的Unicode編碼範圍是: 
U+3040–U+309F: Hiragana 
U+30A0–U+30FF: Katakana 
U+4E00–U+9FBF: Kanji

 

戮克 發表在 痞客邦 留言(0) 人氣()

本文由 ImportNew - 劉志軍 翻譯自 JAVAranch。歡迎加入JAVA小組。轉載請參見文章末尾的要求。

注:為了更好理解本文,請結合原文閱讀

 

在上一篇文章中提到了PreparedStatement的局限性:PreparedStatement不允許一個預留位置(?)設置多個值,本文試圖從其它角度來解決該問題。

 

在網路上開銷最昂貴的資源就是用戶端與伺服器往返的請求與回應,JDBC中類似的一種情況就是對資料庫的調用,如果你在做資料插入、更新、刪除操作,可以使用executeBatch()方法減少資料庫調用次數,如:

 

Statement pstmt = conn.createStatement();
pstmt.addBatch("insert into settings values(3,'liu')");
pstmt.addBatch("insert into settings values(4,'zhi')");

戮克 發表在 痞客邦 留言(0) 人氣()

未命名  

1.下載NppExec」套件  下載地址
2.解壓縮至Notepad++的「plugins」資料夾

3.啟動Notepad++
4.按 F6   >   輸入以下指令

      cd $(CURRENT_DIRECTORY)
      javac $(FILE_NAME)
      java $(NAME_PART)

5.按Ctrl + F6就可以編譯


戮克 發表在 痞客邦 留言(0) 人氣()

未命名  

範例下載

 

import java.awt.GridLayout;
import javax.swing.*;

class jcombobox extends JFrame{
public static void main(String[] args){
jcombobox jbox=new jcombobox();
}
public jcombobox(){

戮克 發表在 痞客邦 留言(0) 人氣()

未命名  

範例下載

 

import java.io.*;
import java.net.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class YouXiangHuoQu {
public static void main(String[] args) throws Exception {

戮克 發表在 痞客邦 留言(0) 人氣()

未命名  

範例下載

 

 

湖北宜都
經度隔0.00105度,緯線上相隔100米
緯度隔0.00090度,經線上相隔100米

 

public class test {
private static double rad(double d) {

戮克 發表在 痞客邦 留言(0) 人氣()

«12 3