上一页 1 2 3 4 5 6 ··· 27 下一页
  2019年2月13日
摘要: 定义将一个类的接口转换成客户希望的另一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 --《设计模式》GoFUML类图使用场景在遗留代码复用,类库迁移方面非常有用。适配器模式要求我们尽可能地使用面向接口编程风格,这样扩展性和可维护性比较好。关键组成部分1,目标角色(Target):定义Client使用的与特定领域相关的接口。2,客户角色(Client):与符合T... 阅读全文
posted @ 2019-02-13 15:39 永远的麦子 阅读(537) 评论(0) 推荐(0) 编辑
摘要: 定义定义一系列算法,将它们一个个封装起来,并且使它们可以互相替换,该模式使得算法可独立于使用它的客户而变化。 --《设计模式》GoFUML类图使用场景一个系统有许多类,而区分它们的只是他们直接的行为时。在有多种算法相似的情况下,使用if…else…所带来的复杂和难以维护。关键组成部分1,抽象策略角色(Strategy):定义公共接口,Context上下文使用这个接口调用不同的算法,一般使用接... 阅读全文
posted @ 2019-02-13 15:13 永远的麦子 阅读(578) 评论(0) 推荐(0) 编辑
  2019年2月12日
摘要: 定义定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 --《设计模式GoF》UML类图使用场景有多个子类共有的方法,且逻辑相同,可以抽象到父类中作为模板方法实现,避免代码重复。重要的,复杂的方法,可以考虑作为模板方法。C#代码实现using System; namespace DoFactory.GangOfFou... 阅读全文
posted @ 2019-02-12 18:08 永远的麦子 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 定义保证一个类仅有一个实例,并提供一个该实例的全局访问点。 --《设计模式GoF》UML类图使用场景当类只能有一个实例并且用户可以从一个众所周知的访问点访问它时。创建一个对象需要消耗过多的资源,比如IO和数据库连接等。C#代码实现1,初始版本namespace DesignPatternDemo.ConsoleApp{ /// /// 单例类 /// public c... 阅读全文
posted @ 2019-02-12 17:08 永远的麦子 阅读(958) 评论(0) 推荐(0) 编辑
  2019年1月31日
摘要: 包括7大设计原则和23大设计模式。7大设计原则这7大设计原则不仅是23大设计模式要去遵守的,也是我们平常开发过程中要时刻去遵守的准则,所以说非常非常重要。1,单一职责原则1)定义:就一个类而言,应该仅有一个引起它变化的原因。简而言之,就是功能要单一。2)如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其它职责的能力。这种耦合会导致脆弱的设计,当变化发... 阅读全文
posted @ 2019-01-31 18:05 永远的麦子 阅读(3494) 评论(0) 推荐(0) 编辑
  2019年1月15日
摘要: 包括nginx的入门和进阶学习。 目录 nginx系列1:认识nginx nginx系列2:搭建nginx环境 nginx系列3:搭建一个静态资源web服务器 nginx系列4:日志管理 nginx系列5:nginx的请求处理流程 nginx系列6:nginx的进程结构 nginx系列7:处理HTT 阅读全文
posted @ 2019-01-15 11:41 永远的麦子 阅读(839) 评论(0) 推荐(0) 编辑
摘要: proxy_pass指令URL参数规则需要注意的是,url中携带和不携带URI时发往上游请求的行为不同! 阅读全文
posted @ 2019-01-15 11:30 永远的麦子 阅读(759) 评论(0) 推荐(0) 编辑
摘要: 最少连接算法使用最少连接算法可以使得nginx优先选择连接最少的上游服务器,需要用到upstream_least_conn模块。如何跨worker进程生效因为nginx是多进程结构的,默认多个worker进程间无法共享数据。使用upstream_zone模块可以实现这个需求。 阅读全文
posted @ 2019-01-15 11:13 永远的麦子 阅读(871) 评论(0) 推荐(0) 编辑
  2019年1月14日
摘要: 前面一节的hash算法存在一个问题,当上游的应用服务器因某一台down掉导致服务器数量发生变化时,会导致大量的请求路由策略失效,一致性哈希算法可以缓解这个问题。一致性哈希算法1,hash算法存在的问题2,一致性哈希扩容前:扩容后:使用方法:只需要在hash key后面添加consistent就可以了。 阅读全文
posted @ 2019-01-14 17:55 永远的麦子 阅读(2124) 评论(0) 推荐(0) 编辑
摘要: 使用默认的round-robin负载均衡算法无法保证某一类请求只能由上游的某一台应用服务器处理,它只适用于AKF扩展中的水平扩展,如果要保证某一类请求只能由上游的某一台应用服务器处理,就需要用到AKF扩展中的Z轴扩展,一般使用基于哈希算法来实现。ip_hash模块基于客户端的IP地址。使用方法:hash模块基于任意的参数和变量。使用方法: 阅读全文
posted @ 2019-01-14 17:17 永远的麦子 阅读(5245) 评论(0) 推荐(0) 编辑
摘要: upstream模块的使用方法1,使用upstream和server指令来选择上游服务器这两个指令的语法如下图:示例:2,对上游服务使用keepalive长连接负载均衡策略round-robin加权Round-Robin算法是其它所有负载均衡算法的基础。 阅读全文
posted @ 2019-01-14 16:14 永远的麦子 阅读(1260) 评论(0) 推荐(1) 编辑
摘要: HTTP反向代理请求处理流程如下图: 阅读全文
posted @ 2019-01-14 14:51 永远的麦子 阅读(1485) 评论(0) 推荐(0) 编辑
摘要: 反向代理是nginx的一个非常重要的功能。反向代理nginx支持四层反向代理和七层反向代理,如下图。负载均衡负载均衡是实现服务高性能和高可用的重要手段,而nginx是实现负载均衡的重要工具。 阅读全文
posted @ 2019-01-14 14:33 永远的麦子 阅读(1993) 评论(0) 推荐(0) 编辑
  2019年1月12日
摘要: 处理HTTP请求的11个阶段如下图:序号阶段指令备注1POST_READrealip获取客户端真实IP2SERVER_REWRITErewrite3FIND_CONFIG4REWRITErewrite5POST_REWRITE6PRE_ACCESSlimit_conn, limit_req7ACCESSauth_basic, access, auth_requestauth_basic可以做访问限... 阅读全文
posted @ 2019-01-12 17:21 永远的麦子 阅读(1998) 评论(0) 推荐(0) 编辑
摘要: nginx的进程结构如下图:通过ps –ef | grep nginx可以看到共有三个进程,一个master进程,两个worker进程。nginx是多进程结构,多进程结构设计是为了保证nginx的高可用高可靠,包含:master进程:也是父进程,负责worker进程的管理。worker进程:也是子进程,worker进程一般配置成与服务器的CPU核数相同,worker进程用来处理具体的请求的。cac... 阅读全文
posted @ 2019-01-12 16:39 永远的麦子 阅读(2947) 评论(0) 推荐(1) 编辑
上一页 1 2 3 4 5 6 ··· 27 下一页