Struts2拦截器属性excludeMethods、includeMethods配置无效之解决方法
在使用 excludeMethods,includeMethods 时拦截器要 继承 MethodFilterInterceptor
而 AbstractInterceptor 没有 excludeMethods,includeMethods 这个2个属性。。
在使用 excludeMethods,includeMethods 时拦截器要 继承 MethodFilterInterceptor
而 AbstractInterceptor 没有 excludeMethods,includeMethods 这个2个属性。。
在使用继承映射是 发生了一个错。。
开始以为是配置文件的文件。。
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。。
于是想到了 是不是子类的问题。
于是删除了之类的。。 结果还是没有运行起。
前几天遇到了这个问题。 发现遍历的文件夹和文件排列的顺序是乱的(按时间排序的)
于是想到了要自己去实现排序。 于是就在网上早了下代码。发现可以通过 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; } }); }
人难免会忘记 。 有时候少打个: 也要纠结半天
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 是个好东西。
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编程中尽可能要做到的一些地方。
1. 尽量在合适的场合使用单例
使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:
第一,控制资源的使用,通过线程同步来控制资源的并发访问;
第二,控制实例的产生,以达到节约资源的目的;
第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。
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 可以进行的排序。
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")); } }
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 好像没有用过 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