智能座舱架构与芯片- (12) 软件篇 中

三、智能座舱操作系统

3.1 概述

车载智能计算平台自下而上可大致划分为硬件平台、系统软件硬件抽象层+OS内核+中间件)、功能软件库组件+中间件)和应用算法软件等四个部分。狭义上的OS特指可直接搭载在硬件上的OS内核;而广义OS从下至上包括从BSP、操作系统内核、中间件及库组件等硬件和上层应用之间的所有程序。

  • 硬件抽象层

硬件抽象层里包含BSP和Hypervisor。

Hypervisor 是一种运行在基础物理服务器操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件,也可叫做VMM( virtual machine monitor ),即虚拟机监视器。Hypervisors是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备

BSP(board support package)即板级支持包,也是介于主板硬件操作系统之间的一层,主要目的是支持操作系统,使之能够更好的运行于硬件主板。

  • 操作系统内核

OS内核又称为“底层OS”,提供操作系统最基本的功能,负责管理系统的进程、内存、设备驱动程序、文件网络系统,决定着系统的性能和稳定性

智能座舱作为新能源汽车的核心部分,通常需要运行多个不同的软件应用和服务,例如车辆信息娱乐系统、导航系统、车辆诊断系统、驾驶辅助系统等。这些应用和服务需要在智能座舱中使用不同的操作系统内核来管理系统资源、控制硬件设备提供系统服务。以下是一些常见的操作系统内核的例子:

  1. Linux内核:Linux是一种开源的操作系统内核,广泛应用于各种嵌入式系统和移动设备中,包括新能源汽车智能座舱。Linux内核具有高度的可定制性和灵活性,可以根据座舱系统的需求进行定制和优化。例如,很多智能座舱系统使用基于Linux内核的Android Automotive操作系统,提供丰富的应用和服务支持。
  2. QNX内核:QNX是一种实时操作系统内核,被广泛应用于汽车领域。QNX内核具有高度的实时性和可靠性,适用于对系统响应时间稳定性要求较高的智能座舱应用,例如车辆的安全和驾驶辅助系统。
  3. AUTOSAR(Automotive Open System Architecture)内核:AUTOSAR是一种开放的汽车电子系统架构,包括了一系列的软件规范和标准。AUTOSAR内核是一种用于汽车电子系统的标准化操作系统内核,可以提供统一的软件接口服务,实现不同硬件和软件模块之间的互操作性和可替换性。许多新能源汽车厂商使用AUTOSAR内核来构建其智能座舱系统。
  4. Windows内核:作为一种常见的桌面操作系统,Windows内核在某些新能源汽车智能座舱中也有应用。例如,一些电动汽车厂商采用基于Windows内核的操作系统来构建其车辆信息娱乐系统,提供丰富的图形界面多媒体功能
  • 中间件

中间件,作为底层操作系统和这些应用程序之间的桥梁,是对软硬件资源进行管理分配调度的平台,充当着软件和硬件解耦的关键角色。 具体来说,中间件通常对传感器、计算平台等资源进行抽象,对算法、子系统、功能采取模块化的管理,通过提供的统一接口,让开发人员能够专注于各自业务层面的开发,而无需了解无关的细节。这为开发者快速、高效、灵活地开发和集成自动驾驶软件提供了极大的便利。

因此,从系统软件的角度来说,车载操作系统主要考虑的就是BSP,Hypervisor,OS内核,以及中间件等因素。目前座舱新应用层出不穷,和手机关联度也比较高, Android是最佳选择,但考虑到安卓背后的谷歌一家独大,车厂无力掌控,日本和欧洲车厂更倾向于 Linux。中美厂家都拥抱安卓, 中国厂家尤其注重生态系统,因此几乎全部选择手机版的安卓做一些微小修改。美国厂家则多选择车机版安卓。因为谷歌的某些应用在国内无法使用,国内一般不使用完整的车机版安卓。

QNX几乎不会作为独立的智能座舱操作系统而被选用,一般可以与Android共同作为Hypervisor之上的虚拟机VM而协同工作。

3.2 Android

