開源.NetCore通用工具庫Xmtool使用連載 - 擴展動態對象篇
【Github源碼】 《上一篇》 介紹了Xmtool工具庫中的圖形驗證碼類庫,今天我們繼續為大家介紹其中的擴展動態對象類庫。 擴展動態對象是整個工具庫中最重要的一個設計。在軟件開發過程中,我們經常需要定義各種各樣的數據對象;例如:用于參數傳遞的數據實體類、用于接口返回結果的Json對象等等。 // ...
模擬.NET應用場景,綜合應用反編譯、第三方庫調試、攔截、一庫多版本兼容方案
模擬.NET實際應用場景,綜合應用三個主要知識點:一是使用dnSpy反編譯第三庫及調試,二是使用Lib.Harmony庫實現第三庫攔截、偽造,三是實現同一個庫支持多版本同時引用。 ...
【23種設計模式】外觀模式(十)
前言 外觀模式,英文名稱是:Facade Pattern。我們先從名字上來理解一下“外觀模式”。我看到了“外觀”這個詞語,就想到了“外表”這個詞語,兩者有著很相近的意思。就拿談戀愛來說,“外表”很重要,如果第一眼看著很舒服、有眼緣,那就有交往下去的可能。如果長的“三寸釘、枯樹皮”,估計就夠嗆了。在這 ...
Abp vNext 依賴注入
文章目錄 介紹 ABP的依賴注入系統是基于Microsoft的依賴注入擴展庫(Microsoft.Extensions.DependencyInjection nuget包)開發的。所以我們采用dotnet自帶的注入方式也是支持的。 由于ABP是一個模塊化框架,因此每個模塊都定義它自己的服務并在它自 ...
記一次 .NET 某拍攝監控軟件 卡死分析
一:背景 1. 講故事 今天本來想寫一篇 非托管泄露 的生產事故分析,但想著昨天就上了一篇非托管文章,連著寫也沒什么意思,換個口味吧,剛好前些天有位朋友也找到我,說他們的拍攝監控軟件卡死了,讓我幫忙分析下為什么會卡死,聽到這種軟件,讓我不禁想起了前些天 在程序員桌子上安裝監控 的新聞,參考如下: 我 ...
WebApi中添加Jwt鑒權
前言 JSON Web Token(JWT)是一個非常輕巧的規范。這個規范允許我們使用 JWT 在用戶和服務器之間傳遞安全可靠的信息。一個 JWT 實際上就是一個字符串,它由三部分組成,頭部、載荷與簽名。前兩部分需要經過 Base64 編碼,后一部分通過前兩部分 Base64 編碼后再加密而成。針對 ...
Abp vNext 模塊加載機制
文章目錄 生命周期 PreConfigureServices 添加依賴注入或者其它配置之前 ConfigureServices 添加依賴注入或者其它配置 PostConfigureServices 添加依賴注入或者其它配置之后 OnPreApplicationInitialization 初始化所有 ...
記一次 .NET某新能源MES系統 非托管泄露
一:背景 1. 講故事 前些天有位朋友找到我,說他們的程序有內存泄露,跟著我的錯題集也沒找出是什么原因,剛好手頭上有一個 7G+ 的 dump,讓我幫忙看下是怎么回事,既然找到我了那就給他看看吧,不過他的微信頭像有點像 二道販子,不管到我這里是不是 三道,該分析的還得要分析呀。😄😄😄 二:Wi ...
理解并掌握C#的Channel:從使用案例到源碼解讀(一)
引言 在C#的并發編程中,Channel是一種非常強大的數據結構,用于在生產者和消費者之間進行通信。本文將首先通過一個實際的使用案例,介紹如何在C#中使用Channel,然后深入到Channel的源碼中,解析其內部的實現機制。 使用案例一:文件遍歷和過濾 在我們的使用案例中,我們需要遍歷一個文件夾及 ...
async/await 與console(C#)
問題: 上一篇async/await 致WPF卡死問題(http://www.otorinolaringoiatradellepiane.com/stephen2023/p/17725159.html),介紹主線程阻塞,async/await導致卡死問題,同樣的代碼在console下卻并不會出現卡死。 static Stopwatch sw ...
C# 操作INI文件
C#讀寫INI文件 .NET程序中,可以作為配置文件使用的格式又很多,INI文件在某些場景應用較為廣泛,如串口參數、一些工作站本地參數等等,INI文件主要用途為讀取指定節點的配置內容,以及修改指定節點。一下文章主要描述在程序對INI文件的操作。 INI文件介紹 INI文件 ini文件本質上就是一個擴 ...
我封裝的一個REPR輪子 Biwen.QuickApi
Biwen.QuickApi 項目介紹 [QuickApi("hello/world")] public class MyApi : BaseQuickApi<Req,Rsp>{} 提供一種簡單集成的Minimal Web Api交互模塊 遵循了 REPR 設計 (Request-Endpoint- ...
async/await 致WPF卡死問題
問題代碼: xmal:一個按鈕+一個顯示框 1 <Button Width="100" Height="50" Margin="10" Click="Button_Click">test</Button> 2 <TextBox x:Name="display" Width="300" Height= ...
攔截|篡改|偽造.NET類庫中不限于public的類和方法
大家好,我是沙漠盡頭的狼。 本文首發于Dotnet9,介紹使用Lib.Harmony庫攔截第三方.NET庫方法,達到不修改其源碼并能實現修改方法邏輯、預期行為的效果,并且不限于只攔截public訪問修飾的類及方法,行文目錄: 什么是方法攔截? 示例程序攔截 非public方法怎么攔截? 總結 1. ...
6.swagger完善:界面顯示注釋+多版本控制
周末,寫點簡單的水一下。 新版本的vs創建項目的時候可以選擇自帶一個swagger。然而這只是基本的swagger功能。 幾個接口無所謂啦,隨著接口越來越多,就這么丟給你,一時間也會懵逼,所以這篇文章要做的有兩個功能。 給swagger文檔添加注釋 給swagger添加切換“版本”的功能(也可以理解 ...
如何在沒有第三方.NET庫源碼的情況,調試第三庫代碼?
大家好,我是沙漠盡頭的狼。 本方首發于Dotnet9,介紹使用dnSpy調試第三方.NET庫源碼,行文目錄: 安裝dnSpy 編寫示例程序 調試示例程序 調試.NET庫原生方法 總結 1. 安裝dnSpy dnSpy是一款功能強大的.NET程序反編譯工具,可以對.NET程序進行反編譯,代替庫文檔的功 ...
一個簡易的ORM框架的實現(二)
框架目標 什么是框架,框架能做到什么? 把一個方向的技術研發做封裝,具備通用性,讓使用框架的開發者用起來很輕松。 屬性: 通用性 健壯性 穩定性 擴展性 高性能 組件化 跨平臺 從零開始-搭建框架 建立項目 主鍵查詢功能開發 綁定實體 一步一步的給大家推導: 一邊寫一邊測試 從零開始--搭建框架 1 ...
5.使用日志+自定義全局異常過濾器
剛開始寫文章,封裝Base基類的時候,添加了trycatch異常塊,不過當時沒有去記錄日志,直接return了。有小伙伴勸我不要吃了Exception 其實沒有啦,項目剛開始,我覺得先做好整體結構比較好。像是蓋樓一樣。先把樓體建造出來,然后再一步一步的美化完善。 基礎的倉儲模式已經ok,Autofa ...
記一次 .NET 某儀器測量系統 CPU爆高分析
一:背景 1. 講故事 最近也挺奇怪,看到了兩起 CPU 爆高的案例,且誘因也是一致的,覺得有一些代表性,合并分享出來幫助大家來避坑吧,閑話不多說,直接上 windbg 分析。 二:WinDbg 分析 1. CPU 真的爆高嗎 這里要提醒一下,別人說爆高不一定真的就是爆高,我們一定要拿數據說話,可以 ...
.NET超簡單輕量級的HTTP請求組件Flurl
簡介 Flurl是一個用于構建基于HTTP請求的C#代碼的庫。它的主要目的是簡化和優雅地處理網絡請求(只用很少的代碼完成請求)。Flurl提供了一種簡單的方法來構建GET、POST、PUT等類型的請求,以及處理響應和異常。它還提供了一些高級功能,如鏈式調用、緩存請求結果、自動重定向等。本文將介紹Fl ...