2024-05-29 架构-程序设计-思考
摘要:
最近在抽出时间做一个数据库的driver, 其中有些问题驱动的软件代码的思考,是很值得回味的。
做的系统,所思考的问题,所设计的解决方案,其实都是可以看作是对解决问题方式。而不仅仅是某个类库的API的使用,某个算法的实现复杂度,某个固定的设计模式,或者设计规约。
程序设计的思考:
- 对于技术的设计方案来说,某个业务领域的知识是一回事,比如说关系型数据库,时序类型的数据库,所要处理的业务,也就是DDD所谓的领域知识专家。
- 站在架构师的角度,是要从技术的角度,确保项目的成功,无论是功能性的需求,还是非功能行动需求,也就是性能需求,稳定性需求,甚至包括部署运维以及升级的需求,在不同的抽象层次的边界上,进行设计。
- 软件分成不同的抽象层次,在不同的抽象层次上,处理不同的问题范围。
- 而对于所谓的架构,从名词的角度,是一些功能点的组织方式,从动词的角度,是不同的功能的互相交互,达成一个完整的目标。但是无论是名词还是动词,都是与结构有关。
- 那么所要面临的是什么问题呢?从宏观的角度,是功能的分解,分解成更小的可以理解的部分,组成最小的功能单元。这个功能单元里,处理好本模块所能考虑到的所有的问题。
- 其实从这个角度上来说,比较适合采用思维导图的方式,而且是右向思维导图的方式,将功能层层分解,并且也将问题层层分解。
- 所谓的架构师,所谓的解决方案架构师,考验一个软件开发者的能力,便是他能驾驭多大的项目,保证这个项目的功能和非功能的要求。
- 结合业务,又从业务中抽离,要站在更高的抽象层次上做思考。抽象出通用的解决问题的思路,解决问题的办法。
相关文章:
2024-05-29 架构-程序设计-思考
摘要: 最近在抽出时间做一个数据库的driver, 其中有些问题驱动的软件代码的思考,是很值得回味的。 做的系统,所思考的问题,所设计的解决方案,其实都是可以看作是对解决问题方式。而不仅仅是某个类库的API的使用,某个…...
关于网络的基础知识
大家好,在当今数字时代,网络已经成为我们生活中不可或缺的一部分,它连接着世界的每一个角落,让信息、资源和人们彼此之间无阻碍地交流和共享。然而,对于许多人来说,网络仍然是一个神秘而复杂的领域…...
CTF网络安全大赛简单web题目:eval
题目来源于:bugku 题目难度:简单 一道简单web的题目 题目源代码: <?phpinclude "flag.php";$a $_REQUEST[hello];eval( "var_dump($a);");show_source(__FILE__); ?> 这个PHP脚本有几个关键部分,但…...
Linux通过 SSH 使用 rsync 进行文件传输
目录 目的整体思路ssh建立连接A服务器上的操作输入 ssh-keygen 生成密钥对查看公钥 B服务器上的操作设置公钥认证 A服务器上的操作使用SSH登录进行测试 同步数据知识拓展SSH(Secure Shell)rsync(Remote Sync) 目的 使用SSH&#…...
【保姆级介绍下Foxmail 邮箱】
🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…...
ABAP MD04增强排除MRP元素
场景 MD04跑出来很多MRP元素,用户想手工控制某些MRP元素不参与运算 分析 增强点还蛮好找的,控制MRP元素是否参与运算用下面的se19三代增强点就可以,打个断点看下MD04进的哪个增强点就行 旧版本的用这个:MD_CHANGE_MRP_DATA 新…...
构建一个简单的情感分析器:使用Python和spaCy
构建一个简单的情感分析器:使用Python和spaCy 引言 情感分析是自然语言处理(NLP)中的一项重要技术,它可以帮助企业和研究人员理解公众对特定主题或产品的看法。 在本篇文章中,我们将使用Python编程语言和 spaCy 库来构…...
数据库设计实例---学习数据库最重要的应用之一
一、引言【可忽略】 在学习“数据库系统概述”这门课程时,我一直很好奇,这样一门必修课,究竟教会了我什么呢? 由于下课后,,没有拓展自己的眼界,上课时又局限于课堂上老师的讲课水平,…...
数据结构算法题day05
数据结构算法题day05 题目算法思想代码运行代码 题目 从有序表中删除所有其值重复的元素,使表中所有元素的值均不同。算法思想 第一个元素(不重复)依次向后扫描,不重复就保留,重复(不保留)就删…...
关于《Java并发编程之线程池十八问》的补充内容
一、写在开头 在上一篇文章我们写《Java并发编程之线程池十八问》的时候,鉴于当时的篇幅已经过长,很多内容就没有扩展了,在这篇文章里对一些关键知识点进行对比补充。 二、Runnable vs Callable 在创建线程的时候,一般会选用 Runnable 和 Callable 两种方式。 【源码对…...
扒出秦L三个槽点,我不考虑买它了
文 | Auto芯球 作者 | 雷慢 比亚迪的有一个王炸“秦L”,再一次吸引了我注意力, 我上一辆车刚卖不久,最近打算买第二辆车, 二手车和新车都有在看, 我又是一个坚定的实用主义者, 特别是现在的经济环境不…...
【408真题】2009-28
“接”是针对题目进行必要的分析,比较简略; “化”是对题目中所涉及到的知识点进行详细解释; “发”是对此题型的解题套路总结,并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材(2025版&…...
LeetCode---链表
203. 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 代码示例1:(直接使用原来的链表来进行移除节点操作) //时间复杂度: O(n) //空间复杂度: O(1) class Solu…...
idea 快捷键运用
ctrl d 向下复制一行 shiftalt↑/↓ 向上或者向下移动光标所在行 shiftctrl↑/↓ 向上或者向下移动光标所在行(自动对齐) shift F6 rename包名或者类名或者批量修改变量名(不建议更改项目名,包名也尽量别改) 输入if 然后ctrlshift回车 补全缺失的括号 shift …...
k8s问题
文章目录 本地搭K8s集群 bilibili什么是声明式API?kubectl apply Etcd数据库有什么特性,为什么K8S选用了Etcd数据库?K8S中一个node的生命周期是怎样的?服务发现机制介绍docker的实现原理介绍如果只是使用Linux命名空间进行分离&am…...
串口通信问题排查总结
串口通信问题排查 排查原则: 软件从发送处理到接收处理,核查驱动、控制及发送接收数据是否正常。硬件从发送到接收,针对信号经过的各段,分段核对信号是否正常。示波器、逻辑分析仪。用万用表、示波器、逻辑分析仪等工具…...
【教学类-59-】专注力视觉训练01(圆点百数图)
背景需求: 视觉训练的神奇效果,让你的宝贝成为焦点 - 小红书魔法视觉追踪-视觉训练—— 🔍视觉训练🔍 🔹想要提高宝宝的专注力,视觉训练是个绝佳方法! 🔹让宝宝仔细观察数字的路线&a…...
C 语言实例 - 循环输出26个字母
循环输出 26 个字母。 以下例子我们用变量 letter 来存储当前要输出的字母,然后,使用 for 循环来重复 26 次输出字母,并在每个字母后面加一个空格。 循环内部使用 printf 函数来输出 letter 变量的值,%c 是 printf 的格式控制符…...
qt多语言翻译不生效的原因
假设您有QT语言家的基础知识,假设网上那些所有的问题您都已经排查过了,但依然翻译不生效,那么可以看下这篇帖子,其实就一个问题,变量的生命周期,假设QTranslator是一个函数内的变量,且没有被声明…...
springboot集成达梦数据库8,用springboot+mtbatisplus查询值为空
springboot集成达梦数据库8,用springbootmtbatisplus查询值为空 背景:springboot集成达梦数据库8,用springbootmtbatisplus查询值为空,但是在DB管理工具中是可以查询到数据的。 原因及解决方法:执行添加语句后…...
3步打造你的专属AI角色扮演世界:SillyTavern终极指南
3步打造你的专属AI角色扮演世界:SillyTavern终极指南 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 你是否厌倦了千篇一律的AI对话?是否渴望创造真正有灵魂的虚拟角…...
AirNgin ESP32 MQTT客户端:面向工业IoT的平台化固件库
1. 项目概述AirNgin ESP32 MQTT Client 是一款专为 ESP32 平台设计的 Arduino 兼容库,面向伊朗本土 IoT 平台 AirNgin 构建。该库并非通用 MQTT 封装,而是深度集成 AirNgin 云平台特有协议栈与管理逻辑的生产级固件组件。其核心价值在于将设备接入、状态…...
LabVIEW高手进阶:巧用层叠移位寄存器,轻松实现数据队列与历史状态追踪
LabVIEW高手进阶:巧用层叠移位寄存器实现工业级数据流处理 在工业自动化测试和实时信号处理领域,数据流的连续处理能力往往决定着整个系统的可靠性。传统的数据缓存方案要么消耗过多内存资源,要么引入难以预测的延迟,而LabVIEW中一…...
5G技术解析:深入理解5GNR帧结构与空口资源分配
1. 5GNR帧结构的设计原理 第一次接触5GNR帧结构时,我被那些密密麻麻的时隙和符号搞得头晕眼花。但真正理解后才发现,这套设计就像乐高积木一样精巧。5GNR帧结构延续了4G LTE的10ms帧和1ms子帧设计,但玩出了更多花样。 最关键的改变在于时隙灵…...
用Verilog手搓一个IEEE754浮点加法器:从状态机设计到FPGA上板验证(附完整代码)
从零构建IEEE754浮点加法器:Verilog状态机设计与FPGA实战全解析 1. 浮点运算器的工程实现挑战 在数字信号处理和高性能计算领域,浮点运算器一直是核心组件。与整数运算不同,浮点数的特殊存储格式使得其运算过程复杂得多。IEEE754标准定义了浮…...
ArdaTask:面向MCU的轻量级时间驱动任务调度框架
1. 项目概述ArdaTask 是一个面向嵌入式系统的轻量级、时间驱动型多任务调度框架,其设计目标明确:在资源受限的MCU(如Cortex-M0/M3/M4、RISC-V内核)上实现确定性、低开销、无动态内存分配的周期性任务管理。它不替代RTOS࿰…...
测试自动化维护成本:如何实现50%降本增效
一、自动化测试维护成本的核心痛点 1.1 成本构成分析 脚本维护成本(占总成本60%-70%) 页面改版导致的元素定位失效(平均每次影响30%脚本) 业务逻辑变更引发的用例重构(单次维护耗时2-8小时) 环境维护成…...
西门子1200水处理程序全解析
西门子1200水处理程序 包含1200PLC通讯点表,CAD原理图,操作说明。 触摸屏包含了组态画面,操作画面,参数设置画面,报警记录等。 V16以上可以打开最近在搞西门子1200的水处理程序项目,今天来和大家分享一下其…...
高效视频素材全流程管理工具:Cobalt 开源解决方案详解
高效视频素材全流程管理工具:Cobalt 开源解决方案详解 【免费下载链接】cobalt save what you love 项目地址: https://gitcode.com/GitHub_Trending/cob/cobalt Cobalt 是一款专为内容创作者设计的高效视频素材管理工具,支持从 30 主流平台下载视…...
Loop窗口管理工具:如何用径向菜单和智能暂存系统提升Mac多任务效率300%
Loop窗口管理工具:如何用径向菜单和智能暂存系统提升Mac多任务效率300% 【免费下载链接】Loop MacOS窗口管理 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 在当今多任务工作环境中,Mac用户经常面临窗口管理的挑战。每天在多个应用之间…...
