系统存储架构升级分享
一、业务背景 系统业务功能:系统内部进行数据处理及整合, 对外部系统提供结果数据的初始化(写)及查询数据结果服务。 系统网络架构: 部署架构对切量上线的影响 - 内部管理系统上线对其他系统的读业务无影响 分布式缓存可进行单独扩容, 与存储及查询功能升级无关 通过缓存层的隔离, 系统扩展期间外部系统可 ...阅读全文
一、业务背景 系统业务功能:系统内部进行数据处理及整合, 对外部系统提供结果数据的初始化(写)及查询数据结果服务。 系统网络架构: 部署架构对切量上线的影响 - 内部管理系统上线对其他系统的读业务无影响 分布式缓存可进行单独扩容, 与存储及查询功能升级无关 通过缓存层的隔离, 系统扩展期间外部系统可 ...阅读全文
一、定义 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类,状态模式又称为状态对象,它是一种对象行为模式。 二、描述 状态模式是一种较为复杂的设计模式,用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题,包含以下三个角色: 1、Context(环境类):环境类又称为上 ...阅读全文
本文介绍了在C#中如何使用单例模式,并介绍了在多线程模式下单例模式可能存在的问题及其解决方法,希望对你有所帮助。 ...阅读全文
什么是布隆过滤器? 布隆过滤器是一种数据结构,具有快速插入和查找的特性,能确定某个字符串一定存在或者可能存在。布隆过滤器有着高效的空间利用率,它不存储具体数据,只存储数据的关键标识,所以占用的空间较小。它的查询结果可能会存在一定误差,但是误差总体可控,同时不支持删除操作。布隆过滤器的应用场景丰富,在 ...阅读全文
在软件开发的世界里,虽然技术日新月异,但有些原则是经久不衰的。就像建房子需要坚实的地基,软件开发也有其基础原则。它们像是指南针,帮助开发者在变化莫测的技术海洋中保持方向。 ...阅读全文
本篇我们讲红黑树的经典实现,Java中对红黑树的实现便采用的是经典红黑树。前一篇文章我们介绍过左倾红黑树,它相对来说比较简单,需要大家看完上篇再来看这一篇,因为旋转等基础知识不会再本篇文章中赘述。本篇的大部分内容参考 《算法导论》和 Java 实现红黑树的源码,希望大家能够有耐心的看完。 在正文开始 ...阅读全文
本文聊一个程序员都会关注的问题:性能。当大家谈到“性能”时,你首先想到的会是什么?性能优化是一个复杂且多面的话题,涉及到代码的编写、系统的架构以及硬件的选择与配置。在追求性能的旅途中,我们需要掌握的知识有很多,既有软件方面的,也有硬件方面的,很多东西我也没有展开详细讲,只是给大家提供了一个引子,遇到... ...阅读全文
本文聊一个程序员都会关注的问题:性能。当大家谈到“性能”时,你首先想到的会是什么?性能优化是一个复杂且多面的话题,涉及到代码的编写、系统的架构以及硬件的选择与配置。在追求性能的旅途中,我们需要掌握的知识有很多,既有软件方面的,也有硬件方面的,很多东西我也没有展开详细讲,只是给大家提供了一个引子,遇到... ...阅读全文
前言 观察者(Observer)模式也称发布-订阅(Publish-Subscribe)模式,定义了对象间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 观察者模式的图解如下所示: Subject(目标): 目标知道它的观察者。可以有任意多个观察者观察同 ...阅读全文
简介 设计模式是一种最佳实践,是长期起来总结的解决一系列问题的一种套路。 一般针对面向对象语言而言,从大型软件架构出发,便于升级和维护的软件设计思想,强调降低依赖耦合 目的:代码重用和工程化 类型 创建型:创建对象的同时隐藏创建的业务逻辑 工厂模式、单例模式、建造者模式、原型模式 结构型:将现有的类 ...阅读全文
一、背景 周所周知,Kafka是一个非常成熟的消息产品,开源社区也已经经历了多年的不断迭代,特性列表更是能装下好几马车,比如:幂等消息、事务支持、多副本高可用、ACL、Auto Rebalance、HW、Leader Epoch、Time Index、Producer Snapshot、Stream ...阅读全文
一、定义 定义对象之间的一种一对多依赖关系,使得当每一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式是一种行为型模式,又称为发布-订阅(Publish-Subscribe)模式、模型-视图(Model-View)模式、源-监听器(Source-Listener)模式或从属者( ...阅读全文
策略模式在设计模式中属于对象行为型模式,它的意图是定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。策略模式使得算法可独立于使用它的客户而变化。 ...阅读全文
1. 语言类型:首先,C/C++、Java 、Python都是强类型的语言。强类型语言的定义如下: 强类型语言是一种强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就是该数据类型。而弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换 ...阅读全文
1. 语言类型:首先,C/C++、Java 、Python都是强类型的语言。强类型语言的定义如下: 强类型语言是一种强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就是该数据类型。而弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换 ...阅读全文
微服务架构是一种软件开发模式,它将一个复杂的应用程序拆分为多个个独立的、小型的、可复用的服务,每个服务负责一个特定的业务功能。 微服务架构有许多优点,例如提高系统的可扩展性、可维护性、可测试性和故障容忍性。 但是,微服务架构也有很多问题需要注意,例如如何设计合理的划分服务接口、如何在服务间实现高效通 ...阅读全文
一、定义 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以在以后将对象恢复到原先保存的状态。备忘录模式是一种对象行为型模式,其别名为标记(Token)模式。 二、描述 备忘录模式的核心在于备忘录类以及用于管理备忘录的负责人类的设计,包含以下三个角色: 1、Orig ...阅读全文
1. 可演进的API 1.1. 随着需求的变化,你需要改变你的API,即代码之间的共享接口 1.2. 改变API很容易,但很难做到正确 1.3. 保持API小巧 1.3.1. 小巧的API更易于理解和演进 1.3.2. 只添加即刻需要的API方法或字段 1.3.3. 带有许多字段的API方法应该有合 ...阅读全文
1. 行为准则 2. 需求的不确定性 2.1. 不断变化的客户需求 2.2. 软件项目无法避免的挑战 2.3. 产品需求和环境会随着时间的推移而改变,你的应用程序也必须随之改变 2.4. 不断变化的需求会导致不稳定性,使开发工作偏离轨道 2.5. 通过构建可演进的架构来适应不断变化的需求 2.5.1 ...阅读全文
一、定义 义一个对象来封装一系列的对象交互。中介者模式使各对象不需要显示地相互引用,从而使其耦合松散,而且可以让你相对独立地改变它们之间的交互。中介者模式又称为调停模式,它是一种对象说行为型模式。 二、描述 在中介者模式中,引入了用于协调其他对象/类之间的相互调用的中介者类,为了让系统具有更好的灵活 ...阅读全文