原创 C# 通過ARP技術來觀察目標主機數據包

由於之前寫的C# 實現Arp欺詐的文章屬於網絡攻擊,不能夠被展示,所以這邊我們稍微說一下C#調用ARP包以及查看其他電腦上網數據包的技術,委婉的說一下ARP在局域網之中的應用。 本文章純屬技術討論,並且涵蓋了如何去防止ARP攻擊的手段。

原创 C# 優雅的處理TCP數據(心跳,超時,粘包斷包,SSL加密 ,數據處理等)

Tcp是一個面向連接的流數據傳輸協議,用人話說就是傳輸是一個已經建立好連接的管道,數據都在管道里像流水一樣流淌到對端。那麼數據必然存在幾個問題,比如數據如何持續的讀取,數據包的邊界等。 Nagle's算法 Nagle 算法的核心思想是,

原创 五分鐘看完,徹底理解協變逆變

其實這是c#的老知識點了,但是今天發現同事對這個竟然還一知半解,就和他們講解了下,順便也回顧了下,同事我也把我對這個的全部理解,融化成幾分鐘的講解,保證大家5分鐘內全部理解,看不懂來打我。 目錄協變、逆變 解決的問題泛型類型轉換原則核心核

原创 WPF必須掌握的技能之自定義控件——實戰:自制上傳文件顯示進度按鈕

自定義控件在WPF開發中是很常見的,有時候某些控件需要契合業務或者美化統一樣式,這時候就需要對控件做出一些改造。 目錄按鈕設置圓角按鈕上傳文件相關定義測試代碼 話不多說直接看效果 默認效果: 上傳效果: 按鈕設置圓角 因爲按鈕

原创 vs2022的一些調試技巧——遠程調試&線程檢查&性能檢查

visual studio一直都是.net/c#開發人員最受歡迎的編譯器,除了強大的代碼提示和項目模板,還擁有大量的調試工具,這一期我們介紹下code freeze階段的一些調試技巧。包括測試環境/生產環境下的遠程調試,線程調試,以及性能

原创 .net開發者應掌握的利器CommunityToolkit.HighPerformance——MemoryOwner與SpanOwner

MemoryOwner和SpanOwner都可以理解爲是對ArrayPool<>的一個包裝,無非一個是在堆棧上,一個是在託管堆上。既然做了包裝,那肯定隨之而來就是改進和優化。 目錄MemoryOwner<>MemoryOwner<>解決的

原创 c#優雅高效的讀取字節數組——不安全代碼(1)

在開發上位機的經歷中,會有很多需要和下位機交互通信的場景,大多數都會定義一個和硬件的通信協議,最終在上位機代碼中的形式其實就是符合通信協議的字節數組。 目錄場景如何解析字節數組到類或結構體中建立與通信協議一致的結構體使用不安全代碼將字節

原创 c#構建具有用戶認證與管理的socks5代理服務端

Socks 協議是一種代理 (Proxy) 協議, 例如我們所熟知的 Shdowsocks 便是 Socks 協議的一個典型應用程序, Socks 協議有多個版本, 目前最新的版本爲 5, 其協議標準文檔爲 RFC 1928。 我們一起來使

原创 我做了第一個ChatGPT .net api聊天庫

最近這個ChatGPT很火啊,看了B站上很多視頻,自己非常手癢,高低自己得整一個啊,但是讓我很難受的是,翻遍了github前十頁,竟然沒有一個C#的ChatGPT項目,我好難受啊!那能怎麼辦?自己搞一個吧。 但是,等等,現在的ChatGPT

原创 .net6製作讓同事不能上網的arp欺騙工具

摘一段來自網上的arp欺詐解釋:ARP欺騙(ARP spoofing),又稱ARP毒化(ARP poisoning,網絡上多譯爲ARP病毒)或ARP攻擊,是針對以太網地址解析協議(ARP)的一種攻擊技術,通過欺騙局域網內訪問者PC的網關MA

原创 .net6&7中如何優雅且高性能的使用Json序列化

.net中的SourceGenerator讓開發者編可以寫分析器,在項目代碼編譯時,分析器分析項目既有的靜態代碼,允許添加源代碼到GeneratorExecutionContext中,一同與既有的代碼參與編譯。這種技術其實是把一些運行時才能

原创 .net如何優雅的使用EFCore

EFCore是微軟官方的一款ORM框架,主要是用於實體和數據庫對象之間的操作。功能非常強大,在老版本的時候叫做EF,後來.net core問世,EFCore也隨之問世。 本文我們將用一個控制檯項目Host一個web服務,並且使用本地Mysq

原创 .net core/5/6/7中WPF如何優雅的開始開發

WPF是微軟的.net平臺中的一個桌面客戶端應用程序框架,經常用於企業開發windows桌面客戶端,廣泛應用於中小企業快速開發一款工具,本人也是比較喜歡利用WPF開發一些小工具。 目錄知名案例.net core/5/6/7中開發WPFMVV

原创 c#入參使用引用類型爲啥要加ref?

摘一段來自官網的說明 :方法的參數列表中使用 ref 關鍵字時,它指示參數按引用傳遞,而非按值傳遞。 ref 關鍵字讓形參成爲實參的別名,這必須是變量。 換而言之,對形參執行的任何操作都是對實參執行的。 大體意思就是將實慘的引用作爲參數傳遞

原创 最短路徑算法-迪傑斯特拉(Dijkstra)算法在c#中的實現和生產應用

迪傑斯特拉(Dijkstra)算法是典型最短路徑算法,用於計算一個節點到其他節點的最短路徑。 它的主要特點是以起始點爲中心向外層層擴展(廣度優先遍歷思想),直到擴展到終點爲止 貪心算法(Greedy Algorithm) 貪心算法,又名貪婪