微軟官方部落格在去年發佈了一篇 System.IO.Pipelines: High performance IO in .NET,這個東西高不高效我是比較不出來,但是它著實解決了以往在接收 NetworkStream 時算位置的困擾,用它寫出來的程式碼簡潔清晰許多。
[小菜一碟] C# 中的奇門遁甲 - 隱含轉換(implicit)
在 C# 中常常因為需要配合參數而動態地產生相對應的 SQL 查詢條件字串,StringBuilder 應該是公認能兼顧字串串接效能的解法,不過加號(+)還真是好用啊!相較於使用 StringBuilder,用加號來串接字串簡單又直接,因此我利用隱含轉換(implicit)來搞一個用加號串接字串,但背後其實是 StringBuilder 的解法。
[小菜一碟] C# 中一個古老的好物 - TypeConverter
TypeConverter 是從 .NET Framework 1.1 開始就有的東西,我是在 ASP.NET MVC 的 ActionFilter 中要取得某個 RouteData 時用到這個東西,它能夠幫助我們取得某個型別的轉換器,用來將另一個型別的實例轉換成該型別,這些型別或許我們在開發時間是未知的,但是在執行時期是明確的。
[桌邊服務] DateTime 本身有沒有包含時區的資訊?
[料理佳餚] C# 用 Google Analytics Reporting API 來抓取特定 URL 的 PageView
Google Analytics(簡稱 GA)是 Google 推出的流量分析服務,既免費又強大,做商業網站的我們多少要會一點,通常我們查看流量分析的數據大都是到 GA 的網站,如果我們反過來把 GA 當成是資料來源,那麼我們怎麼從 GA 來取得流量的數據?
[小菜一碟] 將 2 的 n 次方加總結果再拆解回來
在狀態表達的設計手法中,有一種是以 2 的 n 次方來設計,例如:Status1 = 1、Status2 = 2、Status3 = 4、...依此類推,當我們得知某物件的 Status = 5,我們就知道它包含了 Status1 以及 Status3(因為 5 = 1 + 4),.NET Framework 中有一個列舉型別 System.Reflection.BindingFlags 就是這樣設計的,那重點來了,我們要怎麼知道任意一個正整數可以由哪些 2 的次方加總結果呢?
[料理佳餚] C# 實作二階段提交(Two-phase Commit),即使 SQL Server 沒有啟用 MSDTC 也能做分散式交易。
無論是業務需求或是 IT 需求的關係,依據不同需要將資料庫分放在不同伺服器的情形很多見,要進行跨資料庫伺服器交易我們可以啟用 MSDTC 服務來達成,我就在想能不能不去動伺服器的設定,在應用程式端來實現分散式交易?
[料理佳餚] C# 三種實作跨應用程式鎖定的方式
「鎖定」的使用場景通常是我們希望某個資源,同一個時間只有一個程序來存取它,在同一個應用程式中我們有 lock 陳述式、Monitor.Enter、Monitor.TryEnter 可以用來做鎖定,當有一個以上的應用程式,甚至是跨不同機器的應用程式要做鎖定時,會需要用到額外的資源,我們儘量利用我們手邊有的資源來做這件事。
[小菜一碟] 檔案目前位置取得方法的不同,而不是不同的檔案目前位置取得方法。
在這篇文章中網友的留言吸引了我的注意,.NET Framework 提供了至少三種取得檔案目前位置的方法:
AppDomain.CurrentDomain.BaseDirectory
System.Reflection.Assembly.GetExecutingAssembly().Location
System.IO.Directory.GetCurrentDirectory()
我還真不知道它們具體上的差異,趁這個機會做了一下實驗順便記錄下來,也提供給各位朋友參考。
[創意料理] 生平第一次使用 >>(右移)、<<(左移)運算子就獻給 Base32 了
Base64 各位朋友應該都有聽過,也使用過,但是 Base32 或許就比較少了,而且 .NET Framework 也沒有內建 Base32 的 API,會碰到 Base32 是因為有一個需要編碼結果全小寫的需求,顯然 Base64 並不適合,.NET Framework 又沒有 Base32 可以用,那就只好自己來寫一個了。