Android是发行版本的Linux, 系统复杂, 功能强大。Android是由Google公司和开放手机联盟基于Linux开发的操作系统。Android被称为基于Linux开发的最成功的产品之一, 应用生态最为丰富, 主要应用于移动设备,在国内智能座舱操作系统常基于Android开发。

Android的主要优点有:

1) 开源, 对中低端OS开发商具有很强吸引力;

2) 灵活, 可以根据自身需要对原生Android进行定制化改造;

3) 可移植性强, Android手机上的APP不需要经过大的修改就可以应用在车机上, 有利于国内互联网厂商切入汽车领域, 快速建立起车载软件生态。

Android的缺点主要有:

1) 安全性、稳定性差,系统漏洞带来较高风险,技术维护成本高

2) 过度依赖于Google。

在智能座舱操作系统的选择中,虽然还没有哪一个系统的市场份额占据绝对优势,但从软件定义汽车的角度出发,以及新能源汽车的发展历程来看,智能座舱域主要考虑的是应用的生态和智能化的发展。在实践中可以看到,Android系统体现出越来越大的优势。这里面最重要的原因就是智能座舱的生态环境可以与手机等消费类电子产品的生态打通,在手机上流行的应用APP,同样可以移植到汽车的智能座舱环境中来。比如说,导航类APP,音乐类APP,视频类APP,内容类APP,可以方便地实现车机手机统一账户,统一资源等。

Android凭借国内丰富的应用生态切入汽车智能座舱系统。虽然安全性、稳定性不足,但由于车载信息娱乐系统对安全性要求相对较低, Android仍然凭借其上述优点在国内车载信息娱乐系统领域占据主流地位。尤其是各大互联网巨头、自主品牌、造车新势力纷纷基于Android进行定制化改造, 推出了自己的汽车操作系统, 如阿里Al iOS、百度小度车载OS、比亚迪Di Link、蔚来NIO OS、小鹏X martOS等。

  • Android AUTO vs AAOS vs 传统Android

谷歌也分别推出了 Android Auto 和 Android Automotive OS,Android Auto 是一个超级 App,不是一个操作系统,但 Android Automotive OS 就是一个操作系统,简称 AAOS。Android 官网上, Android Auto 这个分类, 是和 Android TV、Web OS by Google 并列。而在 Android 官网开发者页面处,我们能发现更多谷歌意图独立车载系统的想法。 在 Google 官方的「Android developer guide」(安卓开发者引导) 中 , Android Automotive OS 和 Chrome OS 也 是 以 「 OS (operation system,操作系统)」命名的。AAOS 确实是为了解 决 Android 本身在车机方面的一些问题。Automotive OS 采用了 与传统安卓差异较大的显示和交互逻辑 ,「区块」成为 Automotive OS 最基本的设计语言。在操作准确度要求非常高的 车内环境里面,触屏相对孱弱的反馈被谷歌以硕大的图标设计和菜单划分得以补偿。

1. Android Auto

首先,Android Auto 不是 OS。它是集成在 Android OS 里的 feature。当通过 USB、Wi-Fi 将 Android Phone 连接到支持 Android Auto 的车机上后,Android OS 将自动加载支持 Auto 模式下的 App 并将图像投屏到车机屏幕上。

跟 CarPlay 一样,其本质上是投屏。Phone 提供计算、渲染车机只是 Display,Display 和按键回传 Input 的事件,Phone 处理好之后将新的帧数据回传进行 Display。

2. Android automotive OS

Android automotive 是在原手机Android 的系统架构基础上替换为与车相关的模块。主要包括:

  • Car App :包括OEM和第三方开发的App;
  • Car 提供给汽车App特有的接口;
  • Car Service :系统中与车相关的服务;
  • Vehicle Network Service :汽车的网络服务;
  • Vehicle HaL :汽车的硬件抽象层描述。

Android Automotive OS主界面是平均分配的四张功能卡片(Google Map地图、语音助手Google Assistant、电话和应用),随着地图的优先级降低,整体高频车载功能的优先级提高,快捷图标可以最大限度减少驾驶员会分心的情况。车辆重要的功能,如摄像头和车辆控制等放置在靠近驾驶座的左上角,方便司机触达。

3. 传统Android

