自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 可视化命中测试

可以通过重写 HitTestCore 方法重写视觉对象的默认命中测试支持。这意味着,在调用 HitTest 方法时,将调用 HitTestCore 的替代实现。当命中测试落在视觉对象的边框内时,将调用重写的方法,即使坐标落在视觉对象呈现内容之外也是如此。如果需要知道是否选择了DrawVisual需要使用可视化树的命中测试。在可视化容器里通常需要DrawVisual对象画东西。获取区域中的可视化对象。

2026-01-03 18:33:57 207 1

原创 wpf自定义控件

【代码】wpf自定义控件。

2025-12-07 08:36:09 167

原创 C# 吃一堑,长一智

C# 里的WebClient,我曾经尝试使用webClient.DownloadDataCompleted += (se, ev) =>{}进行接收文件,但是却不能触发,因为我使用了autoResetEvent进行同步线程,耗时一天,以为是异步的问题,发现没听劝,webclient只适用于.net3,弃用了。使用httpClient进行接收流文件。httpClient使用。

2025-11-13 14:25:21 314

原创 MicroService(Redis)

一个请求进来,setnx,其他请求进来发现有值返回false。这时候,缓存保存的是A的数据(老数据),数据库保存的是B的数据(新数据),数据不一致了。可以看到一个读请求和一个写请求,读请求可能会读取到旧的数据,或者当写请求删除缓存失败,读请求会一直读取的是旧的缓存数据。原因:如果延迟时间小于请求2写入redis的时间,会导致请求1清除缓存的时机过早,请求2又会将旧的数据写入redis的尴尬。如果采用写请求,先删除缓存,再更新数据库就会出现如上图的情况,线程B读到的是老的数据,并且缓存中也保存的是老的数据。

2025-11-11 17:11:25 838

原创 Dotnet-Dapper的用法

Dapper是一个轻量级的ORM(对象关系映射)框架,专为.NET设计。它通过扩展IDbConnection接口,使开发者能够方便地执行SQL查询,并将查询结果映射到对象模型中。类似于ADO.NET。

2025-11-06 19:38:27 965

原创 .NetCoreMVC 开发网页使用sass

开发时实时修改(如果配置了实时监听):在 Program.cs 里加了 builder.Services.AddSassCompiler();后,修改 .scss 文件并保存,会立即自动重新编译,刷新网页就能看到效果(不用重新构建项目)。4.你只需要在网页里引用生成的 CSS(比如 <link href="~/css/style.css" ...>)就行了。如果你还有其他地方的.scss文件,可以在"Compilations": [ ]中指定。例子:我只有Styles下的variable.scss文件。

2025-11-01 23:13:23 239

原创 C#反射积累

【代码】C#反射积累。

2025-10-31 23:53:52 249

原创 C#使用SQLite出错:Unable to load DLL ‘e_sqlite3‘ or one of its dependencies: 找不到指定的模块(0x8007007E)

解压出来,把sqlite3.dll重命名为e_sqlite3.dll。System.Data.Sqlite2.0.2错误。重新运行就行,不用选择x64,复制到你的调试发布目录。

2025-10-31 14:41:58 604

原创 Autofac的使用

set;// 情况1:未指定 ServiceKey(ServiceKey 为空)// 只读模式:解析键为 "_slave" 的服务,并传入 "readOnly: true" 的命名参数?// 非只读模式:直接解析参数类型对应的服务(不指定键)// 情况2:指定了 ServiceKey// 只读模式:解析键为 "ServiceKey_slave" 的服务(如 ServiceKey 是 "OrderDB",则键为 "OrderDB_slave")?

2025-10-30 01:32:18 789

原创 MVVMLight

这个不建议用了,请学习Mvvmtookit或者Prism如果你安装Mvvmlight,生成两个文件,一个MainViewModel.cs可以作为MainWindow的viewModel,另一个ViewModelLocator.cs作为ViewModel定位器,通过Ioc容器,在改文件中获取ViewModel的实例。打开ViewModelLocator.cs文件,发现文件中有报错,这时只需要删除using Microsoft.Practices.ServiceLocation;

2025-10-17 18:07:05 445

原创 wpf资源字典

绑定情况下,在控件模版里可以绑定相对源RelativeSource={RelativeSource TemplatedParent}Pack URI 写法可以避免一定情况下,资源找不到。

2025-10-14 02:14:20 133

原创 wpf 命令理解

命令包含RouteCommand和CustomCommand类。

2025-10-13 21:00:00 281

原创 WPF自定义路由事件

/ 2. 事件包装器(名称与注册的事件名称一致)4. 定义依赖属性(通常与属性变化事件配套)// 3. 定义依赖属性(属性变化的源头)// 依赖属性标识符"MyValue", // 属性名称typeof(int), // 属性类型typeof(MyCustomControl), // 所属类型// 默认值和变化回调// 4. 属性变化回调(触发事件的地方)// 旧值// 新值// 触发路由事件,传递旧值和新值-- XAML中使用 -->// 后台代码处理事件。

2025-10-13 00:22:16 507

