适配器模式 p...概括:在适配器类 Adapter 中,将现有接口 Adaptee 中的方法作为数据源传入适配器类,然后转换成目标接口 Target 中的方法。如果客户端要调用,那么就调用 Adapter类对象且传入 Adaptee 对象即可。 Target目标接口:定义系统的需求规范 Adapt ...
1. 观点 1.1. 抽象隐藏了繁杂的细节,只是有时候会连同重要的考虑因素一起隐藏掉 1.2. 理解掌握的抽象层次永远要比日常使用的抽象层次更深一层 1.3. 交出控制权的观点:放弃对繁琐细节的掌控,关注问题域,而非关注问题域的实现 2. 函数式思维的好处 2.1. 将低层次细节(如垃圾收集)的控制 ...
一群高智商青年在餐厅吃饭,餐桌上一个瓶盖标识为盐的瓶子里装得是胡椒粉,而标识为胡椒粉的瓶子里装得却是盐,他们想出了一个充满才气的方案来完成对调--仅需要一张餐巾纸、一根吸管和两个空碟子。当他们叫来服务员,准备炫耀他们的天才想法时,只见服务员什么也没说,只是拿起盐瓶和胡椒粉瓶,互换了瓶盖…… 在我们... ...
本文我们来探讨下如何引入分布式锁解决本地锁的问题。本篇所有代码和业务基于我的开源项目 PassJava。 本篇主要内容如下: 一、本地锁的问题 首先我们来回顾下本地锁的问题: 目前题目微服务被拆分成了四个微服务。前端请求进来时,会被转发到不同的微服务。假如前端接收了 10 W 个请求,每个微服务接收 ...
导读:设计模式能够帮助我们优化代码结构,让代码更优雅灵活。有哪些常见的设计模式?如何合理运用?本文分享作者对工厂模式、单例模式、装饰模式、策略模式、代理模式和观察者模式的理解,介绍每种模式的模式结构、优缺点、适用场景、注意实现及代码实现。 ...
1. 范畴论 1.1. 范畴论是数学的一个分支,研究的是由对象及这些对象之间的箭头组成的结构 1.2. 函子和单子的概念来自范畴论 1.3. Haskell是一种编程语言,从范畴论中汲取了许多灵感,所以它的语法和标准库很容易表达函子、单子和其他结构的概念。Haskell完全支持高阶类型 2. 函子( ...
最近看了一本书《解构-领域驱动设计》,书中提出了领域驱动设计统一过程(DDDRUP),它指明了实践 DDD 的具体步骤,并很好地串联了各种概念、模式和思想。因此,我对书本内容做了梳理、简化,融入自己的理解,并结合之前阅读的书籍以及实践经验,最终形成这篇文章。希望可以帮助大伙理顺 DDD 的各种概念、... ...
2023-01-18 一、Tomcat中的结点 1、Server(服务器) Server代表整个Tomcat服务器,一个tomcat只有一个Server Server中包含至少一个Service组件,用于提供具体服务。 2、Service Service中的一个逻辑功能层,一个Server可以包含多 ...
1. 常用算法 1.1. map() 1.1.1. 接受一个T值序列和一个函数(value: T) => U,将该函数应用到序列中的全部元素,然后返回一个U值序列 1.1.2. 别名 1.1.2.1. fmap() 1.1.2.2. select() 1.2. filter() 1.2.1. 接受一 ...
随着计算机系统的规模越来越大,业务量的迅速提升和互联网的爆炸式增长,集中式系统采用大型主机单机部署带来了一系列问题:系统大而复杂、难于维护、发生单点故障引起雪崩、扩展性差等。这些都使业务面临巨大的压力和严重的风险,为了解决集中式系统架构面临的痛点,分布式系统架构逐步走上舞台。分布式系统是一个硬件或软... ...
2023-01-17 一、Servlet底层源码分析 1、Servlet结构图 说明:HttpServlet继承了GenericServlet类,GenericServlet实现了“ServletConfig”和“Servlet”两个接口,因此所以要实现一个Servlet直接就可以继承HttpSer ...
2023-01-13 一、基本功 (1)工程结构管理 掌握企业环境的搭建和管理 (2)java开发规范 P3C开发规约 (3)高并发及网络编程 需要考虑性能瓶颈 (4)底层源码分析 二、互联网常用技术——分布式 1、NoSQL数据库:是提升数据访问效率的优先选择。 访问效率的提升:Redis、Mon ...
1. API 网关诞生背景 前言 API 经济生态链已经在全球范围覆盖, 绝大多数企业都已经走在数字化转型的道路上,API 成为企业连接业务的核心载体, 并产生巨大的盈利空间。快速增长的 API 规模以及调用量,使得企业 IT 在架构上、模式上面临着更多的挑战。 API 是什么 API 网关是一个服 ...
1. 恒等函数 1.1. 在代数中,恒等函数指的是函数f(x) = x 1.2. 恒等逻辑与getNumbers()和assembleWidgets()的问题域解耦,因为恒等逻辑和问题域是正交的,或者说是独立的 2. 类型参数 2.1. 将不同函数的区别,即它们的实参类型参数化 2.2. 一个泛型名 ...
1. 面向对象编程 1.1. (Object-Oriented Programming,OOP) 1.2. 基于对象的概念的一种编程范式 1.3. 对象可以包含数据和代码 1.4. 数据是对象的状态 1.5. 代码是一个或多个方法 1.5.1. 消息是方法,包括名称、实参和返回类型 1.6. 通过使 ...
1. 子类型 1.1. 在期望类型T的实例的任何地方,都可以安全地使用类型S的实例,则类型S是类型T的子类型 1.1.1. 里氏替换原则(Liskov substitution principle) 2. 名义子类型 2.1. 明确指定 2.2. 显式声明一个类型是另一个类型的子类型 2.3. 大部 ...
程序员拥有一个较好的编程原则能使他的编程能力有大幅的提升,可以使其开发出维护性高、缺陷更少的代码。以下内容梳理自StactOverflow的一个问题:编程时你最先考虑的准则是什么? ...
基于AWS云SaaS多租户架构设计租户与用户概念单租户与多租户多租户的好处 采用多租户架构方法将为你的SaaS应用程序带来广泛的有价值的好处。 让我们来看看下面的贡献。 a) 利用多租户架构策略,减少服务器基础设施成本。 与其为每个客户创建一个SaaS环境,不如为所有客户提供一个应用环境。这使你的A ...
作为一个后端研发人员,开发服务接口是我正常不过的工作了,这些接口不管是面向前端HTTP或者是供其他服务RPC远程调用的,都绕不开一个共同的话题就是“高可用”,接口开发往往看似简单,但保证高可用这块实现起来却不并没有想想的那么容易,接下来我们就看一下,一个高可用的接口是该考虑哪些内容,同时文中有不足的... ...
1. 装饰器模式 1.1. 扩展对象的行为,而不必修改对象的类 1.2. 装饰的对象可以执行其原始实现没有提供的功能 1.3. 优势 1.3.1. 支持单一职责原则 1.3.1.1. 每个类只应该承担一种职责 1.4. 经典实现 1.4.1. 一个IComponent接口 1.4.2. 一个具体实现 ...