《系统架构设计》-01-架构和架构师概述
文章目录
- 1. 架构的基本定义
- 1.1 架构组成理论
- 1.1.1 系统元素
- 1)概念
- 2)静态结构和动态结构
- 1.1.2 基本系统属性
- 1.1.3 设计和发展原则
- 1.2 架构的决策理论
- 1.2.1 统一软件过程(Rational Unified Process,统一软件过程)
- 1.2.2 决策类的架构设计过程
- 1.3 架构设计与系统工程
- 1.3.1 人
- 1.3.2 事
- 1.3.3 物
- 2. 架构师
- 2.1 架构师的活动与系统工程
- 2.1.1 架构师的工作
- 2.1.2 对项目的参与度
- 2.1.3 架构师和架构描述
- 2.2 架构师的分类
- 2.2.1 根据作用
- 2.2.2 根据职责
- 2.2.3 根据关注层次
- 2.3 架构师的技能和职责
- 2.4 架构师的基本职责
- 3. 从程序员到架构师
- 3.1 架构师和程序员的对比
- 3.1.1 思维模式
- 3.1.2 沟通
- 3.1.3 学习
- 3.1.4 协作
- 3.1.5 推动力
- 3.1.6 全局高度
- 3.1.7 方法论
- 3.1.8 业务
- 3.1.9 时间管理
- 3.1.10 系统化
- 3.1.11 产品交付
- 3.1.12 实用主义
- 3.2 转型成功的三段式模型
- 3.2.1 思路
- 3.2.2 方法论
- 3.2.3 工程实践
- 3.2.3 转型思维导图
- 3.3 架构师的工作开展
- 1)识别干系人
- 2)确定原则
- 3)分析业务场景
- 4)使用架构模式
- 5)构建系统模型
- 6)完成技术方案
- 7)评估与决策
- 8)管理过程事务
- 9)开发并学习
1. 架构的基本定义
1.1 架构组成理论
系统架构包括系统元素、基本系统属性、设计和发展原则3个主要方面。
1.1.1 系统元素
1)概念
- 系统元素:包括模块、组件、接口、子系统等日常开发中的内容。
- 系统结构:元素加上它们之间的关系。
2)静态结构和动态结构
- 静态结构 :体现在设计时,描述系统内部设计时元素及其组合方式;
- 动态结构:关注运行时的元素及其交互方式
1.1.2 基本系统属性
- 功能属性:系统能做什么
- 质量属性:外部可见非功能性属性.如系统的性能、安全性等属性
1.1.3 设计和发展原则
- 应该是可度量、可测试和可跟踪。
常见的原则如用户操作响应时间在1s之内、用户信息需要进行安全性处理、系统可以快速集成第三方服务等。
1.2 架构的决策理论
以下两个理论体系仅是对架构定义问题的一个诠释,架构师需根据自己的情况理解。
1.2.1 统一软件过程(Rational Unified Process,统一软件过程)
- 架构
该理论关注架构实践的主体—人,以人的决策为描述对象。架构决策不仅包括软件系统的组织、元素、子系统和架构风格等,还包括众多非功能性需求的决策。 - 决策
当架构设计过程无法顺利进行,如碰到模块如何划分、模块之间交互方式是什么、开发技术如何选型、如何适应可能发生的变化等常见问题时,通过架构师团队根据场景和问题作出相应的决策。不断决策的过程就是问题得到不断解决、架构得到不断发展的过程。通过一系列的决策最终形成完整的系统架构。
1.2.2 决策类的架构设计过程
- 架构
决策类的架构设计过程往往可以从系统切分出发,如把系统分成客户端和服务器端两大部分。然后基于服务器端,可以在拆分成服务适配层、业务逻辑层和数据访问层。而业务逻辑层再可以分成多个模块。如下图所示:
- 决策
每一个切分的过程实际上就是一个决策的过程,通过合理而有效的决策促进系统架构由高层次到较低层次再到实现层次的不断演进。
1.3 架构设计与系统工程
架构设计就是以干系人提出的业务需求为源头、以技术管理和过程改进体系为工作流程、以质量为重心的一项系统工程。
在系统工程中,业务需求需要进行分析和抽象、过程需要进行管理和改进、设计质量需要进行保障,完成包含这些活动在内的整个系统架构设计工作的角色就是架构师。
1.3.1 人
- 干系人(Stakeholder):构所需要满足的各种业务方、客户、市场、项目、产品等相关人员。
干系人是功能需求的来源,同时拥有对系统架构是否成功的判断权利。
-
架构设计本质是满足业务需求,业务架构驱动着技术架构(而不是反其道而行)。
-
系统工程的第一点核心思路
:就是我们从事任何架构设计相关的工作都是为了满足干系人的需求。
1.3.2 事
- 主要包括描述架构和展示架构
- 架构描述:使用特定的工具、特定的流程和特定的视图视角创建、记录和维护架构。
- 架构展示:把描述出来的架构在合适的时机和场合展示给相关干系人供其参考和判断。
系统工程的第二个核心思路
:要站在过程管理的思维模式上去看待架构设计这件事情
无论是架构描述还是架构展示都不是一步能够到位的,架构设计本身也是一个过程,过程就需要通过计划、实施、监控、管理等方法确保其执行,并通过持续改进实现过程的高效性和正确性。
1.3.3 物
- 指所设计的架构及对应的架构描述。
架构描述并不只是架构师的个人成果,而是架构师及相关干系人共同确认的成果,用于构建系统,以满足业务需求。
系统工程的第三个核心思路
:需要提供架构设计产物的可见性,同时确保具备较高设计质量,使其能够接受来自内部和外部的评审和验证。
2. 架构师
2.1 架构师的活动与系统工程
架构师是负责设计、记录和领导能够满足所有干系人需求的系统构建过程的人。
2.1.1 架构师的工作
- 识别干系人并让他们参与进来
干系人是业务需求的源头,识别正确的干系人能够确保业务需求的正确性,让干系人参与能够确保业务需求的实时性和有效控制需求变更。
- 理解和记录系统功能和非功能相关的关注点
通过需求分析,架构师梳理并抽象系统的各项功能性和非功能性需求,并对这些需求进行系统建模。
- 创建并拥有应对这些关注点的架构定义
对功能性和非功能性需求,从扩展性(Extensibility)、性能(Performance)、可用性(Availability)、安全性(Security)、伸缩性(Scalability)等架构设计的基本要素出发定义架构。
- 在把架构实现为具体系统的过程中起主要作用
推动架构设计活动按照项目和产品计划有序进行,参与需求、设计评审等各种技术评审过程,并管理系统设计和开发团队的日常工作。
2.1.2 对项目的参与度
就一个完整的系统开发生命周期而言,架构设计活动有其时效性。下图体现了传统瀑布(Waterfall)模型下的系统开发生命周期与架构师参与情况。
从图中可以看出在由需求分析和系统建模所构成的系统初始阶段,以及由服务集成和产品接受所构成的最后交付阶段,架构师会较多地参与到系统建设过程中去。
对于类似Scrum的敏捷开发模型,如果把一个个迭代看成是小型的Water-Scrum-Fall模型的话,架构师参与程度实际上也与上图所示的结果相类似,即重点参与迭代计划阶段和迭代演示回顾阶段。
2.1.3 架构师和架构描述
- 架构师根据干系人的业务需求捕获系统功能和非功能相关的关注点,并创建架构描述。
- 架构师对架构描述这一架构设计产物具有拥有权
- 因此架构师有权力更有责任维护架构描述并管理其实时性和有效性。
- 架构师需要跟踪并验证架构定义过程的时机、参与者、技术评审和各项阶段性成果。
2.2 架构师的分类
2.2.1 根据作用
设计型、救火型、布道型、极客型等
相较于传统意义上的设计型架构师,以上类型的架构师更加偏重于执行某一项特定的架构任务,并不一定会完整参与系统开发生命周期,更不一定会从系统工程的角度去看问题。
2.2.2 根据职责
- 产品型架构师
偏重于进行业务架构设计,往往在系统开发前期会重点参与 - 基础设施型架构师
偏重于进行技术基础框架设计,一般采用独立于系统开发生命周期的特有开发模式 - 应用型架构师(通常意义上的架构师)
负责将问题领域进行建模并转变成解决方案。
2.2.3 根据关注层次
功能、非功能、团队组织和管理、产品运营等。
2.3 架构师的技能和职责
作为一名合格的架构师,完备的技术领域知识是必备的技能,包括我们在1.1.2节架构演进理论中提到过的分布式系统、缓存、消息中间件、企业服务总线、搜索引擎和批量数据处理等各种目前业务主流的技术体系,也包括软件架构体系结构中所蕴含的架构风格、架构模式和架构模型思想。但针对应用设计型架构师,所需的技能不仅仅限于了解和掌握技术体系,也需要从另外两个层面进行技能拓展。
(1)业务领域知识
在应用程序开发过程中,业务架构驱动技术架构现象非常普遍。提升业务领域知识和提升技术领域知识一样,都对架构设计有直接影响。从这个角度讲,架构师应该具备跨领域的技能。
(2)软技能
2.4 架构师的基本职责
- 作为技术负责人,从问题领域出发进行抽象和建模并提供系统解决方案。
- 与项目经理合作,制定计划、分配资源、组建团队。
- 通过自身影响力和协作能力,保证项目按既定计划和成本完成。
定义并记录系统的架构、构建和部署系统的策略、确保架构满足系统的质量属性、促进系统级别决定的产出、确保相关决定与干系人的期望一致、对架构方面的各项指标做平衡性的判断并确保达成一致意见等都是架构师的职责示例。
3. 从程序员到架构师
3.1 架构师和程序员的对比
3.1.1 思维模式
- 程序员容易情绪化思维,对碰到的问题倾向于使用主观意识去寻找方法,同时又有一些顽固,钻牛角尖的场景并不少见。
- 架构师通常具备全面的思考和分析模式,倾向于使用换位思考从问题的内因、外因出发,找到团队内部和外部能够解决问题的资源,确保问题得以高效解决。
3.1.2 沟通
- 程序员普遍不善交流,表现在不善于听取别人的意见,更不善于表达自身的想法。
- 架构师了解团队和组织文化,把握政治方向,具备沟通和协商能力是基本要求。
3.1.3 学习
- 程序员学习积极性高,能力也强,但过于依赖个人经验,并不能很好把握住学习的方向,缺少系统的学习计划和目标。
- 架构师通常具备较强的自我提升意识,明白要学什么及怎么学。
3.1.4 协作
- 程序员创造力强,但在团队和组织氛围下,缺乏一定纪律性,往往从个人出发思考问题和开展活动。
- 架构师作为技术负责人,需要通过系统的工程学方法,应用项目管理知识领域及相关工程实践开展团队协作。
3.1.5 推动力
- 程序员独立思考,有好的想法但并不喜欢分享,更加不会作为推动者去主动落实这些想法。
- 架构师应具备领导力与推动力,除了技术演进,在团队价值取向、组织趋势把握、组织运营和人才发展等各个方面都可能需要发挥其主导性。
3.1.6 全局高度
- 程序员由于意识形态和经验的缺失,普遍过多关注细节而缺少大局观。
- 而架构师具备全局观,拥有独特的基于系统架构设计的视图和视角。
3.1.7 方法论
- 程序员开发能力出众,但缺乏设计和建模的方法论。
- 架构师善于把握架构设计和系统建模的角度和切入点,并使用一组用于确保成功的手段、方式和流程。
3.1.8 业务
- 程序员相比业务更喜欢钻研技术,通常不关注业务,不善于从干系人角度出发理解业务并进行抽象。
- 架构师理解干系人的业务痛点,并基于业务需求进行业务抽象和系统建模是其基本工作内容之一。
3.1.9 时间管理
- 程序员有很强的时间观念,但又不善于管理时间。
- 架构师善于采用敏捷、迭代的过程来合理安排时间,规避时间管理上的风险。
3.1.10 系统化
- 程序员拼命工作而不是聪明的工作,因为缺少系统化的工作规程。
- 架构师需要从系统工程角度出发,对软件开发、项目管理和过程改进等系统过程进行合理规划,形成统一的工作模式,确保团队成员都能在同一节奏上开展开发工作。
3.1.11 产品交付
- 程序员只关注写“高效”的代码,却不关心“高效”的产品交付。
- 架构师基于产品交付模型和工具进行产品的快速迭代及实现系统的自动化交付。
3.1.12 实用主义
- 程序员写“聪明”的代码而不是“简单”的代码,“聪明”的代码并不意味着一定能够带来更好的性能和可维护性,有时候反而成为团队知识传递的一种障碍。
- 而架构师关注实用主义,追求成功而不是完美。
3.2 转型成功的三段式模型
3.2.1 思路
- 意识形态(Mindset)
意识形态是转型的前提。意识形态很多时候决定了一个人发展的高度。
- 环境(Environment)
一个人所能达到的高度还很大程度受限于环境因素。我们往往无法改变环境,只能适应。转型之前需要判断,必要时应该果断改变。
- 决心(Determination)。
3.2.2 方法论
-
什么是方法论
所谓方法就是做事的手段、方式、流程,而方法论即一组方法的集合。 -
方法论举例
- 了解主流软件架构风格、模式和模型、通过整合各种架构体系形成自身的架构设计思想是一种方法论
- 对主流架构设计方法进行阐述、把握主流技术体系知识领域及相应的原理是一种方法论
- 围绕软件开发生命周期的系统工程,理解软件工程、业务架构、敏捷方法、产品交付等概念是一种方法论
- 了解各种软技能需求及相应的应对方法也是一种方法论
3.2.3 工程实践
把软件开发的最佳方式和开发人员个人做得最好的事项总结出来,就是组织的最佳实践。
3.2.3 转型思维导图
3.3 架构师的工作开展
1)识别干系人
2)确定原则
架构原则代表对架构设计过程中采用的方法和意图的基本声明,并用于指导架构的定义。
最小化外部数据、用户信息需要进行安全性处理都属于典型的原则示例。在系统设计之前对一些基本原则的规划和沉淀被认为是一项比较好的工程实践,有助于在根据具体业务场景进行架构设计过程中保持架构的独立性及架构师的基本立场。
3)分析业务场景
- 场景分类
- 功能性场景:架构视图
- 系统场景:架构视角
- 识别方法
识别业务场景的过程可以采用从业务需求出发进行分析、跟干系人沟通、借助于架构师经验等方式。该过程的输出是一系列业务场景,确保这些业务场景按照优先级进行排序。
4)使用架构模式
是解决问题通用的方法和结构,包括发布-订阅、管道-过滤器、事件驱动架构等架构风格,也包括对象-关系行为模式、Web表现模式、分布模式架构等架构模式及各种架构模型。
5)构建系统模型
- UML
采用UML能够方便地建立系统所需的用例建模、静态建模、动态建模和架构模型。
- 领域驱动设计(Domain Driven Design,DDD)模型
6)完成技术方案
对于系统架构设计,技术方案即架构描述。
架构描述中通常包含干系人的关注点、通用架构原则、架构视图的确立、架构视角的确定、视图与视角之间的一致性和相关性等要素。
7)评估与决策
- 评估的作用:架构描述需要通过评估才能正式生效。
- 评估的目的:评估只是过程,不是结果,评估的目的是与干系人达成一致。
- 常见的评估方法:正式评审、结构化走查、场景评估、原型系统演示等。
- 架构师在评估中的作用:在各种评估活动中应该起到推动作用。
8)管理过程事务
架构师作为技术负责人,通常也担任技术团队的Leader,自然也需要参与团队资源整合、内部/外部分享和交流、Code Review、人员招聘面试、汇报等日常管理事务。
9)开发并学习
架构师通常也需要和团队一起参与核心代码编写、参加技术会议和调研新技术。
相关文章:

