【19】读感 - 架构整洁之道(一)
概述
《架构整洁之道》一书中有提到设计和架构的感念,它们究竟是什么?书是这么说的,它们的层次不一样,架构更“高层级”的说法,这类讨论一般都把“底层”的实现细节排除在外。而设计往往指代的具体的系统底层组织结构和实现的细节。
如果作为一名系统架构师,这两个概念是不分家的,“架构设计”。而这种思想和我不谋而合。
读感
首先明白,架构设计的目标是什么,或者说终极目标是什么?用最小的人力成本来满足构建和维护该系统的需求。这句话过于总结了,而其中给了一个比较直白的例子来说,“一个软件架构,可以通过它的维护成本来衡量,如果该成本很低,并且在系统的整个生命周期内一直能维持这样的低成本,那么这个系统的设计就是良好的。如果该系统的每次发布都会提升下一次变更的成本,那么这个设计就是不好的”。
上面提到了架构这个概念,但是软件的价值标准却不单单是这一个概念来体现的。作者认为,对于每个软件系统来讲,都可以通过行为和架构两个维度来体现它的实际价值。应该确保自己的系统在这两个维度上的实际价值都能长时间维持在很高的状态。更不能够关注错误的维度,或者忽视其中的某个维度。
行为
关于行为价值,我不是很理解书中所说的具体指代。但我所认为的,就是业务逻辑的体现,即是需求的实现。
架构
关于架构价值,作者有一个很有趣的概念,让我眼前一亮,我们如何理解software和hardware这两个词汇。而以我开发多年的经验来讲,这对我来说其实就是软件和硬件的意思。“ware”的意识是“产品”,而“soft”的意思,是指的软件的灵活性。那些对机器上很难改变的工作行为,我们通常称之为硬件(hardware)。这个理解简直打开了我的大门。让我重新审视了一个软件,哦不,是software这个含义。
但是说了这么多,还是没有提及架构价值。通过引申软件这次一词,想要表达的就是“软”,什么是软,就是应用容易被修改。当需求方改变需求的时候,软件变更必须可以很简单而方便地实现。变更实施的难度应该和变更的范畴(scope)成等比关系,而与变更的具体形状(shape)无关
它这里的范畴还是最好直接翻译成范围,范畴这个概念层次太高,过于哲学。放在这里,真的不是很懂。但是如果是变更的范围,就好懂很多了。
在具体讲讲加粗的这句话。范围我们已经懂了,变更的范围,即需求修改或是新增删除所涉及的模块、类、函数。那么形状是什么?作者给的示例是这样说的,我们常常会认为自己的工作就是把方螺丝拧到圆螺丝孔里面。而这违背了架构设计的初衷,如果设计偏向某种特定的“形状”,那么之后的变更只会越来越难。
其表示什么呢?继续以这个例子为例,如果我有一个圆螺丝孔,第一时间不应该是想着如何把方螺丝拧进去,而是如何创建一个接口,使得这个接口对外可以接收任何“形状”的螺丝,而最终和螺丝孔相接的就是圆孔。这就是我的理解。
软件人的职责
艾森豪威尔矩阵讲了一个道理,难题分为两种,紧急的和重要的,而紧急的难题永远是不重要的,重要的难题永远是不紧急的。对于这句话,我是不敢苟同的,因为作为一个软件开发者来说,经常收到紧急而又重要的任务那是太多了。
软件系统中,行为是紧急的,架构是重要的
书中将四类事情进行了排序
1、重要且紧急
2、重要不紧急
3、不重要但紧急
4、不重要且不紧急
显然作者把重要的层级拉高了。业务和开发人员常常把第三优先级提到第一优先级去做,这不是混淆,而是没有区分这两类。如何区分,评估系统架构的重要程度,这就是软件开发人员自己的职责了。
总结
目前两章的重点,以及我个人的理解就这么多了,之后文章会开始讲后面章节的我的读感已经认为重要的内容以及有趣的认识,
相关文章:
【19】读感 - 架构整洁之道(一)
概述 《架构整洁之道》一书中有提到设计和架构的感念,它们究竟是什么?书是这么说的,它们的层次不一样,架构更“高层级”的说法,这类讨论一般都把“底层”的实现细节排除在外。而设计往往指代的具体的系统底层组织结构…...
多层全连接神经网络(三)---分类问题
问题介绍 机器学习中的监督学习主要分为回归问题和分类问题,我们之前已经讲过回归问题了,它希望预测的结果是连续的,那么分类问题所预测的结果就是离散的类别。这时输入变量可以是离散的,也可以是连续的,而监督学习从数…...
签名优化:请求数据类型不是`application/json`,将只对随机数进行签名计算,例如文件上传接口。
文章目录 I 签名进行请求数据类型类型判断1.1 常见的ContentType1.2 签名切面处理1.3 文件上传案例1.4 处理接口信息背景: 文件上传接口的请求数据类型通常为multipart/form-data,方便携带文本域和使用接口文档进行调试。 如果携带JSON数据,不方便调试接口。 前端数据也要特…...
PostgreSQL的Json数据类型如何使用
PostgreSQL中的JSON数据类型提供了一种灵活的方式来存储JSON(JavaScript Object Notation)数据。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在PostgreSQL中,你可以使用JSON和JSONB&…...
SpringData JPA Mongodb 查询部分字段
JPA 网上用的好像不多,找了好多材料以后最终找了这个可行的方案: Query(fields "{tender_id:1,_id:0}")List<MGPltTender> findByTenderIdIsNotNull(PageRequest pageRequest); 调用: Sort sort Sort.by(popularType.getC…...
NC65 设置下拉列表框值
NC65 设置下拉列表框值,如人员任职信息的异动事件: // 只有在入职登记时,才为异动事件下拉框过滤掉【离职】和【离职后变动】两个item DefaultConstEnum[] enumItems initTransevent(); BillItem item getBillCardPanel().getHeadItem(Psn…...
小阿轩yx-高性能内存对象缓存
小阿轩yx-高性能内存对象缓存 案例分析 案例概述 Memcached 是一款开源的高性能分布式内存对象缓存系统用于很多网站提高访问速度,尤其是需要频繁访问数据的大型网站是典型的 C/S 架构,需要构建 Memcached 服务器端与 Memcached API 客户端用 C 语言…...
华中师范大学学报人文社会科学版
一、《华中师范大学学报(人文社会科学版)》是国家教育部主管、华中师范大学主办的人文社会科学综合性学术期刊。本刊用稿以质量为标准,不分内稿外稿。文稿一经发表,即付报酬,不收版面费。 二、根据教育部和新闻出版总署颁发的社会科学学报编排规范,来稿应注意以下各项: 1. 题…...
CI/CD的node.js编译报错npm ERR! network request to https://registry.npmjs.org/
1、背景: 在维护paas云平台过程中,有研发反馈paas云平台上的CI/CD的前端流水线执行异常。 2、问题描述: 流水线执行的是前端编译,使用的是node.js环境。报错内容如下: 2024-07-18T01:23:04.203585287Z npm ERR! code E…...
用ssh tunnel的方式设置 AWS DocumentDB 公网访问
AWS DocumentDB的设定是只允许VPC内进行访问的,同时官方文档给了步骤,通过ssh tunnel的方式,可以从公网,或者从VPC外的网络,对DocumentDB进行访问。 我阅读了AWS官方文档并测试了这个步骤,如下是详细的步骤…...
基于电鸿(电力鸿蒙)的边缘计算网关,支持定制
1 产品信息 边缘计算网关基于平头哥 TH1520 芯片,支持 OpenHarmony 小型系统,是 连接物联网设备和云平台的重要枢纽,可应用于城市基础设施,智能工厂,智能建筑,营业网点,运营 服务中心相关场…...
WPF之URI的使用
pack://application:, pack://application:, 是一个在 WPF (Windows Presentation Foundation) 应用程序中用于指定资源位置的 URI (统一资源标识符) 方案的特定格式。这个格式用于访问嵌入在应用程序程序集(assemblies)中的资源,如图像、XA…...
Web开发:ASP.NET CORE前后端交互之AJAX(含基础Demo)
目录 一、后端 二、前端 三、代码位置 四、实现效果 五、关键的点 1.后端传输给前端: 2.前端传输给后端 一、后端 using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Mvc.Rendering; using WebAppl…...
经典神经网络(14)T5模型原理详解及其微调(文本摘要)
经典神经网络(14)T5模型原理详解及其微调(文本摘要) 2018 年,谷歌发布基于双向 Transformer 的大规模预训练语言模型 BERT,而后一系列基于 BERT 的研究工作如春笋般涌现,预训练模型也成为了业内解决 NLP 问题的标配。 2019年,谷歌…...
C语言结构体字节对齐技术详解
C语言结构体字节对齐技术详解(第一部分) 在C语言中,结构体字节对齐是一个重要的概念,它涉及到内存中数据的布局和访问效率。字节对齐可以帮助提高程序的性能,减少内存碎片,并确保数据的一致性和正确性。本…...
Linux编辑器——vim的使用
目录 vim的基本概念 命令模式 底行模式 插入模式 注释和取消注释 普通用户进行sudo提权 vim配置问题 vim的基本概念 一般使用的vim有三种模式: 命令模式 底行模式和插入模式,可以进行转换; vim filename 打开vim,进入的…...
Java案例斗地主游戏
目录 一案例要求: 二具体代码: 一案例要求: (由于暂时没有学到通信知识,所以只会发牌,不会设计打牌游戏) 二具体代码: Ⅰ:主函数 package three;public class test {…...
sqlite|轻量数据库|pgadmin4的sqlite数据库操作--重置密码和账号解锁
前言: pgadmin4的用户密码以及pgadmin4创建的pg数据库的连接信息等等都是存放在sqlite数据库内的;而有的时候,可能会由于自己的问题将pgadmin4的密码忘记,这个时候需要重置pgadmin4的密码,或者是pgadmin4的密码输错多…...
【ARMv8/v9 异常模型入门及渐进 9.1 - FIQ 和 IRQ 打开和关闭】
请阅读【ARMv8/v9 ARM64 System Exception】 文章目录 FIQ/IRQ Enable and Disable汇编指令详解功能解释使用场景和注意事项 FIQ/IRQ Enable and Disable 在ARMv8/v9架构中,可以使用下面汇编指令来打开FIQ和 IRQ,代码如下: asm volatile ("msr da…...
深入探索Flutter中的状态管理:使用Provider库
当涉及Flutter状态管理时,provider是一个强大且灵活的解决方案,它提供了一种简单且高效的方式来管理应用程序状态。本文将详细介绍Flutter中provider插件的使用方法、示例代码、各种使用场景以及注意事项。 1. 引入依赖 首先,需要在项目的pubspec.yaml文件中添加provider依…...
Claude规则引擎:结构化提示词管理与Prompt Engineering实战
1. 项目概述:一个规则引擎的诞生与价值 最近在社区里看到不少朋友在讨论如何更好地管理和复用与Claude这类大型语言模型交互时的提示词(Prompt)和规则集。我自己在长期使用过程中也深有体会:每次开启一个新对话,要么得…...
CAPL字符串函数进阶:用strstr_off和substr_cpy_off高效解析CANdb++信号描述符
CAPL字符串函数进阶:用strstr_off和substr_cpy_off高效解析CANdb信号描述符 在汽车电子测试领域,CANdb数据库导出的信号描述信息往往包含大量冗余内容。面对"EngineSpeed:32|RPM[0,8000]"这类复杂字符串,传统字符串处理方法需要编写…...
FPGA与ASIC核心技术对比与选型指南
1. FPGA与ASIC的本质差异解析在数字电路设计领域,FPGA(现场可编程门阵列)和ASIC(专用集成电路)代表着两种截然不同的技术路线。FPGA本质上是一种"硬件可重构"的半导体器件,其核心结构由可编程逻辑…...
从课堂到代码:三大数学可视化工具实战解析
1. 数学可视化工具的选择困境 第一次接触数学可视化工具时,我被各种选项搞得眼花缭乱。作为数学老师,我需要一个能让学生快速上手的工具;作为编程爱好者,我又希望它能支持更复杂的算法可视化。经过多年实践,我发现Desm…...
从‘相似三角形’到3D点云:手把手用Python+OpenCV模拟激光三角法三维重建
从相似三角形到3D点云:PythonOpenCV激光三角法三维重建实战 激光三角测量法在工业检测、逆向工程等领域有着广泛应用。本文将带您从零开始,用Python和OpenCV实现一个完整的激光三角法三维重建系统。不同于简单的位移测量,我们将重点放在如何通…...
降AI提示词够用吗?降AI工具比prompt强在哪?嘎嘎降AI双降!
降AI提示词够用吗?降AI工具比prompt强在哪?嘎嘎降AI双降! 用 AI 写论文的同学经常纠结一件事:0 元的降 AI 提示词够用吗?还是非得花钱买降 AI 工具不可? 直接给结论: 如果你 AI 写得不多、整体 …...
基于MCP协议构建PrismHR连接器:打通HR数据孤岛,赋能AI原生应用
1. 项目概述:一个连接器,打通HR数据孤岛最近在做一个企业内部的HR系统集成项目,遇到了一个典型的老大难问题:核心的HRIS(人力资源信息系统)是PrismHR,但公司内部还有一大堆其他系统,…...
2026年透明背景图片制作方法完全指南|免费工具推荐
最近有个朋友问我:"怎样才能快速制作透明背景图片?"我才意识到,很多人在处理图片时都会遇到这个问题——无论是做电商商品图、证件照换底色,还是简单的社交媒体配图,都需要把背景去掉。今天我就根据自己这几…...
iOS激活锁终极绕过指南:开源工具applera1n的完整解决方案
iOS激活锁终极绕过指南:开源工具applera1n的完整解决方案 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 面对iOS设备激活锁的困扰,你是否曾为无法使用二手iPhone而烦恼&#x…...
SMBus协议深度解析:从基础时序到高级应用
1. SMBus协议基础:从I2C到系统管理总线 第一次接触SMBus时,我误以为它只是I2C的"马甲"。实际调试智能电池项目后才发现,这个1996年由Intel提出的二线制串行总线,在系统管理领域有着独特的价值。简单来说,SMB…...
