当前位置: 首页 > news >正文

软考-系统架构设计师 计算机系统基础知识详细讲解二

个人博客:blogs.wurp.top

一、计算机网络 (架构师的连接蓝图)

架构师视角:网络是分布式系统的基石,所有设计都必须考虑网络延迟、带宽、可靠性和安全性。

1. 网络体系结构 (核心模型)

  • OSI七层模型理论模型,用于理解和教学。
    • 记忆口诀:应、表、会、传、网、数、物 (从上到下)。
    • 每一层的功能和协议是考查重点。
  • TCP/IP五层(或四层)模型实际应用的工业标准。
    • 应用层 (对应OSI应用层、表示层、会话层):HTTP, HTTPS, FTP, SMTP, DNS, DHCP。
    • 传输层:TCP, UDP。
    • 网络层:IP, ICMP, IGMP, ARP/RARP。核心任务是路由和寻址
    • 数据链路层:Ethernet, PPP, Switch。核心任务是帧同步、差错控制、流量控制
    • 物理层:定义物理介质标准,传输比特流。

2. 关键协议详解 (必考)

  • TCP vs UDP必须熟练掌握对比
    特性TCP (传输控制协议)UDP (用户数据报协议)
    连接性面向连接 (三次握手,四次挥手)无连接
    可靠性可靠 (确认、重传、排序、流量控制)不可靠 (尽力交付)
    数据形式字节流 (无边界)数据报文 (有边界)
    头部开销大 (20字节以上)小 (8字节)
    速度
    应用场景Web (HTTP), 邮件(SMTP), 文件传输(FTP)视频会议, 语音通话, DNS查询
  • TCP的重要机制
    • 三次握手:建立连接。SYN -> SYN/ACK -> ACK。防止已失效的连接请求报文突然又传送到服务器。
    • 四次挥手:释放连接。FIN -> ACK -> FIN -> ACK。因为连接可能是半关闭的。
    • 流量控制:使用滑动窗口协议,接收方通过通告窗口大小来控制发送方的速率,防止接收方缓冲区溢出。
    • 拥塞控制:维护一个拥塞窗口(cwnd),算法包括:慢启动、拥塞避免、快重传、快恢复。目的是避免网络过载。
  • HTTP/HTTPS
    • HTTP 1.1: 持久连接、管道化。但仍存在队头阻塞(Head-of-Line Blocking)
    • HTTP/2: 多路复用(解决队头阻塞)、头部压缩、服务器推送。底层仍是TCP。
    • HTTP/3: 基于QUIC协议,运行在UDP之上。进一步解决TCP层面的队头阻塞,减少连接建立延迟。
    • HTTPS = HTTP + SSL/TLS。TLS协议通过非对称加密(如RSA, ECC)协商密钥,然后用对称加密(如AES)通信,保证安全。

3. IP地址与路由

  • IPv4 vs IPv6:IPv6解决了地址枯竭问题,地址长度128位,简化了报头,更安全。
  • 子网划分与CIDR:架构师需要规划网络地址,例如根据主机数量划分子网。
  • 路由协议
    • 内部网关协议(IGP):在自治系统(AS)内部使用,如OSPF (开放最短路径优先,链路状态协议)、RIP (路由信息协议,距离矢量协议)。
    • 外部网关协议(EGP):在AS之间使用,主要是BGP (边界网关协议)。

4. 网络安全

  • 攻击类型:DDoS、SQL注入、XSS、CSRF、中间人攻击等。
  • 防御手段
    • 防火墙:包过滤、状态检测、应用代理。
    • 加密技术:对称加密(AES)、非对称加密(RSA)、哈希算法(SHA、MD5)。
    • 身份认证:数字证书、数字签名、动态口令、生物认证。

二、计算机语言与程序编译 (架构师的表达工具)

架构师视角:语言是思维的载体,选择何种语言和范式直接影响系统的性能、可维护性和团队效率。

1. 程序设计范式

  • 面向过程 (POP):以函数为中心,数据与操作分离。C语言是典型代表。
  • 面向对象 (OOP)必考重点。以对象为中心,核心概念:
    • 四大特性抽象、封装、继承、多态
    • 设计原则:SOLID原则(单一职责、开闭原则、里氏替换、接口隔离、依赖倒置)。
    • 设计模式23种经典设计模式(创建型、结构型、行为型)是解决常见设计问题的方案,如工厂、单例、适配器、观察者、策略模式等。架构师必须精通。
  • 函数式编程 (FP):将计算视为数学函数的求值,避免状态和可变数据。核心概念:高阶函数、闭包、惰性求值、无副作用。适用于并发编程和数据处理。Scala, Haskell是代表。
  • 响应式编程 (RP):一种面向数据流和变化传播的编程范式,适用于异步和事件驱动系统。如RxJava。

