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

posted @ 2012-03-21 20:46  lastren  阅读(125)  评论(0编辑  收藏  举报