【面试笔记】单片机软件工程师,工业控制方向(储能)
文章目录
- 1. 基础知识
- 1.1 C语言笔试题
- 1.1.1 用宏定义得到一个数组所含的元素个数
- 1.1.2 定义函数指针从程序固定地址(0)开始执行
- 1.1.3 volatile的含义及作用
- 1.1.4 32位系统,整数7和-7,分别以大端和小端存储,请示意说明
- 1.2 嵌入式基础
- 1.2.1 简述单片机的启动过程
- 1.2.2 简述I2C、SPI、UART、CAN这个几种通讯方式的异同
- 1.2.3 RS485
- 1.2.4 Modbus
- 2. MISRA2012标准
- 3. FreeRTOS
- 4. BMS开发概述
- 4.1 法规解读
- 4.2 模块介绍
- 4.2.1 从控模块
- 4.2.2 主控模块
- 4.2.3 总控模块
- 5. Microchip单片机
1. 基础知识
1.1 C语言笔试题
1.1.1 用宏定义得到一个数组所含的元素个数
char array[30];
#define ARRAY_SIZE(a) (sizeof((a))/sizeof((a[0])))
参考:预处理、const、static与sizeof-使用宏定义得到一个数组所含的元素个数
1.1.2 定义函数指针从程序固定地址(0)开始执行
int main(void)
{void (* func)(void);func = (void (*)()) (0x0000);func();
}
参考:C语言中将绝对地址转换为函数指针以及跳转到内存指定位置处执行的技巧
1.1.3 volatile的含义及作用
直接存取原始内存地址
- 易变的。并不是直接指示该变量可以任意改变。而是告诉编译器,该变量(绑定内存中的值)时可能随时改变的,要注意随时更新,更新的办法是直接从内存读取该值。
- 线程中变量的同步:在本次线程内,当读取一个变量时,为提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中;以后,再取变量值时,就直接从寄存器中取值。
如果变量为未声明为volatile的变量,对于线程中共享的变量,将导致第一个线程改变了该变量的值,并保存在内存地址中(即该段内存的值被改变,程序却继续从寄存器中读取改变之前的值),其他的线程使用的仍然是改变之前的变量值。
volatile的使用:共享内存时,该内存单元可能随时修改,如状态寄存器,中断访问的非自动变量(全局变量)多线程条件变量;
参考:C语言中volatile关键字的作用
1.1.4 32位系统,整数7和-7,分别以大端和小端存储,请示意说明
// 地址:| 低 ---------------------> 高 |
// 大端: 7> 00 00 00 07
// -7> FF FF FF F9
// 小端: 7> 07 00 00 00
// -7> F9 FF FF FF
1.2 嵌入式基础
1.2.1 简述单片机的启动过程
- 上电复位,硬件设置(初始化)堆栈指针 SP=_initial_sp、计数指针 PC= Reset_Handler的值;
- 找到了 Reset_Handler 的地址后,CPU 就从这里开始取指令运行程序,初始化中断向量表;
- 调用 SystemInit 函数,设置系统时钟;
- 调用 __main 函数,软件对 SP 寄存器赋值,完成数据段的重定位、清除 bss 段,初始化栈空间等工作;
- 最终 __main 函数会调用用户的 main 函数,进入到用户程序。
参考:STM32启动过程分析
参考:STM32第二章-启动过程详解
1.2.2 简述I2C、SPI、UART、CAN这个几种通讯方式的异同
参考:I2C总线和通信协议详解
参考:SPI原理超详细讲解—值得一看
参考:【车辆CAN通讯系列】1 CAN通讯基础——物理层概述
参考:【车辆CAN通讯系列】2 CAN通讯基础——数据链路层概述
1.2.3 RS485
- 半双工,多机通信
- 两线制,双绞线
- 低电压,压差 ±(2~6)V
- 理论距离3000m
参考:终于讲透了,史上最详细的RS485串口通讯!
1.2.4 Modbus
- ModBus网络只有一个主机,所有通信都由他发出。
- Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。
- Modbus采用主从方式定时收发数据,在实际使用中如果某Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通。因此,Modbus协议的可靠性较好。
帧结构:
初始结构 = ≥4字节的时间
地址码 = 1 字节
功能码 = 1 字节
数据区 = N 字节
错误校检 = 16位CRC码
结束结构 = ≥4字节的时间
2. MISRA2012标准
TBD.
3. FreeRTOS
- FreeRTOS中的任务永远处于这几个状态中的某一个:运行态、就绪态、阻塞态和挂起态;
- “队列”是用来完成任务与任务、任务与中断之间的消息传递的;
- 清楚二值信号量、计数型信号量、优先级翻转、互斥信号量等概念;
- 抢占式调度:中断任务、高优先级任务、低优先级任务、空闲任务;
参考:安富莱_STM32-V6开发板_FreeRTOS教程(V1.1).pdf
国产单片机移植FreeRTOS
参考:freertos学习01-移植到gd32
4. BMS开发概述
4.1 法规解读
国标要求:
6.1.1 电池管理系统应具有数据采集、通信、报警和保护、控制、状态估算、参数设置、数据存储、计算和统计等功能,宜具有显示功能,锂离子电池、钠离子电池和铅酸(炭)电池管理系统还应具有均衡和绝缘电阻检测功能。
6.1.2 电池管理系统应具有通用性、兼容性、可维护性和可扩展性,宜实现即插即用。
6.1.3 电池管理系统各功能应在逻辑上相互独立,控制策略、执行周期相互匹配。
6.1.4 电池管理系统应设置接地端子,接地电阻不应大于0.1Ω,连接接地线的螺钉和接地点不应用作任何其他机械紧固用途。
6.1.5 电池管理系统线束应采用阻燃材料,电气接口宜采用防呆设计。
6.2.1 锂离子电池、钠离子电池和铅酸(炭)电池管理系统应采集电池单体电压、电池单体温度、电池模
块正负极端子温度、电池簇电压、电池簇电流等参数。
通信
6.3.1 电池管理系统应具有与监控系统、储能变流器、其他管理层级电池管理系统等设备进行信息交互的功能,并宜具有与消防系统、供暖通风与空气调节系统等设备进行信息交互的功能。
6.3.2 电池管理系统与监控系统可采用以太网通信接口,支持Modbus、DI/T634.5104、DL/T860(所有部分)通信协议,宜采用双网冗余通信。
6.3.3 电池管理系统与储能变流器可采用控制器局域网(CAN)、RS485、以太网等通信接口,支持CAN2.0B、Modbus、DL/T860(所有部分)通信协议,且具有一个输出硬接点接口。
6.3.4 不同管理层级电池管理系统之间可采用CAN、RS485、以太网等通信接口,支持CAN2.0B、Modbus等通信协议。
6.3.5 电池管理系统和消防系统、供暖通风与空气调节系统可采用RS485、以太网等通信接口,支持Modbus通信协议。
扩展:一文弄懂电力系统101、103、104、modbus和61850规约
报警分级和处理
6.4.1.1 电池管理系统报警信息应根据严重程度分为一级、二级和三级。其中:
- 一级报警信息为需要立即停机或停电处理的报警信息;
- 二级报警信息为需要立即采取应急处理措施的报警信息;
- 三级报警信息为需要加强监视及一、二级报警复归的报警信息。
6.4.1.2 电池管理系统应在设备状态异常或故障时发出报警信息并上传,报警信息见附录A。
6.4.1.3 在发生一级和二级报警时,电池管理系统应对报警信息前后各10s的模拟量和状态量进行记录。
6.4.2 报警内容
6.4.2.1 锂离子电池、钠离子电池和铅酸(炭)电池管理系统的报警内容应包含:电压越限、电压极差越限、簇电流越限、温度越限、簇内电池单体温度极差越限、绝缘电阻越限、电压采集线异常、温度采集线异常、电池簇充放电回路异常、通信异常等。对于两簇以上电池直流端并联的锂离子电池、钠离子电池和铅酸(炭)电池管理系统还应具有电池簇间环流越限报警。
保护
6.4.3.1 电池管理系统应在一级报警发出后300ms内发出停机指令,并在5s内断开电池簇或电池列充放电回路。
6.4.3.2电池管理系统应在二级报警发出后300ms内发出降低电池运行功率指令。
控制
6.5.1 锂离子电池、钠离子电池和铅酸(炭)电池管理系统应控制电池簇和电池阵列投入和退出。
6.5.2 电池管理系统宜具有通过冷却或加热系统调节电池温度的能力。
6.5.3 液流电池管理系统应控制电解液循环泵的泵速和阀门通断。
能量状态估算
6.6.1 电池管理系统应实时估算电池能量状态(SOE)。
6.6.2 电池管理系统能量状态估算最大允许误差应为土5%。
均衡
锂离子电池、钠离子电池和铅酸(炭)电池管理系统应具有均衡功能,均衡方式可采用主动均衡方式和被动均衡方式中的一种或两种。
绝缘电阻检测
参数设置
6.9.1 电池管理系统应具有对电池系统配置参数、电池正常运行截止参数、异常状态的报警阈值和保护阈值等参数进行设置功能。
6.9.2 电池管理系统应具有参数设置权限功能。
6.9.3 电池管理系统应具有就地参数设置功能,并宜具有远程参数设置功能。
数据存储
6.10.1 电池管理系统应实时存储电池运行状态信息、运行参数信息、报警信息、保护动作信息等数据信息。
6.10.2 电池管理系统应在本地存储不少于120d的数据信息,宜采用队列存储方式。
计算和统计
6.11.1 电池管理系统应具有电池模块电压计算功能。
6.11.2 电池管理系统应具有对累计充放电量、单次充放电量等电量数据统计功能。
6.11.3 电池管理系统应具有电压越限次数、温度越限次数、故障保护事件次数等数据统计功能。
显示
电池管理系统宜具有对电池运行状态、电池运行参数、事件记录等基本信息的显示功能。
4.2 模块介绍
4.2.1 从控模块
从控模块是储能系统电池包的控制和管理核心,支持对电池包进行管理,
采集电池包内单体电池电压、单体温度,对电池运行状态进行分析,单体均衡控制,热管理风扇控制风扇故障检测等
从控模块全部信息通过非隔离 CAN 与主控模块通信,数据上报、指令接受、参数更改、故障上报等
主要功能:
- 支持 24 路单体电压采集,采集范围为 0-5V;
- 支持 24 路单体温度采集,采集范围 -40~+125°C,
- 具备 24 路被动均衡功能,
- 支持 1 路干接点控制:
- 支持 2 路 485 接口,配合主控模块实现对全部从控模块的自动地址编码;
- 支持 1 路非隔离CAN通信(通信频率250kbs),支持CAN2.0协议,符合1SO11898-22016标准和主控模块通信;
- 支持硬件看门狗功能;
- 支持系统运行数据的本地存储;
- 支持在线程序升级;
- 具备本地数据分析能力。
- 产品状态可视化
硬件框图
扩展:AFE芯片做什么用的?AFE(Analog Front End) 模拟前端
软件框图
4.2.2 主控模块
主控模块是储能系统电池簇的控制和管理核心,支持对从控模块管理,包括通信、供电、自动地址编码,获取电池簇内全部单体电压、单体温度值,单体均衡管理,热管理风扇故障检测等。
主控模块内部电路检测电池簇组电压,组对地绝缘电阻,组充/放电电流,内置多维度算法对电池的状态(SOC、SOH等)进行计第和监测;当电池簇内出现告警时,主控模块通过内部电路控制断路器、继电器切断保护,并可通过D1、温度检测电路判断断路器、继电器粘连状态和温度,实现对高压箱内开关预警和保护。
主控模块全部信息通过隔离CAN和总控模块通信,进行数据上报、指令接受、参数更改、故障上报等。
主要功能:
- 支持 2 路总电压(总压和预充电压)采集,采集范围为 0~1500V;
- 支持双量程霍尔传感器采集或 CAN 通讯电流传感器两种电流采集方案,采集范围由霍尔传感器量程决定;
- 支持绝缘采集,检测总正、总负对 PE(机箱或大地)的绝缘值,采集范围为 0~65MΩ;
- 支持 4 路温度采集,其中 1 路箱体温度、3 路继电器温度,采集范围为 -40+125°C;
- 支持 4 路高边驱动输出、4 路低边驱动输出、2 路干接点输出;
- 支持 8 路数字信号输入检测( 4 路高电平、3 路低电平、1 路无源)
- 支持 1 路非隔离 CAN通信(通信频率 250kbs), 支持 CAN2.0协议,符合 IS011898 - 22016标准,和多个从控模块级联通信;
- 支持 1 路隔离 CAN通信(通信频率 250kbs),支持 CAN2.0协议,符合IS011898-22016标准,和总控模块通信;
- 支持 2 路隔离 RS485通信(通信频率9600bps),支持M0DBUS/RTU协议,1路和辅助模块通信,1路进行自动编址;
- 支持板载时钟电源RTC,保存运行时间;
- 支持系统运行数据的本地存储;
- 具备电池(单体、模组、簇)过压、欠压、压差、过流、欠流、过温、低温、温差、短路、绝缘、继电器诊断等告警及保护;
- 内置S0C/S0H多维度算法模型,有效追踪电池真实状态;
- 具备本地数据分析能力、本地告警功能:
- 支持在线程序升级;
- 1个主控模块最大可管理32个从控模块。
- 支持1路RJ45标准网口,预留和总控模块通信
软件框图
4.2.3 总控模块
总控模块是储能系统电池堆的控制和管理核心,对电池堆中所有电池簇的电池信息(电压、温度、电流等参数)收集、分析、判断
存储可快速对电池堆数据进行分析、转换,同时可通过RS485、RS232、DO、DI接口对动环环境(空调、消防、水浸等)数据进行
监控和分析。
主要功能:
- 支持 3 路隔离LAN通信(通信频率10M/100M),支持MODBUS/TCP、DL/860等协议,和EMS系统通信;
- 支持 3 路隔离CAN通信(通信频率250kbs),支持CAN2.0协议,符合1SO11898-22016标准。其中2路和主控模块通信,1路(预留)
和PCS设备通信; - 支持 4 路隔离RS485通信(通信频率9600bps),和环境监测/控制模块通信;
- 支持 1 路隔离RS232通信(通信频率9600bps),和UPS电源通信;
- 支持 4 路隔离干接点,其中1路和PCS设备联动,其中3路控制指示灯;
- 支持 4 路DO高边Relay输出,其中3路控制电操(断路器)合闸、分闸、分离脱扣其中1路预留;
- 支持 8 路D电平检测,检测环境设备和传感器信号,电操控制状态;
- 支持 1 路TF卡外扩存储介质接入,
- 支持 1 路USB接口,支持程序读取升级与数据导出;
- 支持系统运行数据的本地存储:
- 具备电池(单体、模组、簇、堆)过压、欠压、压差、过流、欠流、过温、低温、温差、短路、绝缘、继电器诊断等告警及保护;
- 内置 SOC/SOH 多维度算法模型,有效追踪电池真实状态,
- 具备本地数据分析能力、本地声光告警功能;
- 支持在线程序升级或U盘升级;
- 1 个总控模块最大可管理 30 个主控模块。
5. Microchip单片机
突破性的创新功能和解决方案
• 超低功耗:工作模式下小于35 µA/MHz;休眠模式下小于200 nA
• 高性能:最高600 DMIPS性能(支持双精度硬件浮点)以及最大2 MB双分区闪存和512 KB SRAM
• 外设触摸控制器(PTC):专用硬件外设,提供稳健的电容式触摸解决方案,具备高耐湿性和抗噪性
• 梦游(SleepWalking)技术:外设具有在CPU处于休眠状态时执行预期任务的功能
• 事件系统:支持外设间通信并高效卸载CPU
• 低成本无控制器图形(LCCG)解决方案
• 紧凑型封装选项:芯片级封装,尺寸小至1.9 x 2.4 mm
• 高级模拟和连接外设
• microMIPS™指令集架构(ISA),提高了代码密度
• 双分区闪存选项,支持在线更新
参考:32位单片机系列,业界最广泛且最具创新的32位MCU产品线
相关文章:

