(面向c#開發人員) 編寫javascript的好習慣六 for 運算式

在javascript裡面也支援 for...in  和for (i=0;i<length;i++)這兩種文法不過與C#有所不同,例如 如下所示的for...invar myArray=[];myArray[5]="test";console.log(myArray.length); // 6for(name in myArray){ console.log(name, myArray[name]);}//outputs// 5test數組的length

CLR via C# 讀書筆記 5-3 對象複活(Resurrection)

1. 對象複活當GC想調用一個對象的Finalize方法的時候GC會強制這個對象處於 活 的狀態只有當Finalize方法調用完成以後,這個對象才會永久的消失主要原因是:Finalize方法中可能使用到這個對象的欄位(Field),所以Finalize的過程中需要保證可以訪問這些欄位,所以要保證對象處在 活的狀態當Finalize方法執行完成的時候,這個對象才會真正的消失 2.

C#動態產生代碼和程式集

以下代碼動態產生cs檔案編譯為Assembly  之後可以使用AppDomain.Load 載入程式集,並建立類型 public static void Test() {//聲明代碼的部分 CodeCompileUnit compunit = new CodeCompileUnit(); CodeNamespace sample = new CodeNamespace("命名空間");

CLR via C# 讀書筆記 4-2 線程和鎖的一些使用原則

1.如果可以,儘可能使用線程池中的線程, 因為自己建立,維護銷毀一個線程會極大的消耗CPU和記憶體資源,如果需要定時工作,那麼請使用System.Threading.Timer2.在讀多寫少的情況,使用讀寫鎖ReaderWriterLockSlim (不要使用ReaderWriterLock), 因為這樣讀操作之間不會互斥3.盡量不要使用遞迴的鎖 ,當然Moniter是個例外,他雖然使用了遞迴, 但是他的效能也挺好的,(lock關鍵字內部就是使用Moniter,

CLR via C# 讀書筆記 2-2 編譯器最佳化導致的問題 – Timer

DotNet項目在Debug 和Release 模式一個主要的差別就是有沒有開啟編譯器最佳化在Release下由於採用了編輯器最佳化,那麼原來有些運行正常的代碼就會出問題 下列代碼, 系統覺得Timer已經沒有用了...所以就被回收了..所以在Release模式下 timer只會執行一次 (注意如果是Debug模式那麼一直運行)(注意如果使用Visual Studio的調試器, vs會幫你延長臨時變數的生命週期...那麼也會一直運行)(調用GC.Collect()是為了顯式執行GC

CLR via C# 讀書筆記 3-6 比較APM和EAP(非同步編程模型和基於事件的編程模式)

APM: The Asynchronous Programming Model  (非同步編程模型)    BeginXXXEAP: The Event-Base Asynchronous Pattern (基於事件的編程模式)  Button.Click+=........EPM: The Event-Base Programming Model  1.本質上EAP內部也是使用了APM,只是EAP做了一些封裝,

(面向c#開發人員) 編寫javascript的好習慣七 閉包1

閉包是一個很強大的功能,但是也很不容易用好下面是一個負面教材 <ul id="ul1"></ul> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script> <script>for (var i = 0; i < 10; i++) { $("<li />", {

CLR via C# 讀書筆記 6-3 跨域訪問的效能問題

以下代碼示範了跨域訪問的效能問題大約不跨域比跨域快100多倍.... 代碼Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> AppDomain newDomain = AppDomain.CreateDomain("remote application domain", null, null);

CLR via C# 讀書筆記 5-2 為什麼不使用Finalize

1.在建立對象的時候,Finalize需要更多的時間, 因為需要把對象放到Finalization List 中2.Finalize會讓你的應用程式啟動並執行更慢,因為在GC的時候需要對每個對象執行額外的檢查3.Finalize會對記憶體造成更大的壓力(Heap的記憶體配置問題) 4.Finalize執行時間是不確定的,如果是使用需要獨佔的資源例如File, 那麼下一個想使用檔案的人無法確定什麼時候才能使用它所需要的檔案,

CLR via C# 讀書筆記 5-1 何時對託管資源使用Finalize

Finalize方法常用於回收非託管資源,以防止資源流失在較少的情況下它也會被用於託管資源1.建構函式中如果拋出異常, 那麼只有Finalize方法才會被執行,在這裡可以回收一些已經分配的資源(Dispose不會被執行!!!)當然:Finalize方法的執行時間還是下一次GC的時候(依然不確定時間)如果不實現該方法將會造成資源流失以下代碼示範了在這種情況代碼Code highlighting produced by Actipro CodeHighlighter (freeware)http:/

CLR via C# 讀書筆記 5-6 記憶體回收的Generation

直接用代碼和注釋說明問題吧~~ 代碼Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->public static class Program{internal sealed class GenObj {~GenObj() { Console.WriteLine("In Finalize method");

CLR via C# 讀書筆記 1-1 何時使用線程或者線程池

一般來說在儘可能的情況下使用線程池 除了以下的4個情況需要手動控制線程運行在非預設的優先順序上(不推薦)需要表現為前台線程需要長時間的運行一個任務想要手動控制一個線程的生命週期(例如Abort)-------------------------------其實我覺得還有兩個重要的方面線程池是全域共用的,也就是說一個程式往線程池裡面塞入一些任務

C#中類型分析中的常見問題 Type

寫代碼的時候經常需要分析已有類型的資訊例如:分析現有類型自動產生類, 或者為現有的類自動增加一些功能總結了一點點經驗以ClassA  a; 為例1. 通過typeof(ClassA) 或者 a.GetType() 擷取類型資訊, 推薦使用typef() 可以避免Null 參考,而且有的時候不需要構造一個ClassA的執行個體,  typeof(ClassA)的效能一點都不差,不要把它和反射混為一談,2.對於Type.IsPrimitive來說  很多常見的類型不是原生類型  例如 String

CLR via C# 讀書筆記 1-2 建立線程的成本

在clr中建立線程的代價還是比較高的 ,他需要兩個部分記憶體:線程核心對象, 存放描述線程的一些內容和上下文 . (記憶體消耗:700B-2500B)線程環境,存放例如異常處理鏈之類. (記憶體消耗 1Page  4k-8k)使用者模式堆棧, 存放 參數 變數等  ,這也就是平時我們說的堆棧和堆的區別中的堆棧  (記憶體消耗:1MB)核心模式堆棧,

CLR via C# 讀書筆記 6-4 監控AppDomain資源使用

可以通過將AppDomain.MonitoringIsEnabled 設定為true開啟監控域的資源之後可以通過訪問以下屬性擷取域的資源消耗  1. MonitoringSurvivedMemorySize      2. MonitoringSurvivedProcessMemorySize      3. MonitoringTotalAllocatedMemorySize       4. MonitoringTotalProcessorTime不過這裡有些非常噁心的地方  1.

CLR via C# 讀書筆記 5-5 預留大記憶體

在進行需要很大記憶體空間的計算時,非常容易發生OutOfMemoryExceptionSystem.Runtime.MemoryFailPoint提供了在運行需要大記憶體的計算前進行記憶體檢查的功能在調用該方法的時候執行了以下步驟(如果不完全確定所需的記憶體大小,可以傳近似值)1.檢查系統的分頁檔是否有足夠大的可用空間,檢查進程中是否有足夠的連續虛擬位址空間2.如果這裡沒有足夠的空間,就會啟動GC嘗試回收一些記憶體3.如果GC之後依然沒有足夠的分頁檔空間,,嘗試擴大分頁檔,如果分頁檔大小還是沒法

CLR via C# 讀書筆記 5-7 GC的工作模式

記憶體回收目前支援兩種工作模式,

Katama hash 演算法的C#實現

Katama hash 是經常在分布式解決方案中見到的演算法,網上已經有很多文章介紹這個演算法或者其他的hash一致性演算法前一陣子正好在做一個分布式系統的時候需要實現該演算法,在網上找了找,發現用C#實現的都不是很好。。有一個搜尋出來結果最前面最多的實現,效能沒有最佳化過,代碼可讀性也不是很好。。然後各個C#的memcached library中的實現又耦合的太緊了,所以自己搞了下面的這段代碼(參考了這位朋友的實現 http://www.cnblogs.com/daizhj/archive/2

Lock Free ObjectPool的C#實現 (對象池)

最近實現了一個LockFree的對象池主要的想法是:  1.複用構造出來的對象  2.避免重複建立和銷毀對象對GC造成的壓力  3.避免重複建立對象造成的資源消耗最適合的情境是:  1.構造對象很慢,並且需要構造很多個對象的情況主要技術特徵:  1. C#4.0的實現(可以降級到2.0)  2. 內部沒有使用普通的lock,而是使用Lock Free的實現方式  3. 將常用的取回對象的方式,換成委託運行, 這樣的話ObjectPool可以幫你自動將對象壓回隊列  4.

《Effective C#中文版: 改善C#程式的50種方法》De讀書筆記(推薦) .

本文轉自:http://blog.csdn.net/jpr1990/article/details/6691455 其實這本書我都借了好久,一直沒有系統的看,所以趁這兩天好好看看,順便總結了一些要點,給那些需要這方面知識而又沒有太多時間的IT人一個快速的學習機會。。。。如果要深入學習,請購買該書。

總頁數: 4314 1 .... 583 584 585 586 587 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.