摘要:
Classloader的作用,概括来说就是将编译后的class装载、加载到机器内存中,为了以后的程序的执行提供前提条件。一段程序引发的思考:风中叶老师在他的视频中给了我们一段程序,号称是世界上所有的Java程序员都会犯的错误。诡异代码如下:Java代码 packagetest01;classSingleton{publicstaticSingletonsingleton=newSingleton();publicstaticinta;publicstaticintb=0;privateSingleton(){super();a++;b++;}publicstaticSingletonGetIn 阅读全文
随笔分类 - Java
Java对象序列化ObjectOutputStream和ObjectInputStream示例
2013-05-06 09:28 by Batys, 418 阅读, 收藏,
摘要:
Java中ObjectInputStream 与 ObjectOutputStream这两个包装类可用于输入流中读取对象类数据和将对象类型的数据写入到底层输入流 。ObjectInputStream 与 ObjectOutputStream 类所读写的对象必须实现了 Serializable 接口。需要注意的是:对象中的 transient 和 static 类型的成员变量不会被读取和写入 。具体代码示例:O bjectFileConvert.javapackagemichael.io; importjava.io.File; importjava.io.FileInputStream; im 阅读全文
spring配置datasource三种方式
2012-10-17 14:10 by Batys, 21366 阅读, 收藏,
摘要:
1、使用org.springframework.jdbc.datasource.DriverManagerDataSource说明:DriverManagerDataSource建立连接是只要有连接就新建一个connection,根本没有连接池的作用。<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"><valu 阅读全文
Struts2 过滤器与拦截器
2012-09-29 17:35 by Batys, 237 阅读, 收藏,
摘要:
Struts2 过滤器与拦截器 过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符拦截器,是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调 阅读全文
面向切面编程
2012-09-29 17:35 by Batys, 738 阅读, 收藏,
摘要:
面向切面编程(AOP是Aspect Oriented Program的首字母缩写),我们知道,面向对象的特点是继承、多态和封装。而封装就要求将功能分散到不同的对象中去,这在软件设计中往往称为职责分配。实际上也就是说,让不同的类设计不同的方法。这样代码就分散到一个个的类中去了。这样做的好处是降低了代码的复杂程度,使类可重用。 但是人们也发现,在分散代码的同时,也增加了代码的重复性。什么意思呢?比如说,我们在两个类中,可能都需要在每个方法中做日志。按面向对象的设计方法,我们就必须在两个类的方法中都加入日志的内容。也许他们是完全相同的,但就是因为面向对象的设计让类与类之间无法联系,而不能将这些重复的 阅读全文
Java多线程之ExecutorService
2012-09-29 17:23 by Batys, 2341 阅读, 收藏,
摘要:
讲到Java多线程,大多数人脑海中跳出来的是Thread、Runnable、synchronized……这些是最基本的东西,虽然已经足够强大,但想要用好还真不容易。从JDK 1.5开始,增加了java.util.concurrent包,它的引入大大简化了多线程程序的开发(要感谢一下大牛Doug Lee)。 java.util.concurrent包分成了三个部分,分别是java.util.concurrent、java.util.concurrent.atomic和java.util.concurrent.lock。内容涵盖了并发集合类、线程池机制、同步互斥机制、线程安全的变量更新工具类、.. 阅读全文
AVA SSH集成之异常——Struts 2必备JAR包版本不符引发的异常:
2012-08-23 20:22 by Batys, 489 阅读, 收藏,
摘要:
如果spring注入, service和dao为空,首先检查相关配置,同时确认 struts2-spring-plugin.jar的存在。严重: Exception starting filter struts-invokeUnable to load configuration. - bean - jar:file:/D:/sshtest/.metadata/.me_tcat/webapps/ssh/WEB-INF/lib/struts2-spring-plugin-2.1.8.1.jar!/struts-plugin.xml:29:132at com.opensymphony.xwork2 阅读全文
Tomcat工作原理(小结)
2012-03-14 08:51 by Batys, 454 阅读, 收藏,
摘要:
Tomcat是Servlet运行环境(容器),每个servlet执行init(),service(),destory()以下是servlet的作用Servlet的调用Tomcat的工作模式3种:独立Servlet,进程内servlet,进程外servlet。Tomcat是一个基于组件的服务器,他的构建组件都是可以配置的,其中最外层的组件是Catalina Servlet容器,其他组阿金一定要按照一定的格式要求配置在这个顶层的容器中。 Tomcat各个组件是在$CATLINA_HOME/conf/server.xml文件中配置的。<Server> 顶层类元素,可包... 阅读全文
Hibernate主键生成方式(zz)
2012-03-12 15:33 by Batys, 566 阅读, 收藏,
摘要:
1) assigned主键由外部程序负责生成,无需Hibernate参与。2) hilo通过hi/lo 算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。3) seqhilo与hilo 类似,通过hi/lo 算法实现的主键生成机制,只是主键历史状态保存在Sequence中,适用于支持Sequence的数据库,如Oracle。4) increment主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。这种方式可能产生的问题是:如果当前有多个实例访问同一个数据库,那么由于各个实例各自维护主键状态,不同 阅读全文
Hibernate程序性能优化的考虑要点
2012-03-12 14:24 by Batys, 263 阅读, 收藏,
摘要:
本文依照HIBERNATE帮助文档,一些网络书籍及项目经验整理而成,只提供要点和思路,具体做法可以留言探讨,或是找一些更详细更有针对性的资料。 初用HIBERNATE的人也许都遇到过性能问题,实现同一功能,用HIBERNATE与用JDBC性能相差十几倍很正常,如果不及早调整,很可能影响整个项目的进度。 大体上,对于HIBERNATE性能调优的主要考虑点如下: Ø 数据库设计调整 Ø HQL优化 Ø API的正确使用(如根据不同的业务类型选用不同的集合及查询API) Ø 主配置参数(日志,查询缓存,fetch_size, batch_size等) 阅读全文
Hibernate一对多数据关联(zz)
2012-03-12 09:12 by Batys, 333 阅读, 收藏,
摘要:
一对多数据关联一.单向一对多数据关联一个用户有多个地址,在用户类TUser中包含地址类TAddress集合。1.数据模型2.表定义sqlusesample;DROPTABLET_Address;DROPTABLET_User;CREATETABLET_User(idINTNOTNULLAUTO_INCREMENT,nameVARCHAR(50),ageINT,PRIMARYKEY(id));CREATETABLET_Address(idINTNOTNULLAUTO_INCREMENT,addressVARCHAR(200),zipcodeVARCHAR(10),telVARCHAR(20),t 阅读全文
对面向对象设计的理解—Java接口和Java抽象类(zz)
2012-03-11 19:08 by Batys, 454 阅读, 收藏,
摘要:
在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解。刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有方法名,没有方法体的东西,我实现它又有什么用呢?我从它那什么也得不到,除了一些方法名,我直接在具体类里加入这些方法不就行了吗?为什么一定要有抽象类这个概念?为什么就不能把这个父类写成一个具体的类,子类再继承它不就可以了吗?何必弄一个抽象类出来,还要弄一些没有方法体的抽象方法,弄得又象接口又象类的,让人捉摸不定。当我开始学习java设计模式,真正走进面向对象设计的大门之后,我才发现,自己对面向对象设计 阅读全文
Java与编码字符集(zz)
2012-03-11 18:24 by Batys, 1052 阅读, 收藏,
摘要:
本文介绍了编码字符集的概念以及Java与编码字符集之间的关系,文章的内容来自于本人工作过程中的经验积累以及网络中的相关文章介绍,如果文章中有任何纰漏欢迎读者指正,让我们共同讨论学习J1.字符字符是抽象的最小文本单位。它没有固定的形状(可能是一个字形),而且没有值。“A”是一个字符,“€”(德国、法国和许多其他欧洲国家通用货币的标志)也是一个字符。“中”“国”这是两个汉字字符。字符仅仅代表一个符号,没有任何实际值的意义。2.字符集字符集是字符的集合。例如,汉字字符是中国人最先发明的字符,在中文、日文、韩文和越南文的书写中使用。这也说明了字符和字符集之间的关系,字符组成字符集。3.编码字符集编码字 阅读全文
hibernate二级缓存攻略(zz)
2012-03-08 10:13 by Batys, 202 阅读, 收藏,
摘要:
转自javaEye很多人对二级缓存都不太了解,或者是有错误的认识,我一直想写一篇文章介绍一下hibernate的二级缓存的,今天终于忍不住了。我的经验主要来自hibernate2.1版本,基本原理和3.0、3.1是一样的,请原谅我的顽固不化。hibernate的session提供了一级缓存,每个session,对同一个id进行两次load,不会发送两条sql给数据库,但是session关闭的时候,一级缓存就失效了。二级缓存是SessionFactory级别的全局缓存,它底下可以使用不同的缓存类库,比如ehcache、oscache等,需要设置hibernate.cache.provider_c 阅读全文
Java进阶:Java中堆和栈的区别
2012-02-29 08:59 by Batys, 345 阅读, 收藏,
摘要:
栈与堆都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。Java的堆是一个运行时数据区,类的对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数 阅读全文
java发送邮件
2011-12-04 16:55 by Batys, 432 阅读, 收藏,
摘要:
java发送邮件需要下载一个Mail.jar包【注】如果你用myEclipse进行开发的话,运行时可能会出现以下的错误: Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream 原因是jar包版本不统一,解决方法如下: 删除Java EE 5 Libraries/javaee.jar/mail里的包有东西. 具体方法如下: 方法一:用rar打开X:/Program Files/MyEclipse 6.0/myeclipse/eclipse/plu 阅读全文
用itext导出word,pdf
2011-11-20 14:00 by Batys, 3609 阅读, 收藏,
摘要:
iText是著名的开放源码的站点sourceforge一个项目,是用于生成pdf文档的一个java类库.通过iText不仅可以生成pdf或rtf的文档,而且可以将XML、Html文件转化为PDF文件. 在http://www.lowagie.com/iText/download.html 下载itext.jar文件,加入到classpath中,就可以使用它了. 下面的例子用来生成一个HelloWorld.pdf文件,并在其中写入"Hello World"语句. Java代码 publicstaticvoidmain(String[]args){ Documentdoc=newD... 阅读全文
深入Java集合学习系列:LinkedHashMap的实现原理
2011-11-02 21:21 by Batys, 554 阅读, 收藏,
摘要:
1. LinkedHashMap概述: LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 LinkedHashMap实现与HashMap的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可以是插入顺序或者是访问顺序。 注意,此实现不是同步的。如果多个线程同时访问链接的哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须保持外部同步。2. LinkedHashMap的实现: 对于Linked.. 阅读全文
深入Java集合学习系列:LinkedHashSet的实现原理
2011-11-02 21:08 by Batys, 400 阅读, 收藏,
摘要:
1. LinkedHashSet概述: LinkedHashSet是具有可预知迭代顺序的Set接口的哈希表和链接列表实现。此实现与HashSet的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可为插入顺序或是访问顺序。 注意,此实现不是同步的。如果多个线程同时访问链接的哈希Set,而其中至少一个线程修改了该Set,则它必须保持外部同步。2. LinkedHashSet的实现: 对于LinkedHashSet而言,它继承与HashSet、又基于LinkedHashMap来实现的。 LinkedHashSet底层使用LinkedHashMap来保存所 阅读全文
深入Java集合学习系列:HashSet的实现原理
2011-11-02 21:07 by Batys, 553 阅读, 收藏,
摘要:
1. HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。2. HashSet的实现: 对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet 的实现比较简单,相关HashSet的操作,基本上都是直接调用底层HashMap的相关方法来完成, HashSet的源代码如下:Java代码 publicclassHashSet<E>extendsAbstractSet<E>imp 阅读全文
浙公网安备 33010602011771号