刷新
工厂模式之工厂方法模式

大家好,欢迎来到程序视点! 前言 在上一节的简单工厂模式中,我们知道简单工厂所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。 也就是说,类的创建依赖工厂类,如果想要拓展程序(添加新的类),必须对工厂类进行修改。这违背了开闭原则。 从设计角度考虑,有一定的问题,如何解决? 既 ...

DDD脚手架及编码规范

博主头像 一、背景介绍 我们团队一直在持续推进业务系统的体系化治理工作,在这个过程中我们沉淀了自己的DDD脚手架项目。脚手架项目是体系化治理过程中比较重要的一环,它的作用有两点: 可以对新建的项目进行统一的规范 对于指导老项目进行DDD的改造提供指导 本文主要是梳理和总结了DDD脚手架使用中的编码规范以及遇到 ...

2023年值得关注的6个开源日志管理工具

博主头像 日志管理包含日志数据存储、处理、分析和可视化,通过利用日志管理工具,可以监控性能趋势、解决问题、检测异常并优化整体系统性能。 近年来,开源日志管理解决方案在大家寻求灵活且经济有效的方式来管理现代系统典型的大量日志数据时,获得了显著的关注。这些工具为商业产品提供了有力的替代方案,使各种规模的企业都能有 ...

适配器模式

博主头像 适配器模式 基本介绍 1.适配器模式(Adapter Pattern)将某个类的接口(方法)转换成客户期望的另一个接口(方法)表示,主要目的是兼容性,让原本因为方法不匹配的,不能一起工作的两个类可以协同工作。别名叫包装器(Wrapper)。 2.适配器模式属于结构模式。 3.主要有三种形式,类适配器 ...

系统设计(架构师)指南3系统设计面试

3 系统设计面试 你刚刚获得了梦想公司梦寐以求的现场面试机会。HR给你发来了当天的日程安排。扫了一眼名单,你感觉良好,直到你的目光落到了这个面试环节--系统设计面试。 系统设计面试通常让人望而生畏。可能是"设计一款知名产品 X"这样含糊不清的问题。问题模棱两可,似乎宽泛得不合理。你的疲惫是可以理解的 ...

设计模式(五)原型

博主头像 ##一、定义 **使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。原型模式是一种创建型模式。** ##二、描述 **包含以下三个角色:** ![](https://img2023.cnblogs.com/blog/1780813/202305/1780813-202305271 ...

系统设计(架构师)指南4设计限速器

#4 设计限速器 在网络系统中,限速器用于控制客户端或服务发送流量的速率。在HTTP世界中,限速器限制在指定时间内允许发送的客户端请求数量。如果API请求数超过了限速器定义的阈值,超出调用都会被阻止。下面是几个例子: - 用户每秒最多只能写2篇文章。 - 同一IP地址每天最多只能创建10个账户。 - ...

系统设计(架构师)指南5设计一致哈希(HASHING)

#5 设计一致哈希(HASHING) 要实现横向扩展,就必须在服务器之间高效、均匀地分配请求/数据。一致哈希是实现这一目标的常用技术。不过,首先让我们深入了解一下这个问题。 ##5.1 重散列(rehashing)问题 如果有n台缓存服务器,平衡负载的常用方法是使用下面的散列方法: serverIn ...

程序员必须要知道的编程范式,你掌握了吗?

博主头像 本文给大家介绍了什么是"编程范式",选择合适的编程范式可以提高代码的可读性、可维护性和可扩展性。 一、 什么是编程范式? "编程范式"是一种编程思想的总称,它是指在编写程序时所采用的基本方法和规范。常见的编程范式有面向对象、函数式、逻辑式等。 选择合适的编程范式可以提高代码的可读性、可维护性和可扩展 ...

学习笔记-设计模式-创建型模式-工厂模式

博主头像 ### 工厂模式 工厂模式是一种创建者设计模式,细分之下可以分成三类`简单工厂模式`,`工厂方法模式`和`抽象工厂模式`。 #### 简单工厂模式 最简单的工厂模式,它采用静态方法的方式来决定应该应该生产什么商品。 ```java public class StoreFactory { public ...

软件开发原则

博主头像 ## 软件开发原则 | 原则 | 介绍 | | | | | 单一职责原则 | 一个类或模块应该只负责一项任务或功能 | | 开闭原则 | 软件实体(类、模块、函数等)应该对扩展开放,对修改关闭 | | 里氏替换原则 | 子类应该能够替换其父类并且不会破坏程序的正确性 | | 接口隔离原则 | 客户端 ...

领域建模的体系化思维与6种方法论

博主头像 本文希望能够通过总结过去自己对领域建模的一点粗浅经验给需要的同学能有些许启发,少走弯路。 背景 软件工程师做的核心事情就是对现实世界的问题进行抽象然后用计算机的语言对其进行重新刻画,在通过信息化来提高生产力。而这其中一个关键环节就是如何对问题域进行建模,在过去的工作中经常遇到一个问题是前期因为业务比 ...

c++单例模式总结

博主头像 分类 懒汉式:实例对象在第一次被使用时才进行初始化。 饿汉式:实例在定义时就被初始化。 特点 1、构造函数和析构函数私有化,不允许外部创建实例对象。 2、拷贝构造函数和复制运算符重载被delete,不允许产生新的实例。 3、内部定义一个私有的静态数据成员,该成员为本类的实例化对象。 4、提供公有静态 ...

单点登录的原理

博主头像 注:单点登录原理是一个重要知识点,也常被问及,很多童鞋照葫芦画瓢搭建过单点登录,但是被问到原理时可能说不出来,下面简单介绍,抛砖引玉,希望对大家有所帮助。 单点登录在现在的系统架构中广泛存在,他将多个子系统的认证体系打通,实现了一个入口多处使用,而在架构单点登录时,也会遇到一些小问题,在不同的应用... ...

Kafka的分布式架构与高可用性

博主头像 导语 一开始我们就说过Kafka是一款开源的高吞吐、分布式的消息队列系统,那么今天我们就来说下它的分布式架构和高可用性以及双/多中心部署。 Kafka 体系架构简介 以下是 Kafka 的软件架构,整个 Kafka 体系结构由 Producer、Consumer、Broker、ZooKeeper 组 ...

谈一谈扫码登录原理

博主头像 今天给大家介绍下扫码登录功能是怎么设计的。 扫码登录功能主要分为三个阶段:待扫描、已扫描待确认、已确认。 整体流程图如图。 下面分阶段来看看设计原理。 1、待扫描阶段 首先是待扫描阶段,这个阶段是 PC 端跟服务端的交互过程。 每次用户打开PC端登陆请求,系统返回一个唯一的二维码ID,并将二维码ID ...

系统设计(架构师)指南2封底估算&新浪微博实例

#2 封底估算 在系统设计面试中,有时会要求你使用 "封底估算"(back-of-the-envelope estimation)来估算系统容量或性能需求。根据谷歌高级研究员杰夫-迪恩(Jeff Dean)的说法,"封底估算是你结合思想实验和常见性能数字进行的估算,目的是让你对哪些设计能满足你的要求 ...

系统设计(架构师)指南1从零扩展到百万用户

#1 从零扩展到百万用户 设计支持数百万用户的系统是一项挑战,是需要不断完善和无止境改进的过程。在本章中,我们将构建一个支持单个用户的系统,并逐步将其扩展到为数百万用户提供服务。 ## 1.1 单服务器设置 下图展示了单服务器设置的示意图,其中所有内容都运行在一台服务器上:网络应用程序、数据库、缓存 ...

<1···313233···50>