.NET知识
文章平均质量分 75
波波007
有10年+工作经验,高级软件工程师
展开
-
C#如何用最简单方法调用Python?
本文讲述了C#如何用最简单调用Python的方法,通过命令行调用Python。它能够快速搭建起C#与Python之间的通信桥梁,尤其适合快速验证概念或进行初步集成测试。在大模型时代,Python学习的必要性增大,尤其是.NET开发,C#中调用Python大大降低了学习成本。对于在C#中调用Python大家还有什么好的方法,欢迎留言讨论。来源公众号:DotNet开发跳槽。原创 2024-05-21 12:25:52 · 510 阅读 · 0 评论 -
.NET 9 的几个新特性,新颖吗?
NET 9引入了针对云原生应用和性能优化的重大增强。值得注意的增强包括增强的JSON序列化选项,强大的LINQ方法如CountBy和AggregateBy,以及方便的CryptographicOperations.HashData API,用于高效的哈希操作。随着.NET 9的不断发展,它承诺为各种用例提供强大的工具和功能,帮助开发人员构建现代化、高性能的应用程序。在System.Text.Json中,.NET 9为序列化JSON提供了新的选项和一个新的单例,使得使用Web默认值进行序列化变得更加容易。原创 2024-05-07 12:45:23 · 506 阅读 · 0 评论 -
揭秘:C#语法中“_ =” 是什么?
当然也可以不添加这些特性,若不使用[FromRoute]、[FromQuery]和[FromBody]等特性来明确指示参数来源,ASP.NET Core WebAPI会遵循默认绑定规则尝试自动绑定请求数据。因此,为了确保代码清晰、易于理解和维护,以及请求数据绑定的确定性和一致性,建议在编写控制器方法时始终显式使用这些特性指定参数来源。根据请求数据的位置和格式,选择合适的属性进行参数绑定,是构建健壮、通用RESTful API的关键步骤之一。属性用于标识那些应从HTTP请求的路由数据中提取的参数。原创 2024-04-22 12:41:53 · 429 阅读 · 1 评论 -
一文读懂.NET WebAPI中FromRoute、FromQuery、FromBody的关键角色与用法
当然也可以不添加这些特性,若不使用[FromRoute]、[FromQuery]和[FromBody]等特性来明确指示参数来源,ASP.NET Core WebAPI会遵循默认绑定规则尝试自动绑定请求数据。因此,为了确保代码清晰、易于理解和维护,以及请求数据绑定的确定性和一致性,建议在编写控制器方法时始终显式使用这些特性指定参数来源。根据请求数据的位置和格式,选择合适的属性进行参数绑定,是构建健壮、通用RESTful API的关键步骤之一。属性用于标识那些应从HTTP请求的路由数据中提取的参数。原创 2024-04-16 12:38:24 · 619 阅读 · 0 评论 -
为什么C#要采用顶级语句?
NET6发布后,C#10莫名引入了顶级语句,这是一种简化代码结构的语言特性。在此之前,C#程序必须包含一个入口点,通常是Main方法,然后在该方法中编写主要的程序逻辑。而使用顶级语句后,可以直接在文件的顶部编写执行代码,而无需显式地定义一个Main方法。先来看官方的总结:“使用顶级语句,可以更轻松地创建简单的程序来探索新的算法。由于使用习惯传统有main函数的.NET项目,突然来个顶级语句还真有点不习惯,小编有时候在创建项目的时候就选择了禁用它。你可以直接在文件中编写代码,而不必担心方法和类的结构。原创 2024-01-15 12:42:05 · 596 阅读 · 1 评论 -
.NET 8最强新功能:键控服务依赖注入
NET 8键控服务依赖项注入功能弥补了之前版本接口不能多个实现的缺陷。键控服务依赖项注入提供了一种强大的机制来管理和解析接口的多个实现。它允许开发人员根据提供的密钥选择特定的实现,从而实现更灵活、更高效的应用程序设计。在之前的依赖注入中,服务是根据其类型进行注册和解析的。这时候就可以使用.NET 8的新功能“键控服务依赖注入”。它允许您注册接口的多个实现,每个实现都与一个唯一键相关联,然后基于该键解析所需的实现。案例将准备一个接口,并且这个接口有两个类实现,最后使用键控服务依赖注入。原创 2023-12-25 12:31:36 · 631 阅读 · 0 评论 -
用上Parallel让你的.NET应用效率飙升
本文将介绍它的几种功能。这包括调试的复杂性,因为并行程序可能引入难以追踪的问题,线程安全性的挑战,需要小心管理共享数据的访问,以及性能开销的可能性,包括线程创建和上下文切换。并行编程的Parallel.ForEach 和 Parallel.For方法有它们的异步方法Parallel.ForEachAsync和Parallel.ForAsync,大家可以根据项目情况来调用。库简化了并行编程的复杂性,使开发人员能够以更轻松的方式利用并行性,提高应用程序的性能和响应能力,而无需深入处理底层线程管理的细节。原创 2023-11-29 12:25:59 · 113 阅读 · 0 评论 -
每个.NET开发都应掌握的C#多线程知识点
是进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),一个线程可以创建和撤销另一个线程;需要注意的是多线程是异步的实现方式。是一种并发编程的技术,它允许一个程序同时执行多个线程,每个线程都有自己的执行流程,但它们共享同一进程的内存空间。Task是.NET Frameworkd 4.0推出的新特性,被称为线程最佳实践,API也最多,Task的背后的实现也是使用了线程池线程。原创 2023-11-13 12:34:25 · 167 阅读 · 0 评论 -
.NET 8使用牛逼的AOT发布ASP.NET Core应用
NET AOT编译是一种.NET运行时的编译方式,它与传统的JIT编译方式不同。在传统的JIT编译中,.NET应用程序的代码在运行时才会被编译成本地机器码,而在AOT编译中,代码在运行之前就被提前编译成本地机器码。并可以减少内存的使用。本文介绍了AOT,并通过示例展示了在.NET8下使用AOT发布ASP.NET Core应用的过程。.NET8正式版本将在11月份发布,期待它带来更好的新特性,让.NET焕发青春。创建一个ASP.NET Core Web API项目,注意的是必须选择带AOT标识的项目。原创 2023-10-17 12:36:59 · 1036 阅读 · 0 评论 -
.NET超简单轻量级的HTTP请求组件Flurl
Flurl提供了一种简单的方法来构建GET、POST、PUT等类型的请求,以及处理响应和异常。本文将介绍Flurl的GET、POST请求功能和序列化功能。本文讲述了Flurl的GET、POST请求功能和序列化功能,适合初学者阅读和学习,实际项目使用需要根据情况参考官网使用。从上面代码可以看出,get使用Flurl就两行代码返回值,而post加上请求参数也才三行代码。首先用nuget安装Flurl,如果在vs里可以使用nuget安装,需要安装安装Flurl和Flurl.Http两个包。原创 2023-09-22 12:32:10 · 323 阅读 · 0 评论 -
使用这两个组件,.NET 网页截图就这么简单
Selenium.WebDriver 是一个用于自动化浏览器操作的 .NET 库,它提供了一组 API,允许开发者模拟用户在浏览器中的行为,从而进行自动化测试、数据抓取、网页操作等操作。Selenium 是一个广泛使用的工具,用于自动化浏览器操作和测试,而 Selenium.WebDriver 是其在 .NET 平台上的一个实现。下面介绍这两个开源的组件以及他们抓取图片的案例。大家用过那些.NET的网也截图库,最好不依赖浏览器的库,欢迎大家在文章下方留言和吐槽,共同分析和讨论.NET的网也截图这个话题。原创 2023-08-28 12:27:39 · 239 阅读 · 0 评论 -
C#提高LINQ运行效率的PLINQ
这里有两个关键词,一个是“并行”,另一个是“扩展”,所谓并行是相对于程序顺序来说说的,LINQ是顺序执行的,而PLINQ的并行执行弥补了LINQ同步执行的效率,当然根据使用情况的不同来选择,比如数据量很小就体现不出PLINQ的优势了。如果查询不执行大量的计算,或者如果数据源较小,则 PLINQ 查询的速度可能比顺序 LINQ to Objects 查询的速度慢。首先来了解一下什么是Plinq,我们来看看官方的描述:并行 LINQ (PLINQ) 是语言集成查询 (LINQ) 模式的并行实现。原创 2023-07-05 12:35:36 · 324 阅读 · 0 评论 -
避坑:.NET内存泄露的几种情况
在实际开发中,应根据应用程序的特性和需求,仔细审查代码并确保正确的资源管理和释放,以避免内存泄漏问题的出现。在处理完数据后,通过将 largeData 设置为 null,释放对大型数组的引用,从而允许垃圾回收器回收该数组所占用的内存。可以在对象的生命周期结束时,手动调用事件的解注册方法或使用弱事件模式,以避免事件发布者持有订阅者的引用。示例:一个长时间运行的任务中,持有对大量对象的引用,但任务执行完毕后未释放这些对象的引用。示例:一个后台线程持续运行并持有对大量对象的引用,但这些对象在任务完成后不再需要。原创 2023-07-03 12:38:13 · 155 阅读 · 0 评论 -
三种方法让.NET轻松实现Excel转PDF
前一段时间有网友问Excel转pdf怎么转pdf,小编帮他实现了一个,方法是使用EPPlus和PdfSharp组件实现,由于依赖OfficeOpenXml他也没有用上,后来小编又实现了二种不依赖OfficeOpenXml的方法。此方法跟Spire一样默认不支持中文,需要我们单独引用中文字库,方法GetChineseFont就是处理引用中文字库。标签作为表格的开始。此方法需要注意的是Spire默认不支持中文,需要我们单独引用中文字库,在代码的13行就是引用字库的地方,大家可以把字库拷贝到自己的项目引用。原创 2023-06-13 12:41:24 · 474 阅读 · 0 评论 -
.NET的8种JSON序列化反序列化工具供你选择
在.NET开发中,.NET的JSON序列化反序列化工具除了Newtonsoft.Json和System.Text.Json其实还有很多优秀的开源的序列化和反序列化工具,这些工具有的性能更加优秀,更加轻量等特征。ServiceStack.Text是一个功能丰富的JSON序列化和反序列化库,支持多种序列化和反序列化方式。优点:它生成的序列化数据尺寸小、序列化和反序列化速度快,同时具有跨语言支持,使得在不同平台和技术堆栈中的应用程序可以进行高效的数据交换和通信。优点:快速、简单的JSON序列化和反序列化库;原创 2023-06-09 12:38:27 · 254 阅读 · 0 评论 -
介绍.NET几种人脸识别组件
它提供了面部检测、面部分析、面部比较和面部搜索等功能,可以用于人脸识别、情绪分析、年龄估计等应用。它包括图像加载、处理、特征提取、目标检测、图像分割等功能,适用于图像处理、计算机视觉和机器学习等应用领域。它的功能包括人脸检测、人脸比对、活体检测、情绪分析、性别年龄识别等,适用于人脸识别、身份验证、情感分析、面部表情分析等应用。Azure Face API可以广泛应用于人脸识别、身份验证、社交媒体分析、智能安防等场景,帮助开发者构建具有面部识别和分析功能的应用程序。原创 2023-06-01 12:37:58 · 183 阅读 · 0 评论 -
每个.NET开发都应该知道的10个.NET库
这些.NET库涵盖了广泛的功能领域,包括Web应用程序开发、数据库操作、日志记录、、任务调度、HTTP请求、并发编程等,排名不分先后。功能:Newtonsoft.Json提供了广泛的JSON处理功能,包括对象序列化和反序列化、JSON转换、LINQ查询、动态类型处理、自定义序列化和反序列化规则等。用途:AutoMapper广泛应用于各种场景,包括数据传输对象(DTO)与实体对象之间的转换、领域模型与视图模型之间的映射、实体对象与数据库表之间的映射等,以简化对象之间的转换过程。原创 2023-05-26 12:34:47 · 313 阅读 · 0 评论