自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 收藏
  • 关注

原创 WPF中的依赖属性

如果你自己写了一个自定义控件,希望它身上的某个属性也能像FontSize一样遗传给子孙后代,你需要使用。完整代码演示(细节拉满,不跳步):第一步:注册依赖属性并打上Inherits标记注意,普通的属性一般用,但为了支持继承这种高级 UI 特性,我们必须使用它的派生类。// 1. 注册依赖属性"ThemeColor", // 属性名typeof(Brush), // 属性类型typeof(MyCustomPanel), // 宿主类型Brushes.Gray, // 默认值。

2026-10-10 13:46:32 12

原创 IEnumerable<T> 详细讲解

扩展方法是 C# 的语法特性,可以在不修改原有类 / 接口代码的前提下,给它 “追加” 新方法。并不是接口里定义的方法,而是 .NET 框架里的Enumerable静态类,专门给扩展出来的工具方法。就是所有集合的「通用遍历协议」,List、数组等都实现了它;是给这个协议扩展的通用工具方法,所以所有集合都能直接调用。

2026-09-16 15:22:43 225

原创 CSB代码学习

原版1、单例模式:保证全局只有这一个工厂对象。2、工厂模式(带对象缓存):从外部DLL动态加载类,创建Service实例,并且缓存实例,避免重复加载DLL,重复创建对象。修改版一、先看【单例部分代码】单例核心要点:1:私有静态字段ServiceFactory:用来保存唯一实例。2:私有构造函数private ServiceFactory()关键:外面不能new ServiceFactory() 阻止外部随意创建对象。构造器第一次创建工厂的时候只执行一次;

2026-09-16 15:09:51 211

原创 JSON /XML转换

命名控件需要XML转Json/JObject 用到的全部核心API核心转换静态方法JsonConvert.SerializexNode();//再把JSON字符串转换为JObject。

2026-08-28 17:55:16 219

原创 Assembly.GetExecutingAssembly()

比如:你拿到一段 JSON,只需要取其中 1‑2 个字段,不想新建一大堆实体类,就用。

2026-08-27 16:47:48 232

原创 关闭数据库服务减少内存占用

近来,一打开电脑就看到内存占用了18个G,明明什么都还没有打开。

2026-06-29 17:33:55 211

原创 yolo 学习

classify分类预测可以预测足足1000种类型旋转目标检测的类型也是不太一样的一共15种类型,都是俯瞰视角常用的类型姿态估计模型只能预测person一种类型,因为它只针对人体的姿态实例分割模型比较特殊支持同样的80种类型在训练的时候就先要弄清楚,想要用YOLO预测哪些类型,最后训练得到的模型就只能预测哪些类型yolo11n.pt 这个模型的大小yolo11n 中 的n是nano的很小的意思意思模型:模型是什么任务类型?模型可以预测哪些类型?模型有多大?有哪些现成的模型?

2026-06-16 08:56:51 260

原创 如何让豆姐写出treeWidget代码

帮我写Qt TreeWidget 代码表头叫什么顶层节点叫什么我就直接给你可运行的完整代码,不用你改、不用你调!

2026-06-04 15:36:34 238

原创 优质博客收藏

[onnxruntime]windows上C++ onnxruntime配置vs2022和简单测试_onnxruntime windows-CSDN博客OpenCV安装及其开发环境配置(C++)_opencv c++安装-CSDN博客

2026-06-03 17:01:29 204

原创 c++中的宏是什么?

宏通过#define。

2026-06-02 14:47:48 289

原创 visual2013 密钥真实可用

Visual Studio Professional 2013 KEY(密钥): XDM3T-W3T3V-MGJWK-8BFVD-GVPKY。Visual Studio Ultimate 2013 KEY(密钥):BWG7X-J98B3-W34RT-33B3R-JVYW9。Visual Studio Premium 2013 KEY(密钥):FBJVC-3CMTX-D8DVP-RTQCT-92494。每次都会忘记留作备用,这次终于想起来,需要留作备用。

2026-06-01 13:38:01 893

原创 SqlDataAdapter.Fill(dt) 和SqlDataReader + dt.Load()的差异

DataTable中的dt.Load()方法它相当于DataTable极其聪明,当它执行Load():它会先看一眼传送带送来的“货物规格说明书(数据库表的列名、数据类型)”,然后。你完全不需要像之前那样手动去。:建好列之后,它会自动让传送带 (Dr.Read()) 疯狂转动,把所有传送过来的数据一行不落地装进自己的Rows集合里,直到传送带上没货为止。“既然有这么爽的全自动包工头,为什么还要用dt.Load()这种写法呢?这叫“没有中间商赚差价”!

