自动驾驶---Tesla的自动驾驶技术进化史(PerceptionPlanning)

news2024/11/24 13:28:15

1 前言

        笔者在专栏《自动驾驶Planning模块》中已经详细讲解了传统自动驾驶Planning模块的内容:包括行车的Behavior Planning和Motion Planning,以及低速记忆泊车的Planning(最开始有15篇,目前逐渐更新到17篇)。读者对整个传统的自动驾驶Planning模块的内容也有了一个清晰的认识。

fdf330928bb84ab38edffee11c7cb68e.png

        在之前的技术普及类博客《自动驾驶---Tesla之FSD简介》中,笔者也曾简单阐述了特斯拉自动驾驶目前的两个等级:AutoPilot和FSD,并介绍了这两个功能的特点。目前特斯拉基本代表自动驾驶量产技术的最高水平,因此通过了解特斯拉的技术发展,对于国内自动驾驶量产从业者也有较大的帮助。

        在本篇博客中,笔者将详细介绍特斯拉是如何从早期传统的自动驾驶系统迁移到完整的端到端自动驾驶系统。

        前排提示:篇幅较长,耐心观看;不妥之处,欢迎讨论。

2 FSD迭代进程

        本篇博客主要通过以下3个时间节点来阐述特斯拉FSD的进化史,主要参考了特斯拉每年AI Day的内容。

  1. 特斯拉在2021年:推出HydraNets和BEV
  2. 特斯拉在2022年:增加Occupancy网络
  3. 特斯拉在2023年:向端到端过渡

        从技术发展的迭代过程中会发现:特斯拉实际上已经为端到端做好了很长时间的准备。以下的每一个点都是一个很大的技术方案,笔者受限于掌握的知识深度,不能涉及到每一个技术的细节,尽量从宏观上让读者更容易明白。技术细节后面会进一步整理之后再慢慢阐述给各位读者朋友们。

2.1 时间点:2021年

        首先说说特斯拉感知模块,特斯拉感知的发展历程,也正是国内很多自动驾驶大厂或者主机厂的发展迭代的过程,像无图方案(无高精地图),BEV,Occupancy等,基本都是在引领着量产技术的潮流,因此特斯拉举办的AI Day也算是自动驾驶量产技术的盛宴了。

2.1.1 传感器

       特斯拉摄像头(一共8个)布局如下,当然早期还有雷达(后续舍弃)。

6644d3fbcff645d194ffba713fe1f779.png

ba6eb4b9263e43cd988fde220653e33d.png

        特斯拉自动驾驶负责人是这样解释去掉雷达的原因。 

        "The reason people are squeamish about using Vision is [...] people are not certain if neural networks are able to do range finding of depth estimation of these objects. So obviously humans drive around with vision, so obviously our neural net is able to process the inputs to understand depth and velocity of all the objects around us." Andrej Karpathy

2.1.2 数据标注

        为了训练神经网络来预测深度,需要一个包含数百万视频的庞大数据集。如何收集呢?这就体现出特斯拉的优势了,每天都有成千上万的车主开着特斯拉,因此特斯拉的数据集是非常容易获取的。

        但是如何给数千小时的视频贴标签呢?特斯拉使用神经网络,并且标签在某种程度上是半监督的。特斯拉开始离线进行自动标注,这样做有几个优点,神经网络可以是超重型的,甚至可以组合雷达或激光雷达输入。

aa08e0b086a944c2b5a69a4abbd6e948.png

2.1.3 网络训练

        一旦数据集标注完毕,就可以使用这些数据集进行神经网络的训练了。

8c26bc91412f45fd9e4974e92fc1ad4c.png

        下面详细说明整个原理:

  1. 所有8幅图像首先由图像提取器进行处理。为此,使用了类似于ResNets(残差网络)的体系结构。
  2. 然后,有一个多载波融合。这个想法是将所有8个图像组合成一个超级图像。为此,九头蛇使用了类似Transformer的架构。
  3. 再就是时间融合。其想法是将时间带入等式,并将超级图像与之前的所有超级图像融合。为此,有一个由N个图像组成的视频队列。例如,如果他们想用2秒融合,并且假设相机以每秒36帧的速度工作,N将是72。时间融合是用3D CNN、RNN和Transformer完成的。
  4. 最后,将输出拆分为HEADS。每个头都负责一个特定的用例,并且可以自己进行微调。如果说头过去只是头,那么它们现在有了主干(trunk)和终端(terminals)。这是一种更深入、更具体地了解用例类型的方法。每个终端都可以处理自己的任务(行人检测、红绿灯等)。

        需要注意的是,整个过程被一分为二:有两个时间融合过程,两个蓝色的头和两个绿色的头。这实际上是一种表明神经网络在两个芯片上并行运行的方式,推测是为了安全做的冗余备份。

