Cannot use identity column key generation with

在使用继承映射是 发生了一个错。。

开始以为是配置文件的文件。。

1.还报 撒sessionFactory的错。。

说  org.hibernate.mapping.UnionSubclass cannot be cast to org.hibernate.mapping.RootClass

这样一看感觉到了是继承映射写的有问题。。

就把相关的 类删除了。代码就能运行起了。。



org.hibernate.mapping.UnionSubclass cannot be cast to org.hibernate.mapping.RootClass

是因为2个继承的2张表内部还有 关系 如OneToMany。。



于是想到了 是不是子类的问题。

于是删除了之类的。。 结果还是没有运行起。

异常记录 / 2014-3-17

按所有的文件夹在前的方式进行排序 - 处理java中使用遍历的文件下的内容

前几天遇到了这个问题。 发现遍历的文件夹和文件排列的顺序是乱的(按时间排序的)

于是想到了要自己去实现排序。 于是就在网上早了下代码。发现可以通过 Collections.sort

于是就想到了使用自己去重写 compare来实现排序。

下面是排序的代码。。

 

 public static void mysort(List<Files> files){
  Collections.sort(files, new Comparator<Files>()
  {
   public int compare(Files o1, Files o2) {
   
    //如果传进来的2个文件o1为文件夹 o2 不是文件时需要改变顺序
    if(o1.isFiler() && !o2.isFiler())
     return -1;
    //返回值>=0,则不调用Arrays.swap(Object x[], int a, int b) 方法。
    if(!o1.isFiler() && o2.isFiler())
           return 1;
    return 0;
   }
  });
 }

 

Java那些事 / 2013-12-23

总结下几个数据库桥接 JDBC的URL

人难免会忘记 。 有时候少打个: 也要纠结半天

 

mysql --> jdbc:mysql://localhost:3306/blog[?useUnicode=true&characterEncoding=UTF-8&user=blog&password=xxxxx]  ?useUnicode=true&characterEncoding=UTF-8 可以避免一些应为mysql 安装时没有设置编码 带来的问题。  就这个有点想个网址 其他 oracle 的: sqlserver的 ; 还真给带来不少的疑惑

sql server --> jdbc:sqlserver://localhost:1433;databasename=jblog

 

sqlite --> jdbc:sqlite:/E:/1.db

 

oracle --> jdbc:oracle:thin:@localhost:1521:orcl

 

目前 接触过这4个数据库。

 

JDBC 是个好东西。

Java那些事 / 2013-12-16

使用inputsteam 处理byte问题

byte b[] = new byte[1] ;

这个可以避免文件经过处理后文件变大的问题。 但是处理大文件时显得就相当吃力了。

于是new byte[1] 不是一个好的选择。

byte b[]=new byte[new File("E:/1.iso").length];

这个可以提高速度。 但是带来又一个问题就是。 这个一次性把文件写到缓存区。 对与小文件没有问题。 但是大文件。 恐怕就........

于是就想到了。我有针对的出来最后一次流的大小不就行了。

 

贴代码开始

