可调CAP策略是在原来CAP理论基础上的延伸和发展,它允许我们随时重组计算机集群的运行模式,根据不同的业务需求,在CP和AP之间动态调节。 ...
大多数情况下你不需要访问者模式,但当一旦需要访问者模式时,那就是真的需要它了,这是设计模式创始人的原话。可以看出应用场景比较少,但需要它的时候是不可或缺的,这篇文章就开始学习最后一个设计模式——访问者模式。 ...
适配器设计模式(Adapter Design Pattern)可以将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。 ...
定义 迭代器模式(Iterator pattern):用于顺序访问集合对象里的每一个元素,不用暴露集合是怎样存储元素的。 举例 某个班级有若干个学生,现在需要统计这些学生的平均分数。假设所有学生的分数是用数组存储的: int totalScore(int *array, int n) { int s ...
在我们实际开发中,如果一个方法极其复杂时,如果我们将所有的逻辑写在一个方法中,那维护起来就很困难,要替换某些步骤时都要重新写,这样代码的扩展性就很差,当遇到这种情况就要考虑今天的主角——模板方法模式。 ...
装饰器模式(Decorator Design Pattern)是一种结构型设计模式,通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。简单地说,就是允许向一个现有的功能添加新的功能,同时又不改变其结构。 ...
自动化流水线在CI/CD(持续集成/持续交付或持续部署)的实践中发挥着核心作用。本文将对什么是CI/CD流水线、如何构建CI/CD流水线进行讨论。 *持续集成:Continuous Integration *持续交付:Continuous Delivery *持续部署:Continuous Depl ...
当前,全球汽车产业正在经历从传统工业向数字化转型的大变革,智能化、数字化、信息化正在成为汽车电子行业转型发展的必由之路。“软件定义汽车”(Software Defined Vehicles,SDV)概念的提出,说明软件在汽车产品中承担的角色越来越重要。随着汽车软件的量级和复杂度不断提高,汽车厂商对嵌 ...
在一个收银系统中,如果普通用户、中级会员、高级会员分别对应着不同的优惠策略,常规编程就要使用一系列的判断语句,判断用户类型,这种情况下就可以使用策略模式。 ...
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 ...
实际开发中订单往往都包含着订单状态,用户每进行一次操作都要切换对应的状态,而每次切换判断当前的状态是必须的,就不可避免的引入一系列判断语句,为了让代码更加清晰直观,我们引入今天的主角——状态模式。 ...
桥接模式是一种在日常开发中不是特别常用的设计模式,主要是因为上手难度较大,但是对于理解面向对象设计有非常大的帮助。 ...
在项目编码中经常会遇到一些新的需求试图复用已有的功能逻辑进行实现的场景,但是已有的逻辑又不能完全满足新需求的要求,所以就会出现各种生搬硬套的操作。本篇文档就一起来聊一聊如何借助Adapter实现高效复用已有逻辑、让代码复用起来更加的得体与优雅。 ...
原型模式 介绍 定义:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。 简单理解,就是当需要创建一个指定的对象时,我们刚好有一个这样的对象,但是又不能直接使用,我会clone一个一模一样的新对象来使用,这就是原型模式。关键字:Clone。 原型模式分为“深拷贝”和“ ...
定义 **责任链模式(Chain of Responsibility Pattern)**中,有一条由请求处理者对象组成的链条,每个对象(除最后一个对象外)都持有下一个对象的引用,请求发送者将请求发送给第一个对象,请求就会顺着链条走下去,直到有对象能够处理请求。该模式将多个处理者对象解耦,使得请求发 ...
本文主要从研发人员的角度,结合研发人员日常常见的各类业务场景,从经典系统框架的每一层入手分析幂等处理的时机。希望通过这篇文章的分析,让开发者在日常开发中对幂等的处理不再陌生。抓住导致请求、接口不幂等的本质,在工作中避免再陷入这个陷阱中。 ...
代理设计模式(Proxy Design Pattern)指的是,在不改变原始类(或叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能,即扩展目标对象的功能。 ...
一、微服务网关概述 如下图: 不同的微服务一般会有不同的网络地址,客户端在访问这些微服务时必须记住几十甚至几百个地址,这对于客户端方来说太复杂也难以维护。如果让客户端直接与各个微服务通讯,可能会有很多问题: 客户端会请求多个不同的服务,需要维护不同的请求地址,增加开发难度,在某些场景下存在跨域请求的 ...
一 、Ribbon概述 Netflixfa 发布的一个负载均衡器,有助于控制HTTP和TCP客户端行为。在SpringCloud中,Ribbon提供了客户端负载均衡的功能,Ribbon自动从服务注册中心Eureka中读取到的服务提供者的列表信息(动态获取服务列表方式),在调用服务节点提供的服务时,基 ...