.NET第三方打包工具(Setup Factory)简单使用 在使用Setup Factory时,用户可以通过工程向导或手动操作来创建新的工程,设置常规信息,如公司名称、产品名称、产品版本等。在创建安装程序的过程中,用户可以添加安装时的语言,设置安装过程中的变量,修改安装和卸载的屏幕,添加反安装选项等。此外,Setup Factory还支持在INI文件中添加设置,并在安装程序执行时解压缩到临时文件夹中,以便在后续的安装过程中使用。总之,Setup Factory是一款功能强大的安装程序创建工具,可以帮助用户快速、灵活地创建出各种类型的安装程序,满足不同的需求。
依赖注入与控制反转-C#应用 上一节讲解了控制反转和依赖注入的关系,以及为什么要使用这种设计模式。这节讲讲依赖注入在C#中的具体使用,通过一个列子感受下依赖注入的魅力。ServiceCollection是一个用于注册服务的容器。在注册服务时,DI会将服务封装成一个ServiceDescriptor类型,并将其缓存到ServiceCollection中。ServiceProvider则是ServiceCollection的扩展,它用于从注册的服务中提供(或获取)服务。
依赖注入与控制反转-理论 控制反转(Inversion of Control,缩写为IoC)是面向对象编程中的一种设计原则。其主要思想是将原本由代码直接操控的对象的调用权交给一个容器(或称为外部实体、调控系统),由容器来实现对象的创建、装配和管理。这种转移控制权的过程即为“反转”。在传统编程中,一个对象通常会在其内部通过new关键字来创建其所依赖的对象,这种创建依赖对象的方式称为正转。而在IoC中,对象的创建和依赖关系的管理则由一个专门的容器负责。
C# 实现AOP面向切换编程方式之一 AOP为Aspect Oriented Programming的缩写,意为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
C#中利用最小二乘法实现曲线拟合 最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。∑i1nyxi−yi2∑i1nyxi−yi2最小。最终转化对系数a1 a2 a3求偏导,多次迭代后算出估算值。
WPF下使用FluentValidation校验 本文使用FluentValidation对实体对象中属性进行校验,并在Xaml中使用MaterialDesign固有样式和自定义样式展示不同的效果。这里注意下,因为我这里引入了MaterialDesign, Name对应的样式默认使用的是MD中的样式。IDataErrorInfo:用于校验的接口,使用FluentValidation(StudentValidator)对其进行实现。StudentValidator:基于AbstractValidator<泛型> 实现对该类型对象属性的校验。
一模一样的代码执行两次,为什么性能相差2倍? 上一节我们知道了CacheLine的存在,可以利用CacheLine提升性能,这其实利用的是CPU的空间局部性原理。最后留了个问题:同样for循环遍历数组代码,执行两次,性能差异如何?看到这里,相信大家对于应用程序内的虚拟内存和真实物理内存有了初步的理解。面对这种情况需要性能优化时,我们可以提前分配内存到物理页,减少在业务中处理page fault。
多线程是否一定比单线程快? 正常在计算机系统中,给一个耗时较长的任务由计算机去执行,返回结果给用户需要等很久。通常面对这种情况,我们会用多线程的方式提速,当然也有特例。下面我们举个简单的for循环示例类似于多线程比单线程效率低的场景还有很多。比如累加一个数,当用多线程时会涉及到锁保证数据的原子性操作,会涉及临界资源等待。又或是多个cache持有同一份数据,多线程修改不同cache的同一份数据时,涉及到不同cache的数据同步等等。所以我们一定要理解多线程的本质以及CPU的工作模式,在合适的场景下充分的发挥他们的作用。