場景:開發中遇到乙個場景,傳入開始時間和結束時間,獲取大量日誌資料。
問題:當傳入的時間間距是三個月時,就可以獲取到資料,但如果超出三個月,就會報時間超時,因為資料庫的日誌量比較大,一次性在資料庫查詢大量資料容易超時,而且因為業務邏輯問題,所以沒法做分頁。所以想出乙個辦法,將傳入到時間段,切割成多個時間片段,再通過迴圈的方式處理業務,獲取到所有的日誌資料。
將開始日期和結束日期之間的時間段,分成三個月一組的map集合
// 將開始日期和結束日期之間的時間段,分成三個月一組的map集合
public static hashmapspiltdatetomonth(date begindate,date enddate)else
// 此一時間段的結束時間是下乙個時間段的開始時間
tempbegindate = tempenddate;
}return datemap;
}/***
* 獲取幾個月之後的日期
* @param inputdate
* @param number
* @return
*/public static date getaftermonth(date inputdate,int number)
calendar c = calendar.getinstance();//獲得乙個日曆的例項
c.settime(inputdate);//設定日曆時間
c.add(calendar.month,number);//在日曆的月份上增加6個月
date date = c.gettime();
return date;
}
測試類:
public static void main(string args) throws parseexception
}
控制台:
判斷乙個時間段與一組時間段是否有相交
兩個時間段相交分為三種情況,如下圖所示 圖中的數字為時間點的id號 乙個時間段有開始時間點start和結束時間點end表示。1.設定這組時間段彼此互不相交,由陣列列表arraylist表示 timelist,timelist依次加入所有時間段的起末時間點。2.把要判斷的這條時間段的起末時間點依次加入...
這一段時間段的總結
看了太多雜七雜八的東西,而一直不肯去實踐,覺得還是得寫寫部落格,總覺得自己太過於貪心,什麼都想學,結果什麼都不精通。為了以後不再這樣下去,我覺得寫寫blog還是很有必要的。把自己學到的東西用自己的話表述出來,這是一種能力。而寫部落格 恰恰能幫助自己做到這一點。最近看了 effective c 因為看...
這一段時間段的總結
看了太多雜七雜八的東西,而一直不肯去實踐,覺得還是得寫寫部落格,總覺得自己太過於貪心,什麼都想學,結果什麼都不精通。為了以後不再這樣下去,我覺得寫寫blog還是很有必要的。把自己學到的東西用自己的話表述出來,這是一種能力。而寫部落格 恰恰能幫助自己做到這一點。最近看了 effective c 因為看...