动力电池管理系统(BMS)
BMS技术
目录
BMS技术
一、BMS简介
二、BMS主要功能
1、参数检测
2、剩余电量(SOC)估计
3、充放电控制
4、热管理
5、均衡控制
6、故障诊断
7、信息监控
8、参数标定
9、CAN总线接口
三、BMS架构组成
1、BMS的拓扑架构
1、1集中式架构的BMS
1.2、分布式架构的BMS
2、BMS硬件架构
2.1、硬件系统的输入输出
3、BMS软件架构
3.1、基础软件层BSW
3.2、AUTOSAR运行环境RTE
3.3、AUTOSAR应用层
四、BMS核心功能
1、SOC技术
1.1、电芯层级SOC的计算
2、SOH技术
3、SOP技术
4、均衡功能
五、国内BMS企业
一、BMS简介
BMS英文名称Battery Management System,中文名称动力电池管理系统,对电池进行监控和管理的系统,通过对电压、电流、温度以及SOC等参数采集、计算,进而控制电池的充放电过程,实现对电池的保护,提升电池综合性能的管理系统,是连接车载动力电池和电动汽车的重要纽带。
图 1-1 电池管理系统结构图
二、BMS主要功能
1、参数检测
实时采集电池充放电状态。
采集的数据有电池总电压、电池总电流、每包电池测点温度以及单体模块电池电压等。
2、剩余电量(SOC)估计
电池剩余能量相当于传统车的油量。
为了让司机及时了解SOC,系统应即时采集充放电电流、电压等参数,通过相应的算法进行SOC的估计。
3、充放电控制
根据电池的荷电状态控制对电池的充放电。
若某个参数超标,如单体电池电压过高或过低,为保证电池组的正常使用及性能的发挥,系统将切断继电器,停止电池的能量供给。
4、热管理
实时采集每包电池测点温度,通过对散热风扇的控制防止电池温度过高。
5、均衡控制
由于每块电池个体的差异以及使用状态的不同原因,电池在使用过程中不一致性会越来越严重。系统应能判断并自动进行均衡处理。
6、故障诊断
通过对电池参数的采集,系统具有预测电池性能、故障诊断和提前报警等功能。
7、信息监控
电池的主要信息在车载显示终端进行实时显示。
8、参数标定
由于不同的车型使用的电池类型、数量、电池包大小和数量不同,因此系统应具有对车型、车辆编号、电池类型和电池模式等信息标定的功能。BMS通过RS232接口与上位机标定软件进行通信来实现。
9、CAN总线接口
根据整车CAN通信协议,与整车其他系统进行信息共享。
三、BMS架构组成
电池管理系统与电动汽车的动力电池紧密结合在一起,通过传感器对电池的电压、电流、温度进行实时检测,同时还进行漏电检测、热管理、电池均衡管理、报警提醒,计算剩余容量(SOC)、放电功率、报告电池劣化程度(SOH)和剩余容量(SOC)状态,还根据电池的电压电流及温度用算法控制最大输出功率以获得最大行驶里程,以及用算法控制充电机进行最佳电流的充电,通过CAN总线接口与车载总控制器、电机控制器、能量控制系统、车载显示系统等进行实时通信。
典型的电动汽车动力电池组管理系统的工作原理如图2-1所示。
图 2-1 典型的电动汽车动力电池组管理系统的工作原理
1、BMS的拓扑架构
设计电动汽车时,通常需要满足一定的加速能力、爬坡能力和最高车速等动力性指标,若只配备单个动力电池单体作为能量源是远远无法达到要求的。因此,工程上通常将动力电池单体进行串并联成组,以满足车辆设计的技术要求。面对大规模的动力电池管理问题,BMS的拓扑结构非常重要。
BMS的拓扑结构直接影响系统成本、可靠性、安装维护便捷性以及测量准确性。一般情况下,电池监测回路(Battery Monitoring Circuit,BMC)与电池组控制单元(Battery Control Unit,BCU)共同构成硬件电路部分。根据BMC、BCU与动力电池单体三者之间的结构关系,BMS可分为集中式拓扑结构和分布式拓扑结构。
1、1集中式架构的BMS
集中式架构的BMS硬件可分为高压区域和低压区域。
高压区域负责进行单体电池电压的采集、系统总压的采集、绝缘电阻的监测。
低压区域包括了供电电路、CPU电路、CAN通信电路、控制电路等。
集中式BMS拓扑结构中的BMC和BCU集成在单个电路板上,实现采集、计算、安全监控、开关管理、充放电控制以及与整车控制器通信等功能,一般应用于动力电池容量低、总压低、电池系统体积小的场合。集中式BMS拓扑结构如图2-2所示,所有动力电池单体的测量信号被集中传输到单个电路板。
图 2-2 集中式BMS拓扑结构
集中式BMS拓扑结构一般具有如下优点:
- 高速的板内通信有利于保证数据的同步采集。
- 结构紧凑,抗干扰能力强。
- 成本较低,仅使用一个封装即可完成BMS的全部工作。
同时,集中式BMS拓扑结构也存在以下缺点:
- 容易造成大量复杂的布线。
- 当系统的不同部分发生短路和过电流时难以保护电池系统。
- 考虑到高压安全问题,不同通道之间必须保留足够的安全间隙,最终导致电路板的尺寸过大。
- 由于所有的组件都集中在单一电路板上,可扩展性和可维护性差。
1.2、分布式架构的BMS
分布式BMS中的BCU与BMC是分开布置的,如图2-3所示。
BCU主要负责故障检测、电池状态估计、开关管理、充放电控制以及与整车控制器通信;BMC则用于实现电池单体电压、电流和温度的采集以及安全性和一致性的管理。
BCU和BMC之间通过CAN总线连接,任何BMC都可以与BCU通信。此外,每一块BMC电路板都属于CAN总线的一个节点,且单独与对应的动力电池单体建立连接。因此,BMC与BMC之间同样可以建立通信。
图 2-3 分布式BMS拓扑结构
分布式BMS拓扑结构一般具有如下优点:
- 采集与计算功能分离,故障排查容易,计算效率高。
- 极大简化了系统的结构,布置位置灵活,适用性好。
- 可扩展性更强,若想要增加或减少管理的电池数量,只需要在相应电池附近布置或移除BMC电路板,再将它与预留的CAN总线接口相连或解开即可。
同时,分布式BMS拓扑结构也存在以下缺点:
- 部件增多,增加了电路板数量和安装、调试与拆解的步骤。
- 通信网络设计要求高,易形成网络延时,影响采集数据的同步性。
2、BMS硬件架构
2.1、硬件系统的输入输出
硬件系统分为主板与从版,主板的硬件功能架构如下图2-4所示:
图 2-4 BMS硬件系统(主板)
上图为主板的一些输入,输出信号,但是有些为冗余的。对于最小的系统来言,电磁锁信号,温度信号,其它相关的信号可以接到BMS,也可以接到其它的控制单元,比如热管理控制单元,VCU内部等。其中继电器的控制,各个常见控制也不一致,有的控制主正,主负继电器,有的仅仅控制主负一段,另外一端VCU控制,或者快充继电器也是BMS控制。
- 继电器驱动模块:为了实现高压下电功能,需要断开高压回路继电器,从而断开动力电池与电机的高压回路。高压回路一般包含3个继电器,主负继电器、主正继电器和预充继电器。高压上电状态时,主正/主负继电器是闭合状态,预充继电器是断开状态。
- 快充:快充是直流充电桩充电接口,把电网的交流电转化成直流电,输送到电动汽车的快充口,电能直接进入电池充电。
图 2-5 快充示意图
- 慢充:慢充是交流充电桩充电接口,把电网的交流电输入电动汽车的慢充口,经过汽车内部的充电机把交流电转成直流电,在输入电池,完成充电。
图 2-6 慢充示意图
BMS的从板主要是采集电压,温度,具体如下图2-7所示
图 2-7 BMS硬件系统(从板)
其中需要说明的是,电源模块分为两类,一类为低压模块,来源于蓄电池的电压,一类为电压采集芯片的电源,来源于一个采集组的电压,为高压,在将电压信号传递过程中,需要进行隔离。
AFE(analog front end),中文是模拟前端,在BMS里面专指电池采样芯片,用来采集电芯电压和温度等。
图 2-8 菊花链通信架构
3、BMS软件架构
为应对日益复杂的汽车电子软件开发,更新和维护的问题,AUTOSAR-AUTomotive Open System ARchitecture(汽车开放系统架构)联盟应运而生。
在AUTOSAR分层模型中,软件模块及软件模块之间的接口定义更加标准化,使得整车厂、供应商、科研机构之间可以方便的实现软件联合开发,为汽车工业的软件系统框架建立了一套开放标准。
AUTOSAR模型为了实现应用程序和硬件模块之间的分离,AUTOUSAR软件体系包括完全独立于硬件的应用层和与硬件相关的基础软件层,并在两者中间设立了一个运行时环境,从而使得两者分离,形成一个分层体系架构被抽象成四层由上至下依次为:应用层App、运行时环境RTE、基础软件层BSW以及微控制器Microcontroller。
图 2-9 AUTOSAR软件体系
3.1、基础软件层BSW
基础软件层BSW:主要有四部分组成
1)微控制器抽象层:位于AUTOSAR分层模块中BSW的最底层,进一步又可以分为
>微控制器驱动
- 定时器驱动;
- 看门狗;
- 微控制器单元驱动
- 内核测试;
>存储器驱动
- 内部EEPROM;
- 内部Flash;
- RAM测试;
- Flash测试;
>通信驱动
- 以太网;
- FlexRay驱动;
- CAN驱动;
- LIN驱动;
- SPI驱动;
>I/O驱动
- PORT端口驱动;
- DIO读写驱动;
- ADC驱动;
- PWM驱动;
- ICU捕获驱动;
- OCU输出比较单元驱动;
2)ECU抽象层:
- 板载设备抽象;
- ECU板载设备驱动,这些设备不能被看作是传感器或者执行器,比如外部看门狗;
- 存储器硬件抽象,从外围存储器所在位置以及ECU硬件层进行抽象,用户可以通过存储器特性抽象/仿真模块访问存储器驱动;
- 通信硬件抽象
- 传输请求确认;
- 接收指示;
- 错误通知;
- CAN网络启动/停止;
- I/O硬件抽象,传递I/O信号向更高的软件层隐藏ECU硬件属性
3)服务层:服务层是基础软件层的最高层可以实现与应用软件的关联 操作系统,汽车网络通信,内存服务,诊断服务,错误记忆,故障处理 ECU状态和模式管理加密服务。
- 通信服务:J1939协议栈;
- 存储器服务在AUTOSAR架构下所在位置内存服务值包括一个模块即NVRAM它负责非易失性数据的管理;
- 系统服务:多任务实时操作系统(AUTOSAR系统)和错误管理;
4)复杂驱动:复杂驱动跨越于微控制器硬件和RTE之间,其主要任务是整合具有特殊目的的非标准模块将该部分功能嵌入到AUTOSAR基础软件层中从而实现处理复杂传感器以及执行器的特定功能和时间要求。
3.2、AUTOSAR运行环境RTE
运行时环境(Run Time Environment)RTE位于AUTOSAR软件架构的中间层,介于应用层和基础软件层之间实现虚拟功能总线,支持软件组建间、基础软件间、软件组件与基础软件之间的通信。RTE封装了基础软件层的通信和服务,例如操作系统的任务激活、等待等功能,基础软件模块管理、ECU状态管理等服务,实现了对软件生命周期的控制。除此之外RTE还抽象了ECU之间的通信,使用标准化的接口将其统一为软件组件间的通信,使得ECU间的通信如同ECU内部通信。
RTE软件设计的主要对象是软件组和基础软件。为了满足实时性、可靠性以及数据的一致性要求,RTE向软件组件和基础软件提供两种机制:通信机制和并发机制。RTE是AUTOSAR的核心衔接了应用层和基础软件层,为应用层提供标准接口来调用底层资源,使得ECU与具体硬件脱离。
3.3、AUTOSAR应用层
AUTOSAR软件组件
在AUTOSAR中应用软件包含许多独立的单元,即软件组件(Software Component)SWC,各个SWC之间通过定义好的端口相互访问;
AUTOSAR通信
AUTOSAR软件组件提供了定义明确的连接点,即端口。有三种类型的AUTOSAR的端口:
- 需求端口
- 供给端口
- 组合的供给需求
四、BMS核心功能
1、SOC技术
SOC(state of charge)估计算法是电池管理系统(BMS)开发应用的关键技术之一,传统燃油车有油表,能跑多远,看一眼心里就有数了,换成电动汽车,SOC就是电动汽车的“油表”,所以SOC的准确、稳定与否非常重要。
SOC的定义粗略的说就是,SOC=剩余容量/额定容量(满充容量)*100%,更浅显的比喻就是剩余容量就好比汽车里面剩余的油,额定容量就是汽车的油箱容量,SOC就是剩余的“油”和“油箱容量”的比值。这个“剩余的油”和“油箱容量”越精确,用户使用起来就会越放心。
BMS中的SOC的计算其实可以分为三大部分:
- 电芯层级的SOC计算(软件中最真实的SOC计算,不涉及任何滤波处理);
- 模组或者电池包层级的SOC计算(电芯到电池包级别的SOC映射,即电池包的SOC是更接近于电芯的SOCmin还是SOCmax);
- 最终呈现给客户的显示SOC的计算(客户端显示永远在0%-100%,具有放电不增加、充电不减小、不跳变等特性;将电芯的使用区间(20%-90%)映射至0%-100%,还是涉及到滤波算法等)。
1.1、电芯层级SOC的计算
1.1.1开路电压法
电池长时间充分静置后的各项参数相对稳定,此时的开路电压与电池荷电状态间的函数关系也是相对比较稳定的。若想获得电池的荷电状态值,只需测得电池两端的开路电压,并对照OCV-SOC曲线来获取相应信息。
开路电压法的优点是操作简单,只需测量开路电压值对照特性曲线图即可获得荷电状态值。但是其缺点有很多:首先此方法要想获得准确值,必须使电池电压处于相对稳定状态,但电池往往需要长时间的静置,方可处于此状态,从而无法满足实时监测要求,往往应用于电动汽车长时间的驻车时。
1.1.2、安时积分法
式中,SOC0是电池电荷状态的初始电量值;CE是电池的额定容量;I(t)为电池在t时刻的充放电电流;t为充放电的时间;η为充放电效率系数,又被称作库伦效率系数,代表了充放电过程中电池内部的电量耗散,一般以充电放电的倍率和温度修正系数为主。
安时积分法的优点是受电池自身情况的限制相对较小,计算方法简单、可靠,能够对电池的荷电状态进行实时的估算。其缺点是由于安时计量法在控制中属于开环的检测,如果电流的采集精度不高,给定的初始荷电状态有一定误差,伴随着系统运行时间的延伸,之前产生的误差会逐渐累积,从而影响荷电状态的预测结果。并且由于安时积分法只是从外特性来分析荷电状态,多环节存在一定误差。从安时积分法计算公式中可以看出,电池的初始电量对计算结果的准确性影响较大。
为了能使电流测量的精度得到提高,通常采用高性能的电流传感器来测量电流,但这样加大了成本。为此,许多学者在应用安时积分法的同时应用开路电压法,将二者结合。开路电压法用来估算电池的初始荷电状态,安时积分法用于实时估算,并且在算式中添加相关修正因子,以提高计算准确性。
1.1.3、卡尔曼滤波法
与安时积分不一样,卡尔曼滤波算法是一种闭环估算方法,任何时候都适合计算,不需要静置很长时间来获取静态OCV(开路电压)对SOC进行校正,能够消除传感器精度不足对SOC估算带来的影响,能够抑制服从正态分布的噪声,因此目前被广泛应用于电池SOC估算。
卡尔曼滤波的核心思想是:根据当前仪器的“测量值”,上一刻的“预测量”,以及“误差”,来计算得到当前的“最优值”。其亮点是把误差(预测误差和测量误差,通称为噪声)纳入了计算,误差独立存在,不受测量数据的影响。
2、SOH技术
电池SOH表征当前电池相对于新电池存储电能的能力,以百分比的形式表示电池从寿命开始到寿命结束期间所处的状态,用来定量描述当前电池的性能状态。电池的性能指标较多,国内外对SOH有多种定义,概念上缺乏统一,目前SOH的定义主要体现在容量、电量、内阻、循环次数和峰值功率等几个方面。
2.1、容量定义SOH
采用电池容量衰减定义SOH的最多,给出的SOH定义如下:
式中:Caged为电池当前容量;Crated为电池额定容量。
2.2、电量定义SOH
用电量定义SOH与容量定义相似,因为电池的额定容量有实际有效容量和最大容量,电池的实际容量与标称额定容量有些差异,所以从电池放电电量的角度定义SOH。
式中:Qaged-max为当前电池最大放电电量;Qnew-max为新电池最大放电电量。
2.3、内阻定义SOH
电池的内阻增大是电池老化的重要表现,也是电池进一步老化的原因,也有采用内阻定义SOH。
式中:REOL为电池寿命结束时的内阻;RC为当前电池的内阻;Rnew为新电池的内阻。
2.4、剩余循环次数定义SOH
除了采用容量和内阻等电池性能指标定义SOH外,也有用电池剩余的循环次数定义电池的SOH。
式中:Cntremain为电池剩余循环次数;Cnttota为电池的总循环次数。
3、SOP技术
电池SOP描述的是电池功率状态,通常用短时峰值功率值来表示。锂离子电池多工作于车辆起步、加速或刹车状态,为车辆提供或吸收瞬时的功率。
3.1、SOP算法
P换算成中文其实就是功率,就是单位时间能够发出的能量,从电池的角度说就是电压乘以电流。
官方定义:
- 允许最大的瞬时充放电功率
- 允许最大的恒定充放电功率
近几年,各个研究机构和各家新能源整车厂对于SOP的控制量大多分为以下几个:10s内放电功率,30s内放电功率,10s内充电功率,30秒内充电充率。
放电的功率限值很好理解,充电的功率限值主要是对高低温下的充电,以及能量反馈系统的约束。
控制的方式有查表法,以及查表法与等效电路模型结合预测的方法,现阶段大多数厂家用的是温度-SOC决定的功率MAP的二维查表。
电池系统的功率MAP的基础为电芯的功率MAP,电芯的性能决定了电池系统功率MAP所能达到的高度。电芯功率MAP由电芯厂家提出,由PACK厂组成电池后,根据各自的串并组合决定一套适用于各自开发的电池系统的功率初始MAP,严格意义上来说,功率MAP的每个二维点(特定温度-特定SOC)都需要进行测试。
下图为一种电池系统的功率限值
4、均衡功能
电芯均衡,主要是因为目前的电芯一致性不够好,需要通过均衡去改善它。
那么电芯的不一致性表现在哪些方面呢?
主要包括四点:SOC、内阻、自放电电流、容量。但是均衡不能完全解决这4个差异点,均衡只能弥补SOC的差异,顺便解决了自放电不一致的问题。但对于内阻和容量来说,均衡是无能为力的。
均衡是用来消除电芯的SOC差异,理想状态下,它时刻保持每一个电芯的SOC相同,让所有电芯同步到达充放电的上下电压限值,让电池组可利用的容量变大。SOC差异有两种场景,一是电芯容量相同,而SOC不同;二是电芯的容量不同,SOC也不同。
场景一,电芯的容量相同,SOC不同;其中SOC最小的电芯最先到达放电下限(假设25% SOC是下限),SOC最大的电芯最先到达充电上限;在均衡的作用下,所有电芯保持相同的SOC进行充放电。
场景二,电芯的容量不同,SOC也不同;这样容量最少的电芯最先充满电,也最先放完电;在均衡的作用下,所有的电芯保持相同的SOC进行充放电。
均衡功能的实现方案分为两种,主动均衡和被动均衡;
被动均衡(有损均衡)
电阻耗能式,在每一颗单体电池并联一个电阻分流,耗能均衡就是将容量多的电池中多余的能量消耗掉,实现整组电池电压的均衡
主动均衡(无损均衡)
能量转移式,将单体能量高的转移到单体能量低的,或用整组能量补充到单体最低电池,在实施过程中需要一个储能环节,好让能量通过这个环节重新进行分配。
五、国内BMS企业
BMS企业分类 | 公司名称 | BMS主要内容 |
动力电池企业 | 比亚迪股份有限公司 | 以比亚迪秦为例,其电池管理系统除具备基本的电池能量管理、电池热管理功能外,还具有电池单体自动均衡功能。 在整车运行过程中,监控整个电池包的单体性能参数,通过电池均衡功能达到及时、自动保养的目的,极大的减少了动力电池保养的时间成本,延长电池的使用寿命,提升各阶段的性能。 |
合肥国轩高科动力能源股份有限公司 | 合肥国轩高科动力能源股份有限公司自主研制的电池管理系统采用了Central-Distributed系统构架,整个系统由1个中央主控管理单元(CBMU)和多个(理论计算不超过64个)电池管理单元(BMU)及高压强电单元(HVU)组成。 该系统可以实时检测电池组中所有单节电池电压,电池组总电流、总电压、环境温度等多项参数,具有防止电池过充过放等多项保护功能,及信息传输有效、提高电池利用效率,延长电池使用寿命。 | |
专业第三方BMS企业 | 惠州市亿能电子有限公司 | EV02系统主要应用于电动汽车等领域,采用分布式系统拓扑结构,每个管理系统有一个主控单元(BCU),多个检测单元(BMU);EV03系列BMS主要应用于纯电动乘用车和混合动力乘用车电池系统,也可应用于纯电动商用车和混合动力商用车电池系统,采用分散式结构,由主控单元、高压检测单元和若干从控单元组成。 |
上海安科瑞电源管理系统有限公司 | BMS负责检测电池的电压、充放电电流以及温度等信息,根据检测到的电压电流及温度等状态来选择充放电方式以及确定是否需要开启均衡管理,并且产生的异常状态对电池进行保护,确保电池安全使用,延长电池使用寿命。 | |
东莞钜威新能源有限公司 | 钜威PW-EV BMS、PW E-Bus BMS电动汽车电池管理系统主要由电池管理单元BMU和主电池管理系统MBMS以及可配 置的外围传感器和执行器组成,是一种电动汽车或混合动力汽车以及电动大巴专用的电池管理系统,适用于各种类型和成组方式以及成组规模的动力电池组,实现了 动力电池组内主动均衡及动力电池管理,尤其适用于动力电池配置灵活多样的电动汽车等应用场合。 | |
淄博洁力电气设备有限公司 | 力电气BMS电池管理系统根据动力电池的特性,将计算机控制技术、 微电子控制技术、精密测量技术相融合,对动力电池的各种运行参数进行实时监测监控。该系统可以全时监测每节单体电池的电压、电流、温度及工作环境,将获取的采用信息及报警信息通过CAN总线发送到整车控制器或其他控制单元,以确保动力电池安全可靠更优化地工作。 | |
深圳市锐深科技有限公司 | 锐深电池管理系统为各类动 力锂电池组提供完善的保护,实现对电池组电压、电流、温度等多种电池参数的在线监测,对各种故障实时报警并采取迎接处理,动态估计电池组的剩余容量,并可 选配充放电控制功能。同时提供与充电机,电机控制器的CAN总线接口,并已实现协议的共享,进行通讯,将所有信息显示在LED屏上。可通过LED屏来配置 管理系统的参数,提供多种供选的显示单元解决方案,充分考虑整车系统的需求。 |
相关文章:

