微知-Mellanox网卡如何导出firmware中的config文件以及文件中有些什么?(ini配置文件,8个区)

背景

Mellanox网卡早期版本以及Engineer simple的DPU支持导出配置文件,该配置文件就是用来告诉firmware的行为。但不是mlxconfig真正设置的文件(mlxconfig -d xxx -e -q应该就是把这个文件读取出来,并且有3个文件,包括默认的,当前的,下次启动的) 。而是生成fw镜像文件使用的配置。理解这个配置文件的作用是能够更底层的辅助理解高性能网卡底底层实现架构

命令

flint -d 06:00.0 dc

说明:
在这里插入图片描述
在这里插入图片描述

效果:
在这里插入图片描述

实战数据

可以看到分了很多域段,根据格式看是使用INI配置文件格式,并且看里面的 iniprep tool,应该是一个ini prepare的工具,打印包括了[]区分的节[SectionName] ,键值对key=value,以及注释; This is a commen以及另外一种注释方式# This is also a comment
节包括了8个节:

cfg
image_info
mfg_info
device_info
boot_record
fw_boot_config
fw_main_config
hw_boot_config
hw_main_config

可以看到包括了:

  • psid的数据:psid = MT_0000000809,关于PSID是什么参考兄弟篇:https://blog.csdn.net/essencelite/article/details/138429032
  • name:就是型号 MBF2M345A-VENOT_ES_Ax
  • 以及psid的描述:NVIDIA BlueField-2 E-Series Eng. sample DPU; 200GbE single-port QSFP56; PCIe Gen4 x16; Secure Boot Disabled; Crypto Enabled; 16GB on-board DDR; 1GbE OOB management (这就是flint和mlxfw工具读取的数据

其他详细看举例:

fw_boot_config 节

  • 比如nv_config.global.pci.settings.num_pfs = 0x1, pf的数量
  • nv_config.global.emulation_nvme_conf.nvme_emu_enable是否开启nvme的emu

hw_boot_config 节

  • 比如 pcie_cfg.pcie_max_speed_supported = 0xf最大速度
[root@one rshim1]# flint -d 06:00.0 dc
;; Generated automatically by iniprep tool on Sun Feb 04 12:18:03 IST 2024 from ./Bluefield-2_MBF2M345A_1p_200g_eth_crypto_ES.prs;; FW version: 24.40.1000;; Mellanox Technologies LTD;;[PS_INFO]
;;Name = MBF2M345A-VENOT_ES_Ax
;;Description = NVIDIA BlueField-2 E-Series Eng. sample DPU; 200GbE single-port QSFP56; PCIe Gen4 x16; Secure Boot Disabled; Crypto Enabled; 16GB on-board DDR; 1GbE OOB management[image_info]
;;;;; This section contains info which is shared by FW and burning toolpsid = MT_0000000809
name = MBF2M345A-VENOT_ES_Ax
description = NVIDIA BlueField-2 E-Series Eng. sample DPU; 200GbE single-port QSFP56; PCIe Gen4 x16; Secure Boot Disabled; Crypto Enabled; 16GB on-board DDR; 1GbE OOB management
prs_name = Bluefield-2_MBF2M345A_1p_200g_eth_crypto_ES.prs[mfg_info]
guids.guids.num_allocated = 8
guids.macs.num_allocated  = 8
[device_info]guids.guids.num_allocated = 8
guids.macs.num_allocated  = 8[boot_record]
;;;;; 1. Boot record endianes: reserved1 is the fist Byte that should be written on the NVRAM (address 0);2. Each line is protected by parity bit (bit 31) the xor of the 32 read bits should be 1arm.opn = MBF2M345A-VENOT_ES
arm.tile_cluster_disable = 0x00[fw_boot_config]
;;;;; boot + iron fw config data
pcie_cfg_data.pci_cfg_space.cfg_hdr.device_id = 41686
pcie_cfg_data.pci_cfg_space.cfg_hdr.subsystem_id = 0x0085
multi_function.mac_for_bmc_required = 0
nv_config.global.pci.settings.num_pfs = 0x1
nv_config.global.pci.capabilities.max_num_pfs = 0x2
nv_config.global.pci.settings.log_vf_uar_bar_size = 0x0
nv_config.global.pci.settings.sriov_en = 1
nv_config.global.pci.settings.total_vfs = 8
nv_config.global.pci.settings.fpp_en = 1
nv_config.port[0].vpi.network_link_type_ib = 0x0
nv_config.port[0].vpi.network_link_type_eth = 0x1
nv_config.port[0].vpi.default_link_type_ib = 0x0
nv_config.port[0].vpi.default_link_type_eth = 0x1
multi_function.num_of_logical_ports = 1
nv_config.global.emulation_nvme_cap.nvme_emu_supported = 1
nv_config.global.emulation_nvme_cap.nvme_emu_max_num_pf = 2
nv_config.global.emulation_nvme_conf.nvme_emu_enable = 0
nv_config.global.emulation_nvme_conf.nvme_emu_num_pf = 1
nv_config.global.emulation_nvme_conf.nvme_emu_vendor_id = 0x15b3
nv_config.global.emulation_nvme_conf.nvme_emu_device_id = 0x6001[fw_main_config]
management.bf_alarm_temp_thresh  = 0x57
management.bf_relax_temp_thresh = 0x50
;;;;; plastic fw config data
phy_fw_main_config.phy_shomron.port0_width = 2
leds.port_leds_gt_mode = 1
leds.leds_high_low_speed_support = 0
leds.led_control_supported_by_mux = 0
phy_fw_main_config.phy_shomron.lcl[0].eth_speeds_supported.Speed1Gb = 0x1
phy_fw_main_config.phy_shomron.lcl[0].eth_speeds_supported.Speed10Gb = 0x1
phy_fw_main_config.phy_shomron.lcl[0].eth_speeds_supported.Speed25Gb = 0x1
phy_fw_main_config.phy_shomron.lcl[0].eth_speeds_supported.Speed40Gb = 0x1
phy_fw_main_config.phy_shomron.lcl[0].eth_speeds_supported.Speed50Gb = 0x1
phy_fw_main_config.phy_shomron.lcl[0].eth_speeds_supported.Speed50Gb_Pam4 = 0x1
phy_fw_main_config.phy_shomron.lcl[0].eth_speeds_supported.Speed100Gb = 0x1
phy_fw_main_config.phy_shomron.lcl[0].eth_speeds_supported.Speed100Gb_Pam4 = 0x1
phy_fw_main_config.phy_shomron.lcl[0].eth_speeds_supported.Speed200Gb = 0x1
host_management.ncsi_ini.num_channels_per_pkg = 1
host_management.ncsi_ini.supported_pkg_id = 0
host_management.ncsi_ini.rmii_en = 1
host_management.ncsi_ini.hw_arbitration_en = 0x1
host_management.ncsi_ini.num_of_bmc = 1
host_management.mctp_ini.smbus_enable = 0x4
host_management.mctp_ini.nic_slave_addr = 0x32
host_management.mctp_ini.nic_eid = 0
host_management.mctp_ini.pci_enable = 0x1
host_management.pldm_ini.pldm_supported_features.platform_event_message = 1
host_management.pldm_ini.pldm_supported_features.firmware_update = 1
host_management.pldm_ini.pldm_supported_features.redfish = 1
host_management.pldm_ini.pldm_sensor_rec_handle_en.rh_adapter_rde_pdr = 1
host_management.pldm_ini.pldm_sensor_rec_handle_en.rh_port_collection_rde_pdr = 1
host_management.pldm_ini.pldm_sensor_rec_handle_en.rh_dev_func_collection_rde_pdr = 1
host_management.pldm_ini.pldm_sensor_rec_handle_en.rh_port_rde_pdr = 1
host_management.pldm_ini.pldm_sensor_rec_handle_en.rh_dev_func_rde_pdr = 1[hw_boot_config]
;;;;; boot and iron hw and board config data
pcie_cfg.pcie_max_width_supported  = 0x10
pcie_cfg.pcie_max_speed_supported = 0xf
pcie_cfg.pcie_tx_polarity = 0xFFFF
multi_host_en = 0
socket_direct_en = 0
pcie_cfg.receiver_detect_en = 1;;;;; gpios
;;;;; gpio ARM_PCIE_ERROR
gpios.functions.gpio_func[248].mapping= 523
gpios.functions.gpio_func[248].reverse_polarity= 0
gpios.configurations.gpios[523].gpio_config_en= 1
gpios.configurations.gpios[523].mode= 1
gpios.configurations.gpios[523].pull_up= 0
gpios.configurations.gpios[523].pull_en= 0
gpios.configurations.gpios[523].functional_enable= 0;;;;; gpio ARM_INT_REQgpios.functions.gpio_func[188].mapping= 520
gpios.functions.gpio_func[188].reverse_polarity= 0
gpios.configurations.gpios[520].gpio_config_en= 1
gpios.configurations.gpios[520].mode= 1
gpios.configurations.gpios[520].pull_up= 0
gpios.configurations.gpios[520].pull_en= 0
gpios.configurations.gpios[520].functional_enable= 0;;;;; gpio ARM_INT_ACKgpios.functions.gpio_func[189].mapping= 521
gpios.functions.gpio_func[189].reverse_polarity= 0
gpios.configurations.gpios[521].gpio_config_en= 1
gpios.configurations.gpios[521].mode= 1
gpios.configurations.gpios[521].pull_up= 0
gpios.configurations.gpios[521].pull_en= 0
gpios.configurations.gpios[521].functional_enable= 0;;;;; gpio ARM_BOOT_PROGRESSgpios.functions.gpio_func[190].mapping= 512
gpios.functions.gpio_func[190].reverse_polarity= 0
gpios.configurations.gpios[512].gpio_config_en= 1
gpios.configurations.gpios[512].mode= 1
gpios.configurations.gpios[512].pull_up= 0
gpios.configurations.gpios[512].pull_en= 0
gpios.configurations.gpios[512].functional_enable= 0
gpios.configurations.gpios[513].gpio_config_en= 1
gpios.configurations.gpios[513].mode= 1
gpios.configurations.gpios[513].pull_up= 0
gpios.configurations.gpios[513].pull_en= 0
gpios.configurations.gpios[513].functional_enable= 0
gpios.configurations.gpios[514].gpio_config_en= 1
gpios.configurations.gpios[514].mode= 1
gpios.configurations.gpios[514].pull_up= 0
gpios.configurations.gpios[514].pull_en= 0
gpios.configurations.gpios[514].functional_enable= 0
gpios.configurations.gpios[515].gpio_config_en= 1
gpios.configurations.gpios[515].mode= 1
gpios.configurations.gpios[515].pull_up= 0
gpios.configurations.gpios[515].pull_en= 0
gpios.configurations.gpios[515].functional_enable= 0
gpios.configurations.gpios[516].gpio_config_en= 1
gpios.configurations.gpios[516].mode= 1
gpios.configurations.gpios[516].pull_up= 0
gpios.configurations.gpios[516].pull_en= 0
gpios.configurations.gpios[516].functional_enable= 0
gpios.configurations.gpios[517].gpio_config_en= 1
gpios.configurations.gpios[517].mode= 1
gpios.configurations.gpios[517].pull_up= 0
gpios.configurations.gpios[517].pull_en= 0
gpios.configurations.gpios[517].functional_enable= 0
gpios.configurations.gpios[518].gpio_config_en= 1
gpios.configurations.gpios[518].mode= 1
gpios.configurations.gpios[518].pull_up= 0
gpios.configurations.gpios[518].pull_en= 0
gpios.configurations.gpios[518].functional_enable= 0
gpios.configurations.gpios[519].gpio_config_en= 1
gpios.configurations.gpios[519].mode= 1
gpios.configurations.gpios[519].pull_up= 0
gpios.configurations.gpios[519].pull_en= 0
gpios.configurations.gpios[519].functional_enable= 0;;;;; gpio ARM_SHDN_REQ
gpios.functions.gpio_func[208].mapping= 522
gpios.functions.gpio_func[208].reverse_polarity= 0
gpios.configurations.gpios[522].gpio_config_en= 1
gpios.configurations.gpios[522].mode= 1
gpios.configurations.gpios[522].pull_up= 0
gpios.configurations.gpios[522].pull_en= 0
gpios.configurations.gpios[522].functional_enable= 0;;;;; gpio ARM_THERMAL_STATE
gpios.functions.gpio_func[245].mapping= 532
gpios.functions.gpio_func[245].reverse_polarity= 0
gpios.configurations.gpios[532].gpio_config_en= 1
gpios.configurations.gpios[532].mode= 1
gpios.configurations.gpios[532].def_val= 1
gpios.configurations.gpios[532].pull_up= 0
gpios.configurations.gpios[532].pull_en= 0
gpios.configurations.gpios[532].functional_enable= 0;;;;; gpio ARM_THERMAL_STATE_VALID
gpios.functions.gpio_func[246].mapping= 535
gpios.functions.gpio_func[246].reverse_polarity= 0
gpios.configurations.gpios[535].gpio_config_en= 1
gpios.configurations.gpios[535].mode= 1
gpios.configurations.gpios[535].def_val= 0
gpios.configurations.gpios[535].pull_up= 0
gpios.configurations.gpios[535].pull_en= 0
gpios.configurations.gpios[535].functional_enable= 0;;;;; gpio PRSNT
gpios.functions.gpio_func[1].mapping= 38
gpios.functions.gpio_func[1].reverse_polarity= 1
gpios.configurations.gpios[38].gpio_config_en= 1
gpios.configurations.gpios[38].mode= 0
gpios.configurations.gpios[38].pull_up= 1
gpios.configurations.gpios[38].pull_en= 1
gpios.configurations.gpios[38].functional_enable= 0;;;;; gpio INT
gpios.functions.gpio_func[2].mapping= 21
gpios.functions.gpio_func[2].reverse_polarity= 1
gpios.configurations.gpios[21].gpio_config_en= 1
gpios.configurations.gpios[21].mode= 0
gpios.configurations.gpios[21].pull_up= 1
gpios.configurations.gpios[21].pull_en= 1
gpios.configurations.gpios[21].functional_enable= 0;;;;; gpio RESET
gpios.functions.gpio_func[3].mapping= 33
gpios.functions.gpio_func[3].reverse_polarity= 1
gpios.configurations.gpios[33].gpio_config_en= 1
gpios.configurations.gpios[33].mode= 1
gpios.configurations.gpios[33].def_val= 0
gpios.configurations.gpios[33].pull_up= 1
gpios.configurations.gpios[33].pull_en= 1
gpios.configurations.gpios[33].functional_enable= 0;;;;; gpio FAN_PWM_CTRL
gpios.functions.gpio_func[20].mapping= 42
gpios.functions.gpio_func[20].reverse_polarity= 0
gpios.configurations.gpios[42].gpio_config_en= 1
gpios.configurations.gpios[42].mode= 1
gpios.configurations.gpios[42].def_val= 0
gpios.configurations.gpios[42].pull_up= 0
gpios.configurations.gpios[42].pull_en= 1
gpios.configurations.gpios[42].functional_enable= 2;;;;; gpio PWR_EN_PORT0
gpios.functions.gpio_func[26].mapping= 41
gpios.functions.gpio_func[26].reverse_polarity= 0
gpios.configurations.gpios[41].gpio_config_en= 1
gpios.configurations.gpios[41].mode= 1
gpios.configurations.gpios[41].def_val= 0
gpios.configurations.gpios[41].pull_up= 0
gpios.configurations.gpios[41].pull_en= 1
gpios.configurations.gpios[41].functional_enable= 0;;;;; gpio PHY_LED_PORT0
gpios.functions.gpio_func[32].mapping= 0
gpios.functions.gpio_func[32].reverse_polarity= 1
gpios.configurations.gpios[0].gpio_config_en= 1
gpios.configurations.gpios[0].mode= 2
gpios.configurations.gpios[0].def_val= 1
gpios.configurations.gpios[0].pull_up= 1
gpios.configurations.gpios[0].pull_en= 1
gpios.configurations.gpios[0].functional_enable= 0;;;;; gpio LOGIC_LED_PORT0
gpios.functions.gpio_func[34].mapping= 1
gpios.functions.gpio_func[34].reverse_polarity= 1
gpios.configurations.gpios[1].gpio_config_en= 1
gpios.configurations.gpios[1].mode= 2
gpios.configurations.gpios[1].def_val= 1
gpios.configurations.gpios[1].pull_up= 1
gpios.configurations.gpios[1].pull_en= 1
gpios.configurations.gpios[1].functional_enable= 0;;;;; gpio WAKE0
gpios.functions.gpio_func[37].mapping= 13
gpios.functions.gpio_func[37].reverse_polarity= 1
gpios.configurations.gpios[13].gpio_config_en= 1
gpios.configurations.gpios[13].mode= 1
gpios.configurations.gpios[13].def_val= 1
gpios.configurations.gpios[13].pull_up= 1
gpios.configurations.gpios[13].pull_en= 1
gpios.configurations.gpios[13].functional_enable= 0;;;;; gpio SOCKET_DIRECT_MULTI-HOST_STRAPPING
gpios.functions.gpio_func[55].mapping= 37
gpios.functions.gpio_func[55].reverse_polarity= 1;;;;; gpio PERST0_ON_ASIC
gpios.functions.gpio_func[86].mapping= 36
gpios.functions.gpio_func[86].reverse_polarity= 1
gpios.configurations.gpios[36].gpio_config_en= 1
gpios.configurations.gpios[36].mode= 0
gpios.configurations.gpios[36].pull_up= 0
gpios.configurations.gpios[36].pull_en= 1;;;;; gpio FAN_TACHO
gpios.functions.gpio_func[100].mapping= 43;;;;; gpio LOW_PWR_PORT0
gpios.functions.gpio_func[126].mapping= 32;;;;; gpio PWR_GOOD_P0
gpios.functions.gpio_func[135].mapping= 40
gpios.functions.gpio_func[135].reverse_polarity= 0
gpios.configurations.gpios[40].gpio_config_en= 1
gpios.configurations.gpios[40].mode= 0
gpios.configurations.gpios[40].pull_up= 1
gpios.configurations.gpios[40].pull_en= 1
gpios.configurations.gpios[40].functional_enable= 0[hw_main_config]
;;;;; plastic hw and board config data
boards_management.board_power_consumption_1p = 31800;;;;; modules;;;;; module 0
module.num[0].label_port= 1
module.num[0].type= 1
module.num[0].m2l.tx.lane[0].serdes= 7
module.num[0].m2l.rx.lane[0].serdes= 4
module.num[0].m2l.tx.lane[0].polarity= 1
module.num[0].m2l.rx.lane[0].polarity= 0
module.num[0].m2l.rx.lane[0].local_lane = 0
module.num[0].m2l.tx.lane[0].local_lane = 0
module.num[0].m2l.rx.lane[0].local_port = 0
module.num[0].m2l.tx.lane[0].local_port = 0
module.num[0].m2l.tx.lane[1].serdes= 6
module.num[0].m2l.rx.lane[1].serdes= 5
module.num[0].m2l.tx.lane[1].polarity= 0
module.num[0].m2l.rx.lane[1].polarity= 1
module.num[0].m2l.rx.lane[1].local_lane = 1
module.num[0].m2l.tx.lane[1].local_lane = 1
module.num[0].m2l.rx.lane[1].local_port = 0
module.num[0].m2l.tx.lane[1].local_port = 0
module.num[0].m2l.tx.lane[2].serdes= 5
module.num[0].m2l.rx.lane[2].serdes= 6
module.num[0].m2l.tx.lane[2].polarity= 0
module.num[0].m2l.rx.lane[2].polarity= 1
module.num[0].m2l.rx.lane[2].local_lane = 2
module.num[0].m2l.tx.lane[2].local_lane = 2
module.num[0].m2l.rx.lane[2].local_port = 0
module.num[0].m2l.tx.lane[2].local_port = 0
module.num[0].m2l.tx.lane[3].serdes= 4
module.num[0].m2l.rx.lane[3].serdes= 7
module.num[0].m2l.tx.lane[3].polarity= 1
module.num[0].m2l.rx.lane[3].polarity= 0
module.num[0].m2l.rx.lane[3].local_lane = 3
module.num[0].m2l.tx.lane[3].local_lane = 3
module.num[0].m2l.rx.lane[3].local_port = 0
module.num[0].m2l.tx.lane[3].local_port = 0
module.num[0].smbus_slv_indx= 1
module.num[0].module_power_level_supported = 7;;;;; I2C Devices;;;;; QSFP module 1
i2c_devices.i2c_device[1].slave_addr= 0x50
i2c_devices.i2c_device[1].gw_idx= 1
i2c_devices.i2c_device[1].type= 4;;;;; VRD
i2c_devices.i2c_device[4].slave_addr= 0x69
i2c_devices.i2c_device[4].gw_idx= 4;;;;; Viper I2C slave
i2c_devices.i2c_device[5].slave_addr= 0x48
i2c_devices.i2c_device[5].gw_idx= 0;;;;; SMBUS(BMC)
i2c_devices.i2c_device[10].gw_idx= 2
i2c_devices.i2c_device[10].type= 12
i2c_devices.i2c_device[10].pec_en= 1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/54986.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebGl学习使用attribute变量绘制一个水平移动的点

在WebGL编程中,attribute变量是一种特殊类型的变量,用于从客户端传递数据到顶点着色器。这些数据通常包括顶点的位置、颜色、纹理坐标等,它们是与每个顶点直接相关的信息。attribute变量在顶点着色器中声明,并且对于每个顶点来说都…

【linux】信号(下)

8. 阻塞信号 (一)信号其他相关常见概念 实际执行信号的处理动作称为信号递达(Delivery)信号从产生到递达之间的状态,称为信号未决(Pending)进程可以选择阻塞 (Block )某个信号被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作(即被阻塞的信…

如何在阿里云一键部署FlowiseAI

什么是FlowiseAI FlowiseAI 是一个开源的低代码开发工具,专为开发者构建定制的语言学习模型(LLM)应用而设计。 通过其拖放式界面,用户可以轻松创建和管理AI驱动的交互式应用,如聊天机器人和数据分析工具。 它基于Lang…

c++速成之从string类中获取那些知识

温馨提示:本篇文章依旧是c速成系列的文章,因为从这里开始,内容就已经开始复杂,但博主还是以是什么,怎么用的原则继续给大家讲解知识点,希望大家能够耐心看完,并给博主留个三连,博主先…

Redis-缓存过期淘汰策略

缓存淘汰策略 生产上redis内存设置为多少 设置为最大内存的 3/4 redis 会占用物理机多少内存 默认大小是 0,64 位系统下表示不限制内存大小,32位系统表示 3G 如何设置修改redis内存大小 config get maxmemory 查看修改方式 配置文件 单位是字节 2.…

深入Postman- 自动化篇

前言 在前两篇博文《Postman使用 - 基础篇》《玩转Postman:进阶篇》中,我们介绍了 Postman 作为一款专业接口测试工具在接口测试中的主要用法以及它强大的变量、脚本功能,给测试工作人员完成接口的手工测试带来了极大的便利。其实在自动化测试上,Postman 也能进行良好的支…

校车购票微信小程序的设计与实现(lw+演示+源码+运行)

摘 要 由于APP软件在开发以及运营上面所需成本较高,而用户手机需要安装各种APP软件,因此占用用户过多的手机存储空间,导致用户手机运行缓慢,体验度比较差,进而导致用户会卸载非必要的APP,倒逼管理者必须改…

软考《信息系统运行管理员》- 4.1信息系统软件运维概述

4.1信息系统软件运维概述 文章目录 4.1信息系统软件运维概述信息系统软件运维的概念信息系统软件的可维护性及维护类型对软件可维护性的度量可以从以下几个方面进行:软件维护分类: 信息系统软件运维的体系1.**需求驱动**2.**运维流程**3.**运维过程**4.*…

斯坦福 CS229 I 机器学习 I 构建大型语言模型 (LLMs)

1. Pretraining -> GPT3 1.1. Task & loss 1.1.1. 训练 LLMs 时的关键点 对于 LLMs 的训练来说,Architecture(架构)、Training algorithm/loss(训练算法/损失函数)、Data(数据)、Evalu…

两种方式创建Vue项目

文章目录 引言利用Vue命令创建Vue项目准备工作安装Vue CLI创建Vue项目方法一:使用vue init命令方法二:使用vue create命令启动Vue项目 利用Vite工具创建Vue项目概述利用Vite创建项目启动项目 结语 引言 大家好,今天我将向大家展示如何使用不…

【layui】多文件上传组件实现

插件预览效果&#xff1a; 需要引入layui的脚本文件layui.js和样式文件layui.css html代码&#xff1a; <div class"layui-input-block"><div class"layui-upload-list"><table class"layui-table"><colgroup><col…

vue3中如何更改当前类的文件名称

首先&#xff0c;使用script指定文件名称 <template><div class"person"><h2>姓名&#xff1a;{{ name }}</h2><h2>年龄&#xff1a;{{ age }}</h2><button click"showTel">查看联系方式</button><bu…

VS2017 编译 SQLite3 动态库

首先官方下载源码: Tags sqlite/sqlite (github.com) 1.安装 VS2017 community edition 2.打开VS2017命令行工具 3.安装TCL 开发库,推荐 TCL 9.0 先下载源码: Tcl/Tk 9.0 使用vs2017编译tcl&

【STM32-HAL库】实现微秒、毫秒、纳秒延时。(STM32F4系列)(附带工程下载链接)

使用了本代码后不能使用HAL库自带的HAL_Delay函数 使用了本代码后不能使用HAL库自带的HAL_Delay函数 使用了本代码后不能使用HAL库自带的HAL_Delay函数 一、新建工程 可以参考我的新建工程系列教程 stm32-HAL库cubeMX新建工程教程&#xff08;以F103C8T6为例&#xff09;ht…

基于IDEA+SpringBoot+Vue+Uniapp的投票评选小程序系统的详细设计和实现

2. 详细视频演示 文章底部名片&#xff0c;联系我获取更详细的演示视频 3. 论文参考 4. 项目运行截图 代码运行效果图 代码运行效果图 代码运行效果图 代码运行效果图 代码运行效果图 5. 技术框架 5.1 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框…

Flink 批作业如何在 Master 节点出错重启后恢复执行进度?

摘要&#xff1a;本文撰写自阿里云研发工程师李俊睿&#xff08;昕程&#xff09;&#xff0c;主要介绍 Flink 1.20 版本中引入了批作业在 JM failover 后的进度恢复功能。主要分为以下四个内容&#xff1a; 背景解决思路使用效果如何启用 一、背景 在 Flink 1.20 版本之前&am…

extern “C“ 的作用、C++ 和 C 编译的不同、C++ 编译过程的五个主要阶段

在 C 中&#xff0c;如果需要从 C 语言导入函数或与 C 代码交互&#xff0c;需要使用 extern "C" 关键字。这是因为 C 和 C 在编译过程中的 符号命名机制&#xff08;即 "名称修饰" 或 "name mangling"&#xff09;不同。 1. extern "C&qu…

2014年国赛高教杯数学建模D题储药柜的设计解题全过程文档及程序

2014年国赛高教杯数学建模 D题 储药柜的设计 储药柜的结构类似于书橱&#xff0c;通常由若干个横向隔板和竖向隔板将储药柜分割成若干个储药槽(如图1所示)。为保证药品分拣的准确率&#xff0c;防止发药错误&#xff0c;一个储药槽内只能摆放同一种药品。药品在储药槽中的排列…

【机器学习】金融预测 —— 风险管理与股市预测

我的主页&#xff1a;2的n次方_ 在金融领域&#xff0c;机器学习&#xff08;ML&#xff09;已经成为了不可或缺的工具。金融预测&#xff0c;尤其是风险管理和股市预测&#xff0c;涉及海量数据和复杂模式的分析&#xff0c;而这些正是机器学习擅长处理的领域。通过分析历…

Sentinel最全笔记,详细使用步骤教程清单

一、Sentinel的基本功能 1、流量控制 流量控制在网络传输中是一个常用的概念&#xff0c;它用于调整网络包的发送数据。然而&#xff0c;从系统稳定性角度考虑&#xff0c;在处理请求的速度上&#xff0c;也有非常多的讲究。任意时间到来的请求往往是随机不可控的&#xff0c;…