1. 設計表的時候,主鍵的選擇
如果業務欄位是bigint型別,可以含義不會改變,則可以用作主鍵;更普遍的做法是,選擇單獨的id欄位作為表的主鍵(為了考慮後續水平擴充套件的需求,要求全域性唯一,即用發號器獲取);業務主鍵如果是字串型別的,也不能作為表的邏輯主鍵使用,因為太佔用空間、效率低。關於這個主題的探討,可以參考:資料庫的唯一標示符(ID)的選擇
2. Mybatis使用技巧
在Mybatis中,一般會將SQL陳述句以K-V對寫在xxxMapper.xml檔案中,關於$和#兩種符號的區別:$符號表示MyBatis在動態替換過程中的字串替換;#符號是引數佔位符,表示SQL陳述句的引數替換。參見:mybatis深入理解(一)之 # 與 $ 區別以及 sql 預編譯
3. Mybatis經典文章
連結:http://www.jianshu.com/p/ec40a82cae28。PS:這個系列的其他兩篇文章也非常不錯。
4. 千萬級的資料集合如何去重?
思路1:最樸素的思路是利用Java 8的集合API進行操作,這種情況下,如下程式跑完一次去重需要6s(我的機器是Mac Pro),那麼總共需要6000s,大概兩個小時;思路二:如果兩個集合的字串序列都能有序,就可以用點陣圖演演算法進行標記,但是發現瓶頸在排序;思路三:藉助外部系統,例如MySQL,將這批資料存放在表中,並建立索引,藉助一個版本號進行標記。在實際專案中,我們評估了MySQL進群的處理能力,選擇了思路三,這和思路二一樣,都是換一種資料結構去思考和解決
package org.java.learn.collection;
import java.util.*;
public class ARemoveBListExample {
public static void main(String[] args) {
Set<String> aSet = new HashSet<>();
Set<String> bSet = new HashSet<>();
for (int i = 0; i < 10000; i++) {
String str = UUID.randomUUID().toString();
aSet.add(str);
bSet.add(str);
}
for (int i = 0; i < 10000000; i++) {
aSet.add(UUID.randomUUID().toString());
}
//求A集合到B集合的差
long start = System.currentTimeMillis();
// List
result = aSet.parallelStream().filter(a -> !bSet.contains(a)).collect(Collectors.toList());
aSet.removeIf(a -> bSet.contains(a));
long end = System.currentTimeMillis(); System.out.println("cost: " + (end-start) + "ms, result size:" + aSet.size());
}
}
5. RESTful介面經驗
在構建REST服務時,需要提供統一的異常處理、統一的請求引數、統一的響應結構,利用基於註解的AOP可以實現這個功能。
6. BasicThreadFactory的使用
該類的實體不會直接建立執行緒,其內部使用的builder構建器負責建立執行緒,透過構建器樣式可以為要建立的執行緒配置很多屬性:命名規則、是否精靈行程,以及執行緒的優先順序等熟悉。
7. MQ消費者設計經驗
在業務開發中,會有如下的應用場景:服務A有個執行緒池不斷消費來自MQ推送的訊息,只有消費完給MQ發出response之後才能繼續消費新的訊息;為了不讓訊息堆積,我們需要盡可能加快這個執行緒的處理能力,必要的時候需要將該執行緒中能非同步做的工作非同步掉,例如請求遠端的HTTP介面。這種場景下,就需要使用httpclient的非同步呼叫,直接使用httpclient有點麻煩,最近接觸的vert.x提供了一個不錯的方法,可以參考:Vert.x HTTP Client
8. MyBatis應用技巧
傳入多個引數時,在xml檔案中如何獲得引數?參考:http://www.cnblogs.com/mingyue1818/p/3714162.html
9. MyBatis應用技巧
如何在應用程式中配置多資料源?參考:http://blog.csdn.net/isea533/article/details/46815385
10. 利用curl測試自己的服務介面
連結:http://droidyue.com/blog/2014/07/02/send-post-request-using-curl/index.html
最後做個投票,這個號後面的發展,有你的一份努力: