大语言加持的闭环端到端自动驾驶模型 学习笔记纯干货
LMDrive:大语言模型辅助闭环端到端
LMDrive:大语言模型辅助闭环端到端
- 背景
- 框架
- 输入部分:
- 导航指令:
- 视觉数据:
- 提示指令(可选):
- 处理部分:
- 输出部分:
- 视觉编码器(vision encoder):
- 大语言模型及其相关组件:
- 输入部分:
- 视觉编码器处理:
- 2D 处理路径:
- 3D 处理路径:
- 视觉标记
- 生成过程:
- 作用:
- 预测模块:
- BEV 地图预测:
- 交通信号灯状态预测:
- 未来路径点预测:
- 预训练阶段:
- 指令微调阶段和推理阶段:
- 测试路线类型
- Awesome-DriveLM
背景
自动驾驶行驶过程中要从起点到终点,避免碰撞,防止违反交通法规
端到端与模块化设计之分——端到端已成主流
闭环与开环——在线数据与
驾驶模拟器——使用了carla
交通场景
设计了两种工况,有一些特殊交互场景,来检验模型对特殊情况的处理。
之前的工作
现有问题:
1现代自动驾驶方法在遇到长尾的、难以预见的事件以及复杂的城市场景时,表现不佳,容易引发严重事故。
2并且以往的自动驾驶方法倾向于依赖有限格式的输入,比如传感器数据和导航航点,这限制了车辆对语言信息的理解能力以及与人类的交互能力。
新的尝试:大语言模型(LLM)展现出接近 “通用人工智能(AGI)” 的强大推理能力,有望改善自动驾驶面临的问题。图中还展示了结合大语言模型的自动驾驶系统架构,通过指令输入,利用传感器数据等,形成数据和梯度流动的闭环控制。
这里是闭环的系统,完整的跑完这个过程,而不是用一个数据集(使用数据集来跑一个开环是不一样的)
通过instruction作为输入,同时有环境的数据,由LLM输出control给Environment
贡献情况
提出新框架:提出了一种新颖的端到端、闭环、基于语言的自动驾驶框架 LMDrive,它通过多模态多视角传感器数据以及自然语言指令,与动态环境进行交互。
提供数据集:提供了一个包含约 6.4 万个数据片段的数据集,每个片段包含一条导航指令、若干提示指令、一系列多模态多视角传感器数据以及控制信号,数据片段时长在 2 到 20 秒之间。
建立评估基准:提出了 LangAuto 基准,用于评估将语言指令作为导航输入的自动驾驶智能体,该基准涵盖了具有误导性或冗长的指令,以及具有挑战性的对抗性驾驶场景 。
实验验证:进行了大量的闭环实验,验证了所提出框架的有效性,并分析了 LMDrive 的特点,为该方向的后续研究提供了参考。
数据集格式
navigation instruction
notice instruction
示例:
包含的一些关于场景的语言的等等
多种表述、误导性、多个指令等
指令多样化:借助 ChatGPT API 为每种类型的指令生成八个不同的变体。比如对于 “右转” 指令,就有 “行驶 [x] 米后右转” 等多种不同表述方式,以丰富指令形式。
加入误导性指令:为了提升模型应对误导性指令的能力,模拟了这类场景并将其添加到数据集中,增强模型在面对错误或干扰信息时的鲁棒性。
连接多个指令:构建了一些连续的复杂指令数据,用于模拟真实的基于导航的驾驶场景,使数据集更贴合实际应用中的复杂情况。
复杂的指令
两个连续指令场景:给出了两组示例,像 “准备前方右转。沿此路线继续行驶。” 以及 “沿此路线保持当前方向。向左,准备驶入。” ,模拟了较为基础的连续导航指令情境。
三个连续指令场景:列举了三组示例,比如 “在即将到达的 T 字路口右转。驶向左侧车道。沿此路线保持行驶。” 这些示例更为复杂,模拟了在实际驾驶中可能遇到的一系列连贯的导航指令情况,有助于训练和评估自动驾驶模型处理复杂指令序列的能力 。
2T左右的数据
框架
输入部分:
导航指令:
例如 “在下个路口左转”,通过 Tokenizer(分词器)处理后输入到大语言模型(LLM)中。
视觉数据:
多视角的 RGB 图像和激光雷达(LiDAR)数据,先由 Vision Encoder(视觉编码器)编码,再经过 Q-Former 和 Adapter(适配器)处理,输入到大语言模型。
提示指令(可选):
比如 “注意前方行人”,同样经过 Tokenizer、Q-Former 和 Adapter 处理后进入大语言模型。
处理部分:
大语言模型接收上述多种输入信息,进行综合处理和推理,判断当前指令是否完成。
输出部分:
如果指令未完成,模型会继续处理输入信息;若指令完成,模型通过 Adapter 输出控制信号(如方向盘、油门、刹车等控制指令),实现自动驾驶操作 。 整个框架体现了多模态数据与大语言模型的结合,用于实现基于语言指令的自动驾驶控制 。
视觉编码器(vision encoder):
负责处理来自摄像头和激光雷达等多视角、多模态的传感器数据。通过对这些数据的分析理解周围场景,并生成视觉标记(visual tokens),为后续模型提供关于外部环境的视觉信息。
大语言模型及其相关组件:
包括分词器(tokenizer)、Q-Former 和适配器(adapters)。该部分处理所有历史视觉标记以及语言指令(导航指令和可选的提示指令),通过对这些信息的整合和推理,来预测车辆的控制信号,比如方向盘转向、加减速等操作,同时判断当前的指令是否已经完成。
输入部分:
有两种输入,多视角的图像作为 2D 输入,激光雷达(LiDAR)数据作为 3D 输入。
视觉编码器处理:
2D 处理路径:
多视角输入先经过 2D Backbone(骨干网络)提取特征,再通过 Transformer Encoder(Transformer 编码器),输出 key 和 value 值,用于后续处理。
3D 处理路径:
LiDAR 输入进入 3D Backbone(骨干网络),同时还有交通信号灯查询(Traffic Light query)和路径点查询(Waypoint queries)作为额外输入,接着经过 Decoder(解码器),与 2D 路径的输出结合,生成鸟瞰图(BEV)形式的视觉标记(Visual Tokens)。
视觉标记
生成过程:
由视觉编码器生成。多视角图像和激光雷达数据分别经过 2D Backbone、Transformer Encoder 以及 3D Backbone、Decoder 等模块处理后,融合生成鸟瞰图(BEV)形式的 visual tokens ,它综合了车辆周围环境的 2D 和 3D 信息。
作用:
是连接视觉感知与后续预测及决策模块的桥梁。一方面,作为输入提供给预测头(Prediction Headers),用于生成 BEV 地图、预测交通信号灯状态和未来路径点;另一方面,在 LMDrive 模型整体流程中,会被输入到大语言模型,让大语言模型结合语言指令进行处理,从而输出控制信号,实现自动驾驶 。简单来说,visual tokens 承载了环境感知信息,便于模型后续完成各类任务。
预测模块:
BEV 地图预测:
视觉标记进入 CenterPoint 模块,生成 BEV Map,用于展示车辆周围环境的鸟瞰图。
交通信号灯状态预测:
通过多层感知器(MLP),根据视觉标记预测交通信号灯状态。
未来路径点预测:
利用门控循环单元(GRU),根据路径点相关的视觉标记,预测未来的路径点(Future waypoints)。
预训练阶段:
视觉编码器会连接预测头(prediction headers)。此时,它利用多视角多模态传感器数据作为输入,执行目标检测、交通信号灯状态分类和未来路径点预测等预训练任务。通过这些任务,视觉编码器能够学习到如何从输入数据中提取与自动驾驶相关的关键信息,例如识别周围物体、判断信号灯状态和规划未来行驶路径等。
指令微调阶段和推理阶段:
预测头会被舍弃,并且视觉编码器被冻结(参数不再更新)。在这个阶段,视觉编码器的主要作用是生成视觉标记(visual tokens),这些标记会被输入到大语言模型(LLM)中。这样做的目的是将视觉信息转化为大语言模型能够理解和处理的形式,以便大语言模型结合语言指令对自动驾驶行为进行决策和控制。
视觉编码器预训练阶段:视觉编码器以单帧传感器数据作为输入。由于指令标注过程会丢弃一些帧,所以使用指令标注前的原始数据集进行预训练,该原始数据集包含约 300 万帧数据。在此阶段,仅对视觉编码器进行预训练,任务集中在场景理解相关的感知任务上,如目标检测、交通信号灯状态识别等,让视觉编码器学会从传感器数据中提取有用的视觉信息。
指令微调阶段:整个系统在指令的引导下进行端到端的自动驾驶训练。此时,Q-Former 和适配器(Adapters)是可训练的,而其他组件被冻结。LMDrive 模型以一系列帧作为输入,在训练时会设置一个固定的序列长度来构建批量数据,目的是让模型学会将视觉信息、语言指令和控制信号进行对齐,使模型能够根据语言指令和视觉输入输出合适的控制信号,实现自动驾驶。
基准benchmark
独特性:LangAuto 基准测试是首个在 CARLA(一个自动驾驶模拟环境)中评估基于语言指令的闭环驾驶的基准。与之前的 Town05 和 Longest6 等基准不同,它使用自然语言指令,而非离散命令或路点来指导自动驾驶。
特征:
自然语言引导:用自然语言引导车辆到达目的地,还会加入适当的提示以增强安全性,更贴近现实中的人类指令交互。
场景丰富:覆盖 CARLA 中的全部 8 个城镇,包含高速公路、十字路口、环形交叉路口等多种场景,以及 16 种环境条件,包括 7 种天气和 3 种光照条件,能全面测试自动驾驶系统在不同环境下的表现。
多样挑战:支持不同的行驶路线,提供多样化的驾驶挑战和场景,增加了测试的复杂性和全面性。
误导性指令:约 5% 的指令是故意设置的误导性指令,持续 1 - 2 秒,自动驾驶智能体必须识别并忽略这些指令以安全导航,以此测试系统应对干扰信息的能力。
度量metics:
路线完成率(Route completion):指已完成的路线长度占总路线长度的百分比,用于衡量自动驾驶系统在给定路线上的行驶进展情况,体现其能否按照指令规划的路线前进并抵达目的地。
违规分数(Infraction score) :当自动驾驶车辆发生碰撞或违反交通规则时,违规分数会根据相应的折扣因子降低。这个指标主要用于评估自动驾驶系统在行驶过程中的安全性和遵守交通规则的程度。
驾驶分数(Driving score) :由路线完成率和违规分数相乘得出,综合描述了驾驶进展和安全性两个方面,是一个被广泛认可的用于对自动驾驶系统进行排名的指标。通过这个分数,可以更全面地评估不同自动驾驶系统在复杂场景下的综合性能。
测试路线类型
LangAuto Track:导航指令会根据自动驾驶智能体的位置实时更新。它包含三个子路线(Tiny/Short/Long),分别对应不同的路线长度,用于在不同行程距离下测试自动驾驶系统对导航指令的响应和执行能力。
LangAuto - Notice Track:在 LangAuto Track 的基础上,增加了提示指令,用于模拟在复杂场景下为自动驾驶系统提供实时帮助的情景,测试系统处理额外提示信息并做出正确反应的能力。
LangAuto - Sequential Track:将连续的指令合并为一个长指令,模仿现实世界中导航软件的指令形式,考验自动驾驶系统理解和执行复杂长指令的能力。
不同路线的对比分析
表格对 LangAuto Track 中的三个子路线(LangAuto、LangAuto - Short、LangAuto - Tiny)进行了对比:
平均行驶距离(Avg. Driving Distance):LangAuto 平均为 635.8 米,LangAuto - Short 为 305.9 米,LangAuto - Tiny 为 122.4 米,体现了各子路线的长度差异。
平均导航指令数量(Avg. Navigation Instructions):LangAuto 为 20.3 条,LangAuto - Short 为 10.8 条,LangAuto - Tiny 为 5.1 条 ,反映出随着路线长度缩短,导航指令数量相应减少。
平均提示指令数量(Avg. Notice Instructions):LangAuto 为 5.8 条,LangAuto - Short 为 3.3 条,LangAuto - Tiny 为 1.7 条,说明不同长度的路线在运行过程中所需的提示指令数量也有所不同。 这些数据有助于评估自动驾驶系统在不同路线复杂度下的性能表现。
性能指标
这张表格展示了在 LangAuto 基准测试中,6 种不同大语言模型(LLM)作为骨干网络时的性能对比以及消融研究结果,涉及的指标和解读如下:
指标说明:
DS(Driving score):驾驶分数,是路线完成率(RC)和违规分数(IS)的乘积,综合衡量自动驾驶系统的行驶进展和安全性,分数越高表示性能越好。
RC(Route completion):路线完成率,指已完成的路线长度占总路线长度的百分比,数值越高意味着系统在规划路线上行驶得越远。
IS(Infraction score):违规分数,反映自动驾驶系统遵守交通规则的程度,数值越高表示违规越少。
模型对比:
Random Init.(随机初始化):作为对比基线,其各项指标数值相对较低,说明未经训练或预训练的模型在自动驾驶任务中表现较差。
LLaMA、LLaMA2:是不同版本的大语言模型。在不同的 LangAuto 子路线(LangAuto、LangAuto - Short、LangAuto - Tiny)测试中,它们在各项指标上均明显优于随机初始化模型,且 LLaMA2 在部分指标上比 LLaMA 有一定提升。
Vicuna、Vicuna-v1.5:Vicuna 模型及其 v1.5 版本在不同路线测试中的表现也优于随机初始化,且 Vicuna - v1.5 在一些指标上略高于 Vicuna。
LLaVA-v1.5:在所有对比的模型中,LLaVA - v1.5 在多数指标上取得了最高的数值,表明该模型在基于语言指令的自动驾驶任务中综合性能相对更优。
关于 LMDrive 模型中不同模块设计的消融研究,对比分析了各模块对模型性能的影响:
上半部分
对比 LLaVA-v1.5 和 Vicuna-v1.5 在 LangAuto 和 LangAuto - Notice 基准测试中的表现,指标如下:
违规分数(Infraction Score):分数越高表示遵守交通规则越好。在 LangAuto - Notice 基准测试中,两款模型的违规分数均高于 LangAuto 基准测试,说明额外的提示指令有助于减少违规。
车辆碰撞(Vehicle Collisions)、行人碰撞(Pedestrian Collisions)、布局碰撞(Layout Collisions):数值越低表明碰撞情况越少。可以看到,在 LangAuto - Notice 基准测试中,这几项碰撞指标均有所降低,意味着提示指令提升了安全性。
闯红灯违规(Red light Violations)、驶离道路违规(Offroad Infractions)、道路堵塞违规(Blocked Infractions):数值越低代表违规情况越少。从数据可以看出,不同模型在不同基准测试中的违规情况有差异 ,但总体上 LangAuto - Notice 基准测试中的部分违规情况相对较少。
下半部分
对比 LLaVA-v1.5 和 Vicuna-v1.5 在 LangAuto 和 LangAuto - Sequential 基准测试中的表现,涉及驾驶分数(DS)、路线完成率(RC)和违规分数(IS):
LLaVA-v1.5:在 LangAuto 基准测试中的 DS 为 36.2,RC 为 46.5,IS 为 0.81;在 LangAuto - Sequential 基准测试中,DS 降至 34.0,RC 降至 43.7,IS 保持 0.81 ,说明合并连续指令的 LangAuto - Sequential 基准测试对其驾驶和路线完成能力有一定挑战。
Vicuna-v1.5:在 LangAuto 基准测试中的 DS 为 34.0,RC 为 39.0,IS 为 0.85;在 LangAuto - Sequential 基准测试中,DS 降至 31.9,RC 降至 37.1,IS 降至 0.84 ,同样显示出在 LangAuto - Sequential 基准测试中性能有下降。
训练过程可视化示例
备注:DriveLM相关研究
Awesome-DriveLM
A collection of resources and papers on Large Language Models in autonomous driving
BEVGPT: Generative Pre-trained Large Model for Autonomous Driving Prediction, Decision-Making, and Planning
Pengqin Wang, Meixin Zhu, Hongliang Lu, Hui Zhong, Xianda Chen, Shaojie Shen, Xuesong Wang, Yinhai Wang
AAAI 2024 [Paper]
ADAPT: Action-aware Driving Caption Transformer
Bu Jin, Xinyu Liu, Yupeng Zheng, Pengfei Li, Hao Zhao, Tong Zhang, Yuhang Zheng, Guyue Zhou, Jingjing Liu
ICRA 2023. [Paper] [Code]
DriveGPT4: Interpretable End-to-end Autonomous Driving via Large Language Model
Zhenhua Xu, Yujia Zhang, Enze Xie, Zhen Zhao, Yong Guo, Kwan-Yee. K. Wong, Zhenguo Li, Hengshuang Zhao
arXiv Oct. 2023. [Paper]
Driving with LLMs: Fusing Object-Level Vector Modality for Explainable Autonomous Driving
Long Chen, Oleg Sinavski, Jan Hünermann, Alice Karnsund, Andrew James Willmott, Danny Birch, Daniel Maund, Jamie Shotton
arXiv Oct. 2023. [Paper][Code]
GPT-Driver: Learning to Drive with GPT
Jiageng Mao, Yuxi Qian, Hang Zhao, Yue Wang
arXiv Oct. 2023. [Paper] [Code]
Drive Anywhere: Generalizable End-to-end Autonomous Driving with Multi-modal Foundation Models
Tsun-Hsuan Wang, Alaa Maalouf, Wei Xiao, Yutong Ban, Alexander Amini, Guy Rosman, Sertac Karaman, Daniela Rus
arXiv Oct. 2023. [Paper]
LanguageMPC: Large Language Models as Decision Makers for Autonomous Driving
Hao Sha, Yao Mu, Yuxuan Jiang, Li Chen, Chenfeng Xu, Ping Luo, Shengbo Eben Li, Masayoshi Tomizuka, Wei Zhan, Mingyu Ding
arXiv Oct. 2023. [Paper]
Drive Like a Human: Rethinking Autonomous Driving with Large Language Models
Daocheng Fu, Xin Li, Licheng Wen, Min Dou, Pinlong Cai, Botian Shi, Yu Qiao
arXiv July 2023. [Paper] [Code]
LINGO-1: Exploring Natural Language for Autonomous Driving
Wayve
[Website]
相关文章:

大语言加持的闭环端到端自动驾驶模型 学习笔记纯干货
LMDrive:大语言模型辅助闭环端到端 LMDrive:大语言模型辅助闭环端到端 背景框架输入部分:导航指令:视觉数据:提示指令(可选):处理部分:输出部分: 视觉编码器…...

初阶数据结构(C语言实现)——2算法的时间复杂度和空间复杂度
目录 本节目标1. 算法效率1.1 如何衡量一个算法的好坏1.2 算法的复杂度 2.时间复杂度2.1 时间复杂度的概念2.1.1 入门习题2.1.2 进阶习题 2.2 常见时间复杂度 3. 空间复杂度3.1 常见空间复杂度 本节目标 算法效率时间复杂度空间复杂度常见时间复杂度以及复杂度oj练习 1. 算法…...

MySQL知识
1.Navicat客户端连接 打开navicat,点击连接,点击MySQL 输入连接名与密码,如果连接的mysql是windows下的mysql主机号就填写localhost 填写好后点击测试连接 点击确定,mysql连接navicat成功 2.MySQL数据定义语言(DDL) DDL用于数据库…...
【前端定位线上问题的多种方案(不依赖 Sentry)】
前端定位线上问题的多种方案(不依赖 Sentry) 🛠️ 一、构建时注入调试信息 🔧 1. 注入版本信息与 Git 提交哈希 Webpack 配置: // webpack.config.js const webpack require(webpack); const gitRevision require(…...

怎么修改node_modules里的文件,怎么使用patch-package修改node_modules的文件,怎么修改第三方库原文件。
在开发中会遇到需要node_modules里第三方库有bug,然后需要修改node_modules文件的情况 使用patch-package包可以修改node_modules里的文件 patch-package npm 官网:patch-package - npm 安装 npm i patch-package 修改文件后 npx patch-package s…...

muduo网络库2
Muduo网络库:底层实质上为Linux的epoll pthread线程池,且依赖boost库。 muduo的网络设计核心为一个线程一个事件循环,有一个main Reactor负载accept连接,然后把连接分发到某个sub Reactor(采用轮询的方式来选择sub Reactor)&…...
什么是DrawCall?DrawCall为什么会影响游戏运行效率?如何减少DrawCall?
目录 1 什么是DrawCall? 2 DrawCall为什么会影响游戏运行效率? 3 如何减少 DrawCall?(结合性能分析工具) 1 什么是DrawCall? DrawCall(绘制调用) 是 GPU 的一个指令,…...

LabVIEW电能质量分析软件
随着电力系统的复杂性增加,电能质量问题日益突出,传统的电能质量检测装置多采用DSP技术,不仅开发周期长、功能单一,而且在多功能集成方面存在局限性。基于LabVIEW虚拟仪器开发平台的电能质量分析软件利用FFT、STFT、WT、HHT等多种…...

