in

Darkthread

黑暗執行緒
All Tags » .NET (RSS)

Browse by Tags

  • 【答客問】ClosedXML 日期資料解析測試

    網友 Danny 在舊文留言 提問 關於 NPOI 讀取 Excel 日期,"2017/9/23"被轉成"23-九月-2017"的問題,我已棄用 NPOI 投向 新歡 ClosedXML 多年,沒打算再花時間研究,於是題目改成: 面對相同文件,ClosedXML 能否順利過關? 取得 Danny 提供的測試樣本,挺有趣的,共有四欄(F、G、N、AS)包含日期資料,第一列有欄名分別為A6、A7、A14與A45: 四欄儲存格格式各有千秋,A6 設成自訂 yyyy/mm/dd: A7 設為文字,其中包含 1953.9.12、1968/1/13、1953/09/12...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 09-23-2017
  • 大型物件 Json.NET 序列化經驗一則

    附檔管理模組裡採用 JSON 格式保存暫存物件,將附檔物件序列化暫存成檔案,稍後寫入資料庫時再還原取出資料,直覺又方便。不料因附檔物件內含檔案內容(byte[])體積龐大,在處理極端案例時踢到記憶體不足的鐵板。 批次作業程式為 32 位元模式,依經驗記憶體上限約 1.8 GB,一開始很直覺地將資料用 JsonConvert.SerialObject() 轉成 JSON 字串再用 File.WriteAllText() 寫成檔案,之後用 File.ReadAllText() 讀取 JSON 字串,再以 JsonConvert.DeserializeObject<T>() 還原回物件:...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 09-18-2017
  • Dictionary 多執行緒存取衝突吃光 CPU

    這是一個老鳥失足,程式沒寫好吃光 CPU 的故事。開始前推薦大家兩篇先修知識: WinDBG 應用實例:找出 ASP.NET CPU 100% 原因 ASP.NET CPU 飆高問題之傻瓜分析工具-DebugDiag Tools 接獲通報,某主機在離峰時段出現 CPU 維持 50% 高檔狀況,來源則是某個 ASP.NET AppPool Process。依照 SOP,先擷取 Memory Dump 後再重啟 AppPool。(提醒:建立 Dump 檔前需確認 AppPool 是 32 位元還是 64 位元,若為 32 位元需 改用 32 位元版 TaskManager ,32 位元版 TaskManager...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 09-04-2017
  • dynamic 參數之效能損耗實測

    依據 前篇文章 :參數傳入 dynamic 會讓函式傳回值也變成 dynamic,導致無法使用 LINQ Lambda 運算式。文末提到,依據 方法多載(Method Overloading)與 dynamic 一文的研究心得,.NET 呼叫函式時若遇到參數為 dynamic 時,將改用System.Runtime.CompilerServices、System.CSharp.RuntimeBinder 命名空間物件與方法間接觸發,程序曲拆繁瑣許多。由此推測,參數傳入 dynamic 型別肯定會產生效能損耗,好奇心驅使之下,索性寫幾行程式實測親見為憑。 我設計測試程式如下,執行 100 萬次 "2017...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 08-27-2017
  • ViewBag dynamic 特性導致無法使用 LINQ 語法

    寫 ASP.NET MVC CSHTML 時,我很習慣用 ViewBag 將變數從 Controller 傳到 View 端,只是簡單傳遞幾個字串、數值,為此大費周章宣告 Model 型別有點殺雞用牛刀。我們都知道 ViewBag 是一個 dynamic 型別,而 dynamic 型別的屬性、方法也會被視為 dynamic,編譯階段不檢查,執行階段見真章。 不過,最近學到一件事:一旦函式參數傳入 dynamic,其傳回值也會被視為 dynamic,而此時將無法使用 Lambda 運算式 。 來看下面這個例子。我計算透過 ViewBag.DateString 傳遞 "2017/08/26"格式字串...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 08-25-2017
  • 小技巧-使用匿名型別快速捏出指定JSON格式

    同事有個小需求,已知城市、區域及郵遞區號要產生如下規格的 JSON 餵到前端: { "rows" : { "row" : [ { "City" : "台北市" , "Area" : "文山區" , "ZIP" : "116" } ] } } 先前介紹過 JObject 結合 dynamic 的 花式玩法 可以快速達成目標: static void TestJObject( string city, string area, string...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 08-25-2017
  • C# 連線 HTTPS 網站發生驗證失敗導致基礎連接已關閉

    某台透過 .NET WebClient 物件爬網頁抓資料排程忽然出現: 基礎連接已關閉: 傳送時發生未預期的錯誤。 ---> System.IO.IOException: 驗證失敗,因為遠端群體已經關閉傳輸資料流。 The underlying connection was closed: An unexpected error occurred on a send. ---> System.IO.IOException: Authentication failed because the remote party has closed the transport stream 有趣的是...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 08-19-2017
  • Json.NET 日期型別時區問題之終極解法

    一直以來常被 JSON 日期序列化時區問題困擾,問題主要發生於從資料庫查詢日期欄位,轉為 .NET DateTime 型別時其 Kind 屬性為 Unspecified,而以 DateTime.Now、DateTime.Today 取得的日期物件,Kind 則為 Local,二者不一致可能導致前端出現 8 小時時差。為解決問題,先前想到的做法是先宣告 JsonConvert.DefaultSettings DateTimeZoneHandling = DateTimeZoneHandling.Utc,將 DateTime 統一轉為 "yyyy-MM-ddTHH:mm:ssZ"...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 08-08-2017
  • 方法多載(Method Overloading)與 dynamic

    方法 多載(Overloading) 是指多個名稱相同但參數個數或型別不同的方法,編譯器依傳入參數的個數、型別與順序決定使用哪一個方法。概念上多載讓方法變得更彈性,能接受不同參數組合,符合更多應用情境。舉個常見的例子,Convert.ToByte() 可傳入 int, short, string, float, double, decimal, char… 等輸入值,將其轉成 byte,傳入 string 時還能指定 16 進位(fromBase)或 IFormatProvider。 我有個根深蒂固的觀念-多載解析都發生在編譯期間,編譯器依參數將函式指標指向同名方法的其中一個。上回在談 擴充方法參數傳入...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 08-03-2017
  • 程式範例-使用 Json.NET 將 Key/Value 陣列轉為物件屬性

    專案遇到的需求:程式接收來自外界的 JSON 資料,物件之各屬性內容以 KeyValuePair<string, string> 陣列儲存,序列化結果如下: { "modType" : [ { "Key" : "I" , "Value" : "獨立模組" }, { "Key" : "J" , "Value" : "聯合模組" } ], "source" : [ { "Key"...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 08-02-2017
第1頁,共26頁 (259個項目) 1 2 3 4 5 下一頁 > ... 最後一頁 »
Powered by Community Server (Non-Commercial Edition), by Telligent Systems