Discuz! Board

 找回密碼
 立即註冊

QQ登入

只需一步,快速開始

搜尋
熱搜: 活動 交友 discuz
檢視: 262|回覆: 1

資料政策 我們的應用程式已經運行了幾個月

[複製連結]

1

主題

1

帖子

5

積分

新手上路

Rank: 1

積分
5
發表於 2022-8-28 17:45:26 | 顯示全部樓層 |閱讀模式
日期和編碼(ANSI、UTF-8、UTF-16)一直是並且仍然是開發人員的眼中釘。2000 年的 bug 已經結束,但在 2021 年底,我們在聖誕節和元旦之間的一個專案中仍然遇到了日期異常。發生了什麼 ?如何治癒它?我們的建議。 Java / Scala / Spark:你遭遇了當年的搶劫嗎? 專案中的一系列自動化單元測試(使用ScalaTest——我可以在專門的文章中詳細討論)使我們能夠大幅減少異常。但是測試仍然容易出錯,因為它們是由人類編寫的。通過結合基於真實資料的自動化單元測試和整合測試,可以顯著降低異常風險。 在我們的Spark 處理中,我們接收到帶有我們需要重新格式化的日期的 CSV 資料。這顯然是 BI 和大資料專案中反覆出現的任務。 Java:年度搶劫案 電子郵件* 電子郵件 * 我接受個人,沒有發生任何事故,但在 2021 年 12 月 27 日,我們收到了客戶的警報。我們在 2 個日期欄位(大約 15 個日期)上傳送 2022 年的豐富資料! 自從我們處於申請凍結期以來,我們已經好幾天沒有新的交付了。如果沒有新的交貨,異常怎麼會在一夜之間出現? 幸運的是,問題的根源很快被確定並修復了。在我們的一個處理中,

年份的轉換用“YYYY”而不是“yyyy”表示。大小寫略有不同,但在一年的最後一週會產生重要影響! 事實上,當我們檢視有關日期格式的 Java 文件時,我們會看到: “y”給出“年份”,所以年份, “Y”給出“週年”,因此是一週中的年份。 注意:Spark 是用 Scala 編寫的(請參閱我關於Spark 和 Scala 開發的文章 大資料專案),該庫基於 Scala 的日期格式函式,而 Scala 本身是基於 Java 的。 那麼“週年”是什麼意思呢? 一年分為天、周、月、季度和學期。一年由2個學期組成。一個學期由 2 個學期組成,一個學期為 3 個月,一個月為 28 至 31 天。到目前為止,一切都很好。 但周是一個不適合這些劃分的附加概念。星期很容易表示,並且對於更精細地切割時間很實用。標準是說一年有 52 周。然而,實際上,年初和年末的 2 周是不完整的。 在商業智慧(BI) 中,我們經常想要比較相同的時期。因此,為了能夠比較一年到另一年的週數,可以用完整的周檢索當前周的編號。一年中的第一週將從上一年的星期一開始,當週期間發生年份變化時。 Java/Scala/Spark 文章 - 周曆 我們的測試用例沒有充分覆蓋計算這兩個日期的函式。儘管它們包含手動新增的案例和真實案例,但對於日期,有必要新增年初和年末的特定案例。小心選擇跨越一週的一年進行測試。2024 年將從 1 月 1 日星期一開始,因此這種測試應避免出現這種情況。 我們的測試集已經豐富,以考慮到這種情況。


我們使用 27/12/2021 作為我們測試的參考日期,以提醒事件 美國電話號碼 發生的日期。因此,所做的更正直接由新的測試用例驗證,它們也將用於保證不迴歸。為了更動態地說明我的評論,這裡有一小段Scala 程式碼摘錄,顯示了 YYYY 和 yyyy 之間的結果差異: Java/Scala/Spar 文章 - Scala 程式碼片段檢視 YYYY 和 yyyy 之間的結果差異 法國的週數 在法國,正式地,一年的第一週從包括 1 月 4 日在內的那一週開始。ISO 8601標準定義了這個規則。它被政府和企業用作會計參考。 如果您使用週數,請務必在程式碼中定義Locale引數(與要遵循的標準相關聯),以確保您擁有正確的計算方法。通過指定“法國”,您將擁有從 1 月 4 日開始的一年中的第一週。通過保留預設值,一切都將取決於您伺服器上的配置,這是有風險的。 這是一個新的程式碼片段來說明設定語言環境的重要性: Java / Scala / Spar 文章 - 語言環境定義的重要性 我希望我已經啟發您瞭解這種可能導致重大問題的細微破損,特別是因為它總是發生在一年中最糟糕的時間(假期和節假日期間)。 因此,必須就此進行溝通,但也要仔細考慮測試及其覆蓋範圍。另請注意,語言環境定義也很重要,尤其是在您使用週數的情況下。 在本地環境或預生產環境中進行測試時,您可能會得到與生產環境不同的結果。強制使用 locale(還有timezone)可以保證在所有環境中得到相同的結果。

回覆

使用道具 舉報

0

主題

1813

帖子

3738

積分

論壇元老

Rank: 8Rank: 8

積分
3738
發表於 2024-10-14 04:26:28 | 顯示全部樓層
сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт  
сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт  
сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт  
сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт  
сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт  
сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт  
сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт  
сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт сайт
回覆

使用道具 舉報

您需要登入後才可以回帖 登入 | 立即註冊

本版積分規則

Archiver|手機版|小黑屋|DiscuzX

GMT+8, 2024-11-26 02:34 , Processed in 0.014092 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回復 返回頂部 返回列表