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

AUTOSAR学习

文章目录

  • 前言
  • 1. 什么是autosar?
    • 1.1 AP(自适应平台autosar)
    • 1.2 CP(经典平台autosar)
    • 1.3 我的疑问
  • 2. 为什么会有autosar
  • 3.autosar的架构
    • 3.1 CP的架构
      • 3.1.1 应用软件层
      • 3.1.2 运行时环境
      • 3.1.3 基础软件层
    • 3.2 AP的架构
  • 4. 参考资料


前言

前段时间参加系统架构师的软考,其中案例分析中的嵌入式题目是分析autosar架构,但是自己只是听说过汽车领域正在使用这个架构,实际上这个架构到底是什么?以及它有什么作用,则是全然不知,最终作为一个嵌入式工程师,案例题也没有选择这个嵌入式题目。 其实软考会考这个东西再一定层面上就说明,国家或者当前社会这块的人才是有些稀缺的,然后想通过这种软考让更多的人去了解autosar架构。

另外最近在看机器人领域的工作,发现和ROS(机器人操作系统)相关的开发工作中很多都提到了要对autosar有一定的了解。
再加上近些年新能源汽车越来越火,很多相关的高薪嵌入式岗位中都要求对autosar有一定了解,就想着去学习一下,看看这个autosar到底是个啥。

因为属于自我科普的记录文章,所以不会太深入去进行研究和讨论。如果想要对autosar有个深入的了解,建议大家可以去参考资料中寻找对应的信息。

1. 什么是autosar?

Home Autosar是一个汽车软件架构,提供开放式汽车软件架构,帮助您应对日益复杂的代码挑战。该架构支持开发标准化的电子系统,可改进质量、性能、安全性和环保功能。它还有助于简化汽车使用寿命内软件的更新流程。

autosar目前分为两种,分别是CP(经典autosar)和AP(自适应autosar)。
在这里插入图片描述

1.1 AP(自适应平台autosar)

全称为自适应AUTOSAR平台(AUTOSAR Adaptive Platform,AP)
2018年,为了迎合未来汽车智能化、网联化的需求,AUTOSAR联盟推出的一个全新平台,将AP加入到原有的AUTOSAR平台中

官方介绍地址:https://www.autosar.org/standards/adaptive-platform

1.2 CP(经典平台autosar)

经典AUTOSAR平台(AUTOSAR Classic Platform)
官方介绍地址:https://www.autosar.org/standards/classic-platform

1.3 我的疑问

1.AP和CP的关系是啥?

AP 和 CP 在 AUTOSAR 中是相互补充、协同发展的关系:

一方面,它们共同构成了 AUTOSAR 架构以满足不同类型汽车电子系统的需求。CP 作为基础,在传统汽车电子领域发挥着重要作用,保障了车辆基本功能的稳定运行;AP 则适应新的发展趋势,为智能网联汽车提供了更强大的功能扩展和灵活性。

另一方面,它们之间也存在一定的过渡和融合。随着技术的发展,一些 CP 上的功能可能会逐渐向 AP 迁移或融合,以实现更高效的系统整合和创新。并且在实际应用中,一辆车上可能同时存在基于 CP 和 AP 的不同系统,它们之间需要进行良好的协同和交互。

2. AP和CP的区别是啥?

  • CP

      应用场景:面向汽车电子的基础控制领域硬件要求:对处理器要求不高,经常是运行在8 位、16 位、32 位的微控制器(MCU)中操作系统:一般采用实时操作系统RTOS
    
  • AP

      应用场景:面向主要面向高度智能化、联网化且功能需求不断变化的复杂应用场景硬件要求:对处理器要求较高,一般是运行在64位的高性能处理器(MPU)或CPU中操作系统:一般是兼容POSIX的操作系统,如LINUX
    

2. 为什么会有autosar

随着电子技术在动力总成控制、底盘控制、车身控制以及车载信息娱乐系统等各个部分所占的比重越来越大、所占的整车成本也越来越高,电子技术已悄悄成为汽车各方面功能拓展和性能提升的重要技术支撑。

为了满足汽车电子硬件系统的多样性,提高软件的模块化和复用度,减少研发成本、降低研发周期。因此在 2003 年,基于先前 EAST-EEA 项目的研究成果,由全球汽车制造商、零部件供应商及其他电子、半导体和软件系统公司联合建立了汽车开放系统架构联盟(Automotive Open System Architecture),即 AUTOSAR。

