博客 / 列表

唐青楓 - .NET Web 應用 Linux 部署全指南:從環境搭建到生產上線

簡介 背景和優勢 ASP.NET Core 自 .NET Core 1.0(2016 年)起支持跨平台,Linux 部署具有以下優勢: 高性能:Linux 服務器(如 Ubuntu)資源佔用低,適合高併發。 成本效益:開源操作系統,降低服務器成本。 生態支持:支持 MySQL、Docker、Nginx 等,適配微服務和雲原生。 社區活躍:Linux 是雲部署(如 AWS、Azure)的首

c# , .net

唐青楓 - C#.NET 全局異常到底怎麼做?最完整的實戰指南

簡介 全局異常攔截是構建健壯企業級應用的關鍵基礎設施,它能統一處理系統中未捕獲的異常,提供友好的錯誤響應,同時記錄完整的異常信息。 背景和作用 在 ASP.NET Core 應用中,異常可能在控制器、數據庫操作或中間件中發生。如果每個動作方法都手動處理異常(如 try-catch),代碼會變得冗長且難以維護。全局異常攔截器解決了以下問題: 統一錯誤處理:集中捕獲所有未處理異常,返回標準化的錯誤

c# , .net

唐青楓 - C#.NET WebAPI 返回類型深度解析:IActionResult 與 ActionResult<T> 的區別與應用

簡介 核心概念對比 特性 IActionResult ActionResultT 引入版本 ASP.NET Core 1.0 ASP.NET Core 2.1 主要用途 表示HTTP響應(狀態碼+內容) 類型化HTTP響應 返回值類型 接口(多種實現) 泛型類

c# , .net

唐青楓 - C#.NET ControllerBase 深入解析:Web API 控制器的核心基石

簡介 ControllerBase 是 ASP.NET Core 中構建 Web API 控制器的基類,位於 Microsoft.AspNetCore.Mvc 命名空間。它提供了豐富的功能來處理 HTTP 請求,但不包含視圖支持。 核心功能: HTTP 響應:提供方法(如 Ok、NotFound)生成標準 HTTP 響應。 模型綁定:自動將請求數據綁定到參數(如查詢字符串、請求體)。 驗證

c# , .net

唐青楓 - C#.NET 開發必備:常用特性與註解用法大全

