LVGL Video控件和Radiobtn控件详解

LVGL Video控件和Radiobtn控件详解

  • 一、 Video控件详解
    • 1. 概述
    • 2. 创建和初始化
    • 3. 基本属性设置
    • 4. 视频控制
    • 5. 回调函数
    • 6. 高级功能
    • 7. 注意事项
  • 二、Radiobtn控件详解
    • 1. 概述
    • 2. 创建和初始化
    • 3. 属性设置
    • 4. 状态控制
    • 5. 组管理
    • 6. 事件处理
    • 7. 样式设置
    • 8. 注意事项
  • 三、效果展示
  • 四、源码分享

一、 Video控件详解

1. 概述

  • 功能lv_video 是 LVGL 提供的一个用于播放视频的控件。
  • 依赖:需要外部的视频解码库(如 FFmpeg)来处理视频文件。

2. 创建和初始化

  • 创建
    lv_obj_t * video = lv_video_create(lv_scr_act());
    
  • 初始化
    • 设置视频源:
      lv_video_set_src(video, "path/to/video.mp4");
      

3. 基本属性设置

  • 大小
    lv_obj_set_size(video, width, height);
    
  • 位置
    lv_obj_set_pos(video, x, y);
    

4. 视频控制

  • 播放
    lv_video_start(video);
    
  • 暂停
    lv_video_pause(video);
    
  • 停止
    lv_video_stop(video);
    
  • 跳转到指定时间
    lv_video_seek(video, time_in_ms);
    

