自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 abp模块生命周期设计思路剖析

abp中将生命周期事件抽象为4个接口://预初始化public interface IOnPreApplicationInitialization{ void OnPreApplicationInitialization([NotNull] ApplicationInitializationContext context);}//初始化public interfac...

2019-10-05 16:50:00 416

转载 条件语句重构分析

条件语句重构分析策略模式重构条件语句状态模式重构条件语句多态重构条件语句其实这三种方式都是基于多态实现的,直接加上了各个的特性罢了。策略模式相比较状态模式,前者由客户端传入所有的选择项,而后在Context环境类中选择具体的选项、后者则是在Context状态管理器中根据客户端传入的选择通过SetAddress切换状态。这两者充分体现了其模式的特定——策略模式是客户端已经知道了所有...

2019-07-23 22:32:00 219

转载 模式:工程化实现及扩展——工厂模式

相比较传统的工厂模式IFactory/Concrete Factory会反复引用并编译代码但是作为开发人员,我们更希望的是少修改代码,尽量从配置着手也就是设计模式的根本原则之一:开放封闭原则。如果我要增加新的产品,那么修改就比较大了,对于业务来讲还是可以接受的。但是如果可以做到不修改代码是最好的。上一份工作中,我印象最深的一句话就是我上司对我说的"能不改代码就别改,能写进配置里的就写到...

2019-07-11 23:35:00 289

转载 状态模式重构条件语句

状态模式重构条件语句直接上代码:/// <summary>/// 状态模式的环境类/// </summary>public class CalculateContext{ private IShippingAmount _Calculate; public CalculateContext() => _Calculate = ne...

2019-07-07 10:21:00 237

转载 多态重构条件语句

首先,在C#中,多态的体现是什么?虚函数、抽象方法、接口。废话不多说,直接上代码:#region 多态重构switch...case.... public abstract class ShippingCalculation { public abstract decimal Calculate(); } public class A...

2019-07-06 14:59:00 129

转载 AssemblyBuilder以及Activator双剑合璧

AssemblyBuilder和Activator两个类是DispatchProxy类实现动态代理以及AOP的根本,示例demo可参考 DispatchProxy实现动态代理及AOP 。AssemblyBuilder的命名空间是System.Reflection.Emit,没错就是你听过的Emit。那么它是干什么用的?先看看 官方 的示例代码:// ↓ AssemblyBuilder构...

2019-06-20 17:53:00 175

转载 DispatchProxy实现动态代理及AOP

DispatchProxy类是DotnetCore下的动态代理的类,源码地址:Github,官方文档:MSDN。主要是Activator以及AssemblyBuilder来实现的(请看源码分析),园子里的蒋老大提供的AOP框架Dora的实现也是大量使用了这两个,不过DispatchProxy的实现更简单点。AOP实现:#region 动态代理 dispatchproxy aop示例...

2019-06-20 14:38:00 178

转载 策略模式重构条件语句

