经验:从CAN到以太网为主的车载网络架构升级
引言
新能源汽车智能化与网联化的进程中,传统CAN总线已难以满足高带宽、低延迟的通信需求,车载以太网逐步成为新一代电子架构的核心骨干。本文基于工程实践,系统性解析车载以太网的核心技术、协议栈、拓扑设计及工具链升级策略,助力开发者快速实现技术迁移。
随着智能驾驶、舱驾一体化和OTA升级的普及,车载网络正面临信号爆炸、跨域交互、安全冗余三大核心挑战。传统的CAN/LIN架构已无法支撑,工程师需直面以下问题:
- 信号量级:从数百条CAN信号到数千条以太网服务接口,如何管理?
- 跨域通信:摄像头数据如何低延迟传输到座舱屏幕?
- 功能安全:如何确保刹车信号在复杂网络中不被阻塞?
一、车载网络TOP20核心概念科普
- CAN总线
- 定义:控制器局域网,采用差分信号传输,速率最高1Mbps,适用于实时控制(如动力系统)。
- 形象比喻:如同“神经系统”,负责传递关键控制信号。
-
LIN总线
- 定义:低速(20kbps)、低成本总线,用于车门、座椅等非关键控制。
- 特点:单主多从结构,布线简单但可靠性低。
-
FlexRay
- 定义:高速(10Mbps)、高容错总线,支持双通道冗余,适用于线控底盘。
- 局限:成本高,逐渐被以太网替代。
-
车载以太网
- 定义:基于100BASE-T1/1000BASE-T1的单对双绞线技术,速率达1Gbps+,支持全双工通信。
- 优势:带宽高、重量轻、EMC抗干扰强。
-
总线型拓扑
- 结构:所有节点共享一条总线(如CAN)。
- 缺点:单点故障风险,带宽受限。
-
星型拓扑
- 结构:中央交换机连接各域控制器(如以太网骨干)。
- 优势:高带宽、故障隔离。
-
区域控制器架构
- 定义:将ECU按物理位置分组,通过区域控制器聚合信号,减少线束复杂度。
- 案例:特斯拉Model 3采用此架构,线束减少50%。
-
AUTOSAR
- 定义:汽车开放系统架构,标准化ECU软件接口,分CP(Classic Platform)和AP(Adaptive Platform)。
- CP:基于C语言,用于MCU(如车身控制)。
- AP:基于C++,支持SOA(面向服务架构),用于高性能SOC(如自动驾驶)。
-
SOME/IP
- 定义:面向服务的中间件协议,支持事件通知、远程过程调用(RPC),用于以太网服务通信。
- 应用场景:ADAS传感器数据发布、座舱服务交互。
-
DoIP
- 定义:基于IP的诊断协议,支持UDS服务,用于OTA升级和ECU刷写。
- 优势:相比CAN诊断,带宽提升百倍。
-
TSN(时间敏感网络)
- 核心协议:gPTP(时间同步)、AVTP(音视频传输)、802.1Qbv(流量调度)。
- 作用:确保自动驾驶传感器数据低延迟、确定性传输。
-
MACsec
- 定义:基于MAC层的加密技术,保障车载以太网数据完整性及来源真实性。
- 应用:防止ECU通信被篡改(如刹车信号劫持)。
-
功能安全(ISO 26262)
- 要求:ASIL等级划分(A-D),车载网络需满足ASIL-B以上。
- 实现:冗余设计、故障注入测试。
-
Wireshark
- 作用:抓包分析SOME/IP、DoIP报文,需安装专用插件。
-
Vector CANoe
- 功能:支持混合总线(CAN+以太网)仿真,自动化测试协议交互。
二、车载以太网与CAN总线的本质差异
1. 物理层对比
特性 | CAN总线 | 车载以太网 |
---|---|---|
线缆类型 | 双绞线(CAN_H/CAN_L) | 单对非屏蔽双绞线(100Base-T1) |
速率 | 最高1 Mbps | 100 Mbps~10 Gbps |
通信方式 | 半双工(需仲裁) | 全双工(无冲突) |
拓扑结构 | 总线型(共享带宽) | 星型/树型(交换机分配带宽) |
2. 协议栈分层
CAN协议栈:
┌──────────────┐
│ 应用层 (J1939) │
└──────────────┘
│ 数据链路层 (CAN帧) │
└──────────────┘
│ 物理层 (双绞线) │
└──────────────┘车载以太网协议栈:
┌──────────────────┐
│ 应用层 (SOME/IP/DoIP) │
├──────────────────┤
│ 传输层 (TCP/UDP) │
├──────────────────┤
│ 网络层 (IPv4/IPv6) │
├──────────────────┤
│ 数据链路层 (MAC/TSN) │
├──────────────────┤
│ 物理层 (100Base-T1) │
└──────────────────┘
3.通信协议栈:从“能用”到“可靠”
场景 | 协议 | 可靠性设计 | 工具支持 |
---|---|---|---|
实时控制 | CAN FD + TTCAN | 时间触发调度,避免总线仲裁冲突 | CANoe TTCAN插件 |
跨域服务通信 | SOME/IP + DDS | QoS策略(如重试、超时、优先级) | RTI Connext DDS |
高带宽流媒体 | AVTP + TSN | 时间感知整形(IEEE 802.1Qbv) | Spirent TestCenter |
诊断与OTA | DoIP + UDS | 多会话并行、断点续传 | Vector vFlash + ODX Studio |
4.车载以太网与普通TCP/IP的工程差异
1. 协议栈优化
普通TCP/IP协议栈:
应用层 ─ HTTP/FTP
传输层 ─ TCP/UDP
网络层 ─ IP
链路层 ─ Ethernet MAC车载以太网协议栈:
应用层 ─ SOME/IP/DoIP
传输层 ─ TCP/UDP + TSN扩展
网络层 ─ IP + 安全路由
链路层 ─ TSN MAC + 时间同步
2. 时间同步公式
车载以太网gPTP时间同步精度计算:
其中:
- Tmaster:主节点时间戳
- ϵclock:时钟漂移误差(通常<100ns)
三、AUTOSAR协议栈:车载通信的标准化基石
1、AUTOSAR协议栈概述
AUTOSAR(AUTomotive Open System ARchitecture)是一种开放的汽车电子系统架构标准,旨在实现软硬件解耦、模块化开发及跨平台复用。其协议栈是AUTOSAR标准的核心组成部分,为车载网络通信提供标准化接口和功能实现。
核心目标
- 标准化通信接口:统一不同总线(CAN/LIN/以太网)的通信协议,降低ECU开发复杂度。
- 支持多总线协同:通过分层设计实现CAN、LIN、FlexRay、车载以太网的混合通信。
- 功能安全与实时性:满足ISO 26262 ASIL等级要求,确保关键控制信号的确定性传输。
2、AUTOSAR协议栈分层架构
AUTOSAR协议栈遵循分层模型,从底层硬件驱动到上层应用服务逐级抽象:
|------------------------------|
| Application Layer | -- 用户自定义应用(如BMS控制逻辑)
|------------------------------|
| RTE (Runtime Env.) | -- 提供应用与底层通信的标准化接口
|------------------------------|
| Communication Stack | -- 协议栈核心,包含以下子模块:
| |------------------------| |
| | Service Layer | -- 诊断(UDS)、网络管理(NM)、通信管理(Com)
| |------------------------| |
| | Transport Layer | -- 协议数据单元(PDU)的路由与分片
| |------------------------| |
| | Network Layer | -- 网络协议(IP、SOME/IP、DoIP)
| |------------------------| |
| | Data Link Layer | -- 数据链路控制(CAN/LIN/Ethernet MAC)
| |------------------------| |
| | Driver Layer | -- 硬件驱动(CAN控制器、以太网PHY芯片)
|------------------------------|
| Microcontroller | -- 硬件层(MCU、通信控制器)
|------------------------------|
3、核心模块详解
1. 通信管理模块(Communication Stack)
-
PDU Router(协议数据单元路由)
- 功能:负责不同总线间PDU的转发与映射(如CAN信号 → 以太网SOME/IP服务)。
- 应用场景:中央网关将CAN帧转换为以太网报文时,PDU Router定义信号映射规则。
-
Transport Layer(传输层)
- 协议支持:
- CAN Transport Layer:支持UDS over CAN的多帧传输(ISO 15765-2)。
- IP Transport Layer:支持TCP/UDP分片与重组(用于DoIP、SOME/IP)。
- 协议支持:
2. 服务层(Service Layer)
-
诊断服务(Diagnostic)
- 协议:UDS(Unified Diagnostic Services)基于CAN或DoIP(Diagnostic over IP)。
- 功能:故障码读取(DTC)、ECU刷写、参数配置。
- 工具链:Vector CANdela(定义诊断数据库CDD文件)。
-
网络管理(Network Management, NM)
- 功能:控制ECU的睡眠/唤醒状态,优化整车功耗。
- 模式:
- CAN NM:基于周期性网络管理报文(0x4xx系列ID)。
- Ethernet NM:基于AUTOSAR NM over IP(通过UDP广播)。
-
通信管理(Communication Manager, Com)
- 功能:管理信号发送周期、超时检测、信号组过滤。
- 配置方式:通过ARXML文件定义信号属性(如周期、初始值)。
3. 网络协议集成
-
车载以太网协议支持
- TCP/IP协议栈:基于AUTOSAR标准实现IPv4/IPv6、TCP、UDP。
- SOME/IP协议栈:
- 服务发现(SD):动态注册与订阅服务(如ADAS传感器数据发布)。
- 序列化(Serialization):将数据结构转换为二进制流(类似DBC信号编码)。
- DoIP协议栈:支持ISO 13400标准,实现基于IP的诊断通信。
-
传统总线协议支持
- CAN协议栈:支持经典CAN/CAN FD,兼容J1939、ISO-TP。
- LIN协议栈:支持LIN 2.x协议,主节点调度表配置。
4、AUTOSAR协议栈在车载网络中的典型应用
1. 跨总线信号转发(CAN ↔ 以太网)
- 场景:BMS通过CAN发送电池数据 → 网关转换为SOME/IP服务 → 动力域控制器接收。
- 实现步骤:
- 信号定义:在ARXML中定义CAN信号(DBC兼容)与SOME/IP服务接口。
- 路由配置:使用PDU Router将CAN PDU映射到SOME/IP PDU。
- 序列化处理:通过SOME/IP协议栈将信号值序列化为二进制负载。
2. 混合诊断(DoIP + UDS over CAN)
- 场景:通过以太网诊断域控制器(DoIP),同时通过CAN诊断电机控制器(UDS)。
- 实现方式:
- DoIP模块:处理TCP连接、诊断会话管理(0x10服务)。
- CAN Transport Layer:拆分多帧UDS请求(如0x34服务刷写固件)。
3. 时间敏感网络(TSN)支持
- 协议集成:通过AUTOSAR Ethernet Stack扩展TSN协议(如gPTP、AVTP)。
- 配置示例:
- gPTP同步:在ARXML中配置时间同步域(Domain ID)与优先级。
- AVTP流预留:通过协议栈预留带宽,确保摄像头数据低延迟传输。
4、学习资源推荐
- 官方文档:
- AUTOSAR Classic Platform Specification(重点阅读Communication Stack章节)。
- AUTOSAR Ethernet Stack Specification。
- 实践工具:
- Vector免费版CANoe(支持基础AUTOSAR仿真)。
- Wireshark SOME/IP插件(分析以太网通信)。
- 行业案例:
- 特斯拉域控制器中的AUTOSAR应用(公开技术报告)。
- 博世/大陆的AUTOSAR协议栈白皮书。
四、AUTOSAR与车载以太网的结合优势
- 服务化架构(SOA)支持:通过SOME/IP实现松耦合服务交互(如ADAS感知数据订阅)。
- 高带宽利用:以太网协议栈支持大数据传输(如OTA升级包、摄像头原始数据)。
- 功能安全:协议栈内置安全机制(如CRC校验、冗余路由),满足ASIL-D要求。
1. 车载以太网中的AUTOSAR实践
- 协议栈集成:
- SOME/IP集成:AUTOSAR AP通过SOME/IP实现服务发现与RPC,支持ADAS多传感器协同。
- TSN支持:AUTOSAR AP适配gPTP协议,确保时间同步精度<1μs。
- 网关设计:
- 信号转换:AUTOSAR网关将CAN帧封装为SOME/IP服务,减少骨干网负载。
- 安全隔离:通过VLAN划分不同安全域(如动力控制与信息娱乐)。
2. 挑战与趋势
- 性能瓶颈:AUTOSAR CP无法满足高算力需求,AP逐渐成为主流。
- 开源替代:ROS 2、DDS等中间件在自动驾驶领域与AUTOSAR竞争。
五、车载网络拓扑设计:经典与创新并存
1. 主流拓扑对比
拓扑类型 | 结构示意图 | 核心特点 | 典型总线 | 车载应用场景 |
---|---|---|---|---|
总线型 | ECU1—ECU2—ECU3 | - 所有节点共享一条总线 - 低成本、易扩展 - 冲突需仲裁(如CAN的CSMA/CA) | CAN、LIN | 车身控制、动力系统 |
星型 | ECU1—[Hub]—ECU2 | - 中心节点(交换机/网关)集中管理 - 高可靠性(单点故障隔离) - 布线复杂 | 车载以太网 | 域控制器互联(ADAS、座舱) |
树型 | ECU1—[Hub]—[SubHub]—ECU2 | - 分层扩展(骨干+分支) - 带宽按需分配 - 故障排查复杂 | 车载以太网、CAN FD | 中央网关+区域控制器架构 |
菊花链 | ECU1→ECU2→ECU3 | - 节点串联,数据逐级传递 - 布线简单、延迟累积 - 单点故障导致链路中断 | LIN、FlexRay | 车门控制、座椅调节 |
环形 | ECU1→ECU2→ECU3→ECU1 | - 冗余路径(双向环) - 高容错性 - 协议复杂(需令牌管理) | FlexRay、MOST | 高端车型的娱乐系统(已逐渐被以太网替代) |
网状 | ECU1↔ECU2↔ECU3 | - 多路径互联 - 高冗余、低延迟 - 成本高、协议复杂 | 无线通信(V2X) | 车联网(V2V、V2I) |
2.未来趋势:区域架构与TSN
1.中央计算+区域控制(蔚来ES8方案)
传统架构(分布式ECU):
[ECU1]-[ECU2]-[ECU3]---(信号杂乱耦合) 现代架构(域集中+区域控制):
[中央计算单元] │ ├─[智驾域]---(以太网骨干,TSN调度) ├─[座舱域]---(服务化接口,SOME/IP) └─[区域控制器]---(CAN/LIN聚合) │ ├─[左车身]---(车门/灯光LIN子网) └─[右车身]---(座椅/空调CAN子网)
[中央超算平台] │ ├─[智能驾驶]---(10G以太网) ├─[智能座舱]---(TSN AVB) └─[区域网关]---(CAN FD Backbone) │ ├─[前区域]---(激光雷达/摄像头) └─[后区域]---(底盘/动力)
优势:
- 信号聚合:区域控制器将CAN/LIN信号打包为以太网服务,减少骨干网负载。
- 故障隔离:单区域故障不影响全局(如右车身CAN短路,左车身仍可工作)。
量产案例:
- 特斯拉Model 3:通过区域控制器(Body Controller)整合车门、充电口等信号,线束减少50%。
- 蔚来ET7:中央网关+区域控制器实现毫秒级跨域信号转发。
2. 无线通信:剪掉最后一根线
场景:
- V2X:通过5G C-V2X实现车路协同,减少本地感知依赖。
- 无线BMS:宁德时代CTP3.0技术,电池包内部无线通信。
3. TSN技术矩阵
协议 | 功能 | 延迟要求 |
---|---|---|
gPTP | 时间同步 | <1μs |
AVTP | 音视频流传输 | <2ms |
802.1Qbv | 时间感知调度 | 微秒级 |
六、工具链升级:从CAN到以太网的实战指南
1. 硬件工具升级路径
功能需求 | 传统CAN工具 | 车载以太网工具 |
---|---|---|
物理层接口 | UNScanFD-200U | TC1054 Pro(支持T1/CAN FD混合) |
协议分析 | CANalyzer | Wireshark + SOME/IP插件 |
高精度时间同步 | - | Keysight示波器 + gPTP同步模块 |
2. 软件工具链对比
+---------------------+---------------------+-----------------------+
| **功能** | **CAN工具** | **以太网工具** |
+---------------------+---------------------+-----------------------+
| 协议仿真 | CANoe (CAPL) | CANoe Ethernet Option|
| 诊断刷写 | vFlash (CAN) | INCA (DoIP) |
| 自动化测试 | CANoe Test Module | Python + SOME/IP Lib |
+---------------------+---------------------+-----------------------+
- 设计工具:
- Vector DaVinci:配置ARXML文件,定义通信矩阵、服务接口。
- ETAS ISOLAR:AUTOSAR架构设计与代码生成。
- 测试工具:
- Vector CANoe:仿真混合总线通信,验证协议栈交互逻辑。
- Trace32:调试AUTOSAR协议栈底层驱动(如以太网MAC驱动)。
七、总结与学习资源
1. 核心 结论
- 技术迁移:优先升级混合总线硬件(如TC1054 Pro),逐步适配AUTOSAR协议栈。
- 测试重点:TSN实时性、EMC抗干扰、跨总线信号一致性。
- 未来布局:区域架构+TSN是智能驾驶的核心通信底座。
2. 推荐资源
- 书籍:《AUTOSAR规范解读》《车载以太网权威指南》
- 工具:Vector CANoe(以太网插件)、Wireshark SOME/IP解析器
- 社区:AUTOSAR官网、OPEN Alliance技术白皮书
立即行动:从升级混合总线分析仪(如同星TC1054 Pro)开始,迈出征服复杂网络的第一步!
版权声明:原创内容,转载请注明出处。
互动提问:欢迎在评论区留言探讨车载网络设计中的具体挑战!
相关文章:
经验:从CAN到以太网为主的车载网络架构升级
引言 新能源汽车智能化与网联化的进程中,传统CAN总线已难以满足高带宽、低延迟的通信需求,车载以太网逐步成为新一代电子架构的核心骨干。本文基于工程实践,系统性解析车载以太网的核心技术、协议栈、拓扑设计及工具链升级策略,助…...
基于FPGA婴儿安全监护系统(蓝牙小程序监测)
基于FPGA婴儿安全监护系统 前言一、芯片手册阅读二、代码分析1.温湿度驱动2.转速等级设置模块3.电机转速控制模块 总结视频演示 前言 实时监测车内温湿度数据(DTH11温湿度模块)----实时控制风扇驱动速度(结合温湿度进行控制)----…...
嵌入式 C 语言控制语句
目录 1. 控制语句 2. 分支语句 2.1 if else 2.2 switch 3. 循环语句 3.1 goto 3.2 while 循环 3.3 do while 循环 3.4 for 循环 3.5 例题 3.6 循环控制语句 3.6.1 break 3.6.2 continue 1. 控制语句 控制语句分为:顺序语句,分支语句࿰…...
leaflet-velocity风场粒子效果及数据处理
一,后台给到的数据 {"msg": "success","code": 200,"data": {"startLat": 39.3,"endlat": 41.2,"latdel": 0.099999994,"startLon": 115.3,"endLon": 117.50001,"…...
React 实现 JWT 登录验证的最小可运行示例
下面是一个用 React 实现 JWT 登录验证的最小可运行示例,包含: React 前端:登录、保存 Token、获取用户数据。模拟后端:用 mock API(你也可以接真后端)。 🧱 技术栈 React(使用 Vi…...
MySQL报错解决过程
我在调试datagrip的时候,显示拒绝连接,开始的时候,我以为只是服务没有开启,结果到后来在网上搜索各种解决办法无果后,就选择卸载,卸载之后安装新的MySQL 以下就是我的解决过程。 如果只是在使用外置软件&…...
更多 QVariant 使用案例
以下是 QVariant 的其他典型应用场景及代码示例,涵盖更多实际开发需求: 6. 数据库查询结果处理 处理数据库字段的异构数据类型(如整数、字符串、日期等): QSqlQuery query; query.exec("SELECT name, age, crea…...
WPF中解决数据绑定不匹配的问题
在 WPF 开发中,IValueConverter 和 IMultiValueConverter 接口是非常实用的工具,它们允许你在数据绑定过程中对数据进行转换。 IValueConverter 接口示例 IValueConverter 接口用于单值转换,它包含 Convert 和 ConvertBack 两个方法。Conve…...
学习Cesium Entities
🌐 Cesium中的Entities系统趣味学习 📊 Entities系统架构流程图 #mermaid-svg-Lkue5O3gYOkEVSbD {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Lkue5O3gYOkEVSbD .error-icon{fill:#552222;}#mermaid-svg-Lku…...
Spark处理过程-案例数据清洗
(一)需求说明 准备十条符合包含用户信息的文本文件,每行格式为 姓名,年龄,性别,需要清洗掉年龄为空或者非数字的行。 例如: 张三,25,男 李四,,女 王五,30,男 赵六,a,女 孙七,35,男 周八,40,女 吴九,abc,男 郑十,45,女…...
【AI提示词】马斯洛需求分析专家
提示说明 专业的心理学需求分析专家,熟悉马斯洛需求层次理论及其在不同文化背景下的适用性。 提示词 # Role: 马斯洛需求分析专家## Profile - language: 中文 - description: 专业的心理学需求分析专家,熟悉马斯洛需求层次理论及其在不同文化背景下的…...
【WebRTC-13】是在哪,什么时候,创建编解码器?
Android-RTC系列软重启,改变以往细读源代码的方式 改为 带上实际问题分析代码。增加实用性,方便形成肌肉记忆。同时不分种类、不分难易程度,在线征集问题切入点。 问题:编解码器的关键实体类是什么?在哪里&什么时候…...
Kuikly 安装环境篇
1、安装版本号为2024.1.1 的Android studio(如使用高版本的Android studio需要更改JDK版本号为17) 2、JDK版本使用17(如需要修改JDK:Android Studio -> Settings -> Build,Execution,Deployment -> Build Tools -> Gr…...
npm create vite@latest my-vue-app 解读
背景发荧光的样式。 filter属性的学习:filter - CSS:层叠样式表 | MDN 复习一下em 组件的调用: 是msg让“ViteVue”显示出来的!! a标签的targte属性: 组件之间怎么传值的: ,没看懂code标签怎么…...
【本地搭建npm私服】使用Verdaccio
使用Verdaccio搭建本地NPM私服及私有包管理指南 一、Verdaccio安装与基础配置 1. 安装Verdaccio # 全局安装Verdaccio npm install -g verdaccio# 检查版本 verdaccio --version2. 启动服务 verdaccio启动后默认监听4873端口,访问 http://localhost:4873 3. 配…...
Chroma:一个开源的8.9B文生图模型
Chroma 模型讲解 一、模型概述 Chroma 是一个基于 FLUX.1-schnell 的 8.9B 参数模型。它采用了 Apache 2.0 许可证,完全开源,允许任何人使用、修改和在其基础上进行开发,不存在企业限制。该模型目前正在训练中,训练数据集从 20M…...
量子通信技术及其在信息安全中的应用:开启无条件安全通信的新时代
前言 在数字化时代,信息安全是全球关注的焦点。随着传统加密技术面临量子计算等新兴技术的挑战,量子通信作为一种基于量子力学原理的新型通信技术,因其无条件安全的特性而备受关注。量子通信不仅能够有效抵御量子计算的威胁,还能为…...
【杂谈】Godot 2D游戏窗口设置
如切如磋,如琢如磨。 目录 一、引言二、设置(一)基本尺寸(二)拉伸(三)手持设备朝向(四)窗口模式 一、引言 在开发2D游戏时,窗口尺寸的设定是游戏…...
MySQL 8.0 OCP认证考试题库持续更新
MySQL是属于甲骨文Oracle公司的一个世界知名的免费数据库产品,使用的范围广、企业多、人员也多,所以对MySQL认证关注的人也不少,MySQL的证书与Oracle的证书使用的是同一个模板,只是在内部的介绍上稍有不同,MySQL认证考…...
C++GO语言微服务基础技术②
目录 01 protobuf语法回顾 02 protobuf的编译、和其他序列化比较 03 查看protoc编译文件对比自定义封装 04 grpc安装简介 05 grpc服务远程调用作业布置 06 作业-grpc-server端 07 作业-grpc-client端 01 protobuf语法回顾 ## 编译 protobuf> 回顾:C 编译 …...
【使用switch结构输出季节】2021-11-23
缘由用switch语句设计程序一年有12个月-编程语言-CSDN问答 void 使用switch结构输出季节(int y) {//缘由https://ask.csdn.net/questions/7577096?spm1005.2025.3001.5141std::cout << y << "\t";switch (y){case 3: case 4: case 5:std::cout <<…...
【Bootstrap V4系列】学习入门教程之 组件-下拉菜单(Dropdowns)
Bootstrap V4系列 学习入门教程之 组件-下拉菜单(Dropdowns) 下拉菜单(Dropdowns)一、Overview 概述二、Accessibility 可访问性三、Examples3.1 Single button 单按钮3.2 Split button 分割按钮 四、Sizing 尺寸 下拉菜单&#x…...
基础编程题目集 6-8 简单阶乘计算
本题要求实现一个计算非负整数阶乘的简单函数。 函数接口定义: int Factorial( const int N ); 其中N是用户传入的参数,其值不超过12。如果N是非负整数,则该函数必须返回N的阶乘,否则返回0。 裁判测试程序样例: #in…...
解决word里插入公式后打不开的问题
小铃铛最近在写毕业论文了,需要在文档里插入公式,然鹅一插入就卡死了,直接关闭文档后就再也打不开了,报错什么确定磁盘有空间(?总之就是文档损坏的意思) 这个时候不要慌,先把word后缀…...
android studio开发:设置屏幕朝向为竖屏,强制应用的包体始终以竖屏(纵向)展示
在 Android 中,要强制应用的包体始终以竖屏(纵向)展示,可以通过以下几种方式来实现: ✅ 方式一: 在 AndroidManifest.xml 中设置 Activity 的方向,这是最常用的方法。对所有需要强制竖屏的 Ac…...
中国自动驾驶研发解决方案,第一!
4月28日,IDC《中国汽车云市场(2024下半年)跟踪》报告发布,2024下半年中国汽车云市场整体规模达到65.1亿元人民币,同比增长27.4%。IDC认为,自动驾驶技术深化与生成式AI的发展将为汽车云打开新的成长天花板,推动云计算在…...
OpenCv实战笔记(3)基于opencv实现调用摄像头并实时显示画面
一、实现效果 二、实现原理 使用 OpenCV 打开摄像头,持续捕获视频帧,并在一个窗口中实时显示这些帧,直到用户按下 ESC 键退出。整体流程:打开摄像头(cv::VideoCapture)>创建图像显示窗口(cv…...
SpringBoot3 + Druid + DynamicDataSource + PgSQL 连接池优化方案
问题描述 使用 SpringBoot Druid DynamicDataSource PgSQL 时遇到的连接过多未释放问题,一方面是升级DB Core对DB做Tuning,另一方面是优化Druid数据库连接池方案。 关键优化方向 连接泄漏检测与回收 连接有效性验证 合理的连接池大小配置 闲置连接…...
C++ 深入解析 数据结构中的 AVL树的插入 涉及的旋转规则
欢迎来到干货小仓库 "普通程序员Google 超级程序员" 1、AVL 树的概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。 例如在这种情况下&…...
c++中的引用
1,引用的基本使用: 作用:给变量起别名 语法:数据类型 &别名 原名 #include<iostream> using namespace std; int main() {int a10;int &ba;cout<<"a "<<a<<endl;cout<<&quo…...
零拷贝的简单复习
PageCache PageCache是内核缓冲区 DMA 没有DMA前的IO:整个数据的传输过程,都需要 CPU 亲自参与搬运数据的过程,而且这个过程中CPU 是不能做其他事情的 CPU发起IO 磁盘将数据放到磁盘缓冲区 CPU将磁盘缓冲区数据放到内核缓冲区 CPU将内核缓…...
CCF编程能力等级认证 一级 第一次课
介绍 CCF 编程能力等级认证(GESP)为青少年计算机和编程学习者提供学业能力验证的规则和平台,由中国计算机学会发起并主办。 每年考试分四次,时间是每年的3月、6月、9月、12月,以当年每期公布的时间为准。 GESP适用年…...
芯片测试之Open-Short Test全解析:从原理到实战
大家好,我是硅言。最近在开发NORD的AC、DC测试程序,准备和大家聊聊NOR Flash一套完整的AC、DC测试,要测哪些参数,如何测试等等。OS测试(Open-Short Test,开短路测试)作为芯片测试"…...
文件包含 任意文件读取
文件处理漏洞--文件包含 - wizard骑士 - 博客园 1,什么是文件包含 程序开发人员一般会吧重复使用的函数写道单个文件中,需要使用某个函数时直接调用此文件,无需再次编写,文件调用的过程就是文件包含,所以将包含的文件…...
string[字符串中第一个的唯一字符][蓝桥杯]
使用哈希表解决 class Solution { public:int firstUniqChar(string s) {int arr[26];for(int i0;i<s.size();i){arr[s[i]-a];}for(int i0;i<s.size();i){if(arr[s[i]-a]1)return i;}return -1;} };...
sql server限制用户只能访问特定表
一个老系统的sqlserver 数据库需要新建一个用户,并限制这个新用户只能访问指定的几个数据表。 1.夺权 创建用户简单,但是登录用户没有管理权,windows管理员登录用户也没有管理权限,这就需要夺权,在单用户模式下&…...
中级网络工程师知识点2
1.netstat -r:显示路由表信息 netstat -a:显示所有活动的TCP连接数以及计算机正在监听的TCP和UDP端口 netstat -e:显示以太网统计信息 netstat -n:以数字形式显示网络地址和端口号 2.display multicast forwarding-table 命令的作用是查看组播转发表信息。 display multic…...
SQL常用操作大全:复制表、跨库查询、删除重复数据
大家好,欢迎来到程序视点!我是你们的老朋友.小二! SQL常用操作精华总结 表结构与数据操作 复制表结构: SELECT * INTO b FROM a WHERE 1<>1 (SQL Server专用) SELECT TOP 0 * INTO b FROM a (更通用) 拷贝表数据&#…...
辰鳗科技朱越洋:紧扣时代契机,全力投身能源转型战略赛道
国家能源局于4月28日出台的《关于促进能源领域民营经济发展若干举措的通知》(以下简称《通知》),是继2月民营企业座谈会后深化能源领域市场化改革的关键政策,标志着民营经济在“双碳”目标引领下正式进入能源转型的核心赛道。 自…...
java 破解aspose.words 18.6 使用
资源包:https://download.csdn.net/download/qq_36598111/90787167 jar包是破解过的,直接可以使用。 引入jar,要引入本地的,不要直接引入仓库的 <dependency><groupId>com.aspose</groupId><artifactId>…...
基于鸢尾花(Iris)数据集的分类模型
本文适合初学者入门,涵盖了数据加载、预处理、建模、训练和评估的全过程。 🎯 项目目标 使用机器学习算法(如K近邻KNN)对鸢尾花的品种进行分类。 🧰 所需工具 Python 3.x 安装的库: pip install scikit…...
电容知识小结
1.同样是电容,1uf的陶瓷电容和1uf的铝电解电容是不一样的; 2.实际的电容等效为ESR C ESL;ESR等效电阻和ESL等效电感; 3.铝电解电容,瓷片电容和钽电容。 4.电容是容纳和释放电荷的电子器件; 5.电容的工作:…...
基于springboot+vue的校园部门资料管理系统
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7数据库工具:Navicat12开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9 系统展示 系统登录 学生组…...
LeetCode 热题 100 131. 分割回文串
LeetCode 热题 100 | 131. 分割回文串 大家好,今天我们来解决一道经典的回溯算法问题——分割回文串。这道题在 LeetCode 上被标记为中等难度,要求将一个字符串 s 分割成若干个子串,使得每个子串都是回文串,并返回所有可能的分割…...
PostgreSQL 的 pg_start_backup 函数
PostgreSQL 的 pg_start_backup 函数 pg_start_backup 是 PostgreSQL 中用于执行物理备份的关键函数,它通过创建备份模式为数据库文件的一致性备份做准备。以下是该函数的全面解析: 一、函数基础 1. 函数语法 pg_start_backup(label text [, fast bo…...
理解 WKWebView 的 handlesURLScheme: 方法:判断 URL 协议是否由 WebView 默认处理
Overview 在 iOS 开发中,WKWebView 是一个强大的控件,用于在应用内嵌入网页内容。随着 iOS 11.0 的推出,WKWebView 支持自定义 URL 协议处理,这使得开发者可以更灵活地控制网页内的链接请求。今天,我们将详细介绍 han…...
400种行业劳动合同模板
400种行业劳动合同模板 内容介绍 这是一套包含400种行业的专业劳动合同模板合集,涵盖IT、建筑、教育、医疗等多个行业。所有模板均符合最新劳动法规定,可直接下载使用或根据需求修改。 全日制劳动合同 退休返聘协议 劳务合同 劳务,兼职&a…...
MyBatis 动态 SQL 完整笔记
MyBatis 动态 SQL 完整笔记 一、核心动态 SQL 标签与用法 1. 条件控制类标签 <if>:基础条件判断 示例:根据 name 和 age 动态筛选用户 <if test"name ! null and name ! ">AND user_name #{name} </if><choose>/<…...
npm包之serve-favicon
serve-favicon 是一个用于 Node.js 的中间件,它是 Express 框架的一部分。这个中间件的主要作用是提供网站的 favicon(网站图标),通常是一个小的图标文件(如 .ico),显示在浏览器的标签页、书签栏…...
软件工程(五):设计模式
创建型模式(Creational Patterns) 关注对象的创建过程,封装创建逻辑,避免代码耦合。 模式名称作用简述单例模式(Singleton)确保一个类只有一个实例,并提供全局访问点工厂方法模式(…...