2. 编译与解释

  • 编译型语言 (C, C++, Go):源代码 -> 编译器 -> 机器码 -> 执行。执行速度快
  • 解释型语言 (Python, JavaScript):源代码 -> 解释器 -> 逐行解释执行。跨平台性好,灵活
  • 混合型 (Java, C#):源代码 -> 编译器 -> 字节码 -> 虚拟机(JVM, CLR) 解释/编译执行。兼顾速度和跨平台。

3. 编译过程 (重点)

源代码到目标代码的转换过程:

  1. 词法分析:将源程序分解为一系列记号(Token)(关键字、标识符、常数等)。
  2. 语法分析:根据语法规则将Token序列构造成语法树
  3. 语义分析:检查类型是否匹配、是否声明等。
  4. 中间代码生成:生成与机器无关的中间表示(如三地址码)。
  5. 代码优化:对中间代码进行优化,提高效率。
  6. 目标代码生成:将优化后的中间代码转换成特定机器的目标代码(汇编或机器码)。

4. 运行时系统

  • 内存管理
    • :存放局部变量、函数调用信息。自动管理,速度快。
    • :动态分配的内存(如new, malloc)。由程序员或垃圾回收器管理。
  • 垃圾回收 (GC):自动回收不再使用的内存。
    • 引用计数法:简单,但无法解决循环引用问题。
    • 标记-清除:标记所有可达对象,清除未标记的。会产生碎片。
    • 标记-整理:在标记-清除基础上进行整理,消除碎片。
    • 分代收集 (如Java JVM):将堆分为新生代和老年代,根据对象存活周期采用不同算法。这是主流商用虚拟机的算法

三、系统工程 (架构师的方法论)

架构师视角:系统工程是指导复杂系统从概念、设计、实现到运维的全过程、全生命周期的方法论。

1. 系统开发方法论

  • 结构化方法 (瀑布模型):自顶向下,逐步求精。适用于需求明确的项目。缺点:灵活性差,风险滞后。
  • 面向对象方法:贯穿分析、设计、实现全过程,使用UML进行建模。更好地应对变化。
  • 原型法:快速构建一个简化版,获取用户反馈,逐步演化。适用于需求不明确的项目。
  • 敏捷开发应对快速变化的需求。迭代、增量开发,强调人员和协作。
    • Scrum:角色(PO, SM, Dev Team)、工件(Product Backlog, Sprint Backlog)、事件(Sprint, 站会, 评审, 复盘)。
    • DevOps开发与运维一体化,强调自动化(CI/CD)、持续交付和协作。

2. 系统规划与需求工程

  • 可行性分析:技术可行性、经济可行性、操作可行性等。
  • 需求层次业务需求、用户需求、功能需求、非功能需求
  • 需求获取技术:访谈、问卷调查、原型、观察等。
  • 需求分析模型用例图(谁对系统做什么)、数据流图/DFD(数据流动和处理)。

3. 系统设计原则

  • 高内聚、低耦合:模块内部元素紧密相关,模块之间依赖尽可能简单。这是最重要的设计原则
  • 抽象与信息隐藏:隐藏模块的实现细节,只暴露接口。
  • 关注点分离:将不同的问题分开处理(如MVC模式将数据、视图、控制分离)。

4. 系统验证与验证

  • 测试级别
    • 单元测试:测试单个模块或类。
    • 集成测试:测试模块之间的接口。
    • 系统测试:测试整个系统的功能和非功能需求(性能、安全、压力测试)。
    • 验收测试:由用户进行,确认系统是否满足合同要求。
  • 测试方法
    • α测试:开发环境内部测试。
    • β测试:用户在实际使用环境中测试。

5. 系统运行与维护

  • 维护类型
    • 更正性维护:修复错误。
    • 适应性维护:使系统适应外部环境变化(如操作系统升级)。
    • 完善性维护:扩充功能或提高性能。
    • 预防性维护:为未来的可维护性和可靠性做修改。

总结与软考应用

  1. 综合性:软考案例分析题和论文题极有可能将这三部分知识与硬件、OS知识结合。例如,设计一个高并发电商系统,需要:
    • 网络:考虑CDN、负载均衡、TCP连接池。
    • 语言:选择Java(生态成熟)或Go(高并发性能)。
    • 系统工程:采用微服务架构(架构设计)、敏捷开发模式(项目管理)、CI/CD流水线(DevOps)。
  2. 权衡决策:架构师的角色就是做选择题。为什么用TCP不用UDP?为什么用Java不用Go?为什么用敏捷不用瀑布?你的答案必须基于对上述知识的深刻理解,并能分析其优缺点。
  3. 紧跟趋势:了解云原生、Service Mesh、Serverless等现代架构理念,并将其与传统知识关联,能在论文中体现你的技术视野。
http://www.dtcms.com/a/351726.html

相关文章:

  • springcloud篇5-微服务保护(Sentinel)
  • Spring Boot mybatis-plus 多数据源配置
  • 【CVE-2025-5419】(内附EXP) Google Chrome 越界读写漏洞【内附EXP】
  • Kafka面试精讲 Day 1:Kafka核心概念与分布式架构
  • Elasticsearch中的协调节点
  • 详解kafka基础(一)
  • JavaScript常用的算法详解
  • Cherry-pick冲突与Git回滚
  • Oracle跟踪及分析方法
  • 力扣100+补充大完结
  • MySql 事务 锁
  • 推荐系统学习笔记(十四)-粗排三塔模型
  • 庖丁解牛:深入解析Oracle SQL语言的四大分类——DML、DDL、DCL、TCL
  • KubeBlocks for Oracle 容器化之路
  • 高校党建系统设计与实现(代码+数据库+LW)
  • 从零开始的 Docker 之旅
  • HIVE的高频面试UDTF函数
  • 【软考论文】论面向对象建模方法(动态、静态)
  • 无人机倾斜摄影农田航线规划
  • HTML应用指南:利用GET请求获取中国银行人民币存款利率数据
  • SciPy科学计算与应用:SciPy线性代数模块入门-矩阵运算与应用
  • 精确位置定位,AR交互助力高效作业流程​
  • 余承东:鸿蒙智行累计交付突破90万辆
  • 机器人视频感知架构深度解析:7条技术法则,打造低延迟实时感知与交互
  • 【ROS2】 忽略局域网多机通信导致数据接收的bug
  • 天气查询小程序项目报告
  • iOS 审核 4.3a【二进制加固】
  • Spring MVC 全解析:从核心原理到 SSM 整合实战 (附完整源码)
  • leetcode-python-383赎金信
  • 深度学习----由手写数字识别案例来认识PyTorch框架