国内新能源车企,一般采用自研座舱OS的模式,在传统Android版本的基础上修改出具有自身风格的智能座舱操作系统。这样做的好处毋庸讳言,类似手机OS一样,可以带来更大的用户便利性,以及更强的用户黏性。这一点与外资车企具有相当大的不同。我们从国内车企来看,蔚来,小鹏,理想均采用自研OS,基于传统Android版本进行修改。AITO问界采用华为鸿蒙车机,也类似于Android的操作界面。

  • 蔚来

  • 小鹏

  • 理想

  • 问界

那么,厂商根据标准Android版本进行定制化开发,与Android Automotive OS的区别在哪里呢?


咨询ChatGPT的回答如下:

1. 界面设计:Android Automotive OS的用户界面与传统的Android系统有很大的不同。它的界面更加简洁、易于操作,更适合在驾驶过程中使用。

2. 应用程序:Android Automotive OS的应用程序与传统的Android系统也有所不同。它的应用程序更加专注于驾驶和车辆信息,如导航、音乐等,而不是传统Android系统中的社交媒体、游戏等应用。

3. 安全性:Android Automotive OS在安全性方面比传统的Android系统更为重视。它采用了更加严格的安全措施,以确保驾驶过程中的数据和信息安全。

4. 系统架构:Android Automotive OS的系统架构与传统的Android系统也有所不同。它采用了更加模块化的设计,以便于车载设备的集成和维护。

总之,Android Automotive OS是专门为汽车设计的操作系统,相比传统的Android系统,更加注重驾驶和车辆信息的应用,同时也更加注重安全性和系统架构的优化。


目前,还很难说Android automotive OS与厂家基于Android自研修改的OS哪个能脱颖而出。但或许基于不同的市场环境和用户生态,这些智能座舱OS都还在埋头发展,零和游戏的时刻尚未到来。

3.3 Linux

这里的Linux特指非Android的Linux发行版软件,或者基于开源Linux内核所修改而来的厂商自研OS。虽然说Android也是架构在Linux 内核之上的,但由于它早已具有独立而强大的生态,因此一般单独介绍。我们通常提的基于Linux开发新的操作系统是指基于Linux Kernel进一步集成中间件、桌面环境和部分应用软件。

Linux 领域再分为三类:一类是完全独立的开发版本,如特斯拉;二是松散联盟性质的 Genivi;最后是车规级 Linux 的 AGL。

  • 独立开发的Linux

这里的代表之作为Tesla。Tesla的座舱采用x86 CPU+Linux版本。对于不同的车型来说,Telsa交替采用英特尔或AMD的SOC芯片作为座舱SOC,采用自研FSD芯片作为ADAS SOC。它的软件平台基于Linux 内核所打造。

特斯拉的座舱软件平台使用的是基于Linux的自主开发操作系统,称为Tesla OS。这个操作系统是特斯拉自己开发的,基于Debian Linux,但是经过了大量的修改和自定义,以适应特斯拉车辆的特殊需求和功能。Tesla OS不仅包括车辆的座舱软件平台,还包括车辆的控制系统和网络系统等。特斯拉的座舱软件平台是由一组定制的应用程序组成的,包括导航、娱乐、通信、驾驶辅助和车辆设置等。这些应用程序都是基于Tesla OS开发的,可以通过车载屏幕、语音控制和手机应用程序等方式进行访问和操作。

Tesla OS采用Linux 4.4开源操作系统, 支持PyTorch的深度学习编程框架, 基于Kafka开源流实时数据处理平台, 可支持信息娱乐系统(IVI) 和驾驶辅助系统(ADAS) 等。特斯拉选择Linux一方面由于Linux开源自由的优点, 避免受制于操作系统厂商;另一方面则发挥其内核紧凑高效、可以充分发挥硬件性能的优点,满足了特斯拉对汽车性能的要求。

  • Genivi

GENIVI是一个开源的汽车软件联盟,致力于开发和推广开放标准和技术,以支持汽车电子系统的开发和集成。该联盟成立于2009年,由一些主要的汽车制造商、供应商和软件开发公司组成,包括宝马、戴姆勒、通用汽车、飞利浦、英特尔、纳芙特、Wind River、Harman和Bosch等。GENIVI的目标是创建一个基于开放标准的汽车软件平台,以促进汽车电子系统的发展和创新。

