- 博客(205)
- 资源 (9)
- 收藏
- 关注
原创 net中Serilog 使用json配置输出日志
本文介绍了Serilog日志系统的配置和使用方法。配置部分指定了三种日志输出方式:控制台(Console)、文件(File)和Elasticsearch,其中文件日志按天滚动并设置大小限制,Elasticsearch配置了节点地址和认证信息。日志级别默认设为Information,并对特定命名空间进行了级别调整。程序代码展示了如何在ASP.NET Core应用中集成Serilog,包括配置读取、日志初始化、应用启动和异常处理,确保在应用终止时正确关闭日志系统。整个配置注重日志格式标准化、多目标输出和异常处理
2025-06-10 17:03:00
314
原创 用于管理共享内存的 C# 类(Windows 和 Linux)
Class_ShareMem 类是一个良好的基础实现,能够在 Windows 和 Linux 上处理共享内存
2025-05-20 14:14:07
394
原创 用于判断主子关系的方法的实现(orm是efcore)
HasParentChildRelationship 方法用于判断给定实体集合中是否存在主子关系,通过检查实体的导航属性来实现。CheckForDependencies 方法则是一个辅助方法,负责具体的依赖关系检查,包括对已访问实体的跟踪,以避免循环引用。具体实现中,代码根据当前实体的导航属性类型(集合或单个引用)来获取该属性的当前值。如果导航属性是集合类型,使用 dbContext.Entry(entity).Collection(navigation.Name).CurrentValue 获取集合的当前
2025-05-19 16:42:54
136
原创 判断数据的所有属性是否都是基本类型
OnlyPrimitiveTypes 方法用于检查一个对象及其所有属性是否仅包含基本类型。该方法首先检查对象是否为 null,如果是则返回 true。接着检查对象类型是否为基本类型,若是则返回 true。如果对象是集合类型,则直接返回 false。对于非基本类型的对象,方法会遍历其所有公共属性,并递归调用 OnlyPrimitiveTypes 方法检查每个属性值。如果任何属性值不符合基本类型条件,则返回 false;否则返回 true。IsPrimitiveType 方法用于判断指定类型是否为基本类型,包括
2025-05-15 17:32:27
468
原创 封装 RabbitMQ 消息代理交互的功能
该代码封装了与RabbitMQ消息代理的交互功能,包括消息的发送与接收、连接和通道的管理。主要依赖的组件包括Microsoft.Extensions.Configuration、RabbitMQ.Client和Newtonsoft.Json等。RabbitConfigModel类用于存储RabbitMQ的连接配置,如IP、端口、用户名等。连接管理通过静态字段_connection实现,提供了GetConnection方法来建立或获取连接。消息接收通过Receive<T>方法异步处理,使用Even
2025-05-10 14:58:36
1147
原创 MultipleActiveResultSets 多个活动结果集
(MARS,多个活动结果集)是 SQL Server 中的一个功能,它允许在单个数据库连接上同时执行多个批处理。这意味着你可以在一个连接上同时打开多个,从而实现多个活动的结果集。
2025-04-27 13:45:52
221
原创 c#事件案例与分析
当事件被触发时,OnDataReceived 方法会被调用,并接收事件的发出者(sender)和事件数据(DataReceivedEventArgs)作为参数。这意味着,当 DataReceived 事件被触发时,所有订阅了该事件的方法(包括 subscriber1.OnDataReceived)都会被调用。当 DataReceived 事件被触发时,所有注册的处理程序(包括 subscriber1.OnDataReceived)会被依次调用,处理相关的事件数据。
2025-03-08 18:02:23
946
原创 离线安装docker、docker-compose
一、Docker 离线安装1. 下载 Docker下载 Docker 的最新版本 docker-20.10.9.tgz 到本地。2. 安装 Docker# 解压下载的 Docker 压缩包# 复制 Docker 目录到 /usr/bin,使 Docker 命令可执行# 清理解压后的文件3. 配置 Docker 服务# 创建 Docker 服务配置文件# 在文件中添加以下内容:[Unit][Service][Install]
2024-08-26 13:03:01
1203
原创 如何让asp.net core mvc发布时候不编译cshtml视图
Core MVC项目在发布的时候默认会把cshtml文件编译到dll中,但是有的项目希望能在运行时修改cshtml视图文件。网上有文章讲到过在csproj文件中添加false等方式来修改这个默认的行为,但是那些做法都是旧版.net core的做法,在.net 5/6等新版本中不起作用。下面的方法是我验证过的在最新版的.net core中有效的不编译cshtml视图的做法。
2024-08-05 16:35:23
252
原创 c# 操作mysql的帮助类
包含了一些用于执行 MySQL 数据库操作的方法。这些方法包括执行存储过程、插入、更新、删除操作以及执行数据库事务查询操作等。,并且在执行数据库操作后进行了相应的资源释放,以确保数据库连接得到正确关闭。这些方法使用了异步编程模型。
2024-07-01 13:26:06
1146
原创 FluentFTP库实现FTP文件操作的类
使用FluentFTP库实现FTP文件操作的类,包括删除文件、判断文件是否存在、读取文件、保存文件等操作。类中的方法都是异步的,使用了await和async关键字.
2024-05-20 09:05:23
535
原创 c# 实现每个整数分钟执行一次的定时任务
模拟异步操作的等待时间。最后,我们重新计算下一个整数分钟的时间,并使用。类的回调方法是在另一个线程上执行的,因此在操作期间需要注意线程安全。方法中,计算了下一个整数分钟的时间,然后使用。类创建定时器,并将首次触发时间设为该时间。定义异步方法,以避免出现无法捕获的异常。方法中,我们定义了要执行的操作,然后使用。方法是异步方法,但是我们使用的是。在实际应用中,应该使用。方法设置定时器的下一次触发时间。
2024-05-14 15:47:07
609
原创 c# mysql、sqlserver、Oracle、pg批量插入
MySql社区驱动MySqlConnector提供的批量插入方式是SqlBulkCopy,基于MySql自身的文件上传机制进行批量插入,参数为一个dataTable对象,原生的批量插入代码如下,计时方式与SqlServer相同,同时,MySql的连接字符串里要添加";Database=;Password=;AllowLoadLocalInfile=true",同时在MySql数据库上执行"set global local_infile=1"开启批量上传。1、c#对多种数据库批量插入封装,方便调用;
2024-04-28 17:27:20
1348
原创 JsonSerializerSettings 转小写 指定层级
在.NET Core中,如果你想要在序列化JSON时将特定层级的属性名转换为小写,你可以使用。
2024-04-22 17:39:33
399
原创 获取分时计算的小时数据
查询某个时间段,在一群时间区间的小时数据,(2024-03-01 00:00:00 ,2024-05-31 01:00:00)表示每天的0点到1点。
2024-03-19 08:40:10
289
原创 .NET Core 3 foreach中取索引index
它适用于所有集合类型,包括不可索引的集合类型(如 ,并且不需要通过索引访问当前元素)。和foreach 循环是 C# 开发人员工具箱中最有用的构造之一。但有时,确实需要当前项的索引;在我看来,迭代一个集合比大多数情况下更方便。
2024-02-06 11:31:20
1188
原创 动态表达式树(Expression Tree)来实现动态筛选
通过这些表达式的组合,我们构建了一个Lambda表达式,它表示了一个条件,要求属性的值等于1。创建了一个表示属性访问的表达式,将参数表达式和属性名传递给它。创建了一个表示等式比较的表达式,将属性访问表达式和常量值表达式传递给它。创建了一个表示Lambda表达式中参数的参数表达式。创建了一个表示常量值的表达式,将属性值1传递给它。将这个Lambda表达式编译为一个委托,可以用于筛选列表。列表进行筛选,将符合条件的元素保留下来。列表中的元素,并将满足条件的元素存储在。根据给定的属性名和属性值来筛选。
2024-01-16 14:33:31
506
原创 针对net core 使用CSRedis 操作redis的三种连接实例方式
【代码】针对net core 使用CSRedis 操作redis的三种连接实例方式。
2023-11-29 14:45:00
973
原创 AsyncHelper的辅助类同步调用异步方法
这是一个静态帮助类,提供了几个实用的方法来处理异步任务。方法用于以同步方式运行异步任务。它通过检查返回类型是否为。在后台线程上运行该委托。来等待任务完成并获取返回结果。
2023-10-25 14:08:16
367
原创 windos任务计划定时重启windows服务
请注意,确保输入的文件路径和名称是正确的,并且具有足够的权限执行。如果问题仍然存在,请检查文件是否存在,并确保输入的路径是正确的。如果在任务计划程序中执行任务时提示系统找不到自定义文件,可能是由于路径或文件名输入不正确所致。在“起始于”字段中,指定您希望命令执行的工作目录,如果没有特定要求,可以留空。在“起始于”字段中,指定命令或脚本的工作目录,如果不需要可以留空。),请确保在参数字段中正确指定解释器和脚本文件的路径。在“触发器”选项卡中,设置适当的触发条件。在“触发器”选项卡中,设置适当的触发条件。
2023-09-15 10:23:29
1313
原创 递归应用判断是否循环引用
这样可以避免在循环引用的情况下出现无限递归的情况,并及时处理循环引用的问题。,则表示在查询过程中出现了循环引用,会记录错误日志,并返回一个空的。来判断是否出现循环引用。
2023-08-31 17:49:37
589
原创 清空或者删除 Docker 容器的日志文件
请注意,这些命令需要在 Docker 主机上执行,并且需要有相应的权限才能访问容器的日志文件。确保你有足够的权限来执行这些命令,或者在以管理员身份运行命令。此外,还要注意这些命令可能会清空所有容器的日志文件,包括正在运行的和已经停止的容器。如果只想清空特定容器的日志文件,可以根据需要修改命令。删除容器中netcore控制台存储到docker日志记录。
2023-08-29 11:26:31
6825
3
原创 Modbus TCP通信报文解析
对于写入多个保持寄存器的方法,注释也是正确的,使用时需要传入从站地址、起始地址和要写入的 ushort 数组,表示每个寄存器的值。对于读取保持寄存器的方法,注释是正确的,使用时需要传入从站地址、起始地址和寄存器数量,最后会返回一个 ushort 数组,其中每个元素表示一个寄存器的值。对于读取线圈状态的方法,注释是正确的,使用时需要传入从站地址、起始地址和线圈数量,最后会返回一个 bool 数组,其中每个元素表示一个线圈的状态。代码中包含了详细的注释说明,可以清晰地了解每个方法的功能和使用方式。
2023-07-26 14:09:43
2155
原创 基于WebSocket实现的后台服务
服务启动后会创建一个HttpListener对象,用于监听客户端的WebSocket连接请求。当客户端连接成功后,服务会为每个连接创建一个Task实例,用于接收客户端发送的心跳消息,并根据心跳消息更新心跳时间戳。服务还会定期向客户端发送心跳消息,以保持连接的活跃状态。如果服务在一定时间内没有收到客户端发送的心跳消息,就会认为客户端已经掉线,服务会关闭连接并从连接列表中移除该客户端。基于WebSocket实现的后台服务,用于接收客户端的心跳消息,并根据心跳消息来维护客户端连接。
2023-07-24 11:27:55
898
原创 基于Socket实现的后台服务
具体实现中,服务启动后会创建一个Socket监听器,等待客户端的连接请求。当客户端连接成功后,服务会为每个连接创建一个Task实例,用于接收客户端发送的心跳消息,并根据心跳消息更新心跳时间戳。服务还会为每个连接启动一个独立的Task实例,用于定时向客户端发送心跳消息,以保持连接的活跃状态。如果服务在一定时间内没有收到客户端发送的心跳消息,就会认为客户端已经掉线,服务会关闭连接并从连接列表中移除该客户端。基于Socket实现的后台服务,用于接收客户端的心跳消息,并根据心跳消息来维护客户端连接。
2023-07-24 11:25:41
242
原创 闭包意义与使用
闭包是一个编程概念,指的是一个函数可以访问其定义时所在的词法作用域中的变量,即使该函数在其定义时已经离开了该作用域。这意味着,如果一个函数引用了一个外部变量,那么该变量会被自动捕获到闭包中,并在函数执行时可以访问到。总之,闭包是一个非常有用的编程概念,可以方便地实现许多功能,包括延迟执行、事件监听器等。,它接受一个延迟时间作为参数,返回一个函数对象,该函数对象会在指定的延迟时间后输出一条消息到控制台上。由于这些函数对象使用了闭包,因此它们在执行时可以访问到延迟时间的值,实现了延迟执行的功能。
2023-07-12 13:47:58
154
原创 IHostedService 定义一个长时间运行的服务
IHostedService 是一个 .NET Core 接口,用于定义一个长时间运行的服务,可以在 ASP.NET Core 应用程序中使用。使用 IHostedService 接口的好处是可以很容易地将后台任务集成到 ASP.NET Core 应用程序中,同时也可以很容易地控制后台任务的启动和停止。在循环中使用 Task.Delay 方法来等待一定时间间隔,并检查 CancellationTokenSource 是否已被取消。后台处理任务:使用 Task.Run 在后台线程中执行长时间运行的代码。
2023-07-11 16:35:21
782
原创 Kestrel 的相对最优配置
应该根据实际的并发访问量和服务器硬件配置调整请求队列的长度。在上述配置中,使用了本地 IP 的 80 端口进行监听,设置线程池的最小和最大线程数为 50 和 200,将请求队列的最大长度都设置为 10000,将请求和响应的最小数据传输速率都设置为每秒 100 字节,并且将 KeepAlive 超时时间设置为 5 分钟。需要注意的是,上述配置只是一个示例,具体的应用程序和服务器硬件配置可能会有所不同,因此需要根据实际情况进行调整。在调整配置时,应该注意平衡性能和稳定性,避免过度配置导致的资源浪费和系统崩溃。
2023-07-04 12:07:09
989
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人