2014年2月20日 excel 工具 POI 的使用小记 java 的单例模式回顾 记忆

发布时间:2017-6-26 11:48:04 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"2014年2月20日 excel 工具 POI 的使用小记 java 的单例模式回顾 记忆",主要涉及到2014年2月20日 excel 工具 POI 的使用小记 java 的单例模式回顾 记忆方面的内容,对于2014年2月20日 excel 工具 POI 的使用小记 java 的单例模式回顾 记忆感兴趣的同学可以参考一下。

1 几篇写的比较好的文章        http://mylfd.iteye.com/        http://ray-yui.iteye.com/blog/1922157       http://blog.csdn.net/lenolong/article/details/3957735   2.特别注意  深刻理解Ext中的ajax请求的意义,一般是获取信息,在导出报表的时候不能用这种方式,会得到乱码,不能正常解析,所以一般使用 window.location.href()方法    但是在 IE中该方法可以正常运行,在火狐中就不可以 ,所以兼容的方法为 window.location.href = "";   3. java 单例模式 好处是节省内存的开销,防止对象频繁的实例化           饥饿模式             在这个类被加载的时候,就创建一个对象,如果对象很大,就会很消耗性能 class Singleton { private static Singleton singleton = new Singleton(); private Singleton() { } public static Singleton getInstance() { return singleton; } }           懒汉模式          即延迟加载(lazy load),在第一次使用的时候去实例化        class SingletonLazyLoad { private static SingletonLazyLoad singleton; private SingletonLazyLoad() { } public static SingletonLazyLoad getInstance() { if (null == singleton) { singleton = new SingletonLazyLoad(); } return singleton; } }    上面可能会出现一些线程安全问题,比如  当一个线程A 第一次访问,这时候的singleton为空,运行到  if (null == singleton)  这一句的时候,线程B进来了,此时singleton仍然为空,于是线程A和线程B就同事进行实例化,产生两个对象,所以一般会想到这样做 public synchronized static SingletonLazyLoad getInstance() { if (null == singleton) { singleton = new SingletonLazyLoad(); } return singleton; }     但是这样做,却会非常消耗系统的性能,所以使用双重检查锁,如下 class DoubleCheckedSingleton { private static DoubleCheckedSingleton singleton; private DoubleCheckedSingleton() { } public synchronized static DoubleCheckedSingleton getInstance() { if (null == singleton) { synchronized (DoubleCheckedSingleton.class) { if (null == singleton) { singleton = new DoubleCheckedSingleton(); } } } return singleton; } }   但是这种方法,仍然会有一些问题,比如说,某个线程A进入 if(null ==singleton) 的时候判断为空,所以就进去同步块进行实例化,但如果此对象过于庞大,实例化的时间需要很长,但却是已经存在了,所以当线程B进去if(null==singleton)的时候,此时已经不为空,此时就会直接返回该不完整的对象。       又要提出一种新的模式——Initialization on Demand Holder.这种方法使用内部类来做到延迟加载对象,在初始化这个内部类的时候,JLS(Java Language Sepcification)会保证这个类的线程安全。这种写法最大的美在于,完全使用了Java虚拟机的机制进行同步保证,没有一个同步的关键字。      class InnerSingleton { private static InnerSingleton singleton; private InnerSingleton() { } private static class SingletonHolder { static InnerSingleton innerSingleton = new InnerSingleton(); } public synchronized static InnerSingleton getInstance() { return SingletonHolder.innerSingleton; } }   public synchronized static SingletonLazyLoad getInstance() { if (null == singleton) { singleton = new SingletonLazyLoad(); } return singleton; } 4.  使用 response的addheader 的方法時候,如果不注意就會出現乱码,所以要使用 string 的new String(byte[] bytes , charset  charset)方法重新构造字符串               String fileName = request.getParameter("filename");         String file = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");         response.addHeader("Content-Disposition", "attachment;filename=" + file + ".xls");             

上一篇:下载图片
下一篇:决明子

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。