[C#]原子能委員會輻射監控非官方API
最近日本的事件搞得大家人心惶惶,三不五時就要上一下原子能委員會的網站看一下輻射量是否超標,為了更有效的取得這樣的資訊,稍微花點時間去整理了一下API,有興趣的可直接取用,希望藉此拋磚引玉會有更多便民的工具被開發出來。 ...
最近日本的事件搞得大家人心惶惶,三不五時就要上一下原子能委員會的網站看一下輻射量是否超標,為了更有效的取得這樣的資訊,稍微花點時間去整理了一下API,有興趣的可直接取用,希望藉此拋磚引玉會有更多便民的工具被開發出來。 ...
之前在做壓縮的函式庫時,有碰到一個需求是壓縮整個目錄的資料,目錄裡面可能又含有許多子目錄,要壓縮時會需要指派其在壓縮檔內的存放位置,故會需要將要壓縮的檔案位置轉換為相對路徑,壓縮檔內依其相對位置做存放。當初在做這個功能時,找了一下網路上的資料,多半找到的都是用遞迴下去自行處理,雖然運作良好,但程式在理解上會變得稍微困難一點。 ...
有時撰寫程式時我們會需要以當前路徑做為基底路徑,在其下面存放對應的資料,可能直接放在當前路徑下、或是放在當前路徑下面的目錄裡面,此時我們會需要以做相對路徑與絕對路徑的合併,換算所要存取的檔案的絕對路徑。 ...
用過Everything也好一陣子了,一直以來都對他的快速搜尋有相當深刻的印象,但也只限於當作搜尋的工具之用,看了保哥介紹好用工具:Everything search engine (檔名搜尋工具)的這篇,發現原來該套軟體也有SDK可以使用,可藉由他的強大搜尋功能用來開發自己的工具,花點時間試著玩了一下,順手記錄一下。 ...
IDisposable接口為.Net程式釋放非託管資源的標準解決方案,可為類別提供即時釋放資源的機制。 ...
在.Net的世界中,物件的引用可被分為強引用與弱引用兩種。所謂的強引用指的就是我們一般在使用的物件引用方式。我們可將這種物件引用視為一個釘子,牢牢的釘在物件實體上面,只要物件實體仍有被強引用給參考,該物件實體就會被固定的死死的,不能被GC給回收,因這樣的引用特性是很強烈的,故稱之為強引用。 ...
裝箱與拆箱是.Net裡很重要的一個概念,可將值類型視為參考類型一般使用,因此我們在程式撰寫時,可以將值類型以System.Object型態包裝,並保存於Managed 堆積中,開發人員不需自行處理這部份的轉換,這樣的動作在.Net程式中會自動發生。雖然這貼心的小動作會讓程式的撰寫變得很方便,但卻讓裝箱與拆箱動作的發生更不容易被差覺,更糟的是裝箱與拆箱的動作會產生額外不必要的性能耗費。要避免裝箱與拆箱所產生的性能耗費最重要的是我們必需了解到這兩個動作的用途與其發生的時機,能掌握到發生的時機就可以進一步的使用一些技巧來避開。 ...
.NET托管程式因為有GC會自動幫我們找到並回收不必要的物件,因此大多數時候我們不需要像C語言一樣很明確的手動釋放資源,也不會因為忘了釋放資源造成資源的洩漏,是很好的記憶體管理機制。雖然在開發上GC的出現可以讓我們開發人員將記憶體管理交由GC去自動處理。但是開發人員仍應該有個認知是GC在處理資源的分配和物件的銷毀都需要耗費花費額外的處理時間,要回收的物件越多,回收的時間勢必會隨之拉長。因此在開發上我們應該盡可能的減少物件的數量,像是程式中若有過多的物件、不必要的物件、在函式中建立過多的參考物件,我們開發人員都該關注到並試圖避免。 ...
實作IEnumerable & IEnumerator介面最主要的好處是該類別能被foreach直接遍巡處理,有鑒於網路上存在許多IEnulerable & IEnumerator介面的實作方式跟個人的理解有所出入,這邊將個人的理解稍作了整理。 ...
非拖管資源故名思義該資源是非拖管的,跟一般的托管資源不同的是,這些非拖管資源在建立後必須自行去作釋放的動作,不然會產生資源洩漏。為解決這樣的問題,在.NET BCL提供IDisposable介面,提供.NET程式非拖管資源釋放的標準做法,藉由呼叫該介面的Dispose()方法,我們可以對非拖管的系統資源進行釋放的動作。在一般狀況下,這樣的釋放動作應由使用者自行叫用,也就是說當在程式中使用實作有IDisposable介面的類別時,需記得自行呼叫Dispose()方法去釋放資源。若忘了呼叫在釋放的動作,在標準的IDisposable介面實作上也提供了額外的保險措施,會在IDisposable介面實作時為解構子加入Dispose()方法的調用。因此若使用者忘了自行呼叫Dispose()方法釋放資源,在物件解構時仍會將資源給釋放掉。 ...