通过COLA看应用架构

通过COLA看应用架构
www.zeeklog.com  - 通过COLA看应用架构

什么是架构?架构就是对系统中的实体以及实体之间的关系所进行的抽象描述。

先来看一下软件架构的分类。

随着互联网的发展,现在的系统要支撑数亿人同时在线购物、通信、娱乐的需要,相应的软件体系结构也变得越来越复杂。

软件架构的含义也变得更加宽泛,我们不能简单地用一个软件架构来指代所有的软件架构工作。

张建飞将软件架构划分为:业务架构、应用架构、分布式系统架构、数据架构、物理架构和运维架构。

典型的应用架构又包括分层架构;CQRS(Command Query Separation),即命令查询分离;六边形架构,即端口 - 适配器架构;洋葱圈架构等等。

在 COLA 的设计中,他们汲取了经典架构的优秀思想,此外还补充了规范设计和扩展设计,并且使用 Archetype 的方式,将架构固化下来,以便可以快速的在开发中使用。

COLA 的分层是一种改良了的三层架构,主要是将传统的业务逻辑层拆分成应用层、领域层和基础实施层。

在扩展设计中,COLA 有两个重要的概念:

一个是业务身份,是指业务在系统唯一标识一个业务或者一个场景的标志。

另一个是扩展点,即每个业务或者场景都可以实现一个或多个扩展点(ExtensionPoint)。

将业务身份和扩展点组合,就形成了扩展坐标(ExtensionCoordinate),这样就可以从框架层面实现对不同租户,不同业务,不同场景的扩展定制了。整个阿里业务中台正是基于这个思想,实现多业务支撑的。

在规范设计方面,COLA 制定了一些列的规范:包括组件(Module)结构、包(Package)结构、命名等。

在架构思想上,COLA 主张像六边形架构那样,使用端口 - 适配器去解耦技术细节;主张像洋葱圈架构那样,以领域为核心,并通过依赖倒置反转领域层的依赖方向,最终形成如下图所示的组件关系。

www.zeeklog.com  - 通过COLA看应用架构

纵观上面提到的所有应用架构,不难发现一个共同点,就是“核心业务逻辑和技术细节分离”。

六边形架构、洋葱圈架构以及 COLA 架构的核心职责就是要做核心业务逻辑和技术细节的分离和解耦。

试想一下,业务逻辑和技术细节糅杂在一起的情况,所有的代码都写在 ServiceImpl 里面,前几行代码是做 validation 的事,接下来几行是做 convert 的事,然后是几行业务处理逻辑的代码,穿插着,我们需要通过 RPC 或者 DAO 获取更多的数据,拿到数据后,又是几行 convert 的代码,在接上一段业务逻辑代码,然后还要落库,发消息等等。

再简单的业务,按照上面这种写代码的方式,都会变得复杂,难维护。

因此,应用架构的核心使命就是要分离业务逻辑和技术细节。

让核心业务逻辑可以反映领域模型和领域应用,可以复用,可以很容易被看懂,让技术细节在辅助实现业务功能的同时,可以被替换。 最后我们发现,应用架构的道就是:“让上帝的归上帝,凯撒的归凯撒。”

Read more

决策树算法介绍:原理与案例实现

决策树算法介绍:原理与案例实现

决策树算法介绍:原理与案例实现 决策树算法介绍:原理与案例实现 一、决策树算法概述 决策树是一种基本的分类与回归方法,它基于树形结构进行决策。决策树的每一个节点都表示一个对象属性的测试,每个分支代表该属性测试的一个输出,每个叶节点则代表一个类别或值。决策树学习通常包括三个步骤:特征选择、决策树的生成和决策树的剪枝。 二、决策树算法原理 1. 特征选择 特征选择是决策树学习的核心。它决定了在树的每个节点上选择哪个属性进行测试。常用的特征选择准则有信息增益、增益比和基尼不纯度。 * 信息增益:表示划分数据集前后信息的不确定性减少的程度。选择信息增益最大的属性作为当前节点的测试属性。 * 增益比:在信息增益的基础上考虑了属性的取值数量,避免了对取值数量较多的属性的偏好。 * 基尼不纯度:在CART(分类与回归树)算法中,使用基尼不纯度作为特征选择的准则。基尼不纯度越小,表示纯度越高。 2. 决策树的生成 根据选择的特征选择准则,从根节点开始,递归地为每个节点选择最优的划分属性,并根据该属性的不同取值建立子节点。直到满足停止条件(如所有样本属于同一类,

By Ne0inhk
他给女朋友做了个树莓派复古相机,算法代码可自己编写,成本不到700元

他给女朋友做了个树莓派复古相机,算法代码可自己编写,成本不到700元

手机拍照不够爽,带个单反又太重? 试试做个树莓派复古相机,还能自己编写处理算法的那种—— 成本不到700元。 没错,颜值很高,拍出来的照片也能打: 你也可以快速上手做一个。 如何制作一个树莓派复古相机 目前,这部相机的代码、硬件清单、STL文件(用于3D打印)和电路图都已经开源。 首先是硬件部分。 这部复古相机的硬件清单如下: 树莓派Zero W(搭配microSD卡)、树莓派高清镜头模组、16mm 1000万像素长焦镜头、2.2英寸TFT显示屏、TP4056微型USB电池充电器、MT3608、2000mAh锂电池、电源开关、快门键、杜邦线、3D打印相机外壳、黑色皮革贴片(选用) 至于3D打印的相机外壳,作者已经开源了所需的STL文件,可以直接上手打印。 材料齐全后,就可以迅速上手制作了~ 内部的电路图,是这个样子的: 具体引脚如下: 搭建好后,整体电路长这样: 再加上3D外壳(喷了银色的漆)和镜头,一部简易的树莓派复古相机就做好了。 至于软件部分,

By Ne0inhk
🚀Zeek.ai一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器

🚀Zeek.ai一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器

是一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器。 集成了 SearXNG AI 搜索、开发工具集合、 市面上最流行的 AI 工具门户,以及代码编写和桌面快捷工具等功能, 通过模块化的 Monorepo 架构,提供轻量级、可扩展且高效的桌面体验, 助力 AI 驱动的日常工作流程。

By Ne0inhk