GENIVI的软件平台基于开放标准的Linux操作系统,包括许多开源软件组件和工具,如QT、GStreamer、DBus、WebKit、BlueZ、Systemd等。GENIVI的软件平台提供了许多功能,如车载娱乐、导航、通信、驾驶辅助、车辆诊断和远程服务等。该平台还提供了一个开发框架,使开发人员可以快速开发和部署汽车应用程序和服务。

许多汽车制造商和供应商正在使用GENIVI的软件平台,以开发其汽车电子系统。一些使用GENIVI的汽车制造商包括宝马、戴姆勒、通用汽车、PSA、雷诺等。同时,一些汽车供应商和软件开发公司也在使用GENIVI的软件平台,如飞利浦、英特尔、纳芙特、Wind River、Harman、Bosch等。

  • AGL

AGL 即 Automotive Grade Linux,车规级 Linux。成立于 2016 年 1 月,但是第一版 AGL 发布是在 2014 年的 6 月 30 日,实际 上就是 Tizen 的修改版,Tizen 源自三星,Tizen 是三星电子开发 的一款基于 Linux 核心的开放源代码移动操作系统,可适用设备 包括智能手机、平板电脑、智能手表、上网本、车载消息娱乐 设备(IVI)和智能电视。该项目最初由 Linux 基金会以及 LiMo 基金会合力推出,目的在于取代 MeeGo 与 LiMo 平台。在 Linux 基金会中,由技术指导小组(TSG)管理。

AGL 的顶级白金会员有亚马逊、马自达、电装、瑞萨、铃木、丰田、松下。白银会员则有爱信精机、奔驰、福特、高通、 上汽、大众。其他重要会员还有阿尔派、ARM、博世、BOSE、 中国移动、大陆、德赛西威、富士通、本田、现代、三星哈曼、 HERE、日立、GreenHills、英特尔、JVC 建伍、李尔、LG、马瑞 利、Mentor、Microchip、三菱、NEC、东软、日本精机、NXP、 英伟达、三星、先锋、索尼、东芝、Telechips、德州仪器。 目前采用 AGL 的车型主要有新一代奥迪 MIB3TOP、丰田凯美瑞、马自达 3 和斯巴鲁傲虎及力狮。还有一款奔驰的 MPV。 大众在 2019 年 4 月加入 AGL。

AGL 的主要优势之一是它的统一代码库(UCB),这是一个 新的 Linux 发行版,它基于 AGL 和另外两个汽车开源项目:Tizen 和 GENIVI Alliance。UCB 是第二代 Linux 汽车系统。它从底层开 始开发,一直到特定的汽车应用软件。完成了操作系统大约 70% 的工作。

目前 AGL 应用都在 IVI(In-Vehilcs Infotainment)上,AGL 正 努力开拓在仪表和 ADAS 领域,不过这两个领域对实时性要求较高,阻力很大。

  • YOCTO

Yocto是一个开源的嵌入式Linux发行版,它提供了一个开发框架,可以帮助开发人员快速构建定制的Linux系统。Yocto的目标是使嵌入式Linux开发更加简单、快速和可靠,使开发人员能够轻松地创建定制的Linux发行版,以满足特定的嵌入式设备需求。

Yocto项目包括一个工具集,可以用于构建和管理嵌入式Linux系统,包括构建工具链、交叉编译器、调试器、库、应用程序和文件系统等。Yocto还提供了一个强大的软件包管理系统,可以让开发人员轻松地添加、删除和更新软件包。

许多汽车厂商目前仍在使用Yocto,特别是在车载娱乐系统和智能座舱软件的开发中。Yocto提供了一个灵活的开发框架,使开发人员能够快速构建和定制Linux系统,以满足特定的汽车应用需求。同时,Yocto还提供了丰富的软件包和工具,使开发人员能够快速开发和部署嵌入式应用程序。

使用Yocto的汽车厂商有:通用,丰田,福特,雷克萨斯,捷豹路虎等。

根据以上信息可以看到,很多汽车厂商都曾经使用了不止一个Linux发行版本来作为自己旗下车型的智能座舱软件平台。这说明在Linux系统在传统汽车企业中的地位。

