.Net 中实体类转换为XML字符串, 确保字符串头部是utf-8 不是utf-16
2024/5/27 11:40:13

使用Utf8StringWriter或类似的方法来确保在序列化过程中使用正确的编码。然而,Utf8StringWriter不是. Ce或. Stard库的一部分,因此你需要自己实现一个。 不过,有一种更简单的方法可以达到相同的效果,那就是使用StringWriter与Encoding.GetEncoding("utf8")结合,但这实际上并不正确,因为StringWriter总是使用UTF16。正确的方法是使用MemyStream与XmlWriter,这样你就可以指定XmlWriter的编码设置。 以下是

C# 线程本地存储 为什么线程间值不一样
2024/5/27 11:40:13

一:背景 1. 讲故事 有朋友在微信里面问我,为什么用 ThreadStatic 标记的字段,只有第一个线程拿到了初始值,其他线程都是默认值,让我能不能帮他解答一下,尼玛,我也不是神仙什么都懂,既然问了,那我试着帮他解答一下,也给后面类似疑问的朋友解个惑吧。 二:为什么值不一样 1. 问题复现 为了方便讲述,定义一个 ThreadStatic 的变量,然后用多个线程去访问,参考代码如下:internal class Program {[ThreadStatic]public static int num

【mq】RabbitMq批量删除队列
2024/5/27 11:40:12

RabbitMq批量删除队列 ​ 由于部分公司同事使用RabbitMq时,没有将Client设置为auto,导致大量冗余队列。其中这些队列又是无routekey队列,收到了批量的订阅消息,占用服务器内存。 ​ 如何将这些无用的队列删除成为一个问题?经过多次摸索,在rabbitmq management api里面找到了方案: using System..Http.Headers using System.Text using Newtonsoft.Jsonclass Program {static asy

【OpenVINO】基于 OpenVINO C# API 部署 RT-DETR 模型
2024/5/27 11:40:11

RTDETR是在DETR模型基础上进行改进的,一种基于 DETR 架构的实时端到端检测器,它通过使用一系列新的技术和算法,实现了更高效的训练和推理,在前文我们发表了《基于 OpenVINO™ Python API 部署 RTDETR 模型 | 开发者实战》和《基于 OpenVINO™ C++ API 部署 RTDETR 模型 | 开发者实战》,在该文章中,我们基于OpenVINO™ Python 和 C++ API 向大家展示了的RTDETR模型的部署流程,并分别展示了是否包含后处理的模型部署流程,为大家

C# 循环与条件语句详解
2024/5/27 11:40:10

C# Switch 语句 使用 switch 语句选择要执行的多个代码块中的一个。 示例: switch(expression) {case x: 代码块breakcase y: 代码块breakdefault: 代码块break }它的工作方式如下:评估 switch 表达式一次 将表达式的值与每个 case 的值进行比较 如果有匹配,执行关联的代码块以下示例使用星期几的数字来计算星期几的名称: 示例 int day = 4 switch (day) {case 1:Console.WriteLin

C#对象二进制序列化优化:位域技术实现极限压缩
2024/5/27 11:40:10

目录1. 引言2. 优化过程2.1. 进程对象定义与初步分析2.2. 排除Json序列化2.3. 使用BinaryWriter进行二进制序列化2.4. 数据类型调整2.5. 再次数据类型调整与位域优化3. 优化效果与总结 1. 引言 在操作系统中,进程信息对于系统监控和性能分析至关重要。假设我们需要开发一个监控程序,该程序能够捕获当前操作系统的进程信息,并将其高效地传输到其他端(如服务端或监控端)。在这个过程中,如何将捕获到的进程对象转换为二进制数据,并进行优化,以减小数据包的大小,成为了一个关键问题。本

c#使用Hook钩子全局监听键盘和鼠标
2024/5/27 11:40:09

背景:今天接到客户一个需求,就是在收银员在用扫码枪扫顾客会员码或者微信付款码的时候判断用户有没有加企微好友和进企微群,然后根据这个状态进行语音播报,判断顾客能不能享受优惠价。关键难点就是用户用的收银系统是别家的,线上小程序用的是我们家的,两家不互通,所以立即决定采用Hook钩子技术做一工具挂在其他收银系统上。 Hook钩子 Windows是一个不断处理消息的系统,每次的鼠标点击移动键盘输入都是消息。钩子是系统消息处理的一环,可以使用钩子处理函数来监听消息传送,并处理消息。 思路用WPF做一个无边框小小的半

Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
2024/5/27 11:40:09

Restful 风格的 api 虽然规范了四个方法(Get、Post、Put、)用于数据的查询、增加、修改和删除,但在实际应用中,还是会有很多公司只使用了 Get 和 Post 两个方法,查询数据使用 Get 方法,其它业务操作使用 Post 方法(为什么会有情况,以后可以写一篇文章讨论一下 _),但是 Post 方法一般通过 FromBody 标识进行传参,这样子有时候会显得 api 不太优雅,比如删除一条数据,通常会将要删除的数据的 ID 写在 URL 上,比如: ...api10001000 就是要

C#中Dictionary与ConcurrentDictionary解锁多线程操作安全之道
2024/5/27 11:40:08

使用C#中的Dictionary与ConcurrentDictionary进行多线程操作 在C#中,Dictionary是一个常见的字典类型,但它不是线程安全的。为了在多线程环境中确保安全的操作,我们可以使用ConcurrentDictionary,这是一个专门设计用于多线程场景的线程安全字典。 1. 使用Dictionary进行非线程安全操作 首先,我们来看一个使用普通的Dictionary的例子。在这个例子中,我们创建一个Dictionary对象,然后通过多个线程同时进行读取和写入操作,以演示潜在的线

C#使用WhisperNet实现语音识别功能
2024/5/27 11:40:08

C#使用Whisper实现语音识别功能 1.写在前面 最近想做一下本地音频语音识别工具,在网上找了一些本地音频语音识别方面的资料。Whisper 是 OpenAI 的一种自动最先进的语音识别系统,它已经接受了 680000 小时从网络收集的多语言和多任务监督数据的训练。这个庞大而多样化的数据集提高了对口音、背景噪音和技术语言的鲁棒性。此外,它还支持多种语言的转录,以及将这些语言翻译成英语。与 DALLE2 和 GPT3 不同,Whisper 是一种免费的开源模型。 Whisper的优势是开源免费、支持多语

改一个对象类型,for循环耗时从3000毫秒下降到1毫秒
2024/5/27 11:40:07

概述:在C#中,字符串连接有两种实现方法:使用`+`运算符和使用`StringBuilder`。前者在每次连接时都会创建新的字符串对象,效率较低。后者通过内部管理字符数组,避免了频繁的内存分配和垃圾回收,因此性能更高。在处理大量字符串连接时,使用`StringBuilder`可以显著提高性能。这两种方法在功能上等价,但性能差异可达10倍或更多。 。 先上效果: 最近在和网友聊天时他问道:他做了一个生成代码的小工具,生成一个文件很快,但生成一个项目时就会很慢,找不到原因,让我帮分析一下是哪里的问题。能过性能

C# 布尔值和条件语句:入门指南和实用示例
2024/5/27 11:40:07

C# 布尔值 在编程中,通常需要一个只能有两个值之一的数据类型,比如:是 否 开 关 真 假为此,C# 有一个 bool 数据类型,可以取 true 或 false 的值。 布尔值 使用 bool 关键字声明布尔类型,只能取 true 或 false 的值: 示例: bool isCSharpFun = true bool isFishTasty = false Console.WriteLine(isCSharpFun) 输出 True Console.WriteLine(isFishTas

.NET中异步操作的选择:Task vs. ValueTask的区别与性能优化
2024/5/27 11:40:07

在 . 中,Task 和 ValueTask 都是用于表示异步操作的类型,但它们有一些重要的区别。 Task Task 是最常见的表示异步操作的类型。它通常用于表示耗时的、异步的操作,比如从文件读取数据、执行数据库查询等。Task 是一个引用类型,它封装了异步操作的状态和结果。 using System using System.Threading.Tasksclass Program {static async Task Main(){ 异步操作:模拟从文件读取数据string result = awa

使用 Docker Compose V2 快速搭建日志分析平台 ELK (Elasticsearch、Logstash 和 Kibana)
2024/5/27 11:40:06

前言ELK 是指 Elasticsearch、Logstash 和 Kibana 这三个开源软件的组合。 Elasticsearch 是一个分布式的搜索和分析引擎,用于日志的存储搜索分析查询。 Logstash 是一个数据收集、转换和传输工具,用于收集过滤和转换数据,然后将其发送到 Elasticsearch 或其他目标存储中。 Kibana 是一个数据可视化平台,通过与 Elasticsearch 的集成,提供了强大的数据分析和仪表盘功能。 Filebeat 是 Elastic Stack(ELK)中的

.NET字符串内存管理:常量字符串、动态创建和字符串池的巧妙结合
2024/5/27 11:40:02

在 . 中,字符串是不可变的,这意味着一旦创建,字符串的内容就不能被修改。字符串在内存中以不同的方式存储,具体取决于它是常量字符串还是动态创建的字符串。 常量字符串 常量字符串在编译时就被解析,并在程序的元数据(Metadata)中存储。多个相同的字符串常量可能会共享同一块内存。 string str1 = "Hello " string str2 = "Wld!" 编译时已知的字符串常量在元数据中被共享 string concatenated = str1 + str2Console.WriteLine

C# 字符串操作指南:长度、连接、插值、特殊字符和实用方法
2024/5/27 11:40:02

字符串用于存储文本。一个字符串变量包含由双引号括起的字符集合示例: 创建一个string类型的变量并赋予一个值 string greeting = "Hello"如果需要,一个字符串变量可以包含多个单词: 示例: string greeting2 = "Nice to meet you!"字符串长度 在 C# 中,字符串实际上是一个对象,其中包含可以在字符串上执行某些操作的属性和方法。例如,可以使用 Length 属性找到字符串的长度: 示例: string txt = "ABCDEFGHIJKLMNO

用C#实现最小二乘法(用OxyPlot绘图)✨
2024/5/27 11:40:02

最小二乘法介绍✨ 最小二乘法(Least Squares Method)是一种常见的数学优化技术,广泛应用于数据拟合、回归分析和参数估计等领域。其目标是通过最小化残差平方和来找到一组参数,使得模型预测值与观测值之间的差异最小化。 最小二乘法的原理✨ 线性回归模型将因变量 (y) 与至少一个自变量 (x) 之间的关系建立为:在 OLS 方法中,我们必须选择一个b1和b0的值,以便将 y 的实际值和拟合值之间的差值的平方和最小化。 平方和的公式如下: 我们可以把它看成是一个关于b1和b0的函数,分别对b1和b

C# 数据类型与类型转换:包含教程与示例
2024/5/27 11:40:01

C# 数据类型 C# 中的变量必须是指定的数据类型: int myNum = 5 整数(整数) double myDoubleNum = 5.99D 浮点数 myLetter = 'D' 字符 bool myBool = true 布尔 string myText = "Hello" 字符串数据类型指定了变量值的大小和类型。 使用正确的数据类型对应于相应的变量是重要的;这样可以避免错误、节省时间和内存,还会使您的代码更易于

C# 运算符详解:包含算术、赋值、比较、逻辑运算符及 Math 类应用
2024/5/27 11:40:01

运算符用于对变量和值执行操作。在C#中,有多种运算符可用,包括算术运算符、关系运算符、逻辑运算符等。算术运算符 算术运算符用于执行常见的数学运算: int x = 100 + 50 加法,结果为 150 int y = x 30 减法,结果为 120 int z = x 2 乘法,结果为 300 int w = x 3 除法,结果为 50 int remainder = x % 3 取余,结果为 0(100 除以 3 的余数)Console.WriteLine("

分析器/源生成器添加项目依赖的方式
2024/5/27 11:40:01

前言 写分析器(源生成器)时经常需要引用别的包,但直接引用是无法运行的。 下面我们分不同情况来讨论在分析器项目如何对依赖进行引用。 下图中“包引用”指PackageReference,“项目引用”指ProjectReference。 其中项目引用是通过dll文件传递的,包引用是通过nupkg文件传递的, 最大的区别是项目引用默认不可以传递,而包引用默认可以传递。 flowt TDA1项目引用A2GA包引用A3GB1包引用B2GB1.包引用.B3GB2包引用B3C1项目引用C2subgraph G1[单Nu

使用json代替resw文件
2024/5/27 11:40:01

前言 在写WinUI3或UWP项目的时候,总觉得resw文件冗长可读性又差,希望要是能用json就好了。 我在测试MakePri.exe[1]的时候意外发现了它支持一种叫resjson的文件,可以用以取代resw。 本文假定读者以有resw[2]的使用基础。 priconfig.xml部分内容: indexerconfig type="resw" convertDotsToSlashes="true" initialPath="" indexerconfig type="resjson" initialP

开源:Taurus.DTS 微服务分布式任务框架,支持即时任务、延时任务、Cron表达式定时任务和广播任务。
2024/5/27 11:40:00

前言: 在发布完:开源:Taurus.DTC 微服务分布式事务框架,支持 . 和 . Ce 双系列版本,之后想想,好像除了事务外,感觉里面多了一个任务发布订阅的基础功能。 本想既然都有了基础发布订阅功能了,那要不要顺带加上延时发布功能呢?加上了会不会让事务组件不纯了? 经过一翻深思,是在其上补上功能,还是,重新写一个组件,起初起名是个难题,因为 DTC 也可以是 Distributed Task Cxxxxx, 组件重名了? 经过一翻英文大作战,找到了:Distributed Task Scheduler

记一次 .NET某道闸收费系统 内存溢出分析
2024/5/27 11:39:57

一:背景 1. 讲故事 前些天有位朋友找到我,说他的程序几天内存就要爆一次,不知道咋回事,找不出原因,让我帮忙看一下,这种问题分析dump是最简单粗暴了,拿到dump后接下来就是一顿分析。 二:WinDbg 分析 1. 程序为什么会暴 程序既然会爆,可能是虚拟地址受限,也可能是系统内存不足,可以用 !address summary 观察下。0:037 !address summary Usage Summary RgnCount Total Size %ofBusy %ofTotal unknow

在Winform系统开发中,对表格列表中的内容进行分组展示
2024/5/27 11:39:57

在我们开发Winfm界面的时候,有时候会遇到需要对一些字段进行一些汇总的管理,如果在列表中能够对表格列表中的内容进行分组展示,将比较符合我们的预期,本篇随笔介绍在Winfm开发中如何利用DevExpress的GridView实现该功能。 1、准备数据表和一些数据 我们来以ERP系统中的一个原料表格来介绍我们对表格数据汇总的处理,首先创建一个原料表用来测试,表的数据库设计可以采用PowerDesigner等类似的建模工具设计,如下所示。通过预览生成SQL的方式,我们可以生成对应不同的数据库的数据库脚本,用于

C#实例方法和静态方法有区别吗?各自的优缺点有哪些?
2024/5/27 11:39:56

实例方法和静态方法之间有几个关键的区别: 1. 实例方法:关联对象: 实例方法是与对象实例相关联的,必须通过实例来调用。 this 关键字: 实例方法中可以使用 this 关键字引用当前实例。 访问实例成员: 实例方法可以直接访问和修改实例的字段、属性和其他成员。 生命周期: 实例方法的生命周期与对象实例的生命周期相同。 示例代码: public class MyClass { public void InstanceMethod() { Console.WriteLine("This is an ins

掌握 C# 变量:在代码中声明、初始化和使用不同类型的综合指南
2024/5/27 11:39:55

C# 变量 变量是用于存储数据值的容器。 在 C# 中,有不同类型的变量(用不同的关键字定义),例如:int 存储整数(没有小数点的整数),如 123 或 123 double 存储浮点数,有小数点,如 19.99 或 19.99 存储单个字符,如 'a' 或 'B'。 值用单引号括起来 string 存储文本,如 "Hello Wld"。String 值用双引号括起来 bool 存储具有两个状态的值:true 或 false声明(创建)变量: 要创建一个变量,必须指定类型并为其赋值: typ

.net 温故知新【17】:Asp.Net Core WebAPI 中间件
2024/5/27 11:39:55

一、前言 到这篇文章为止,关于. "温故知新"系列的基础知识就完结了,从这一系列的系统回顾和再学习,对于. ce、ASP. CE又有了一个新的认识。 不光是从使用,还包括这些知识点的原理,虽然深入原理谈不上,但对于日常使用也够了,我想的是知其然,知其所以然。 在实际开发过程中可能是知道怎么使用就行,但系统学习了这些基本的框架、组件、或者说原理后,对于我们软件设计、开发、扩展和解决问题还是有帮助的。 刚好到2023新年前赶着写完,也算对自己这个系列的一个交代,实际上我平时基本不使用ASP. CE,目前我主要

.net core 中什么是中间件
2024/5/27 11:39:54

在 . Ce 中,中间件(dleware)是 ASP. Ce 应用程序处理请求和响应的组件。中间件位于应用程序的请求处理管道中,它可以截获请求,执行一些逻辑,并将请求传递给下一个中间件或终止请求的执行。 中间件的主要作用是实现横切关注点,处理跨请求的功能和任务,例如身份验证、异常处理、日志记录、压缩、路由等等。它们可以以声明式的方式在应用程序的 Startup.cs 文件中进行配置。 一个简单的中间件是一个可以调用的组件,它包含一个处理请求的方法,接受一个 HttpContext 对象作为参数,并可以通过

前后端分离,Asp.net core webapi 简单 2 步,轻松配置跨域
2024/5/27 11:39:54

前言 可以说,前后端分离已经成为当今信息系统项目开发的主流软件架构模式,微服务的出现,让前后端分离发展更是迅速,大量优秀的前端框架如 vue.js、react 的出现,也让前后端分离趋势加快。 所谓的前后端分离软件架构模式,就是指将前端和后端的开发完全分离,后端负责提供API接口和数据处理,而前端通过各种现代的Javript技术如 AJAX 或者 Fetch 等,来调用后端提供的API接口获取数据,从而构建页面展示数据和用户交互。 前后端分离可以给信息系统项目开发带来很多好处,比如有效地降低了系统的耦合度

在WPF应用中使用FastReport.WPF报表模块
2024/5/27 11:39:53

FastRept是一个非常不错的报表组件,在Winfm应用中常常使用它进行报表的设计、预览展现、打印或者导出文件(PDF、Excel)等,可以设计打印各种各样的报表,本篇随笔继续介绍当前最新的FastRept报表模块,其中FastRept.WPF是专门针对WPF的报表组件。 1、回顾FastRept应用 我们回顾一下,我之前在随笔中总结的一些FastRept应用案例,虽然WPF使用上有所差异,不过报表的格式是同样的,处理规则也是大同小异。 《使用FastRept报表工具生成标签打印文档》、《使用FastR