本文希望能够通过总结过去自己对领域建模的一点粗浅经验给需要的同学能有些许启发,少走弯路。 背景 软件工程师做的核心事情就是对现实世界的问题进行抽象然后用计算机的语言对其进行重新刻画,在通过信息化来提高生产力。而这其中一个关键环节就是如何对问题域进行建模,在过去的工作中经常遇到一个问题是前期因为业务比 ...
分类 懒汉式:实例对象在第一次被使用时才进行初始化。 饿汉式:实例在定义时就被初始化。 特点 1、构造函数和析构函数私有化,不允许外部创建实例对象。 2、拷贝构造函数和复制运算符重载被delete,不允许产生新的实例。 3、内部定义一个私有的静态数据成员,该成员为本类的实例化对象。 4、提供公有静态 ...
注:单点登录原理是一个重要知识点,也常被问及,很多童鞋照葫芦画瓢搭建过单点登录,但是被问到原理时可能说不出来,下面简单介绍,抛砖引玉,希望对大家有所帮助。
单点登录在现在的系统架构中广泛存在,他将多个子系统的认证体系打通,实现了一个入口多处使用,而在架构单点登录时,也会遇到一些小问题,在不同的应用... ...
导语 一开始我们就说过Kafka是一款开源的高吞吐、分布式的消息队列系统,那么今天我们就来说下它的分布式架构和高可用性以及双/多中心部署。 Kafka 体系架构简介 以下是 Kafka 的软件架构,整个 Kafka 体系结构由 Producer、Consumer、Broker、ZooKeeper 组 ...
今天给大家介绍下扫码登录功能是怎么设计的。 扫码登录功能主要分为三个阶段:待扫描、已扫描待确认、已确认。 整体流程图如图。 下面分阶段来看看设计原理。 1、待扫描阶段 首先是待扫描阶段,这个阶段是 PC 端跟服务端的交互过程。 每次用户打开PC端登陆请求,系统返回一个唯一的二维码ID,并将二维码ID ...
#2 封底估算 在系统设计面试中,有时会要求你使用 "封底估算"(back-of-the-envelope estimation)来估算系统容量或性能需求。根据谷歌高级研究员杰夫-迪恩(Jeff Dean)的说法,"封底估算是你结合思想实验和常见性能数字进行的估算,目的是让你对哪些设计能满足你的要求 ...
#1 从零扩展到百万用户 设计支持数百万用户的系统是一项挑战,是需要不断完善和无止境改进的过程。在本章中,我们将构建一个支持单个用户的系统,并逐步将其扩展到为数百万用户提供服务。 ## 1.1 单服务器设置 下图展示了单服务器设置的示意图,其中所有内容都运行在一台服务器上:网络应用程序、数据库、缓存 ...
前言 前面说了很多Kafka的性能优点,有些童鞋要说了,这Kafka在企业开发或者企业级应用中要怎么用呢?今天咱们就来简单探究一下。 1、 使用 Kafka 进行消息的异步处理 Kafka 提供了一个可靠的消息传递机制,使得企业能够将不同组件之间的通信解耦,实现高效的异步处理。在企业级应用中,可以通 ...
# 核心原理 长链接转为短链接的核心原理是: 将短链接与原始长链接做一个映射,访问短链接的时候,通过重定向的方式转到长链接。 # 应用场景 比如分享功能,查看分享信息的原始链接通常是很长的,直接发给用户,体验不是很好,这时候就可以将其映射为一个短链接再发给用户。 又比如我们熟知的百度网盘分享文件,虽 ...
##一、定义 **讲一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种创建型模式。** ##二、描述 **包含以下四个角色:** 为例,系统性地讲解DDD在落地实施过程中的各种典型实践,以及在面临实际业务场景时的诸多取舍。 本系列包含以下文章: DDD入门 ...
系统设计-经典场景电商业务之下单上图我们看到,针对电商系统的架构设计考虑点,提到了许多重要的方面。以下是对每个关注点的详细描述: 1. **API网关**: API网关作为系统的入口,负责将客户端的请求转发给后端服务。它可以集中处理安全性、鉴权、监控、缓存、请求转发等任务,从而减轻后端服务的负担。一 ...
##一、定义 **提供一个创建一系列相关或互相依赖对象的接口,而无须指定他们具体的类,抽象工厂模式是一种创建型模式。** ##二、描述 **抽象工厂比工厂方法的抽象程度更高,通过引入了工厂等级结构,解决了简单工厂模式中工厂类职责太重的原则。为了更好的理解抽象工厂模式,引入两个概念:** **1、产品 ...
我们团队一直在持续推进业务系统的体系化治理工作,在这个过程中我们沉淀了自己的DDD脚手架项目。本文主要是梳理和总结了DDD脚手架使用中的编码规范以及遇到的问题。 ...
伴随物流行业的迅猛发展,一体化供应链模式的落地,对系统吞吐、系统稳定发出巨大挑战,库存作为供应链的重中之重表现更为明显。 ...
在 Infinispan 配置文件中切换发现协议从广播到组播,需要修改 JGroups 的配置,因为 Infinispan 使用 JGroups 来处理集群通信和发现。下面是一个示例,展示如何将配置从广播切换到组播。 首先,确保您已经有一个 Infinispan 配置文件,比如 `infinispa ...
Lora芯片的PCB板受力接收信号有问题可能有电路板设计问题、电路板受潮或受损、外部干扰、设备兼容性问题等原因及其解决办法... ...
小程序平台是怎么保证商家业务的稳定、健康发展,服务好这些外部商家的呢?这里面非常重要的是我们平台对小程序基本流量的运营与监控。如何不让业务的小程序在线上裸奔?如何帮助业务对自身小程序流量的冲高回落有一种直观的把握和监测?如何基于海量数据指导业务去进行一个精细化的运营?实际上,京东小程序数据中心就扮演... ...
本文介绍的 MetaQ/RocketMQ 是侧重于维持消息一致性和高可靠性的消息队列中间件,帮助大家对队列设计的理解。 ...