20120321java
Java
1,错误
java.lang.OutOfMemoryError: PermGen space
原因:
PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域OutOfMemoryError: PermGen space從表面上看就是內存溢出,解决方法也一定是加大內存。
PermSize 和MaxPermSize如果設置为相同還可以在一定程度上提高性能。
Perm设置: -XX: PermSize=256m -XX:MaxPermSize=256m
2,java.util.Date和java.sql.Date的区别
继承关系:java.lang.Object --》 java.util.Date --》 java.sql.Date
具体的转换关系就是java.util.Date d=new java.util.Date (new Java.sql.Date());
java.util.Date 就是在除了SQL语句的情况下面使用,
java.sql.Date 是针对SQL语句使用的,它只包含日期而没有时间部分。
3,判断字符串为null或空:
if(s==null||s.equals(""));
判断字符串不为空:
if(null!=str||! "".equals(str));
4,泛型
返回类型为泛型的函数的定义:
public <T> T searchHql(String s);
public <T> void printValue(T v);
注意语法:其中<T>类似于作为泛型的声明。在public修饰符后面是<>, 然后是函数返回值,接着是函数名,函数参数。参数/返回值都可以是泛型的类型。
5,JAAS会对包含在其路径内的所有文件都进行验证/保护,包括css文件、validation等xml文件,如果没有通过jaas验证,这些文件的读取将出错,进而导致相应的功能无法实现。
6,让函数返回多个类对象,用Map来封装结果
public Map<String,Object> getPersonLoginInfo(String uId){
Map<String,Object> result = new HashMap<String,Object>();
LoginInfo loginInfo = loginInfoDao.get(uId);
Person person = loginInfo.getPerson();
result.put("person", person);
result.put("loginInfo", loginInfo);
return result;
}
取值时用:
Map<String,Object> personlogin =epService.getPersonLoginInfo(uId);
loginInfo = (LoginInfo) personlogin.get("loginInfo");
person = (Person) personlogin.get("person");
注意:在上面的getPersonLoginInfo函数中,在通过Person person = loginInfo.getPerson();得到person之后,没有对person进行操作(result.put("person", person);这个操作好像没起到作用),所以由于lazy=true,没有真正取到person里的属性值。
7,int2String
a. String stringValue = Integer.toString(12345);
b. String stringValue = String.valueOf(12345);
c. String stringValue = new String(""+12345);
8,List2Array
http://javarevisited.blogspot.com/2011/06/converting-array-to-arraylist-in-java.html
List assetList = Arrays.asList(asset);
List assetList = new ArrayList();
String[] asset = {"equity", "stocks"};
Collections.addAll(assetList,asset);
List<String> stringList = new ArrayList();
...
String[] strings = new String[stringList.size()];
stringList.toArray(strings);
9,List之间的赋值
ArrayList list=new ArrayList();
ArrayList aaa=list;//这个和list是指向同一个对象
ArrayList bbb=new ArrayList();
bbb.addAll(list);//这个和list不是同一对象,但它们有相同的元素(在不添加其它元素的情况下)。
或者可以通过逐个元素赋值的方法来对List赋值,这样得出来的也不是同一对象。
List<Pai> tmpInHand = new ArrayList<Pai>();
for(int ii=0;ii<inhand.size();ii++){
tmpInHand.add(inhand.get(ii));
}
数组也是同样的道理,本来数组要先初始化,然后再逐个赋值,但可通过直接引用赋值:
int[] former = new int[3];
former[0]=1; former[1]=1; former[2]=1;
int[] latter = former;