mysql桶思想的應用

原來一直沒有想過數組是可以存到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,就可以讀取數據。


數據庫還有很多的思想等待我們去發現,去挖掘,項目中我們所需要學習的並不是一些前沿框架的使用,而是一些優秀的優化思想。

大道至簡,知易行難

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章