06 2018 档案

Apache SkyWalking的架构设计【译文】
摘要:Apache SkyWalking提供了一个功能强大并且很轻量级的后端。在此,将介绍为什么采用以下方式来设计它,以及它又是如何工作的。 架构图 对于APM而言,agent或SDKs仅是如何使用libs的技术细节。手动或自动的形式与架构无关,因此在本文中,我们不讲这些内容,可将这些看成为Client 阅读全文

posted @ 2018-06-30 12:54 SuperSnowYao 阅读(1908) 评论(2) 推荐(2) 编辑

RyuJIT的华丽转身【译文】
摘要:2018-06-19 RyuJIT是作为.NET即时编译器的代号称谓,它是.NET运行时的基本组件之一。与此相反的是,Roslyn作为C#编译器,其编译C#代码成为IL字节码。然后,其再将IL字节码编译成相对于多种处理器的机器码。 随着最近对dotnet/coreclr #18064的合并,将生成组 阅读全文

posted @ 2018-06-23 20:12 SuperSnowYao 阅读(2773) 评论(4) 推荐(12) 编辑

C#设计模式总结
摘要:一、 设计原则 使用设计模式的根本原因是适应变化,提高代码复用率,使软件更具有可维护性和可扩展性。并且,在进行设计的时候,也需要遵循以下几个原则:单一职责原则、开放封闭原则、里氏代替原则、依赖倒置原则、接口隔离原则、合成复用原则和迪米特法则。下面就分别介绍了每种设计原则。 1.1 单一职责原则 就一 阅读全文

posted @ 2018-06-18 20:48 SuperSnowYao 阅读(548) 评论(1) 推荐(0) 编辑

【23】备忘录模式(Memento Pattern)
摘要:一、引言 在上一篇博文分享了访问者模式,访问者模式的实现是把作用于某种数据结构上的操作封装到访问者中,使得操作和数据结构隔离。而今天要介绍的备忘者模式与命令模式有点相似,不同的是,命令模式保存的是发起人的具体命令(命令对应的是行为),而备忘录模式保存的是发起人的状态(而状态对应的数据结构,如属性)。 阅读全文

posted @ 2018-06-18 19:38 SuperSnowYao 阅读(232) 评论(0) 推荐(0) 编辑

【22】访问者模式(Visitor Pattern)
摘要:一、引言 在这篇博文中,我将为大家分享我对访问者模式的理解。 二、访问者模式介绍 2.1 访问者模式的定义 访问者模式是封装一些施加于某种数据结构之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保存不变。访问者模式适用于数据结构相对稳定的系统, 它把数据结构和作用于数据结构之上的操 阅读全文

posted @ 2018-06-18 19:06 SuperSnowYao 阅读(191) 评论(1) 推荐(0) 编辑

【21】责任链模式
摘要:一、引言 在现实生活中,有很多请求并不是一个人说了就算的。例如面试时的工资,低于1万的薪水可能技术经理就可以决定了,但是1万~1万5的薪水可能技术经理就没这个权利批准,可能就需要请求技术总监的批准。所以在面试的完后,经常会有面试官说,你这个薪水我这边觉得你这技术可以拿这个薪水的,但是还需要技术总监的 阅读全文

posted @ 2018-06-18 18:19 SuperSnowYao 阅读(234) 评论(0) 推荐(0) 编辑

【20】策略者模式(Strategy Pattern)
摘要:一、引言 本文要介绍的策略模式也就是对策略进行抽象,策略的意思就是方法,所以也就是对方法的抽象,下面具体分享下我对策略模式的理解。 二、策略者模式介绍 2.1 策略模式的定义 在现实生活中,策略模式的例子也非常常见。例如,中国的所得税,分为企业所得税、外商投资企业或外商企业所得税和个人所得税。针对于 阅读全文

posted @ 2018-06-18 15:54 SuperSnowYao 阅读(232) 评论(0) 推荐(0) 编辑

【19】中间者模式(Mediator Pattern)
摘要:一、引言 在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室、QQ群和短信平台,这些都是中介者模式在现实生活中的应用,下面就具体分享下我对中介者模式的理解。 二、 中介者模式的介绍 2.1 中介者模式的定义 从生活中的例子可以看出,不论是QQ游戏还是QQ群,它们都是充当一个中间平台。QQ 阅读全文