通过策略模式来重构优化代码里面的switch/case分支代码。极大程度上提高了程序的扩展性。当然,如果分支比较多,每次都需要新增加一个类,这的确是有点麻烦,可以考虑使用反射来实现。代码:namespace DP{ public enum State { Alaska, NewYork, Florida }...

2019-06-05 18:26:00 215

转载 观察者模式-C#实现

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式有四个角色:抽象主题、具体主题、抽象观察者、具体观察者。抽象主题:把所有观察者对象的引用保存到一个聚集里,每个主题都可以有任何数量的观察者。具体主题:将有关状态存入具体观察者对象;在具体主题内部状态改变时,给所有登记过的观察者发出通知。抽象观察者:为所有的具体观察者定...

2019-06-03 21:10:00 131

转载 日常开发规范(持续更新)

开发注意事项建表时,一定要选择好可能需要建索引的字段,而且尽量为多个字段建立 多列索引 而不是为每个字段建立单列索引,要不然后期数据量一大,查询将会非常慢select where order by等sql关键字后最好接索引字段,要不然容易走全表查询,在编写sql语句时,可先使用explain查看语句的执行结果,可参考 MySQL高级知识(六)——索引优化在代码中尽量多用async...

2019-05-26 15:56:00 116

转载 工厂模式-C#改良实现

参考了下网上的工厂模式实现,总的来说例子还是OK得,但是示例太单一了,因此我做了下优化的改良实现。namespace DP{ public interface ICreditCard { string GetCardType(); int GetCreditLimit(); int GetAnnualCharge();...

2019-05-24 11:34:00 103

转载 建造者模式-C#改良实现

区分网上已有的一般建造者模式实现,个人觉得实现太单一了,自己google查了一些好的实现,挑了其中比较适合的,做个笔记。 # region 标准Builder模式实现 // 产品 class Television { public string Code { get; set; } public string Displa...

2019-05-15 14:30:00 117

转载 设计模式学习心得(持续更新)

本博文仅仅是笔者自己的学习路线,归纳整理了一些好的设计模式资料。1、策略模式参考资料:c#设计模式-策略模式 c#设计模式之策略模式定义是:封装一组算法,每个算法为独立的类,可以相互替代,因为它们有相似的行为。策略模式主要是将产品共有的部分抽象出来,不同的行为据此抽象作不同的具体实现,最后再有一个Context解耦客户端调用与服务端的实现,客户端是明确知道有哪些行为的。注意: ...

2019-05-14 11:52:00 290

转载 996 不是福气,努力也未必成功(转)

那一年,我加入了某知名公司的某知名部门,在办公室中,我看到了到处都挂着——“努力就会成功”的条幅,这个部门中大多数员工的邮件签名都会有“努力就会成功”,我感到一种热血沸腾的气氛,这是我在多年工作来都没有感受到的,当时挺高兴地能和这样一群人工作,也没多想。直到有一天,我看到这些高级的软件工程师们把自己关在又挤又吵的会议室中,拼命地加班,真是拼命,周一到周日,每天早上 10 点到凌晨 3 点...

2019-04-24 10:37:00 149

转载 AspNetCore.AsyncInitialization库源码分析

AspNetCore.AsyncInitialization这个库是用来实现在asp.net core应用程序启动时异步执行异步任务。可参考:如何在ASP.NET Core程序启动时运行异步任务(2)。IAsyncInitializer接口就是用来实现执行异步任务的接口,此接口签名:public interface IAsyncInitializer { ...

2019-04-21 19:50:00 84

转载 docker-compose模板文件

mysql、redis、asp.net core项目应用程序三个常见的docker-compose文件模板参考:version: "3"services: mysql: restart: always image: hub.duoyioa.com/public/mysql:5.7.18 container_name: ${SERVICE_N...

2019-04-17 20:18:00 172

转载 asp.net core1.1的PlatformAbstraction源码

PlatformAbstraction类在现在的asp.net core中已经废弃了,但是此类的设计还是不错的,可以借鉴,源码如下:namespace Microsoft.Extensions.PlatformAbstractions{ public class PlatformServices { private PlatformSer...

2019-04-16 17:10:00 103

转载 docker-compose模板文件参数说明

working_dir:一般这个参数用在应用程序Services下,我们指定应用程序所在的目录为当前目录,类似linux中的cd working_dir。其余的参数,例如command等就是基于此参数指定的目录下执行的。docker-entrypoint-initdb.d:此参数用于在第一次启动docker的时候,执行sh文件以及sql文件用于初始化数据库等。docker从入门...

2019-04-14 20:09:00 143

转载 easynetq发布订阅demo实现注意事项

最近开始在项目中使用easynetq,大概了解了下api,在网上看了下示例,结果没有一个运行成功的,一个最简单的发布订阅都没有成功。我是直接运行起来别人的示例,不应该啊,后来一直分析一直分析,最后发现:消息没有序列化!这还是其一,第二点,应该要先起来消息接收端,再起来消息发布端。一开始就是简单的:static void Main() { ...

2019-03-29 21:25:00 252

转载 C#的排序Sort和OrderBy扩展方法

可以实现一个IComparable接口的CompareTo方法,或者是给予List的Sort扩展方法,传入委托实现,举个例子:list.Sort((a, b) => { var o = a.sortIndex - b.sortIndex; return o; })其实我们...

2019-03-25 21:03:00 977

转载 程序员,不要急于学习编程语言,先学会如何解决问题(转)

这是一篇关于虚度青春的短篇回忆录。多年来,我一直在学习编程语言,然后用它们来构建更好的投资工具。在建立预测和风险管理模型之余,编程方面的工作堆积如山。但实际上,我并没有花太多时间在真正需要解决的问题上。我把大部分注意力放在了算法和编程语言上。多年来,我每周都要花几个小时学习计算机基础知识,却没有花太多时间应用这些知识来让现实世界变得更美好。而我的一个朋友却基于微软 Off...

2019-02-26 11:42:00 94

转载 .Net异步关键字async/await的最终理解

由于之前的项目中自己突然想试试异步action,于是使用了一下,突然就对异步action的执行流程以及原理及其好处产生了兴趣,再参考了一些文章之后,就做了下归类。我们可以不需要太深入的理解底层,但是最基本的执行流程以及作用我们还是要清楚地。1、async/await在程序中的的执行流程/顺序:在你的代码块里使用这两个关键字,你得知道它们在代码里面的执行顺序。参考:教你正确...

2019-02-14 20:14:00 184

转载 浅谈C#常用集合类的实现以及基本操作复杂度

List 集合类是顺序线性表,Add操作是O(1)或是O(n)的,由于List的容量是动态扩容的,在未扩容之前,其Add操作是O(1),而在需要扩容的时候,会拷贝已存在的那些元素同时添加新的元素,此时的Add操作是O(n)的。而对于Contains方法,其是按照线性检索的,其复杂度是O(n)。而BinarySearch方法,其是按二分查找的,其复杂度是O(lg n)。SortedLi...

2019-02-11 23:05:00 155

转载 C# SortedDictionary以及SortedList的浅谈

  msdn叙述:The SortedDictionary<TKey, TValue> generic class is a binary search tree with O(log n) retrieval, where n is the number of elements in the dictionary. In this, it is similar to t...

2019-01-26 15:40:00 311

转载 ef core的外键约束笔记

ef core设置可选外键,有如下几种方式:1、在依赖实体AAA中,并不显式设置外键属性XXXId2、手动设置外键属性XXXId为可空类型(int?等类型)3、在实体类与数据表进行映射时,配置狭隘属性的方式配置可选外键builder.Property<int?>("XXXId")4、可以在依赖实体中定义外键属性的前提下手动配置映射关系关联是否可空builder.H...

2019-01-20 15:57:00 1891

转载 Orleans框架简单示范

希望现在学习Orleans不会晚,毕竟Server Fabric都开源了。本篇博客从Sample的HelloWorld示例程序来解读Orleans的Grains。Server配置参考 : https://dotnet.github.io/orleans/Documentation/clusters_and_clients/configuration_guide/server_conf...

2019-01-01 19:09:00 192

转载 C#订阅与发布标准实现

大概看了下C#官方提供的IObservable接口以及IObserver接口来实现发布和订阅,写的很标准,很有代表性,做下笔记,以后要是项目需要用到发布订阅再基于自己的需求改:public class BaggageInfo{ private int flightNo; private string origin; private int loca...

2018-12-14 20:43:00 130

转载 aspnet core运行后台任务

之前在公司的一个项目中需要用到定时程序,当时使用的是aspnet core提供的IHostedService接口来实现后台定时程序,具体的示例可去官网查看。现在的dotnet core中默认封装了实现IHostedService接口的基类BackgroundService,该类实现如下:// Copyright (c) .NET Foundation. All rights ...

2018-11-03 15:07:00 381

转载 xss的一般防护措施(及CreateDefaultBuilder源码)

从上个礼拜开始,公司的安全小组就开始排查公司项目的安全性,首屈一指的就是xss问题,为此我总结了下我的经验。1、对后台程序的输出数据做html编码处理,前端做简单的替换处理2、如果业务需要,后台可以使用HtmlSanitizer第三方类库(该库直接依赖于.net standard,因此可在dotnet core下引入)来做白名单过滤,强烈推荐!富文本编辑器传到后台的数据会加上do...

2018-11-02 21:05:00 96

转载 教你正确打开async/await关键字的使用

  这段时间在项目开发中看到了一些async/await的使用,在aspnet core的host组件源码中也看到了许多的async/await代码。在开发时,正确的使用了async/await是可以提高程序的性能。下面的代码教你正确的理解await关键字的暂停/阻塞方法调用:static void Main(string[] args) { ...

2018-10-27 16:23:00 103

转载 asp.net core的DI框架思考以及服务实例的获取方式总结

转载请注明出处:https://home.cnblogs.com/u/zhiyong-ITNote/整个asp.net core管道从WebHostBuilder到WebHost到后续请求的类中,都是使用一个ServicesCollection。WebHostBuilder类中注册的服务,以及后续用户在Startup类的ConfigureServices方法中注入的服务都是在这个集...

2018-09-09 15:26:00 402

转载 并发相关随笔(持续更新)

并发控制策略:乐观并发控制与悲观并发控制。乐观并发:通过冲突监测和事务回滚来防止并发业务事务中的冲突悲观并发:每次只允许一个业务事务访问数据以防止并发业务事务中的冲突读写锁:读写锁是互斥的(得到了读锁就不能再获取写锁)。读写锁可以用来解决不一致读问题,悲观锁策略可以通过读加锁和写加锁来处理这个问题。读数据时需要一个读锁(或者叫共享锁);写数据时需要一个写锁(或者叫排它锁)。对于读锁,...

2018-08-28 23:56:00 68

转载 为什么Dotnet Core的DI默认是在控制器中注入

转载请注明出处:https://www.cnblogs.com/zhiyong-ITNote/DI的大概过程抽象成如下:接口对象 <-- 实现对象 <-- 抽象对象在抽象对象中引入接口,通过实例化接口对象来调用实现对象的方法或是成员变量。那么就需要实现或者生成抽象对象,一般在已有的IOC框架或是MVC框架中,都会有一个专门的抽象对象,该抽象对象会在IOC框架或者MV...

2018-08-18 13:24:00 176

转载 在控制台下玩玩dotnet core内置原生的DI

转载请注明出处:http://www.cnblogs.com/zhiyong-ITNote/在基于dotnet core的web开发中,我们会经常用到DI,那么如果单单使用dotnet core自身提供的一整套DI程序,该如何来实现呢?直接上代码吧:public interface IBar{ void MethodOne(); void Me...

2018-08-16 00:36:00 94

转载 asp.net core 依赖注入实现全过程粗略剖析(3)

接着 前面,前面的过程是普遍常用的依赖注入解析过程,我们正常都是在startup类中注入依赖服务,但是,笔者这周开发的时候遇到个问题,不同服务的生命周期不同,不能调用服务。举个例子,AddDbContext注入数据库上下文,生命周期默认是scoped,但是我有个需求注入的服务是单例的,因此我注入的单利服务不能引用数据库上下文来调用数据库,最后是通过CreateScoped来解决的。因此,...

2018-08-04 17:02:00 397

转载 EF 下如何更新数据表数据

转载请注明出处:http://www.cnblogs.com/zhiyong-ITNote/一直不习惯linq的扩展方法,每次用的时候,贼不顺手,尤其是查数据的时候,这不更新个数据库这么简单地需求都搞了一个小时(好吧,也有心不在焉的因素)。总结了一下,代码如下:private readonly PracticeDevDbContext _context;public ...

2018-07-31 00:20:00 698

转载 asp.net core 依赖注入实现全过程粗略剖析(2)

接着 上篇 目前也算是交代清楚了相关的类。那么框架具体是如何来实例化的呢?整个的流程是怎么样的。我们参考源码中的Test文件夹来看看:var collection = new ServiceCollection();collection.AddTransient<DependOnNonexistentService>();var provider = ...

2018-07-29 23:43:00 101

转载 asp.net core 依赖注入实现全过程粗略剖析(1)

转载请注明出处:https://home.cnblogs.com/u/zhiyong-ITNote/常用扩展方法 注入依赖服务:new ServiceCollection().AddSingleton<IApplicationBuilder, ApplicationBuilder>();View Code// AddSingleton多个重载方法...

2018-07-29 13:16:00 108

转载 无可奈何的开始了jquery的“奇淫技巧”

转载请注明出处:https://home.cnblogs.com/u/zhiyong-ITNote/修改一个已有的项目,主要是前端方面,一般的项目后端都是处理好了的,不需要改也不能改,除非特殊需求。然后就遇到了牛逼的代码。本来看别人已有的代码做开发就是一件很头疼的事,一个函数一个方法一个属性的找,眼睛疼....然后今天改代码还特别头疼,大概说说:首先不能使用jquery-ui的自动...

2018-07-20 23:20:00 97

转载 asp.net core自定义模型验证——前端验证

转载请注明出处:http://www.cnblogs.com/zhiyong-ITNote/官方网站:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/models/validation?view=aspnetcore-2.1首先派生自ValidationAttribute以及IClientModelValidator:pu...

2018-07-19 20:38:00 338

空空如也

空空如也

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

TA关注的人

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