动力电池管理系统(BMS)
BMS技术 目录 BMS技术 一、BMS简介 二、BMS主要功能 1、参数检测 2、剩余电量(SOC)估计 3、充放电控制 4、热管理 5、均衡控制 6、故障诊断 7、信息监控 8、参数标定 9、CAN总线接口 三、BMS架构组成 1、BMS的拓扑架构 1、1集中式架构的B…...

ChatGPT桌面客户端支持gpt4模型,附使用说明
#软件核心功能: 1、支持OpenAI官方秘钥及API2D双秘钥使用;如果全局魔法,可以自己用官方秘钥;没魔法国内可直接使用API2D秘钥; 2、内置GPT4模型选项,如果你的官方秘钥支持可直接使用;你也可以注册…...

Vivado下时序逻辑模块的仿真
文章目录 D触发器两级D触发器带异步复位的D触发器带异步复位和同步置数的D触发器移位寄存器单口RAM伪双口RAM真双口RAM单口ROM 组合逻辑电路在逻辑功能上特点是任意时刻的输出仅仅取决于当前时刻的输入,与电路原来的状态无关。 时序逻辑在逻辑功能上的特点是任意时刻…...

ThreadLocal的使用方式
1. ThreadLocal的使用方式 (1) 在关联数据类中创建private static ThreadLocal 在下面的类中,私有静态 ThreadLocal 实例(serialNum)为调用该类的静态 SerialNum.get() 方法的每个 线程维护了一个“序列号”,该方法将返回当前…...

全面理解:C++中的指针和迭代器,以及解引用操作符(*)和箭头操作符(->)的用法
指针与迭代器的基础概念 指针: 指针是一种变量,其值为另一种类型的对象在计算机内存中的地址。你可以使用指针来直接访问和操作它指向的对象。指针的使用非常强大,但也很危险,因为你有可能错误地操作内存,这可能会导致…...

Vite 使用学习指南
Vite 的基本概念和特点 Vite 是什么,它的主要特点是什么 Vite 是一个基于 ES modules 的前端构建工具,它的主要特点包括: 快速的冷启动:Vite 采用了基于浏览器原生 ES 模块的开发模式,可以在开发时快速启动应用&…...

【算法训练(day6)】双指针模板
一.双指针算法的由来和使用场景 通常情况下我们可能会遇到在某些可遍历的集合中寻找满足某种性质的字串或元素。这时候我们采取暴力的思路就会面临多重循环。我们可以利用题目中所给的集合并利用其性质将多重循环降成一重循环。光用语言描述可能不太好理解。接下来看几个双指针…...

免费常用的API接口大全
免费常用的API接口大全 OPEN AI : ChatGPT 能够模拟人类的语言行为,与用户进行自然的交互。ChatGPT 可以用于处理多种类型的对话,包括对话机器人、问答系统和客服机器人等。它还可以用于各种自然语言处理任务,比如文本摘要、情感分…...