autosar的特点:
在讨论为什么有autosar时,其实我们也可以看一下autosar有哪些优点,知道了他有哪些优点,也就大概能够反推为什么汽车电子领域会需要autosar了

  • 高度的标准化
    通过定义一整套全面且细致的标准和规范,包括软件架构、接口定义、通信协议等各个方面,确保了不同的汽车电子组件和系统能够在统一的框架下和谐共存、协同工作,避免了因缺乏标准而导致的兼容性问题和混乱局面,极大地提升了系统的整体协调性和稳定性。

  • AUTOSAR 具备强大的可扩展性
    其架构设计灵活,能够轻松容纳新的功能和技术的融入。无论是新的传感器、执行器的加入,还是新的软件模块的引入,都可以较为顺畅地与现有系统进行整合,无需对整个体系进行大规模的重构,这使得汽车电子系统能够快速适应不断变化的技术发展趋势和用户多样化的需求,保持与时俱进的能力。

  • 软件复用性在 AUTOSAR 中得到了高度的体现
    它创建了一个有利于软件组件重复使用的环境,减少了重复开发的工作量和成本。开发人员可以从已有的软件库中挑选合适的组件,并根据具体项目需求进行定制和组合,从而大大提高了开发效率,缩短了产品的上市时间,同时也保障了软件质量的一致性和可靠性。

  • AUTOSAR 对于安全性和可靠性的保障极为重视
    它制定了严格的安全准则和测试要求,对软件的开发、验证和部署过程进行严格把控。通过严格的质量控制和风险评估机制,确保软件在各种复杂环境和工况下都能稳定、安全地运行,降低潜在故障和风险发生的可能性,为驾驶者提供了高度可靠的行车保障。

  • AUTOSAR 还具有良好的兼容性和互操作性
    不同的汽车制造商、零部件供应商以及软件开发商都可以在这一统一的平台上进行合作和交流。它打破了传统的技术壁垒和界限,促进了整个汽车产业链的协同发展,使得各方资源能够更加高效地整合和利用,共同推动汽车电子技术的进步和创新。

3.autosar的架构

3.1 CP的架构

完整版本:
在这里插入图片描述
简化版本:
在这里插入图片描述

3.1.1 应用软件层

包含若干个软件组件(Software Component,SWC),这些组件实现了具体的车辆功能,每个软件组件都具有明确的功能定义和接口,比如控制类组件,负责对车辆的某些系统进行精确控制;监测类组件,实时监控车辆的状态和参数;通信类组件,处理与其他 ECU 或外部系统的信息交互等。

软件组件间通过端口(Port)进行交互。每个软件组件可以包含一个或者多个运行实体(Runnable Entity,RE),运行实体中封装了相关控制算法,其可由 RTE 事件(RTE Event)触发。

  • 我的疑问
    • autosar组件中的端口是指socket的端口吗?
      在 AUTOSAR 中,端口(Port)并不是指网络编程中的 Socket 端口。在 AUTOSAR 架构中,端口是软件组件(Software Component,SWC)之间进行通信的接口。每个端口都有明确的定义和功能,用于在不同的软件组件之间传递数据和控制信息。

    • autosar中的SWC又是个啥?
      SWC(Software Component)即软件组件,是 AUTOSAR 架构中的核心概念之一。它是一个独立的、可重用的、自我描述的、可替换的软件单元,具有清晰的输入输出接口。

      在使用 AUTOSAR 架构时,开发人员首先需要将整个汽车电子系统分解为不同的 SWC,每个 SWC 都应具有特定的功能,如传感器数据处理、控制算法、用户界面等,同时需要定义其输入输出接口以及其它自述和控制接口,这些接口都要符合 AUTOSAR 定义的规范。

3.1.2 运行时环境

AUTOSAR 运行时环境(Runtime Environment,RTE)作为应用软件层和基础软件层交互的桥梁,为软硬件分离提供了可能。RTE 可以实现软件组件间、基础软件间以及软件组件和基础软件之间的通信