【面试笔记】单片机软件工程师,工业控制方向(储能)
文章目录 1. 基础知识1.1 C语言笔试题1.1.1 用宏定义得到一个数组所含的元素个数1.1.2 定义函数指针从程序固定地址(0)开始执行1.1.3 volatile的含义及作用1.1.4 32位系统,整数7和-7,分别以大端和小端存储,请示意说明 1.2 嵌入式基础1.2.1 简…...

基于springboot实现小区团购管理系统项目【项目源码+论文说明】计算机毕业设计
基于springboot实现小区团购管理系统演示 摘要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装小区团购管理软件来…...

基于django | 创建数据库,实现增、删、查的功能
1、在cmd中,输入指令进入mysql终端: mysql -u 用户名 -p 2、输入mysql的密码 3、输入指令,显示出所有的数据库 show databases; 4、输入指令创建表: create table 表名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 5、use …...

数据结构与算法07-图
介绍 图是一种善于处理关系型数据的数据结构,使用它可以很轻松地表示数据之间是如何关联的。 图的实现形式有很多,最简单的方法之一就是用散列表。 friends { "Alice" > ["Bob", "Diana", "Fred"], &quo…...

springboot项目部署需要redis集群问题
本来直接将redis为单独启动模式转为配置 yml文件 spring.redis.cluster.nodes: 192.168.12.78:8001,192.168.12.78:8002,192.168.12.78:8003, java文件 package io.sirc.config;import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.ann…...

JVMの内存泄漏内存溢出案例分析
1、内存溢出 内存溢出指的是程序在申请内存时,没有足够的内存可供分配,导致无法满足程序的内存需求,常见的内存溢出情况包括堆内存溢出(Heap Overflow)和栈溢出(Stack Overflow): …...

v31支架固定方式
CK_Label_v31 夹子固定方式 底座粘贴固定方式...

Jenkins从入门到精通面试题及参考答案(3万字长文)
目录 什么是Jenkins? Jenkins是如何工作的? Jenkins与持续集成(CI)有什么关系?...

如何使用电阻器?创建任何电阻的简单过程
您可能有一整盒E12 系列电阻器,但仍然无法获得足够接近您所需电阻的值。如果您需要 50 kΩ 电阻,接近的电阻是 47 kΩ。当然,这个误差在 10% 以内,但这对于您的应用程序来说可能还不够好。你会怎样做? 本文将介绍一个…...

学Python,看一篇就够
学Python,看一篇就够 python基础注释变量标识符命名规则使用变量认识bugDebug工具打断点 数据类型输出转义字符输入输入语法输入的特点 转换数据类型pycharm交互运算符的分类赋值运算符复合赋值运算符比较运算符逻辑运算符拓展 条件语句单分支语法多分支语法拓展 if…...

数据仓库核心:维度表设计的艺术与实践
文章目录 1. 引言1.1基本概念1.2 维度表定义 2. 设计方法2.1 选择或新建维度2.2 确定维度主维表2.3 确定相关维表2.14 确定维度属性 3. 维度的层次结构3.1 举个例子3.2 什么是数据钻取?3.3 常见的维度层次结构 4. 高级维度策略4.1 维度整合维度整合:构建…...

SQL实验 连接查询和嵌套查询
一、实验目的 1.掌握Management Studio的使用。 2.掌握SQL中连接查询和嵌套查询的使用。 二、实验内容及要求(请同学们尝试每道题使用连接和嵌套两种方式来进行查询,如果可以的话) 1.找出所有任教“数据…...

【JAVA WEB实用技巧与优化方案】Maven自动化构建与Maven 打包技巧
文章目录 一、MavenMaven生命周期介绍maven生命周期命令解析二、如何编写maven打包脚本maven 配置详解setting.xml主要配置元素setting.xml 详细配置使用maven 打包springboot项目maven 引入使用package命令来打包idea打包三、使用shell脚本自动发布四、使用maven不同环境配置加…...

详细分析Mysql中的SQL_MODE基本知识(附Demo讲解)
目录 前言1. 基本知识2. Demo讲解2.1 ONLY_FULL_GROUP_BY2.2 STRICT_TRANS_TABLES2.3 NO_ZERO_IN_DATE2.4 NO_ENGINE_SUBSTITUTION2.5 ANSI_QUOTES 前言 了解Mysql内部的机制有助于辅助开发以及形成整体的架构思维 对于基本的命令行以及优化推荐阅读: 数据库中增…...

vue3+uniapp
1.页面滚动 2.图片懒加载 3.安全区域 4.返回顶部,刷新页面 5.grid布局 place-self: center; 6.模糊效果 7.缩放 8.微信小程序联系客服 9.拨打电话 10.穿透 11.盒子宽度 12.一般文字以及盒子阴影 13.选中文字 14.顶部安全距离 15.onLoad周期函数在setup语法糖执行后…...

组织病理学结合人工智能之后,如何实际应用于临床?|顶刊精析·24-06-06
小罗碎碎念 今天这篇文章选自21年5月发表的nature medicine,标题名为——Deep learning in histopathology: the path to the clinic,这篇文章也是我规划的病理组学文献精析的第三篇,如果你能坚持把七篇都看完,相信你脑海中一定会…...

VCAST创建单元测试工程
1. 设置工作路径 选择工作目录,后面创建的 UT工程 将会生成到这个目录。 2. 新建工程 然后填写 工程名称,选择 编译器,以及设置 基础路径。注意 Base Directory 必须要为代码工程的根目录,否则后面配置环境会失败。 这样工程就创建好了。 把基础路径设置为相对路径。 …...

数据结构之归并排序算法【图文详解】
P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 博主主页:LiUEEEEE …...

设计模式基础
什么是设计模式 设计模式是一种在软件设计过程中反复出现的问题和相应解决方案的描述。它是一种被广泛接受的经验总结,可以帮助开发人员解决常见的设计问题并提高代码的重用性、可维护性和可扩展性。 设计模式可以分为三类: 创建型模式(Crea…...

Glide支持通过url加载本地图标
序言 glide可以在load的时候传入一个资源id来加载本地图标,但是在开发过程中。还得区分数据类型来分别处理。这样的使用成本比较大。希望通过自定义ModelLoader实现通过自定义的url来加载Drawab。降低使用成本 实现 一共四个类 类名作用GlideIcon通过自定义url的…...

网络安全形势与WAF技术分享
我一个朋友的网站,5月份时候被攻击了,然后他找我帮忙看看,我看他的网站、网上查资料,不看不知道,一看吓一跳,最近几年这网络安全形势真是不容乐观,在网上查了一下资料,1、中国信息通…...

【实战JVM】-实战篇-06-GC调优
文章目录 1 GC调优概述1.1 调优指标1.1.1 吞吐量1.1.2 延迟1.1.3 内存使用量 2 GC调优方法2.1 发现问题2.1.1 jstat工具2.1.2 visualvm插件2.1.3 PrometheusGrafana2.1.4 GC Viewer2.1.5 GCeasy 2.2 常见GC模式2.2.1 正常情况2.2.2 缓存对象过多2.2.3 内存泄漏2.2.4 持续FullGC…...

深入解析智慧互联网医院系统源码:医院小程序开发的架构到实现
本篇文章,小编将深入解析智慧互联网医院系统的源码,重点探讨医院小程序开发的架构和实现,旨在为相关开发人员提供指导和参考。 一、架构设计 智慧互联网医院系统的架构设计是整个开发过程的核心,直接影响到系统的性能、扩展性和维…...

获取 Bean 对象更加简单的方式
获取 bean 对象也叫做对象装配,是把对象取出来放到某个类中,有时候也叫对象注⼊。 对象装配(对象注⼊)即DI 实现依赖注入的方式有 3 种: 1. 属性注⼊ 2. 构造⽅法注⼊ 3. Setter 注⼊ 属性注入 属性注⼊是使⽤ Auto…...

ChatGPT基本原理
技术背景与基础: 深度学习:ChatGPT建立在深度学习技术之上,通过复杂的神经网络结构模拟人类的语言处理过程。深度学习使得ChatGPT能够处理海量的文本数据,并从中提取出复杂的语言模式和规律。GPT架构:ChatGPT基于GPT&a…...

几种更新 npm 项目依赖的实用方法
几种更新 npm 项目依赖的实用方法 引言1. 使用 npm update 命令2. 使用 npm-check-updates 工具3. 使用 npm outdated 命令4. 直接手动更新 package.json 文件5. 直接安装最新版本6. 使用自动化工具结语 引言 在软件开发的过程中,我们知道依赖管理是其中一个至关重…...

Python爬虫之简单学习BeautifulSoup库,学习获取的对象常用方法,实战豆瓣Top250
BeautifulSoup是一个非常流行的Python库,广泛应用于网络爬虫开发中,用于解析HTML和XML文档,以便于从中提取所需数据。它是进行网页内容抓取和数据挖掘的强大工具。 功能特性 易于使用: 提供简洁的API,使得即使是对网页结构不熟悉…...

前端怎么debugger排查线上问题
前端怎么debugger排查线上问题 1.问题背景2.问题详细说明3.处理方案a.开发环境怎么找,步骤一样的:b.生产环境怎么找,步骤一样的:还有一种情况就是你的子盒子是使用csshover父盒子出来的, 4.demo地址: 1.问题…...

LabVIEW源程序安全性保护综合方案
LabVIEW源程序安全性保护综合方案 一、硬件加密保护方案 选择和安装硬件设备 选择加密狗和TPM设备:选择Sentinel HASP加密狗和支持TPM(可信平台模块)的计算机主板。 安装驱动和开发工具:安装Sentinel HASP加密狗的驱动程序和开发…...