【HTML】第 2 节 - HTML 标签
欢迎来到博主 Apeiron 的博客,祝您旅程愉快 ! 时止则止,时行则行。动静不失其时,其道光明。 目录 1、缘起 2、标题标签 3、段落标签 4、文本格式化标签 5、图像标签 5.1、基本作用 5.2、属性 6、超链接标签 7、音频标…...

MATLAB算法实战应用案例精讲-【数模应用】残差检验(附Java、python和MATLAB代码)
目录 几个高频面试题目 线性回归残差是否一定满足正态分布? 一般情况 特殊情况...

初学Qt(Day03)
今天概览 今天的目标是写一个动态的彩虹灯 一开始是有思路的。只是写的过程中有太多小bug了,真的是防不胜防 我的思路是: 主界面是一个开始界面,点击开始按钮之后,有一个子界面出现,显示出彩虹灯转动的效果。 内部的执…...

皮卡丘xss之htmlspecialchars、xss之href输出、xss之js输出
1.xss之htmlspecialchars htmlspecialchars()函数的功能如下: htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。 预定义的字符是: (1)& (和号)成为 & (2)…...

ArrayList和LinkedList的区别
ArrayList和Vector使用了数组的实现,可以认为ArrayList或者Vector封装了对内部数组的操作,比如向数组中添加,删除,插入新的元素或者数据的扩展和重定向。 LinkedList使用了循环双向链表数据结构。与基于数组ArrayList相比…...