posted @ 2018-06-18 14:46 SuperSnowYao 阅读(431) 评论(0) 推荐(0) 编辑

【18】观察者模式(Observer Pattern)
摘要:一、引言 在现实生活中,处处可见观察者模式。例如,微信中的订阅号,订阅博客和QQ微博中关注好友,这些都属于观察者模式的应用。在这一章将分享我对观察者模式的理解,废话不多说了,直接进入今天的主题。 二、 观察者模式的介绍 2.1 观察者模式的定义 从生活中的例子可以看出,只要对订阅号进行关注的客户端, 阅读全文

posted @ 2018-06-18 13:54 SuperSnowYao 阅读(155) 评论(0) 推荐(0) 编辑

【17】迭代器模式(Iterator Pattern)
摘要:一、引言 在上篇博文中分享了我对命令模式的理解,命令模式主要是把行为进行抽象成命令,使得请求者的行为和接受者的行为形成低耦合。在这一章中,将介绍一下迭代器模式。 二、迭代器模式的介绍 迭代器是针对集合对象而生的。对于集合对象而言,必然涉及到集合元素的添加删除操作,同时也肯定支持遍历集合元素的操作。我 阅读全文

posted @ 2018-06-18 12:37 SuperSnowYao 阅读(205) 评论(0) 推荐(0) 编辑

【16】命令模式(Command Pattern)
摘要:一、前言 最近项目中发现,对于设计模式的了解是必不可少的,当然对于设计模式的应用那更是重要,可以说是否懂得应用设计模式在项目中是衡量一个程序员的技术水平,因为对于一个功能的实现,高级工程师和初级工程师一样都会实现,但是区别在于它们实现功能的可扩展和可维护性,也就是代码的是否“优美”、可读。但是,要更 阅读全文

posted @ 2018-06-18 10:40 SuperSnowYao 阅读(196) 评论(0) 推荐(0) 编辑

【15】模板方法模式(Template Method)
摘要:一、引言 提到模板,大家肯定不免想到生活中的“简历模板”、“论文模板”、“Word中模版文件”等。在现实生活中,模板的概念就是——有一个规定的格式,然后每个人都可以根据自己的需求或情况去更新它。例如简历模板,下载下来的简历模板的格式都是相同的,然而我们下载下来简历模板之后,我们可以根据自己的情况填充 阅读全文

posted @ 2018-06-18 00:32 SuperSnowYao 阅读(247) 评论(0) 推荐(0) 编辑

【14】代理模式(Proxy Pattern)
摘要:一、引言 在软件开发过程中,有些对象有时候会由于网络或其他的障碍,以至于不能够或者不能直接访问到这些对象,如果直接访问对象给系统带来不必要的复杂性。这时候可以在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象,然后客户端只需要访问代理对象,由代理对象去帮我们去请求目标对象并返回结果给客户端 阅读全文

posted @ 2018-06-17 11:39 SuperSnowYao 阅读(281) 评论(0) 推荐(0) 编辑

【13】享元模式(FlyWeight Pattern)
摘要:一、引言 在软件开发过程,如果我们需要重复使用某个对象的时候,若重复地使用new创建这个对象的话,就需要多次地去申请内存空间了,这样可能会出现内存使用越来越多的情况,这样的问题是非常严重。享元模式可以解决这个问题,下面具体看看享元模式是如何去解决这个问题的。 二、享元模式的详细介绍 在前面说了,享元 阅读全文

posted @ 2018-06-16 22:24 SuperSnowYao 阅读(170) 评论(0) 推荐(0) 编辑

【12】外观模式(Facade Pattern)
摘要:一、引言 在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化。然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作“门面”模式。下面就具体介绍下外观模式。 二、外观模式的详细介绍 2.1 定义 外观模式提供了一个统一 阅读全文

posted @ 2018-06-16 19:50 SuperSnowYao 阅读(269) 评论(0) 推荐(0) 编辑

