- 博客(194)
- 资源 (9)
- 收藏
- 关注
原创 离线安装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
1147
原创 如何让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
220
原创 c# 操作mysql的帮助类
包含了一些用于执行 MySQL 数据库操作的方法。这些方法包括执行存储过程、插入、更新、删除操作以及执行数据库事务查询操作等。,并且在执行数据库操作后进行了相应的资源释放,以确保数据库连接得到正确关闭。这些方法使用了异步编程模型。
2024-07-01 13:26:06
757
原创 FluentFTP库实现FTP文件操作的类
使用FluentFTP库实现FTP文件操作的类,包括删除文件、判断文件是否存在、读取文件、保存文件等操作。类中的方法都是异步的,使用了await和async关键字.
2024-05-20 09:05:23
436
原创 c# 实现每个整数分钟执行一次的定时任务
模拟异步操作的等待时间。最后,我们重新计算下一个整数分钟的时间,并使用。类的回调方法是在另一个线程上执行的,因此在操作期间需要注意线程安全。方法中,计算了下一个整数分钟的时间,然后使用。类创建定时器,并将首次触发时间设为该时间。定义异步方法,以避免出现无法捕获的异常。方法中,我们定义了要执行的操作,然后使用。方法是异步方法,但是我们使用的是。在实际应用中,应该使用。方法设置定时器的下一次触发时间。
2024-05-14 15:47:07
493
原创 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
1219
原创 JsonSerializerSettings 转小写 指定层级
在.NET Core中,如果你想要在序列化JSON时将特定层级的属性名转换为小写,你可以使用。
2024-04-22 17:39:33
348
原创 获取分时计算的小时数据
查询某个时间段,在一群时间区间的小时数据,(2024-03-01 00:00:00 ,2024-05-31 01:00:00)表示每天的0点到1点。
2024-03-19 08:40:10
257
原创 .NET Core 3 foreach中取索引index
它适用于所有集合类型,包括不可索引的集合类型(如 ,并且不需要通过索引访问当前元素)。和foreach 循环是 C# 开发人员工具箱中最有用的构造之一。但有时,确实需要当前项的索引;在我看来,迭代一个集合比大多数情况下更方便。
2024-02-06 11:31:20
1163
原创 动态表达式树(Expression Tree)来实现动态筛选
通过这些表达式的组合,我们构建了一个Lambda表达式,它表示了一个条件,要求属性的值等于1。创建了一个表示属性访问的表达式,将参数表达式和属性名传递给它。创建了一个表示等式比较的表达式,将属性访问表达式和常量值表达式传递给它。创建了一个表示Lambda表达式中参数的参数表达式。创建了一个表示常量值的表达式,将属性值1传递给它。将这个Lambda表达式编译为一个委托,可以用于筛选列表。列表进行筛选,将符合条件的元素保留下来。列表中的元素,并将满足条件的元素存储在。根据给定的属性名和属性值来筛选。
2024-01-16 14:33:31
480
原创 针对net core 使用CSRedis 操作redis的三种连接实例方式
【代码】针对net core 使用CSRedis 操作redis的三种连接实例方式。
2023-11-29 14:45:00
887
原创 AsyncHelper的辅助类同步调用异步方法
这是一个静态帮助类,提供了几个实用的方法来处理异步任务。方法用于以同步方式运行异步任务。它通过检查返回类型是否为。在后台线程上运行该委托。来等待任务完成并获取返回结果。
2023-10-25 14:08:16
335
原创 windos任务计划定时重启windows服务
请注意,确保输入的文件路径和名称是正确的,并且具有足够的权限执行。如果问题仍然存在,请检查文件是否存在,并确保输入的路径是正确的。如果在任务计划程序中执行任务时提示系统找不到自定义文件,可能是由于路径或文件名输入不正确所致。在“起始于”字段中,指定您希望命令执行的工作目录,如果没有特定要求,可以留空。在“起始于”字段中,指定命令或脚本的工作目录,如果不需要可以留空。),请确保在参数字段中正确指定解释器和脚本文件的路径。在“触发器”选项卡中,设置适当的触发条件。在“触发器”选项卡中,设置适当的触发条件。
2023-09-15 10:23:29
1177
原创 递归应用判断是否循环引用
这样可以避免在循环引用的情况下出现无限递归的情况,并及时处理循环引用的问题。,则表示在查询过程中出现了循环引用,会记录错误日志,并返回一个空的。来判断是否出现循环引用。
2023-08-31 17:49:37
544
原创 清空或者删除 Docker 容器的日志文件
请注意,这些命令需要在 Docker 主机上执行,并且需要有相应的权限才能访问容器的日志文件。确保你有足够的权限来执行这些命令,或者在以管理员身份运行命令。此外,还要注意这些命令可能会清空所有容器的日志文件,包括正在运行的和已经停止的容器。如果只想清空特定容器的日志文件,可以根据需要修改命令。删除容器中netcore控制台存储到docker日志记录。
2023-08-29 11:26:31
6105
3
原创 Modbus TCP通信报文解析
对于写入多个保持寄存器的方法,注释也是正确的,使用时需要传入从站地址、起始地址和要写入的 ushort 数组,表示每个寄存器的值。对于读取保持寄存器的方法,注释是正确的,使用时需要传入从站地址、起始地址和寄存器数量,最后会返回一个 ushort 数组,其中每个元素表示一个寄存器的值。对于读取线圈状态的方法,注释是正确的,使用时需要传入从站地址、起始地址和线圈数量,最后会返回一个 bool 数组,其中每个元素表示一个线圈的状态。代码中包含了详细的注释说明,可以清晰地了解每个方法的功能和使用方式。
2023-07-26 14:09:43
2053
原创 基于WebSocket实现的后台服务
服务启动后会创建一个HttpListener对象,用于监听客户端的WebSocket连接请求。当客户端连接成功后,服务会为每个连接创建一个Task实例,用于接收客户端发送的心跳消息,并根据心跳消息更新心跳时间戳。服务还会定期向客户端发送心跳消息,以保持连接的活跃状态。如果服务在一定时间内没有收到客户端发送的心跳消息,就会认为客户端已经掉线,服务会关闭连接并从连接列表中移除该客户端。基于WebSocket实现的后台服务,用于接收客户端的心跳消息,并根据心跳消息来维护客户端连接。
2023-07-24 11:27:55
863
原创 基于Socket实现的后台服务
具体实现中,服务启动后会创建一个Socket监听器,等待客户端的连接请求。当客户端连接成功后,服务会为每个连接创建一个Task实例,用于接收客户端发送的心跳消息,并根据心跳消息更新心跳时间戳。服务还会为每个连接启动一个独立的Task实例,用于定时向客户端发送心跳消息,以保持连接的活跃状态。如果服务在一定时间内没有收到客户端发送的心跳消息,就会认为客户端已经掉线,服务会关闭连接并从连接列表中移除该客户端。基于Socket实现的后台服务,用于接收客户端的心跳消息,并根据心跳消息来维护客户端连接。
2023-07-24 11:25:41
219
原创 闭包意义与使用
闭包是一个编程概念,指的是一个函数可以访问其定义时所在的词法作用域中的变量,即使该函数在其定义时已经离开了该作用域。这意味着,如果一个函数引用了一个外部变量,那么该变量会被自动捕获到闭包中,并在函数执行时可以访问到。总之,闭包是一个非常有用的编程概念,可以方便地实现许多功能,包括延迟执行、事件监听器等。,它接受一个延迟时间作为参数,返回一个函数对象,该函数对象会在指定的延迟时间后输出一条消息到控制台上。由于这些函数对象使用了闭包,因此它们在执行时可以访问到延迟时间的值,实现了延迟执行的功能。
2023-07-12 13:47:58
139
原创 IHostedService 定义一个长时间运行的服务
IHostedService 是一个 .NET Core 接口,用于定义一个长时间运行的服务,可以在 ASP.NET Core 应用程序中使用。使用 IHostedService 接口的好处是可以很容易地将后台任务集成到 ASP.NET Core 应用程序中,同时也可以很容易地控制后台任务的启动和停止。在循环中使用 Task.Delay 方法来等待一定时间间隔,并检查 CancellationTokenSource 是否已被取消。后台处理任务:使用 Task.Run 在后台线程中执行长时间运行的代码。
2023-07-11 16:35:21
718
原创 Kestrel 的相对最优配置
应该根据实际的并发访问量和服务器硬件配置调整请求队列的长度。在上述配置中,使用了本地 IP 的 80 端口进行监听,设置线程池的最小和最大线程数为 50 和 200,将请求队列的最大长度都设置为 10000,将请求和响应的最小数据传输速率都设置为每秒 100 字节,并且将 KeepAlive 超时时间设置为 5 分钟。需要注意的是,上述配置只是一个示例,具体的应用程序和服务器硬件配置可能会有所不同,因此需要根据实际情况进行调整。在调整配置时,应该注意平衡性能和稳定性,避免过度配置导致的资源浪费和系统崩溃。
2023-07-04 12:07:09
874
转载 c#中字节数组byte[]、图片image、流stream,字符串string、内存流MemoryStream、文件file,之间的转换
字节数组byte[]与内存流MemoryStream之间的转换。字节数组byte[]与字符串string之间的编码解码。字节数组byte[]与图片image之间的转化。字节数组byte[]与流stream之间的转换。流Stream 和 文件file之间的转换。将 Stream 转成 byte[]将 byte[] 转成 Stream。将 Stream 写入文件。字节数组转化为输入内存流。输出内存流转化为字节数组。从文件读取 Stream。字符串到字节数组的编码。字节数组到字符串的解码。
2023-06-15 18:49:57
1859
转载 Autofac+Castle 实现 AOP事务
最近公司新项目,需要搭架构进行开发,其中需要保证事务的一致性,经过一番查找,发现很多博文都是通过Spring.Net、Unity、PostSharp、Castle Windsor这些方式实现AOP的。博主对Autofac进行了封装,可能与你们的配置不一样,但是,Load(ContainerBuilder builder)该方法内容是一致的,因此注入方式一致的。//故意重复,判断是否会回滚。定义属性,通过当前方法是否包含该属性进行判断开启事务,如果存在该属性则开启事务,否则忽略事务。//设置事务隔离级别。
2023-06-08 09:26:40
400
原创 公式递归引用,最终计算出每个公式的值
Formula类表示一个公式,包含公式的名称、表达式、值以及依赖项列表。Calculate方法用于计算公式的值,它会递归计算所有依赖项的值,并在所有依赖项的值都已计算完成后,计算当前公式的值。在计算公式值的过程中,如果某个公式的值已经计算过,则直接返回该值,以避免无限递归。
2023-05-20 09:48:24
89
原创 Docker 容器内部文件和容器外部文件互相copy
有时需要将 Linux 服务器上的文件copy到容器的某个目录(比如:配置文件),有时将容器中的某个文件(比如:日志文件)copy到Linux服务器上,便于查看。1、容器外部文件 copy 到容器内部。2、容器内部文件 copy 到容器外部。
2023-04-25 14:08:54
1121
原创 c# 调用c++ 动态链接库
对于DLL导出函数声明的四种写法,在动态调用时, 声明成第一种方式是最好的。但是,C/C++缺省的调用约定为__cdecl约定,如果想别的语言能用DLL的话,最好是将调用约定写成__stdcall方式(不能动态调用),然后静态(隐式)调用。1)强制用C语言方式进行修饰,且用C的默认调用约定,即__cdecl方式。这种方式编译产生的DLL中有一个导出函数:_add@0,即前面有“_”,后面加了参数长。在隐式调用时,四种声明方式都是可以的,只要调用者的声明方式和DLL声明时的方式一致即可。
2023-04-20 09:12:20
846
原创 NetCore拦截响应内容并进行内容修改
其主要功能是拦截响应内容并进行内容替换。对于替换内容的逻辑,您将整个响应内容读取到一个内存流中,然后进行内容替换操作,最后再将替换后的内容写回到原始响应流中。对返回值进行二次处理,比如中文替换成英文,或者对特色的字符二次处理。
2023-03-28 19:53:36
444
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人