天天看點

java開發一個應用的總結

需要注意的地方:

(1)業務點要提前列出來,這樣可防止遺漏;

(2)關鍵業務點一定要反複确定,最好能做個測試demo出來,在沒有完成之前,Everything is possible;

(3)有陌生的技術點或業務點時,不要随便承諾完成時間;

技術上容易忽視的地方:

oracle如果有時間比較最好要使用to_char或to_date轉化為同樣的格式。如果db中存的是Date格式,java中的是String格式,

可使用這種轉換格式:

to_date(to_char(org_time,’yyyy-MM-dd’),’yyyy-MM-dd’)=to_date(‘+變量+’,’yyyy-MM-dd’)

需要提的一點是,變量兩邊的單引号是必需的;

msg=msg.replace("%","");

/**

*

* @param date

* @return "yyyy-MM-dd"

*/

public static String getPreMonthDayDate(Date date){

    Calendar calendar=Calendar.getInstance();

    logger.debug("raw:"+formatToString(date, "yyyy-MM-dd"));

    calendar.setTime(date);

    calendar.add(Calendar.DATE,-1);

    calendar.add(Calendar.MONTH, -1);

    String result=formatToString(calendar.getTime(), "yyyy-MM-dd");

    logger.debug("OutPut:"+result);

    return result;

}

if (con==null||con.isClosed()) {

    con=getConnection(database_user2, database_password2);

con.setAutoCommit(false);

con=getConnection(database_user2, database_password2);

ps=con.prepareStatement(insertSql);

for (int i = 0; i < receiverArr.length; i++) {

    ps.setString(1, receiverArr[i]);

    ps.setString(2, msg);

    ps.addBatch();

ps.executeBatch();

con.commit();

java中 long t = System.currentTimeMillis(); System.out.println(t/60/60/24/365/1000);這個的答案就正确,而System.out.println(t/(60*60*24*365*1000));輸出就錯誤. (long i1 = 60*60*24*365;

  System.out.println(t/(i1*1000)); )這兩句合起來也正确.為什麼,怎麼想都想不通 .求高手解答.謝謝了...

主要問題隻有一個:

  預設書寫數字的方式下,數值是 int 型;

那麼連續做乘法,是會溢出的

是以:

  t/(60*60*24*365*1000)

應修改為(加個L):

  t/(60l*60*24*365*1000)