5. 回调函数

  • 事件回调
    static void video_event_cb(lv_event_t * e) {lv_event_code_t code = lv_event_get_code(e);lv_obj_t * obj = lv_event_get_target(e);if (code == LV_EVENT_PLAYBACK_FINISHED) {// 视频播放结束}
    }lv_obj_add_event_cb(video, video_event_cb, LV_EVENT_ALL, NULL);
    

6. 高级功能

  • 音量控制
    lv_video_set_volume(video, volume); // 0-100
    
  • 循环播放
    lv_video_set_loop(video, true); // 或 false
    

7. 注意事项

  • 性能:视频播放可能对系统资源消耗较大,确保硬件支持。
  • 兼容性:确保使用的视频格式与解码库兼容。

二、Radiobtn控件详解

1. 概述

  • 功能lv_radio 控件用于在多个选项中选择一个。
  • 特点:单选按钮,一次只能选择一个选项。

2. 创建和初始化

  • 创建

    lv_obj_t * radio = lv_radio_create(lv_scr_act());
    
  • 初始化

    • 设置文本:
      lv_radio_set_text(radio, "Option 1");
      

3. 属性设置

  • 大小

    lv_obj_set_size(radio, width, height);
    
  • 位置

    lv_obj_set_pos(radio, x, y);
    
  • 对齐方式

    lv_obj_align(radio, LV_ALIGN_CENTER, 0, 0);
    

4. 状态控制

  • 选中状态

    • 选中:

      lv_radio_on(radio, LV_ANIM_ON);
      
    • 取消选中:

      lv_radio_off(radio, LV_ANIM_ON);
      
  • 检查状态

    bool is_checked = lv_radio_is_checked(radio);
    

5. 组管理

  • 创建组

    lv_group_t * group = lv_group_create();
    
  • 添加到组

    lv_group_add_obj(group, radio);
    
  • 切换选中项

    lv_group_focus_obj(radio);
    

6. 事件处理

  • 事件回调
    static void radio_event_cb(lv_event_t * e) {lv_event_code_t code = lv_event_get_code(e);lv_obj_t * obj = lv_event_get_target(e);if (code == LV_EVENT_VALUE_CHANGED) {if (lv_radio_is_checked(obj)) {// 处理选中事件}}
    }lv_obj_add_event_cb(radio, radio_event_cb, LV_EVENT_ALL, NULL);
    

7. 样式设置

  • 默认样式

    lv_obj_set_style_bg_color(radio, lv_color_hex(0x00FF00), 0);
    
  • 选中样式

    lv_obj_set_style_bg_color(radio, lv_color_hex(0xFF0000), LV_STATE_CHECKED);
    

8. 注意事项

  • 互斥性:同一组内的单选按钮是互斥的,即一次只能有一个被选中。
  • 布局:合理安排单选按钮的位置和大小,确保用户界面友好。

三、效果展示

在这里插入图片描述

四、源码分享

ui.h

typedef struct
{lv_obj_t *screen;bool screen_del;lv_obj_t *screen_radiobtn_1;lv_obj_t *screen_radiobtn_1_item0;lv_obj_t *screen_radiobtn_1_item1;lv_obj_t *screen_radiobtn_1_item2;lv_obj_t *screen_video_1;
}lv_ui;

ui.c

#include "lvgl.h"
#include <stdio.h>
#include "gui_guider.h"
#include "events_init.h"
#include "widgets_init.h"
#include "custom.h"void setup_scr_screen(lv_ui *ui)
{//Write codes screenui->screen = lv_obj_create(NULL);lv_obj_set_size(ui->screen, 800, 480);lv_obj_set_scrollbar_mode(ui->screen, LV_SCROLLBAR_MODE_OFF);//Write style for screen, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.lv_obj_set_style_bg_opa(ui->screen, 255, LV_PART_MAIN|LV_STATE_DEFAULT);lv_obj_set_style_bg_color(ui->screen, lv_color_hex(0x13e6d2), LV_PART_MAIN|LV_STATE_DEFAULT);lv_obj_set_style_bg_grad_dir(ui->screen, LV_GRAD_DIR_NONE, LV_PART_MAIN|LV_STATE_DEFAULT);//Write codes screen_radiobtn_1ui->screen_radiobtn_1 = lv_radiobtn_create(ui->screen);ui->screen_radiobtn_1_item0 =lv_radiobtn_add_item(ui->screen_radiobtn_1, "radio1");ui->screen_radiobtn_1_item1 =lv_radiobtn_add_item(ui->screen_radiobtn_1, "radio2");ui->screen_radiobtn_1_item2 =lv_radiobtn_add_item(ui->screen_radiobtn_1, "radio3");lv_obj_set_pos(ui->screen_radiobtn_1, 96, 130);lv_obj_set_size(ui->screen_radiobtn_1, 201, 235);//Write style state: LV_STATE_DEFAULT for &style_screen_radiobtn_1_main_main_defaultstatic lv_style_t style_screen_radiobtn_1_main_main_default;ui_init_style(&style_screen_radiobtn_1_main_main_default);lv_style_set_pad_top(&style_screen_radiobtn_1_main_main_default, 5);lv_style_set_pad_left(&style_screen_radiobtn_1_main_main_default, 5);lv_style_set_pad_right(&style_screen_radiobtn_1_main_main_default, 5);lv_style_set_pad_bottom(&style_screen_radiobtn_1_main_main_default, 5);lv_style_set_border_width(&style_screen_radiobtn_1_main_main_default, 1);lv_style_set_border_opa(&style_screen_radiobtn_1_main_main_default, 0);lv_style_set_border_color(&style_screen_radiobtn_1_main_main_default, lv_color_hex(0xe1e6ee));lv_style_set_border_side(&style_screen_radiobtn_1_main_main_default, LV_BORDER_SIDE_FULL);lv_style_set_radius(&style_screen_radiobtn_1_main_main_default, 6);lv_style_set_bg_opa(&style_screen_radiobtn_1_main_main_default, 255);lv_style_set_bg_color(&style_screen_radiobtn_1_main_main_default, lv_color_hex(0x2195f6));lv_style_set_bg_grad_dir(&style_screen_radiobtn_1_main_main_default, LV_GRAD_DIR_NONE);lv_style_set_shadow_width(&style_screen_radiobtn_1_main_main_default, 0);lv_obj_add_style(ui->screen_radiobtn_1, &style_screen_radiobtn_1_main_main_default, LV_PART_MAIN|LV_STATE_DEFAULT);//Write style state: LV_STATE_DEFAULT for &style_screen_radiobtn_1_extra_btns_main_defaultstatic lv_style_t style_screen_radiobtn_1_extra_btns_main_default;ui_init_style(&style_screen_radiobtn_1_extra_btns_main_default);lv_style_set_pad_top(&style_screen_radiobtn_1_extra_btns_main_default, 3);lv_style_set_pad_right(&style_screen_radiobtn_1_extra_btns_main_default, 0);lv_style_set_pad_bottom(&style_screen_radiobtn_1_extra_btns_main_default, 0);lv_style_set_pad_left(&style_screen_radiobtn_1_extra_btns_main_default, 0);lv_style_set_text_color(&style_screen_radiobtn_1_extra_btns_main_default, lv_color_hex(0xffffff));lv_style_set_text_font(&style_screen_radiobtn_1_extra_btns_main_default, &lv_font_montserratMedium_16);lv_style_set_text_opa(&style_screen_radiobtn_1_extra_btns_main_default, 255);lv_style_set_text_letter_space(&style_screen_radiobtn_1_extra_btns_main_default, 2);lv_style_set_radius(&style_screen_radiobtn_1_extra_btns_main_default, 6);lv_style_set_bg_opa(&style_screen_radiobtn_1_extra_btns_main_default, 0);lv_obj_add_style(ui->screen_radiobtn_1_item2, &style_screen_radiobtn_1_extra_btns_main_default, LV_PART_MAIN|LV_STATE_DEFAULT);lv_obj_add_style(ui->screen_radiobtn_1_item1, &style_screen_radiobtn_1_extra_btns_main_default, LV_PART_MAIN|LV_STATE_DEFAULT);lv_obj_add_style(ui->screen_radiobtn_1_item0, &style_screen_radiobtn_1_extra_btns_main_default, LV_PART_MAIN|LV_STATE_DEFAULT);//Write style state: LV_STATE_DEFAULT for &style_screen_radiobtn_1_extra_btns_indicator_defaultstatic lv_style_t style_screen_radiobtn_1_extra_btns_indicator_default;ui_init_style(&style_screen_radiobtn_1_extra_btns_indicator_default);lv_style_set_border_width(&style_screen_radiobtn_1_extra_btns_indicator_default, 2);lv_style_set_border_opa(&style_screen_radiobtn_1_extra_btns_indicator_default, 255);lv_style_set_border_color(&style_screen_radiobtn_1_extra_btns_indicator_default, lv_color_hex(0x5cd624));lv_style_set_border_side(&style_screen_radiobtn_1_extra_btns_indicator_default, LV_BORDER_SIDE_FULL);lv_style_set_radius(&style_screen_radiobtn_1_extra_btns_indicator_default, 20);lv_style_set_bg_opa(&style_screen_radiobtn_1_extra_btns_indicator_default, 255);lv_style_set_bg_color(&style_screen_radiobtn_1_extra_btns_indicator_default, lv_color_hex(0xffffff));lv_style_set_bg_grad_dir(&style_screen_radiobtn_1_extra_btns_indicator_default, LV_GRAD_DIR_NONE);lv_obj_add_style(ui->screen_radiobtn_1_item2, &style_screen_radiobtn_1_extra_btns_indicator_default, LV_PART_INDICATOR|LV_STATE_DEFAULT);lv_obj_add_style(ui->screen_radiobtn_1_item1, &style_screen_radiobtn_1_extra_btns_indicator_default, LV_PART_INDICATOR|LV_STATE_DEFAULT);lv_obj_add_style(ui->screen_radiobtn_1_item0, &style_screen_radiobtn_1_extra_btns_indicator_default, LV_PART_INDICATOR|LV_STATE_DEFAULT);//Write style state: LV_STATE_PRESSED for &style_screen_radiobtn_1_extra_btns_indicator_pressedstatic lv_style_t style_screen_radiobtn_1_extra_btns_indicator_pressed;ui_init_style(&style_screen_radiobtn_1_extra_btns_indicator_pressed);lv_style_set_border_width(&style_screen_radiobtn_1_extra_btns_indicator_pressed, 2);lv_style_set_border_opa(&style_screen_radiobtn_1_extra_btns_indicator_pressed, 255);lv_style_set_border_color(&style_screen_radiobtn_1_extra_btns_indicator_pressed, lv_color_hex(0x5cd624));lv_style_set_border_side(&style_screen_radiobtn_1_extra_btns_indicator_pressed, LV_BORDER_SIDE_FULL);lv_style_set_radius(&style_screen_radiobtn_1_extra_btns_indicator_pressed, 20);lv_style_set_bg_opa(&style_screen_radiobtn_1_extra_btns_indicator_pressed, 255);lv_style_set_bg_color(&style_screen_radiobtn_1_extra_btns_indicator_pressed, lv_color_hex(0xffffff));lv_style_set_bg_grad_dir(&style_screen_radiobtn_1_extra_btns_indicator_pressed, LV_GRAD_DIR_NONE);lv_obj_add_style(ui->screen_radiobtn_1_item2, &style_screen_radiobtn_1_extra_btns_indicator_pressed, LV_PART_INDICATOR|LV_STATE_PRESSED);lv_obj_add_style(ui->screen_radiobtn_1_item1, &style_screen_radiobtn_1_extra_btns_indicator_pressed, LV_PART_INDICATOR|LV_STATE_PRESSED);lv_obj_add_style(ui->screen_radiobtn_1_item0, &style_screen_radiobtn_1_extra_btns_indicator_pressed, LV_PART_INDICATOR|LV_STATE_PRESSED);//Write style state: LV_STATE_CHECKED for &style_screen_radiobtn_1_extra_btns_indicator_checkedstatic lv_style_t style_screen_radiobtn_1_extra_btns_indicator_checked;ui_init_style(&style_screen_radiobtn_1_extra_btns_indicator_checked);lv_style_set_border_width(&style_screen_radiobtn_1_extra_btns_indicator_checked, 2);lv_style_set_border_opa(&style_screen_radiobtn_1_extra_btns_indicator_checked, 255);lv_style_set_border_color(&style_screen_radiobtn_1_extra_btns_indicator_checked, lv_color_hex(0x5cd624));lv_style_set_border_side(&style_screen_radiobtn_1_extra_btns_indicator_checked, LV_BORDER_SIDE_FULL);lv_style_set_radius(&style_screen_radiobtn_1_extra_btns_indicator_checked, 20);lv_style_set_bg_opa(&style_screen_radiobtn_1_extra_btns_indicator_checked, 255);lv_style_set_bg_color(&style_screen_radiobtn_1_extra_btns_indicator_checked, lv_color_hex(0xffffff));lv_style_set_bg_grad_dir(&style_screen_radiobtn_1_extra_btns_indicator_checked, LV_GRAD_DIR_NONE);lv_obj_add_style(ui->screen_radiobtn_1_item2, &style_screen_radiobtn_1_extra_btns_indicator_checked, LV_PART_INDICATOR|LV_STATE_CHECKED);lv_obj_add_style(ui->screen_radiobtn_1_item1, &style_screen_radiobtn_1_extra_btns_indicator_checked, LV_PART_INDICATOR|LV_STATE_CHECKED);lv_obj_add_style(ui->screen_radiobtn_1_item0, &style_screen_radiobtn_1_extra_btns_indicator_checked, LV_PART_INDICATOR|LV_STATE_CHECKED);//Write style state: LV_STATE_CHECKED | LV_STATE_PRESSED for &style_screen_radiobtn_1_extra_btns_indicator_checked_pressedstatic lv_style_t style_screen_radiobtn_1_extra_btns_indicator_checked_pressed;ui_init_style(&style_screen_radiobtn_1_extra_btns_indicator_checked_pressed);lv_style_set_border_width(&style_screen_radiobtn_1_extra_btns_indicator_checked_pressed, 2);lv_style_set_border_opa(&style_screen_radiobtn_1_extra_btns_indicator_checked_pressed, 255);lv_style_set_border_color(&style_screen_radiobtn_1_extra_btns_indicator_checked_pressed, lv_color_hex(0x5cd624));lv_style_set_border_side(&style_screen_radiobtn_1_extra_btns_indicator_checked_pressed, LV_BORDER_SIDE_FULL);lv_style_set_radius(&style_screen_radiobtn_1_extra_btns_indicator_checked_pressed, 20);lv_style_set_bg_opa(&style_screen_radiobtn_1_extra_btns_indicator_checked_pressed, 255);lv_style_set_bg_color(&style_screen_radiobtn_1_extra_btns_indicator_checked_pressed, lv_color_hex(0xffffff));lv_style_set_bg_grad_dir(&style_screen_radiobtn_1_extra_btns_indicator_checked_pressed, LV_GRAD_DIR_NONE);lv_obj_add_style(ui->screen_radiobtn_1_item2, &style_screen_radiobtn_1_extra_btns_indicator_checked_pressed, LV_PART_INDICATOR|LV_STATE_CHECKED | LV_STATE_PRESSED);lv_obj_add_style(ui->screen_radiobtn_1_item1, &style_screen_radiobtn_1_extra_btns_indicator_checked_pressed, LV_PART_INDICATOR|LV_STATE_CHECKED | LV_STATE_PRESSED);lv_obj_add_style(ui->screen_radiobtn_1_item0, &style_screen_radiobtn_1_extra_btns_indicator_checked_pressed, LV_PART_INDICATOR|LV_STATE_CHECKED | LV_STATE_PRESSED);//Write style state: LV_STATE_DEFAULT for &style_screen_radiobtn_1_extra_btns_custom_defaultstatic lv_style_t style_screen_radiobtn_1_extra_btns_custom_default;ui_init_style(&style_screen_radiobtn_1_extra_btns_custom_default);lv_style_set_border_width(&style_screen_radiobtn_1_extra_btns_custom_default, 2);lv_style_set_border_opa(&style_screen_radiobtn_1_extra_btns_custom_default, 0);lv_style_set_border_color(&style_screen_radiobtn_1_extra_btns_custom_default, lv_color_hex(0xffffff));lv_style_set_border_side(&style_screen_radiobtn_1_extra_btns_custom_default, LV_BORDER_SIDE_FULL);lv_style_set_radius(&style_screen_radiobtn_1_extra_btns_custom_default, 20);lv_style_set_bg_opa(&style_screen_radiobtn_1_extra_btns_custom_default, 0);lv_obj_add_style(ui->screen_radiobtn_1_item2, &style_screen_radiobtn_1_extra_btns_custom_default, LV_PART_CUSTOM_FIRST|LV_STATE_DEFAULT);lv_obj_add_style(ui->screen_radiobtn_1_item1, &style_screen_radiobtn_1_extra_btns_custom_default, LV_PART_CUSTOM_FIRST|LV_STATE_DEFAULT);lv_obj_add_style(ui->screen_radiobtn_1_item0, &style_screen_radiobtn_1_extra_btns_custom_default, LV_PART_CUSTOM_FIRST|LV_STATE_DEFAULT);//Write style state: LV_STATE_PRESSED for &style_screen_radiobtn_1_extra_btns_custom_pressedstatic lv_style_t style_screen_radiobtn_1_extra_btns_custom_pressed;ui_init_style(&style_screen_radiobtn_1_extra_btns_custom_pressed);lv_style_set_border_width(&style_screen_radiobtn_1_extra_btns_custom_pressed, 2);lv_style_set_border_opa(&style_screen_radiobtn_1_extra_btns_custom_pressed, 0);lv_style_set_border_color(&style_screen_radiobtn_1_extra_btns_custom_pressed, lv_color_hex(0xffffff));lv_style_set_border_side(&style_screen_radiobtn_1_extra_btns_custom_pressed, LV_BORDER_SIDE_FULL);lv_style_set_radius(&style_screen_radiobtn_1_extra_btns_custom_pressed, 20);lv_style_set_bg_opa(&style_screen_radiobtn_1_extra_btns_custom_pressed, 0);lv_obj_add_style(ui->screen_radiobtn_1_item2, &style_screen_radiobtn_1_extra_btns_custom_pressed, LV_PART_CUSTOM_FIRST|LV_STATE_PRESSED);lv_obj_add_style(ui->screen_radiobtn_1_item1, &style_screen_radiobtn_1_extra_btns_custom_pressed, LV_PART_CUSTOM_FIRST|LV_STATE_PRESSED);lv_obj_add_style(ui->screen_radiobtn_1_item0, &style_screen_radiobtn_1_extra_btns_custom_pressed, LV_PART_CUSTOM_FIRST|LV_STATE_PRESSED);//Write style state: LV_STATE_CHECKED for &style_screen_radiobtn_1_extra_btns_custom_checkedstatic lv_style_t style_screen_radiobtn_1_extra_btns_custom_checked;ui_init_style(&style_screen_radiobtn_1_extra_btns_custom_checked);lv_style_set_border_width(&style_screen_radiobtn_1_extra_btns_custom_checked, 2);lv_style_set_border_opa(&style_screen_radiobtn_1_extra_btns_custom_checked, 255);lv_style_set_border_color(&style_screen_radiobtn_1_extra_btns_custom_checked, lv_color_hex(0x5cd624));lv_style_set_border_side(&style_screen_radiobtn_1_extra_btns_custom_checked, LV_BORDER_SIDE_FULL);lv_style_set_radius(&style_screen_radiobtn_1_extra_btns_custom_checked, 20);lv_style_set_bg_opa(&style_screen_radiobtn_1_extra_btns_custom_checked, 255);lv_style_set_bg_color(&style_screen_radiobtn_1_extra_btns_custom_checked, lv_color_hex(0x5cd624));lv_style_set_bg_grad_dir(&style_screen_radiobtn_1_extra_btns_custom_checked, LV_GRAD_DIR_NONE);lv_obj_add_style(ui->screen_radiobtn_1_item2, &style_screen_radiobtn_1_extra_btns_custom_checked, LV_PART_CUSTOM_FIRST|LV_STATE_CHECKED);lv_obj_add_style(ui->screen_radiobtn_1_item1, &style_screen_radiobtn_1_extra_btns_custom_checked, LV_PART_CUSTOM_FIRST|LV_STATE_CHECKED);lv_obj_add_style(ui->screen_radiobtn_1_item0, &style_screen_radiobtn_1_extra_btns_custom_checked, LV_PART_CUSTOM_FIRST|LV_STATE_CHECKED);//Write style state: LV_STATE_CHECKED | LV_STATE_PRESSED for &style_screen_radiobtn_1_extra_btns_custom_checked_pressedstatic lv_style_t style_screen_radiobtn_1_extra_btns_custom_checked_pressed;ui_init_style(&style_screen_radiobtn_1_extra_btns_custom_checked_pressed);lv_style_set_border_width(&style_screen_radiobtn_1_extra_btns_custom_checked_pressed, 2);lv_style_set_border_opa(&style_screen_radiobtn_1_extra_btns_custom_checked_pressed, 255);lv_style_set_border_color(&style_screen_radiobtn_1_extra_btns_custom_checked_pressed, lv_color_hex(0x5cd624));lv_style_set_border_side(&style_screen_radiobtn_1_extra_btns_custom_checked_pressed, LV_BORDER_SIDE_FULL);lv_style_set_radius(&style_screen_radiobtn_1_extra_btns_custom_checked_pressed, 20);lv_style_set_bg_opa(&style_screen_radiobtn_1_extra_btns_custom_checked_pressed, 255);lv_style_set_bg_color(&style_screen_radiobtn_1_extra_btns_custom_checked_pressed, lv_color_hex(0x5cd624));lv_style_set_bg_grad_dir(&style_screen_radiobtn_1_extra_btns_custom_checked_pressed, LV_GRAD_DIR_NONE);lv_obj_add_style(ui->screen_radiobtn_1_item2, &style_screen_radiobtn_1_extra_btns_custom_checked_pressed, LV_PART_CUSTOM_FIRST|LV_STATE_CHECKED | LV_STATE_PRESSED);lv_obj_add_style(ui->screen_radiobtn_1_item1, &style_screen_radiobtn_1_extra_btns_custom_checked_pressed, LV_PART_CUSTOM_FIRST|LV_STATE_CHECKED | LV_STATE_PRESSED);lv_obj_add_style(ui->screen_radiobtn_1_item0, &style_screen_radiobtn_1_extra_btns_custom_checked_pressed, LV_PART_CUSTOM_FIRST|LV_STATE_CHECKED | LV_STATE_PRESSED);//Write codes screen_video_1ui->screen_video_1 = lv_video_create(ui->screen, 322, 236);
#if LV_USE_GUIDER_SIMULATORlv_video_set_src(ui->screen_video_1,"C:\\NXP\\GUI-Guider-Projects\\ergdfgds\\import\\video\\1080P30.h264");
#elselv_video_set_src(ui->screen_video_1,"S:/1080P30.h264");
#endiflv_obj_set_pos(ui->screen_video_1, 389, 117);lv_obj_set_size(ui->screen_video_1, 322, 236);//The custom code of screen.//Update current screen layout.lv_obj_update_layout(ui->screen);}

在这里插入图片描述

觉得有用点个赞呗!

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

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

相关文章

AbortController:让异步操作随时说停就停

AbortController&#xff1a;让异步操作随时说停就停 一、什么是 AbortController&#xff1f; AbortController 是 JavaScript 在浏览器和部分 Node.js 环境中提供的全局类&#xff0c;用来中止正在进行或待完成的异步操作&#xff08;如 fetch() 请求、事件监听、可写流、数…

机器学习 从入门到精通 day_04

1. 决策树-分类 1.1 概念 1. 决策节点 通过条件判断而进行分支选择的节点。如&#xff1a;将某个样本中的属性值(特征值)与决策节点上的值进行比较&#xff0c;从而判断它的流向。 2. 叶子节点 没有子节点的节点&#xff0c;表示最终的决策结果。 3. 决策树的…

C++ Primer (第五版)-第十三章 拷贝控制

文章目录 概述13.1拷贝、赋值与销毁合成拷贝构造函数拷贝初始化参数和返回值拷贝初始化的限制编译器可以绕过拷贝构造函数拷贝运算符析构函数三/五原则使用default阻止拷贝合成的拷贝控制成员可能是删除的 private拷贝控制拷贝控制和资源管理行为像值的类类值拷贝赋值运算符定义…

Vue el-from的el-form-item v-for循环表单如何校验rules(一)

实际业务需求场景&#xff1a; 新增或编辑页面&#xff08;基础信息表单&#xff0c;一个数据列表的表单&#xff09;&#xff0c;数据列表里面的表单数是动态添加的。数据可新增、可删除&#xff0c;在表单保存前&#xff0c;常常需要做表单必填项的校验&#xff0c;校验通过以…

测试100问:http和https的区别是什么?

哈喽&#xff0c;大家好&#xff0c;我是十二&#xff0c;今天给大家分享的问题是&#xff1a;http和https的区别是什么&#xff1f; 首先我们要知道 HTTP 协议传播的数据都是未加密的&#xff0c;也就是明文的&#xff0c;因此呢使用 http协议传输一些隐私信息也就非常不安全&…

YOLOv3超详细解读(三):源码解析:数据处理模块

一、概述 YOLOv3&#xff08;You Only Look Once v3&#xff09;是一种高效的目标检测算法&#xff0c;其数据处理模块是训练和推理流程的核心部分。本文将深入分析Ultralytics团队基于PyTorch实现的YOLOv3源码中的数据处理模块&#xff0c;重点探讨数据加载、预处理和数据增强…

每日算法(双指针算法)(Day 1)

双指针算法 1.算法题目&#xff08;移动零&#xff09;2.讲解算法原理3.编写代码 1.算法题目&#xff08;移动零&#xff09; 2.讲解算法原理 数组划分&#xff0c;数组分块&#xff08;快排里面最核心的一步&#xff09;只需把0改为tmp 双指针算法&#xff1a;利用数组下标来…

2025蓝桥杯python A组省赛 题解

真捐款去了&#xff0c;好长时间没练了&#xff0c;感觉脑子和手都不转悠了。 B F BF BF 赛时都写假了&#xff0c; G G G 也只写了爆搜。 题解其实队友都写好了&#xff0c;我就粘一下自己的代码&#xff0c;稍微提点个人的理解水一篇题解 队友题解 2025蓝桥杯C A组省赛 题…

测试基础笔记第四天(html)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 html介绍1. 介绍2.骨架标签3.常用标签标题标签段落标签超链接标签图片标签换行和空格标签布局标签input标签&#xff08;变形金刚&#xff09;form标签列表标签 htm…

10 穴 汽车连接器的15个设计特点

汽车行业严重依赖卓越的电气系统来确保功能和可靠性。这些系统的关键组件是 10 腔连接器&#xff0c;它为布线和信号传输提供解决方案。制造商和工程师必须仔细评估这些连接器的设计特性&#xff0c;以优化性能和安全性。 本博客研究了汽车 10 腔连接器的 15 个设计特征&#…

Summary

一、数据结构 1.1 哈希 主要是HashMap和HashSet&#xff1b;其中HashSet底层是一个HashMap属性。 // 获取HashMap元素,HashSet均不支持 map.keySet (); // Set<k> map.values (; // Collection<V> map.entrySet();//Set<Map.Entry<K,V>> for (Map.E…

【Leetcode-Hot100】最小覆盖子串

题目 解答 想到使用双指针哈希表来实现&#xff0c;双指针的left和right控制实现可满足字符串。 class Solution(object):def minWindow(self, s, t):""":type s: str:type t: str:rtype: str"""len_s, len_t len(s), len(t)hash_map {}for…

Flutter 播放利器:`media_kit` 的详细介绍与使用指南

在 Flutter 项目中实现音视频播放&#xff0c;开发者过去主要依赖如 video_player、just_audio 等第三方库&#xff0c;但这些库或多或少存在一些局限性&#xff0c;比如平台兼容性差、定制能力不足、播放格式有限等问题。 而 media_kit 是近年崛起的一款全平台音视频播放解决…

4.14【Q】pc homework3

我正在学习并行计算&#xff0c;解决这个问题&#xff1f;详细解释&#xff0c;越细节越好 我正在学习并行计算&#xff0c;“首次允许在 taskloop 构造中使用 reduction 子句&#xff0c;并引入了 task_reduction&#xff08;用于 taskgroup 构造&#xff09;和 in_reduction&…

ArrayList vs LinkedList,HashMap vs TreeMap:如何选择最适合的集合类?

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 在 Java 开发中&#xff0c;集合类的选择直接影响程序的性能和代码的可维护性。不同的数据结构适用于不同的场景&#xff0c;盲目使用可能导致内存浪费、性能…

大模型训练显存压缩实战:ZeRO-3 vs 梯度累积 vs 量化混合策略

一、显存瓶颈的本质与挑战 大模型训练面临的核心矛盾是模型参数量指数级增长与GPU显存容量线性提升之间的鸿沟。以175B参数模型为例&#xff0c;其显存消耗主要来自三个方面&#xff1a; 参数存储‌&#xff1a;FP32精度下需700GB显存‌梯度缓存‌&#xff1a;反向传播产生的…

边缘计算与隐私计算的融合:构建数据经济的“隐形护盾“

在数据成为核心生产要素的今天&#xff0c;边缘计算与隐私计算的交汇正在重塑技术生态。这并非简单的技术叠加&#xff0c;而是一场关于数据主权、算力分配与信任机制的深度博弈。本文将从"数据流动的拓扑学"视角&#xff0c;探讨二者融合如何重构数字社会的基础设施…

Obsidian 文件夹体系构建 -INKA

Obsidian 文件夹体系构建 -INKA 本篇文章主要分享一下自己折腾学习实践过的 INKA 框架方法。原地址&#xff1a;Obsidian文件夹体系构建–INKA。 文章目录 Obsidian 文件夹体系构建 -INKA前言INKA简介INKA 理论最佳实践实际应用 反思 前言 上文 Obsidian文件夹体系构建-ACCES…

ocr-不动产权识别

目录 一、在阿里云申请ocr识别服务 二、创建springboot项目 三、后续 一、在阿里云申请ocr识别服务 在线体验&#xff1a;房产证图片上传 [阿里官方]不动产权证OCR文字识别_API专区_云市场-阿里云 (aliyun.com) 可以选择一毛500次这个 当然也可以白嫖100 下面有个在线调试…

LeetCode算法题(Go语言实现)_47

题目 给你一个 m x n 的迷宫矩阵 maze &#xff08;下标从 0 开始&#xff09;&#xff0c;矩阵中有空格子&#xff08;用 ‘.’ 表示&#xff09;和墙&#xff08;用 ‘’ 表示&#xff09;。同时给你迷宫的入口 entrance &#xff0c;用 entrance [entrancerow, entrancecol…