1. apache-commons-collections升級
apache-commons專案群的地址在:link。最近開發時發現,原來的apache-commons-colllections依賴庫不能用了,然後去官網查了下,發現近期apache-commons-collections進行了遷移。如下所示:
2. MyBatis中,#和$符號的區別?
SQL的引數讀取要用#,表示佔位符;給出如下SQL陳述句:
SELECT
DISTINCT a.number, a.outgoing_count, b.name, b.icon
FROM
a_detail a outer join b_detail b
WHERE
calllog.kp=#{kp} AND contact.kp=#{kp} AND contact.number=calllog.number
LIMIT #{start}, #{pageSize}
如果我在獲取kp引數的時候使用#符號,則執行過程中,引數會以佔位符的形式出現,並按照引數的型別賦值。當表中該引數有索引的時候,只有型別對才能用到索引。例如,這裡的kp在表中有索引,那麼只有用#{}傳入引數才可用到索引。如果用$符號,則MyBatis會做明文替換,傳遞給MySQL的SQL陳述句也沒有指定正確的資料型別,就用不到kp的索引。
3. 在HashMap中,如何使用可變物件作為key?
參考:Java 用自定義型別作為HashMap的鍵
4. 在JavaWeb開發中,你需要掌握的MySQL知識,可以參考:MySQL總結這篇文章。
5. insertOrUpdate陳述句,透過Insert…values() on duplicate key update ….陳述句實現,這裡有兩點需要註意:
-
影響行數:insert 1、update 2、和當前row的值完全相同則為0;
-
select LASTINSERTID() 傳回值:在insert … on duplicate key update…陳述句中,insert傳回剛剛插入的記錄的ID;update 無意義。
6. 透過正則運算式匹配正確的IP4地址,參考link正則運算式如下:
^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
7. 在Spring MVC專案中,可能需要新增業務監控日誌
我們這裡用到Spring AOP功能。在Controller中新增AOP,可能會出現攔截方法不生效的情況,這種情況可以參考SpringAOP攔截Controller,Service實現日誌管理(自定義註解的方式);另外,也可以利用filter、mvc interceptor或者method intercetpor實現,對於需要統計方法的執行時間,使用method interceptor最合適,參考使用方法攔截器MethodInterceptor和AOP統一處理log。
8. 開發過程中的程式碼質量規範
利用google check style規範,在intelij idea中也有對應的check-style外掛可供使用。
9. 在開發的過程中,有時會對某個專案的程式碼行數感興趣
對於git管理的程式碼庫,可以使用如下命令統計:
git log --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s removed lines: %s total lines: %s\n", add, subs, loc }'