Java
文章平均质量分 68
netHibernate
这个作者很懒,什么都没留下…
展开
-
多态,你烦不烦?--Java
多态,我们都在用啊!可是,你会不会觉得它烦?让我回答,考试的话,它就烦了! 代码 class Base{ public int x=2; public int get() { return x; }} class SubClass extends Bas原创 2006-10-14 17:03:00 · 1115 阅读 · 0 评论 -
使用Hibernate连接MySQL数据库,MySQL连接超时断开的问题
最近让人头疼的一个问题,就是服务器在不确定的时点会出现关于数据库连接的Exception,大致的Exception如下:org.hibernate.util.JDBCExceptionReporter - SQL Error:0, SQLState: 08S01org.hi原创 2011-08-04 12:14:40 · 25124 阅读 · 5 评论 -
我们需要getter和setter方法么?
<br />在日常工作中,Java是我最频繁使用的语言。关于getter和setter我也听说过不少。我的感觉是在许多场合,我们不需要getter和setter方法。<br /><br />回想一下我们写JavaBean,创建一个类,然后编写一些private字段,最后使用一个smart IDE帮助我们生成对应的getter和setter方法(或者使用某个第三方类库的annotation)。但是让我们仔细的想一下,我们是怎样使用这些字段的,换句话说,我们为什么一上来就把字段写成了private?<br原创 2011-04-19 23:23:00 · 4789 阅读 · 4 评论 -
Effective Java读书笔记八
Item9:当覆写equals方法时,一定要覆写hashCode方法这一条非常重要,再次提一下:覆写了equals方法就一定要覆写hashCode方法。因为如果不这么做的话就会违反hashCode的准则,从而让基于hash的colloections——HashMap,HashSet等——的使用出现问题。下面是hashCode方法的准则:对同一个对象调用多次hashCode方法,得到的是同一个整数,但是这个整数在同一个Application多次执行中不一定相同。如果equals方法判断两个对象相等,那么这原创 2011-04-18 23:43:00 · 1584 阅读 · 0 评论 -
Effective Java读书笔记七
Item 8:覆写equals方法应该遵守的准则最简单的准则就是不覆写equals方法,这样就能避免很多问题。以下的这些情况不需要覆写equals方法:类的每一个实例都是唯一的:比如Thread,我们关注的是它本身作为一个活动的实体,而不是一个值。我们不关注某个类是否是逻辑相等的:比如java.util.Random类覆写了equals方法来检查两个Random的实例是否会产生相同的随机数,但是这个对我们来说基本毫无用处。超类已经覆写了equals方法,并且该覆写对子类也适用:就像AbstractSet,A原创 2011-04-13 00:50:00 · 1480 阅读 · 0 评论 -
Effective Java读书笔记六
Item 7:尽量不要使用finalizerJoshua一上来就强调:Finalizer是无法预言的,危险的并且大部分情况下是不必要的。使用finalizer会给代码带来不稳定的行为,低下的性能,还有可移植性的问题。根据JLS,finalizer无法保证被按时的执行。我们知道,当一个对象过期之后,在垃圾回收器回收之前会自动的调用finalizer方法,所以有的时候我们就会把一些对象的收尾工作放在finalizer方法中,比如文件的关闭,数据库连接的释放等。但是,正是因为JLS的这个“无法保证”,会让程序不定原创 2011-03-26 01:02:00 · 1404 阅读 · 0 评论 -
Effective Java读书笔记四
Item5:避免创建不需要得对象在很多时候我们可以重用已有的对象而不需要创建新的对象,尤其这个对象是immutable的。比如String类型的对象,我们一般不会这么用:String s = new String("stringette"); // DON'T DO THIS! 因为这种做法每次都会创建一个新的String对象,对性能是一种损耗,而String是一个immutable的类型。当一个immutable类既提供了构造函数,又提供了static factory methods的时候,我们首先考虑使原创 2011-03-23 23:32:00 · 1257 阅读 · 0 评论 -
Effective Java读书笔记五
Item 6:消除对过期对象的引用看这个item之前没有过多的想过Java对象过期的问题。因为对象是由JVM控制的,JVM的垃圾回收机制也是Java区别于C++之类的语言的优点。可能是我一厢情愿了,所以在日常编程中忽视了这个问题。下面是java.util.ArrayList类中remove method的摘抄:public E remove(int index){ checkBoundExclusive(index); E r = data[index]; modCount++原创 2011-03-24 23:08:00 · 1469 阅读 · 0 评论 -
Effective Java读书笔记三
Item 3:用private的构造函数或者enum类型来增强singleton模式先说一个singleton模式的缺点:使用singleton模式会让依赖于它的代码难于测试,因为在测试的时候我们无法用创建一个mock来隔离singletong对象。除非singleton类实现了一个interface,而我们的代码依赖于这个interface。所以在日常工作中,如果需要使用singleton模式的话,最好在它和singleton类之间做一个隔离,好让我们在测试的时候创建mock隔离它。在Java 5.0之前原创 2011-03-22 23:29:00 · 1433 阅读 · 0 评论 -
Effective Java读书笔记二
Item 2:当构造函数参数过多时考虑使用Builder来创建对象我们在设计类的时候,有些类难免会有许多的字段(fields),而这些字段可能需要在创建对象的时候对它们进行赋值。一般我们会考虑两种方式:使用构造函数或者使用setter方法。使用构造函数的缺点很明显,如果我们的字段过多,那么就会让构造函数的参数过多,在这种情况下,不但不容易理解和阅读,而且非常容易出错(这时候就体现出具名参数的好处了)。另外,对于static factory methods也是一样的。而使用setter方法可以减少构造函数的参原创 2011-03-21 23:15:00 · 1621 阅读 · 0 评论 -
Effective Java读书笔记一
最近开始读Joshua Bloch的Effective Java的第二版,打算花一些时间把它看完。记得上一次读它的第一版还是在大学的时候,转眼间已经是4年之久了。上次因为各种原因并没有把第一版看完,所以这次一定要好好的读一下它的第二版。废话少说,今天看了它的第二章:Creating and Destroying Objects(第一章是介绍),这一章包含了7个条目:一、使用static factory methods(静态工厂方法)代替构造函数static factory methods和Factory M原创 2011-03-21 00:11:00 · 2161 阅读 · 0 评论 -
float类型在内存中的表示
我们经常遇到两个float类型的数相加或者相减,总是得不到我们想要的结果,比如10.0f-9.1f。这里面的猫腻都来自于计算机对float类型的转换和存储方式。这篇文章里主要记述了float类型如何转换成内存中表示的二进制形式,以及如何利用二进制进行运算。知道了这些后,我们就不会再对float运算不准确感到惊讶了。原创 2011-01-06 15:11:00 · 18693 阅读 · 8 评论 -
Java中的byte
最近因为在做金融项目,里面对byte的操作要求比较多,所以在这里整理了一下关于Java中的byte类型。Java虚拟机中没有byte类型恩。。。怎么说呢,个人感觉这个说法有点儿唬人的意思。的确,当这个想法刚刚出现在我的脑海中的时候我觉得也有些胡扯,毕竟byte类型就在那里,怎么能说Java虚拟机中没有byte类型呢?好吧,我来稍稍的解释一下。Java虚拟机对基本类型的操作基本都是在栈上原创 2010-05-11 15:31:00 · 37824 阅读 · 13 评论 -
【转】Java的内存泄露
Java 的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或JVM的问题。其实,这种想法是不正确的,因为Java也存在内存泄露,但它的表现与C++不同。随着越来越多的服务器程序采用Java技术,例如JSP,转载 2009-03-22 16:46:00 · 978 阅读 · 0 评论 -
protocol buffer newBuilder速度慢问题
最近的这个项目一直使用protocol buffer作为协议层,大家在使用的过程中发现,每次在创建消息的builder——即newBuilder的时候,会非常的慢(常常需要20ms以上),以至于大家现在基本是谈newBuilder色变的地步。今天亮亮终于忍不住,问我为啥一个builder的创建那么慢呢,我正在玩儿游戏,抽空调出源码来看了一下,发现里面就真是new了一个Builder对象,这个Bui原创 2015-04-15 19:57:39 · 2054 阅读 · 0 评论