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

【软考系统架构设计师】系统架构设计知识点

1、  从需求分析到软件设计之间的过渡过程称为软件架构。

软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构件的描述、构件的相互作用(连接件)、指导构件集成的模式以及这些模式的约束组成。

软件架构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构件之间的对应关系,提供了一些设计决策的基本原理。

解决好软件的复用、质量和维护问题,是研究软件架构的根本目的。

2、  软件架构(Software Architecture,SA)设计与生命周期

(1)需求分析阶段:关注的两个问题,一是如何根据需求模型构建SA模型,二是如何保证模型转换的可追踪性。

(2)设计阶段:设计阶段是SA研究关注最早和最多的阶段。支持构件、连接件及其配置的描述语言称为体系结构描述语言(Architecture Description Language,ADL),ADL对连接子的重视成为区分ADL和其他建模语言的重要特征之一。

(3)实现阶段

(4)构件组装阶段:支持可复用构件的互联,检测并消除体系结构失配问题(由构件引起的失配、由连接子引起的失配、由于系统成分对全局体系结构的假设存在冲突引起的失配)

(5)部署阶段

(6)后开发阶段:软件部署之后的阶段,这一阶段SA研究主要围绕维护、演化、复用等方面进行。典型的研究方向包括动态软件体系结构、体系结构恢复与重建

逻辑视图:设计的对象模型,关注系统功能

开发视图:描述了在开发环境中软件的静态组织结构,关注源代码、组件、DLL

进程视图(过程视图):关注并发、同步特征

物理视图:关注软件到硬件的映射关系,反映分布式特性

当采用面向对象的设计方法描述对象模型时,通常使用类图表达类的内部属性和行为,以及类集合之间的交互关系;采用状态图定义对象的内部行为。

3、  软件架构的重要性

软件架构设计师降低成本、改进质量、按时和按需交付产品的关键因素。

(1)架构设计能能够满足系统的品质

(2)架构设计使受益人达成一致的目标

(3)架构设计能够支持计划编写过程

(4)架构设计对系统开发的指导性

(5)架构设计能够有效地管理复杂性

(6)架构设计为复用奠定了基础

(7)架构设计能降低维护成本

(8)架构设计能支持冲突分析

4、  软件架构风格:是指描述特定应用领域系统组织方式的惯用模式。组织方式描述了系统的组成构件和这些构件的组织方式,惯用模式反映了众多系统共有的结构和语义。

分类

具体风格

描述

常考关键词及实例

数据流风格

批处理

每个处理步骤是一个单独的程序。数据必须是完整的,以整体的方式从前一阶段传给后一阶段。基本构件是独立的应用程序,连接件是某种类型的媒介。

传统编译器,每个阶段产生的结果作为下一个阶段的输入

管道-过滤器

每个处理步骤由一个过滤器实现,步骤之间通过数据流连接,数据不必整体方式传输。基本构件是过滤器,连接件是数据流传输管道。

调用/返回风格

主程序/子程序

一般采用单线程控制,构件是主程序和子程序,连接件是过程调用。主程序直接调用子程序,属于显示调用

面向对象

建立在数据抽象和面向对象的基础上。对象是构件,连接件是对象之间的交互方式

层次结构

构件组织成一个层次结构,连接件通过决定层间如何交互的协议定义。每一层为上一层提供服务,并作为下一层的客户。越靠近底层,抽象级别越高;越靠近顶层,抽象级别越低。内部的层接口只对相邻的层可见,每一层最多只影响两层,为软件重用提供了强大的支持

操作系统

客服端/服务器

即C/S架构,基于资源不对等,且为实现共享而提出的。分为2层C/S架构和3层C/S架构。2层C/S架构有3个主要组成部分:数据库服务器、客户应用程序和网络,应用逻辑在客户应用程序上完成,称为“胖客户机,瘦服务器”。3层C/S架构有4个主要主要组成部分:数据库服务器、应用服务器、客户应用程序和网络,应用逻辑驻留在应用服务器上,只有表示层存在于客户机,称为“瘦客户机”,应用功能分为表示层、功能层和数据层。

以数据为中心风格

仓库(数据库系统)

也叫数据库系统风格,构件有两种:一是中央共享数据源,保存当前系统的数据状态;二是一组对中央数据进行操作的独立构件。连接件即为仓库与独立构件之间的交互。

