
NET Core跨平台+CoreCLR+C#
文章平均质量分 70
.NET Core 是一个通用的开放源代码开发平台。 可以使用多种编程语言针对 x64、x86、ARM32 和 ARM64 处理器创建适用于 Windows、macOS 和 Linux 的 .NET Core 应用。 为云、IoT、客户端 UI 和机器学习提供了框架和 API。
.NET跨平台
比较认真。编程就是算法和数据结构,算法和数据结构是编程的灵魂。
展开
-
基于NET6的C#实现无人机原路寻路返回
在.NET 6中,你可以使用C#来模拟实现无人机的记忆飞行路径和原路寻路返回功能。以下是一个简化的模拟示例,展示如何使用GPS坐标记录飞行路径,并模拟无人机原路返回。原创 2025-02-22 01:49:42 · 998 阅读 · 0 评论 -
C#实现零知识证明
零知识证明(Zero-Knowledge Proof, ZKP)是密码学中的一种技术,允许一方(证明者)向另一方(验证者)证明自己知道某个秘密信息,而不泄露任何关于该秘密的信息。原创 2024-12-02 23:26:11 · 489 阅读 · 0 评论 -
C#多构造器参数使用Builder设计模式重构
你可以根据具体需求调整验证规则和添加更多的业务逻辑。需要我详细解释某个具体部分吗?创建一个使用Builder模式的高级示例,展示如何优雅地处理多构造器参数的情况。原创 2024-11-21 02:20:02 · 703 阅读 · 0 评论 -
C#多构造器参数使用创建型设计模式重构高级用法示例
以下是实现链式调用和组合的完整代码示例,用于展示如何使用BuilderpersonNamepersonAgepersonAddresspersonJobexMessage。原创 2024-11-21 02:18:46 · 327 阅读 · 0 评论 -
C#泛型委托重构(二)
创建一个使用泛型委托进行代码重构的示例。原创 2024-11-15 14:12:39 · 291 阅读 · 0 评论 -
C#泛型委托重构(一)
泛型委托在代码中非常有用,尤其是当你想要处理不同类型的数据但仍然想使用相同的逻辑时。以下是如何使用泛型委托来重构代码的示例。原创 2024-11-15 14:12:06 · 168 阅读 · 0 评论 -
C#获取特性Attribute值
通过扩展方法获取类或方法上的成员变量(字段、属性)上的特性,获取类或方法上的特性。解释扩展方法:自定义特性:可以应用于类、方法、字段、属性等不同的目标元素。反射:通过反射可以分别获取字段、属性、方法上的、和对象,从而访问它们上的特性。原创 2024-11-15 00:13:39 · 744 阅读 · 0 评论 -
C#判断某天是否是周末或者节假日示例
如果你运行这段代码,它会判断给定日期是否为周末或节假日,并在控制台输出相应的结果。下面是一个完整的 C# 示例,判断某天是否是周末或节假日,并且包含了详细的注释说明。原创 2024-11-13 16:55:33 · 846 阅读 · 0 评论 -
Net 9中LINQ新特性用法示例
NET 9 增强了 LINQ 的功能,特别是在处理异步流、多键分组、性能优化等方面。使用这些新的 LINQ 特性可以提高代码的灵活性和性能,尤其是在需要处理大量数据或异步操作时。如果你有特定的应用场景或想要了解更多关于 LINQ 高级用法的细节,可以进一步探索各个新特性。这些新特性为开发人员提供了更高效、灵活的方式来处理数据流和查询,尤其是当处理异步数据或复杂查询时。原创 2024-11-05 18:59:34 · 324 阅读 · 0 评论 -
Net 9中LINQ新增特性
在 .NET 9 中,LINQ 引入了多个新的特性,特别是与异步流、查询性能和灵活性相关的改进。这些新特性使得在处理大量数据、异步操作和复杂查询时更加高效和易于管理。原创 2024-11-05 18:58:54 · 529 阅读 · 0 评论 -
OvercapacityCompaction在MemoryCache作用和使用示例
的作用是确保在内存限制内运行,通过移除不常用的缓存项来控制内存使用。示例展示了如何在中设置容量限制,并模拟触发压缩机制。原创 2024-10-30 17:24:30 · 456 阅读 · 0 评论 -
如何快速编写和调试 Emit 生成 IL 的代码
通过 Emit,我们能够在运行时动态生成 IL 代码,以解决反射动态调用方法造成的大量性能损失。通过 ReSharper 插件,我们可以实时查看生成的 IL 代码。我们可以将Emit生成的代码输出到程序集文件。通过dotPeek,我们可以查看程序集中类型和方法的IL代码。转载 2024-08-03 23:47:37 · 277 阅读 · 0 评论 -
C# JAVA AES的CBC加密算法
1.不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL、IPSec的标准。2.误差传送:一个明文单元损坏影响多个单元;3.误差传送:一个明文单元损坏影响多个单元;3.可以及时加密传送小于分组的数据;3.可以及时加密传送小于分组的数据;2.对明文的主动攻击是可能的;2.可能对明文进行主动攻击;2.分组密码转化为流模式;2.分组密码转化为流模式;1.不能隐藏明文的模式;3.误差不会被传送;1.不利于并行计算;1.隐藏了明文模式;1.不利于并行计算;1.隐藏了明文模式;1.不利于并行计算;转载 2024-07-14 01:07:33 · 152 阅读 · 0 评论 -
AES加解密 随机向量 密文一次一变 C#与PHP 程序加解密互通
【代码】AES加解密 随机向量 密文一次一变 C#与PHP 程序加解密互通。转载 2024-07-14 00:02:23 · 110 阅读 · 0 评论 -
模拟IL 指令输出等效的C#
这种方式避免了反射的性能开销,并允许更精细地控制生成的IL代码逻辑。生成IL代码,实现了和之前的反射版本功能相同的动态方法。指令表示方法结束,创建委托并调用生成的方法。创建动态方法,并获取其。原创 2024-07-11 22:53:51 · 280 阅读 · 0 评论 -
基于.NET 6的C#程序中处理TCP粘包问题
TCP 粘包问题会导致一系列问题,特别是在网络通信中需要确保消息的完整性和顺序时。原创 2024-06-30 23:40:48 · 804 阅读 · 0 评论 -
.Net Core异步程序项目部署windows和linux 的异步I/O的实现方式
虽然编程模型相同,但在不同的操作系统上,底层的异步 I/O 实现可能有所不同。这是因为 .NET Core 是跨平台的,并且在不同操作系统上使用相同的异步 I/O 模型,即基于任务(Task-based)的异步编程模型。总结来说,在 .NET Core 中,异步 I/O 的编程模型在 Windows 和 Linux 上是一致的。:.NET Core 提供的标准库在不同操作系统上都是可用的,这使得开发者可以编写一次代码,然后在多个平台上运行,而不需要为每个平台单独编写异步 I/O 逻辑。原创 2024-06-05 15:54:01 · 433 阅读 · 0 评论 -
.net core异步io原理
在 .NET Core 中,异步 I/O 是通过async和await关键字以及Task并发模型实现的。通过使用异步方法,应用程序可以在等待 I/O 操作时继续执行其他任务,从而提高性能和响应性。掌握异步 I/O 的原理和实现方法,对于编写高效的 .NET Core 应用程序至关重要。原创 2024-06-05 15:51:50 · 1045 阅读 · 0 评论 -
什么是Livelock?
Livelock 是一种类似于死锁(deadlock)的并发问题。与死锁不同,死锁是线程(或进程)因为互相等待资源而永久阻塞;而 livelock 是线程(或进程)总是做一些无用的操作,但永远无法达到预期的结果。换句话说,在 livelock 中,线程虽然在运行,但实际上并没有推进程序的进展。原创 2024-05-27 21:30:28 · 670 阅读 · 0 评论 -
C#中byte和sbyte的区别
在 C# 中,单个字节用于存储 8 位值。结构用于表示 8 位有符号整数。结构用于表示 8 位无符号整数。都用于字节类型的数据。表示整数,取值范围从。转载 2024-05-17 23:38:42 · 682 阅读 · 0 评论 -
C# Emit技术详解
C# 中的 Emit 技术是一种强大的元编程(metaprogramming)技术,允许您在运行时生成和动态修改 C# 代码。这种技术通常用于创建动态生成的程序集、实现 AOP(面向切面编程)、序列化对象、创建动态代理等场景。它是通过 System.Reflection.Emit 命名空间中的类来实现的。原创 2024-03-31 15:49:59 · 1189 阅读 · 0 评论 -
[C#基础知识] ReadOnly关键字修饰的变量可以修改,只是不能重新分配
对于简单类型(如int),更改是等于重新赋值,因为默认操作符只有=, 但于对于复杂类型,就不一定了。修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中.集合容器类,在其中包括默认的实现,然后允许用户在开发中进行添加或替换。微软示例和开源代码中用的一种开发扩展的方式就是使用静态的。关键字是可以在字段上使用的修饰符。的变量进行修改操作,形成思维定势,这个观念是错误的。修饰的变量在以后是不能修改的,在以后的开发中从不对。首先要明确一点:更改!对于集合类型,增加,移除,清空内容。转载 2024-03-26 23:04:22 · 398 阅读 · 0 评论 -
.NET源码分析之List
来实现的,比如当前集合5个元素,要移除第3个元素,实际结果是将数组的第4个元素到最后一个元素拷贝然后粘贴替换到数组的从第3个元素开始,这样就把第三个元素给替换掉了,然后再把数组的最后一个元素给置为默认。为4,当给集合添加第5个元素时,底层实现数组则是创建一个新数组,新数组的长度是当前数组的2倍,然后将当前数组的数据拷贝到新数组中,最后将第5个新元素加入数组中;2、带集合大小的构造,如果传入的是有效的集合大小,则创建对应大小的数组。的底层是数组,数组在声明的时候是需要有一个固定长度的,指的就是数组的长度,转载 2023-12-14 14:38:16 · 6176 阅读 · 0 评论 -
.net core源码分析 – List<T>
List初始大小是4,自动扩容是以当前数组元素的两倍或目标list的元素个数来扩容(哪个大选哪个)。如果有比较确定的大小可以考虑提前设置,因为每次自动扩容需要重新分配数组和copy元素,性能损耗不小。List通过version来跟踪集合是否发生改变,如果在foreach遍历时发生改变则抛出异常。List并非线程安全,任何使用的时候都要考虑当前环境是否可能有多线程存在,是否需要用锁来保证集合线程安全。转载 2023-11-30 16:51:15 · 1278 阅读 · 0 评论 -
CLRCore(CLR核心机制)
C#和CIL的关系:C#和N#都是CIL实现,但是彼此不能互通:C#和N#公开不分满足规范,我们才能互通CLS就是描述多语言互通的规范。转载 2023-11-07 15:17:03 · 2380 阅读 · 0 评论 -
基于net6 的C# 实现AQS
在 .NET 6 中实现一个简单的AQS(AbstractQueuedSynchronizer)是可能的,尽管它可能会涉及一些底层的线程同步机制。方法,用于获取和释放锁。请注意,这是一个非常简化的示例,实际的AQS更为复杂,并包括更多的功能和线程安全控制。这些工具能更安全和高效地处理线程同步。但上面的示例可以帮助你理解AQS的一些基本概念。在真实的应用中,更复杂的同步器通常需要使用.NET提供的更高级的同步工具,如。这个示例实现了一个非常基本的独占锁,MyAQS 类有。原创 2023-10-25 19:37:44 · 1028 阅读 · 0 评论 -
MassTransit是什么?
MassTransit是一个用于.NET的开源分布式应用程序框架,主要用于构建基于消息、异步和事件驱动模式的系统。它旨在简化依赖于消息模式的应用程序的开发,包括发布-订阅、请求-响应和消息路由等模式。MassTransit提供了工具,用于实现跨多个消息交互跨足的长时间运行过程,称为saga,从而使您可以建模复杂的业务流程。MassTransit是.NET生态系统中构建分布式系统的热门选择之一,因为它抽象了消息基础设施的复杂性,并提供了高级别的、开发人员友好的API。原创 2023-10-01 22:35:36 · 1615 阅读 · 0 评论 -
C#常用容器源码分析
泛型支持多类型,但需要指定类型,不用转换类型,不用装箱/拆箱操作,效率更高,使用范围广。的更新需要加1和数组长度取模,这样做的好处是在出队后再入队的情况下节省空间,不用一直扩容。,当容量小于90%时会换个小的数组(手动调用。根据源码的接口派生关系,可得到UML图。把元素串起来,是链地址法。用一段代码验证一下猜想。,好像不会自动调用),映射的值,当冲突时通过。时容量满了会2倍扩容。转载 2023-09-07 22:31:22 · 273 阅读 · 0 评论 -
C# 执行 Cmd 命令
类,您可以运行 CMD 命令并在应用程序中捕获其输出。当您需要自动执行需要命令行工具或实用程序的任务时,此方法非常有用。方法来等待命令完成。命令的输出被打印到控制台。以在新控制台窗口中运行该命令。属性以捕获命令的输出。以防止显示控制台窗口。通过使用 C# 中的。转载 2023-08-10 20:20:39 · 3928 阅读 · 0 评论 -
C#实现Diff算法
Diff算法是一种比较两个文本文件差异的算法,主要分为两个步骤:生成编辑脚本和应用编辑脚本。以上代码是比较两个字符串的差异,并将结果存储在列表中,以便进一步处理。其中,Diff方法接收两个字符串参数,返回一个字符串列表,表示两个字符串之间的差异。列表中每个字符串都以符号或空格开头,分别表示添加删除和未修改的字符。原创 2023-08-08 23:31:16 · 561 阅读 · 0 评论 -
.NET Core(C#) Emit的使用
反射允许我们在运行时获取对象的相关信息,创建对象的实例,执行方法。Emit是作为反射的一个比较高级的功能。使用Emit,可以从零开始动态的创建程序集及类。提供程序的灵活性。本文主要介绍.NET Core(C#) 中Emit的使用,以及相关的示例代码。转载 2023-08-08 19:38:00 · 596 阅读 · 0 评论 -
System.Data.DbType与各类数据库的数据类型的映射关系
【代码】System.Data.DbType与各类数据库的数据类型的映射关系。转载 2023-08-08 17:41:37 · 538 阅读 · 0 评论 -
C# 使用Emit深克隆
第一步是命名,因为需要把一个类的所有属性复制到另一个类,需要调用方法,而方法需要名字,所以第一步就是命名。需要获得类型的所有属性,虽然这里用了反射,但是只是用一次,因为这里用反射获得方法是在写IL代码,写完可以很多次使用,可能第一次的速度不快,但是之后的速度和自己写代码编译的速度是差不多,所以建议使用这个方法。这时无法使用之外,对于静态属性,使用上面代码也是会出错,因为静态的属性的访问没有权限,所以请看修改后的。方法,这个方法的速度很快,使用的时候需要知道 IL的,如果不知道,没关系,我接下来会仔细说。转载 2023-08-07 15:33:07 · 316 阅读 · 0 评论 -
源码上看 .NET 中 StringBuilder 拼接字符串的实现
总的来说,采用定长的字符数组来保存不定长的字符串,不可能完全避免所添加的数据超出剩余空间这样的情况,重新开辟新空间并复制原始数据过于耗时。采用链表的形式取消了数据的复制操作,提高了字符串连接的效率。对于来说,大部分的操作都在尾部添加,采用逆向链表是一个不错的形式。当然这个类本身有很多复杂的实现,本篇只是介绍了Append方法是如何进行字符串拼接的。转载 2023-08-07 14:11:39 · 859 阅读 · 0 评论 -
.Net Core基于Emit动态代理从零实现RPC 初级实现
从完整性上来讲,此项目已经非常完整了。可以根据这项目开发基于自己的RPC项目了。从 DefaultInvocationHandler 来进行实现。转载 2023-08-07 14:03:17 · 391 阅读 · 0 评论 -
C#中Emit实现ORM原理
首先,需要定义一个数据模型,这里使用一个简单的Studentget;set;get;set;get;set;} }然后,需要定义一个数据库表结构,用于将数据模型映射到数据库中。原创 2023-07-24 22:40:05 · 671 阅读 · 0 评论 -
说说线程池的工作原理
线程池是一种线程管理的技术,它通过预先创建一定数量的线程,然后在需要执行任务时从线程池中获取空闲的线程,将任务分配给它们来执行,从而避免了线程的频繁创建和销毁,提高了线程的复用性和性能。总之,线程池可以有效地管理线程的数量,避免了线程频繁创建和销毁的开销,提高了线程的利用率和执行效率。原创 2023-06-19 23:24:30 · 1337 阅读 · 0 评论 -
说说NetCore线程池的详细原理
总之,.NET Core 线程池的设计目标是为了在多个并发任务之间高效地分配线程,从而提高应用程序的性能和可扩展性。通过使用工作项队列、线程状态、工作项类型和 IO 完成端口等机制,.NET Core 线程池可以更加智能地管理和调度线程,从而提高应用程序的性能和可扩展性。使用 IO 完成端口:.NET Core 线程池提供了 IO 完成端口的支持,它可以用于处理 I/O 操作。在 .NET Core 中,线程池是一个重要的组件,它通过使用线程池中的工作线程来处理应用程序中的多个并发任务。原创 2023-06-19 23:10:15 · 999 阅读 · 0 评论 -
C#中的类型和SQL Server中的类型对应关系
【代码】C#中的类型和SQL Server中的类型对应关系。转载 2023-06-06 16:02:51 · 419 阅读 · 0 评论 -
进程池原理
进程池(Process Pool)是一种常见的多进程编程技术,用于提高并发处理能力和资源利用率。它的基本原理是创建一组可重用的进程,这些进程可以接收任务,执行任务,然后返回执行结果。进程池通常会限制进程的数量,以避免资源过度消耗和系统负载过重。上面的代码中,首先定义了一个worker函数,它表示需要执行的任务,并返回任务的执行结果。然后,创建了一个包含 4 个进程的进程池,通过map方法将任务分发给进程池中的进程执行,并收集执行结果。因此,在使用进程池时需要根据具体的应用场景进行权衡和选择。原创 2023-06-06 15:56:56 · 359 阅读 · 0 评论