C#与.Net
文章平均质量分 63
C# 是一种 新式、创新、开放源代码、跨平台,面向对象的编程语言
NetX行者
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ConcurrentDictionary 详解:.NET 中的线程安全字典
ConcurrentDictionary是.NET中线程安全的字典实现,位于System.Collections.Concurrent命名空间。与普通Dictionary相比,它具备原子操作、细粒度锁和无锁读取等特性,特别适合多线程环境。核心方法包括TryAdd、TryUpdate、AddOrUpdate等原子操作。在任务进度系统等并发场景中表现优异,能安全高效地管理数据。最佳实践包括优先使用原子方法、避免工厂函数副作用等。它比手动锁实现更高效,是处理并发字典操作的首选方案,尤其适合高频读写场景。原创 2025-08-08 11:28:50 · 821 阅读 · 0 评论 -
FastAPI + gRPC 全栈实践:Windows 开发到 Ubuntu 部署全指南
本文详细介绍了如何在Windows 11开发环境中搭建FastAPI+gRPC全栈服务,并部署到Ubuntu 24服务器的完整流程。主要内容包括:Windows开发环境配置(Python 3.9+、虚拟环境创建)、项目结构设计、gRPC服务定义与实现(Proto文件编写、代码生成)、REST接口开发、客户端测试方法,以及Ubuntu服务器的系统配置、应用部署和Systemd服务管理。文章还特别提供了.NET Core调用REST/gRPC接口的示例代码,实现跨语言调用。通过本指南,开发者可以快速掌握从本地开原创 2025-07-14 16:57:54 · 673 阅读 · 0 评论 -
.NET 9 GUID v7 vs v4:时间有序性如何颠覆数据库索引性能
性能红利:多线程并发写入场景提升超 20%运维友好:减少索引碎片,降低存储成本诊断增强:通过 GUID 追溯事件时间线未来趋势:MongoDB、PostgreSQL 等数据库已原生支持 UUID v7行动建议:若项目涉及时间序列数据,立即在 .NET 9 中测试,性能提升立竿见影。延伸阅读RFC 9562: UUID 版本 7 标准.NET 9 GUID API 文档。原创 2025-07-14 09:43:07 · 975 阅读 · 0 评论 -
硬件信息收集助手类
【代码】硬件信息收集助手类。原创 2025-06-28 14:07:35 · 150 阅读 · 0 评论 -
详解正则表达式中的?:、?= 、 ?! 、?<=、?<!
第一个例子匹配不在"discount-"后面的数字,第二个例子匹配不以"https://"开头的URL。作用: 创建一个分组但不捕获匹配结果,不会将匹配的文本存储到内存中供后续使用。在这个例子中,正向先行断言确保了特定内容存在于匹配之后,但不包含在匹配结果中。第一个例子匹配不以数字结尾的单词,第二个例子匹配后面不跟"元"的数字。第一个例子匹配前面有货币符号的数字,第二个例子匹配div标签内的内容。作用: 匹配后面跟着特定模式的位置,但不消耗这些字符(零宽度断言)。作用: 匹配后面不跟着特定模式的位置。原创 2025-04-12 21:59:53 · 791 阅读 · 0 评论 -
私有NuGet开源系统
BaGet是一个开源的NuGet V3服务器实现,它基于ASP.NET Core构建。:Sleet是一个开源的NuGet V3静态Feed生成器,它是一个完全静态的NuGet服务器,这意味着您可以将Feed直接托管在Azure Storage或Amazon S3上,无需计算资源。:NuGet.Server是一个MVP(最小可行产品)的NuGet服务器。它体积小且超级轻量,但功能非常有限。:LiGet是一个开源的NuGet V2服务器实现,它在Kestrel上运行,并可以在Docker中部署。原创 2024-12-20 10:43:14 · 357 阅读 · 0 评论 -
abp vnext项目配置多数据库类型
1、HttpApi.Host同时引用Volo.Abp.EntityFrameworkCore.SqlServer、Volo.Abp.EntityFrameworkCore.MySQL、Volo.Abp.EntityFrameworkCore.Sqlite。一个项目实现根据appsetting.json配置文件配置的数据库类型,自动适配指定的数据库类型,而无需当数据库类型变化时再去调整代码。5、以上配置完成 之后,即可使用add-migration、Update-Database进行数据库迁移。原创 2024-12-13 07:00:00 · 915 阅读 · 0 评论 -
.NET 9中数据集合类型及其性能比较与应用场景分析
当需要频繁进行随机访问操作,且数据量较大但不是极端大时,List是一个不错的选择。:当需要保持键值对的有序性,并且键的数量不是非常大时。:当需要通过键快速查找值,并且数据量很大时。:当键的数量非常大时,因为SortedList的插入和删除操作是O(n)的时间复杂度。:当需要保持元素的有序性,并且需要快速查找、添加和删除操作时。:当需要频繁在列表中间插入或删除元素时,因为这样的操作会导致大量元素的移动,从而降低性能。:当需要保持元素的顺序时,因为HashSet不保证元素的顺序。原创 2024-11-14 08:00:00 · 1175 阅读 · 0 评论 -
.NET 9.0 中 System.Text.Json 的全面使用指南
以下是一些 System.Text.Json 在 .NET 9.0 中的使用方式,包括序列化、反序列化、配置选项等,并附上输出结果。原创 2024-11-16 10:00:00 · 879 阅读 · 0 评论 -
.NET 9.0 LINQ 完全指南:从基础到高级应用场景
LINQ 在 .NET 9.0 中的使用方法,包括基础查询、筛选、排序、聚合等,并附上代码示例、输出结果以及现实中的实际应用场景。原创 2024-11-17 09:00:00 · 933 阅读 · 0 评论 -
.NET 9中的record类型:不可变数据结构的介绍与应用场景分析
record类型在.NET 9中为开发者提供了一种更简洁、更安全的创建不可变数据结构的方式。通过使用record,可以减少样板代码,同时提高代码的可读性和可维护性。在需要数据不可变性和值语义的场景中,record是一个非常好的选择。原创 2024-11-15 08:00:00 · 735 阅读 · 0 评论 -
基于abp vnext手动编写一个功能的完整步骤
基于abp vnext一个模块的开发流程及名层代码的修改步骤如下。原创 2022-11-08 07:00:00 · 727 阅读 · 0 评论 -
C#冒泡排序及应用场景
需要注意的是,冒泡排序的时间复杂度与数据的顺序无关,因此无论数据是随机分布还是完全有序,它的时间复杂度都是 $O(n^2)$。因此,在大多数情况下,快速排序、归并排序等更高效的排序算法可能更适合使用。数据规模较小:冒泡排序的时间复杂度为 $O(n^2)$,因此在数据规模较小的情况下,它的运行时间可能与其他更快的排序算法(如快速排序、归并排序等)相差无几,或者甚至更快。数据已经接近有序:如果待排序的数据已经基本有序,冒泡排序的时间复杂度可以降低到 $O(n)$,因此在这种情况下,冒泡排序比其他排序算法更快。原创 2023-03-23 17:16:18 · 555 阅读 · 0 评论 -
.NET 9与C# 13革新:新数据类型与语法糖深度解析
【代码】.NET 9与C# 13革新:新数据类型与语法糖深度解析。原创 2024-11-16 09:00:00 · 934 阅读 · 0 评论 -
异步文件访问 (C#)
可使用异步功能访问文件。通过使用异步功能,你可以调用异步方法而无需使用回调,也不需要跨多个方法或 lambda 表达式来拆分代码。若要使同步代码异步,只需调用异步方法而非同步方法,并向代码中添加几个关键字。原创 2024-12-07 10:00:00 · 1086 阅读 · 0 评论 -
C#异步编程中如何等待多个任务完成
尽管它的代码较少,但在混合 LINQ 和异步代码时需要谨慎使用。因为 LINQ 使用延迟的执行,因此异步调用将不会像在。),这些方法允许你编写在多个后台作业中执行非阻止等待的异步代码。预先执行查询,并将结果存储在数组中。循环中那样立刻发生,除非强制所生成的序列通过对。API 包含两种方法(即。此示例演示如何为一组。原创 2024-12-06 12:00:00 · 519 阅读 · 0 评论 -
C#:异步编程场景浅析及示例
异步编程的核心是Task和Task对象,这两个对象对异步操作建模。它们受关键字async和await的支持。对于 I/O 绑定代码,等待一个在async方法中返回Task或Task的操作。对于 CPU 绑定代码,等待一个使用Task.Run方法在后台线程启动的操作。await关键字有这奇妙的作用。它控制执行await的方法的调用方,且它最终允许 UI 具有响应性或服务具有灵活性。虽然有方法可处理async和await以外的异步代码,但本文重点介绍语言级构造。在以下一些示例中,原创 2024-12-05 12:00:00 · 856 阅读 · 0 评论 -
扩展 LINQ:按连续键对结果进行分组
此解决方案是以线程安全扩展方法实现的,该扩展方法以流的方式返回其结果。换言之,它在源序列中遍历移动时生成其组。运算符不同,它能在读取所有序列之前开始将组返回给调用方。下面的示例演示如何将元素分组为表示连续键子序列的区块。原创 2024-12-04 12:00:00 · 413 阅读 · 0 评论 -
扩展 LINQ:为 LINQ 查询添加自定义方法
通过形状的一致性,可以通过编写具有类似形状的方法来扩展 LINQ。在本文中,你将看到通过编写遵循相同模式的自己的方法来扩展 LINQ 的示例。例如,除了标准平均值或最大值运算,还可创建自定义聚合方法,从一系列值计算单个值。此外,还可创建一种方法,用作值序列的自定义筛选器或特定数据转换,并返回新的序列。另一种方法是创建一个采用泛型类型的重载,并使用委托将其转换为特定类型。的扩展方法,该方法从集合中第一个元素开始按相隔一个元素的方式返回集合中的元素。接口调用其他聚合方法的方式为任何可枚举集合调用此扩展方法。原创 2024-12-03 12:00:00 · 1969 阅读 · 0 评论 -
LINQ 和集合:如何使用 LINQ 查询 ArrayList(C#)
,必须显式声明范围变量的类型,以反映集合中对象的特定类型。在查询表达式中使用显式类型范围变量等效于调用。是两个标准查询运算符方法,可对非泛型。有关详细信息,请参阅。如果无法执行指定的强制转换,如果使用 LINQ 来查询非泛型。通过指定范围变量的类型,可将。原创 2024-12-02 10:00:00 · 436 阅读 · 0 评论 -
LINQ 和集合:如何从多个源填充对象集合(C#)
请勿尝试将内存中数据或文件系统中的数据与仍在数据库中的数据进行联接。这种跨域联接可能产生未定义的结果,因为可能为数据库查询和其他类型的源定义了联接操作的不同方式。此外,如果数据库中的数据量足够大,这样的操作还存在可能导致内存不足的异常的风险。如果不需要存储查询的结果,那么与命名的类型相比,元组或匿名类型使用起来更方便。存储来自两个内存字符串集合(模拟 .csv 格式的电子表格数据)的合并数据。本示例演示如何将来自不同源的数据合并到一系列新的类型。”子句中,将从两个源中的数据初始化每个新的。原创 2024-12-07 10:00:00 · 209 阅读 · 0 评论 -
LINQ 和集合:如何合并和比较字符串集合(C#)
此示例演示如何合并包含文本行的文件,并对结果排序。具体而言,此示例演示如何对两组文本行执行串联、联合和交集。它使用相同的两个文本文件,如前面的示例所示。原创 2024-12-06 07:00:00 · 285 阅读 · 0 评论 -
LINQ 和集合:如何使用LINQ查找两个列表之间的差集(C#)
此示例演示如何使用 LINQ 对两个字符串列表进行比较,并输出那些位于第一个集合(而不是第二个集合)中的行。名称的第一个集合存储在文件。一些名称同时出现在两个序列中。名称的第二个集合存储在文件。)只能用基于方法的语法表示。某些类型的查询操作(例如。以下代码演示如何使用。原创 2024-12-05 07:00:00 · 419 阅读 · 0 评论 -
如何:使用 LINQ 查询字符串
字符串存储为字符序列。作为字符序列,可以使用 LINQ 查询它们。本文中提供了几个示例查询,可查询不同字符或字词的字符串、筛选字符串,或将查询与正则表达式混合。原创 2024-12-04 07:00:00 · 1010 阅读 · 0 评论 -
Linq与文件系统:使用 LINQ 查询文件和目录(下)
许多文件系统操作实质上是查询,因此非常适合使用 LINQ 方法。这些查询是非破坏性的。它们不会更改原始文件或文件夹的内容。查询不应造成任何副作用。通常,修改源数据的任何代码(包括执行创建/更新/删除操作的查询)应与仅查询数据的代码分开。创建准确表示文件系统的内容并适当处理异常的数据源存在一定难度。本部分中的示例创建 FileInfo 对象的快照集合,该集合表示指定的根文件夹及其所有子文件夹下的所有文件。每个 FileInfo 的实际状态可能会在开始和结束执行查询期间发生更改。原创 2024-12-03 07:00:00 · 1067 阅读 · 0 评论 -
Linq与文件系统:使用 LINQ 查询文件和目录(上)
许多文件系统操作实质上是查询,因此非常适合使用 LINQ 方法。这些查询是非破坏性的。它们不会更改原始文件或文件夹的内容。查询不应造成任何副作用。通常,修改源数据的任何代码(包括执行创建/更新/删除操作的查询)应与仅查询数据的代码分开。创建准确表示文件系统的内容并适当处理异常的数据源存在一定难度。本部分中的示例创建 FileInfo 对象的快照集合,该集合表示指定的根文件夹及其所有子文件夹下的所有文件。每个 FileInfo 的实际状态可能会在开始和结束执行查询期间发生更改。原创 2024-12-02 07:00:00 · 1063 阅读 · 0 评论 -
Linq(C#)之对数据分组
分组是指将数据分到不同的组,使每组中的元素拥有公共的属性。下图演示了对字符序列进行分组的结果。每个组的键是字符。原创 2024-11-28 22:00:00 · 1447 阅读 · 0 评论 -
LINQ(C#) 中的 连接运算:Join、GroupJoin
两个数据源的join就是将一个数据源中的对象与另一个数据源中具有相同公共属性的对象相关联。当查询所面向的数据源相互之间具有无法直接领会的关系时,联接就成为一项重要的运算。在面向对象的编程中,联接可能意味着在未建模对象之间进行关联,例如对单向关系进行反向推理。Student类有一个表示专业的Department类型的属性,但Department类没有作为Student对象集合的属性。如果你具有一个Department对象列表,并且要查找每个部门中的所有学生,则可以使用 join 运算完成此项查找。原创 2024-11-29 07:00:00 · 2384 阅读 · 0 评论 -
Linq(C#)之转换数据类型
LINQ 查询中的转换运算可用于各种应用程序。原创 2024-11-28 07:00:00 · 612 阅读 · 0 评论 -
Linq(C#)中的【将数据分区】 :Skip、SkipWhile、Take、TakeWhile、Chunk
LINQ 中的分区是指将输入序列划分为两个部分的操作,无需重新排列元素,然后返回其中一个部分。下图显示对字符序列进行三种不同的分区操作的结果。第一个操作返回序列中的前三个元素。第二个操作跳过前三个元素,返回剩余元素。第三个操作跳过序列中的前两个元素,返回接下来的三个元素。原创 2024-11-27 22:00:00 · 947 阅读 · 0 评论 -
LINQ (C#) 中的限定符运算:全部All、任意Any、包含Contains
限定符运算返回一个值,该值指示序列中是否有一些元素满足条件或是否所有元素都满足条件。下图描述了两个不同源序列上的两个不同限定符运算。第一个运算询问是否有任何元素为字符“A”。第二个运算询问是否所有元素都为字符“A”。这两种方法在此示例中都返回true。原创 2024-11-27 12:00:00 · 966 阅读 · 0 评论 -
Linq中的对数据排序 (C#):OrderBy、OrderByDescending、ThenBy、ThenByDescending
排序操作基于一个或多个属性对序列的元素进行排序。第一个排序条件对元素执行主要排序。通过指定第二个排序条件,您可以对每个主要排序组内的元素进行排序。每个Student都有年级、主要院系和一系列分数。Teacher还有一个City属性,用于标识教师的授课校区。Department有一个名称,以及对担任院系主任的Teacher的引用。原创 2024-11-27 07:00:00 · 1060 阅读 · 0 评论 -
Linq中的设置操作 (C#):Distinct 和 DistinctBy、Except 和 ExceptBy、Intersect 和 IntersectBy、Union 和 UnionBy
DistinctDistinctByLINQ 中的集运算是指根据相同或单独集合中是否存在等效元素来生成结果集的查询运算。注:这些示例使用数据源。基于的数据源使用数据源和。表达式树对允许的 C# 语法有。此外,每个数据源(如)可能会施加更多限制。原创 2024-11-26 22:00:00 · 2820 阅读 · 0 评论 -
Linq中的投影运算 (C#):Select、SelectMany、Zip
Select投影是指将对象转换为一种新形式的操作,该形式通常只包含那些将随后使用的属性。通过使用投影,您可以构造从每个对象生成的新类型。可以投影属性,并对该属性执行数学函数。还可以在不更改原始对象的情况下投影该对象。原创 2024-11-26 12:00:00 · 1941 阅读 · 0 评论 -
使用 LINQ 筛选 C# 中的数据
筛选是指将结果集限制为仅包含满足指定条件的元素的操作。它也称为“选择”与指定条件匹配的元素。下图演示了对字符序列进行筛选的结果。筛选操作的谓词指定字符必须为“A”。子句从数组中筛选具有特定长度的字符串。原创 2024-11-26 07:00:00 · 572 阅读 · 0 评论 -
C# 13 中的新增功能(新的转义序列、方法组自然类型、隐式索引访问)及其应用场景
C# 13 中的新增功能(新的转义序列、方法组自然类型、隐式索引访问)及其应用场景原创 2024-11-25 22:00:00 · 1585 阅读 · 0 评论 -
Vue3+Typescript+Axios+.NetCore实现导出Excel文件功能
【代码】Vue3+Typescript+Axios+.NetCore实现导出Excel文件功能。原创 2024-11-25 12:00:00 · 666 阅读 · 0 评论 -
Sum Group By 的SQL语句改写为linq的示例
主表Equip_MaintenanceOrders的总成本金额等于成本明细子表的成本金额的总和的SQL语句改写为Linq语句原创 2024-11-25 07:00:00 · 306 阅读 · 0 评论 -
基于ASP.NET Core后端代码获取客户端IP的方法
(适用于ASP.NET Core): 在ASP.NET Core中,您可以通过HttpContext的ConnectionInfo属性来获取客户端的IP地址。头部: 如果您的应用程序位于代理服务器(如负载均衡器或反向代理)后面,那么直接获取的IP地址可能是代理服务器的地址。在这种情况下,代理通常会添加一个。头部可以被伪造,因此在使用它的时候应该谨慎,并且最好确保您的应用程序只信任内部代理设置的这个头部。的HTTP头来传递原始客户端的IP地址。原创 2024-11-21 12:49:11 · 1529 阅读 · 0 评论 -
基于Vue3与ABP vNext 8.0框架实现耗时业务处理的进度条功能
前端Vue3 使用axios与后端提求数据,后端使用基于.netcore框架下的abp vnext8.0框架,要实现一个数据同步的功能。数据同步的功能业务逻辑处理比较耗时,需要做一个处理进度状态条信息。原创 2024-11-18 15:45:16 · 885 阅读 · 0 评论
分享