《系统架构设计》-01-架构和架构师概述
文章目录1. 架构的基本定义1.1 架构组成理论1.1.1 系统元素1)概念2)静态结构和动态结构1.1.2 基本系统属性1.1.3 设计和发展原则1.2 架构的决策理论1.2.1 统一软件过程(Rational Unified Process,统一软件过程)1.2.2 决…...

第七届蓝桥杯省赛——5分小组
题目:9名运动员参加比赛,需要分3组进行预赛。有哪些分组的方案呢?我们标记运动员为 A,B,C,... I下面的程序列出了所有的分组方法。该程序的正常输出为:ABC DEF GHIABC DEG FHIABC DEH FGIABC DEI FGHABC DFG EHIABC DFH EGIABC DF…...
中国专科医院行业市场规模及未来发展趋势
中国专科医院行业市场规模及未来发展趋势中国专科医院行业在过去几年中取得了跨越式发展,市场规模不断扩大,未来的发展前景也远比过去更加乐观。根据市场调研在线网发布的2023-2029年中国专科医院行业运营现状及发展前景预测报告分析,截至2018年…...

【刷题笔记】--两数之和Ⅳ,从二叉树中找出两数之和
法一:深度搜索中序遍历双指针 思路:通过中序遍历二叉树得到一个递增的数列,再在这个递增的二叉树中找到这两数。 主要学到双指针这个方法。 对于一般数列,我们要找到两数满足其之和等于目标数,我们一般会进行暴力&a…...