3.3 QNX

QNX是目前车载软件中使用得最多的操作系统。

Gordon Bell和Dan Dodge在1980年成立了Quantum Software Systems公司,他们根据大学时代的一些设想写出了一个能在IBM PC上运行的名叫QUNIX(Quick UNIX)的系统,直到AT&T发律师函过来才把名字改成QNX。从QNX的最初命名可以看出,QNX是一种类UNIX的操作系统,其遵守POSIX规范,也就是说在Linux(也遵守POSIX规范)上编写的应用程序可以不作修改重新编译后可以直接在QNX上运行。

2004年,音响设备制造商 Harman 国际工业公司收购了QNX。2010年,黑莓手机(BlackBerry)制造商RIM宣布收购哈曼国际工业集团旗下的QNX软件公司。

在汽车领域,QNX早已是最大的操作系统供应商。据不完全资料显示,QNX在车用市场占有率达到75%,目前全球有超过230种车型使用QNX系统,包括哈曼贝克、德尔福、大陆、通用电装、爱信等知名汽车电子平台都是在QNX系统上搭建的。几乎全球所有的主要汽车品牌包括讴歌、阿尔法-罗密欧、奥迪、宝马、别克、凯迪拉克、雪弗兰、克莱斯勒、戴姆勒、道奇、菲亚特、福特、通用汽车、本田、悍马、现代、英菲尼迪、捷豹、吉普、蓝旗亚、马自达、马赛地、迷你宝马、三菱、尼桑、欧宝、庞迪克、保时捷、萨博、土星、双龙、丰田和大众汽车等目前都采用了基于QNX技术的系统。

QNX的特点

QNX是一个微内核,嵌入式,非开源,安全实时的操作系统。它的软件架构分层如图所示:

从上图可以看到,在硬件层之上,QNX提供了板级支持包BSP,RTOS微内核,软件中间件,以及支撑应用的增强服务层等。

  • 微内核

QNX是典型的微内核结构操作系统, 有一个非常小的微内核Neutrino 约为12K。内核提供了中断处理,定时器处理,线程的建立与调度等任务。另外有一个进程process manager来负责进程的建立和地址空间管理的功能, 与内核运行在内核空间。其他功能模块运行在用户空间。QNX对所有的进程均提供了内存保护, 包括文件系统, 资源管理器, 应用程序等。

QNX是一个典型的RTOS系统,其内核支持实时抢占式调度。

QNX 使用基于优先级的虚拟 CPU 共享模式,每个虚拟 CPU 拥有自己的优先级和时间任务安排序列(scheduling),确保高安全优先级 OS 能够从低优先级 OS 那里抢占更多的物理 CPU 资源。虚拟 CPU 拥有估计资源预算能力,进而在物理 CPU 上实现自适应分区。能够最大化利用硬件资源。

  • 半虚拟化

QNX Hypervisor采用半虚拟化的方式来支持硬件设备的虚拟化操作。在一个双内核虚拟机架构体系中,VM2为Android 虚拟机,VM1 为QNX Host 虚拟机, Hypervisor为 QNX提供的Hypervisor。对于硬件资源的虚拟化,Android VM访问硬件资源可以有2种方式:

1. Front-Back End 服务方式

为避免全虚拟化的性能问题,可以采用 GuestOS 与 Hypervisor 协作的半虚拟化技术。这种技术一般应用于 IO 设备虚拟化, 采用前后端的方式来实现 。在 Guest OS (如 Android VM2) 中实现前端驱动,在 Hypervisor 或 Host OS (如QNX Host VM1) 中实现后端驱动,前后端一般按照 VirtIO 标准来实现,后端驱动作为硬件的实际访问方。

2. Pass-through 直接访问方式

Hypervisor 支持将硬件资源直接分配给其上虚拟机中 VM2 使用,无需通过 Hypervisor 进行地址和指令翻译。例如 : 串口资源、USB 资源等接口比较丰富的资源可以通过 Pass-through 直接分配给某虚拟机使用。设备控制器一般都是以 MMIO 方式来访问的,所以只需要将控制器地址区域映射到 VM 就 可实现设备控制器的分配,同时还需要分配一个设备硬件中断对应的虚拟中断到该 VM,直接透传的方式 就是 VM 独占访问该硬件,所以在性能上是最好的。

  • 功能安全