public static void moveOrCopyFile(String src,String tag,boolean isMove){
  try {
   long s=System.currentTimeMillis();
   File f=new File(src);
   FileInputStream in=new FileInputStream(src);
   int fileSize=(int) f.length();
   byte b[]=null;
   new File(tag).createNewFile();
   FileOutputStream out=new FileOutputStream(tag);
   int cnt=fileSize/(1024*1024);
   //小于1M(大小根据自己的情况而定)的文件直接一次性写入。 
   if(cnt==0)
   {
    b=new byte[fileSize];
   }
   else
   {
    
    b=new byte[1024*1024];
    // 出来cnt次后 文件 跳出循环 
    while(in.read(b)!=-1)
    {
     out.write(b);
     if(--cnt==0)
     {
      break;
     }
     b=new byte[1024*1024];
    }
    //最后一次流的大小通过取模的方式得到
    b=new byte[fileSize%(1024*1024)];
   }
   //最后一次的文件写入
   in.read(b);
   out.write(b);
   // 一定要记得关闭流额。 不然其他程序那个文件无法进行操作
   in.close();
   out.close();
   System.out.println(System.currentTimeMillis()-s);
   if(isMove)
   {
    f.delete();
   }
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  
  //System.out.println(src);
  //System.out.println(tag);
 }

 

外面递归移动或者拷贝文件的方法就不演示了。

 

Java那些事 / 2013-12-16

Java编程中"为了性能"尽量要做到的一些地方


下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。

1. 尽量在合适的场合使用单例
使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:
第一,控制资源的使用,通过线程同步来控制资源的并发访问;
第二,控制实例的产生,以达到节约资源的目的;
第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。

分享 / 2013-11-29

mysql 按照月份对数据进行分组或者是排序

select  DATE_FORMAT(releaseTime,'%Y-%m'),count(DATE_FORMAT(releaseTime,'%Y-%m')) from logsinfo group by DATE_FORMAT(releaseTime,'%Y-%m') order by logsinfoid desc


 

使用mysql 自己提供的 DATE_FORMAT 可以进行的排序。  

笔记 / 2013-11-27

Java 进行MD5的加密

package util;

import java.security.MessageDigest;

public class Md5Util {

 public final static String MD5(String pwd) {
  
  //用于加密的字符
  char md5String[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
    'A', 'B', 'C', 'D', 'E', 'F' };
  try {
   //使用平台的默认字符集将此 String 编码为 byte序列,并将结果存储到一个新的 byte数组中
   byte[] btInput = pwd.getBytes();
   
   // 获得指定摘要算法的 MessageDigest对象,此处为MD5
   //MessageDigest类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。
   //信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。 
   MessageDigest mdInst = MessageDigest.getInstance("MD5");
   //System.out.println(mdInst);  
   //MD5 Message Digest from SUN, <initialized>
   
   //MessageDigest对象通过使用 update方法处理数据, 使用指定的byte数组更新摘要
   mdInst.update(btInput);
   //System.out.println(mdInst);  
   //MD5 Message Digest from SUN, <in progress>
   
   // 摘要更新之后,通过调用digest()执行哈希计算,获得密文
   byte[] md = mdInst.digest();
   //System.out.println(md);
   
   // 把密文转换成十六进制的字符串形式
   int j = md.length;
   //System.out.println(j);
   char str[] = new char[j * 2];
   int k = 0;
   for (int i = 0; i < j; i++) {   //  i = 0
    byte byte0 = md[i];  //95
    str[k++] = md5String[byte0 >>> 4 & 0xf];    //    5  
    str[k++] = md5String[byte0 & 0xf];   //   F
   }
   //返回经过加密后的字符串
   return new String(str);
   
  } catch (Exception e) {
   e.printStackTrace();
   return null;
  }
 }
 public static void main(String[] args) {
  System.out.println(Md5Util.MD5("123456"));
  
 }
}



 

Java那些事 / 2013-11-26

jsp 静态化

import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

/**
 * 将信息发布为静态页面
 * 
 * @author xchun
 * 
 */

public class Jsp2Html {
 /**
  * 将信息转化为静态html
  * 
  * @param sSourceUrl
  *            动态信息访问URL
  * @param sDestDir
  *            存储为静态文件的目录
  * @param sHtmlFile
  *            生成的静态文件名,可以按信息的唯一ID+.html命名
  * @throws IOException
  */
 
 public static void convert2Html(String sSourceUrl, String sDestDir,
   String sHtmlFile) throws IOException {
  int HttpResult;
  URL url = new URL(sSourceUrl);
  
  URLConnection urlconn = url.openConnection();
  urlconn.connect();
  HttpURLConnection httpconn = (HttpURLConnection) urlconn;
  HttpResult = httpconn.getResponseCode();
  
  if (HttpResult != HttpURLConnection.HTTP_OK) {
  } else {
   BufferedReader in = new BufferedReader(new InputStreamReader(urlconn.getInputStream(),"UTF-8")); 

   String inputLine;
   if (!sDestDir.endsWith("/"))
    sDestDir += "/";
   OutputStreamWriter fout = new OutputStreamWriter(new FileOutputStream(sDestDir + sHtmlFile),"utf-8"); //设置输出文件的编码。 
   
   while ((inputLine = in.readLine()) != null) {
    fout.write(inputLine);

   }
   in.close();
   fout.close();

  }

 }

 public static void main(String[] args) throws IOException {

  for(int i=1;i<10;i++)
  convert2Html(
    "http://blog.94fzb.com:8080/post/page/"+i,"F:",i+".html");

 }

}
Java那些事 / 2013-11-25

对面向对象的概念还是有些模糊不清额

java 好像没有用过 equals 去比较两个对象的情况 (出了String外)

这个C# 中既然还遇到了。 比较两个时间的内容是不是一致的。 开始用!= 来比较总是false

不晓得咋个一下 想通了。 tostring() 让后再用 equals  还应为C# 应该是实现了这样的方法的。

结果和java 一样。 要用equals 来比较自己去实现。 不晓得C# 可以不可以重写这样方法额。 

搞了今天的 C# 脑壳大的没有话说了。 看来C#以后还是少沾的好呀。。  

equals java好多地方都自己实现 看来有的东西不能含糊呀。 不让抓狂的只是bug了



注意,在重写equals方法时,要注意满足离散数学上的特性
1、自反性   :对任意引用值X,x.equals(x)的返回值一定为true.
2    对称性:   对于任何引用值x,y,当且仅当y.equals(x)返回值为true时,x.equals(y)的返回值一定为true;
3    传递性:如果x.equals(y)=true, y.equals(z)=true,则x.equals(z)=true
4   一致性:如果参与比较的对象没任何改变,则对象比较的结果也不应该有任何改变
5   非空性:任何非空的引用值X,x.equals(null)的返回值一定为false

Java那些事 / 2013-10-29