【十二】Golang 映射
💢欢迎来到张胤尘的开源技术站 💥开源如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 映射映射的定义映射初始化make 函数使用字面量 源…...

PHP商协会管理系统小程序源码
📊 商协会管理系统 💻 这是一款基于ThinkPHPUniapp框架,经过深度定制与匠心打造的商协会系统,被誉为商协会领域数字化运营管理的新锐之星。它以“智慧化会员体系、智敏化内容运营、智能化活动构建”为三大核心动力源,…...
React进阶之React核心源码解析(三)
React核心源码解析 diff多节点比较diff两轮遍历比较第一轮比较第二轮比较Update 状态更新Concurrent Modediff 多节点比较diff isArray方法比较 节点更新// 更新前 <ul><li key="0" className="before">0<li><li key=...

【无标题】网络安全公钥密码体制
第一节 网络安全 概述 一、基本概念 网络安全通信所需要的基本属性“ 机密性;消息完整性;可访问性与可用性;身份认证。 二、网络安全威胁 窃听;插入;假冒;劫持;拒绝服务Dos和分布式拒绝服务…...
mysql中的计算日期函数 理解、用法
三种计算日期的函数 函数用途示例DATEDIFF()计算两个日期的天数差DATEDIFF(2023-10-05, 2023-10-01) → 4TIMESTAMPDIFF()按指定单位(年、月、小时等)计算差TIMESTAMPDIFF(MONTH, 2023-01-01, 2023-03-01) → 2DATE_ADD()日期加法DATE_ADD(2023-10-01, …...

从零开始用react + tailwindcs + express + mongodb实现一个聊天程序(一)
项目包含5个模块 1.首页 (聊天主页) 2.注册 3.登录 4.个人资料 5.设置主题 一、配置开发环境 建立项目文件夹 mkdir chat-project cd chat-project mkdir server && mkdir webcd server npm init cd web npm create vitelatest 创建前端项目时我们选择javascrip…...
wifi5和wifi6,WiFi 2.4G、5G,五类网线和六类网线,4G和5G的区别
wifi5和wifi6的区别 是Wi-Fi 5和Wi-Fi 6的选择与路由器密切相关。路由器是创建和管理无线网络的设备,它决定了网络的类型和性能。具体来说: 路由器的标准支持:路由器可以支持不同的Wi-Fi标准,如Wi-Fi 5(802.11ac)和Wi-Fi 6(802.11ax)。支持Wi-Fi 6的路由器能够提供更高…...

Docker基础-常见命令
docker images -查看所有的本地镜像。 docker pull -把远端镜像拉取到本地。 docker rmi -删除镜像。 docker push -推到镜像仓库。 docker run -创建并运行容器(自动化,如果发现镜像不存在会先去拉取, 拉取完了以后再去自动创建容器&am…...

从零开始用react + tailwindcs + express + mongodb实现一个聊天程序(三) 实现注册 登录接口
1.划分文件夹 在src目录下创建controllers middleware models routes controllers 放具体的方法 signup login middleware 里面是中间件 请求的验证 models 放对象实体 routes 处理访问路径像/signup /login 等等 2. 接口开发 系统的主要 有用户认证 和 消息 2种类型…...
Android NFC功能开发指南
在 Android 平台上开发 NFC(近场通信)功能,主要涉及以下几个步骤: 1. 权限声明 首先,在 AndroidManifest.xml 文件中声明 NFC 权限: <uses-permission android:name"android.permission.NFC&quo…...
基于Matlab实现汽车远近光灯识别的详细步骤及代码示例
以下是一个基于Matlab实现汽车远近光灯识别的详细步骤及代码示例,主要通过图像处理技术来区分远光灯和近光灯。 整体思路 图像预处理:包括读取图像、灰度化、去噪等操作,以提高后续处理的准确性。边缘检测:找出图像中的边缘信息…...

nginx反向代理以及负载均衡(常见案例)
一、nginx反向代理 1、什么是代理服务器? 代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

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…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...