QNX已经获得了ASIL-D的认证。QNX的安全性和可靠性使其成为满足汽车电子系统安全标准的理想选择。QNX的ASIL-D认证证明了其满足最高级别的汽车安全标准,可以在高度安全性和可靠性的环境中运行。QNX的ASIL-D认证包括QNX Neutrino实时操作系统、QNX Momentics开发工具和QNX Hypervisor虚拟化平台等产品。QNX的ASIL-D认证是基于国际标准ISO 26262开展的,该标准是用于开发汽车电子系统的安全标准。

  • 智能座舱的应用案例

在国内新能源车企的智能座舱软件平台中,由于普遍采用了高通的SOC作为座舱芯片,因此基本会采用QNX+Android双虚拟机的方式。其中一个典型的应用就是QNX实现仪表盘,Android实现中控娱乐屏应用。

底层是采用QNX的hypervisor技术,实现硬件资源的虚拟化。

上层分为2个虚拟机VM。其一是QNX Host,它主要实现仪表盘的图形生成,渲染等任务。根据上述半虚拟化的实现,由QNX实际控制SOC芯片中的GPU和DPU等硬件资源。

由于QNX具有实时性和安全性的特点,它适合为仪表盘功能提供应用服务。

第二个虚拟机是Android VM。由于Android具有良好的生态环境和丰富的应用资源,在中控娱乐屏的使用上具有较大的优势,因此非常适合用于多元化的娱乐域应用场景需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/174269.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智能座舱架构与芯片 - (1) 背景篇

一、软件定义汽车 1.1 什么是软件定义汽车 软件定义汽车(Software Defined Vehicles, SDV)的核心思想是,决定未来汽车的是人工智能为核心的软件技术,而不再是汽车的马力大小,是否真皮座椅,机械性能的好坏。软件定义汽车的终极目…

架构探索之路-第一站-clickhouse | 京东云技术团队

一、前言 架构, 软件开发中最熟悉不过的名词, 遍布在我们的日常开发工作中, 大到项目整体, 小到功能组件, 想要实现高性能、高扩展、高可用的目标都需要优秀架构理念辅助. 所以本人尝试编写架构系列文章, 去剖析市面上那些经典优秀的开源项目, 学习优秀的架构理念来积累架构设…

Python+OpenCV裂缝面积识别系统(部署教程&源码)

1.研究背景与意义 随着科技的不断发展,计算机视觉技术在各个领域中得到了广泛的应用。其中,图像处理是计算机视觉中的一个重要分支,它通过对图像进行数字化处理,提取出其中的有用信息,为后续的分析和应用提供支持。而…

基于SSM的校园活动资讯网设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

dolphinscheduler任务莫名重跑

dolphinscheduler运行了一段时间,忽然发现一个流程下某个任务一直在自动重跑,把工作流删了,任务删了,下线等等,都不能阻止他重复的运行,每秒1次,真是见了鬼 1、把zookeeper停掉发现不再重跑了 …

79基于matlab的大米粒中杂质识别

基于matlab的大米粒中杂质识别,数据可更换自己的,程序已调通,可直接运行。 79matlab图像处理杂质识别 (xiaohongshu.com)

动态神经网络时间序列预测

大家好,我是带我去滑雪! 神经网络投照是否存在反锁与记忆可以分为静态神经网络与动态神经网络。动态神经网络是指神经网络带有反做与记忆功能,无论是局部反馈还是全局反锁。通过反馈与记忆,神经网络能将前一时刻的数据保留&#x…

C语言经典好题:字符串左旋(详解)

这题还是比较简单的&#xff0c;各位看完有收获吗 #include<stdio.h> #include<string.h> void leftturn(char arr[],int k) {int len strlen(arr);for (int i 0;i <k;i)//左旋k个字符{//创建临时变量char tmp 0;tmp arr[0];//将数组第一个字符存储到临时变…

函数模板(成长版)

与普通函数区别&#xff1a;1.多了个template<class T>;2.某些确定类型变不确定类型T 一&#xff1a;引子&#xff1a; #include<iostream> using namespace std; template<typename T> T Max(T a, T b) {return a > b ? a : b; } int main() {int x, …