记录 vue3 webpack 使用 iframe 遇到的坑
需求 我尝试用Vue3写一个自己的主页,把常用的功能集中到主页中,如下图 后发现一个好玩的东西,js实现的在网页底部出现鱼和波浪,如下图,就像想也放到自己的主页中,搜索后发现可以在Vue中用iframe标签直接引…...

华为OD机试真题 Java 实现【去除多余空格】【2023Q1 100分】
一、题目描述 去除文本多余空格,但不去除配对单引号之间的多余空格。给出关键词的起始和结束下标,去除多余空格后刷新关键词的起始和结束下标。 条件约束: 不考虑关键词起始和结束位置为空格的场景;单词的的开始和结束下标保证涵盖一个完整的单词,即一个坐标对开始和结束…...

SAP-MM 条件类型字段解析
01、“定价类型”:定义此条件类型的代码和描述,代码不能重复,描述可更改,根据实际需要,条件类型可定制; 02、“存取顺序”:表示此条件类型在定价时,要到存取顺序号定义的条件表中读…...

C#,码海拾贝(28)——求解“对称正定方程组”的“平方根法”之C#源代码
using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 求解线性方程组的类 LEquations /// 原作 周长发 /// 改编 深度混淆 /// </summary> public static partial class LEquations { /// <summary> /…...

