前言
當一個專案越來越大,在開發新產品時同時要兼顧程式碼品質會越來越困難,今天要介紹 Ndepend 是一個很優秀靜態分析 .Net 專案好物,
當一個專案越來越大,在開發新產品時同時要兼顧程式碼品質會越來越困難,今天要介紹 Ndepend 是一個很優秀靜態分析 .Net 專案好物,
我之前有寫透過 lock or CAS 來防治,Racing condition 問題,但如果這個問題延深到多台服務器甚至是 micor-services 架構我們要怎麼處理資料問題呢?
下面程式在單體服務或應用程式不會出問題,但如果服務器有多台問題可就大了,因為下面的 lock 只限於單體 Server 上
在處理高併發系統架構時,非同步是一個很好的手段和提升效率的方式.
我今天跟大家分享,如何利用 MQ 搭配 Worker Pool 來提高系統吞吐量且又不失彈性
本篇會包含兩個部分解說
我們在撰寫C#時常常會聽到CLR(Common Lnguage Rumtime),但對於CLR又認知多少呢?
本篇會跟大家介紹CLR基本且核心的物件
你知道object lock底層怎麼實作,可重入鎖是底層是怎麼運作的嗎?
你知道Syncblk底層是幹嘛的嗎?
本篇就跟大家分享這些細節.
假如你寫過多執行緒系統一定會看過volatile
,但你對他的了解有多少?
MSDN對於volatile關鍵字解釋如下.
volatile 關鍵字指出某個欄位可能是由同時執行的多個執行緒所修改。 編譯器、執行階段系統,甚至硬體都有可能基於效能因素,而重新排列對記憶體位置的讀取和寫入。 宣告為 volatile 的欄位不受限於這些最佳化考量。 加入 volatile 修飾詞可確保所有的執行緒都會依執行寫入的順序,觀察任何其他執行緒所執行的暫時性寫入。
MSDN上寫一堆文謅謅的解釋,如果沒有相對應OS或底層概念會很難理解上面敘述
在多執行緒系統中,Thread的執行和長短是交由OS來幫我處理了
假如有一個面試題目是
要求:利用三個Thread並按照A,B,C順序打印出20次資訊,中間不能錯號
ex:
A
B
C
A
B
C
你會怎麼完成?
現今越來越多系統使用MQ來達成非同步並來提升系統吞吐量,我今天想要介紹的是EasyNetQ一個封裝RabbitMq Client .net框架
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.