RTE 封装了基础软件层的通信和服务,为应用层软件组件提供了标准化的基础软件和通信接口,使得应用层可以通过 RTE 接口函数调用基础软件的服务。

  • 虚拟功能总线VFB及运行环境RTE
    在这里插入图片描述

    虚拟功能总线(VFB)是底层基础软件与网络拓扑结构的抽象。是AutoSar提供的所有通信机制的集合,在信息学数据交互的过程中,应用程序被建模为组合组件。软件组件之间通过VFB进行通讯的。

    在系统配置时,软件组件会被映射到制定的ECU上,同时组件间的虚拟连接也被映射到了CAN,FlexRay, MOST等总线上。

    需要注意的是 RTE也就是单个ECU上对VFB接口的实现。

    使用虚拟功能总线,可以使得负责应用层软件的开发人员不用去关心一个软件组件最终在整车中的哪个 ECU 中具体实现,从而使得应用软件的开发可以独立于具体的 ECU 开发。因此,可以让应用软件开发人员专注于应用软件组件的开发。而 VFB 的真实通信实现则由 RTE 和基础软件来保证,从这一角度来看,RTE 是 AUTOSAR 虚拟功能总线的具体实现。

  • 什么是AUTOSAR中的ECU?

    ECU可以看作是一个单独的芯片或者说是微型计算机。
    汽车电子中要控制那么多的电子器件,不同的电子器件对实时性和性能要求又不一样,因此一辆汽车中肯定是有多个控制芯片组成的。
    不同的控制芯片就是不同的ECU。

    虽然一辆完整的汽车,物理上是不同的控制芯片组成,但是在用户的角度来看整个汽车仍然是一个实体,所以不同的ECU之间是要进行交互和通讯的。这也就引出了VFB虚拟总线的概念。不同的ECU去实现该协议,然后借助WIFI或者CAN等通过该协议进行设备发现,状态同步等功能。

3.1.3 基础软件层

在这里插入图片描述

AUTOSAR 基础软件层(Basic Software Layer,BSW)又可分为四层,即服务层(Services Layer)、ECU 抽象层(ECU Abstraction Layer)、微控制器抽象层(Microcontroller Abstraction Layer,MCAL)和复杂驱动(Complex Drivers)。

  • 服务层

    • 通信服务:
      • 也就是对CAN、LIN、FlexRay在内的整车网络系统进行统一封装。
      • 对上层应用隐藏协议以及报文属性,也就是说上层应用无需关注通信是通过CAN还是LIN 去进行的。
      • 提供统一的总线通信接口、网络管理服务、诊断通讯服务

    • 内存服务
      • 也就是对内存访问进行了统一的封装。

    • 系统服务
      • 提供RTOS服务,包括中断管理、资源管理、任务管理等

  • ECU抽象层
    ECU 抽象层(ECU Abstraction Layer)包括板载设备抽象、存储器硬件抽象、通信硬件抽象和 I/O 硬件抽象。该层将 ECU 结构进行了抽象,负责提供统一的访问接口,实现对通信、存储器以及 I/O 的访问,从而不需要考虑这些资源是由微控制器片内提供的,还是由微控制器片外设备提供的。该层与 ECU 平台相关,但与微控制器无关,这种无关性正是由微控制器抽象层来实现的。

    刚开始我以为ECU抽象层应该就是微控制器抽象层,但实际上它是在微控制器之上的一层,可以把微控制器抽象层理解为驱动层。
    当驱动有了之后,应用层在使用时很少会直接使用驱动,因为驱动提供的接口很全,但是使用起来也会更加麻烦,我理解ECU应该是对驱动又进行了一些封装。

  • 微控制器抽象层
    微控制器抽象层(Microcontroller Abstraction Layer,MCAL)是实现不同硬件接口统一化的特殊层。通过微控制器抽象层可将硬件封装起来,避免上层软件直接对微控制器的寄存器进行操作。微控制器抽象层包括微控制器驱动、存储器驱动、通信驱动、I/O 驱动等模块。

  • 复杂驱动层
    由于对复杂传感器和执行器进行操作的模块涉及严格的时序问题,难以抽象,所以在 AUTOSAR 规范中这部分没有被标准化,统称为复杂驱动(Complex Drivers)。

3.2 AP的架构

在这里插入图片描述
核心功能点:

Adaptive Application:自适应应用程序是AP架构的核心,它是一种可以根据运行时环境动态调整的软件组件。这些应用程序可以实现环境感知、行为规划等功能。

ARA(Adaptive Runtime for AUTOSAR):ARA是自适应应用程序的运行环境,它提供了与CP RTE(Runtime Environment)完全不同的接口。ARA由多个功能集群组成,这些功能集群被划分为基础服务和自适应服务两类。

POSIX操作系统:AP架构构建在POSIX操作系统之上,以提供更高的性能和灵活性。
功能集群:功能集群是ARA的组成部分,每个功能集群都实现了特定的功能,例如通信管理、诊断服务等。

服务和API:AP架构使用服务和API来完成数据交换,应用程序通过这些接口与其他组件进行通信。