碳纤维单丝外径测试中的纳米分辨率激光衍射法解决方案
摘要:碳纤维单丝热膨胀系数是碳纤维复合材料设计、生产与可靠性和寿命评估的重要参数,本文针对单丝径向高温热膨胀系数测试这一难题提出了相应的解决方案。解决方案的核心内容是基于激光衍射法和高温辐射加热,并采用衍射轮廓拟合技术以及相应…...

服务(第三十二篇)nginx做缓存服务器
nginx作为缓存服务配置语法 1、proxy_cache_path 配置语法(即缓存路径配置语法) Syntax:proxy_cache_path path [levelslevels] [use_temp_pathon|off] keys_zonename:size [inactivetime] [max_sizesize] [manager_filesnumber] [manager_s…...

Java 集合、数组、字符串的相互转换(关于list.toArray(new String[0])的源码分析)
在 Java 中,可以通过以下方式实现集合、数组和字符串之间的相互转换。 一、集合和数组的相互转化 ①、将集合转为数组:(toArray 方法) List<String> list new ArrayList<>(); list.add("apple"); lis…...

Redis的全局命令及相关误区
Redis中所说的数据结构是针对key-value中的value而言的。主要的结构包括String、哈希表、列表、集合等等在redis中存在16个库,涉及到后期的集群搭建只能使用0号库最为方便 查看所有键(支持通配符) keys * keys S*返回当前数据库中的键总数 …...

C++核心编程—类和对象,类的三大特性——封装、继承、多态
纵有疾风起,人生不言弃。本文篇幅较长,如有错误请不吝赐教,感谢支持。 💬文章目录 一.类和对象的概念①什么是对象?②抽象和类1.类的基本概念2.类的声明与定义:3.对象的创建与使用 二.类的封装①为什么有封…...

keep-alive 是 Vue 内置的一个组件,被用来缓存组件实例。
文章目录 简介注意点使用 keep-alive 有以下优缺点优点缺点 简介 keep-alive 是 Vue 内置的一个组件,被用来缓存组件实例。 使用 keep-alive 包裹动态组件时,被包裹的组件实例将会被缓存起来,而不会被销毁,直到 keep-alive 组件…...

(八)Spring之IOC控制反转、DI依赖注入介绍和使用(详解)
文章目录 前言SpringSpring IOC 简介BeanIOC 概述IOC 本质理解 Spring IOC 应用IOC xml装配IOC 依赖注入IOC Bean的作用域 IoC 自动装配Bean 的自动装配注解实现自动装配 IoC 使用注解开发模拟实现Spring IoC 前言 “Spring”在不同的上下文中表示不同的事物。它可以用来引用 …...

凸缺陷 convexityDefects
获取凸包,可以参考我的这篇文章: 凸包(Convex Hull)代码实现案例 获取了凸包之后,可以干什么呢? 凸缺陷凸包与轮廓之间的部分称为凸缺陷。凸缺陷可用来处理手势识别等问题。 通常情况下,使用如…...

c语言编程练习题:7-43 Shuffling Machine
Shuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techniques are seen as weak, and in order to avoid “inside jobs” where employees collaborate with gamblers by performing inadequate shuffles, many casinos empl…...

ffmpeg enum AVChannel枚举解析
AVChannel枚举是在2022-12-20的提交中添加的,对应的版本号是5.1. 这个提交的描述是"avutil/channel_layout: add AVChannel enum and related functions"。 原型 typedef struct AVChannelCustom {enum AVChannel id;char name[16];void *opaque; } AVCh…...

invest模型教程
详情点击链接:invest模型教程——建议收藏 1.生态系统服务 2.InVEST模型 3.InVEST所需数据(分辨率、格式、投影系统等)、获取及标准化预处理 4.InVEST运行 5.ArcGIS工具支撑InVEST模型 5.1ArcGIS数据形式与数据格式、数据格式之间的相互转换…...

LinuxShell编程
Shell编程 Shell的概念介绍 命令解释器 Shell是命令解释器(command interpreter),是Unix操作系统的用户接口,程序从用户接口得到输入信息,shell将用户程序及其输入翻译成操作系统内核(kernel)能够识别的指令&#x…...

stm32学习笔记-11 SPI通信
11 SPI通信 文章目录 11 SPI通信11.1 SPI通信协议11.2 W25Q64简介11.3 实验:软件SPI读写W25Q6411.4 SPI通信外设11.5 实验:硬件SPI读写W25Q64 注:笔记主要参考B站 江科大自化协 教学视频“ STM32入门教程-2023持续更新中”。 注:…...