以数据为中心,也叫数据共享风格

黑板

适用于解决复杂的非结构化的问题。黑板系统是一种问题求解模型。包括知识源、黑板和控制三部分。知识源包括若干独立计算的不同单元,提供解决问题的知识。知识源响应黑板的变化,也只修改黑板,黑板是一个全局数据库,是知识源相互作用的唯一媒介。

现代编译器的集成开发环境IDE、信号处理领域,如语言识别、问题规划、模式识别、编译优化

超文本

构件以网状连接方式相互连接,用户可以在构件之间进行按照人类的联想思维方式任意跳转到相关构件。

常应用在互联网领域

虚拟机

解释器

解释器通过包括一个完成解释工作的解释引擎、一个包含将被解释的代码的存储区、一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行的进度的数据结构

自定义流程,按流程执行,规则随时改变,灵活定义,业务灵活组合,专家系统,java虚拟机、机器人

规则系统

包括规则集、规则解释器、规则/数据选择器和工作内存

人工智能

独立构件

进程通信

构件是独立的过程,连接件是消息传递。构件通常是命名过程,消息传递的方式可以是点对点、异步或同步、远程过程调用等

事件驱动

构件不直接调用一个过程,而是触发或广播一个或多个事件,属于隐式调用。优点是为软件复用提供强调的支持,为构件的维护和演化带来了方便;其缺点是构件放弃了对系统计算的控制

事件触发推动动作,如程序语言的语法高亮、语法错误提示

闭环

过程控制

发出控制命令并接受反馈,循环往复达到平衡

设定参数,并不断调整。汽车巡航定速、空调温度调节

5、  基于服务的架构(SOA)

一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务间定义好的接口和契约联系起来。接口是采用中立的方式定义,它独立于实现服务的硬件平台、操作系统和编程语言。

服务是一种为了满足某项业务需求的操作、规则等的逻辑组合

SOA的特点:松散耦合、粗粒度、标准化接口

服务构件与传统构件区别:

(1)服务构件的实现与语言无关,传统构件绑定某种特定语言

(2)服务构件粒度大于传统构件粒度,传统构件粒度大于对象粒度

(3)服务构件接口是标准的,主要是WSDL(Web服务描述语言)接口,传统构件常以具体API形式出现

(4)服务构件可以通过构件容器提供QoS服务,传统构件完全由程序代码直接控制

SOA的实现方式:

(1)Web Service

(2)ESB

企业服务总线是传统中间件技术与XML、WEB服务等技术结合的产物,主要支持异构系统集成。ESB基于内容的路由和过滤器,具备复杂数据的传输能力,可以提供一系列的标准接口。

作用与特点:

(1)SOA的一种实现方式,起到总线的作用,将各种服务进行连接与整合

(2)描述服务的元数据和服务注册管理

(3)在服务请求者和服务提供者之间传递数据,以及对数据进行转换,并支持同步模式、异步模式

(4)发现、路由、匹配和选择的能力,以及支持服务之间的动态交互,解耦服务请求者和服务提供者。高一级的能力还包括对安全的支持、服务质量保证、可管理性和负载平衡等。

主要功能包括:

服务位置透明性

消息路由和寻址服务

传输协议转换

消息格式转换

服务注册和命名管理

日志与监控

安全性

(3)服务注册表

SOA设计原则:

(1)无状态

(2)单一实例:避免功能冗余

(3)明确定义的接口

(4)自包含和模块化

(5)粗粒度

(6)松耦合

(7)重用能力

(8)互操作性、兼容和策略声明

SOA关键技术和协议

REST技术特点:

(1)网络上的所有事物都被抽象为资源

(2)每个资源都对应一个唯一的资源标识

(3)通过通用的连接器接口对资源进行操作

(4)对资源的各种操作不会改变资源标识

(5)所有的操作都是无状态的

6、  微服务架构:是SOA架构的进一步优化,去除了ESB企业服务总线,是一个真正意义上去中心化的分布式架构,更加强调服务个体的独立性、拆分粒度更小。

特点:

(1)小,且专注于做一件事

(2)轻量级通信机制

(3)松耦合、独立部署

优势:

(1)技术异构性

(2)弹性

(3)扩展

(4)简化部署

