• 让代码可测试化


    TransferController ctl = new TransferController(nullnull);//因为这个测试用不到这2个接口,所以用了null

                bool real = ctl.TransferMoney(fromAccount, toAccount, money);

                Assert.IsFalse(real);

            }

            public void TransferMoney_Validate_FromAccount_NotExist_Test()

            {

                string fromAccount = "11111111111111";

                string toAccount = "bbbbbbbbbbbb";

                decimal money = 100;

                ITransferDAO dao = new FakeTransferDAO_NullAccount();

                TransferController ctl = new TransferController(dao, null);//因为这个测试用不到IEmailSender接口,所以用了null

                bool real = ctl.TransferMoney(fromAccount, toAccount, money);

                Assert.IsFalse(real);

            }

            public void TransferMoney_Validate_FromAccount_NotEnoughMoney_Test()

            {

                string fromAccount = "11111111111111";

                string toAccount = "bbbbbbbbbbbb";

                decimal money = 100;

                ITransferDAO dao = new FakeTransferDAO_NotEnoughMoney();

                TransferController ctl = new TransferController(dao, null);//因为这个测试用不到IEmailSender接口,所以用了null

                bool real = ctl.TransferMoney(fromAccount, toAccount, money);

                Assert.IsFalse(real);

            }

        }

    用到了如下2个Fake类

    class FakeTransferDAO_NullAccount : ITransferDAO

        {

            public void MinuseMoney(string fromAccount, decimal money)

            {

                throw new NotImplementedException();

            }

            public void PlusMoney(string toAccount, decimal money)

            {

                throw new NotImplementedException();

            }

            public Account GetAccount(string accountId)

            {

                return null;

            }

        }

        class FakeTransferDAO_NotEnoughMoneyITransferDAO

        {

            public void MinuseMoney(string fromAccount, decimal money)

            {

                throw new NotImplementedException();

            }

            public void PlusMoney(string toAccount, decimal money)

            {

                throw new NotImplementedException();

            }

            public Account GetAccount(string accountId)

            {

                Account account = new Account();

                account.Money = 20;

                return account;

            }

        }

    暂时先写到这里,呵呵... 

    摘要: 共享配置 介绍 Internet的出现已经改变了公司处理的业务及市场的方式。随着web新技术的出现,以及随web一同出现的顾客可访问性的增长,对应用程序的压力,如:可伸缩性、可用性、有效性以及可管理性,都正在日益上升。这些应用程序需要有能力提供很高的上线时间、高吞吐量 、高速的用户事物处理能力以及更好的投资回报价值,例如相比其他同类系统要有比较好的服务质量。 Web服务器场-服务器集群-已经成为了标准做法,以提供好的伸缩性、可用性以及分布负载的可管理性。这些特性是web服务器场和负载均衡背后的主要目标。使用web服务器场后,组织能够提供一个可伸缩性强的方式来增加基于用户的应用程序可访问性和资源阅读全文
    posted @ 2011-04-27 23:03 Aaron Dai 阅读(1025) | 评论 (0) 编辑
     
    摘要: 在应用程序服务器上为HostNameMemory亲和提供程序配置WMI服务 概览 在ARRv1中,提供了2个主机名亲和程序供选择: 1. Microsoft.Web.Arr.HostNameRoundRobin 2. Microsoft.Web.Arr.HostNameMemory Microsoft.Web.Arr.HostNameRoundRobin提供程序不依赖于应用程序服务器。使用这个提供程序时,ARR只是简单的分配主机名。 然而,Microsoft.Web.Arr.HostNameMemory提供程序需要被授权访问应用程序服务器相应权限后才能让ARR服务器查询必要的内存分配情况来完成阅读全文
    posted @ 2011-04-16 21:33 Aaron Dai 阅读(160) | 评论 (0) 编辑
     
    摘要: 多ARR服务器的使用 概览 本篇介绍在多ARR服务器与主机名亲和场景中使用Microsoft External Cache。 External Cache模块只在下列情况中才会变成必须的: 1. 启用了主机名亲和特性 2. 环境中存在多个ARR服务器 External Cache是个基于磁盘的缓存模块 目标 在ARR中配置及使用Microsoft External Cache: 先决条件 本演示需要下列条件: l至少2台装有IIS7的Windows2008, 或者更高版本 lMicrosoft ARR及关联模块 l至少2台装有工作站点和应用程序的应用程序服务器 l一个能够被ARR访问到的文件共阅读全文
    posted @ 2011-04-15 22:40 Aaron Dai 阅读(635) | 评论 (0) 编辑
     
    摘要: 使用ARR来实现主机名共享 概览 使用ARR方式来实现托管主机的共享。关于Host name affinity的更多信息请参考Shared hosting deployment using Application Request Routing。( 这里翻译不准:( ) *前几篇描述的都只是只有一个默认网站的情况,这篇文章描述的是主机名相关的,有点类似于IIS6中的主机头负载均衡* 本篇旨在一步步指导你配置host name affinity特性: 目标 在共享主机环境中配置ARR 先决条件 本演示需要以下先决条件: l装有IIS7的Win2008,或者更新版本 lMicrosoft ARR和阅读全文
    posted @ 2011-04-14 22:31 Aaron Dai 阅读(1158) | 评论 (4) 编辑
     
    摘要: 使用ARR管理试点方案(涉及到了A/B Testing) 概览 本主题指导读者使用ARR来发起及管理试点方案或beta方案。ARR能够设置成把不同的用户路由到不同的试点站点,或者根据流量来决定将部分请求路由到试点站点。本演示将主要定位在根据用户环境的特征来将部分请求路由到试点站点。 目标 配置ARR来管理及规避试点方案所带来的风险。 先决条件 本演示需要以下先决条件: l装有IIS7的Win2008,或者更高版本 lMicrosoft ARR及相关模块 l至少4台装有工作站点和应用程序的内容服务器。两台服务器将被用于模拟production站点,其他两台将用于模拟试点站点 l除了Microso阅读全文
    posted @ 2011-04-13 21:33 Aaron Dai 阅读(1083) | 评论 (1) 编辑
     
    摘要: 配置ARR方式的三层部署体系 概览 本篇文章指导你用ARR来配置部署三层结构。三层部署体系需要由Web层、应用程序层和数据层组成,如下图: 一般在这种部署场景中,静态内容是由Tier1层的服务器host的,而动态内容是由Tier2层来host的。 先决条件 本演示需要以下几个先决条件: l装有IIS7的Win2008,或者更高版本 lMicrosoft Application Request Routing和相关联的模块 l至少2台部署有工作站点和应用程序的内容服务器 l在ARR服务其上,静态内容必须是能访问的 步骤1 – 为静态内容更改相应的URL Rewrite规则 在本步骤中,URL r阅读全文
    posted @ 2011-04-12 20:23 Aaron Dai 阅读(1062) | 评论 (0) 编辑
     
    摘要: 使用ARR实现HTTP负载均衡 概述 本主题旨在指导读者一步步地配置ARR来实现高可用性及可扩展性。下面的演练同时描述了一些关于监控ARR内容服务器健康状况及客户端与服务器间亲和力的特性。 目标 下图是使用ARR来负载均衡HTTP请求的结构图: 先决条件 本演练需要下列先决条件: l装有IIS7的Win2008,或更高版本 lMicrosoft ARR及相关模块 l至少2台装有工作站点和应用程序的服务器 如果ARR组件没有安装,请在下列位置下载: lMicrosoft Application Request Routing Version 1 for IIS 7 (x86) here lMic阅读全文
    posted @ 2011-04-11 00:02 Aaron Dai 阅读(520) | 评论 (6) 编辑
     
    摘要: 定义及配置ARR服务器组 概述 本篇将指导读者一步步在IIS7下定义及配置ARR服务器组。服务器农场实际是一个由应用服务器组成的逻辑组,是基于http请求和负载均衡算法管理之下的。 目标 基于ARR来定义及配置服务器农场,原理如下所示: 先决条件 本次演练需要下列这些模块: l装有IIS7的Windows 2008或者更新版本 lMicrosoft Application Request Routing 和关联模块 l至少由两台应用服务器组合的工作站点和应用程序 步骤1 – 创建一个基于ARR的服务器农场 创建和定义服务器农场,图形方式如下: 1. 打开IIS管理器 2. 选中并且展开服务器根阅读全文
    posted @ 2011-04-09 22:31 Aaron Dai 阅读(1303) | 评论 (4) 编辑
     
    摘要: 目标 在IIS7上安装ARR v1以及依赖的模块。ARR安装包包含了下列组件: lMicrosoft URL Rewrite Module for IIS 7.0. lMicrosoft Web Farm Management Version 1 for IIS 7.0. lMicrosoft Application Request Routing Version 1 for IIS 7.0. lMicrosoft External Cache Version 1 for IIS 7.0. 在本文档中描写的步骤会安装这4个模块。 先决条件 本演练需要下列先决条件: 装有IIS7.0或者更新版本阅读全文
    posted @ 2011-04-08 23:23 Aaron Dai 阅读(1557) | 评论 (2) 编辑
     
    摘要: 翻译原文Url: http://learn.iis.net/page.aspx/489/using-the-application-request-routing-module/ 介绍 Microsoft Application Request Routing (ARR) for IIS 7是一个基于代理的路由模块,它基于http头、server variables和负载均衡算法将http请求转发到各个内容服务器。ARR能用在以下情况下: 增进系统的有效性和可扩展性更好的利用各个内容服务器的资源简化系统部署,包括引导管理以及A/B测试减少管理费用及为共享主机提供商提供更多的机会 ARR依赖UR阅读全文
    posted @ 2011-04-07 22:34 Aaron Dai 阅读(1603) | 评论 (3) 编辑

    摘要: 最近读了一本管理方面的书,叫《领导无形,管理有道》,以此篇文章做下读书小结。总结如下:1. 要让更多的年轻人加入公司2. 新老员工需要持续的培训3. 新老员工培训之后需要进行考核4. 认识到员工只会做即将检查的事5. 规章制度的建立、声明5. 规章制度违反后的惩罚6. 绝对不能触犯的事触犯后的有力惩罚、开除7. 惩罚到心坎里8. 激励,奖励的不同形式、不同的使用花样9. 建立良性竞争: a. 升迁者必须要培养出相对应的替代自己的下属才能得到升迁 b. 要有平级的多余1位同仁推荐才能得到升迁10. 为员工制定发展计划11. 不停的推广企业的核心价值观其中上面的第一点和第二点能让避免公司出现员工可阅读全文
    posted @ 2012-04-24 21:05 Aaron Dai 阅读(331) | 评论 (3) 编辑
     
    摘要: 软件开发中质量与进度的痛 在软件开发中,质量很重要(这个估计谁都知道),但是很多时候质量看上去却又不能保证(基于进度压力下)。然后,就乱了… 这个情景我想大多数人都经历着,呵呵。 “高质量、高口碑的软件开始于好的分析与设计阶段,并不是靠后期的测试与修补来完成的” 我就发表下下面这几个阶段会影响质量的地方吧: l分析与设计阶段 l计划安排 l开发阶段 一、分析与设计阶段 如何才能做好这个步骤呢?要获取用户真正的需求,同时考虑好可能产生变化的需求点,我认为这两点基本上能保证分析与设计阶段的高质量进行了。这里PM是肯定要花大功夫的,由于这里的“可能产生变化的需求点”需要比较好的业务领域知识,所以PM阅读全文
    posted @ 2011-05-11 22:56 Aaron Dai 阅读(1560) | 评论 (5) 编辑

    O(∩_∩)O~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    致力于为欧美企业提供IT综合服务的软件商 
    O(∩_∩)O~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  • 相关阅读:
    [源码解析] PyTorch 流水线并行实现 (4)--前向计算
    [源码解析] PyTorch 流水线并行实现 (3)--切分数据和运行时系统
    [源码解析] PyTorch 流水线并行实现 (2)--如何划分模型
    [源码解析] PyTorch 流水线并行实现 (1)--基础知识
    [源码解析] 深度学习分布式训练框架 horovod (21) --- 之如何恢复训练
    [源码解析] 深度学习流水线并行 PipeDream(6)--- 1F1B策略
    [源码解析] 深度学习流水线并行 PipeDream(5)--- 通信模块
    [源码解析] 深度学习流水线并行 PipeDream(4)--- 运行时引擎
    6.耐心——想象力决定生产力
    5.权利——自由不等于免费
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2664632.html
Copyright © 2020-2023  润新知