原创 wpf动画关键帧

1、线性关键帧动画。命名:Linear+数据类型+KeyFrame2、离散的关键帧动画。命名:Discrete+数据类型+KeyFrame3、缓动关键帧。命名:Easing+数据类型+KeyFrame4、样条关键帧动画。命名:Spline+数据类型+KeyFrame。

2025-10-12 03:31:20 237

原创 PLC速成

PLC的M引脚SM0.0 = 1 常闭SM0.1 = 一运行常开点闭合一个扫描周期再断开。SM0.5 = 1s开关转换一次plc-1200M1.2=1 常开闭合,有电M1.3=0 常开断开。

2025-10-02 00:37:06 219

原创 C# 中Byte类型转化问题

我们常常用{Byte[1],Byte[0]}转成short,和ushort,其实这俩一样,最后都用到了BitConverter.ToInt16(Byte[], 0);但是我们发现,对于0x12,用发送方用大端模式,我们接收到Byte[] {00,12},然后要反转变成{12,00},这样才能BitConverter.ToInt16转化正确。所以这样把传入byte数组高索引存高位,这样通过ToInt16,才能正确转化。但是计算机底层是 高位<-------------低位。当然,ToInt32也一样。

2025-09-28 12:10:08 138

原创 上位机Modbus协议

0区-线圈状态 (读写) 单个bit 00001至09999 1区-输入线圈 (只读) 单个bit 10001至199994区-保持型寄存器 (读写) 16位 40001至49999 3区-输入寄存器 (只读) 16位 30001至39999功能码线圈状态 (01-读取,05-单写,15-多写)输入线圈 (02-读取)保持型寄存器 (03-读取,06-单写,16-多写)输入寄存器 (04-读取)

2025-09-24 23:58:46 538

原创 异步方法在C#中的使用

不可以直接调用 MessageBox.Show,否则会大概率抛出跨线程操作异常,异常是在 Task.Run 内部抛出的 ——Task.Run 会将任务调度到 ThreadPool 线程(非 UI 线程) 执行,因此 catch 块的执行上下文默认是这个非 UI 线程。如果直接在非 UI 线程调用MessageBox.Show,相当于在非 UI 线程创建 / 操作 UI 控件,违反了 WinForms 的 “UI 控件必须由创建它的线程访问” 的规则,必然触发跨线程异常。

2025-09-21 22:56:56 322

原创 Git的使用

git init 初始化本地仓库git add . 全部提交到暂存区git commit -m "修改了bug" 提交到本地厂库git status 查看修改状态options-all 显示所有--pretty=oneline 将提交信息显示未一行--abbrev-commit 使得输出的commitId更短--graph 以图形式显示版本回退如果想获得回退前版本覆盖的记录git reflog分支查看本地分支git branch创建分支git branch 【分支名】

2025-09-12 17:35:39 664

原创 AutoMapper详解

适用于属性字段太多,且有规律时,减少映射规则的编写下面的代码我都验证了,确实是这样的//对 Source→Destination 的映射,验证目标成员(目标的所有成员必须被映射)//源有A1,A2 目标有A1,A2,A3,A4 --A3,A4没有被源进行映射,报错// 对 Source→Destination 的映射,验证源成员(源的所有成员必须被映射)//源有A1,A2,A3,A4,A5 目标有A1,A2,A3 --源的A4,A5 没有进行映射,报错。

2025-09-05 04:00:17 1228

原创 WPF里的几何图形Path绘制

IsLargeArc 为true选择大的那个圆弧,否则选择小的SweepDirection="Clockwise" 选择顺时针的路线,为CounterClockwise则是逆时针</Path></Path></Path></Path>

2025-09-03 23:27:53 652

原创 .NetCore MVC

/ 作用于所有包含 "my-id" 属性的 <div> 标签// 作用于所有以 "my:" 为前缀的标签(如 <my:card>)视图组件传参区域保持一致mvc的视图注入在 ASP.NET Core 中将依赖项注入到视图 | Microsoft Learn。

2025-09-02 01:31:03 449

原创 Sqlsugar补充自定义模板

注意SettingPropertyTemplate可能和IsCreateAttribute存在冲突一般不要一起使用,因为这俩都是向实体类属性上添加特性的。db.DbFirst/*修改old值替换*/ })//类构造函数/*修改old值替换*/ })//实体类追加引用SqlSugar,})/*修改old值替换*/}) //属性备注//属性:新重载 完全自定义用配置//[SettingClassTemplate]-------------自定义类模板(添加基类和接口)

2025-09-01 15:39:21 330

原创 CommunityTookit.MVVM

这是一个特殊的消息类型。如果 Send 方法发送的是这个类(或它的子类),那么 Send 方法将拥有一个返回值,这个返回值就是消息的接收者回复的消息。此时,消息的接收者也能够通过消息上的 Reply 方法回复消息的发送者。ValueChangedMessage 是一个最基本的消息类型,它包含一个 Value 属性,用于存储消息的值。注册一个含有函数的参数类型为T的消息接收者,发送这个参数类型供接受者调用对其使用。此外,还可以继承这个类,从而实现自己的消息类型。Messager先导。