(5)与组织结构相匹配

(6)可组合性

7、  架构描述语言(ADL):一种形式化语言,它在语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。基于底层语义的工具为体系结构的表示、分析、演化、细化、设计过程等提供支持。

ADL的三个基本要素:构件连接件构件配置

8、  特定领域软件架构(Domain Specific Software Architecture,DSSA):在一个特定应用领域中为一组应用提供组织结构参考的标准软件系统结构。

DAAS具有的特征:

(1)严格定义的问题域和解决域

(2)具有普遍性,使其可以用于领域中某个特定应用的开发

(3)对整个领域有合适程度的抽象

(4)具备该领域固定的、典型的在开发过程中可重用元素

基本活动和领域划分分类:

参与DSSA的人员:

(1)领域专家:有经验的用户、从事该领域中系统的需求分析、设计、实现以及项目管理的有经验的软件工程师。领域专家的主要任务包括提供关于领域中系统的需求规约和实现的知识

(2)领域分析人员:应由具有知识工程背景的有经验的系统分析员来担任

(3)领域设计人员:应由有经验的软件设计人员来担任

(4)领域实现人员:应由有经验的程序设计人员来担任

DSSA的建立过程:

DSSA三层次模型:

9、  质量属性

软件系统属性包括功能属性质量属性,软件架构重点关注的是质量属性。架构的基本需求是在满足功能属性的前提下,关注软件系统质量属性。

软件系统质量是软件系统与明确地和隐含地定义的需求相一致的程度。

软件系统质量属性(Quality Attribute)是一个系统的可测量或者可测试的属性,用来描述系统满足利益相关者需求的程度。

10、  面向架构评估的质量属性

(1)性能:指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件个数。如响应时间、吞吐量。设计策略:优先队列、增加计算资源、减少计算开销、引入并发机制、采用资源调度等

(2)可靠性:软件系统在规定的条件下和规定的时间内完成规定功能的能力。如MTTF(平均失效等待时间)、MTBF(平均失效间隔时间)、可靠度(系统在规定时间内无故障的概率)。设计策略:心跳、Ping/Echo、冗余、选举。备注:失效强度是失效概率关于时间的导数

(3)可用性:是系统能够正常运行的时间比例,经常用两次故障之间的时间长度或者在出现故障时系统能够恢复正常的速度来表示。如故障间隔时间。设计策略:心跳、Ping/Echo、冗余、选举。

(4)安全性:指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。如保密性、完整性、不可抵赖性、可控性。设计策略:入侵检测、入侵防护、用户认证、用户授权、追踪审计。

(5)可修改性:指能够快速地以较高的性价比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价来衡量。包括可维护性、可扩展性、结构重组、可移植性。设计策略:接口-实现分类、抽象、信息隐藏

(6)功能性:是系统能完成所期望的工作能力。一项任务的完成需要系统中许多或大多数构件的相互协作。

(7)可变性:指系统结构经扩充或变更而成为新体系结构的能力。这种新体系结构应该符合预先定义的规则,在某些具体方面不同于原有的架构。

(8)互操作性:本软件系统与其他系统交换数据和相互调用服务的难易程度。

11、  架构风险:是指架构设计中潜在的、存在问题的架构决策所带来的隐患

12、  风险点和非风险点:可能引起风险的因素,可成为风险点。某个做法如果有隐患,有可能导致一些问题,则为风险点。而如果某件事是可行的、可接受的,则为非风险点

敏感点:为了实现某种特定的质量属性,一个或多个构件所具有的特性。

权衡点:是指影响多个质量属性的特性,是多个质量属性的敏感点。

13、  软件架构评估方法:

(1)基于调查问卷(检查表)的方式

(2)基于度量的方式

(3)基于场景的方式

14、  基于场景的方式

软件架构分析法(SAAM)

架构权衡分析法(ATAM)

成本效益分析法(CBAM)

SAAM:最初用于分析架构可修改性,后扩展到其它质量属性

ATAM:在SAAM基础上发展起来的,主要针对性能、可用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中,整个评估过程强调以属性作为架构评估的核心概念。

15、  系统可靠性分析

系统可靠性(Software Reliability)是软件产品在规定的条件下和规定的时间区间完成规定功能的能力,也就是系统无故障运行的概率。规定的条件是指软件运行时的外部输入条件;规定的时间区间是指软件的实际运行时间区间;规定功能是指提供的服务。