计算机毕业设计选题推荐-网上产品商城-Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

云原生Docker系列 | Docker私有镜像仓库公有镜像仓库使用

云原生Docker系列 | Docker私有镜像仓库&公有镜像仓库使用 1. 使用公有云镜像仓库1.1. 阿里云镜像仓库1.2. 华为云镜像仓库1.3. 腾讯云镜像仓库2. 使用Docker Hub镜像仓库3. 使用Harbor构建私有镜像仓库4. 搭建本地Registry镜像仓库1. 使用公有云镜像仓库 1.1. 阿里云镜像…

七、HDFS文件系统的存储原理

1、总结 之所以把总结放在文件开头&#xff0c;是为了让读者对这篇文章有更好的理解&#xff0c;&#xff08;其实是因为我比较懒……&#xff09; 对于整个HDFS文件系统的存储原理&#xff0c;我们可以总结为一句话&#xff0c;那就是&#xff1a; 分块备份 2、存储结构和问题…

O-Star|再相识

暑去秋来&#xff0c;岁月如梭&#xff0c;几名"O-Star"们已经入职一段时间&#xff0c;在这期间他们褪去青涩&#xff0c;逐渐适应了公司的工作环境和文化&#xff0c;迈向沉稳&#xff5e; 为了进一步加深校招生之间的交流与了解&#xff0c;提高校招生的凝聚力和…

易航网址引导系统 v1.9 源码:去除弹窗功能的易航网址引导页管理系统

易航自主开发了一款极其优雅的易航网址引导页管理系统&#xff0c;后台采用全新的光年 v5 模板开发。该系统完全开源&#xff0c;摒弃了后门风险&#xff0c;可以管理无数个引导页主题。数据管理采用易航原创的JsonDb数据包&#xff0c;无需复杂的安装解压过程即可使用。目前系…

第4章 向量、SIMD和GPU体系结构中的数据级并行

4.1 引言 有多少应用程序拥有大量的数据级并行DLP&#xff1f;SIMD分类Flyn被提出后5年。答案不仅包括科学运算中的矩阵运算&#xff0c;还包括面向多媒体的图像和声音处理以及机器学习算法。 由于SIMD可以执行多个数据操作&#xff0c;能效比MIMD要高&#xff0c;使得SIMD对…

小红书全自动加群引流脚本「 软件工具+引流技术教程」

软件介绍&#xff1a; 小红书群聊最新玩法&#xff0c;可自动检测群人数加群&#xff0c;不会加到垃圾群。定时发送广告&#xff0c;红书群聊的引流玩法回来了 功能一、自动搜索关键词加群&#xff0c;比如创业、项目、鞋子、包包、考公、考研… 功能二、自动检测群人数&…

电子学会C/C++编程等级考试2022年09月(一级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:指定顺序输出 依次输入3个整数a、b、c,将他们以c、a、b的顺序输出。 时间限制:1000 内存限制:65536输入 一行3个整数a、b、c,以空格分隔。 0 < a,b,c < 108输出 一行3个整数c、a、b,整数之间以一个空格分隔。样例输入…

03-基于Feign的远程调用,详解Feign的自定义配置和优化,创建Feign模块

Feign远程调用 Feign替代RestTemplate 利用RestTemplate发起远程调用的代码的缺点 代码可读性差编程体验不统一 , 面对参数复杂的URL难以维护 String url "http://user-service/user/" order.getUserId(); User user restTemplate.getForObject(url, User.cla…

【Proteus仿真】【Arduino单片机】多功能数字时钟设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用PCF8574、LCD1602液晶、DS1302温度传感器、DS1302时钟、按键、蜂鸣器等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示当前日期…

【DevOps】Git 图文详解(六):Git 利器 - 分支

Git 利器 - 分支 1.分支 Branch2.分支指令 &#x1f525;3.分支的切换 checkout4.合并 merge & 冲突4.1 &#x1f538; 快速合并&#xff08;Fast forward&#xff09;4.2 &#x1f538; 普通合并4.3 处理冲突 <<<<<<< HEAD 5.变基 rebase 分支是从主…