- 博客(40)
- 收藏
- 关注
转载 .NET分布式大规模计算利器-Orleans(一)
写在前面Orleans是基于Actor模型思想的.NET领域的框架,它提供了一种直接而简单的方法来构建分布式大规模计算应用程序,而无需学习和应用复杂的并发或其他扩展模式。我在2015年下半年开始应用Orleans,当时公司的交易系统采用的架构就是基于Orleans框架的,其展现出来的高性能、高并发以及惊人的稳定性深深地吸引了我,也让我认识到了传统三层无状态架构的缺陷。本文主要关...
2019-09-23 09:55:00 968
转载 .NET Core 3.0之深入源码理解Host(二)
写在前面停了近一个月的技术博客,随着正式脱离996的魔窟,接下来也正式恢复了。本文从源码角度进一步讨论.NET Core 3.0 中关于Host扩展的一些技术点,主要讨论Long Run Program的创建与守护。关于Host,我们最容易想到的就是程序的启动与停止,而其中隐藏着非常关键的功能,就是Host的初始化,我们所需要的所有资源都必须而且应该在程序启动过程中初始化完...
2019-09-15 08:55:00 492
转载 回顾过去一年996的折磨
有接近一个月没有写文章了,一方面是因为工作太忙实在没有时间,另一方面是因为没有心情了。加入X公司已经一年多,几乎没有八点前下班过,近半年更是996大小周,近期还有局部的997,再加上时不时的裁员,时常让人不安。我已是身心俱疲,负能量满满,工作效率以及工作热情急速下降。幸好加入了.NET社区,并结识了一群志同道合的朋友,即将加入的公司也受到了社区朋友的大力引荐,使得面试、入职更加的顺利...
2019-09-07 16:49:00 372
转载 【译】尝试使用Nullable Reference Types
随着.NET Core 3.0 Preview 7的发布,C#8.0已被认为是“功能完整”的。这意味着它们的最大亮点Nullable Reference Types,在行为方面也被锁定在.NET Core版本中。它将在C#8.0之后继续改进,但现在可以认为它与C#8.0的其余部分一样是稳定的。目前,我们的目标是尽可能多地收集关于可空性使用过程中的反馈以发现问题,同时收集有关在.NET...
2019-08-08 15:12:00 585
转载 .NET Core 3.0之深入源码理解HttpClientFactory之实战
写在前面前面两篇文章透过源码角度,理解了HttpClientFactory的内部实现,当我们在项目中使用时,总会涉及以下几个问题:HttpClient超时处理以及重试机制HttpClient熔断器模式的实现HttpClient日志记录与追踪链接下来我们将从使用角度对上述问题作出说明。详细介绍以下代码参考了MSDN,因为代码里展示的GitHub接口...
2019-08-05 09:44:00 659
转载 .NET Core 3.0之深入源码理解HttpClientFactory(二)
写在前面上一篇文章讨论了通过在ConfigureServices中调用services.AddHttpClient()方法,并基于此进一步探讨了DefaultHttpClientFactory是如何创建HttpClient实例和HttpMessageHandler实例的,并了解了DefaultHttpClientFactory内部维护者一个定时器和两个HttpMessageHa...
2019-07-29 09:57:00 394
转载 【译】官宣.NET Core 3.0 Preview 7 的发布(英雄的黎明)
今天,我们宣布推出.NET Core 3.0 Preview 7。我们已经从创建新特性阶段过渡到了完善版本阶段。对于接下来的预览版,我们将把重点放在质量(改进)上。在Windows,macOS和Linux上下载.NET Core 3.0 Preview 7。.NET Core 3.0发行说明API差异GitHub发布报告问题ASP.NET Core和EF ...
2019-07-24 11:53:00 195
转载 .NET Core 3.0之深入源码理解HttpClientFactory(一)
写在前面创建HttpClient实例的时候,在内部会创建HttpMessageHandler链,我们知道HttpMessageHandler是负责建立连接的抽象处理程序,所以HttpClient的维护实际上就是维护HttpMessageHandler的使用,释放HttpClient并不会及时释放连接,而通常情况下一般是创建全局使用的HttpClient实例,以减少重复连接的次数。当然...
2019-07-22 16:04:00 918
转载 .NET Core 3.0之深入源码理解Kestrel的集成与应用(二)
前言前一篇文章主要介绍了.NET Core继承Kestrel的目的、运行方式以及相关的使用,接下来将进一步从源码角度探讨.NET Core 3.0中关于Kestrel的其他内容,该部分内容,我们无需掌握,依然可以用好Kestrel,本文只是将一些内部的技术点揭露出来,供自己及大家有一个较深的认识。Kestrel提供了HTTP 1.X及HTTP 2.0的支持,内容比较多,从趋...
2019-07-15 09:26:00 306
转载 用.NET Core实现一个类似于饿了吗的简易拆红包功能
需求说明以前很讨厌点外卖的我,最近中午经常点外卖,因为确实很方便,提前点好餐,算准时间,就可以在下班的时候吃上饭,然后省下的那些时间就可以在中午的时候多休息一下了。点餐结束后,会有一个好友分享红包功能,虽说这个红包不能提现,但却可以抵扣点餐费用,对于经常点餐的人来说,直接用于抵扣现金确实是很大的诱惑,在点餐之后所获得的那个红包,必须要分享出去才能拆。那么如果自己也想实现...
2019-07-07 09:37:00 192
转载 .NET Core 3.0之深入源码理解Kestrel的集成与应用(一)
写在前面ASP.NET Core 的 Web 服务器默认采用Kestrel,这是一个跨平台、轻量级的Web服务器。在开始之前,先回顾一下.NET Core 3.0默认的main()方法模板中,我们会调用Host.CreateDefaultBuilder方法,该方法的主要功能是配置应用主机及设置主机的属性,设置Kestrel 服务器配置为 Web 服务器,另外还包括日志功能、...
2019-07-01 10:45:00 949
转载 几种设计良好结构以提高.NET应用性能的方法
写在前面设计良好的系统,除了架构层面的优良设计外,剩下的大部分就在于如何设计良好的代码,.NET提供了很多的类型,这些类型非常灵活,也非常好用,比如List,Dictionary、HashSet、StringBuilder、string等等。在大多数情况下,大家都是看着业务需要直接去用,似乎并没有什么问题。从我的实际经验来看,出现问题的情况确实是少之又少。之前有朋友问我,我有没有遇到...
2019-06-24 08:48:00 136
转载 从CLR GC到CoreCLR GC看.NET Core对云原生的支持
内存分配概要前段时间在园子里看到有人提到了GC学习的重要性,很赞同他的观点。充分了解GC可以帮助我们更好的认识.NET的设计以及为何在云原生开发中.NET Core会占有更大的优势,这也是一个程序员成长到更高层次所需要经历的过程。在认识GC的过程中,我们先看一下.NET中内存分配的概要知识。.NET分配内存,主要依据托管资源和非托管资源进行分配。托管资源分配到了托管堆中并受CLR的管...
2019-06-18 09:45:00 258
转载 .NET Core 3.0之深入源码理解Host(一)
写在前面ASP .NET Core中的通用主机构建器是在v2.1中引入的,应用在启动时构建主机,主机作为一个对象用于封装应用资源以及应用程序启动和生存期管理。其主要功能包括配置初始化(包括加载配置以及配置转换为通用的键值对格式),创建托管环境和Host通用上下文、依赖注入等。在.NET Core 3.0中采用了IHostBuilder用于创建Host,同时也不再建议使用Web主机...
2019-06-14 20:17:00 2084
转载 .NET Core 3.0之创建基于Consul的Configuration扩展组件
写在前面经过前面三篇关于.NET Core Configuration的文章之后,本篇文章主要讨论如何扩展一个Configuration组件出来。如果前面三篇文章没有看到,可以点击如下地址访问.NET Core 3.0之深入源码理解Configuration(一).NET Core 3.0之深入源码理解Configuration(二).NET Co...
2019-05-25 14:24:00 351
转载 .NET Core 3.0之深入源码理解Configuration(三)
写在前面上一篇文章讨论了文件型配置的基本内容,本篇内容讨论JSON型配置的实现方式,理解了这一种配置类型的实现方式,那么其他类型的配置实现方式基本可以触类旁通。看过了上一篇文章的朋友,应该看得出来似曾相识。此图主要表达了文件型配置的实现,当然其他配置,包括自定义配置,都会按照这样的方式去实现。JSON配置组件的相关内容该组件有四个类JsonConfigura...
2019-05-19 22:58:00 383
转载 .NET Core 3.0之深入源码理解Configuration(二)
文件型配置基本内容上一篇文章讨论了Configuration的几个核心对象,本文继续讨论Configuration中关于文件型配置的相关内容。相比较而言,文件型配置的使用场景更加广泛,用户自定义配置扩展也可以基于文件型配置进行扩展。如果需要查看上一篇文章,可以点击移步。.NET Core文件型配置中我们提供了三种主要的实现,分别是JSON、XML、INI,请查看下图...
2019-05-19 15:08:00 226
转载 .NET Core 3.0之深入源码理解Configuration(一)
Configuration总体介绍微软在.NET Core里设计出了全新的配置体系,并以非常灵活、可扩展的方式实现。从其源码来看,其运行机制大致是,根据其Source,创建一个Builder实例,并会向其添加Provider,在我们使用配置信息的时候,会从内存中获取相应的Provider实例。.NET Core采用了统一的调用方式来加载不同类型的配置信息,并通过统一的抽象接口IC...
2019-05-13 10:00:00 1230
转载 微服务探索与实践—服务注册与发现
前言微服务从大规模使用到现在已经有很多年了,从之前的探索到一步步的不断完善与成熟,微服务已经成为众多架构选择中所必须面对的一个选项。服务注册与发现是相辅相成的,所以一般会合起来思索。其依托组件有很多,比如Zookeeper,Consul,Eureka等等。本文,我们将探讨服务注册和发现的概念及其使用机制,以使得微服务能够在不知道其确切位置(通常是URL)的情况下消费其他服务...
2019-05-03 15:44:00 222
转载 设计模式之建造者模式
建造者模式简介建造者模式又称生成器模式,它将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。这就要求,我们所要处理的对象必须要有非常强的结构化特征,对于开发人员而言,需要抽象出一般的结构化接口出来,方便进行构建工作。作为一名码农,最难得的应该就是找对象了,就算勉强找到了,要是对人家不好,人家可就离你远去了。所以要对人家好点,学会做饭,多弄...
2019-04-21 21:21:00 121
转载 .NET Core 3.0之深入源码理解Startup的注册及运行
写在前面开发.NET Core应用,直接映入眼帘的就是Startup类和Program类,它们是.NET Core应用程序的起点。通过使用Startup,可以配置化处理所有向应用程序所做的请求的管道,同时也可以减少.NET应用程序对单一服务器的依赖性,使我们在更大程度上专注于面向多服务器为中心的开发模式。目录:Startup讨论Starup所承担的角色S...
2019-04-20 23:10:00 1752
转载 【译】.NET Core 3.0 Preview 3中关于ASP.NET Core的更新内容
.NET Core 3.0 Preview 3已经推出,它包含了一系列关于ASP.NET Core的新的更新。下面是该预览版的更新列表:Razor组件改进:单项目模板新的Razer扩展Endpoint路由集成预呈现Razor类库中的Razor组件改进事件处理Forms & validation运行时编译Work...
2019-04-15 23:23:00 502
转载 C#并发编程之异步编程(三)
写在前面本篇是异步编程系列的第三篇,本来计划第三篇的内容是介绍异步编程中常用的几个方法,但是前两篇写出来后,身边的朋友总是会有其他问题,所以决定再续写一篇,作为异步编程(一)和异步编程(二)的补充。本篇内容主要讨论,在我们的异步代码里,运行的到底是哪个线程,在执行长时间运行操作时线程发生了什么。Await之前在一个被async修饰了的异步方法里,如果没有遇到...
2019-04-08 07:37:00 248
转载 设计模式之中介者模式
中介者模式简介提供一个中介对象出来,用于封装一系列对象的交互,从而使各对象不需要直接交互,进一步降低了对象间的耦合度。这是一种行为型设计模式。由此可见,中介者模式主要解决的是对象间所存在的大量关系,我们都知道,对象间一旦关联紧密,必然会导致系统的复杂性增加,一旦某个对象有所修改,其关联对象也有可能会有跟着更改,这自然不是我们所希望的。有些朋友可能会说,如果交互很多,是不是可...
2019-04-05 15:16:00 153
转载 设计模式之单例模式
单例模式简介单例模式是GOF 23个设计模式中最简单的模式了,它提供了一种创建唯一对象的最佳实现,注意此处的简单只是表述和意图很简单,但是实现起来,尤其是实现一个优美的单例模式却没有那么简单。单例模式归根结底就是要确保一个类只有一个实例,并提供一个全局方式来访问该实例。具体而言,这种模式涉及到一个类,并由这个类创建自己的对象,同时确保只有单个对象被创建,并提供唯一一种方式来...
2019-04-05 12:05:00 126
转载 设计模式之装饰器模式
装饰器模式简介装饰器模式是动态的向一个对象添加新的功能,并且保持其类方法签名的完整性,换言之,其方法及继承结构将不会被改变。这种模式一种结构型模式,是对现有类的包装。这种模式,比生成子类更加灵活,更重要的是,装饰者模式装饰的是特定的行为或者或是职责,也没有必要通过子类实现。在日常生活中,装饰器模式的场景更多是的打扮了,一个妹子,嫌弃自己的脸长得不够漂亮,想换张脸很困...
2019-03-30 20:19:00 150
转载 .NET Core之只是多看了你一眼
感官初体验技术学习是一件系统性的事情,如果拒绝学习,那么自己就会落后以至于被替代。.NET也是一样,当开源、跨平台成为主流的时候,如果再故步自封,等待.NET的就是死路一条,幸好.NET Core问世了,社区反响积极而又强烈,.NET Core的生态体系不断得到丰富。作为.NET技术人员,你必须去深入了解.NET Core,作为非.NET技术人员,.NET Core也值得你去关注。...
2019-03-28 18:03:00 174
转载 C#并发编程之异步编程(二)
写在前面前面一篇文章介绍了异步编程的基本内容,同时也简要说明了async和await的一些用法。本篇文章将对async和await这两个关键字进行深入探讨,研究其中的运行机制,实现编码效率与运行效率的提升。异步方法描述:使用async修饰符来标识一个方法或Lambda表达式的,被称之为异步方法。异步方法编译:编译器在遇到await表达式后会截断方法,并将剩余的异步方法注册...
2019-03-23 15:52:00 301
转载 设计模式之策略者模式
策略者模式简介策略者模式定义一个算法接口,并由其实现类去实现,使得每一个算法都得到封装,并让他们可以相互替换。这是一种行为型模式。策略者模式降低了算法行为和环境角色的耦合度,使得算法可以独立发生变化。策略者模式在现实世界的使用很多,比如互金场景中的优惠券模式,可以分为本金券,返现券,加息券,增收券等,每种卡券给予用户享受不同的权益,如果有一天增加了新的优惠券,也很容易扩展...
2019-03-22 14:41:00 258
转载 设计模式之职责链模式
职责链模式简介及UML职责链也叫责任链,他是一种行为型模式,它为请求创建了一个接收请求者对象的链,并将请求沿着这条链传递到目标对象去处理。该模式最简单的实现方式就是运用里氏替换原则,对每个职责所持有的对象进行抽象,并使得每个职责对象都拥有共同的父类,通过对外提供出具有一般意义的接口。范例该范例,是我在对微服务中,服务发现的容错性进行处理的一种处理方案,考虑到服务...
2019-03-17 11:34:00 106
转载 C#并发编程之异步编程(一)
写在前面C#5.0中,对异步编程进行了一次革命性的重构,引入了async和await这两个关键字,使得开发人员在不需要深刻了解异步编程的底层原理,就可以写出十分优美而又代码量极少的代码。如果使用得当,你可以写出具有并行化并且性能较高的程序,但是同时也增加了对异步编程理解的复杂度,毕竟在C#5.0里,你已经看不到异步编程具体是如何实现的了,需要花费额外的经历去研究探索。使用异步编程...
2019-03-16 16:49:00 563
转载 C#并发编程之概述
写在前面并发编程一直都存在,只不过过去的很长时间里,比较难以实现,随着互联网的发展,人口红利的释放,更加友好的支持并发编程已经成了主流编程语言的标配,而对于软件开发人员来说,没有玩过并发编程都会有点不好意思。本系列文章将会以C#语言为主,详细介绍并发编程。什么是并发编程,其实很简单,并发编程就是在一台处理器上同时做多件事情,并发编程的目标就是充分利用处理器的每一个核,以达到最高的...
2019-03-10 21:18:00 206
转载 微服务探索与实践—总述
背景软件开发是一个不断发展的过程,从当初的面向过程为主到如今的面向对象的开发,软件开发者不断探索与实践更加符合时代发展要求的开发模式与架构思想,而这,也在极大程度上提高了软件开发的效率。微服务是一种架构模式或者说是架构风格,而架构这个词语,相信有很多人都曾试图为它做出明确的定义,可是很难下,因为软件架构也在不断发展,内涵也在不断得到丰富。只是不变的是,我们需要通过软件架构,根据族...
2019-03-09 21:56:00 196
转载 设计模式之模板方法模式
1、模板方法意图及UML图模板方法模式属于行为型设计模式,它定义了一个操作的算法框架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构的情况下重新定义该算法的某些特定步骤。该模式提供了算法的基本框架,所谓算法框架,就是只提供了普遍性的逻辑,而不确定性或者说特定场景的逻辑则在子类中实现。这种模式,巧妙的运用了继承的特性,实现了对确定性和不确定逻辑的分离。我们...
2019-03-07 09:49:00 116
转载 C#扩展方法原理及其使用
1、写在前面今天群里一个小伙伴问了这样一个问题,扩展方法与实例方法的执行顺序是什么样子的,谁先谁后(这个问题会在文章结尾回答)。所以写了这边文章,力图从原理角度解释扩展方法及其使用。以下为主要内容:什么是扩展方法 扩展方法原理及自定义扩展方法 扩展方法的使用及其注意事项2、什么是扩展方法 一般而言,扩展...
2019-03-05 17:31:00 505
转载 SQL Server之索引解析(二)
1、堆表堆表通过IAM连接一起,查询时全表扫描。1、1 非聚集索引结构叶子节点数据结构:行数据结构+Rid(8字节)中间节点数据结构:(非聚集非唯一索引)行数据结构+Page(4)+2+ Rid(8字节)中间2字节有疑问?(非聚集唯一索引)行数据结构+分割符?+ Page(4)堆表非聚集索引结构1、2 聚集...
2019-02-26 11:53:00 193
转载 设计模式之工厂方法模式
定义定义一个创建对象的接口,但让这个接口的实现类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。也就是说,工厂方法模式会定义一个单独的方法去创建或者管理对象。考虑到创建对象的功能粒度,比较好的方式是未每一个具体目标对象设置一个单独的工厂实现类以及对象创建方法。工厂方法模式的类图只去看定义,可能学术化太强,不足以形成一种比较形象的思维。...
2019-02-22 10:11:00 149
转载 SQL Server之索引解析(一)
1、写在前面微软专门给出SQL Server设计思路及实现路线,从7大体系结构阐述是如何实现,通过了解这些,我们就可以总结出数据库设计原则、编程中sql写法及注意事项,从而优化我们的系统性能,本系列着重讨论SQL Server索引体系。以下为主要内容:页和区体系结构 表和索引数据结构体系结构 查询处理体系结构2、数据存...
2019-02-21 17:44:00 327
转载 设计模式之简单工厂模式
简单工厂模式,需要说明的是,它并不属于GOF 23种设计模式中的一种。但它却丰富了工厂模式家族,因为其简单的思想和使用方式,也有很广泛的使用简单工厂模式又称为静态工厂模式,它用来确定创建哪一种对象的实例。这种模式应该说是最简单最实用的工厂模式了,它将外界创建对象的逻辑收集起来,做到了对外界隔离对象的创建逻辑的目的,使外面完全的成为了对象实例的使用者,明确了职责。不过这种模式也有着...
2018-11-27 13:58:00 144
转载 设计模式之总体介绍
1.背景与介绍 设计模式是经过反复使用、经过分类的代码总结。设计模式的目的是提高代码可重用性和可靠性,并使代码条理清晰、易于理解、易于维护。 设计模式描述了在各种情况下,要选择什么样的方案来解决问题。设计模式通常以类和对象来描述其中的关系和相互作用,换句话就是在设计模式里,这些类和普通的类没有区别,只是它们的相互作用形成了各种设计模式,并解决了很多现实性的问题。 设计...
2018-11-26 15:29:00 144
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人