系统可用性是指在某个给定时间点上系统能够按照需求执行的概率。

16、  软件可靠性与硬件可靠性的区别

(1)复杂性:软件复杂性比硬件高,大部分失效来自于软件失效

(2)物理退化:硬件失效主要是物理退化所致,软件不存在物理退化

(3)唯一性:软件是唯一的,每个COPY版本都一样,而两个硬件不可能完全一样

(4)版本更新周期:硬件较慢,软件较快

17、  可靠性指标

可靠度:系统在规定的条件、规定的时间区间不发生失效的概率

失效率:又称风险函数,也称条件失效强度,是指运行至此刻系统未出现失效的情况下,单位时间系统出现失效的概率

18、  可靠性设计

(1)避错技术:从设计、开发、测试等阶段着手

(2)容错技术:结构冗余(硬件冗余、软件冗余)、信息冗余(校验码)、时间冗余(重复多次执行相同的计算),其中软件冗余包括N版本程序设计(静态冗余)、恢复块设计(动态冗余)、防卫式程序设计

(3)检错技术:出错后报警,人工处理、成本低

(4)降低复杂度设计

动态冗余是通过故障检测、故障定位及故障恢复等手段达到容错的目的,其中主要方式是多重模块待机储备,当系统检测到某工作模块出现错误时,就用一个备用的模块来替代它并重新运行。各备用模块在其待机时,可与主模块一样工作,也可以不工作。

19、  N版本程序设计

一种静态的故障屏蔽技术,其设计思想是用N个具有相同功能的程序同时执行一项计算,结果通过多数表决来选择。其中N个版本的程序必须由不同的人独立设计,使用不同的方法、设计语言、开发环境和工具来实现,目的是减少N个版本的程序在表决点上相关错误的概率。

20、  恢复块设计

选择一组操作作为容错设计单元,从而把普通的程序块变成恢复块。被选用构造恢复块的程序块可以是模块、过程、子程序和程序段等。恢复块设计时必须保证实现主块和后备块之间的独立性,避免相关错误的产生,使主块备份块之间的共性错误降到最低程度

21、  N版本程序设计与恢复块设计的区别

恢复块设计

N版本程序设计

硬件运行环境

单机

多机

错误检测方法

验证测试程序

表决

恢复策略

后向恢复

前向恢复

实时性

前向恢复:使当前的计算继续下去,把系统恢复成连贯的正确状态,弥补当前状态的不连贯情况

后向恢复:系统恢复到前一个正确状态,继续执行

22、  通过在系统配置中采用容错技术来实现系统的可靠性,常用的系统配置技术分别有:双机热备技术服务器集群技术

双机热备模式(主系统、备用系统)

双机互备份模式(同时提供不同的服务,心不跳则接管)

双机双工模式(同时提供相同的服务,集群的一种)

相关文章:

【软考系统架构设计师】系统架构设计知识点

1、 从需求分析到软件设计之间的过渡过程称为软件架构。 软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构件的描述、构件的相互作用(连接件)、指导构件集成的模式以及这些模式的约束组成。 软件架构不仅指定了系统的组织结构和…...

GPT - 2 文本生成任务全流程

数据集下载 数据预处理 import json import pandas as pdall_data []with open("part-00018.jsonl",encoding"utf-8") as f:for line in f.readlines():data json.loads(line)all_data.append(data["text"])batch_size 10000for i in ran…...

重返JAVA之路——面向对象

目录 面向对象 1.什么是面向对象? 2.面向对象的特点有哪些? 3.什么是对象? 4.什么是类? 5.什么是构造方法? 6.构造方法的特性有哪些? 封装 1.什么是封装? 2.封装有哪些特点? 数据隐…...

docker 安装 jenkins

拉取镜像 docker pull jenkins/jenkins:2.426.3-lts-jdk17 创建数据卷 # 创建时即设置安全权限(SGID确保组权限继承) sudo mkdir -p /var/jenkins_home sudo chmod -R 777 /var/jenkins_home 拉取镜像并运行容器 # 生产环境推荐(JDK17…...

sql 向Java的映射