特性基礎 什麼是特性 特性是附加到代碼元素(程序集、類型、成員、參數等)上的元數據。編譯後寫入 IL,可在運行時通過反射讀取或由運行時/框架識別並做相應處理。 定義特性 自定義特性需繼承自 System.Attribute,並可通過 AttributeUsage 限制其作用目標和允許多重使用。 [AttributeUsage(AttributeTargets.Class | AttributeTa

c# , .net

唐青楓 - C#.NET 路由機制深入解析:從傳統路由到 Endpoint Routing

簡介 路由是 ASP.NET Core 的核心基礎設施,負責將 HTTP 請求映射到對應的處理程序(如控制器方法)。它決定了 URL 如何與應用程序代碼交互,是現代 Web 開發的關鍵組件。 在 ASP.NET Core 中,路由系統解決了以下問題: URL 映射:將用户友好的 URL 映射到具體的處理程序。 靈活性:支持多種路由配置(如 RESTful 路徑、動態參數)。 性能優化:高效

c# , .net

唐青楓 - C#.NET MemoryCache 深入解析:本地緩存機制與最佳實踐

簡介 在許多應用程序中,緩存是提升性能的常見方法,尤其是在訪問頻繁且不經常變化的數據時。MemoryCache 是 .NET 提供的一個內存緩存實現,它允許在內存中存儲數據,以減少對數據庫、文件系統或其他遠程服務的訪問,進而提升系統響應速度。 MemoryCache 的核心優勢是: 高效:內存操作非常快速,適合用於緩存短期有效的數據。 輕量:它是一個線程安全的緩存系統,且易於在 .NET 應

c# , .net

唐青楓 - C#.NET DbContext 池化機制深入解析:提升 EF Core 性能的關鍵

簡介 DbContext 池是 Entity Framework Core 中的高性能數據庫連接管理機制,通過重用已初始化的 DbContext 實例,顯著減少創建和銷燬上下文對象的開銷,特別適合高併發場景。尤其在高併發場景(如 Web API)中,頻繁創建和釋放 DbContext 會導致: 性能瓶頸:實例化 DbContext 涉及反射、元數據初始化和連接池分配。 內存壓力:頻繁創建和釋

c# , .net

唐青楓 - C#.NET Random 深入解析:隨機數生成原理與最佳實踐

簡介 Random 是 .NET 中 System 命名空間提供的一個類,用於生成偽隨機數。它廣泛應用於需要隨機化操作的場景,如生成隨機數據、模擬、遊戲開發或測試用例生成。 偽隨機數生成 在計算機中,Random 類用於生成偽隨機數,這些數值在一定程度上看起來是隨機的,但它們實際上是通過數學公式從一個初始種子值計算得到的,因此稱之為“偽隨機數”。 廣泛應用 Random 類常用於遊戲開

c# , .net

唐青楓 - C#.NET SemaphoreSlim 深入解析:輕量級異步鎖與併發控制

簡介 SemaphoreSlim 是 .NET 中 System.Threading 命名空間提供的一個輕量級同步原語,用於限制對共享資源的併發訪問。它是傳統 Semaphore 類的輕量替代,專為高性能、異步場景設計,特別適合結合 async/await 的現代 .NET 應用(如 ASP.NET Core)。 在多線程或高併發應用中,共享資源的訪問需要同步以避免競爭條件。傳統的 Semapho

c# , .net

唐青楓 - Linux tinyproxy 使用教程

簡介 Tinyproxy 是一款輕量級 HTTP 代理服務器,使用最少的資源,非常適合硬件有限的系統。儘管體積小,但它可以處理大量流量,而不會出現明顯的性能問題。旨在處理簡單的代理任務。它通常用於路由網絡流量以保護隱私、緩存或訪問受限資源。 它的設計初衷是快速而小巧,是嵌入式部署等用例的理想解決方案。 Tinyproxy佔用空間小,並且只需要很少的系統資源。使用 glibc 時,內存佔用大約為2

代理 , Linux

唐青楓 - Jetbrains IDE http客户端使用教程

簡介 JetBrains IDE(如IntelliJ IDEA, WebStorm, PhpStorm和PyCharm)自帶一個內置的HTTP客户端,允許直接從IDE發送HTTP請求,而無需使用第三方工具,如Postman或cURL。 JetBrains IDE 中的 HTTP 客户端是什麼? JetBrains IDE 中的HTTP客户端是一個輕量級但功能強大的功能,它允許開發人員直接從IDE中

HTTP , intellij-idea , ide , jetbrains

唐青楓 - Php composer 基礎教程

一、什麼是Composer? Composer 是 PHP 中的依賴管理工具。它允許聲明項目所依賴的庫,並且它將為您管理(安裝/更新)它們。 二、如何安裝? Linux 系統和 MacOS 系統 直接下載最新穩定版: 然後執行下列命令,放到/usr/local/bin下面 sudo mv composer.phar /usr/local/bin/composer sudo chmod +x /

composer , php

唐青楓 - Yii2 init 初始化腳本分析

腳本目的: init 腳本主要的作用是:從 environments 目錄中複製配置文件,確保應用適配不同環境(例如開發、生產環境等)。 工作流程: 獲取 $_SERVER 的 argv 參數 加載 environments/index.php 文件,拿到不同環境配置指定的配置文件關係。 如果執行 init 腳本時提供了 --env 選項,例如:--env=Development 則直接應

php , yii2

唐青楓 - Vim 進階教程

文本替換 (:s) 這是 Vim 中最強大和最常用的進階功能之一。 基本語法: :[range]s/old/new/[flags] [range]: 指定替換操作的範圍。省略時默認為當前行。 %:整個文件 (例如 :%s/old/new/) 5,10:第 5 行到第 10 行 (例如 :5,10s/old/new/) .,$:從當前行到文件末尾 (例如 :.,$s

Linux , vim

唐青楓 - Linux vimgrep 詳解

簡介 :vimgrep 是 Vim 提供的「直接在指定文件集裏用正則查找」的命令 與外部 grep 不同,vimgrep 在查到結果後會將匹配行寫入 快速修復列表(quickfix list),並可通過 :copen、:cnext、:cfirst 等命令逐條跳轉 支持 Vim 的正則引擎,允許靈活使用 Vim 正則、分組、魔法模式等 基本語法 :vimgrep[!] /{pattern}

Linux , vim

唐青楓 - 輕量又高效:C#.NET RepoDB 實戰指南

簡介 RepoDB 是一個“混合” ORM(Hybrid ORM),旨在彌合微型 ORM(如 Dapper)和全功能 ORM(如 EF Core)之間的鴻溝,既提供對 SQL 的直接控制,又封裝了常用的高級操作 核心特性 混合 ORM 功能 支持微型 ORM 的原始 SQL 查詢(ExecuteQueryT)和 Fluent API(QueryAllT)。 提供完

c# , .net

唐青楓 - 深入掌握 FluentMigrator:C#.NET 數據庫遷移框架詳解

簡介 概念定位 FluentMigrator 是一個基於 “流式 API”(Fluent API)的 .NET 數據庫版本遷移框架。 核心目標:以代碼形式對數據庫結構(Schema)進行增量變更管理,支持 SQL Server、PostgreSQL、MySQL、SQLite、Oracle 等多種數據庫。 核心優勢: 可讀性高:以鏈式方法描述表、列、索引等,而非手寫 SQL

c# , .net

唐青楓 - C#.NET FluentValidation 全面解析:優雅實現對象驗證

簡介 FluentValidation 是一個基於“流式 API”(Fluent API)的 .NET 驗證框架,用於在應用層對模型(DTO、ViewModel、Entity 等)進行聲明式驗證。 核心優勢: 高可讀性:通過鏈式方法配置驗證規則,邏輯清晰; 可複用:將驗證代碼從業務邏輯中分離,易於單元測試; 豐富的內置規則:郵箱、長度、正則、多字段聯動、集合驗證

c# , .net

唐青楓 - C#.NET Configuration 全面解析:從多環境到強類型綁定實戰

簡介 ASP.NET Core 的配置系統旨在提供統一、靈活的方式來讀取應用程序設置。它具備以下特點: 支持多種配置源:JSON、XML、INI、環境變量、命令行、內存、用户機密、數據庫、自定義等; 層級合併與覆蓋:後添加的配置源會覆蓋前面的同名鍵; 鍵名稱統一:默認使用“冒號”分隔的層級鍵(如Logging:LogLevel:Default); 與DI 整合:通過IConfigurat

c# , .net

唐青楓 - C#.NET SqlKata 使用詳解:優雅構建動態 SQL 查詢

簡介 在複雜項目中,為了保持 SQL 靈活性與可讀性,開發者往往需要手寫大量拼接字符串或使用 ORMs 附帶的 LINQ,但兩者各有侷限:手寫拼接易出錯、難以維護;LINQ 在某些場景下生成的 SQL 不夠直觀或性能不佳。 SqlKata 是一款輕量級、數據庫無關的查詢構建器(Query Builder),提供—— 流式 API,鏈式調用拼裝 SQL 可切換編譯器,支

c# , .net

唐青楓 - C#.NET FluentSqlKata 全面解析:基於鏈式語法的動態 SQL 構建

簡介 在使用 SqlKata 構建 SQL 時,雖然其鏈式 API 強大靈活,但仍需通過字符串或匿名字段進行表與列的映射,缺乏對實體類型和字段的靜態檢查。FluentSqlKata 基於 SqlKata,提供了一套基於表達式的強類型查詢構建能力,能夠: 通過 Lambda 表達式指定實體與列,更安全、可重構 保留 SqlKata 的所有特性與多數據庫編譯器支持 在運行時動態構造 ORDER

c# , .net

唐青楓 - C#.NET ArrayPool 深入解析:高性能內存池的實現與應用

簡介 ArrayPoolT 是 .NET 中一個高性能的內存管理工具,位於 System.Buffers 命名空間。它通過重用數組而非頻繁分配新數組,顯著減少 GC(垃圾回收)壓力,提升內存敏感型應用的性能。特別適合處理大型數組和臨時緩衝區。 工作原理圖解 背景與動機 GC 和大對象開銷:頻繁分配與釋放大數組(特別是超過 LOH 閾值 ~85 KB 的數組)會導致大量垃圾回收壓力和內存碎片化

c# , .net

唐青楓 - C#.NET NCrontab 深入解析:輕量級 Cron 表達式解析器

簡介 NCrontab 是 .NET 平台下功能完備的 Cron 表達式解析與調度計算庫,用於處理類似 Unix Cron 的時間調度邏輯。它不依賴外部系統服務,純託管實現,是構建定時任務系統的核心組件。 解決的關鍵問題 Cron 表達式解析:將字符串表達式轉換為可計算的時間模型 時間序列生成:計算下次執行時間或生成時間序列 跨平台支持:純 .NET 實現,無操作系統依賴 輕量高效:無外

c# , .net