项目背景: 我们系统涉及多个站点,最初文件写入本地磁盘,后来使用文件服务器,但是有部分客户认为smb的高位端口445 135-139开放 共享文件的方式不足够安全。 由于文件写入的入口较多,考虑使用文件同步工具进行两台机器进行文件同步比如(微力同步) 1、原始SMB 共享文件夹方式 因为使用的c# ...
设计三个程序,三个程序申请一块共享内存,并分别映射到各自进程的地址空间,进程A和进程B对共享内存段中的数据进行修改,然后进程B不断输出共享内存段中的数据,实现进程间的互斥,避免竞争。 /********************************************************* ...
/******************************************************************************* * * 设计两个程序,A执行死循环,B程序给发送一个结束信号给程序A,当程序A接收到信号之后则执行相应的任务。 * author:jind ...
/******************************************************************************** * * 在主程序中创建一个子程序,并在父进程中获取系统时间,并写入管道,子程序从管道中读取数据 * author:jindouliu20 ...
引言 最近看一些代码的时候,发现有人用 System.Collections.Concurrent 下的 BlockingCollection 很便利的实现了生产者 - 消费者模式,这是之前没有注意到的,之前只关注过 ConcurrentQueue<T> 、ConcurrentStack<T> 或 ...
一:背景 1. 讲故事 如何跟踪.NET程序的mmap泄露,这个问题困扰了我差不多一年的时间,即使在官方的github库中也找不到切实可行的方案,更多海外大佬只是推荐valgrind这款工具,但这款工具底层原理是利用模拟器,它的地址都是虚拟出来的,你无法对valgrind 监控的程序抓dump,并且 ...
在现代 Web 应用中,实时通信变得越来越重要。无论是聊天应用、在线游戏、股票行情推送还是协作编辑工具,都需要服务器能够主动向客户端推送数据。在 .NET 生态系统中,WebSocket 和 SignalR 是实现这一功能的两个主要方案。 本文将对这两种技术进行比较,分析它们的异同点和使用场景,并提 ...
1. 我有一个netframework4.8的类库项目,里面提供了一个自定义控件,然后我按照以下方法为控件提供了默认样式 a) 添加Themes\Generic.xaml文件,文件中提供自定义控件的默认样式 <Style TargetType="MyControl"> <Setter Propert ...
概述 XiHan.Framework.Utils 是一个功能丰富的 .NET 工具库,涵盖了开发中常用的字符串处理、集合扩展、加密解密、分布式ID、文件IO、反射、缓存、线程、系统工具、国际化、网络、硬件信息、异常、数据过滤、Linq扩展等模块。 本库以高内聚、低耦合为设计理念,适用于各类 .NET ...
WPF下拉列表懒加载的控件未找到现成可用的组件,于是自己封装了一个懒加载和支持模糊过滤的下拉列表控件,控件使用了虚拟化加载,解决了大数据量时的渲染数据卡顿问题。 ...
以下是一个基于 Entity Framework Extensions 的 BulkDelete 高效删除海量数据的方案,包含性能优化、稳定性保障和错误处理机制: csharp using System; using System.Linq; using Z.EntityFramework.Plus ...
进程间通信指的是进程之间的信息交换,进程间通信的方式有很多,比如管道通信、信号通信、共享内存、消息队列、信号量组、POSIX信号量等。 进程间通信可以达到数据传输、共享资源、控制进程等目的,方便用户对进程进行控制和管理。 管道通信 管道通信采用的是半双工的通信方式,其中管道在Linux系统下也是文件 ...
项目搭建了一个基础的框架,实现缓存的AOP拦截,首次查询从数据库获取,再写入缓存,设置过期时间,再次查询数据时从缓存获取。 话不多说我们来上代码实现: 1.定义缓存的接口和实现类 定义缓存接口ICachingProvider和实现类MemoryCaching: /// <summary> /// 简 ...
1. 问题 环境是dotnet8及以前的版本,dotnet9+不知道是否还有这个问题(我猜是一样的)。 如下代码,在多播委托await异步执行时,不会等待委托方法执行完成,它们在新的线程中运行。 async Task A() { } async Task B() { } Func<Task> fun ...
在实际应用中,经常需要用到数据的导入与导出,而在这些导入导出功能中,最常用的就是Excel格式,它能非常方便的实现格式化数据呈现。目前主流框架大多需要将数据全载入到内存方便操作,但如果数据量过大,这可能会导致内存消耗问题,今天介绍的MiniExcel 尝试以 Stream 角度写底层算法逻辑,能让原... ...
项目背景 甲方本地化上线了我们系统之后,进行安全漏洞扫描 发现了一个问题: 我们的附件路径 直接通过站点 访问的 ,在未授权的模式下,可以直接随意替换路径里的文件内容,通过浏览器拼接链接的方式打开系统里的一些附件和图片内容 因为系统内部 站点 呈现附件 也都是通过这个方式拼接呈现的。 快速调整方案一 ...
C#中委托、事件的好处,只需在某个类中提前定义好公开的委托或事件(委托的特殊表现形式)变量,然后在其它类中就可以很随意的订阅该委托或事件,当委托或事件被触发执行时,会自动通知所有的订阅者进行消费处理。(观察者模式用委托来实现是最好不过了,DDD所提倡的事件驱动其根本理念也是如此),当然我这里想到的是 ...
一、过滤器简介 ASP.NET Core中的过滤器是一种组件,它可以在请求处理管道中的特定阶段运行代码。过滤器有多种类型,包括授权过滤器、资源过滤器、动作过滤器、异常过滤器和结果过滤器。本文中使用的是动作过滤器(Action Filter),它在动作方法执行前后执行,可以用来记录请求和响应信息。 二 ...
mkdir函数 此函数用于创建一个目录 //头文件 #include <sys/stat.h> #include <sys/types.h> int mkdir(const char *pathname,mode_t mode); //pathname:目录的路径 //mode:目录的权限 //re ...
将一个字符串转换成整型数,方便后序的处理 atoi函数 此函数可以将一个字符串转换成整型 //头文件 #include <stdlib.h> //函数原型 int atoi(const char *nptr); //nptr:待转换的字符串的地址 //ret:转换后的整型数 //注意:转换的字符串里 ...