优化建议,可以在SQL中控制它的类型 在 MyBatis 中,如果返回值类型设置为 java.util.Map,默认情况下可以返回 多行多列的数据...

探索Streamlit在测试领域的高效应用:文档读取与大模型用例生成的完美前奏

大模型用例生成前置工作之文档读取——构建你的自动化测试基础 在群友的极力推荐下,开始了streamlit的学习之旅。本文将介绍如何使用Streamlit开发一个多功能文档处理工具,支持读取、预览、格式转换和导出多种测试相关文档(YAML、JSON、DOCX…...

Python中数值计算、表格处理和可视化的应用

1.数值计算:Numpy import numpy as np 1.1创建数组 import numpy as np arr1 np.array([[1,2,3,4,5]]) print(arr1) print(type(arr1)) print("数组形状",arr1.shape) arr2 np.array([[1,2,3],[2,3,4]]) print(arr2) print(type(arr1)) print("…...

【数据可视化艺术·实战篇】视频AI+人流可视化:如何让数据“动”起来?

景区游玩,密密麻麻全是人,想找个拍照的好位置都难;上下班高峰挤地铁,被汹涌的人潮裹挟着,只能被动 “随波逐流”。这样的场景,相信很多人都再熟悉不过。其实,这些看似杂乱无章的人群流动现象&am…...

038-flatbuffers

flatbuffers FlatBuffers技术调研报告 一、核心原理与优势 FlatBuffers通过内存直接访问技术实现零拷贝序列化,其核心优势如下: 内存布局:数据以连续二进制块存储,包含VTable(虚拟表)和Data Object&…...

探索 Go 与 Python:性能、适用场景与开发效率对比

1 性能对比:执行速度与资源占用 1.1 Go 的性能优势 Go 语言被设计为具有高效的执行速度和低资源占用。它编译后生成的是机器码,能够直接在硬件上运行,避免了 Python 解释执行的开销。 以下是一个用 Go 实现的简单循环计算代码: …...

Pinia最基本用法

1. 定义 Store 首先,定义一个 Pinia Store,使用组合式 API 风格和 ref 来管理状态。 示例:stores/ids.js import { defineStore } from pinia; import { ref } from vue;export const useIdsStore defineStore(ids, () > {const ids …...

MySQL中的UNION和UNION ALL【简单易懂】

一、前言 UNION 和 UNION ALL 是 SQL 中用于合并多个查询结果集的关键字。 二、核心作用 两者均用于将多个 SELECT 语句的结果集纵向合并(列结构需相同),但行为存在关键差异: 三、使用场景对比 需要去重时:例如合并…...

ConcurrentHashMap 源码分析

摘要 介绍线程安全集合类 ConcurrentHashMap 源码,包括扩容,协助扩容,红黑树节点读写线程同步,插入元素后累加键值对数量操作原子性实现。 1 成员变量及其对应的数据结构 底层由数组红黑树链表实现volatile long baseCount 和 v…...

一种基于学习的多尺度方法及其在非弹性碰撞问题中的应用

A learning-based multiscale method and its application to inelastic impact problems 摘要: 我们在工程应用中观察和利用的材料宏观特性,源于电子、原子、缺陷、域等多尺度物理机制间复杂的相互作用。多尺度建模旨在通过利用固有的层次化结构来理解…...

【DE2-115】Verilog实现DDS+Quartus仿真波形

【DE2-115】Verilog实现DDSQuartus仿真波形 一、任务要求二、实现步骤2.1 相位累加器2.2 波形存储器ROM2.2.1 方波模块2.2.2 正弦波形存储器 2.3 3锁相环倍频电路2.4 顶层电路设计 三、设计实现四、实验总结 一、任务要求 采用数字频率合成(Direct Digital Frequen…...

StickyNotes,简单便签超实用

日常工作中是不是经常需要记点东西,但又不想用太复杂的工具?今天给你推荐一款超简单的桌面便签软件——StickyNotes。 下面是动图: 简单到极致的便签工具 StickyNotes真的是简单到不能再简单了。打开软件,直接输入你的便签内容&a…...

深度探索 C 语言:指针与内存管理的精妙艺术

C 语言作为一门历史悠久且功能强大的编程语言,以其高效的性能和灵活的底层控制能力,在计算机科学领域占据着举足轻重的地位。 指针和内存管理是 C 语言的核心特性,也是其最具挑战性和魅力的部分。深入理解指针与内存管理,不仅能够…...

【C++】深拷贝与浅拷贝

重开也不是不可能 ~.~ 浅拷贝 #include <iostream> #include <cstring>class ShallowCopyExample { public:int m_nValue;int* m_pData;// 构造函数&#xff0c;初始化指针成员ShallowCopyExample(int value) : m_nValue(value) {m_pData new int(0);*m_pData va…...

【3】k8s集群管理系列--包应用管理器helm之chart资源打包并推送到harbor镜像仓库

一、chart资源打包 helm package ./web-chart # 当前目录会生成一个tgz的压缩文件二、安装help push插件&#xff08;用于推送前面打包的文件&#xff0c;到镜像仓库&#xff09; .1 下载help-push二进制文件 wget https://github.com/chartmuseum/helm-push/releases/down…...

React与Vue:选择哪个框架入门?

React与Vue&#xff1a;选择哪个框架入门&#xff1f; 作为前端开发者&#xff0c;我在React和Vue两个框架间切换多次&#xff0c;常被新手问到应该从哪个入手。不同于网上那些详尽的技术比较&#xff0c;这里我想从实用角度给你一个简明对比。 两大框架核心差异 特性ReactV…...

pycharm已有python3.7,如何新增Run Configurations中的Python interpreter为python 3.9

在 PyCharm 中&#xff0c;如果你已经安装了 Python 3.9&#xff0c;并且希望在 Run Configurations 中新增一个 Python 3.9 的解释器&#xff0c;可以按照以下步骤操作&#xff1a; 步骤 1&#xff1a;打开 PyCharm 设置 点击 PyCharm 左上角的 File 菜单。选择 Settings&am…...

STL之迭代器(iterator)

迭代器的基本概念 迭代器(iterator)模式又称为游标(Cursor)模式&#xff0c;用于提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。或者这样说可能更容易理解&#xff1a;Iterator模式是运用于聚合对象的一种模式&#xff0c;通过运用该模式&#…...

Mysql5.7配置文件

Mysql5.7配置文件 初始化数据库之前修改my.cnf----配置持久化键(persistence key) 初始化数据库之前修改my.cnf----配置持久化键(persistence key) 使用utf8mb4而不是utf8&#xff1a; https://blog.csdn.net/omaidb/article/details/106481406 https://blog.csdn.net/fdipzo…...

HarmonyOS-ArkUI V2装饰器: @Provider和@Consumer装饰器:跨组件层级双向同步

作用 我们在之前学习的那些控件中,各有特点,也各有缺陷,至今没有痛痛快快的出现过真正能跨组件的双向绑定的装饰器。 比如 @Local装饰器,不能跨组件@Param装饰器呢,能跨组件传递,但是仅仅就是下一层组件接收参数。另外,它是单向传递,不可被重新赋值。如果您非要改值则…...

【HarmonyOS 5】敏感信息本地存储详解

【HarmonyOS 5】敏感信息本地存储详解 前言 鸿蒙其实自身已经通过多层次的安全机制&#xff0c;确保用户敏感信息本地存储安全。不过再此基础上&#xff0c;用户敏感信息一般三方应用还需要再进行加密存储。 本文章会从鸿蒙自身的安全机制进行展开&#xff0c;最后再说明本地…...

0x03.Redis 通常应用于哪些场景?

回答重点 1)缓存(Cache): Redis 最常用的场景是作为缓存层,以减少数据库的负载,提高数据读取速度。例如,常用的用户会话数据和页面渲染结果可以存储在 Redis 中。2)分布式锁(Distributed Lock): Redis 可以用作分布式锁的实现,确保在分布式系统中资源的安全访问,避免…...

Keil创建自定义的STM32标准库工程

注&#xff1a;以下工程创建将以STM32F103ZET6为例 1 下载需要的资料包 1.1 下载 Keil 的 STM32F103 芯片支持包 1.1.1 手动下载安装包 Keil官网&#xff1a;https://www.keil.com/ &#xff08;1&#xff09;进入官网&#xff0c;点击 Download。 &#xff08;2&#xf…...

React(1)基础入门

React(1)基础入门 Author: Once Day Date: 2025年4月10日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: FullStack开发_Once-Day的博客-CSDN博客 …...

Mysql8配置文件

Mysql8配置文件 修改my.cnf----配置持久化键(persistence key)配置表名不区分大小写 修改my.cnf----配置持久化键(persistence key) MySQL8初始化数据库之前配置好这些变量值&#xff0c;初始化数据库之后可能无法修改这个值。 # 服务端配置 [mysqld] ######## 数据目录和基…...

c/c++ 使用libgeotiff读取全球高程数据ETOPO

#include <geotiff.h> #include <geotiffio.h> #include <tiffio.h> #include <iostream> #include <xtiffio.h> void MyTIFFErrorHandler(const char* module, const char* fmt, va_list args) {// 格式化错误消息char buffer[1024];vsnprintf(…...

Spring Boot集成Nacos

1. 添加依赖 在pom.xml文件中添加Nacos相关依赖。根据Spring Boot版本选择合适的依赖版本&#xff1a; Spring Boot 3.2.x版本 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artif…...

CAP理论 与 BASE理论

一、分布式系统存在的问题 1.分布式系统 20世纪90年代&#xff0c;随着互联网应用的快速扩张&#xff0c;传统单机系统难以支撑高并发、跨地域的数据处理需求。分布式系统&#xff08;Distributed System&#xff09; 逐渐成为主流架构&#xff0c;分布式系统是由多台计算机&…...

C++(21)—类和对象(下) ⑥匿名对象

文章目录 一、匿名对象的定义与基本特性二、匿名对象与有名对象的对比1. 有名对象2. 匿名对象 三、匿名对象的构造与析构时机1. 构造与析构规则2. 示例分析 四、匿名对象的适用场景1. 临时调用对象方法2. 作为函数参数 五、总结 一、匿名对象的定义与基本特性 匿名对象&#x…...

Go环境变量配置

Go环境变量配置 一、下载 进入The Go Programming Language 点击下载对应操作系统的 安装成功界面如下图,默认安装到: usr/local/go/ 安装完成之后&#xff0c;在终端运行 go version&#xff0c;如果显示类似下面的信息&#xff0c;表明安装成功&#xff08;备注:darwin(其实…...

AI推理强,思维模型也有功劳【58】二八定律思维

giszz的理解&#xff1a;二八定律&#xff0c;我们说的和听的都比较多。20%的关键&#xff0c;是事物本质&#xff0c;做人不要贪心&#xff0c;也不要胡子眉毛一把抓。当然&#xff0c;也不要轻视那80%。 一、定义 二八定律思维模型&#xff0c;也被称为帕累托法则&#xff0…...

文件上传靶场

文件上传靶场 项目结构 upload-lab/ ├── Dockerfile └── www├── index.php└── upload└── flag.txt执行命令流程&#xff08;逐行执行&#xff09; 创建目录结构 # 创建目录结构 mkdir upload-lab;cd upload-lab mkdir -p www/upload# 创建flag文件 echo &qu…...

RV1106 OCR 识别算法

一 题记 目标是在某款 RV1106 低算力小板下跑通OCR文字识别算法&#xff0c;做个简单的应用&#xff0c;RK 官方模型库rk_model_zoo 有PP-OCR 的例子&#xff0c;但在 rv1106 上尚未支持。于是便打算折腾一吧。 二 方案甄选 参考国外某大佬的比较&#xff1a; 对比了几种方案…...

Linux实现翻译以及群通信功能

1.翻译功能实现 UdpServer.hpp文件 构造函数 接收一个端口号和一个回调函数&#xff0c;回调函数是传入一个执行方法&#xff0c;比如翻译方法。 UdpServer(uint16_t port,func_t func):_sockfd(defaultfd),_port(port),_isrunning(false),_func(func){}Init函数 首先创建了…...

[MRCTF2020]ezpop wp

本题考点:php反序列化的pop链 首先来了解一下pop链是什么,它类似于多米诺骨牌一环套一环,要调用这个成员方法然后去找能调用这个方法的魔术方法,最后一环接一环,完成一个链子,最终形成payload。 那么来了解一下这些魔术方法 __construct() //类的构造函数&#xff0…...

机器学习入门之Sklearn基本操作

、 Sklearn全称:Scipy-toolkit Learn是 一个基于scipy实现的的开源机器学习库。它提供了大量的算法和工具&#xff0c;用于数据挖掘和数据分析&#xff0c;包括分类、回归、聚类等多种任务。本文我将带你了解并入门Sklearn在机器学习中的基本用法。 获取方式 pip install sc…...

(二十二)安卓开发中的数据存储之SQLite简单使用

在Android开发中&#xff0c;SQLite是一种非常常用的数据库存储方式。它轻量、简单&#xff0c;非常适合移动设备上的数据管理。本文将通过通俗易懂的语言&#xff0c;结合代码示例和具体场景&#xff0c;详细讲解SQLite在Android中的使用。 1. 什么是SQLite? SQLite是一个开…...

docker compose搭建博客wordpress

一、前言 docker安装等入门知识见我之前的这篇文章 https://blog.csdn.net/m0_73118788/article/details/146986119?fromshareblogdetail&sharetypeblogdetail&sharerId146986119&sharereferPC&sharesourcem0_73118788&sharefromfrom_link 1.1 docker co…...

信息学奥赛一本通 1498:Roadblocks | 洛谷 P2865 [USACO06NOV] Roadblocks G

【题目链接】 ybt 1498&#xff1a;Roadblocks 洛谷 P2865 [USACO06NOV] Roadblocks G 【题目考点】 1. 图论&#xff1a;严格次短路径 严格次短路的路径长度必须大于最短路的路径长度。 非严格次短路的路径长度大于等于最短路的路径长度。 【解题思路】 每个交叉路口是一…...

学习笔记—C++—类和对象(三)

目录 类和对象 再探构造函数 类型转换 隐式类型转换 显式类型转换 C语言风格类型转换 C风格类型转换 static_cast dynamic_cast const_cast reinterpret_cast static成员 友元 友元函数 友元类 友元成员函数 内部类 匿名对象 匿名对象的使用场景&#xff1a;…...

句句翻译。

对这些单词整理&#xff0c;格式为&#xff1a;“overall /əʊvərɔːl/ adj.全面的,综合的,总体的adv.全部,总 计,一般来说,大致上,总体上n.外套,罩衣,工装连衣裤,工装 服 ” 4,4 A review published in January in Experimental Dermatology found that ceramide made sk…...

LeetCode 2999.统计强大整数的数目:上下界数位DP

【LetMeFly】2999.统计强大整数的数目&#xff1a;上下界数位DP 力扣题目链接&#xff1a;https://leetcode.cn/problems/count-the-number-of-powerful-integers/ 给你三个整数 start &#xff0c;finish 和 limit 。同时给你一个下标从 0 开始的字符串 s &#xff0c;表示一…...

具身导航中的视觉语言注意力蒸馏!Vi-LAD:实现动态环境中的社会意识机器人导航

作者&#xff1a;Mohamed Elnoor 1 ^{1} 1, Kasun Weerakoon 1 ^{1} 1, Gershom Seneviratne 1 ^{1} 1, Jing Liang 2 ^{2} 2, Vignesh Rajagopal 3 ^{3} 3, and Dinesh Manocha 1 , 2 ^{1,2} 1,2单位&#xff1a; 1 ^{1} 1马里兰大学帕克分校电气与计算机工程系&#xff0c; 2…...

FreeRTOS入门与工程实践-基于STM32F103(一)(单片机程序设计模式,FreeRTOS源码概述,内存管理,任务管理,同步互斥与通信,队列,信号量)

裸机程序设计模式 裸机程序的设计模式可以分为&#xff1a;轮询、前后台、定时器驱动、基于状态机。前面三种方法都无法解决一个问题&#xff1a;假设有A、B两个都很耗时的函数&#xff0c;无法降低它们相互之间的影响。第4种方法可以解决这个问题&#xff0c;但是实践起来有难…...

算法思想之位运算(二)

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;算法思想之位运算(二) 发布时间&#xff1a;2025.4.13 隶属专栏&#xff1a;算法 目录 滑动窗口算法介绍六大基础位运算符常用模板总结 例题判定字符是否唯一题目链接题目描述算法思路代码实现 汉明距离题目链接题目…...

软考笔记day04

寻址方式 CISC RISC 流水线技术 存储系统 1、层次化存储系统 2、Cache 3、主存编址计算 输入输出技术 I/O 总线...