原创 Servlet特性研究之異步模式

Servlet只有同步模型是怎樣的? 異步處理是Servlet3.0版本的重要功能之一,分析異步處理模型之前,先看看同步處理的過程是怎樣的: 客戶端發起HTTP請求一個動態Servlet API,請求到達服務器端後經過靜態服務器過濾後轉

原创 隨手記:MySql.Data.dll僅支持TLS1.0版本

近期在進行服務器TLS協議安全加固的過程中,發現了MySql.Data對TLS版本的限制。 具體操作是準備取消不安全協議TLS1.0和1.1的支持,於是通過工具將服務器的Server、Client協議的1.0、1.1均取消勾選,結果在測試服

原创 C#請求HTTPS地址的故障分析和TLS知識點總結

背景介紹 近期收到同事反饋,在C#程序中通過HTTPClient請求一個HTTPS的地址時,在本地開發環境和測試環境均能正常執行,而部署到生產環境後發生異常且穩定復現,異常提示爲:【請求被中止: 未能創建 SSL/TLS 安全通道 】,

原创 如何在.Net Framework應用中請求HTTP2站點

背景介紹 本文的需求背景是對接蘋果公司的推送服務(APNS),蘋果在安全方面比較積極,已經嚴格限制API只支持HTTP2。但是我這裏的應用目前仍然是.NET Framework平臺,所以必須尋找一種解決方案。本文在調研及驗證後,將相關資料

原创 CLR的GC工作模式介紹(Workstation和Server)

CLR的核心功能之一就是垃圾回收(garbage collection),關於GC的基本概念本文不在贅述。這裏主要針對GC的兩種工作模式展開討論和研究。 Workstaction模式介紹 該模式設計的目的是用於客戶端類的應用(Client)

原创 winform中更新UI控件的方案介紹

這是一個古老的話題。。。直入主題吧! 對winfrom的控件來說,多線程操作非常容易導致複雜且嚴重的bug,比如不同線程可能會因場景需要強制設置控件爲不同的狀態,進而引起併發、加鎖、死鎖、阻塞等問題。爲了避免和解決上述可能出現的問題,微軟要

原创 winforms後臺線程更新UI控件-InvokeRequired方案

這是一個古老的話題。。。直入主題吧 windows窗體應用禁止任意線程直接訪問UI控件,只能是創建控件的線程才能操作控件。 但是程序員又不知道是哪個線程創建了控件。於是微軟提供了InvokeRequired屬性和Invoke()方法來實現跨

原创 使用kind快速搭建本地k8s集羣

Kind是什麼? k8s集羣的組成比較複雜,如果純手工部署的話易出錯且時間成本高。而本文介紹的Kind工具,能夠快速的建立起可用的k8s集羣,降低初學者的學習門檻。 Kind是Kubernetes In Docker的縮寫,顧名思義,看起來

原创 windbg調試系列教程:sos擴展的介紹和使用

SOS是什麼? 直觀來說,sos就是一個程序集文件。這個程序集的作用就是讓我們在使用windbg分析.net進程時,更加方便快捷。通過sos,我們可以清晰的查看CLR運行時的各類信息,輔助我們去理解託管內存的狀態和含義。 這個程序集是隨.N

原创 ServiceStack.Redis的源碼分析(連接與連接池)

前幾天在生產環境上redis創建連接方面的故障,分析過程中對ServiceStack.Redis的連接創建和連接池機制有了進一步瞭解。問題分析結束後,通過此文系統的將學習到的知識點整理出來。 從連接池獲取RedisClient的流程 業務程

原创 故障分析:網絡閃斷引發的ServiceStack.Redis死鎖問題

背景說明 某天生產環境發生進程的活躍線程數過高的預警問題,且一天兩個節點分別出現相同預警。此程序近一年沒出現過此類預警,事出必有因,本文就記錄下此次根因分析的過程。 監控看到的線程數變化情況: 初步的分析和發現 異常的進程在重啓時分別保留

原创 NETCore程序集複用技術:類型轉移(TypeForwarding)

背景介紹 在netcore遷移過程中,發現原有針對netframework平臺編譯的dll文件,可以直接在netcore的應用(netcoreapp.31)中加載並使用。對此感到比較好奇,本文就針對此知識點進行探究和梳理。 本次演示用到的幾

原创 實踐記錄:Type.GetType()返回值爲null的問題

今天在分析問題時遇到使用Type.GetType()一直返回null的情況,於是針對相關情況做了個梳理驗證。詳情如下: 測試項目的程序集介紹: Tccc.Reflection.First.SPI:類定義所在的程序集 Tccc.Reflect

原创 計算機基礎:字符集和編碼

背景知識 計算機中的數據是二進制存儲,而人類的文字對計算機來說是不能識別的。那麼爲了讓計算機能夠處理文字,就需要人爲的給文字設置一個數字編碼(比如65代表A),數字再轉爲二進制數據,計算機才能夠正常處理。 什麼是字符集 人工收集的一批文字符

原创 Java泛型原理:擦除法

關於泛型是什麼以及怎麼使用本文不在贅述。在04年發佈的jdk5中,Java支持了泛型這個重要的特性。 Java裏的泛型實現方式是擦拭法(Type Erasure),所謂擦拭法是指:虛擬機對泛型其實一無所知,即JVM不認識T,所有的工作都是編