2026-05-28 17:00:38 135

原创 ADO.NET 进阶知识与实战坑位深度解析

基于对架构的剖析,其进阶应用与潜在风险主要围绕四个维度展开。以下是对核心组件在复杂场景下需重点关注的进阶知识与常见坑位的系统性梳理。

2026-05-28 11:34:03 445

原创 Ado.Net简介

不归 .NET 管、GC 回收不了、必须手动释放的系统资源数据库连接(文件句柄(FileStream网络套接字(SocketGDI 绘图句柄(Bitmap查多行 → ExecuteReader ()增删改 → ExecuteNonQuery ()查单个值 → ExecuteScalar ()必须配合打开的 SqlConnection 使用Parameters 防注入SqlDataReader = 向前只读游标Dr.Read () = 走到下一行,有数据返回 true。

2026-05-28 11:22:48 532

原创 LINQ 语言集成查询 (Language Integrated Query)

Where:Lambda =条件→:Lambda =排序键→你现在已经彻底吃透 LINQ + 泛型 + Lambda 底层原理了!这张表背下来,LINQ 彻底毕业!表格方法Lambda 类型作用输入 → 输出Where筛选元素 →true/false排序元素 →排序键Select投影 / 转换元素 →任意新结果判断元素 →true/false。

2026-05-27 13:50:16 542

原创 C# 扩展方法(Extension Method)在语法上的核心灵魂。

当你写下的那一瞬间,C# 编译器在底层其实偷偷帮你把它翻译成了。所以,加上this的意义就是告诉编译器:“别把我当成普通的参数,我是你要外挂的目标对象,把我前面的那个变量直接当成参数传进来吧!”你的直觉非常敏锐,这就是扩展方法的全部真相。

2026-05-27 09:04:25 4526 1

原创 【STAThread] 超级硬核、最通俗讲解

这是你写 WinForm / WPF / 桌面程序时,必须加在 Main 方法头上的 “通行证”! 我用最简单、最底层、最不绕弯的方式给你讲👇csharp它是给主线程(Main 线程)加的特性。STA = Single Thread Apartment 单线程单元你不用懂复杂的 COM 原理,我给你翻译成人话:STA 就是给 UI 线程加了一道锁: 只准主线程碰界面,不准其他线程乱来!因为 Windows 底层很多功能:全都是基于 STA 模式工作的![STAThread] 就像是:没有这张证 →

2026-05-26 14:37:25 290

原创 c#中特性的定义和IEnumerable<T>

只会用系统自带的没什么了不起,真正的高手都会自己造便利贴。造便利贴非常简单,只需要两步:建一个普通的类,让它继承自。名字的后缀必须以Attribute结尾(这是微软的规矩)。// 给老方法贴上 [Obsolete] 特性[Obsolete("这个老加法太慢了,请不要用了,改用 NewAdd 方法!", false)]Console.WriteLine($"更快的加法:{a + b}");// 当你在代码里敲出 OldAdd 的时候,

2026-05-26 14:36:35 593

原创 方法名加括号 vs 不加括号的区别。

如果你非要让它叫 "汪汪汪",完全不理会Animal传过来的Name,这时候就要用到我们刚学的Lambda 表达式了,你可以把它包在一层“匿名方法”里:C#// 利用 Lambda 表达式包装一层// 意思是:当收到 Animal 传来的 name 时,我不理它,我自己强制执行 dog.DogCall("汪汪汪")A.eventAnimal += (name) => dog.DogCall("汪汪汪");

2026-05-26 09:31:43 292

原创 c#中的Type类型

typeof(X) 或 obj.GetType()↓Type ──────────────────────────── 反射入口│ ├── .Name 属性名│ ├── .PropertyType 值的类型(也是Type)│ ├── .GetValue(obj) 读值│ └── .SetValue(obj) 写值​↑动态 new 对象,不需要在编译期知道类型Type= 类型的"身份证",描述这个类长什么样。

2026-05-21 17:50:16 488

原创 c#中的“跨界找人”

这两句代码是用来“向外借”的,它在c#里有一个极其专业并且常用的名字:P/Invoke(平台调用,Platform invocation Serrvices)“跨界找人”这两句必须连在一起看,它们是在向 Windows 操作系统借用底层的 C++ 函数。这是“特性(Attribute)”标签。它的意思是告诉 C# 编译器:“别在咱们自己的 C# 代码里找这个函数的实现逻辑了。你去 Windows 操作系统自带的User32.dll(专门管窗口界面的底层动态链接库)里面找!

2026-05-11 10:52:52 296

原创 VM图像处理(图像增强锐化、对比度、Gamma校正、亮度校正)

在工业现场,受限于打光空间、金属反光或者外部环境光干扰,相机拍出来的原图往往“灰蒙蒙的”、“黑乎乎的”或者“边缘糊成一团”。

2026-04-26 22:52:38 946

原创 VM图像处理(1、图像二值化和图像滤波,Sobel提取过程)

硬阈值二值化:简单粗暴,适合 “光照均匀、背景干净” 的理想环境。均值 / 高斯二值化:都是局部阈值法,靠滑动窗口应对光照不均;高斯比均值更平滑。自动二值化:全局自动找阈值,适合 “整体光照均匀但灰度范围大” 的场景,不用手动调参。

2026-04-26 17:53:56 867

原创 S71500 发送数据字节分析

如果你在 VM 里定义的是 32 位的整数(通常叫Int32或 PLC 里的DInt),它会占用4 个字节。那么你的地址跨度就必须按 4 递增DB1.0(占 0, 1, 2, 3)DB1.4(占 4, 5, 6, 7)DB1.8(占 8, 9, 10, 11)

2026-04-26 06:54:49 540

原创 VisionMaster

模板配置:粗糙尺度范围1~20,粗糙尺度越大,特征点越稀疏,匹配速度越快对比度阈值范围1~255,对比度阈值越大,被淘汰的特征点越多。对比度阈值就是说,边缘处的灰度差值,如果差值大于阈值,就会被选中。对比度阈值越大,选取的特征点越少。对比度阈值越小,选取的特征点越多。这个参数如果乱调,匹配率会大打折扣。:如果你把对比度设得极小,软件会把图片上所有的毛刺、划痕、传送带的纹理、甚至灯光不均匀产生的细微阴影,全部提取成绿色的轮廓线!

2026-04-26 06:48:22 265

原创 c#MVVM中的消息通知机制

nameof() 是一个语法工具,专门用来把变量/属性名变成字符串。

2026-04-22 15:50:41 372

原创 Modbus 场景必用的 ushort → byte[] 转换方法

右移 8 位 →拿前 8 位& 0xFF →拿后 8 位拼起来 =原来的 16 位数据你现在位运算 + Modbus 高低字节这块已经彻底通了!疑问?上面data的数据只能是16位么?还是说是16位是一个数据?读取保持寄存器,4区一般存储的都是什么实际变量呢?比如说是温度,23摄氏度。他是如何存储的。存储多个数据温度,湿度,等多个数据一个地址 = 16 位 = 一个数据(温度 / 湿度 / 压力…)**

2026-04-18 18:13:40 452

原创 C# 底层的“自动升级”机制

你可以把各种数值类型想象成大小不同的纸箱子,比如 (整数)是个中号箱子,(带小数的数值)是个大号箱子。 自动转换的条件 必须满足两个条件: 第一,大家都是数值类型(都是装数字的); 第二,目标类型的范围必须比源类型大。比如把中号箱子的东西倒进大号箱子里,绝对安全,不会溢出。 自动转换的实现: 因为绝对安全,所以 C# 编译器会在后台默默帮你搞定,不需要你多写任何代码。 示例: 数值类型之间的强制转换(显式转换)——“大盒子硬塞进小盒子”反过来想,如果你要把 (大号箱子)里的东西倒进

2026-04-16 23:46:45 478

原创 c#对object sender ,EventArgs e 的解释

当我们生成一个button点击按钮时间的时候,会有这样的一个方法。其中两个参数 object sender,EventArgs e当你双击界面上的“停止”按钮时,Visual Studio 会自动为你生成这个方法。括号里的和是 C# 中所有“事件”(比如点击按钮、移动鼠标、接收设备数据)的标准标配。

2026-04-16 23:46:03 530

原创 c# 文件编译的过程

整个流程的核心思路是:.NET 用把"写代码"和"跑代码"这两件事解耦开来。你写的 C# 代码(.cs文件)通过csc.exe编译器,翻译成一种叫做的中间产物,最终打包成.exe或.dll文件。这一步在你的开发机上完成,IL 不是机器码,任何 CPU 都还不能直接执行它。VB.NET、F# 等语言也有自己的编译器,但最终都会生成,这就是 .NET 能做到"跨语言互调"的根本原因。当用户在自己的机器上运行这个.exe时,启动,其中的。

2026-04-12 17:16:27 579

原创 c#文件结构

你可以把你在写的上位机软件想象成一家**“公司”**。代码文件(.cs):就像是公司里的**“员工”**,每个人负责写一段具体的代码(比如有人负责画按钮,有人负责算数据)。项目(Project,.csproj文件):就像是公司里的**“部门”**(比如销售部、技术部)。把一群功能相关的员工(代码文件)组合在一起,就成了一个部门。你刚才生成的.exe文件,就是一个项目(部门)的产出。解决方案(Solution,.sln文件):这就相当于**“整个公司”**的大框架(或者说是一个大文件收纳箱)。

2026-04-12 14:12:16 486

原创 linux命令

命令作用核心参数ls列文件-l(ll), -acd切目录.., /, ~mkdir建目录-ptouch建文件cat看文件cp复制-r(目录)mv移动 / 重命名rm删除-rf(强制删目录,高危!find找文件-namegrep过滤内容-itail看尾部-f(实时)echo输出>>追加。

2026-04-11 17:58:54 362

原创 mysql体系结构

sql-- 查看 MySQL 支持的所有存储引擎-- 查看某张表当前使用的存储引擎-- 建表时指定存储引擎MySQL 支持十几种存储引擎,但实际开发中最常用的就是三种:InnoDB、MyISAM 和 Memory。特性InnoDBMyISAMMemory事务支持不支持不支持外键支持不支持不支持锁粒度行锁表锁表锁崩溃恢复支持弱数据丢失索引B+Tree 聚簇B+Tree 非聚簇Hash持久化磁盘磁盘内存适合场景通用(默认选择)

2026-04-10 00:18:26 231

原创 mysql中的事务

事务(Transaction)是一组 SQL 操作的集合,这些操作要么全部成功执行,要么全部回滚,不允许只执行一半。经典例子就是银行转账——A 扣钱和 B 加钱必须同时成功或同时失败。维度要点ACID原子/一致/隔离/持久,A靠undo log,D靠redo log并发问题脏读 > 不可重复读(行值变)> 幻读(行数变)隔离级别默认,InnoDB用MVCC解决幻读控制语句BEGIN→ 操作 →COMMITROLLBACK保存点SAVEPOINT支持部分回滚自动提交。

2026-04-09 21:04:53 548

原创 Mysql中的子查询,标量子查询,行子查询,列子查询,表子查询

子查询(Subquery)是指嵌套在另一条 SQL 语句中的 SELECT 语句,也叫内层查询。外层包含它的语句叫主查询或外层查询。基本结构:sql。

2026-04-09 08:58:29 1198

原创 UNION 和 UNION ALL 作用

联合查询 union ,union all对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集。select 字段列表 from 表A ,,,select 字段列表 from 表B .....

2026-04-08 17:49:09 103

原创 mysql中的多表查询

多表查询就是同时从 2 张及以上的表中查询数据,核心是通过 ** 关联条件(ON 子句)** 把表连接起来,避免「笛卡尔积」错误。

2026-04-08 10:26:47 512

原创 mysql外键

外键是 MySQL 中用来NULLempdept_iddeptid删除主表中的数据,必须保证存有外键的子表中的相关数据都要被删除之后才能删除主表中的数据,从而保证了数据的完整性。

2026-04-07 23:36:23 655

原创 mysql 约束

约束是作用于表中字段上的规则。目的:限制存储在表中的数据,确保数据的正确。时机:在创建表()或修改表()时添加。这个字段必须填值,不能为空(NULL)这个字段的值,整张表里不能重复不填这个字段时,自动给一个默认值一张表只能有一个主键非空 + 唯一双重保证用来唯一标识每一行数据主键数字不用自己填,数据库自动往上加 1、2、3...规定字段值必须在某个范围里两张表绑在一起,子表数据必须依赖主表外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。

2026-04-06 22:47:59 452

原创 一、什么是 MySQL 函数?

不用自己写复杂逻辑,直接用函数 = 一行搞定。sql2. 数值函数(处理数字)3. 日期函数(处理时间)4. 流程函数(判断逻辑)① IF (条件,成立值,不成立值)sql② CASE WHEN(多条件判断)搜索式 CASE(CASE WHEN)例子1:例子2:例子3:✅ 语法规则: 后面不能跟字段名 后面的 可以写任意条件表达式(>、<、>=、AND、OR 等) 逻辑:从上到下判断条件,第一个满足的就返回对应结

2026-04-06 18:46:38 206

c++学习笔记,详细介绍了从基础到结构体

c++学习笔记,详细介绍了从基础到结构体

2026-05-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除