2025-09-01 01:27:02 370

原创 Mysql(存储过程)

存储过程是事先经过编译并存储在数据库中的一段 SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。

2025-07-21 22:41:39 1289

原创 Mysql(视图)

视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。语法。

2025-07-21 00:21:28 747

原创 Mysql(事务)

执行事务相关命令四大特性ACID原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败一致性(Consistency):事务完成时,必须使所有数据都保持一致状态隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

2025-07-20 18:31:03 409

原创 Mysql(运维-主从复制)

概述:主从复制是指将主数据库的DDL和 DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持。记下File和Position的值.执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化。两个关键进程: 上面两个参数都是Yes,则说明主从配置成功!加\G是把行变为列展示。3.5 执行FLUSH PRIVILEGES;

2025-07-20 16:39:24 190

原创 Mysql(运维-日志)

二进制日志(BINLOG)记录了所有的 DDL(数据定义语言create)语句和 DML(数据操纵语言,增删改)语句,但不包括数据查询(SELECT、SHOW)语句。

2025-07-20 13:01:52 982

原创 MicroService(Ocelot)

// 向缓存中去缓存数据--会调用这个方法//{//});/// 添加缓存, 如果有历史缓存, 就覆盖/// 清除缓存的数据= nullelseset;set;set;Program里添加AddandDelete和ClearRegion需要你自己调用,用于清除脏数据Add方法在Get方法返回null调用。/// 通过注入的一段逻辑---就是在IOC注册的时候, 指定的策略的规则/// 锁//内部自己注册的ioc的/// 决定负载均衡的策略。

2025-07-16 17:51:22 396

原创 dotnet使用Hangfire

这是Hangfire官方在github的数据库mdf文件以及源码地址。OK,到这如果是小白的话可能会懵逼,让我们现在捋捋。2在sqlserver里运行以下sql脚本,生成数据库。封装一下TestJobService.cs。官方1.8.2就是9,就写9,运行下面代码。并且执行情况都在数据库 Job表记录了。1下载nuget包。

2025-07-07 02:37:26 362

原创 dotnet 使用QuartZ

主要作用就是为了排除Trigger中一些特定的时间节点。使用方法 ,用DailCalendar举例。现在介绍一下Trigger触发的策略。

2025-07-04 18:58:00 365

原创 sqlserver事务日志备份与还原,ssms20

sqlserver备份与还原事务日志

2025-06-03 23:38:38 485

原创 EFcore不使用外键方法

迁移文件类的AddMigration和DropMigration全都不见了nice。重写MigrationsModelDiffer。在program.cs里配置。

2025-03-17 00:50:17 458

原创 EFcore不使用外键,处理一对多关系

现在企业中,以阿里的开发标准,不需要有外键,使用Efcor codefirst后,数据库自动有外键配置,需要手动删除,把外键id也重新设置可为空,意思是 部门表 left join员工表 找到部门id为符合条件后删除部门,然后置对应员工的DepartmentId为null。因为EFCore为保证数据一致性,如果你使用外键,当你删除部门时会带着该部门员工一起删除。把代码改成当删除部门id为1的科研部,同时删除该部门下的员工,看看是否成功。下面,程序返回了两端sql,意思是啥呢。实验一下,以id删除部门。

2025-03-16 14:36:20 632

原创 window上VScode用cmake 命令生成可执行文件

Cmake在vscode使用

2025-03-09 23:49:10 444

原创 配置文件读取

依赖注入获得appsetting.json里的数据。

2025-01-06 00:10:00 235

原创 .NetMVC或者webApi使用日志插件 Log4Net 写入数据库 Mysql

-<appender-ref ref="mysqlAppender" />-->//你们可以先把数据库的给注释掉,先配置文件写入,如果不注释可能报错。<appender-ref ref="mysqlAppender" />去掉注释。这三个是对应的创建的3个附加器,ref=创建的附加器的名字,这样配置才有效。//能看懂就行,用的时候复制就行这是log4net官网地址。3.对于MVC或者webapi里的Program.cs。4.Controller里添加测试代码。创建一下,数据库名是test_db。

2025-01-05 16:02:52 476

原创 app.Services.GetRequiredService怎么用

因此,你应该确信服务已经被正确注册,否则应该考虑使用 `GetService()`,它会在找不到服务时返回 `null`。`app.Services.GetRequiredService()` 是用来从 ASP.NET Core 中的依赖注入 (DI) 容器中获取服务实例的方法。当你在一个类中需要访问另一个服务时,通常的做法是在构造函数中注入该服务。然而,在某些情况下,你可能需要在运行时动态地获取一个服务,这时候就可以使用 `GetRequiredService()` 方法。

2024-10-18 10:25:34 863

原创 dotnet webapi使用sqlsugar

SqlSugarClient 每次请求new一个新对象,db禁止跨上下文使用,IOC建议用Scope或者瞬发注入。原生ioc注册官网有,自己看去。

2024-10-02 09:20:15 493

空空如也

空空如也

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

TA关注的人

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