原创 重新整理 .net core 實踐篇——— 測試控制器[四十九]

前言 其實就是官方的例子,只是在此收錄整理一下。 正文 測試控制器測試的是什麼呢? 測試的是避開篩選器、路由、模型綁定,就是隻測試控制器的邏輯,但是不測試器依賴項。 代碼部分: https://github.com/dotnet/AspNe

原创 orleans —————— 爲什麼有這個框架 [ 一]

前言 簡單說明一下,爲什麼有orleans 這個框架。 正文 orleans 這個框架的理論基礎是 actor, 在1973年提出,當初是爲了大量處理高併發計算機的並行模型,其核心思想是將系統中獨立的計算過程抽象爲actor。 高併發場景有

原创 linux 性能自我學習 ———— 關於內存 [七]

前言 內存的基本知識,將在操作系統篇中詳細介紹,這裏只說明如何排查問題。 正文 內存的分配和回收: 在malloc 是c 標準庫中的內存分配函數,對應到系統調用上,有兩種實現方式,一種是brk()和 mmap() 對於小塊內存,小於128k

原创 linux 性能自我學習 ———— cpu 快速定位問題 [六]

前言 主要介紹一下cpu如何快速定位問題。 正文 cpu 的一些性能指標: 1. cpu 使用率 cpu 使用率描述了非空閒時間佔總cpu時間的百分比,根據cpu上運行任務的不同,又被分爲用戶cpu、系統cpu、 i/o 等待cpu、 軟中

原创 linux 性能自我學習 ———— 軟中斷 [五]

前言 linux 性能的自我學習。 正文 什麼是軟中斷呢? 舉一個網絡的例子。 linux 將中斷處理過程分爲兩個階段: 上半部用來快速處理中斷,他在中斷禁止模式下運行,注意是處理跟硬件緊密相關或時間敏感的工作。 下半部用來延遲處理上半部未

原创 linux 性能自我學習 ———— 不可中斷進程和殭屍進程 [四]

前言 簡單介紹一下不可中斷進程和殭屍進程。 正文 先來看下進程的狀態: 那麼這一列的狀態是什麼呢? R 是Running 或 Runnable 的縮寫, 表示進程在cpu 的就緒隊列中,正在運行或者正在等待運行。 D 是disk slee

原创 linux 性能自我學習 ———— cpu 高怎麼辦 [三]

前言 linux 性能分析自我學習。 正文 一般我們說cpu,一般是什麼高呢? 一般是指cpu 使用率高。 那麼什麼是cpu 使用率呢? cpu 使用率 = 1- 空閒時間/總cpu 時間 平均cpu 使用率 = 1 -(new空閒時間 -

原创 重學c#系列——DiagnosticListener [三十五]

前言 簡單介紹一下DiagnosticListener,一個比較常見的事件通知模型,可以說是事件發佈訂閱模型,常用於監控。 正文 直接編寫代碼: using System.Diagnostics; public class progra

原创 linux 性能自我學習 ———— cpu 切換帶來的性能損耗 [二]

前言 我們知道現在操作系統,都是多進程和多線程,那麼會有一個操作系統幫助我們去切換進程和線程,這個是要消耗cpu資源的,那麼就來了解一下cpu資源消耗情況。 正文 一般是下面幾個場景切換: 進程上下文切換 線程上下文切換 中斷上

原创 不一樣的設計模式——— 重新理解6大原則[外篇]

前言 在23個設計模式後,編程過了幾年,對6大原則的重新理解,也是更簡化更通透的理解。 正文 單一職責原則(SRP):一個類或模塊應該有且僅有一個責任。 開放封閉原則(OCP):軟件實體(類、模塊、函數等)應該對擴展開放,對修改關閉

原创 c# 異步進階———— 自定義 taskschedule[三]

前言 我們知道我們的task async 和 await 是基於線程池進行調度的。 但是async 和 await 也就是使用了默認的task調度,讓其在線程池中運行。 但是線程池是榨乾機器性能爲本質的,但是有時候我們運行一些我們自己的需求

原创 github 小技巧

前言 簡單記一下github 小技巧,因爲經常忘。 正文 就是如何快速搜索到自己想找的項目。 如果自己知道項目名,那麼直接輸入就可以搜索到。 如果不是,那麼一般要通過高級搜索。 https://github.com/search/adv

原创 c# 異步進階———— paralel [二]

前言 簡單整理一下paralel,以上是並行的意思。 正文 我們在工作中常常使用task await 和 async,也就是將線程池進行了封裝,那麼還有一些更高級的應用。 是對task的封裝,那麼來看下paralel。 static voi

原创 重學c#系列—— 簡單編寫一個guid [娛樂篇]

前言 什麼是guid? 全局唯一標識符(GUID,Globally Unique Identifier)是一種由算法生成的二進制長度爲128位的數字標識符。GUID主要用於在擁有多個節點、多臺計算機的網絡或系統中。在理想情況下,任何計算機和

原创 重學c#系列—— explicit、implicit與operator[三十四]

前言 我們都知道operator 可以對我們的操作符進行重寫,那麼explicit 和 implicit 就是對轉換的重寫。 正文 explicit 就是強制轉換,然後implicit 就是隱式轉換。 static void Main(st