浏览器渲染原理JavaScript V8引擎
浏览器渲染原理 前言 在我们面试过程中,面试官经常会问到这么一个问题,那就是从在浏览器地址栏中输入URL到页面显示,浏览器到底发生了什么? 浏览器内有哪些进程,这些进程都有些什么作用;浏览器地址输入U…...

在TheSandbox 的「BOYS PLANET」元宇宙中与你的男孩们见面吧!
世界各的男孩们成为 K-Pop 男团的旅程。 Mnet 的全球项目 BOYS PLANET 终于在 2 月 2 日首次亮相! The Sandbox 与 CJ ENM 合作,于 2 月 6 日晚上 10 点开始举办两个基于 BOYS PLANET 生存节目的虚拟体验:BOYS PLANET:BOYS LAND 和…...

数据结构与算法:java对象的比较
1.基本类型的比较 在Java中,基本类型的对象可以直接比较大小。 public class TestCompare {public static void main(String[] args) {int a 10;int b 20;System.out.println(a > b);System.out.println(a < b);System.out.println(a b);char c1 A;char…...

python(16)--类
一、类的基本操作1.定义一个类格式:class Classname( ):内容💎鄙人目前还是一名学生,最熟悉的也就是学校了,所以就以学校为例子来建立一个类吧class School():headline"帝国理工大学"def schoolmotto(self):…...
CNI 网络流量分析(七)Calico 介绍与原理(二)
文章目录CNI 网络流量分析(七)Calico 介绍与原理(二)CNIIPAM指定 IP指定非 IPAM IPCNI 网络流量分析(七)Calico 介绍与原理(二) CNI 支持多种 datapath,默认是 linuxDa…...
API安全的最大威胁:三体攻击
最近《三体》火的一塌糊涂,动画片、电视剧和书都受到了大家的喜爱。在API安全上,最近也发现了三体攻击。 当然了,肯定是不来自于三体人的攻击,这里的三体攻击指的是(trinity,也称三位一体攻击),是一个新的攻击手法。具体的情况老李也找到了相关的介绍,下面就分享给大…...

分布式事务解决方案——TCC
TCC是Try、Confirm、Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作:预处理Try、确认Confirm、撤销Cancel。1、Try 阶段是做业务检查(一致性)及资源预留(隔离),此阶段仅是一个初步操作,它和后续的Confirm一起才能真正构成…...

ITSS认证分为几个级别,哪个级别最高
一、什么是ITSS ITSS( 信息技术服务标准,简称ITSS)是国内第一套成体系和综合配套的信息技术服务标准库,全面规范了IT服务产品及其组成要素,用于指导实施标准化和可信赖的IT服务。 ITSS是在工业和信息化部、国家标准化管理委员会的联合指导下…...

ZigBee案例笔记 - USART
文章目录1.串行通信接口简述2.串行通信接口寄存器U0CSR (0x86) -USART 0 控制和状态U0UCR (0xC4)–USART 0 UART 控制U0GCR (0xC5)–USART 0 通用控制U0BUF (0xC1) – USART 0 接收/传送数据缓存U0BAUD (0xC2) – USART 0 波特率控制3.设置串行通信接口比特率控制寄存器4.外设I…...
java | 基于Redis的分布式锁实现①
前言 首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件: 互斥性。在任意时刻,只有一个客户端能持有锁。不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户…...

十六、基于FPGA的CRC校验设计实现
1,CRC校验循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的…...

2022爱分析 · DataOps厂商全景报告 | 爱分析报告
报告编委 李喆 爱分析合伙人&首席分析师 廖耘加 爱分析分析师 目录 1. 研究范围定义 2. 市场洞察 3. 厂商全景地图 4. 市场分析与厂商评估 5. 入选厂商列表 1. 研究范围定义 研究范围 在后疫情时代,以数据分析为代表的数据消费场景日益丰富&…...
京东前端react面试题及答案
useEffect 与 useLayoutEffect 的区别 (1)共同点 运用效果: useEffect 与 useLayoutEffect 两者都是用于处理副作用,这些副作用包括改变 DOM、设置订阅、操作定时器等。在函数组件内部操作副作用是不被允许的,所以需…...

TongWeb8数据源相关问题
问题一:数据源连接不足当TongWeb数据源连接用完时,除了监控中看到连接占用高以外,日志中会有如下提示信息。2023-02-14 10:24:43 [WARN] - com.tongweb.web.jdbc.pool.PoolExhaustedException: [TW-0.0.0.0-8088-3] Timeout: Pool empty. Una…...

关于最近大热的AI,你怎么看?
AI人工智能,相信大家都不陌生,也都接触过不少。但是最近小编在网上冲浪的时候发现各大媒体又掀起了一阵AI热潮,AI不是很常见了吗?是又有什么新的发展吗? 带着强烈的好奇心,我在地铁上读完了一篇关于Chatgp…...
25.架构和软件产品线
文章目录25 Architecture and Software Product Lines架构和软件产品线25.1 An Example of Product Line Variability 产品线可变性的一个例子25.2 What Makes a Software Product Line Work? 软件产品线的工作原理是什么?25.3 Product Line Scope 产品线范围25.4 …...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...

深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...