- 博客(197)
- 收藏
- 关注
原创 C#.NET log4net 详解
log4net 是 .NET 平台上非常成熟的日志组件,源自 Java 世界的 log4j。它功能丰富、性能高、配置灵活,是企业应用中常见的日志框架之一。
2025-07-05 11:19:24
322
原创 C#.NET 匿名对象详解
匿名对象(Anonymous Types)是一种在编译时由编译器自动生成、但在源码中没有显式命名的引用类型,用来快速封装一组只读属性。它们最常见的场景是在 LINQ 查询中临时投影数据,但也可用于任何需要临时封装数据的地方。
2025-07-03 07:11:31
417
原创 C#.NET NLog 详解
NLog 是 .NET 平台上最流行的开源日志框架之一,特色是 灵活的配置、丰富的输出目标(Target),以及 高性能 的异步写入能力。适用场景:从控制台、文件、数据库、网络 到 ElasticSearch、Seq、Azure Table Storage 等各种日志收集后端。支持文件、数据库(SQL/NoSQL)、控制台、邮件、Elasticsearch 等 50+ 内置目标,并可通过插件扩展
2025-07-02 08:08:30
590
原创 C#.NET SimpleInjector 详解
Simple Injector 是一个专注于高性能、易用性和可测试性的 .NET 依赖注入(DI)容器,支持 .NET Framework、.NET Core、Xamarin 等多平台。设计原则:简单、快速、可预测。它通过编译时及运行时验证帮助早发现配置错误,并力求将依赖解析的开销降到最低。
2025-07-01 07:38:54
881
原创 C#.NET Ninject 详解
Ninject 是一个轻量级、易扩展的开源 .NET 依赖注入(DI)容器,适用于 .NET Framework、.NET Core、Xamarin 等多平台。设计目标:简单直观、可测试、高可扩展性,支持多种绑定策略和拦截器(AOP)。
2025-06-30 07:04:25
685
原创 C#.NET System.Text.Json 详解
System.Text.Json 是 .NET Core 3.0+ 和 .NET 5+ 平台自带的高性能 JSON 序列化/反序列化库,位于 System.Text.Json 命名空间,无需额外安装包(针对早期版本可安装 System.Text.Json)设计目标:极致性能、低分配、零依赖,并且与现代 .NET 平台深度集成,支持 UTF-8 原生处理、管道化处理、源生成等高级功能。相比 Newtonsoft.Json,更轻量、速度更快,但在灵活性和功能丰富度(如动态 LINQ to JSON)上略
2025-06-28 09:14:39
357
原创 C#.NET Newtonsoft.Json 详解
Newtonsoft.Json(又称 Json.NET)是 .NET 生态中最流行的 JSON 序列化/反序列化库,支持 .NET Framework、.NET Core、Mono、Xamarin 等多种平台。功能丰富:自动映射对象、LINQ to JSON、JSchema 验证、自定义转换、性能可调等
2025-06-27 07:26:58
911
原创 C#.NET Autofac 详解
Autofac 是一个成熟的、功能丰富的 .NET 依赖注入(DI)容器。相比于内置容器,它额外提供:模块化注册、装饰器(Decorator)、拦截器(Interceptor)、强o的属性/方法注入支持、基于约定的程序集扫描等特性。
2025-06-26 08:10:14
867
原创 C#.NET 依赖注入详解
在 C#.NET 中,依赖注入(Dependency Injection,简称 DI) 是一种设计模式,用于实现控制反转(Inversion of Control,IoC),以降低代码耦合、提高可测试性和可维护性。依赖注入是将一个对象的依赖(即它所需的其他对象或服务)通过外部提供(注入)的方式传递给它,而不是由对象自身创建或查找依赖。其核心思想是将对象的创建和依赖管理交给容器(IoC 容器),从而解耦代码。DI 是现代 .NET 开发(尤其是 ASP.NET Core)的核心特性之一,广泛应用于企业
2025-06-25 07:34:30
873
原创 C#.NET 中间件详解
中间件(Middleware) 是 ASP.NET Core 的核心组件,用于处理 HTTP 请求和响应的管道机制。它是基于管道模型的轻量级、模块化设计,允许开发者在请求处理过程中插入自定义逻辑。中间件广泛应用于日志记录、认证授权、异常处理、路由等场景。定义:中间件是处理 HTTP 请求和响应的组件,位于服务器接收到请求到最终返回响应之间的“管道”中。作用:可用于身份认证、授权、日志、静态文件、异常处理、CORS、压缩、路由等横切关注点。职责链:请求依次经过每个中间件,执行“前置逻辑”→调用下一
2025-06-24 08:00:46
445
原创 C#.NET in、out、ref详解
在 C# 中,in、ref 和 out 是用于修改方法参数传递方式的关键字,它们决定了参数是按值传递还是按引用传递,以及参数是否必须在传递前初始化。
2025-06-23 07:28:31
304
原创 C#.NET HttpClient 使用教程
HttpClient 是 .NET 中用于发送 HTTP 请求和接收 HTTP 响应的现代化 API,它取代了过时的 WebClient 和 HttpWebRequest 类。HttpClient 是 .NET Framework 4.5 + 和 .NET Core/.NET 5+ 中提供的、基于消息处理管道(message handler pipeline)的现代 HTTP 客户端库。相比早期的 HttpWebRequest,它更易用、支持异步、可扩展性强,并且在 .NET Core 中底层使用
2025-06-22 12:01:12
481
原创 .NET AOT 详解
AOT(Ahead-Of-Time Compilation)是一种将代码直接编译为机器码的技术,与传统的 JIT(Just-In-Time Compilation)编译方式形成对比。在.NET 中,AOT 编译可以在应用发布时将 IL(中间语言)代码转换为平台特定的机器码,而不是在运行时进行 JIT 编译。
2025-06-06 21:22:38
1142
原创 Linux epel-release 详解
epel-release是用于在基于Red Hat的Linux发行版(如RHEL、CentOS等)上启用EPEL(Extra Packages for Enterprise Linux)软件仓库的RPM包。EPEL由Fedora项目维护,提供不在标准仓库中的高质量开源软件包。安装epel-release会添加仓库配置文件和GPG密钥,确保软件包来源可信。它适用于RHEL、CentOS、Rocky Linux等系统,提供工具、开发模块和多媒体软件等。安装方法因发行版而异,可通过yum或dnf安装。安装后,可查
2025-06-01 10:33:08
924
原创 Linux 下如何查看进程的资源限制信息?
Linux 上的 cat /proc/$pid/limits 命令提供有关特定进程的资源限制的信息,其中 $pid 是相关进程的进程 ID (pid)。该文件是 `/proc 文件系统的一部分,该文件系统是一个虚拟文件系统,提供有关进程和系统资源的信息。
2025-05-31 15:30:28
741
原创 Linux gron 命令使用详解
gron 是一个独特的命令行工具,用于将 JSON 数据转换为离散的、易于 grep 处理的赋值语句格式。它的名字来源于 "grepable on" 或 "grepable JSON",主要解决在命令行中处理复杂 JSON 数据的难题。
2025-05-30 06:42:13
438
原创 Php JIT 使用详解
PHP 8 引入的 JIT(Just-In-Time 编译器) 是该版本的一个重要性能特性,首次让 PHP 有了运行时即时编译的能力,从解释型语言迈向了“编译执行”的方向。
2025-05-25 16:11:09
486
原创 Php 箭头函数详解
在 PHP 7.4 中,官方引入了 箭头函数(Arrow Functions),语法简洁、行为类似 JavaScript 的箭头函数,同时保留了 PHP 的闭包特性。
2025-05-22 07:14:14
554
原创 Linux yq 命令使用详解
yq 是一个轻量级、可移植的命令行 YAML 处理器,它允许使用类似于 jq 的语法读取、写入、更新、合并和过滤 YAML 数据。
2025-05-21 07:05:46
876
原创 Linux jq 命令使用详解
jq 是一个命令行 JSON 处理器,允许解析、过滤、转换和格式化 JSON 数据,提取特定字段或重构 JSON,高效使用 JSON 中的 API 或配置文件。
2025-05-20 20:54:58
1033
原创 Linux lscpu 命令使用详解
lscpu 是 Linux 中的一个命令行工具,它通过读取 /proc/cpuinfo 和 sysfs 来显示详细的 CPU 架构信息,包括架构、核心数、线程数、缓存、NUMA 节点等。
2025-05-13 07:27:58
555
原创 Java 原生异步编程与Spring 异步编程 详解
Java异步编程是现代高性能应用开发的核心技术之一,它允许程序在执行耗时操作(如网络请求、文件IO)时不必阻塞主线程,从而提高系统吞吐量和响应性。// 核心线程数// 最大线程数// 队列容量// 空闲线程存活时间// 指定线程池return "线程池中的任务";}, pool);├─ 创建任务│ ├─ runAsync() -> 无返回值│ └─ supplyAsync() -> 有返回值├─ 处理结果│ ├─ thenApply() -> 转换。
2025-05-11 19:12:10
1010
原创 Java Spring 常用注解详解
Spring框架中提供了大量注解用于简化开发、提升代码可读性、实现依赖注入、事务管理、等功能。@Retention:注解生命周期(源码/编译期/运行时)@Target:注解使用范围(方法、字段、类等):是否生成Javadoc@Inherited:注解是否可被子类继承return "线程池中的任务";}, pool);
2025-05-10 12:09:12
1081
原创 Java Enum 枚举使用教程
Java枚举(enum)是Java 5引入的一种特殊类,用于表示一组固定的常量(如状态、类型等)。它结合了类型安全、代码可读性和面向对象特性,广泛应用于Java项目中(如等)SUCCESS, // 枚举实例(本质是 public static final)FAILURE,PENDING// SUCCESS// SUCCESS// 0// 遍历枚举SUCCESS(200, "成功"),FAILURE(500, "失败");// 200// 失败PLUS {},
2025-05-09 07:46:51
301
原创 Linux tldr 命令使用详解
tldr代表Too Long;。它是一个由社区维护的类unix命令的简化和实用命令行示例集合。它为常用命令提供了简洁的、由示例驱动的帮助,而不像详细而冗长的手册页。
2025-05-08 07:20:32
423
原创 Java lombok 使用教程
Lombok是Java的一个 编译器插件,用于简化Java中常见样板代码(如、构造函数、toString等)的编写,提高开发效率。
2025-05-07 07:36:14
360
原创 php8 枚举使用教程
PHP从8.1开始原生支持枚举(enum),这是PHP向类型安全和现代语言特性迈进的重要一步。枚举可以定义一组有穷的、不可变的常量集合,常用于表示状态值、选项类型等。
2025-05-05 10:37:55
441
原创 Linux watch 命令使用详解
watch命令会以固定间隔(默认每 2 秒)重复运行给定命令,并在终端上显示其输出。它非常适合监控不断变化的输出,例如磁盘使用情况、内存使用情况、文件更改、服务状态等。使用来换行使用引号括起来。
2025-05-04 18:37:04
753
原创 Linux btop 使用教程
btop是一个基于终端的现代系统资源监控器,具有美观的图形界面、响应快、功能丰富等特点。它支持查看CPU、内存、磁盘、网络、进程,并可以方便地筛选和管理进程。
2025-05-01 16:00:19
967
原创 Linux apropos 命令使用详解
apropos是一个模糊搜索工具,可以在所有man页面里搜输入的关键词。相比whatis只能搜命令名,apropos描述内容也能搜。
2025-04-30 07:34:10
207
原创 Linux whatis 命令使用详解
whatis命令用来快速查看某个命令的简要描述。它其实就是快速查man页的NAME部分。非常适合:想知道某个命令干什么不想翻长长的man页面快速回忆工具功能。
2025-04-29 06:51:50
330
原创 Linux man 命令使用教程
man manual(手册)命令用来查看Linux系统命令、函数、配置文件、系统调用等的官方文档。几乎所有标准程序和工具都有对应的man手册。man格式。
2025-04-28 07:48:10
752
原创 Go slice切片使用教程,一次通关!
Go中的 切片(slice) 是Go最强大、最常用的数据结构之一。它是对数组的轻量封装,比数组更灵活,几乎所有的集合处理都用切片来完成。切片是一个拥有 长度(len)和容量(cap) 的 动态数组视图。底层是一个数组,但可以动态扩容、共享数组。s := []int{} // 空切片,已初始化但无元素场景推荐写法初始化切片make([]T, len, cap) 或 []T{...}安全扩容不修改原切片复制切片清空切片s = s[:0] 或 var s []T。
2025-04-23 07:20:59
1053
原创 Java 泛型使用教程
Java泛型是JDK 5引入的一项特性,它提供了编译时类型安全检测机制,允许在编译时检测出非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型的好处:编译期检查类型安全避免强制类型转换(cast代码更通用,更易重用特性JavaC#类型安全✔️✔️灵活性❌(类型擦除限制)✔️(运行时保留泛型)泛型数组❌✔️基本类型支持❌(需包装)✔️泛型约束一般强大协变逆变复杂、通配符语法简洁、原生支持性能需装箱无装箱(对值类型更快)特性。
2025-04-21 07:25:09
720
原创 Java Streams 使用教程
Stream是Java 8引入的一个 函数式编程特性,可以让我们用声明式的方式操作集合(如等)。核心作用是:从集合中提取数据(流)对数据做中间操作(最后做终端操作(维度C# LINQ可读性简洁,但不支持 SQL 风格支持 SQL 风格,阅读更直观灵活性借助Collectors可以做很多操作LINQ本身功能更丰富多线程处理(粗粒度)PLINQ(细粒度)数据源支持Java 集合体系.NET 集合体系 + 数据库 IQueryable底层机制基于中间操作链和终结操作。
2025-04-20 17:30:06
512
原创 Linux cmp 命令使用详解
Linux中的cmp命令用于逐字节比较两个文件。它通常用于检查两个文件是否相同,如果不相同,则检查它们之间的差异。
2025-04-19 11:30:00
344
原创 C# 如何比较两个List是否相等?
在C#里,比较两个List是否相等,需要考虑多个方面,例如列表中的元素顺序、元素本身是否相等。实现Equals和方法set;set;obj)// 输出: True自定义比较器:set;set;x , Person?. Age == y?. Age;// 还有一种写法: // return obj.Name.GetHashCode() ^ obj.Age.GetHashCode();y)return x?.Name == y?
2025-04-17 07:15:58
487
原创 dotnet 值拷贝、浅拷贝、深拷贝详解
在.NET中,值拷贝(Value Copy)主要指的是将一个 值类型 的实例或对象的值复制到另一个变量中,使两个变量之间互不影响。// 值拷贝p2.X = 100;// 1// 100结构体之间的赋值是完全拷贝一份内存,不影响原来的结构体变量。
2025-04-16 06:47:43
369
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人