AutoMapper在项目中的应用
摘要:一、先说说DTO DTO是个什么东东? DTO(Data Transfer Object)就是数据传输对象,说白了就是一个对象,只不过里边全是数据而已。 为什么要用DTO? 1、DTO更注重数据,对领域对象进行合理封装,从而不会将领域对象的行为过分暴露给表现层。 2、DTO是面向UI的需求而设计的, 阅读全文

posted @ 2018-06-14 20:00 SuperSnowYao 阅读(394) 评论(0) 推荐(0) 编辑

为什么要用lock 【readonly】object?为什么不要lock(this)?
摘要:一. 为什么要用lock,lock了什么? 当我们使用线程的时候,效率最高的方式当然是异步,即各个线程同时运行,其间不相互依赖和等待。但当不同的线程都需要访问某个资源的时候,就需要同步机制了。也就是说当对同一个资源进行读写的时候,我们要使该资源在同一时刻只能被一个线程操作,以确保每个操作都是有效即时 阅读全文

posted @ 2018-06-14 14:56 SuperSnowYao 阅读(2782) 评论(0) 推荐(1) 编辑

【11】组合模式
摘要:一、引言 在软件开发过程中,我们经常会遇到处理简单对象和复合对象的情况。例如对操作系统中目录的处理就是这样的一个例子,因为目录可以包括单独的文件,也可以包括文件夹,文件夹又是由文件组成的。由于简单对象和复合对象在功能上区别,导致在操作过程中必须区分简单对象和复合对象,这样就会导致客户调用带来不必要的 阅读全文

posted @ 2018-06-13 18:37 SuperSnowYao 阅读(217) 评论(0) 推荐(0) 编辑

【10-2】复杂业务状态的处理(从状态者模式到FSM)
摘要:一、概述 我们平常在开发业务模块时,经常会遇到比较复杂的状态转换。比如说用户可能有新注册、实名认证中、已实名认证、禁用等状态,支付可能有等待支付、支付中、已支付等状态。OA系统里的状态处理就更多了。 遇到这些处理,很多人可能不假思索的就用最直观的 if/else 或者 switch 来判断状态的方式 阅读全文

posted @ 2018-06-12 16:12 SuperSnowYao 阅读(1334) 评论(0) 推荐(0) 编辑

【10-1】状态者模式
摘要:一、状态者模式的介绍 每个对象都有其对应的状态,而每个状态又对应一些相应的行为,如果某个对象有多个状态时,那么就会对应很多的行为。那么对这些状态的判断和根据状态完成的行为,就会导致多重条件语句,并且如果添加一种新的状态时,需要更改之前现有的代码。这样的设计显然违背了开闭原则。状态模式正是用来解决这样 阅读全文

posted @ 2018-06-10 17:12 SuperSnowYao 阅读(191) 评论(0) 推荐(0) 编辑

【9】装饰者模式
摘要:一、引言 在软件开发中,我们经常想要对一类对象添加不同的功能。例如:要给手机添加贴膜,手机挂件,手机外壳等,如果此时利用继承来实现的话,就需要定义无数的类,如StickerPhone(贴膜是手机类)、AccessoriesPhone(挂件手机类)等,这样就会导致 ”子类爆炸“问题。为了解决这个问题, 阅读全文

posted @ 2018-06-10 15:52 SuperSnowYao 阅读(164) 评论(0) 推荐(0) 编辑

【8】桥接者模式
摘要:一、引言 这里以电视遥控器的一个例子来引出桥接模式解决的问题。首先,我们每个牌子的电视机都有一个遥控器,此时我们能想到的一个设计是——把遥控器做为一个抽象类,抽象类中提供遥控器的所有实现,其他具体电视品牌的遥控器都继承这个抽象类,具体设计类图如下: 这样的实现使得每部不同型号的电视都有自己遥控器实现 阅读全文

posted @ 2018-06-10 14:34 SuperSnowYao 阅读(300) 评论(0) 推荐(0) 编辑

【7】适配器模式
摘要:一、引言 在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象。那么如果将“将现存的对象”在新的环境中进行调用呢?解决这个问题的办法就是我们本文要介绍的适配器模式——使得新环境中不需要去重复实现已经存在了的实现 阅读全文