以太网通信:AP架构的通信是面向服务类型的,它将网络绑定到DDS(Data Distribution Service)或SOME/IP(Scalable service-Oriented Middleware over IP),并使用以太网与其他ECU进行通信。

灵活性和可扩展性:AP架构设计为具有高度的灵活性和可扩展性,以满足不断变化的汽车电子系统需求。它支持软件的动态更新和配置,以及新功能的添加。

AUTOSAR自适应平台基础中的功能集群必须每个(虚拟机)至少有一个实例,而服务可以分布在车载网络中。

与AUTOSAR经典平台相比,自适应平台的AUTOSAR运行时环境在运行时动态链接服务和客户端。

4. 参考资料

豆包

autosar 官网

来来来!我告诉你 AUTOSAR架构深度解析从入门到放弃

AUTOSAR 发展现状

相关文章:

AUTOSAR学习

文章目录 前言1. 什么是autosar?1.1 AP(自适应平台autosar)1.2 CP(经典平台autosar)1.3 我的疑问 2. 为什么会有autosar3.autosar的架构3.1 CP的架构3.1.1 应用软件层3.1.2 运行时环境3.1.3 基础软件层 3.2 AP的架构 4. 参考资料 …...

区区微服务,何足挂齿?

背景 睿哥前天吩咐我去了解一下微服务,我本来想周末看的,结果周末没带电脑,所以只能周一看了。刚刚我就去慕课网看了相关的视频,然后写一篇文章总结一下。这篇文章算是基础理论版,等我之后进行更多的实践,…...

数据结构 ->反转链表

工作原理 初始化: cur 指向传入的节点 node,即链表的头节点。prv 初始化为 NULL,用于存储当前节点的前一个节点。 循环反转: 在 while 循环中,当 cur 不为空时执行循环体。保存当前节点的下一个节点:使用 t…...

Unity基础(一)unity的下载与安装

目录 一:下载与安装 1.官网下载地址 2.推荐直接下载UnityHub 3.选择编辑器版本(推荐长期支持版) 4.在UnityHub安装选择相应的模块 二:创建项目 简介: Unity 是一款广泛应用的跨平台游戏开发引擎。 它具有以下显著特点: 强大的跨平台能力:能将开发的游…...

TOP10!YashanDB斩获广东省优秀信创产品与解决方案双料荣誉

近日,2024广东软件风云榜结果出炉,表彰为广东软件产业和数字经济、新型工业化发展作出突出贡献的企业、企业家、优秀产品等。深算院崖山数据库系统 YashanDB荣获广东省“2024年优秀信息技术应用创新产品TOP10”和“2024年优秀信息技术应用创新行业应用解…...

基于深度学习网络的USB摄像头实时视频采集与手势检测识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 系统架构 4.2 GoogLeNet网络简介 4.3 手势检测 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 训练过程如下: 将摄像头对准手势,然后进行…...

有趣且重要的JS知识合集(22)树相关的算法

0、举例&#xff1a;树形结构原始数据 1、序列化树形结构 /*** 平铺序列化树形结构* param tree 树形结构* param result 转化后一维数组* returns Array<TreeNode>*/ export function flattenTree(tree, result []) {if (tree.length 0) {return result}for (const …...

使用 Let’s Encrypt 生成免费 SSL 证书

使用 Let’s Encrypt 生成证书是一个简单且免费的方式&#xff0c;可以通过 Certbot 工具来实现。以下是详细的步骤说明&#xff1a; 1. 安装 Certbot 根据你的操作系统&#xff0c;安装 Certbot。以下以 Ubuntu 为例&#xff1a; sudo apt update sudo apt install certbot…...

【电脑小白】装机从认识电脑部件开始

前言 在 B 站上刷到了一个很牛逼的电脑装机视频&#xff0c;很适合电脑小白学习&#xff0c;故用文本记录下。 推荐对组装台式电脑有兴趣的小伙伴都去看看这个视频&#xff1a; 原视频链接&#xff1a;【装机教程】全网最好的装机教程&#xff0c;没有之一_哔哩哔哩_bilibil…...

ssldump一键分析网络流量(KALI工具系列二十二)

目录 1、KALI LINUX 简介 2、ssldump工具简介 3、在KALI中使用ssldump 3.1 目标主机IP&#xff08;win&#xff09; 3.2 KALI的IP 4、操作示例 4.1 监听指定网卡 4.2 指定端口 4.3 特定主机 4.4 解码文件 4.5 显示对话摘要 4.6 显示加密数据&#xff08;需要私钥&…...

