车联网安全学习之TBOX
Telematics BOX,简称 T-BOX,也称远程信息处理控制单元(Telematics Control Unit, TCU),集成GPS、外部通信接口、电子处理单元、微控制器、移动通信单元和存储器等功能模块。
TBOX 提供的功能有网络接入、OTA、远程控制、位置查询/车辆追踪、电池管理、位置提醒、eCall、远程诊断、平台监控/国家监管等。
网络接入
作为车端与车联网连接的入口,给车机等提供上网服务。
OTA
传统更新汽车软件的做法是到 4S 店通过 OBD 对相应的 ECU 进行软件升级、通过 USB 等接口对信息娱乐系统进行升级。伴随着智能汽车的发展,本地升级已不再适应高速变化的车载生态,当下 OTA 在汽车也得了广泛的应用。
汽车远程升级(Over-The-Air,OTA),指替代线缆或者其它本地连接方式,通过无线传输方式进行软件下载和软件更新的过程。OTA 常见类型包括SOTA(Software OTA,应用软件升级)和COTA(Config OTA,配置更新)、 FOTA(Firmware OTA,固件升级)。通过 OTA 能够为车端添加新功能、修复漏洞等。
SOTA: 软件升级,面向车载端上的应用软件升级。
COTA: 配置升级,面向车端端上的配置升级。
FOTA: 固件升级,面向车端上的固件升级,实现对对动力域、底盘域、辅助驾驶域、信息娱乐域和车身域在内的重大功能更新。
OTA 主要涉及两端,后台管理和客户端。后台管理包括升级包上传、版本控制、升级流程监控与统计、应用与数据升级等;客户端包括定时检查更新、手动检查更新、安全下载、断点续传、升级包校验等。
当下也涌现一批 OTA 解决方案供应商 ,如艾拉比、科络达、红色石头、INTEST、Excelfore eSync、哈曼、弗吉亚、安波福等。目前 OTA 国家强制标准《汽车软件升级 通用技术要求》也在制定之中。
远程控制
使用移动应用程序控制车门开关、调节空调等。手机应用首先将指令发给服务端,然后服务端将指令交由 TBOX 来执行,TBOX 通过主连接器上的 CAN 总线等将指令传送给 ECU 执行。
位置查询/车辆追踪
提供车辆的实时定位信息,可通过手机应用查询车辆的实时位置以及历史轨迹。
电池管理
对电池的实时监控、管理、维护。
位置提醒
为车主提供维护保养、驾驶风格建议,提高用户车主的用车体验。
eCall
eCall(Emergency Call,紧急呼叫) 包括道路救援、自动碰撞通知(ACN)等。
欧盟在 2017 年底强制要求所有的上市新车配备汽车紧急呼叫系统 eCall。国际标准(ETSI TS 126 267,)规范了 eCall 数字通道传输 MAD (Minimum Set of Data,最小数据集)包括位置、车型和事故严重度的数据格式,以及同步语音通道与 PSAP(Public Safety Answer Point,公共安全应答中心)的呼叫优先级。
eCall 支持手动触发、自动触发两种方式。手动 eCall 功能可通过实体按键(车顶的一个红色按钮,通常标记为SOS)触发;自动 eCall 功能指车辆发生碰撞后安全气囊弹出的情况下,TBOX 接收碰撞信号后自动拨通救援电话的一种功能。eCall 拨通后,后台会根据车辆位置,及时提供安排相应的救援服务。
eCall 是欧洲标准,俄罗斯也推出了类似方案 ERA GLONASS。国内方面,目前并相关无强制法规要求。
远程诊断
指汽车在启动时,获知汽车的故障信息,并把故障码上传至数据处理中心。系统在不打扰车主的情况下复检故障信息。在确定故障后,并实施远程自动消除故障,无法消除的故障以短信方式发送给车主,使车主提前获知车辆存在的故障信息,防范于未然。既车辆不用返回 4S 店,对车身控制系统、车载系统等进行升级快速修复系统缺陷。在数据采集分析基础上,通过增加无线通信设备,实现数据远程上传到云端服务器,分析人员从云端服务器下载数据后分析。 基于远程软件控制经销商诊断设备诊断车辆,同时可以通过摄像头、话筒等设备获得维修现场音像信息。
平台监控/国家监管
利用已经安装在车辆上的车载通讯单元( TBOX)实现将国家要求的高压电相关静态数据、动态数据和故障状态实时传输到政府平台。 相应的国家标准为 《GB/T 32960-2016 电动汽车远程服务与管理系统技术规范》,从2017年4月1日起,所有新能源汽车必须强制实行国标 GB/T 32960。平台和车型通过认证的证书如下。
新能源汽车上的数据实时传输给企业安全检测平台,然后由企业平台上报地方监管平台和国家监管平台。
.png)
企业监测平台一般称之为 RTM(实时监控)系统。RTM 系统发送信息的路径,FCM(Forward Collision Mitgation system,前方碰撞预防辅助制动系统) 负责收集 4 路 CAN 线的信息,过滤后通过 RTM-CAN 发送给 TBOX3,最后 TBOX3 通过天线将信号发送到后台服务器。
总结
本文总结了 TBOX 的主要功能,原本是下一篇文章 车联网安全基础知识之大众J949(TBOX/TBOX) 中的一部分。原文太长,看起来太累,于是拆分成了两篇。下一篇将在不久后发出。
现在很多做车联网安全的主要精力停留在攻破系统上,在对业务漏洞的挖掘上往往不够深入。不深入的原因是多种多样的,一是测试时间往往较短,没有时间对业务进行完整的检测。另一方面缺乏厂商配合,很多检测项目很难开展。最后还与测试人员对业务的了解程度有关,当前车联网安全仍处于早期,有很多知识测试人员未必掌握。作为在车联网安全一线上的我,当然要充实自己。于是写这篇文章,梳理 TBOX 主要的业务,为后续安全检测和漏洞挖掘打好基础。
大众J949(OCU/TBOX)
OCU(Online Connectivity Unit)既紧急呼叫模块和通信单元。其他车上的同类模块在国内通常称之为 TBOX(Telematics BOX)。国外多称之为 TCU(Telematics Control Unit)。
OCU 具有一个固定的内置SIM卡, 用于登录移动网络。 它的作用是发送和接收 Car-Net e-Remote 服务的数据和命令。 通过无线网络实现永久的互联网连接, 确保后台和车辆之间的数据传输, 即使在关闭点火开关后也可以接收、 处理和执行命令。OCU 是车联网系统系统中最重要的组件之一。
主要功能
OCU 的功能和其他 TBOX 功能相似,详情见 车联网安全基础知识之TBOX主要功能。
4 代 OCU 硬件分析
第一代 OCU1 出现在 2012 年,现已经历四次迭代,当前最新版本第四代 OCU4。OCU 的供应商为 LG,第一代在越南制造,第三代在中国或越南制造。第四代由越南制造。OCU 从第 3 代起开始逐步支持车载以太网。
OCU 安装在仪表板后面,附带备用电池和备用天线。外接有蜂窝网络天线和 GNSS 定位天线,部分版本还有 Wi-Fi 天线。增加备用电池、内置扬声器和内置通讯天线来增强 OCU 的健壮性,避免出现整车断电无法拨打 eCall 的情况。主连接器中,有电源、调试接口、CAN、以太网、音视频等接口。
对外通信方面,OCU 使用内置 eSIM 卡,支持的频段在不同国家存在一定的差异。GNSS 定位支持所有主流的定位系统,包括 GPS、Glonass、Beidou、SBAS 以及 Galileo。
OCU4-TLVHE4IU
2019 年推出最新的第四代 OCU。今年大众推出的 ID.4 就使用了最新的 OCU4。
TLVHE4IU-N
OCU4 高配,不支持蓝牙和 Wi-Fi。使用的主要芯片如下 。
- 通信模组:Qualcomm MDM9240,支持的频段包括GSM 850/1900、UMTS B2/B4/B5/*B6、LTE FDD B2/B4/B5/B12/B13/B17/B29(RX);
- MCU: 英飞凌 Tricore SAK-TC234LE-32F200F AB,有丰富的接口 1x FlexRay,2x LIN,4x QSPI,6x CAN,包括数据速率增强的 CAN FD;
TLVHE4IU-E
不支持蓝牙和 Wi-Fi。使用的主要芯片如下。
- 通信模组:Qualcomm MDM9240,支持频段 LTE FDD B7。
- MCU: 英飞凌 Tricore SAK-TC234LE-32F200F AB,有丰富的接口 1x FlexRay,2x LIN,4x QSPI,6x CAN,包括数据速率增强的 CAN FD;
OCU3-TLVHM3IU/TLVLM3IU
OCU3 的 PCB 板大体结构相似,主要由一个通信模组以及一个用于和总线交互的 MCU 组成,剩下就是按需配置的以太网桥、Wi-Fi 芯片等。剩下的就是一些基础的电路模块如电源管理、晶振、滤波等。
OCU3 有高低配两个版本,但在高低配之下还有划分。高低配直接的差别是高配支持以太网,低配不支持。其他版本的差异主要是通信基带支持的频段不同、以及是否支持 Wi-Fi 和蓝牙。
OCU3 小版本较多,外观上也有如下两个版本,左边的一个较为圆润,右边一个棱角分明。
TLVHM3IU-E、TLVHM3IU-N 高配
OCU3 高配,支持以太网,不支持 Wi-Fi 和蓝牙。使用的主要芯片如下。
- 通信模组:Qualcomm MDM9240,支持的频段包括 GSM 900/1800 、UMTS B1/B3/B8 、LTE FDD B1/B3/B7/B8/B20/B28A;
- 以太网桥: 东芝 TC9560XBG,采用 ARM Cortex-M3 架构,支持 IEEE 802.1AS 和 IEEE 802.1Qav 等标准;RealTek RTL9044AB;
- MCU: 英飞凌 Tricore SAK-TC234LE-32F200F AB,有丰富的接口 1x FlexRay,2x LIN,4x QSPI,6x CAN,包括数据速率增强的 CAN FD;
TLVLM3IU-N 低配
OCU3 低配,支持 Wi-Fi ,没有以太网和蓝牙。使用的主要芯片如下。
- 通信模组:Qualcomm MDM9628,支持的频段包括 GSM 900/1800 、UMTS B1/B3/B8 、LTE FDD B2/B4/B5/B12/B17;
- MCU: 英飞凌 Tricore SAK-TC234LE-32F200F AB,有丰富的接口 1x FlexRay,2x LIN,4x QSPI,6x CAN,包括数据速率增强的 CAN FD;
TLVLM3IU-E 低配
OCU3 低配,不支持以太网、Wi-Fi 及蓝牙。使用的主要芯片如下。
- 通信模组:Qualcomm MDM9240,支持的频段包括 GSM 900/1800 、UMTS B1/B3/B8 、LTE FDD B1/B3/B7/B8/B20/B28A;
- MCU: 英飞凌 Tricore SAK-TC234LE-32F200F AB,有丰富的接口 1x FlexRay,2x LIN,4x QSPI,6x CAN,包括数据速率增强的 CAN FD;
OCU2 - TUVM02IU
FCC ID 为 TUVM02IU-E、TUVM02IU-C 等,未查询具体的资料。
OCU1-TUVM01IU
TUVM01IU 是第一代 OCU,在越南制造。支持的频段包括 GSM 1900 PCS UP | LTE 2,1900 PCS UP | LTE 25,1900+ UP | LTE 35,TD PCS Lower DOWN | UMTS CH 2 UP | UMTS CH 25 UP | UMTS CH 35 DOWN 。
OCU 第一代经历过 3 次较大的硬件升级,从TUVM01IU-G 从衍生出了 TUVM01IU-R、TUVP01IU-G、TUVP01IU-R 等。
下图是 MQB 平台中使用第一代 OCU 的电路板,部分芯片丝印已无法识别。可识别的主要芯片如下。
- MCU: 飞思卡尔 SPC5606BMLL6 32 位 PPC 架构的 MCU,内存为 1MB,处理器频率为 64MHz。通信方式有 6 路 CAN,使用 JTAG 进行调试。
- SDRAW: 华邦 W94AD6KBHX。
接口测试
手头正好有一个 OCU3,接上 12V 直流电,使用逻辑分析仪识别出了 CAN 接口。其中一条报文的 ID 为 0x36F,数据为 F8 FF FF BF FF FF FF 07。
但在识别串口的时候出现了异常,使用常见的波特率无法解析数据。猜测使用了自有协议通信,无法查看到明文的数据。串口的使用需要用到后面讲到的开发工具 ODT。
对其他接口的测试这里暂不展示。
开发工具 ODT
在第一代 OCU 中,使用 ODT(OCU Development Tool,OCU开发工具) 调试、测试、分析 OCU。
ODT 运行在 Window 系统上,通过 USB 转串口工具与 OCU 相连。 ODT 具有查看信息、设置参数、触发功能等功能。
- 查看信息:在 ODT 可以直观的查看 GNSS定位信息、网络状态、SIM卡信息、电源状态、系统日志、服务日志、调试日志、配置数据等;
- 设置参数:除了查看功能外,还能设置一些列参数,如 APN、供电模式等;
- 触发功能:此外,还能够收发短信、播放音频、升级系统等。
车联网中的 OCU
在车联网系统中,OCU 处于核心位置。从下图中可以看出,OCU 通过 CAN 总线和车载以太网接入网关; J794(车机) 方面,除了通过信息娱乐 CAN 相连以外, J794(车机) 还与 OCU 上的麦克风、扬声器相连。
在大众最近的电子架构中,OCU 与车载应用服务器(ICAS1)通过车载以太网和CAN总线相连。OCU 与 娱乐系统(ICAS3)通过 A2B 相连。
OCU 硬件总结
纵观四代 OCU 的发展,功能越来越丰富,承载的数据量也越来越大。在外观方面,各代差异较小,外部连接上依旧是少数的天线接口和主连接器上的排针,但可以看出还是多出了一些接口。芯片方面,仍旧采用通信模组搭配MCU的方案,通信模组负责与外界进行无线通信,MCU 负责与总线通信。伴随着技术的更替,车载以太网开始在车端广泛应用,以太网交换芯片的出现是OCU发展的最大变化,某种意义上也意味着车载网络的变革。
历代 OCU 使用的主要芯片变化不大,通信模组采用高通 MDM平台,供应商为 Sierra Wireless。国内其他厂商的 TBOX 常使用移远通信的通信模组。通信模组使用 eSIM卡;与 MCU 通过 SPI 和 GPIO 相连;与以太网网桥通过 PCIE 相连;与以太网交换芯片通过 RGMI 和 SPI 相连;与音视频芯片通过 I2S 相连。
MCU 与主控(通信模组) 通过SPI 和 GPIO 相连;下端连接 CAN、按钮、安全气囊等。
本文主要讲解硬件部分,系统与软件部分后续会专题讲解。
安全威胁
以渗透测试人员的角度审视 OCU 的安全,并列举一些常见的风险点。这里以大众 OCU 为主体,也会谈及一些通用 TBOX 的共性问题。
通信
-
无线网络
OCU 具备的无线通信方式有蜂窝网络、GNSS、Wi-Fi,可能还有蓝牙。蜂窝网络存在被降级的风险;定位存在被欺骗的风险,国内采用多模,仅 GPS 可被欺骗,威胁系数较小;Wi-Fi 层面一是配置安全,比较重要的一点是初始密码的强度,然后是 Wi-Fi 网络下网络隔离以及开放服务的安全。蓝牙主要是协议栈的安全。
-
内网 APN
通过 OCU APN 接入企业内网,由于内网防护较弱,容易被渗透。
-
总线
通过 OCU 总线攻击其他 ECU。
OTA
一般状态下,智能网联汽车中 OTA 请求与固件包的下发是通过 OCU 与 TSP 来实现的。获取到系统权限后,既可以通过分析升级程序或者分析通信流量获取固件包,获取升级包后,分析升级 包可以发现其中的脆弱点进行利用;还能分析出其他 ECU 的升级逻辑,利用升级程序缺陷刷入恶意固件绕过安全限制或植入恶意代码。
以下是一些可能出现问题的点:
- 云端威胁,OTA 平台存在漏洞。
- OTA 固件泄露,泄露的途径有OTA管理平台漏洞、测试包泄露、售后泄露、明文传输截取、逆向程序获取下载地址等。
- 升级程序设计缺陷,如升级包签名验签绕过等。
- OTA 的可用性,在实施软件升级时,若不能保证策略的合理性、提示的有效性,将会严重影响消费者的生命和财产安全,如某车型在长安街上停车一小时,乘客无法操纵车辆,甚至无法下车,给公共交通安全和用户生命安全带来严重隐患。
硬件安全
- 预留未保护的调试接口,如串口、ADB、USB、JTAG 等。
- 存储安全,SOP 封装 Flash 易被提取。
- MCU 代码读保护未开启,可提取固件、动态调试等。
系统/软件安全
- 使用过时的组件,开源组件存在已知漏洞,如 Dnsmasq。
- 未划分用户权限,都以 root 权限运行。
- 软件本身存在的漏洞,如命令注入、缓冲区溢出等。
- 开放的服务存在缺陷,SSH、Telnet 弱口令,私有服务传输敏感信息等。
总结
这篇文章实质上是对 TBOX 的一次安全分析。之所以没有直接讲TBOX,是因为直接讲太过空洞。于是借助 OCU 将 TBOX 实体化,讲一次实际的案例。不同厂家的设计方案虽有不同,但大体还是相似的。遂以小见大,把对 OCU 的安全认知类推到其他 TBOX 上。
相关文章:
车联网安全学习之TBOX
Telematics BOX,简称 T-BOX,也称远程信息处理控制单元(Telematics Control Unit, TCU),集成GPS、外部通信接口、电子处理单元、微控制器、移动通信单元和存储器等功能模块。 TBOX 提供的功能有网络接入、OTA、远程控制…...
【教程】创建NVIDIA Docker共享使用主机的GPU
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 这套是我跑完整理的。直接上干货,复制粘贴即可! # 先安装toolkit sudo apt-get update sudo apt-get install -y ca-certifica…...
tomcat 运行加载机制解析
tomcat 运行加载机制 从tomcat jar包的加载顺序: tomcat的具体运行加载 可以从 start、setclasspath、catalina文件中看出来: start.bat执行 去找bin目录下的catalina.bat,catalina 或去找 bin\setenv.bat以获取标准环境变量,然后去找bin\…...
基于JWT跨语言开发分布式业务系统的挑战与实践:多语言协作的最佳方案
在现代分布式架构下,开发团队往往由来自不同技术栈和开发语言的工程师组成。如何有效地管理这些开发人员的协作,尤其是在实现跨语言的认证与授权机制时,成为了开发者面临的一个重大挑战。JSON Web Token(JWT)作为一种轻…...
Unity在运行状态下,当物体Mesh网格发生变化时,如何让MeshCollider碰撞体也随之实时同步变化?
旧版源代码地址:https://download.csdn.net/download/qq_41603955/90087225?spm1001.2014.3001.5501 旧版效果展示: 新版加上MeshCollider后的效果: 注意:在Unity中,当你动态地更改物体的Mesh时,通常期望…...
数组能排成的最小数
题目描述 输入一个正整数数组,把数组里所有整数拼接起来排成一个数,打印出能拼接出的所有数字中最小的一个。 例如输入数组{3,32,321},则打印出这3个数字能排成的最小数字为321323 分析 3和32哪个数字排前面呢&…...
RNN模型介绍
RNN模型介绍 1.RNN模型介绍1.1什么是RNN模型1.2RNN模型作用1.3RNN模型分类 2.传统RNN模型2.1RNN结构图2.2RNN优缺点 3.LSTM模型3.1什么是LSTM模型3.2LSTM内部结构图3.3使用Pytorch构建LSTM模型3.4LSTM优缺点 4.GRU模型4.1什么是GRU模型4.2GRU内部图4.3使用Pytorch构建GRU模型4.…...
Maven最佳实践
Maven 是一种广泛使用的 Java 项目构建自动化工具。它简化了构建过程并帮助管理依赖关系,使开发人员的工作更轻松。Maven 详细介绍可以参考我写的这篇 Maven 核心概念总结 。 这篇文章不会涉及到 Maven 概念的介绍,主要讨论一些最佳实践、建议和技巧&am…...
Redis的高可用之哨兵模式
Redis哨兵主要是解决Redis主从同步时主数据库宕机问题,使其能够自动进行故障恢复,提高Redis系统的高可用性。 1. 哨兵的作用: 监控:哨兵通过心跳机制监控主库和从库的存活性。 选主:当主库宕机时,哨兵会选举出一个领…...
C# 设计模式--观察者模式 (Observer Pattern)
定义 观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。观察者模式的核心在于解耦主题(被观察者)和观察者之间的依赖关系。 …...
如何使用Java编写Jmeter函数
Jmeter 自带有各种功能丰富的函数,可以帮助我们进行测试,但有时候提供的这些函数并不能满足我们的要求,这时候就需要我们自己来编写一个自定义的函数了。例如我们在测试时,有时候需要填入当前的时间,虽然我们可以使用p…...
Hive 窗口函数与分析函数深度解析:开启大数据分析的新维度
Hive 窗口函数与分析函数深度解析:开启大数据分析的新维度 在当今大数据蓬勃发展的时代,Hive 作为一款强大的数据仓库工具,其窗口函数和分析函数犹如一把把精巧的手术刀,助力数据分析师们精准地剖析海量数据,挖掘出深…...
Echart折线图属性设置 vue2
Echart折线图 官方配置项手册 Documentation - Apache ECharts 下面代码包含:设置标题、线条样式、图例圆圈的样式、显示名称格式、图片保存、增加Y轴目标值 updateChart(data) {const sortedData data.slice().sort((a, b) > new Date(a.deviceTime) - ne…...
蓝桥杯2117砍竹子(简单易懂 包看包会版)
问题描述 这天, 小明在砍竹子, 他面前有 n 棵竹子排成一排, 一开始第 i 棵竹子的 高度为 hi. 他觉得一棵一棵砍太慢了, 决定使用魔法来砍竹子。魔法可以对连续的一 段相同高度的竹子使用, 假设这一段竹子的高度为 H, 那么 用一次魔法可以 把这一段竹子的高度都变为 ⌊H2⌋…...
华为 生产网解决方案,加速制造业数字化转型
华为推出新一代融合架构的生产网解决方案,加速制造业数字化转型-企业频道-东方网 智慧生产网解决方案-华为企业业务 华为面向制造行业升级生产网解决方案。全新一代融合架构,解决了生产数据的孤岛化、烟囱式、数据的价值无法发挥等问题,以促…...
原型模式(Prototype Pattern)——对象克隆、深克隆与浅克隆及适用场景
原型模式(Prototype Pattern)是设计模式中的一种创建型模式,目的是通过复制现有的对象来创建新的对象,而不是通过传统的实例化方式。原型模式常常用于需要创建大量类似对象的场景,可以提高性能并减少资源的消耗。下面将…...
基于Transformer架构的扩散模型
Scalable Diffusion Models with Transformers 本文介绍一篇发表于2023年国际计算机视觉大会(ICCV)的研究论文,该论文提出了一种基于Transformer架构的扩散模型,称为Diffusion Transformers (DiTs)。 通过用Transformer替代传统的…...
服务器上部署前端页面-实现IP+端口/index.html在线访问你的网页
首先一点,不管是那个框架开发的网页前端,最后都需要Build,构建完毕以后都是原始的HTML CSS JS 三样文件! 所以不管用原始的三剑客(HTML CSS JS)开发的前端还是用各类框架开发的前端界面(只是让开发简单…...
2024年华中杯数学建模B题使用行车轨迹估计交通信号灯周期问题解题全过程文档及程序
2024年华中杯数学建模 B题 使用行车轨迹估计交通信号灯周期问题 原题再现 某电子地图服务商希望获取城市路网中所有交通信号灯的红绿周期,以便为司机提供更好的导航服务。由于许多信号灯未接入网络,无法直接从交通管理部门获取所有信号灯的数据&#x…...
【C语言】SWP 文件:临时缓存文件
SWP 文件:临时缓存文件(紧急保护机制) 在 Linux 系统(包括 Ubuntu)中,SWP 文件是一种临时缓存文件,主要用于在编辑器(如 Vim)中紧急保护未保存的工作内容。当系统或编辑…...
【日常记录-Git】git switch
1. 简介 git switch是Git 2.23.0版本引入的一个新命令,用于切换分支和恢复工作树文件。其旨在提供一个更清晰、更直观的分支切换体验,以替代git checkout命令中用于分支切换的部分功能。 2. 常规操作 2.1 切换到已存在的分支 git switch <分支名>…...
Qt学习笔记第51到60讲
第51讲 记事本实现打开功能 回到第24个功能文件Notepad,给UI中的各个控件添加槽函数。 ①开始按钮 void Widget::on_btnOpen_clicked() {QString fileNameQFileDialog::getOpenFileName(this,tr("Open File"),"E:\\6_Qt Projects\\24_Notepad\\fi…...
灵途科技亮相2024世界传感器大会 分享光纤光源技术突破
12月1日至2日,2024世界传感器大会(WSS)在郑州国际会展中心隆重举办,泛自动驾驶领域光电感知专家灵途科技受邀参加“光纤传感器与激光雷达”分论坛,并在大会上带来《激光雷达用一体化光纤光源》专题演讲,同与…...
LeetCode刷题 -- 分治快排
目录 颜色分类题目解析算法原理代码 排序数组题目解析算法原理代码 数组中第K个最大元素题目解析算法原理代码 LCR 159. 库存管理 III题目解析算法原理代码 颜色分类 题目链接 题目解析 数组分为三块 算法原理 1.如果nums[i] 0,left, i下标对应元素交换,…...
pyqtgraph绘制实时更新数据的图
PyQtGraph是一个基于PyQt和NumPy的Python库,它专为实时数据可视化而设计。以绘制0~2π范围的ysin(x)为例,基本用法的代码如下: # codingutf-8import pyqtgraph as pg from pyqtgraph.Qt import QtGui, QtCore import numpy as np# pyqtgraph…...
使用 MATLAB 绘制三维散点图:根据坐标和距离映射点的颜色和大小
在数据可视化中,三维散点图是一种非常直观的方式来展示数据的分布。MATLAB 提供了强大的 scatter3 函数,可以用来绘制三维散点图,而通过调整点的颜色和大小,可以进一步增强图形的表现力。 在本篇博客中,我们将逐步讲解…...
ubuntu离线安装docker
首先下载对应的版本amd64 就是x86的 https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/需要挑选其他版本 https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/下载之后上传到服务器目录,分别执行以下文件 sudo dpkg -…...
iOS如何操作更新推送证书
最近收到一份邮件,应该如何操作呢,证书还是跟以前一样冲钥匙串直接申请吗 Hello, As we announced in October, the Certification Authority (CA) for Apple Push Notification service (APNs) is changing. APNs will update the server certificates in sandbox on January…...
# issue 8 TCP内部原理和UDP编程
TCP 通信三大步骤: 1 三次握手建立连接; 2 开始通信,进行数据交换; 3 四次挥手断开连接; 一、TCP内部原理--三次握手 【第一次握手】套接字A∶"你好,套接字B。我这儿有数据要传给你,建立连接吧。" 【第二次…...
【Linux】-学习笔记08
第五章、DNS域名解析服务器 目录 第五章、DNS域名解析服务器 1.简介 1.1DNS简介 1.2因特网的域名结构 1.3域名服务器的类型划分 1.4DNS域名解析的过程 递归查询(左侧) 迭代查询(右侧) 2.DNS服务器配置 2.1关于服务端 …...
RFdiffusion Denoise类解读
Denoise 类为蛋白质结构扩散模型的实现提供了核心功能,通过灵活的噪声调度、潜力场引导和子结构对齐,使得模型可以生成物理合理的结构序列,并在每个时间步迭代更新蛋白质的坐标和结构信息。 源代码: def get_next_frames(xt, px0, t, diffuser, so3_type, diffusion_mask,…...
HTML5 拖拽 API 深度解析
一、HTML5 拖拽 API 深度解析 1.1 背景与发展 HTML5 的拖拽 API 是为了解决传统拖拽操作复杂而设计的。传统方法依赖鼠标事件和复杂的逻辑计算,而 HTML5 提供了标准化的拖拽事件和数据传递机制,使得开发者能够快速实现从一个元素拖拽到另一个元素的交互…...
Vue 的生命周期钩子函数是什么?常见的生命周期钩子有哪些?
Vue 的生命周期钩子函数 Vue 的生命周期钩子函数是 Vue 组件在不同生命周期阶段自动调用的函数。生命周期分为创建、挂载、更新和销毁等阶段。理解这些钩子函数对于开发和调试 Vue 应用至关重要,因为它们使我们能够在组件生命周期的不同阶段执行特定的操作。 目录…...
uniapp中导入uview或者uview plus
关于SCSS uview-plus依赖SCSS,您必须要安装此插件,否则无法正常运行。 如果您的项目是由HBuilder X创建的,相信已经安装scss插件,如果没有,请在HX菜单的 工具->插件安装中找到"scss/sass编译"插件进行安…...
3D 生成重建017-StyleGaussian用文本或图像对你的3DGS内容进行风格迁移
3D 生成重建017-StyleGaussian用文本或图像对你的3DGS内容进行风格迁移 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 论文 “StyleGaussian: Instant 3D Style Transfer with Gaussian Splatting” 介绍了一种新颖的3D风格迁移方法 StyleGaussian,该方法通…...
【adb】iqoo系统精简垃圾内置应用
免责声明 这个得谨慎点,虽然我验证过两部手机和不同版本的系统,但是总会有特殊的存在、 本教程来自于互联网搜集整理, 按照本教程造成的用户设备硬件或数据损失,本人概不承担任何责任,如您不同意此协议,请不…...
Golang 字符串字面量表示方法
文章目录 1.普通字符串字面量(Double-Quoted String Literals)2.原始字符串字面量(Raw String Literals)3.字节字符串字面量(Byte Slice Literals)4.码值表示字符串字面量Unicode 转义序列UTF8 转义序列十六…...
【uni-app 微信小程序】新版本发布提示用户进行更新
知识准备 uni.getUpdateManager文档介绍 不支持APP与H5,所以在使用的时候要做好平台类型的判断,如何判断,参考条件编译处理多端差异 代码参考 export const updateApp () > {const updateManager uni.getUpdateManager()updateManag…...
Leetcode 739-每日温度
请根据每日 气温 列表 temperatures ,请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高,请在该位置用 0 来代替。 题解(单调递减栈) 什么时候用单调栈呢? 通常是一维数组,要寻找任…...
Gitee配置以及如何将本地项目提交到远程仓库
文章目录 准备远程仓库配置注册新建仓库 配置git 生成ssh,输入以下命令,然后连敲三次回车键配置公钥本地代码上传 准备 1.本地下载git 2.注册远程仓库账号 远程仓库配置 注册 官网:https://gitee.com 完成注册 新建仓库 头像->设置-…...
爬虫项目基础知识详解
文章目录 Python爬虫项目基础知识一、爬虫与数据分析1.1 Python中的requests库Requests 库的安装Requests 库的 get() 方法爬取网页的通用代码框架HTTP 协议及 Requests 库方法Requests 库主要方法解析 1.2 python中的json库1.3 xpath学习之python中lxml库html了解html结构html…...
【Leetcode Top 100 - 扩展】876. 链表的中间结点
问题背景 给你单链表的头结点 h e a d head head,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 数据约束 链表的结点数范围是 [ 1 , 100 ] [1, 100] [1,100] 1 ≤ N o d e . v a l ≤ 100 1 \le Node.val \le 100 1≤…...
16-01、JVM系列之:内存与垃圾回收篇(一)
JVM系列之:内存与垃圾回收篇(一) ##本篇内容概述: 1、JVM结构 2、类加载子系统 3、运行时数据区之:PC寄存器、Java栈、本地方法栈一、JVM与JAVA体系结构 JAVA虚拟机与JAVA语言并没有必然的联系,它只是与特…...
经典蓝牙(BT/EDR)蓝牙配对与连接
经典蓝牙的连接过程包括跳频,扫描,配置交换等过程。对ACL链路以及sco的连接过程也做详细的分析。 1. 为什么不配对便无法建立连接? 任何无线通信技术都存在被监听和破解的可能,蓝牙SIG为了保证蓝牙通信的安全性,采用…...
用 Python 从零开始创建神经网络(十四):L1 和 L2 正则化(L1 and L2 Regularization)
L1 和 L2 正则化(L1 and L2 Regularization) 引言1. Forward Pass2. Backward pass到此为止的全部代码: 引言 正则化方法旨在降低泛化误差。我们首先讨论的正则化形式是L1正则化和L2正则化。L1和L2正则化用于计算一个数值(称为惩…...
特殊的数学性质
一个数模9的结果等于它的每一位数相加和模9...
最长递增子序列&什么是继承性?C++中如何实现继承?继承的好处和注意事项有哪些?
最长递增子序列 方法一:暴力二维dp,初始状态:每个元素至少和自己构成一个上升序列,大小为1,状态转移:找到前面结尾数字小于当前数组元素的最长序列,当前位置的长度就是lenpre1. class Solutio…...
汽车IVI中控开发入门及进阶(三十五):架构QML App Architecture Best Practices
在Qt/QML工程的架构中,架构很重要,虽然本身它有分层,比如QML调用资源文件(图片等)显示GUI界面,后面的CPP文件实现界面逻辑,但是这个分类还有点粗。在实际开发中,界面逻辑也就是基于类cpp的实现,也开始使用各种面向对象的设计模式,实现更加优秀的开发架构,这点尤其在…...
面试题整理(二)
芯冰乐知识星球入口:芯冰乐...
编码及其代码
编码 形成文字所需bit点------有相应代号(编码---有好多种8/16/24/32)都已提前形成好,放哪哪就会形成那个文字 同一个文字在不同编码存的码不一样 用一种编码存的话,如果用另一种编码解析就会出现乱码 Windows默认编码为ANSI …...