posted @ 2018-06-10 11:35 SuperSnowYao 阅读(159) 评论(0) 推荐(0) 编辑

【6】原型模式
摘要:一、引言 在软件系统中,当创建一个类的实例的过程很昂贵或很复杂,并且我们需要创建多个这样类的实例时,如果我们用new操作符去创建这样的类实例,这未免会增加创建类的复杂度和耗费更多的内存空间。因为这样在内存中分配了多个一样的类实例对象,然后如果采用工厂模式来创建这样的系统的话,随着产品类的不断增加,导 阅读全文

posted @ 2018-06-09 17:12 SuperSnowYao 阅读(217) 评论(0) 推荐(0) 编辑

【4】抽象工厂模式
摘要:一、引言 工厂方法模式是为了克服简单工厂模式的缺点而设计出来的,简单工厂模式的工厂类随着产品类的增加需要增加额外的代码。而工厂方法模式的每个具体工厂类只完成单个实例的创建,所以它具有很好的可扩展性。但是在现实生活中,一个工厂只创建单个产品这样的例子很少,因为现在的工厂都多元化了,一个工厂创建一系列的 阅读全文

posted @ 2018-06-09 11:15 SuperSnowYao 阅读(266) 评论(0) 推荐(0) 编辑

【3】工厂方法模式
摘要:一、引言 在简单工厂模式中讲到简单工厂模式的缺点,有一点是——简单工厂模式系统难以扩展,一旦添加新产品就不得不修改简单工厂方法,这样就会造成简单工厂的实现逻辑过于复杂。然而本专题介绍的工厂方法模式可以解决简单工厂模式中存在的这个问题,下面就具体看看工厂模式是如何解决该问题的。 二、工厂方法模式的实现 阅读全文

posted @ 2018-06-09 10:05 SuperSnowYao 阅读(251) 评论(0) 推荐(0) 编辑

【2】简单工厂模式
摘要:一、简单工厂模式的介绍 说到简单工厂,自然的第一个疑问当然就是什么是简单工厂模式了? 在现实生活中工厂是负责生产产品的,同样在设计模式中,简单工厂模式我们也可以理解为负责生产对象的一个类。我们平常编程中,当使用"new"关键字创建一个对象时,此时该类就依赖与这个对象,也就是他们之间的耦合度高。当需求 阅读全文

posted @ 2018-06-08 16:50 SuperSnowYao 阅读(220) 评论(0) 推荐(0) 编辑

【1】Singleton模式(单例模式)
摘要:一、单例模式的介绍 说到单例模式,大家第一反应应该就是--什么是单例模式?从“单例”字面意思上理解:一个类只有一个实例。所以单例模式也就是保证一个类只有一个实例的一种实现方法罢了(设计模式其实就是帮助我们解决实际开发过程中的方法,该方法是为了降低对象之间的耦合度。然而,解决方法有很多种,所以前人就总 阅读全文

posted @ 2018-06-06 18:18 SuperSnowYao 阅读(258) 评论(0) 推荐(0) 编辑

SVN提交小结
摘要:在我们用VS进行项目合作开发的过程中,SVN的提交控制是至关重要的,由于版本冲突造成的各种麻烦咱们已经遇到的够多了。所以,总结他们的经验教训,给我们也给其他人做个提醒。下面的第一部分是需要在正式开发之前需要做的,第二部分是开发的过程中需要注意的。 一、排除不必要的提交 1.将编译性的文件排除在提交之 阅读全文

posted @ 2018-06-05 12:39 SuperSnowYao 阅读(1743) 评论(0) 推荐(0) 编辑

【5】Builder模式(构建者模式)
摘要:一、引言 在软件系统中,有时需要创建一个复杂对象,并且这个复杂对象由其各部分子对象通过一定的步骤组合而成。例如一个采购系统中,如果需要采购员去采购一批电脑时,在这个实际需求中,电脑就是一个复杂的对象,它是由CPU、主板、硬盘、显卡、机箱等组装而成的。如果此时让采购员一台一台电脑去组装的话真是要累死采 阅读全文

posted @ 2018-06-03 17:14 SuperSnowYao 阅读(222) 评论(0) 推荐(0) 编辑

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示