- 博客(315)
- 资源 (5)
- 收藏
- 关注
原创 C#常用类库-详解SqlSugar
SqlSugar是一款基于.NET的轻量级、高性能ORM框架,凭借“零配置、语法简洁、性能接近原生SQL、支持多种数据库、功能全面”的核心优势,成为国内.NET开发者最喜爱的ORM框架之一。它既具备EF Core的便捷性(无需手动编写SQL),又拥有Dapper的高性能,同时支持动态SQL、事务、分页、分表分库、导航属性、缓存等企业级必备功能,适配从简单项目到大型分布式系统的各类场景。
2026-03-14 11:00:00
45
原创 C#常用类库-详解System.Reactive
System.Reactive是Rx(Reactive Extensions)规范在.NET平台的实现,兼容.NET Framework 4.5+、.NET Core 2.0+、.NET 5/6/7/8及.NET MAUI等全平台,核心优势在于“以流为核心,统一处理同步/异步数据、事件、定时任务”——无论是UI事件(按钮点击、输入框变化)、网络请求、数据库查询,还是定时任务、消息队列,都能被抽象为可观察序列,通过统一的API进行操作,大幅降低异步编程的复杂度。
2026-03-14 09:30:00
29
原创 C#常用类库-详解Serilog
Serilog作为.NET生态中最流行、最强大的结构化日志类库,凭借其“结构化设计、高度可配置、轻量高效、生态完善”的优势,成为企业级开发的首选日志解决方案。它支持将日志输出到控制台、文件、数据库、ELK等多种终端,内置丰富的日志级别、过滤规则和扩展能力,既能满足简单的调试日志需求,也能支撑大规模分布式系统的日志收集与分析。
2026-03-13 08:00:00
297
原创 C#常用类库-详解RestSharp
而RestSharp作为.NET生态中最成熟、最流行的HTTP客户端类库,恰好解决了这一痛点。它封装了HTTP请求的全套流程,支持RESTful API的所有请求方式,内置序列化/反序列化、请求拦截、响应解析、异常处理等强大功能,一行代码即可发起复杂HTTP请求,大幅提升开发效率。
2026-03-13 07:00:00
430
原创 C#常用类库-详解Humanizer
Humanizer的核心定位是“让数据更贴近人类阅读习惯”,它封装了字符串、日期、数字、枚举等多种类型的人性化转换逻辑,支持多语言适配、自定义规则,无需编写复杂逻辑,一行代码即可完成繁琐的格式转换。本文将从基础概念→核心用法→高级特性→企业级实践→避坑指南,全方位、有深度地解析Humanizer,结合实际开发场景,帮你彻底掌握这款提升开发效率的“神器”。
2026-03-12 09:27:24
339
原创 C#常用类库-详解FluentValidation
而FluentValidation作为.NET生态中最流行、最强大的流式验证类库,凭借其“强类型、链式调用、验证逻辑与实体解耦、高度可扩展”的优势,成为企业级开发的首选数据验证解决方案。它支持几乎所有.NET平台(.NET Framework 4.6.1+、.NET Core 2.0+、.NET 5/6/7/8、.NET MAUI等),可灵活适配接口、表单、领域模型等多种验证场景,同时支持异步验证、本地化、依赖注入,大幅提升验证逻辑的可维护性和开发效率。
2026-03-12 09:26:25
615
原创 C#常用类库-详解CsvHelper
而CsvHelper作为.NET生态中最成熟、最高效的CSV处理类库,恰好解决了这一痛点。它基于.NET Standard开发,兼容所有.NET平台(.NET Framework 4.5+、.NET Core 2.0+、.NET 5/6/7/8、.NET MAUI等),封装了CSV的读取、写入、序列化/反序列化、格式配置等全套功能,一行代码即可完成复杂的CSV操作,大幅提升开发效率,同时支持高度自定义配置,适配各种复杂CSV场景。
2026-03-11 08:56:51
566
原创 C#常用类库-详解Dapper
Dapper是由Stack Overflow团队开发的轻量级ORM工具,它并非替代EF Core,而是以“简洁、高效、灵活”为核心,在保持原生SQL控制力的同时,简化数据映射的繁琐操作,完美平衡了“性能”与“开发效率”。本文将从基础用法→核心特性→高级技巧→性能优化→避坑指南,全方位、有深度地解析Dapper,结合实际项目场景,帮你彻底掌握这款“性能王者”级别的数据访问工具。
2026-03-11 08:55:57
448
原创 C#常用类库-详解Autofac
Autofac作为.NET生态中最成熟、功能最强大的依赖注入容器之一,凭借其灵活的配置、强大的扩展能力、完善的生命周期管理,成为中大型项目的首选DI工具。它不仅支持所有原生DI的功能,还提供了命名注册、模块拆分、动态代理、泛型注册等高级特性,完美适配复杂项目的依赖管理需求。
2026-03-10 09:02:48
337
原创 C#常用类库-详解AutoMapper
AutoMapper作为.NET生态中最主流的对象映射类库,正是为解决这一痛点而生。它通过约定优于配置的设计思想,自动实现不同类型对象之间的属性映射,大幅减少手动赋值代码,提升开发效率。本文将从基础用法→核心配置→高级特性→性能优化→避坑指南,全方位、有深度地解析AutoMapper,帮你从“会用”到“精通”,真正发挥其在实际项目中的价值。
2026-03-10 09:01:40
173
原创 C#常用类库-详解Log4Net
本文不会只停留在“如何配置Log4Net输出日志”的基础层面,而是从基础用法→核心配置→高级特性→底层原理→性能优化→实际避坑,全方位、有深度地解析Log4Net,帮你彻底掌握日志记录的核心逻辑,解决实际开发中遇到的复杂日志需求(如分级日志、多介质输出、日志归档、异常堆栈记录等),同时理解其背后的设计思路,面试中遇到相关问题也能从容应对。
2026-03-09 11:48:25
384
原创 C#常用类库-详解Newtonsoft.Json
本文不会只停留在“如何序列化/反序列化”的基础用法,而是从基础用法→核心配置→高级特性→底层原理→性能优化→实际避坑,全方位、有深度地解析Newtonsoft.Json,帮你从“会用”提升到“精通”,解决实际开发中遇到的复杂JSON处理问题,同时理解其背后的设计逻辑,面试中遇到相关问题也能从容应对。
2026-03-09 11:26:17
567
原创 C#每日面试题-var和dynamic区别
在C#面试中,var和dynamic是高频基础考点,也是新手最容易混淆的两个关键字——两者都能“省略具体类型”,简化代码书写,但底层实现、类型检查、使用场景完全不同。很多面试者只知“都能简化代码”,却答不出核心区别,直接丢分。今天就从“是什么→核心区别(底层+使用)→实战场景→面试坑”四个层面,把var和dynamic讲透,适配面试答题逻辑,新手能看懂,面试能拿分,兼顾简单易懂与深度。
2026-02-12 09:47:49
173
原创 C#每日面试题-简述逆变和协变
在C#面试中,逆变(Contravariance)和协变(Covariance)是中等难度高频考点,也是新手最容易混淆、甚至避之不及的知识点——两者都和“泛型/委托的类型兼容”相关,概念抽象、术语晦涩,很多面试者只记关键词却讲不清本质,直接丢分。今天就从“是什么→核心区别(底层+使用)→实战场景→面试坑”四个层面,用通俗比喻+代码示例,把逆变和协变讲透,适配面试答题逻辑,新手能看懂,面试能拿分,兼顾简单易懂与深度。
2026-02-12 09:12:28
470
原创 C#每日面试题-简述using语句
C#中的using语句是自动资源管理的关键语法,主要用于释放非托管资源(如文件流、数据库连接)。它通过IDisposable接口的Dispose()方法确保资源及时释放,即使发生异常也能安全处理。using语句简化了传统的try-finally模式,提高代码可读性和维护性。使用场景包括文件操作、数据库连接和网络流处理等。注意using仅适用于实现IDisposable接口的资源,托管资源由GC自动回收无需using。C#8.0后支持更简洁的using声明语法。面试时应强调其底层实现是try-finally封
2026-02-11 09:36:23
213
原创 C#每日面试题-简述密封类
在C#面试中,密封类(Sealed Class)是高频基础考点,看似简单(“不能被继承”一句话就能概括),但面试官往往会追问其底层逻辑、使用场景及与其他类的区别——这正是“简单易懂有深度”的核心考察点。今天就从“是什么→为什么用→怎么用→面试坑”四个层面,把密封类讲透,适配面试答题逻辑,也贴合实际开发场景。
2026-02-11 09:21:25
368
原创 C#每日面试题-简述应用程序域
很多新手在学习C#时,会跳过应用程序域,觉得它“太底层、用不上”,但面试中,只要涉及.NET内存管理、程序隔离、安全性相关的问题,面试官大概率会追问:“什么是应用程序域?它和进程有什么区别?为什么C#需要它?”
2026-02-10 09:16:46
441
原创 C#每日面试题-栈和堆的区别
很多新手在学习C#时,对栈和堆的理解只停留在“值类型在栈,引用类型在堆”这一句话上,但面试时,面试官往往会追问底层逻辑:为什么值类型在栈、引用类型在堆?栈和堆的内存分配、释放机制有什么不同?这背后其实关联着C#的内存管理核心,也是区分新手和有基础开发者的关键。
2026-02-10 09:11:02
353
原创 C#每日面试题-ref和out的区别
大家好,我是专注于C#面试干货分享的博主,今天咱们拆解另一道高频基础面试题——ref和out关键字的区别。这两个关键字都是C#中用于“按引用传递参数”的核心语法,看似功能相似,很多新手甚至资深开发者都会混淆它们的用法,面试时也常因讲不清“底层差异”和“使用边界”而丢分。今天咱们依旧用“通俗类比+代码示例+底层逻辑+面试避坑”的方式,把这个知识点讲透,既好懂又有深度,帮你轻松应对面试提问。
2026-02-09 10:33:11
543
原创 C#每日面试题-LINQ中延迟执行和立即执行的区别
大家好,我是专注于C#面试干货分享的博主,今天咱们拆解一道高频面试题——LINQ中延迟执行和立即执行的区别。这道题看似基础,却能快速区分开发者是“会用LINQ”还是“懂LINQ”,很多新手容易踩坑,面试时也常因讲不清底层逻辑而丢分。今天咱们用“通俗解释+代码示例+底层逻辑+实际场景”的方式,把这个知识点讲透,既好懂又有深度,帮你轻松应对面试。
2026-02-09 10:31:53
692
原创 C#每日面试题-简述托管代码
在.NET每日面试备考中,“托管代码(Managed Code)”是基础且核心的考点——它看似简单,很多开发者却只停留在“受CLR管理的代码”这一句表面回答,无法讲清“托管”的本质、底层逻辑以及与非托管代码的核心差异,难以体现专业性。真正高分的回答,需要做到“定义精准、特征清晰、逻辑透彻、结合面试”,既讲透底层原理,又用通俗语言拆解,让面试官看到你对.NET运行时的深度理解。本文将从面试得分点出发,层层拆解托管代码,帮你彻底搞懂、从容应答。
2026-02-06 10:07:49
346
原创 C#每日面试题-简述CLR垃圾回收原理
在.NET开发面试中,“CLR垃圾回收(GC,Garbage Collection)原理”是高频核心考点——它不仅能考察开发者对.NET运行时底层的理解深度,更能反映其对内存管理、性能优化的认知能力。很多开发者回答时仅停留在“自动回收未使用对象”的表面,难以体现专业性;而真正优秀的回答,需要兼顾“底层逻辑、核心机制、实际意义”,做到深刻且易懂。本文将从面试得分点出发,层层拆解CLR垃圾回收的完整原理,既讲透底层逻辑,也给出通俗解读,助力大家面试通关。
2026-02-06 09:35:19
461
原创 TypeScript学习-第13章:实战与最佳实践
从基础语法、高级类型到框架结合,咱们一路通关TS的各个知识点,终于从“看着报错慌神”变成“主动用类型约束代码”。但实际开发中还是会踩坑:第三方库没类型提示、类型冲突越改越乱、团队里有人疯狂滥用any……这一章就是TS学习的“终极总结”,既要整合所有知识点解决实际问题,又要立下规范形成最佳实践,最后用一个完整实战项目收尾,帮你从“会用TS”升级为“用好TS”,真正把类型安全落地到业务中。
2026-02-05 10:13:24
778
原创 TypeScript学习-第12章:与主流框架结合
上一章咱们把tsconfig.json玩得明明白白,TS编译规则总算尽在掌握。可一进入React/Vue项目,又瞬间破防:组件Props传参随心所欲,类型错误藏到运行时才暴露;Hooks状态乱改,不知道该标注什么类型;框架API和TS类型打架,最后只能用any“摆烂”……其实TS和主流框架本是“黄金搭档”,前者给后者的灵活性套上“类型安全锁”,后者让TS的类型能力落地到真实业务。今天咱们就手把手搞定TS与React、Vue3的结合,从此在框架项目中告别any,写出又稳又优雅的代码。
2026-02-05 10:12:44
982
原创 TypeScript学习-第11章:配置文件(tsconfig.json)
上一章咱们用模块把代码拆得明明白白,终于摆脱了“大杂烩”困境。可一执行编译命令 tsc 又懵了:编译后的JS文件跟TS源码混在一起,看得眼花缭乱;明明写的是ES6语法,编译后却变成了老旧的ES3;甚至有些测试文件、配置文件也被一并编译……这时候就需要 tsconfig.json 登场了!它就像TS编译的“专属控制面板”,能自定义编译目标、输出路径、文件范围等所有规则,让编译行为完全按你的想法来。今天咱们就手把手搞定这个“配置神器”,从此告别编译混乱的尴尬。
2026-02-04 08:54:29
763
原创 TypeScript学习-第10章:模块与命名空间
上一章咱们搞定了类型断言与缩小,终于能精准拿捏各种类型细节了。可一进入大型项目就傻眼:所有代码堆在一个文件里,像乱炖的大杂烩;变量函数互相污染,改一处牵一发而动全身;第三方库引入后没类型提示,写代码全靠猜……别慌!TypeScript的“代码组织神器”——模块(Module)与命名空间(Namespace)来了!前者负责现代项目的代码拆分与复用,后者兜底旧代码的全局作用域管理,二者联手让你的代码从“一团乱麻”变“井井有条”。今天就用接地气的方式,吃透这两个大型项目必备技能。
2026-02-04 08:52:52
854
原创 TypeScript学习-第9章:类型断言与类型缩小
上一章咱们用高级类型搭好了“类型乐高”,本以为能精准拿捏所有场景,结果TS又开始“犯迷糊”:明明知道DOM元素一定存在,它偏说可能是null;明明能通过条件判断出类型,它还固执地保留联合类型……这时候就需要“类型断言”和“类型缩小”两大神器登场!前者是“手动给TS划重点”,后者是“让TS自动认清楚”,二者联手就能解决类型推断不准的痛点,让咱们的代码既精准又灵活。今天就用接地气的方式,吃透这两个实用技巧。
2026-02-03 09:09:44
594
原创 TypeScript学习-第8章:高级类型
上一章咱们搞定了泛型这个“类型复用神器”,以为能在TS世界横着走了?可一碰到复杂业务场景就懵了:既要让变量支持多种类型,又要精准区分类型做不同操作;既要合并多个接口的属性,又要避免类型冲突……别急,TS的“高级类型”就是为解决这些“疑难杂症”而生的!它们就像类型界的乐高积木,能通过组合、判断、守卫,拼出适配复杂业务的精准类型。今天咱们就用接地气的方式,吃透这些高级玩法,从此告别“类型写死”和“any兜底”。
2026-02-03 09:07:45
758
原创 TypeScript学习-第7章:泛型(Generic)
各位前端小伙伴,是不是曾遇到过这样的窘境:想写个通用工具函数,要么用 any 摆烂(事后调试火葬场),要么为 string、number、object 各写一套重复代码(Ctrl+C/V 到麻木)?别急,TypeScript 给我们准备了“类型复用神器”——泛型(Generic),既能实现一套代码适配多种类型,又能保住类型安全的底线。今天咱们就用轻松的姿势,吃透泛型的核心玩法,顺便摆脱“重复造轮子”的命运。
2026-02-02 09:46:33
620
原创 TypeScript学习-第6章:类(Class)
各位前端工友们,上一章咱们搞定了接口——这个“代码世界的契约书”,明确了复杂结构的约束规则。但契约终究是“纸上条文”,得有具体的“执行者”来落地逻辑、封装数据。这一章咱们就解锁TS面向对象的核心载体——类(Class),让接口的契约“活”起来。纯JS里的类更像“简单模板”,能生成实例但缺乏严格约束;而TS的类,是“带类型校验的强化模板”——既继承了JS类的封装、继承特性,又结合TS类型系统,给属性、方法加了精准约束,还能和接口绑定,让面向对象编程更严谨、更可控。咱们就从基础到高级,一步步吃透TS类的玩法
2026-02-02 09:45:11
745
原创 TypeScript学习-第5章:接口(Interface)
各位前端工友们,上一章咱们给函数定了“工作规矩”,搞定了输入输出的类型约束。但随着业务变复杂,咱们会遇到越来越多“复杂结构体”——比如API返回的用户信息、组件接收的Props、前后端约定的数据格式,这些结构要是靠零散的类型标注来约束,不仅代码冗余,还容易出现不一致的问题。这一章咱们就解锁TS的“结构化约束神器”——接口(Interface)。如果说基础类型、复合类型是“零件规格”,函数类型是“执行手册”,那接口就是“总契约书”,专门用来统一复杂结构的规则,让所有关联代码都按同一套标准来,既规范又好维护
2026-01-30 09:18:55
976
原创 TypeScript学习-第4章:函数类型
各位前端工友们,上一章咱们搞定了复合类型,相当于把TS世界里的“零件”和“组装件”都摸清了。而函数,就是操控这些“组装件”干活的“执行者”——不管是处理数据、发起请求,还是渲染页面,本质都是靠函数来落地逻辑。但JS里的函数就像“野生执行者”,参数传啥、返回啥全凭自觉,很容易出现“传错参数类型”“返回值不符合预期”的bug。这一章咱们就给函数“立规矩”,吃透函数类型的精准约束,让每一个“执行者”都按规则干活,既灵活又不跑偏。
2026-01-30 09:06:45
752
原创 TypeScript学习-第4章:函数类型
JS里的函数就像“野生执行者”,参数传啥、返回啥全凭自觉,很容易出现“传错参数类型”“返回值不符合预期”的bug。这一章咱们就给函数“立规矩”,吃透函数类型的精准约束,让每一个“执行者”都按规则干活,既灵活又不跑偏。
2026-01-29 09:11:02
832
原创 TypeScript学习-第3章:复合类型
这一章咱们就解锁“零件组装技能”——复合类型,核心搞定数组、元组、对象这三大主力,学会给复杂数据结构“贴精准标签”。如果说基础类型是“单兵作战”,那复合类型就是“团队协作”,掌握它们才能应对真实业务场景。
2026-01-29 09:10:21
757
原创 C#每日面试题-Task和Thread的区别
在C#并发编程中,Task和Thread是两个高频出现的概念,也是面试中的核心考点。很多初学者容易将二者混淆,认为“Task就是封装后的Thread”,但实际上二者在设计理念、底层实现、使用场景上都存在本质差异。本文将从基础概念出发,由浅入深拆解二者的区别,结合实例帮助大家精准理解并灵活运用。
2026-01-28 09:57:19
573
原创 C#每日面试题-Thread.Sleep和Task.Delay的区别
在C#并发编程中,Thread.Sleep和Task.Delay是两个高频出现的“暂停执行”方法,看似功能相似,实则底层原理、线程行为、使用场景有本质差异。本文将从“易懂”角度拆解核心区别,再深入底层逻辑,帮你既搞定面试,又能在实际开发中精准选型。
2026-01-28 08:33:22
1212
原创 TypeScript学习-第2章:基础类型
各位前端工友们,上一章咱们搭好了TS的“作战基地”,跑通了第一个程序,算是跨进了TS的大门。这一章咱们要解锁核心技能——给变量“贴标签”,也就是TS的基础类型体系。要是把TS比作“代码安全卫士”,那基础类型就是卫士的“身份识别系统”,每个变量都得亮明身份,才能被卫士精准管控。咱们不搞术语轰炸,就用“贴标签”的逻辑,把这些类型一个个聊透,还会揪出那些容易踩坑的边界场景。
2026-01-27 09:38:34
618
原创 TypeScript学习-第1章:入门
各位前端工友们,是不是总遇到这样的糟心时刻:写JS代码时行云流水,一运行就报“undefined is not a function”;改了个变量名,全局搜了八遍还是漏改一处,上线后直接翻车;对接后端接口,对着文档猜字段类型,少个属性排查两小时?如果你被这些问题反复拿捏,那今天的主角——TypeScript(以下简称TS),就是来救你于水火的“代码安全卫士”。这一章咱们不搞晦涩术语堆砌,用唠嗑的方式搞懂TS到底是个啥、为啥要学,以及怎么快速搭好环境跑起第一个程序。
2026-01-27 09:37:22
931
原创 C#每日面试题-简述基类、子类中实例成员和静态成员的初始化过程
在C#面向对象编程中,基类与子类的成员初始化过程遵循严格的执行顺序,这一规则直接影响对象创建时的状态一致性,也是面试中考察基础语法与底层逻辑的高频考点。本文将从核心概念铺垫入手,拆解静态成员、实例成员在基类与子类中的初始化顺序,结合代码案例与底层机制,帮你彻底搞懂这一过程。
2026-01-26 19:27:16
1359
原创 C#每日面试题-简述类型实例化底层过程
在C#中,类型实例化(即通过new关键字创建对象)并非简单的“分配内存”,而是由CLR(公共语言运行时)主导,历经“类加载验证→静态初始化→内存分配→实例初始化→对象就绪”的完整链路。这一过程深度关联内存管理、继承机制与构造函数逻辑,是面试中考察底层认知的核心考点。本文从CLR视角拆解全流程,结合代码案例与内存模型,帮你搞懂实例化的底层逻辑。
2026-01-26 19:25:12
1095
draw.io Windows桌面版
2018-05-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