2.1.4 HydraNets

        特斯拉的自动驾驶系统起步时,其感知模块依赖于Mobileye系统。同时也在推出HydraNets,整体架构图如下,这8个图像都是使用共享主干(Backbone)进行同步和融合的。然后,可以定制使用多个“头”(Objects,Traffic Lights,Markings等)。这种结构就是特斯拉所说的HydraNets:几个头,一个身体。

        这种结构的优点是,可以针对特定的用例(如障碍物检测)微调神经网络,而不会干扰其他任务(车道线等)。特斯拉不需要激光雷达,因为这些传感器的成本和尺寸,系统是由摄像头和雷达组成的。

276b5780cccf4a5cb255c90241705234.png

2.1.5 Bird-Eye-View

        同时在2021年Tesla AI Day,Andrej Karpathy 介绍了Bird-Eye-View概念。

59d8190029a844fe893ce2c81c8ade51.png

         自动驾驶感知中的BEV(Bird's-Eye-View),即鸟瞰视图,是一种在自动驾驶领域中广泛使用的环境感知方法。它模拟了从车辆正上方垂直向下观看地面的视角,能够提供一个全面、清晰且空间一致性的环境感知视图。以下是关于自动驾驶感知BEV的介绍:

(1)工作原理

        BEV算法主要将来自不同传感器(特斯拉主要是摄像头)的数据转换为车辆正上方俯瞰视角下的统一表示。这种转换涉及到图像到点云投影、坐标变换以及特征融合与映射等步骤。

  1. 图像到点云投影:对于视觉传感器,如摄像头,首先通过立体匹配、单目或多目深度估计等技术获取场景的三维信息,然后将这些信息投影到车辆坐标系下的垂直平面上,生成点云数据。
  2. 坐标变换:车载传感器的数据通常需要从各自传感器坐标系下转换到全局或车辆坐标系下,这涉及到坐标变换和校准过程。
  3. 特征融合与映射:在BEV空间上进行多传感器数据的融合,提取特征,如使用卷积神经网络或Transformer架构对这些特征进行处理,以生成BEV特征图。

(2)优点

  1. 全面的环境视图:BEV提供了车辆周围环境的全面视图,使得自动驾驶汽车能够更准确地感知和理解周围环境。
  2. 无遮挡或缩放问题:与2D感知相比,BEV不存在遮挡或缩放问题,能够更好地处理交叉或遮挡的车辆等复杂场景。
  3. 空间一致性:BEV提供了空间一致性的视图,有利于后续模块(如规划)的开发和部署。
  4. 全局视野:BEV能提供车辆周围较大范围的全景视野,不受单一传感器视线局限,对于复杂路口、交叉口以及交通拥堵等场景尤其重要。

2.1.6 Planning

        在2021年的AI day上,特斯拉介绍了三种规划方法:

(1)传统的A*算法

        在特定场景下,搜索节点到44000个才能完成搜索过程。A*的算法讲解可参考笔者之前写过的博客文章《自动驾驶---OpenSpace之Hybrid A*规划算法》,两者有着比较高的相似度。

(2)通过导航信息增强版的A*算法

        这种方法不是传统的调整“启发式”函数,而是更多的输入(具体细节没有透露)。优化完成只需要22000个节点就能完成搜索过程。

(3)神经网络增强版的MCTS算法

        通过将神经网络与传统的树搜索相结合,它可以达到少于300个节点的目标。

        基于蒙特卡洛树搜索的方法可参考笔者之前的博客《自动驾驶---Behavior Planning之MCTS》。目前还没看到Tesla发表的MCTS与神经网络结合相关的论文。

        特斯拉2021年感知和规控的整体架构如下图所示:

d3baa37efb4e44e7b1bfd80414ba9e59.png

2.2 时间点:2022年

        在2022年,特斯拉推出了一种新算法,称作 “占用网络”(Occupancy)。因为使用了占用网络,特斯拉自动驾驶系统不仅能够提高感知能力,还能够提升规划能力。特斯拉在2022年所做的就是在Perception模块中添加一个占用网络,因此将Perception模块分为两个子块:第一个是HydraNets,用于查找物体、标志、车道线等,第二个是占用网络,在3D世界中查找占用块。

2.2.1 Occupancy

        在讲解Occupancy之前,先理解为什么要使用Occupancy?

        如果自动驾驶车辆在行驶过程中看到的物体不是数据集的一部分,这个时候容易出现误判。
而在基于激光雷达的系统中,由于检测到点云,可以确定障碍物的存在,但是在相机系统中,必须首先使用神经网络检测物体,仅凭这一点就造成了许多事故。

f1bc8621485d43baaa795fc82f4a4755.png


        注意上图中列出的几个问题:

  • 对水平线上的深度非常敏感,只有2个左右的像素决定了一个大区域的深度。
  • 不可能透过遮挡物进行检测,也不可能驶过车辆。
  • 所提供的结构是二维的,但世界是三维的。
  • 对于悬挂的障碍物,通常会进行分类,然后设置成固定的矩形障碍物。
  • 可能存在裂缝、坑等非标注的场景,无法检测(它不是数据集的一部分)。

(1)概念

        占用网络是一种不同的算法,基于机器人的思想命名为占用网格映射;它包括将世界划分为一个网格单元,然后定义哪个单元被占用,哪个单元是安全的。

        首先,Occupancy Network的工作原理是将来自多视图图像的输入数据转换为一个三维特征空间。然后,它使用深度神经网络来学习这个特征空间中的占用概率。最后,Occupancy Network将这些占用概率转换为一个三维占用网格,这个网格可以精确地表示车辆周围环境中的障碍物和其它元素。

165f08a549c1408c950b8dbb246422a3.png

        参照下图所示,整个Occupancy的过程如下描述:

  • 首先,摄像头数据被发送到由Regnets和BiFPN组成的主干网(这些都是2022年最先进的特征提取器)。
  • 然后,注意力机制模块进行位置图像编码(这里起始就是Transformer神经网络),并使用关键字、值和固定查询(汽车与非汽车、公共汽车与非公共汽车、交通标志与非交通标志)来生成占用特征量。
  • 接着产生了一个占用特征体,然后将其与之前的占用体(t-1、t-2等)融合,以获得4D占用网格。
  • 最后,使用去卷积来检索原始大小,并获得两个输出:占用体和占用流。

d5bd211eb5d442aa9e257cc5453263ca.png

(2)Occupancy Flow

        占用体比较容易理解,占用流似乎不是那么容易理解,这里其实也涉及到预测的概念了,一辆车在摄像头视频数据里的移动,是如何体现到像素的变化里。

        为了做到这一点,使用了“光流”的技术。如果熟悉传统的计算机视觉,不少读者应该知道“光流”是什么意思。但其它领域的人(包括笔者)对这个概念不是很清晰,上网搜索了一番。
        光流是像素在时间上的运动。它可以通过传统方法或深度学习技术进行计算。得益于光流,可以使用该运动创建flow MAPS,描述每个像素在时间上的运动。流图的一个例子,每种颜色代表一个“方向”。

2c2d453ce23947128d60c21fa8c1abd2.png

        在分割图之后,对图像的每个像素进行分类,即深度图,它拍摄两个立体图像,并找到每个像素的深度。以两个连续的图像作为输入,可以得到运动矢量。

2221712c81b24880867491006a0ec489.png

        最终呈现的效果如下(红色:向前,蓝色:向后,灰色:静止,等等)。

2261115d654f4436991e6ef27e03d290.png

(3)NeRFs

        由于占用网络会生成3D占用体,然后可以将这些3D体与3D重建体(离线训练出来的)进行比较,从而比较重建的3D场景是否与“地图”(NeRF产生的3D重建)匹配。在这些重建过程中也可能出现图像模糊、下雨、大雾等问题。为了解决这一问题,特斯拉使用车队(众多特斯拉的社会车辆)的数据进行平均(每次车辆看到场景时,都会更新全局3D重建场景)。

        下面简单介绍一下NeRFs(神经辐射场)的概念:

        NeRFs(神经辐射场)是一种先进的计算机图形学和计算机视觉技术,它利用深度学习模型通过连续的3D函数来表示3D对象或场景。与传统的依赖点云或网格表示的方法不同,NeRFs通过将底层场景建模为神经网络来生成逼真的重建。

        NeRFs的核心思想是通过训练神经网络来学习场景的体积密度和颜色,从而能够渲染出从任意角度观察场景时的图像。这种技术使得我们能够以更高的精度和逼真度来捕捉和再现真实世界的三维物体和环境。

23681bcced1c46ef8723a473e7ebe58f.png

(2)应用

        在自动驾驶系统中,Occupancy Network主要用于以下任务:

  1. 障碍物检测:Occupancy Network能够检测车辆周围的障碍物,包括其他车辆、行人、骑自行车者等。这对于自动驾驶汽车来说至关重要,因为它需要准确地知道周围环境中的障碍物,以便进行安全的路径规划和车辆控制。
  2. 路径规划:Occupancy Network可以生成车辆的路径,并确保该路径避开障碍物。这使得自动驾驶汽车能够在复杂的环境中安全地行驶,同时考虑到其他交通参与者和潜在的障碍物。

        Occupancy Network通常与Bird's Eye View(BEV)图像一起使用,BEV图像提供了从车辆上方俯瞰的场景视图,包括车辆前方、后方、两侧和顶部。通过使用BEV图像和Occupancy Network,自动驾驶汽车可以获得一个全面且准确的环境感知能力,这对于实现安全的自动驾驶至关重要。

3cfae65c253649a0831eb4667088cc81.png

        针对比较特殊的障碍物(类似液压支撑臂),可以看下OCC的效果。

25f3335bbdf240379779f5c779821db1.png

        再看一个例子,如果你的数据集里没有对类似的物体进行标注,就可能出现危险。

a5e69207350749718e00dab8b0416877.png

        新的占用网络通过实现3个核心技术来解决上述遇到的这些问题:BEV图、占用检测和Voxels分类(通过三维被占网格的形状可训练得到是哪一种类型障碍物,检测类别可能错误,但是不会漏检)。

2.2.2 HydraNets 2.0

        HydraNets与2021年没有太大区别,只是它有一个额外的“Head”,是一个完整的神经网络来执行车道线检测任务。

d2c3fc5c286d446d8c878b7ddfdf096e.png

        在2022年特斯拉整个感知模块的整体架构如下所示(Occupancy用于3D建模,HydraNets 2.0用于车道线以及障碍物的检测):

fd96f35cc5914fb29cb2f34c409a439e.png

2.2.3 Planning

        Planning的流程如下,其实这个和国内很多自动驾驶公司的方案差不多,笔者在《自动驾驶Planning模块》专栏中基本做过介绍,区别主要在于内部的算法使用。

2a9ef6e077a5411aa662a941a9b50c82.png

        最初的神经网络规划已经不错了,但现在感知的输出中新增了Occupancy占用网格。因此在新的规划模块将占用体和车道集成到由蒙特卡洛树搜索和神经网络组成的架构中。为了理解搜索树的逻辑,以特斯拉在2022年AI Day上给出的例子(路口出现行人)。

d779b89d801f4211ae63cb5cb264675c.png

        蒙特卡洛树搜索(MCTS)的作用前面已经阐述过,这里就不多说了。然后重点说一说规划器里神经网络的作用,从特斯拉AI Day中可以得到的信息,全局规划似乎没有再使用之前的A*算法,而是直接使用MCTS作为全局规划的结果,在MCTS中插入自定义的代价函数,并且特斯拉应该用的是神经网络训练出的代价函数,原因是神经网络能够吸收场景的全局上下文,然后产生一个价值函数,有效地引导它向走向全局最小值,而不是陷入局部最小值,能够比较快的搜索到目标终点(感慨特斯拉学术量产的能力)。

        通过对决策轨迹的打分来选择轨迹,如下有两种选择:

        (1)在行人未走到左转车道之前,自车加速左转;

        (2)在行人穿过左转车道之后,自车减速左转;

6bf2282345e34b7a891cb327cb8f3083.png

       最终根据以下四个点去选择轨迹:

  1. 碰撞检测
  2. 舒适性
  3. 干预可能性
  4. 类人驾驶

       2022年特斯拉整个Planning的架构如下图所示:

e2710ca8aee84fbcab70f2e5c4e3d00e.png

        那么,再把感知和规控的架构放一起,整个特斯拉2022年自动驾驶的架构图如下:

e281b3b4f9f94ffd8c622f86ef7111ea.png

2.3 时间点:2023年

        在2023年,特斯拉在FSD v12版本完成了End-To-End 架构的切换。什么是端到端自动驾驶?端到端的自动驾驶方法将感知和决策集成在一个统一的模型中,通过直接学习从图像到驾驶行为的映射,简化了问题复杂性,提高了计算效率。

        因此,特斯拉做了两件事:

        (1)训练每个模块的深度神经网络;

        (2)端到端模型将这些神经网络组装在一起。

2.3.1 Deep Learning

       在这篇博客 《自动驾驶---End-to-end用于Planning行为规划》中,笔者大概介绍了Deep Learning的基本过程。在目前的自动驾驶中,Transformer神经网络逐渐被广泛使用。

73b945ba251947dfb17047f699008ee2.png

2.3.2 End-to-end

        有了多层的神经网络,如何将其合在一起又或者如何去训练数据呢?

        因此,主要的区别不在于模块本身,而在于它们是如何训练和优化的。在端到端系统中,模块被联合优化以实现单个总体目标。在非端到端系统中,每个块都是单独优化的,而不考虑较大系统的目标。

        看起来现在更像一个黑盒,但可以看到是如何使用占用网络和多头神经网络的,特斯拉把这些元素组装在一起。虽然这是一个黑盒,但是可以在任何时间点可视化Occupany的输出,可视化Object Detection的输出,直观Planning的输出等等。也可以单独训练这些元素,然后以端到端的方式进行微调。(具体的内容官方没有公布)

        特斯拉并不是唯一家做端到端的公司,虽然目前量产的公司不多。而Elon Musk在社交平台上表达过:使用端到端方法,不再需要“告诉”车辆在红灯或停车标志处停车,也不再在变道前验证决策,这辆车通过“模仿”训练使用的1000万视频中的司机,自己去解决车辆行驶过程中遇到的问题。

        因此,特斯拉一直在使用1000万视频(数据量会越来越多)的数据集,然后对每一个视频的驾驶员进行评分,并训练机器模仿“好驾驶员”的行为。理论上来说这个潜力是巨大的,可能会比普通人类司机的驾驶更优秀,因为模型在面对未知场景时可以更好地驾驶——它会在训练中找到最接近的行为,而不是停滞不前。

7544af4d0de14c03ba234fef000fe88b.png

3 总结

        通过本篇博客,读者朋友们可以了解到特斯拉在近几年自动驾驶发展的过程,可以看到,其实特斯拉并不是直接进行端到端的研究,通过感知的端到端,再到规控的端到端,都是逐步切入的,有一个发展过程。同时也钦佩特斯拉的勇气,敢于使用前沿的技术,并将其落地量产。

ee154dee742c4e7da0ab3315b315cf1b.png

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】文件的编译链接和预处理

文件的编译链接和预处理 程序的翻译环境和执行环境翻译环境预处理(预编译)过程编译过程汇编过程链接过程 运行环境 预处理详解预处理符号预处理指令#define#define定义标识符#define定义宏#define替换规则 #与###的使用##的使用 带有副作用的宏参数宏与函…

C++面向对象的第二大特性:继承

1.继承的介绍 首先容我先向大家举一个列子: 我这里定义了一个Person的类 class Person { protected:string name;int age;string address;}; 在这个基础上,我要定义一个关于Student , Worker 的类 由于Student Worker都具有Person类中的成员变量 &#xff0c…

C语言自定义类型:结构体

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 C语言自定义类型:结构体 收录于专栏【C语言学习】 本专栏旨在分享学习C语言学习的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 1. 结…

EyeMock下载与使用教程

视频眼神修复直视镜头的AI具有极高的灵活性和适应性。它可以根据不同的拍摄环境和主播需求进行个性化设置,确保最佳的视觉呈现效果。在直播互动中,主播可能因为分神或疲劳而失去与观众的直视,这款工具能够迅速识别并修复这一问题,…

苹果M4性能分析:进步神速?还有多少空间?

2024年初,苹果推出了M4处理器,令人意外的是,它的发布距离M3发布仅仅过去了半年时间。更让人惊讶的是,M4首次亮相于iPad Pro。这一新处理器不仅仅是M3的简单升级版本,而是一次全面的架构优化。本文将详细分析M4处理器的…

网络工程师备考1——基础学习

认识设备 1 交换机 一、什么是交换机? 实现不同电脑之间数据的转发 换机是一种用于电(光)信号转发的网络设备。 它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。交换机工作于OSI参考模型的第二层,即数据…

sw套合样条曲线

套合样条曲线,可以变成一条曲线,然后可以进行分段

sql select获取mysql所有数据库,指定数据库下的所有表名

介绍一下 MySQL 8.0 中默认安装的几个系统数据库/模式。 当我们安装 MySQL 8.0 并初始化数据库之后,默认会创建以下系统数据库: mysql,存储了 MySQL 服务器正常运行所需的各种信息。 information_schema,提供了访问数据库元数据…

黑马点评1——短信篇(基于session)

🌈hello,你好鸭,我是Ethan,一名不断学习的码农,很高兴你能来阅读。 ✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。 🏃人生之义,在于追求,不在成败,勤通…

使用DataGrip连接跳板机后再连接远程服务器的mysql数据库

相比配置本地数据库就是多了一步SSH/SSL配置。 添加新的mysql连接,选择SSH/SSL,勾选Use SSH tunnel: 点击右边的…配置跳板机连接,输入账号密码,然后保存: 接着配置General,里面填上要连接的数…

【蓝桥杯选拔赛真题76】python找出元素 第十四届青少年组蓝桥杯python选拔赛真题 算法思维真题解析

目录 python找出元素 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python找出元素 第十四届蓝桥杯青少年组python比赛选拔赛真题 一、题目要…

谷歌浏览器安装devtools工具

在浏览器中输入极简插件,然后打开如下的网页,在搜素框中输入vue 出现下图 点击推荐下载 (地址:https://chrome.zzzmh.cn/info/nhdogjmejiglipccpnnnanhbledajbpd) 打开谷歌浏览器如图 选择“扩展程序” 点开之后&…

抖音跳转微信卡片制作教程 小白也能搞

实测可以正常跳转,很牛逼,给大家分享一下~ 这是我做出来抖音发出去的效果,大家会制作了可以去卖钱,市场上一个这个卡片都要卖50-200,很不错的!! https://pan.baidu.com/s/1xPmGAWPcbAp7eXg7Dc…

防范TOCTOU竞态条件攻击

防范TOCTOU竞态条件攻击 在软件开发过程中,我们常常会遇到需要在使用资源之前检查其状态的情况。然而,如果资源的状态在检查和使用之间发生了变化,那么检查的结果可能会失效,导致软件在资源处于非正常状态时执行无效操作。这种时…

java微服在使用nacos注册中心时,ribbon负载均衡时给部分feign client使用静态serverList

我看很多贴子都是针对eureka环境下,做静态serverList配置,目前国内大部分都用Nacos,所以便研究了一下。 micore-service-x:ribbon:listOfServers: ip1:port,ip2:port2NIWSServerListClassName: com.netflix.loadbalancer.ConfigurationBased…

Java基础-反射原理

总结放前面: 反射是可以通过一个类对象或类名称获取到该类的全部信息(属性和方法),包括为权限为private。 要使用反射第一步,要获取的类的Class对象,该Class对象存放在堆区,于类加载时创建&…

每日练习之完全背包——兑换零钱,完全背包问题总结

兑换零钱 题目描述 运行代码 #include<bits/stdc.h> #include<iostream> using namespace std; const int mod1e97; int a[20]{1,2,5,10,20,50,100,200,500,1000,2000,5000,10000},dp[100010]; int main() {dp[0]1;for(int i0;i<13;i)for(int ja[i];j<1000…

汇聚荣:新手做拼多多应该注意哪些事项?

新手在拼多多开店&#xff0c;面临的是竞争激烈的市场和复杂的运营规则。要想在这个平台上脱颖而出&#xff0c;必须注意以下几个关键事项。 一、市场调研与定位 深入了解市场需求和竞争对手情况是新手开店的首要步骤。选择有潜力的细分市场&#xff0c;并针对目标消费者群体进…

LaTeX 2022软件安装教程(附软件下载地址)

软件简介&#xff1a; 软件【下载地址】获取方式见文末。注&#xff1a;推荐使用&#xff0c;更贴合此安装方法&#xff01; LaTeX 2022是基于ΤΕΧ的一种排版系统&#xff0c;特别适用于生成科技和数学文档的高质量打印。它可用于各种文档类型&#xff0c;从简单信函到完整…

【Flutter】线性布局弹性布局层叠布局

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;Flutter学习 &#x1f320; 首发时间&#xff1a;2024年5月25日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f43e; 目…