摘要:
一、充血模型和失血模型 1. 充血模型的優勢 充血模型更加OOP 充血模型代碼可讀性更好 1.1 充血模型偽代碼 var messageDto = controller.ReadDto(); var message = messageDto.ToEntity(); message.Save(); 1
閱讀全文
摘要:
網友@舟翅桐和@0611163建議Task清退機制
多次嘗試不能很好實現清退
使用異步"偽線程"推倒重構《手搓》線程池重見光明
閱讀全文
摘要:
《手搓》線程池實現了完美的指數遞進關系
異步并發測試一發入魂,開局即是高潮帶來了困惑
沉著思考后連夜優化
閱讀全文
摘要:
一、TaskFactory也能手搓 是的TaskFactory也能手搓 而且效果是杠杠的 二、現在繼續說程序優化的事情 1. 話說產品經理小馬給工程師小牛提了需求批量獲取產品詳情 小牛三下五除二就干上線了 代碼那是寫的干凈又漂亮,沒有一行多余的代碼 只是性能有一點點瑕疵 每個商品獲取要0.1秒,獲取
閱讀全文
摘要:
一、什么是《手搓》線程池 手搓線程池并不是用來完全代替系統線程池的 你可以把手搓線程池看做系統線程池的一部分 就好比在東海用集裝箱搞養殖 一個集裝箱里養魚 另一個集裝箱里養蝦 搞好隔離,魚蝦都不耽擱 二、最常用線程池的場景是什么 當然是Task,是用TaskFactory.StartNew方法創建T
閱讀全文
摘要:
一、MediatR .NET事件總線一般使用MediatR 或者基于MediatR二次封裝 筆者手搓事件總線和MediatR對比一下 二、事件處理的基本概念 1. 事件 表示已經發生的事情,需要通知其他模塊進行處理 2. 事件發布器 負責發布事件的對象 3. 事件處理器 實際接收到通知并處理事件的對
閱讀全文
摘要:
一、什么是循環引用 循環引用就是類型相互依賴 1. 比如A類有B類的屬性,B類也有A類的屬性 這有什么問題呢? 編寫生成A的代碼需要遍歷A的所有屬性 構造B類型屬性是A代碼的一部分,B代碼又含有A類型屬性 這就是一個編譯死循環 2. 其他循環引用的例子 鏈表結構只有一個類型也是類型循環引用 A-B-
閱讀全文
摘要:
微軟.net表達式編譯問題困擾本人很久了, 為此我整理了以下case給大家分享 1. 可行性調研 用表達式把對象轉化為另一個類型的對象 當一個類含有多個同類型屬性時,把相同類型轉化提取為公共方法 LambdaExpression可以用來定義復用的公共方法 一切看起來都很完美,但是居然翻車了!!! 2
閱讀全文
摘要:
PocoEmit使用比較簡單對于大部分轉化是不需要手動配置 可以替代AutoMapper的大部分工作,實現精簡代碼,提高性能 一、獲取Mapper實例 1. 獲取Mapper默認實例 Default是一個靜態延遲初始化的默認實例 IMapper mapper = PocoEmit.Mapper.De
閱讀全文
摘要:
AutoMapper是讓人又愛又恨的項目 愛它是因為它解決了一些問題,很多項目都有用,下載量很大,受眾很廣。 恨它是因為它諸多反人類的設計。 為此本人開源項目PocoEmit對標AutoMapper。 1. AutoMapper反人類設計 1.1 AutoMapper注冊代碼 services.Ad
閱讀全文