多執行緒系統中不得不知-volatile

前言

假如你寫過多執行緒系統一定會看過volatile,但你對他的了解有多少?

MSDN對於volatile關鍵字解釋如下.

volatile 關鍵字指出某個欄位可能是由同時執行的多個執行緒所修改。 編譯器、執行階段系統,甚至硬體都有可能基於效能因素,而重新排列對記憶體位置的讀取和寫入。 宣告為 volatile 的欄位不受限於這些最佳化考量。 加入 volatile 修飾詞可確保所有的執行緒都會依執行寫入的順序,觀察任何其他執行緒所執行的暫時性寫入。

MSDN上寫一堆文謅謅的解釋,如果沒有相對應OS或底層概念會很難理解上面敘述

...繼續閱讀 »

.Net使用RabbitMq EasyNetQ介紹

前文

現今越來越多系統使用MQ來達成非同步並來提升系統吞吐量,我今天想要介紹的是EasyNetQ一個封裝RabbitMq Client .net框架

  • 小型DI容器
  • 對於RabbitMq封裝
  • 對於連接使用lazy connection連接RabbitMq

If the server disconnects for any reason (maybe a network fault, maybe the RabbitMQ server itself has been bounced), EasyNetQ will revert to polling the endpoint until it can reconnect.

...繼續閱讀 »

[Day14] 反轉起來~透過IOC解析來執行依賴反轉

前言

要建立客製化的解析器可以實現IDependencyResolver介面並使用DependencyResolver.SetResolver替換DefaultDependencyResolver預設解析器

DependencyResolver,ControllerControllerFactory關係如下圖

IOC_Asp.netMVC.png

我有做一個可以針對於Asp.net MVC Debugger的專案,只要下中斷點就可輕易進入Asp.net MVC原始碼.

...繼續閱讀 »

[Day13] Asp.net MVC如何實現IOC解析器

前言

IOC依賴反轉是oop重要程式設計思想。(Ioc—Inversion of Control 控制反轉)

詳細資訊可以查看小弟另一篇文章 IOC(控制反轉),DI(依賴注入) 深入淺出~~

有沒有人會很好奇說為什麼只需要透過DependencyResolver.SetResolver方法我就可以直接使用AutoFac或其他IOC容器?

今天跟大家分享Asp.net MVC利用什麼設計技巧,讓外部IOC容器可以很方便融入系統中.

...繼續閱讀 »

[Day12] 談談Controller幾個重要成員

前言

上篇得知MVC預設透過DefaultControllerFactory反射方式動態建立Controller物件

本篇會分享我們常用到Controller基礎類別和相關物件.

我有做一個可以針對於Asp.net MVC Debugger的專案,只要下中斷點就可輕易進入Asp.net MVC原始碼.

此篇同步發布在筆者Blog [Day12] 談談Controller幾個重要成員

...繼續閱讀 »