<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
        

      關于Date使用不當的bug

      關于Date使用不當的bug

      1、背景

      用戶調用接口,傳入一個參數分鐘,表示想要查詢距離現在多少分鐘的記錄。

      有的時候會查不到記錄。

      2、排查過程

      大致代碼。

      • 獲取當前的時間的date對象now,通過now的時間戳計算前beforeMinute的時間戳,轉換成date對象
      • 查詢 executeTime >= before && executeTime <= now && status == 1 的記錄
      	@GetMapping("/test")
          public void testMongo(Integer beforeMinute) {
              // 計算執行時間前后時間
              Date now = new Date(); // 獲取當前時間的Date對象
              Date before = new Date(now.getTime() - beforeMinute * 60 * 1000); // 獲取前beforeMinute的Date對象
      
              andCriteriaList.add(Criteria.where("executeTime").gte(before));
              andCriteriaList.add(Criteria.where("executeTime").lte(now));
              andCriteriaList.add(Criteria.where("status").is(Integer.parseInt("1"))); // 狀態為 1
              Criteria combinedCriteria = new Criteria();
              combinedCriteria.andOperator(andCriteriaList.toArray(new Criteria[0]));
              Query query = new Query();
              query.addCriteria(combinedCriteria);
              List<AuditLogDownloadBean> list = mongoTemplate.find(query, AuditLogDownloadBean.class);
              for (AuditLogDownloadBean bean : list) {
                  System.out.println(bean.getId() + " "+ bean.getExecuteTime() + " " + bean.getJobName());
              }
              return ;
          }
      

      經過debug,問題出在構造before的date對象上,有時會出現before計算出來的時間戳會比now還要大,所以導致查不到數據。

      Date before = new Date(now.getTime() - beforeMinute * 60 * 1000);
      /**
      	當查詢三天前的記時,傳入的參數=3x24x60=43200
      	此時,beforeMinute * 60 * 1000 = 2,592,000,000 共十位,而int的最大值也是十位 2,147,483,647,所以產生了整型溢出,
      	整個表達式的值相當于 now.getTime() - (-1702967296), 所以會比now還要大,最終導致查不到數據。
      */
      
      // 改正 
      Date before = new Date(now.getTime() - beforeMinute * 60L * 1000);
      

      3、總結

      1. Java 中數字字面量默認是整型的
      2. 當一個表達式中含有變量時,要注意其是否可能產生整型溢出
      3. 當一個表達式中包含Long類型時,整個表達式的值會向Long轉變
      posted @ 2023-04-02 21:08  永恒&  閱讀(139)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产美女高潮流白浆视频| 国语对白做受xxxxx在线中国| 国产精品区一二三四久久| 韩国午夜福利片在线观看| 国产精品视频全国免费观看| 免费国产女王调教在线视频| 麻豆成人久久精品二区三| 久久婷婷综合色丁香五月| 区一区二区三区中文字幕| 福利一区二区在线播放| 最新中文字幕国产精品| 在线观看潮喷失禁大喷水无码| 精品无码一区二区三区电影| 亚洲欧美中文字幕日韩一区二区 | 久久国产精品波多野结衣| 婷婷开心深爱五月天播播| 亚洲综合在线一区二区三区| 日韩在线视频网| 精品无码人妻| 国精一二二产品无人区免费应用| 亚洲综合黄色的在线观看| 国产精品一区二区中文| 免费无码AV一区二区波多野结衣| 国产精一品亚洲二区在线播放| 91久久偷偷做嫩草影院免费看| 思思热在线视频精品| 人妻少妇乱子伦精品| 又湿又紧又大又爽A视频男| 国产一区二区一卡二卡| 亚洲欧美日产综合在线网| 精品亚洲综合一区二区三区| 四虎库影成人在线播放| 亚洲一区二区三区久久受| 国产盗摄xxxx视频xxxx| 少妇人妻真实偷人精品| 精品素人AV无码不卡在线观看| 亚洲国产日韩伦中文字幕| 中文字幕久无码免费久久| 人妻丰满熟妇av无码区| 九九久久人妻一区精品色| 无码日韩精品一区二区三区免费|