自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Git推送丢失某个提交处理记录

Git找回丢失提交的解决方案 当推送后发现部分提交丢失时,可以通过以下步骤找回: 使用git reflog查看所有提交记录(包括被覆盖的) 通过git checkout临时切换到丢失的提交查看 用git checkout -b基于该提交创建新分支 使用git cherry-pick将丢失的提交合并回当前分支 这种方法能有效恢复因推送问题而丢失的代码提交。

2025-08-26 19:23:37 316

原创 WPF动画

WPF 图片做出动画效果

2024-05-27 17:25:41 513

原创 位图格式解析

位图文件结构解析带示例

2024-04-26 17:21:23 681

原创 .NET第三方打包工具(Setup Factory)简单使用

在使用Setup Factory时,用户可以通过工程向导或手动操作来创建新的工程,设置常规信息,如公司名称、产品名称、产品版本等。在创建安装程序的过程中,用户可以添加安装时的语言,设置安装过程中的变量,修改安装和卸载的屏幕,添加反安装选项等。此外,Setup Factory还支持在INI文件中添加设置,并在安装程序执行时解压缩到临时文件夹中,以便在后续的安装过程中使用。总之,Setup Factory是一款功能强大的安装程序创建工具,可以帮助用户快速、灵活地创建出各种类型的安装程序,满足不同的需求。

2024-02-28 14:34:57 3377 2

原创 依赖注入与控制反转-C#应用

上一节讲解了控制反转和依赖注入的关系,以及为什么要使用这种设计模式。这节讲讲依赖注入在C#中的具体使用,通过一个列子感受下依赖注入的魅力。ServiceCollection是一个用于注册服务的容器。在注册服务时,DI会将服务封装成一个ServiceDescriptor类型,并将其缓存到ServiceCollection中。ServiceProvider则是ServiceCollection的扩展,它用于从注册的服务中提供(或获取)服务。

2024-02-28 14:34:42 1012

原创 依赖注入与控制反转-理论

控制反转(Inversion of Control,缩写为IoC)是面向对象编程中的一种设计原则。其主要思想是将原本由代码直接操控的对象的调用权交给一个容器(或称为外部实体、调控系统),由容器来实现对象的创建、装配和管理。这种转移控制权的过程即为“反转”。在传统编程中,一个对象通常会在其内部通过new关键字来创建其所依赖的对象,这种创建依赖对象的方式称为正转。而在IoC中,对象的创建和依赖关系的管理则由一个专门的容器负责。

2024-02-21 17:29:45 513

原创 C# 实现AOP面向切换编程方式之一

AOP为Aspect Oriented Programming的缩写,意为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

2024-02-21 15:14:28 3045

原创 C#中利用最小二乘法实现曲线拟合

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。∑i1nyxi−yi2∑i1n​yxi​−yi​2最小。最终转化对系数a1 a2 a3求偏导,多次迭代后算出估算值。

2024-01-30 13:24:07 3550

原创 WPF下使用FluentValidation校验

本文使用FluentValidation对实体对象中属性进行校验,并在Xaml中使用MaterialDesign固有样式和自定义样式展示不同的效果。这里注意下,因为我这里引入了MaterialDesign, Name对应的样式默认使用的是MD中的样式。IDataErrorInfo:用于校验的接口,使用FluentValidation(StudentValidator)对其进行实现。StudentValidator:基于AbstractValidator<泛型> 实现对该类型对象属性的校验。

2024-01-20 15:33:59 801

原创 C# 使用BouncyCastle生成RSA PEM格式公钥私钥(PKCS#1,PKCS#8)

RSA非对称加密应用

2024-01-20 15:33:32 2709

原创 一模一样的代码执行两次,为什么性能相差2倍?

上一节我们知道了CacheLine的存在,可以利用CacheLine提升性能,这其实利用的是CPU的空间局部性原理。最后留了个问题:同样for循环遍历数组代码,执行两次,性能差异如何?看到这里,相信大家对于应用程序内的虚拟内存和真实物理内存有了初步的理解。面对这种情况需要性能优化时,我们可以提前分配内存到物理页,减少在业务中处理page fault。

2023-12-28 17:04:59 1560

原创 多线程是否一定比单线程快?

正常在计算机系统中,给一个耗时较长的任务由计算机去执行,返回结果给用户需要等很久。通常面对这种情况,我们会用多线程的方式提速,当然也有特例。下面我们举个简单的for循环示例类似于多线程比单线程效率低的场景还有很多。比如累加一个数,当用多线程时会涉及到锁保证数据的原子性操作,会涉及临界资源等待。又或是多个cache持有同一份数据,多线程修改不同cache的同一份数据时,涉及到不同cache的数据同步等等。所以我们一定要理解多线程的本质以及CPU的工作模式,在合适的场景下充分的发挥他们的作用。

2023-12-28 17:04:14 648

原创 C# 中try catch finally之异步中注意事项(二)

try catch finally 使用注意事项

2023-12-22 14:52:12 553

原创 C# 中try catch finally之真实结构(一)

try catch finally 使用注意事项

2023-12-22 14:51:35 579

原创 线程栈知识之栈流向(二)

揭示了线程栈流向,通过VS反汇编调试验证。

2023-12-15 16:18:52 913

原创 线程栈知识之用户态和内核态(一)

用户空间和内核空间区别,各自线程栈在用户空间和内核空间如何划分

2023-12-15 14:58:50 611

原创 C# 异步async 与 UI线程互锁问题分析处理

UI线程结合await async 异步死锁问题分析

2023-08-02 10:29:40 873 2

空空如也

空空如也

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

TA关注的人

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