原來一直沒有想過數組是可以存到mysql中的,當今天真正使用時,才發現了桶思想的強大之處。
- 什麼是桶思想呢?
桶排序大家一定都知道,這是一個犧牲了空間,來將時間複雜度降低到了線性的算法,而它的特點就是先劃分出一定數量的桶,然後再將數字映射到各自的桶中,再對非空桶進行快速排序。
- 何時會用到這種思想呢?
例如我們我們需要統計一組數據時,其實使用一個字段就可以實現,例如我們需要統計一套試卷的答題情況,其實我們可以設置100個桶,每個學生的分數即對應桶。
而且當我們只需要確定一個狀態時,就可以使用0或1來表示,可以使用bitmap,例如男女,已畢業未畢業這種非反即正的問題。
java中如何存儲數組和取出?
- 可以直接將數組轉化爲二進制進行存儲
- 先轉化爲字符串再進行存儲,取出時再反序列化
- 我使用的是gson的轉化方法,序列化與反序列化十分方便
demo
@Transient
private List<Integer> scores;
@Column(name = "scoreStr")
private String scoreStr;
public void serializeFields() {
this.scoreStr = BeansFactory.getGson().toJson(scores);
}
public void deserializeFields() {
this.scores = BeansFactory.getGson().fromJson(scoreStr, new TypeToken<List<Integer>>(){}.getType());
}
這裏的@Transient註解是爲了防止被序列化,我們將元素存入list中,然後再序列化爲字符串,持久化到數據庫中即可完成數據的存儲,當我們需要使用數據時,只需要將字符串反序列化爲list,就可以讀取數據。
數據庫還有很多的思想等待我們去發現,去挖掘,項目中我們所需要學習的並不是一些前沿框架的使用,而是一些優秀的優化思想。