创建型模式 特点 创建型模式关注点是如何创建对象,其核心思想是要把对象的创建和使用相分离,这样使得两者能相对独立地变换。 创建型模式在创建什么(What),由谁创建(Who),何时创建(When)等方面都为软件设计者提供了尽可能大的灵活性。 简单/静态工厂SImple Factory 定义 在简单工 ...
概述 定义:封装一些作用于某种数据结构中的各元素的操作(将数据结构于元素进行分离),它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。 结构 访问者模式包含以下主要角色: 抽象访问者(Visitor)角色:定义了对每一个元素(Element)访问的行为,它的参数就是可以访问的元素,它的 ...
概述 定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。 结构 迭代器模式主要包含以下角色: 抽象聚合(Aggregate)角色:定义存储、添加、删除聚合元素以及创建迭代器对象的接口。 具体聚合(ConcreteAggregate)角色:实现抽象聚合类,返回一个具体迭代 ...
评价系统是什么? 从用户角度:商品买家交流平台 相对于商家的“精装修”,用户更喜欢看到别的买家发的“毛胚房”,而评价系统在用户的角度就是买家间的“真实体验共享社区”。 用户买到了好的东西,物超所值,开心分享一下;买到了不符合预期的东西,觉得有失落感,平台欺骗自我,发出来,倾斜自己的愤怒,也让其他用户 ...
目录 了解需求 方案 1:数据库轮询 方案 2:JDK 的延迟队列 方案 3:时间轮算法 方案 4:redis 缓存 方案 5:使用消息队列 了解需求 在开发中,往往会遇到一些关于延时任务的需求。最全面的Java面试网站 例如 生成订单 30 分钟未支付,则自动取消 生成订单 60 秒后,给用户发短 ...
概述 日常生活中,我们出去吃饭都会遇到下面的场景。 定义: 将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行存储、传递、调用、增加与管理。 结构 命令模式包含以下主要角色: 抽象命令类(Command)角色: 定义命令的接口, ...
概述 先看下面的图片,我们去旅游选择出行模式有很多种,可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。 作为一个程序猿,开发需要选择一款开发工具,当然可以进行代码开发的工具有很多,可以选择Idea进行开发,也可以使用eclipse进行开发,也可以使用其他的一些开发工具。 定义:该模式定义了一系列算 ...
概述 对于这个图片肯定会非常熟悉,上图我们可以看做是一个文件系统,对于这样的结构我们称之为树形结构。在树形结构中可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可以对叶子节点进行相关的操作。可以将这颗树理解成一个大的容器,容器里面包含很多的成员对象,这些成员对象可以容器对象也可以是叶子 ...
概述 现在有一个需求,需要创建不同的图形,并且每个图形都有可能会有不同的颜色。我们可以利用继承的方式来设计类的关系: 我们可以发现有很多的类,假如我们再增加一个形状或再增加一种颜色,就需要创建更多的类。 试想,在一个有多种可能会变化的维度的系统中,用继承方式会造成类爆炸,扩展起来不灵活。每次在一个维 ...
概述 如果去欧洲国家旅游的话,他们的插座如下图最左边,是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑,手机在当地不能直接充电。所以就需要一个插座转换器,转换器第1面插入当地的插座,第2面供我们充电,这样使得我们的插头在当地能使用。生活中这样的例子很多,手机充电器(将220v转换为5 ...
策略模式通过将算法封装在独立的策略类中,并在运行时动态选择算法,提供了一种灵活、可扩展的解决方案,能够有效地消除冗长的条件语句,提高系统的可维护性和扩展性。 ...
当你的代码结构比量子混沌还混乱时,人工智障教你在业务逻辑与基础设施间构建超立方体隔离结界,用分层架构打造代码世界的"三体运动"模型,让业务逻辑与基础设施实现量子纠缠可控态。 ...
2 并行化规划 并行项目的规划步骤 版本控制和团队开发工作流程 了解性能容量和限制 制定程序并行化计划 开发并行应用程序或使现有应用程序并行运行,一开始可能会感觉具有挑战性。初涉并行化的开发人员往往不知道从何入手,也不知道可能会遇到什么陷阱。本章重点介绍开发并行应用程序的工作流模型。该模型提供了在开 ...
1 引言 随着许多 Arm 硬件和软件合作伙伴开发应用程序并将其工作负载移植到基于 Arm 的云实例上,Arm Neoverse 生态系统正在大幅增长。随着基于 Neoverse N1 的系统广泛普及,许多实际工作负载显示出了与传统系统相比极具竞争力的性能和显著的成本节约。最近的一些例子包括 H.2 ...
参与者是需求分析阶段的重要元素,指与待开发系统交互的外部实体,包括人、外部系统、传感器、数据库等。识别参与者需注意区分真正的参与者和传递型参与者。参与者通常用小人图像表示,在UML用例图中与用例通过关联线连接。 ...
3 CPU CPU 微架构 本章简要概述了对软件性能有直接影响的关键 CPU 微体系结构特性。本章的目的并不是要涵盖 CPU 架构的所有细节和权衡,文献[Hennessy & Patterson, 2017 Computer Architecture, Sixth Edition]、[Shen & ...
2PC 2PC,两阶段提交,将事务的提交过程分为资源准备和资源提交两个阶段,并且由事务协调者来协调所有事务参与者,如果准备阶段所有事务参与者都预留资源成功,则进行第二阶段的资源提交,否则事务协调者回滚资源。 第一阶段:准备阶段 由事务协调者询问通知各个事务参与者,是否准备好了执行事务,具体流程图如下 ...
状态(State)模式属于行为型模式的一种。 状态模式允许对象在其内部状态改变时改变其行为,使其看上去就像改变了自身所属的类一样。 状态模式是为了把一大串if...else...的逻辑给分拆到不同的状态类中,使得将来增加状态比较容易。 状态模式的关键设计思想在于状态切换。简单的状态转换可以直接由调用 ...
1.初始 Nginx @目录1.初始 Nginx1. Nginx 的概述2. Nginx 核心功能的详细说明2.1 正向代理2.2 反向代理2.3 负载均衡2.4 动静分离3. 最后: 先看 2 个实际需求,引出 Nginx 需求 1: 访问不同微服务 示意图: 需求 2: 轮询访问服务 示意图: ...
概述 定义 幂等概念来自数学,表示对数据源做N次变换和1次变换的结果是相同的。 在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变 ...