使用seq2seq架构实现英译法

seq2seq介绍 模型架构&#xff1a; Seq2Seq&#xff08;Sequence-to-Sequence&#xff09;模型是一种在自然语言处理&#xff08;NLP&#xff09;中广泛应用的架构&#xff0c;其核心思想是将一个序列作为输入&#xff0c;并输出另一个序列。这种模型特别适用于机器翻译、聊天…...

攻防演练“轻装上阵” | 亚信安全信舱ForCloud 打造全栈防护新策略

网络世界攻防实战中&#xff0c;攻击风险已经从代码到云横跨全栈技术点&#xff0c;你准备好了吗 云服务器&#xff0c;攻击众矢之的 2022年超过38万个Kubernetes API服务器暴露公网&#xff0c;成为攻击者目标。云服务器&#xff0c;尤其是开源设施&#xff0c;一直以来不仅是…...

在Android Studio中将某个文件移出Git版本管理

最新在整理代码时发现&#xff0c;local.properties文件开头有这么一段注释&#xff1a; ## This file must *NOT* be checked into Version Control Systems, # as it contains information specific to your local configuration. 大意是这个文件不要加入到版本管理中。 之…...

Vue46-render函数

一、非单文件和单文件的main.js对比 1-1、非单文件的main.js 1-2、 单文件的main.js 将单文件的main.js中的render函数变成非单文件的main.js中的template形式&#xff0c;报如下错误&#xff1a; 解决方式&#xff1a; 二、解决方式 2-1、引入完成版的vue.js 精简版的vue&a…...

@RequestParam 和 @PathVariable @Param注解的区别和作用

在Spring MVC中&#xff0c;RequestParam、PathVariable和 RequestBody 是用于处理不同类型的请求参数的注解。每个注解都有其特定的用途和用法。让我们分别看一下它们的区别和作用。 RequestParam RequestParam用于从请求参数中获取数据&#xff0c;通常是处理表单数据或URL…...

复习一下。

名词解释 数字图像&#xff1a;数字图像是通过数字技术捕获存储和处理的图像。它由一个矩阵或二维数组的像素组成&#xff0c;每个像素包含图像在该位置上的颜色或亮度信息。 像素&#xff1a;像素是构成数字图像的最小单位。每个像素代表图像中某个位置的颜色或亮度值。 分辨…...

ripro主题如何使用memcached来加速

ripro主题是个很不错的资源付费下载主题。主题自带了缓存加速开关&#xff0c;只要开启了缓存加速功能&#xff0c;正常情况下能让网站访问的速度提升很大。 但好多人这么做了却发现没啥加速效果&#xff0c;原因就在于wordpress里缺少了memcache文件。只需要把object-cache.ph…...

《珊瑚岛》是一款什么类型的游戏 苹果电脑如何玩到《珊瑚岛》

在众多电子游戏中&#xff0c;有些游戏因其独特的游戏体验和丰富的内容而脱颖而出&#xff0c;《珊瑚岛》便是其中之一。在游戏中你将离开宝京前往珊瑚岛&#xff0c;种植农作物、饲养动物、和岛民成为朋友。您不仅可以振兴该岛小镇&#xff0c;还可以保护和修复周围的珊瑚礁。…...

Go - 3.库源码文件

目录 一.引言 二.库源码文件 1.定义 2.生成库源码文件 3.直接调用库源码文件 三.总结 一.引言 前面我们学习了 命令源码文件&#xff0c;并成功运行了 go 的 hello world 代码&#xff0c;下面我们介绍 go 里面另一个概念: 库源码文件。 二.库源码文件 1.定义 库源码文…...

FPGA的基础仿真项目--七段数码管设计显示学号

一、设计实验目的 1&#xff0e; 了解数码管显示模块的工作原理。 2&#xff0e; 熟悉VHDL 硬件描述语言及自顶向下的设计思想。 3&#xff0e; 掌握利用FPGA设计6位数码管扫描显示驱动电路的方法。 二、实验设备 1. PC机 2.Cyclone IV FPGA开发板 三、扫描原理 下图所…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

CppCon 2015 学习:REFLECTION TECHNIQUES IN C++

关于 Reflection&#xff08;反射&#xff09; 这个概念&#xff0c;总结一下&#xff1a; Reflection&#xff08;反射&#xff09;是什么&#xff1f; 反射是对类型的自我检查能力&#xff08;Introspection&#xff09; 可以查看类的成员变量、成员函数等信息。反射允许枚…...