当前位置: 首页 > news >正文

[嵌入式系统-27]:RT-Thread -14- 操作系统配置:rtconfig.h文件与menuconfig命令

目录

一、rtconfig.h

1.1 概述

1.2 软硬件资源配置

1.3 功能模块选择

1.4 内核配置详解

1.5 调度器配置

1.6 硬件设备驱动配置

1.7 网络配置

1.8 调试配置

二、menuconfig 

2.1 概述

2.2 主要功能

三、RT Thread配置 VS Linux配置


一、rtconfig.h

1.1 概述

rtconfig.h 是 RT-Thread 实时操作系统中的核心配置文件。它定义了系统的各种参数和功能选项,通过对这些选项的配置,可以定制化地构建适合特定应用需求的 RT-Thread 系统。

在 rtconfig.h 文件中,可以设置各种宏定义和选项来配置 RT-Thread 系统的行为和特性。这些选项涉及内存管理、调度器、设备驱动、文件系统、网络、调试等方面的配置。用户可以根据具体需求来决定启用或禁用某些功能,调整系统的优先级和参数设置。

通过修改 rtconfig.h 文件,可以实现以下功能:

  1. 软硬件资源配置:设置内存大小、线程数量、设备驱动数量等,根据应用需求分配系统资源。

  2. 功能模块选择:根据项目需要启用或禁用特定模块和功能,如文件系统、网络协议栈、图形库等。

  3. 调度器配置:调整调度器算法和参数,如时间片长度、线程优先级管理方式等。

  4. 硬件设备驱动配置:选择和配置系统中使用的设备驱动,如串口、网卡、传感器等外设。

  5. 网络配置:配置网络协议栈和相关参数,启用或禁用网络功能,包括以太网、Wi-Fi 等。

  6. 调试配置:设置系统的调试模式、控制台输出和调试功能的开关。

修改 rtconfig.h 文件需要谨慎操作,确保配置的正确性和一致性,以避免出现不可预期的问题。在修改配置之前,建议仔细阅读 RT-Thread 官方文档和 rtconfig.h 文件中的注释和说明,了解每个配置选项的作用和限制。

总之,rtconfig.h 是 RT-Thread 系统中非常重要的配置文件,通过对其进行合理的设置,可以定制出高度适应特定需求的实时操作系统。

1.2 软硬件资源配置

在 RT-Thread 实时操作系统的 rtconfig.h 文件中,可以进行软硬件资源的配置。下面是一些常见的软硬件资源配置选项的说明:

  1. 堆内存管理配置

    • RT_USING_HEAP:该宏定义是否启用堆内存管理器,用于动态分配内存。如果启用,可以使用 malloc 和 free 函数进行内存的动态分配和释放
    • RT_HEAP_SIZE:定义堆内存的总大小。通过修改该选项,可以调整堆内存的分配空间。
  2. 线程栈内存配置

    • RT_THREAD_STACK_SIZE:定义线程的默认栈大小。可以根据实际应用需求和线程的运行情况调整栈的大小,避免栈溢出的问题。
  3. 定时器配置

    • RT_USING_TIMER_SOFT:该宏定义是否启用软件定时器,即基于时钟节拍的定时器功能。启用时,可以使用 rt_timer_xxx 函数创建和管理定时器
  4. 设备驱动配置

    • RT_USING_DEVICE:该宏定义是否启用设备框架,用于管理系统设备驱动。如果启用,则可以使用 rt_device_xxx 函数操作设备
    • RT_CONSOLE_DEVICE_NAME:定义控制台设备的名称,可以作为标准输入和输出设备进行使用。
  5. 文件系统配置

    • RT_USING_DFS:该宏定义是否启用文件系统功能。如果启用,则可以在 RT-Thread 上使用文件系统进行文件的读写操作。
    • RT_USING_DFS_FAT:该宏定义是否启用 FAT 文件系统。
    • RT_USING_DFS_ELMFAT:该宏定义是否启用 ElmFat 文件系统。
    • RT_USING_DFS_YAFFS2:该宏定义是否启用 YAFFS2 文件系统。
  6. 网络协议栈配置

    • RT_USING_LWIP:该宏定义是否使用 LWIP TCP/IP 协议栈。如果启用,可以使用网络相关的 API 进行 TCP/IP 通信。
    • RT_USING_WIFI:该宏定义是否支持 WiFi 功能。
    • RT_USING_ETHERNET:该宏定义是否启用以太网功能。

请注意,在配置这些软硬件资源时,应根据实际需求和硬件平台的特性进行调整。确保分配的资源足够满足应用的需求,避免资源浪费和系统性能下降。

1.3 功能模块选择

在 RT-Thread 实时操作系统中,通过在 rtconfig.h 文件中选择功能模块,可以控制系统中需要包含的功能模块。以下是一些常见的功能模块选择选项及其说明:

  1. RT_USING_COMPONENTS_END

    • RT_USING_COMPONENTS_END 定义了系统所使用的组件的起始索引号。该值标记了功能模块的选择区域的起点,可以在此之前进行一些系统的基本配置,如内存管理、线程管理等。
  2. RT_USING_FINSH

    • RT_USING_FINSH 定义是否启用 finsh 终端命令行组件。finsh 终端是一个用于进行系统调试和控制的命令行接口,可以方便地进行系统命令的输入和输出。
  3. RT_USING_COMPONENTS_DEVICE

    • RT_USING_COMPONENTS_DEVICE 定义是否启用设备框架组件。设备框架组件用于管理系统中的各种设备驱动,包括串口、SPI、I2C 等设备的操作。
  4. RT_USING_COMPONENTS_IPC

    • RT_USING_COMPONENTS_IPC 定义是否启用进程间通信(IPC)组件。IPC 组件允许不同线程或进程之间进行通信和数据共享,在多任务系统中非常有用。
  5. RT_USING_SMP

    • RT_USING_SMP 定义是否启用对称多处理器支持。启用此选项可以实现多核处理器上的多核调度和通信机制,提高系统的并行处理能力。
  6. RT_USING_MODULE

    • RT_USING_MODULE 定义是否启用动态模块加载功能。通过动态模块加载,可以在系统运行时动态加载和卸载模块,实现系统功能的灵活扩展和管理。

通过在 rtconfig.h 文件中选择合适的功能模块,可以根据具体应用需求和系统资源限制进行灵活的功能配置,定制适合特定应用场景的 RT-Thread 操作系统。

1.4 内核配置详解

在 rtconfig.h 中,有一些内核配置选项,用于配置 RT-Thread 实时操作系统的内核行为和特性。下面详细解释几个常见的内核配置选项:

  1. RT_NAME_MAX

    RT_NAME_MAX 定义了对象名称的最大长度,例如线程、定时器、信号量等。通过修改该选项,可以调整对象名称的最大长度。请注意,该值应合理设置,避免资源浪费和系统效率降低。

  2. RT_THREAD_PRIORITY_MAX

    RT_THREAD_PRIORITY_MAX 定义了系统支持的最大线程优先级数。通过修改此选项,可以增加或减少系统中可用的线程优先级数目。这是一个重要的配置选项,影响调度器的调度策略和线程优先级的管理方式。

  3. RT_TICK_PER_SECOND

    RT_TICK_PER_SECOND 定义了系统时钟的节拍频率,以 Hz 为单位。节拍是 RT-Thread 系统的基本时间单位,影响时间片的长度和定时器的计时准确性。通过调整该值,可以适应不同的应用场景和硬件平台。

  4. RT_ALIGN_SIZE

    RT_ALIGN_SIZE 定义了内存对齐的字节大小。内存对齐是为了提高内存访问的效率,在某些平台上要求访问的变量和数据地址为特定的对齐方式。通过修改此选项,可以适应不同的硬件平台和编译器对内存对齐的要求。

这些内核配置选项可以通过修改 rtconfig.h 文件中的对应宏定义来进行调整,以满足特定的应用需求和硬件平台的限制。但在修改这些选项之前,建议仔细阅读官方文档和 rtconfig.h 文件中的注释,了解每个配置选项的作用和限制,并确保修改的配置在整个系统中的一致性。

除了上述选项,rtconfig.h 文件中还包含其他一些内核配置选项,如线程栈大小、中断优先级设置等。这些选项可以根据具体的应用需求进行调整和配置,以构建一个适合特定应用场景的 RT-Thread 系统。

1.5 调度器配置

在 RT-Thread 实时操作系统中,可以通过 rtconfig.h 文件进行调度器配置,以调整调度器的行为和特性。以下是一些与调度器相关的配置选项及其说明:

  1. 调度器类型

    • RT_THREAD_PRIORITY_MAX:定义系统支持的最大线程优先级,通常范围从 0 到该值。较大的值表示支持更多的线程优先级,可以更精细地控制任务的调度。

    • RT_THREAD_PRIORITY_MIN:定义系统支持的最小线程优先级,通常为 1。较小的值表示更高的优先级,可确保特定任务获得更高的执行权

    • RT_TICK_PER_SECOND:定义系统的时钟节拍频率,即每秒中发生的时钟中断次数。通过调整这个值,可以改变系统的时钟精度,从而影响任务的调度。

  2. 调度器配置

    • RT_THREAD_PRIORITY_MAX:定义系统支持的最大线程优先级。根据应用需求和系统资源,可以设置适当的最大优先级。

    • RT_THREAD_MAX_PRIORITY:定义系统默认情况下创建线程的最大优先级。确保此值不超过 RT_THREAD_PRIORITY_MAX

    • RT_FLAG_PRIO_MASK:定义优先级掩码,用于屏蔽线程优先级。确保线程优先级在有效范围内。

    • RT_SCHEDULER_LOCK_LEVEL:定义调度器的锁定级别。在临界区内部,锁定级别高于或等于此值的调度器调度会被暂时禁止,以避免优先级反转问题。

  3. 调度器调度算法

    • RT_THREAD_SCHEDULER:定义系统使用的调度算法。可以选择支持的调度算法,如抢占式调度、时间片轮转调度等。

通过在 rtconfig.h 文件中配置与调度器相关的宏定义,可以对 RT-Thread 系统的任务调度器行为进行自定义和调整,以满足不同应用场景的需求。

1.6 硬件设备驱动配置

在 RT-Thread 实时操作系统中,硬件设备的驱动配置主要集中在 rtconfig.h 文件中。通过配置相应的宏定义,可以启用或禁用不同的硬件设备驱动,并进行相关的配置。

以下是一些常见的硬件设备驱动配置选项及其说明:

  1. 串口驱动配置

    • RT_USING_SERIAL:定义是否启用串口驱动。启用后,可以通过串口进行数据的收发和通信

    • RT_SERIAL_RB_BUFSZ:定义串口驱动的接收缓冲区大小,即可以存储待接收数据的长度。

  2. SPI 设备驱动配置

    • RT_USING_SPI:定义是否启用 SPI 设备驱动。启用后,可以通过 SPI 总线进行数据的高速传输

    • RT_SPI_FLASH_DEVICE_NAME:定义 SPI Flash 设备的名称。可以根据具体使用的 SPI Flash 设备进行配置和匹配。

  3. I2C 设备驱动配置

    • RT_USING_I2C:定义是否启用 I2C 设备驱动。启用后,可以通过 I2C 总线进行数据的传输和通信。

    • RT_I2C_BUS_NAME:定义 I2C 总线的名称。可以根据实际连接的 I2C 总线进行配置。

  4. RTC(实时时钟)驱动配置

    • RT_USING_RTC:定义是否启用 RTC 驱动。启用后,可以使用实时时钟设备。

    • RT_RTC_DEVICE_NAME:定义 RTC 设备的名称。可以根据实际使用的 RTC 设备进行配置。

  5. 相应设备的引脚和参数配置

    • 根据具体的硬件设备,可能还需要配置相应的引脚和参数,如UART 的引脚配置、SPI 的片选引脚配置、I2C 的引脚配置等

通过在 rtconfig.h 文件中配置相应的宏定义,可以启用或禁用硬件设备驱动,并进行相关的硬件参数配置,以满足具体硬件设备的需求。

这里提供的是一些常见的硬件设备驱动配置选项,具体的配置选项可能因不同的硬件平台和驱动库而有所不同。请查阅相应的文档和驱动库来获取详细的配置信息和示例。

1.7 网络配置

在 RT-Thread 实时操作系统中,网络配置是连接外部网络的关键部分。通过配置网络相关的宏定义,可以启用不同类型的网络协议栈和网络设备驱动,使设备能够进行网络通信。以下是一些常见的网络配置选项及其说明:

  1. 网络协议栈配置

    • RT_USING_LWIP:定义是否启用 Lightweight IP (LwIP) 协议栈。LwIP 是一个轻量级的 TCP/IP 协议栈,用于设备的网络通信。

    • RT_USING_DNS:定义是否启用 DNS(Domain Name System)功能,用于解析域名到 IP 地址。

  2. 网络设备驱动配置

    • RT_USING_NETDEV:定义是否启用网络设备驱动。启用后,可以支持网络设备的初始化和操作。

    • RT_NET_MAX_DHCP_RETRY:定义 DHCP 自动获取 IP 地址的最大尝试次数

    • RT_NET_MAX_ARP_TRY:定义 ARP 地址解析协议的最大尝试次数

  3. 网络接口配置

    • RT_USING_PING:定义是否启用 Ping 功能,用于网络连通性测试。

    • RT_NETIF_HWADDR:定义网络设备的硬件 MAC 地址。

    • RT_NETIF_IPADDR:定义网络设备的 IP 地址。

    • RT_NETIF_GW:定义网络设备的网关地址。

    • RT_NETIF_MSK:定义网络设备的子网掩码。

  4. Socket 配置

    • RT_USING_SOCKETS:定义是否启用 Socket 网络套接字接口。通过 Socket 接口可以进行网络通信,包括 TCP 和 UDP。

    • RT_USING_UDP:定义是否启用 UDP 协议,用于无连接的数据传输。

    • RT_USING_TCP:定义是否启用 TCP 协议,用于可靠的连接传输。

这些网络配置选项可以在 rtconfig.h 文件中进行设置,以便根据实际需求启用或禁用不同的网络功能,配置网络设备和接口参数,以实现设备与外部网络的通信。

请注意,具体的网络配置选项和参数可能会因不同的网络协议栈和驱动库而有所不同。建议查阅相应的文档和示例代码以获取详细的配置信息。

1.8 调试配置

在 RT-Thread 实时操作系统中,调试配置对于开发和调试应用程序非常重要。通过配置调试相关的选项,可以获取详细的系统状态和信息,帮助排查和解决问题。

以下是一些常见的调试配置选项及其说明:

  1. 内核调试配置

    • RT_DEBUG定义是否启用内核调试功能。启用后,会输出一些额外的调试信息,如中断、线程、堆栈等信息。

    • RT_USING_OVERFLOW_CHECK定义是否启用堆栈溢出检查功能。启用后,可以检测出线程堆栈是否溢出。

    • RT_USING_MEMTRACE定义是否启用内存跟踪功能。启用后,可以跟踪内存的申请和释放情况

  2. 打印输出配置

    • RT_USING_FINSH定义是否启用 FinSH 命令行终端。启用后,可以通过串口或网络终端进行命令行交互和调试

    • RT_USING_LOGTRACE定义是否启用系统日志跟踪功能。启用后,系统会输出一些运行时的日志信息

    • RT_USING_ASSERT定义是否启用断言功能。启用后,可以在运行时进行条件判断,如果条件不满足,则触发断言失败。

  3. 调试输出配置

    • RT_DEBUG_INIT:定义是否在启动时打印初始化信息。启用后,会输出系统的初始化过程。

    • RT_DEBUG_THREAD:定义是否打印线程创建、切换和删除的调试信息

    • RT_DEBUG_TIMER:定义是否打印定时器的调试信息

    • RT_DEBUG_IRQ:定义是否打印中断的调试信息

    • RT_DEBUG_MEMHEAP:定义是否打印内存堆的调试信息

这些调试配置选项可以在 rtconfig.h 文件中进行设置,以便根据实际需求启用或禁用不同的调试功能,输出相应的调试信息,并帮助开发者进行调试和排查问题。

请注意,启用过多的调试功能可能会增加系统资源的占用和输出信息的量,请根据具体需求进行配置。

二、menuconfig 

2.1 概述

RT-Thread 提供了 menuconfig 命令来进行配置管理,它是一种基于命令行的配置界面,可以通过交互式方式配置 RT-Thread 操作系统的各个组件和功能选项。

使用 menuconfig 命令进行配置,需要完成以下步骤:

  1. 进入 RT-Thread 的源码目录。

  2. 执行 scons --menuconfig 命令,打开配置界面。

  3. 在菜单界面中,可以使用方向键和回车键进行导航和选择。

    • 使用上下方向键移动光标选中菜单项。
    • 使用左右方向键移动到子菜单或返回上一级菜单。
    • 使用回车键进入子菜单或选择选项。
  4. 在菜单界面中,可以进行各种配置选项的选择和设置。

    • 选择 [*] 表示启用该选项,选择 [ ] 表示禁用该选项。
    • 使用数字键选择标志位选项,如 1 表示选择该标志位,0 表示不选择该标志位。
    • 使用字符串输入框进行文本输入。
  5. 配置完成后,通过回车键确认并保存配置,退出配置界面。

  6. 在退出配置界面后,根据需要重新编译和部署 RT-Thread。

请注意,使用 menuconfig 配置界面可以更方便地进行配置操作,而不需要手动编辑配置文件。配置选项的具体内容和功能会因 RT-Thread 的版本、组件和功能模块而有所不同。

2.2 主要功能

RT-Thread 的 menuconfig 是一个集成式的配置工具,用于管理和配置 RT-Thread 操作系统的各种功能和组件。通过 menuconfig,用户可以方便地进行各种配置选项的设置,以定制适合自己项目需求的 RT-Thread 操作系统。

以下是 menuconfig 的功能概述:

  1. 交互式配置menuconfig 提供了一个交互式的配置界面,用户可以通过键盘操作来选择和设置各种配置选项,而无需手动编辑配置文件。

  2. 配置结构化:配置选项以树状结构的方式组织,清晰地展示了 RT-Thread 操作系统的各个功能模块和组件,方便用户进行导航和选择。

  3. 配置选项:用户可以在 menuconfig 中设置各种选项,如内核功能使能、驱动支持、组件集成等,以满足项目需求。

  4. 功能模块管理menuconfig 允许用户选择性地启用或禁用特定功能模块,以精简系统体积和提高系统性能。

  5. 设备驱动配置:可以在 menuconfig 中配置和管理各种设备驱动,包括串口、网络、文件系统等,以便于项目的移植和扩展。

  6. 自定义配置:用户可以按需修改配置选项的值和设置,以满足特定项目的需求和约束。

  7. 实时预览:在配置选项的设置过程中,menuconfig 可以实时反映配置的变化和影响,帮助用户更好地理解配置选项的含义和作用。

  8. 保存和导出配置:用户可以在 menuconfig 中保存当前的配置设置,并生成相应的配置文件,以便后续使用和版本管理。

总的来说,RT-Thread 的 menuconfig 是一个功能强大且易用的配置工具,能够帮助用户灵活地配置和定制 RT-Thread 操作系统,以适应不同项目的需求和要求。

希望这个概述能帮助您更好地理解 menuconfig 的功能和用途。

三、RT Thread配置 VS Linux配置

RT-Thread 和 Linux 是两种不同的操作系统内核,它们在配置方式上有一些区别。

以下是 RT-Thread 配置和 Linux 配置之间的一些主要比较:

  1. 配置工具

    • RT-Thread:RT-Thread 使用 menuconfig 这样的命令行配置工具,提供了一个交互式的配置界面,用户可以通过键盘操作来选择和设置配置选项。
    • Linux:Linux 使用 menuconfignconfigxconfigqconfig 等多种配置工具,其中 menuconfig 和 nconfig 是基于命令行的配置工具,而 xconfig 和 qconfig 是基于图形界面的配置工具。
  2. 配置结构

    • RT-Thread:RT-Thread 的配置选项以树状结构组织,清晰地展示了各个功能模块和组件,方便用户进行导航和选择。
    • Linux:Linux 的配置选项也以树状结构组织,但在一些配置工具中,展示方式可能会略有不同,比如 xconfig 提供了更直观的可视化界面。
  3. 功能模块管理

    • RT-Thread:RT-Thread 允许用户选择性地启用或禁用特定功能模块,以精简系统体积和提高系统性能
    • Linux:Linux 同样支持用户选择性地配置和编译功能模块,以满足特定需求,但通常拥有更多的功能和扩展性。
  4. 设备驱动配置

    • RT-Thread:RT-Thread 提供了方便的设备驱动配置功能,用户可以在 menuconfig 中配置和管理各种设备驱动。
    • Linux:Linux 作为功能强大的操作系统,设备驱动配置也是其核心功能之一,用户可以通过配置工具选择性地加载和编译各种设备驱动。
  5. 自定义配置

    • RT-Thread:用户可以在 menuconfig 中按需修改配置选项的值和设置,以满足特定项目的需求和约束。
    • Linux:用户同样可以通过各种配置工具自定义配置选项,并根据需要调整配置值,以适应不同的应用场景。

总的来说,虽然 RT-Thread 和 Linux 在配置方面有些许差异,但它们都提供了强大的配置工具和灵活的配置选项,让用户可以根据需要定制适合自己项目的操作系统。

相关文章:

[嵌入式系统-27]:RT-Thread -14- 操作系统配置:rtconfig.h文件与menuconfig命令

目录 一、rtconfig.h 1.1 概述 1.2 软硬件资源配置 1.3 功能模块选择 1.4 内核配置详解 1.5 调度器配置 1.6 硬件设备驱动配置 1.7 网络配置 1.8 调试配置 二、menuconfig 2.1 概述 2.2 主要功能 三、RT Thread配置 VS Linux配置 一、rtconfig.h 1.1 概述 rtco…...

C++面向对象程序设计-北京大学-郭炜【课程笔记(一)】

C面向对象程序设计-北京大学-郭炜【课程笔记(一)】 1、引用的概念1.1、引用应用的简单示例1.2、常引用 2、"const"关键字的用法(常量指针/指针常量)3、动态内存分配4、内联函数5、函数重载5.1、什么是函数重载5.2、函数…...

C语言:国家名称按字母表排序

题目描述 输入一个整数n(n<20)&#xff0c;表示待输入国家的数量。随后输入n个国家或地区的名称 (名称长度为1~30)&#xff0c;要求按字母顺序升序输出。 注意&#xff1a;名称中可能包含空格符。 提示 字符串比较请使用函数&#xff1a; int strcmp(const char* str1&a…...

2/18作业

1. #!/bin/bash function fun() { uidgrep ^ubuntu /etc/passwd | cut -d : -f 3 gidgrep ^ubuntu /etc/passwd | cut -d : -f 4 echo "uid为$uid,gid为$gid" } resultfun echo $result...

书生浦语笔记与作业汇总

第一节笔记 第二节笔记与作业 第三节笔记 第三节作业 第四节笔记 第四节作业 第五节笔记 第五节作业 第六节笔记 第六节作业...

嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第五天-ARM Linux编程之自动创建节点 (物联技术666)

链接&#xff1a;https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd1688 提取码&#xff1a;1688 驱动程序编写好后&#xff0c;还需要创建设备节点&#xff0c;有两种方式&#xff0c;一是通过mknod命令去手动创建&#xff0c;例如&#xff1a;mknod /dev/hello c 250 0&…...

基于51/STM32单片机的智能药盒 物联网定时吃药 药品分类

功能介绍 以51/STM32单片机作为主控系统&#xff1b; LCD1602液晶显示当前时间、温湿度、药品重量 3次吃药时间、药品类目和药品数量 HX711压力采集当前药品重量 红外感应当前药盒是否打开 DS1302时钟芯片显示当前年月日、时分秒、星期 DHT11采集当前环境温度和湿度 …...

【学网攻】 第(27)节 -- HSRP(热备份路由器协议)

系列文章目录 目录 系列文章目录 文章目录 前言 一、HSRP(热备份路由器协议)是什么&#xff1f; 二、实验 1.引入 实验目标 实验背景 技术原理 实验步骤 实验设备 实验拓扑图 实验配置 实验验证 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交…...

【实战】二、Jest难点进阶(三) —— 前端要学的测试课 从Jest入门到TDD BDD双实战(七)

文章目录 一、Jest 前端自动化测试框架基础入门二、Jest难点进阶3.mock timers 学习内容来源&#xff1a;Jest入门到TDD/BDD双实战_前端要学的测试课 相对原教程&#xff0c;我在学习开始时&#xff08;2023.08&#xff09;采用的是当前最新版本&#xff1a; 项版本babel/core…...

Python编程中的异常处理

什么是异常&#xff1f; 程序错误&#xff08;errors&#xff09;有时也被称为程序异常&#xff08;exceptions&#xff09;&#xff0c;这是每个编程人员都会经常遇到的问题。在过去&#xff0c;当遇到这类情况时&#xff0c;程序会终止执行并显示错误信息&#xff0c;通常是…...

mysql3.7之触发器

1.触发器的定义 触发器是由事件来触发某个操作&#xff0c;这些事件包括INSERT、UPDATE、DELETE事件。所谓事件就是指用户的动作或者触发某项行为。如果定义了触发程序&#xff0c;当数据库执行这些语句时候&#xff0c;就相当于事件发生了&#xff0c;就会自动激发触发器执行…...

12.QT文件对话框 文件的弹窗选择-QFileDialog

目录 前言&#xff1a; 技能&#xff1a; 内容&#xff1a; 1. 界面 2.信号槽 3.其他函数 参考&#xff1a; 前言&#xff1a; 通过按钮实现文件弹窗选择以及关联的操作 效果图就和平时用电脑弹出的选文件对话框一样 技能&#xff1a; QString filename QFileDialog::ge…...

ArcGIS学习(八)基于GIS平台的控规编制办法

ArcGIS学习(八)基于GIS平台的控规编制办法 上一任务我们学习了”如何进行图片数据的矢量化?" 这一关我们来学习一个比较简单的案例一一”如何在ArcGIS中录入控规指标,绘制控规图纸?" 首先,先来看看这个案例的分析思路以及导入CAD格式的控规图纸。 接着,来看…...

软件测试-自动化测试-面试题研究,知识要点,高频、重点知识点,自动化测试知识要点、知识梳理-PYTHON+自动化,评估试题

自动化项目实战能力评估 介绍一下你的自动化测试框架&#xff1f; 我的框架主要根据分层思想设计了几个独立模块&#xff1a; 模块一&#xff1a;主要存放通用业务代码&#xff0c;比如接口访问&#xff0c;数据库操作&#xff0c;excel 操作&#xff0c;等等 模块二&#xf…...

一.重新回炉Spring Framework: 理解Spring IoC

1. 写在前面的话 说实话&#xff0c;从事java开发工作时间也不短了&#xff0c;对于Spring Framework&#xff0c;也是天天用&#xff0c;这期间也碰到了很多问题&#xff0c;也解决了很多问题。可是&#xff0c;总感觉对Spring Framework还是一知半解&#xff0c;不能有个更加…...

目标检测算法之YOLOv5的应用实例(零售业库存管理、无人机航拍分析、工业自动化领域应用的详解)

1.YOLOv5在"零售业库存管理"领域的应用 在零售业库存管理中,YOLOv5可以帮助自动化商品识别和库存盘点过程。通过使用深度学习模型来实时识别货架上的商品,零售商可以更高效地管理库存,减少人工盘点的时间和成本。以下是一个使用YOLOv5进行商品识别的Python脚本示…...

[蓝桥 2017]九宫幻方

九宫幻方 题目描述 小明最近在教邻居家的小朋友小学奥数&#xff0c;而最近正好讲述到了三阶幻方这个部分&#xff0c;三阶幻方指的是将 1~9 不重复的填入一个 3*3 的矩阵当中&#xff0c;使得每一行、每一列和每一条对角线的和都是相同的。 三阶幻方又被称作九宫格&#xf…...

Qt - 编译报错:“invalid use of incomplete type ‘class Ui::xxx‘ui(new Ui::xxx)”的解决方法

问题起因 今天在创建Qt设计器界面类时&#xff0c;类名的英文拼写错误&#xff0c;然后就重命名了文件&#xff0c;而Qt Creator也帮我自动修改了一部分内容&#xff0c;之后我手动将cpp文件中的#include " *** "里的内容给修改了&#xff0c;构造函数和析构函数处也…...

基于Doris构建亿级数据实时数据分析系统

背景 随着公司业务快速发展&#xff0c;对业务数据进行增长分析的需求越来越迫切&#xff0c;与此同时我们的业务数据量也在快速激增、每天的数据新增量大概在30w 左右&#xff0c;一年就会产生1 个亿的数据&#xff0c;显然基于传统MySQL数据库已经无法支撑满足以上需求 基于上…...

javascript中的prototype;javascript中的原型链

文章目录 深入理解JavaScript原型链1. 什么是原型链&#xff1f;2. 原型链的结构3. 如何访问原型链&#xff1f;4. 示例演示原型链5. 原型链与继承6. 实际应用场景 深入理解JavaScript原型链 1. 什么是原型链&#xff1f; 在JavaScript中&#xff0c;每个对象都有一个原型&am…...

CI/CD部署

什么是CI&#xff0c;什么是CD CI和CD是软件开发中持续集成和持续交付的缩写。 CI代表持续集成&#xff08;Continuous Integration&#xff09;&#xff0c;是一种实践&#xff0c;旨在通过自动化构建、测试和代码静态分析等过程&#xff0c;频繁地将代码变更合并到共享存储…...

定点数,定点数二维向量,定点数三维向量,定点数数学类

定点数&#xff0c;定点数二维向量&#xff0c;定点数三维向量&#xff0c;定点数数学类 介绍浮点数定点数封装的定点数FixedNumber定点数二维向量定点数三维向量定点数数学类总结 介绍 众所周知定点数是用于做帧同步时保持不同cpu不同设备保持一致稳定的代替浮点数的变量&…...

安装ts-node有感

起因&#xff1a;想要在vsCode上运行ts脚本 解决方案&#xff1a; 1.安装vsCode插件 code runner 2.全局安装ts-node 这一步遇到三个问题&#xff1a; ①.node版本问题&#xff1a;需安装版本18以上node&#xff0c;可使用nvm去控制不同的node版本 ②.certificate has exp…...

飞天使-k8s知识点18-kubernetes实操3-pod的生命周期

文章目录 探针的生命周期流程图prestop 探针的生命周期 docker 创建&#xff1a;在创建阶段&#xff0c;你需要选择一个镜像来运行你的应用。这个镜像可以是公开的&#xff0c;如 Docker Hub 上的镜像&#xff0c;也可以是你自己创建的自定义镜像。创建自己的镜像通常需要编写一…...

顺子日期 蓝桥杯

调用API 思路: 设置Calendar的属性&#xff0c;获取Calendar的毫秒数&#xff0c;转换成指定格式的字符串(yyyyMMdd)&#xff0c;判断字符串中是否包含符合条件的&#xff0c;若有就1&#xff0c; 迭代: 每次循环给Calendar加上一天即可 import java.text.SimpleDateFormat; im…...

基于 Python 的景区票务人脸识别系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

OpenAI全新发布的Sora,到底意味着什么?

16日凌晨&#xff0c;OpenAI发布了文本视频的工具&#xff08;text-do-video&#xff09;Sora&#xff0c;整个世界再次被震撼。 Sora的出现&#xff0c;到底意味着什么&#xff1f; 目录 Sora的背景与概述Sora是什么&#xff1f;能为我们做些什么&#xff1f;存在的一些问题 文…...

预防.locked.locked1勒索病毒攻击:保护数据安全

导言&#xff1a; 随着科技的发展&#xff0c;网络安全问题日益严重&#xff0c;其中勒索病毒是一种令人头痛的威胁。.locked和.locked1是两种常见的勒索病毒&#xff0c;它们会将用户的数据文件加密&#xff0c;并要求支付赎金以获取解密密钥。本文将介绍这两种勒索病毒的特点…...

【力扣hot100】刷题笔记Day5

前言 回学校了&#xff0c;荒废了半天之后打算奋发图强猛猛刷题&#xff0c;找实习&#xff01;赚钱&#xff01;&#xff01; 560. 和为 K 的子数组 - 力扣&#xff08;LeetCode&#xff09; 前缀法 哈希表 这个题解解释比官方清晰&#xff0c;截个图方便看&#xff0c;另一…...

解锁Spring Boot中的设计模式—04.桥接模式:探索【桥接模式】的奥秘与应用实践!

桥接模式 桥接模式也称为桥梁模式、接口模式或者柄体&#xff08;Handle and Body&#xff09;模式&#xff0c;是将抽象部分与他的具体实现部分分离&#xff0c;使它们都可以独立地变化&#xff0c;通过组合的方式建立两个类之间的联系&#xff0c;而不是继承。 桥接模式是一种…...

[talib][python]ta-lib所有whl文件下载地址汇总

TA-Lib-0.4.28-cp312-cp312-win-amd64.whl下载地址&#xff1a;https://download.csdn.net/download/FL1623863129/88589956 ta-lib-0.4.25-cp311-cp311-win-amd64.whl下载地址&#xff1a;https://download.csdn.net/download/FL1623863129/88265329 TA-Lib-0.4.24-cp310-cp31…...

【开源】JAVA+Vue.js实现农村物流配送系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统登录、注册界面2.2 系统功能2.2.1 快递信息管理&#xff1a;2.2.2 位置信息管理&#xff1a;2.2.3 配送人员分配&#xff1a;2.2.4 路线规划&#xff1a;2.2.5 个人中心&#xff1a;2.2.6 退换快递处理&#xff1a;…...

锁相放大器,数字锁相放大器.C和python版的源代码

数字锁相放大器. 锁相放大器, 它是一种可以从高噪声环境中提取出特定频率信号的放大器&#xff0c;工作原理主要是利用正弦函数的正交性进行信号的相位检测和幅值测量。如果你对锁相放大器感兴趣&#xff0c;我可以给你更详细的解释。 数字锁相放大器是利用软件算法来实现提取…...

(02)Hive SQL编译成MapReduce任务的过程

目录 一、架构及组件介绍 1.1 Hive底层架构 1.2 Hive组件 1.3 Hive与Hadoop交互过程 二、Hive SQL 编译成MR任务的流程 2.1 HQL转换为MR源码整体流程介绍 2.2 程序入口—CliDriver 2.3 HQL编译成MR任务的详细过程—Driver 2.3.1 将HQL语句转换成AST抽象语法树 词法、语…...

【C++初阶】值得一刷的字符串string相关oj题

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…...

《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)

文章目录 10.1 构建微服务架构 - 探索 Go 语言的微观世界10.1.1 基础知识讲解10.1.2 重点案例&#xff1a;订单处理系统订单服务测试服务 10.1.3 拓展案例 1&#xff1a;用户认证服务安装所需的包实现用户模型和存储实现 JWT 生成和验证实现认证服务测试服务 10.1.4 拓展案例 2…...

代码随想录算法训练营第34天| Leetcode 860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球

文章目录 Leetcode 860.柠檬水找零Leetcode 406.根据身高重建队列Leetcode 452. 用最少数量的箭引爆气球 Leetcode 860.柠檬水找零 题目链接&#xff1a;Leetcode 860.柠檬水找零 题目描述&#xff1a; 在柠檬水摊上&#xff0c;每一杯柠檬水的售价为 5 美元。顾客排队购买你的…...

数据结构~二叉树(基础知识)

上一篇博客我们对树有了初步了解与学习&#xff0c;这篇我将初步学习二叉树&#xff01;&#xff01;&#xff08;新年快乐&#xff01;&#xff09; 目录 二叉树 1、定义&#xff1a; 2、特点&#xff1a; 3、基本形态&#xff1a; 4、二叉树的种类&#xff1a; &…...

AI大模型学习笔记之四:生成式人工智能(AIGC)是如何工作的?

OpenAI 发布 ChatGPT 已经1年多了&#xff0c;生成式人工智能&#xff08;AIGC&#xff09;也已经广为人知&#xff0c;我们常常津津乐道于 ChatGPT 和 Claude 这样的人工智能系统能够神奇地生成文本与我们对话&#xff0c;并且能够记忆上下文情境。 Midjunery和DALLE 这样的AI…...

bat脚本 创建计划任务 一分钟设置ntp同步周期为60s

要在Windows中使用批处理脚本&#xff08;.bat&#xff09;创建一个计划任务来每分钟同步一次NTP时间&#xff0c;你可以使用schtasks命令来创建计划任务。下面是一个示例脚本&#xff0c;展示了如何创建这样一个计划任务&#xff1a; echo off set "taskNameSyncNTP"…...

python数据分析numpy基础之mean用法和示例

1 python数据分析numpy基础之mean用法和示例 python的numpy库的mean()函数&#xff0c;用于计算沿指定轴(一个轴或多个轴)的算术平均值。 用法 numpy.mean(a, axisNone, dtypeNone, outNone, keepdims<no value>, *, where<no value>)描述 返回数组元素的平均值…...

微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用

&#x1f3f7;️个人主页&#xff1a;鼠鼠我捏&#xff0c;要死了捏的主页 &#x1f3f7;️系列专栏&#xff1a;Golang全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&…...

只允许访问固定网址,如何让电脑只能上指定的网站

在企业管理中&#xff0c;确保员工在工作时能够专注于指定的任务和资源至关重要。为了实现这一目标&#xff0c;许多企业选择限制员工电脑的访问权限&#xff0c;只允许他们访问固定的网址或网站。 这种策略不仅有助于提高工作效率&#xff0c;还能减少因不当上网行为带来的安全…...

作业帮 x TiDB丨多元化海量数据业务的支撑

导读 作业帮是一家成立于 2015 年的在线教育品牌&#xff0c;致力于用科技手段助力教育普惠。经过近十年的积累&#xff0c;作业帮运用人工智能、大数据等技术&#xff0c;为学生、老师、家长提供学习、教育解决方案&#xff0c;智能硬件产品等。随着公司产品和业务场景越来越…...

文生图提示词:天气条件

天气和气候 --天气条件 Weather Conditions 涵盖了从基本的天气类型到复杂的气象现象&#xff0c;为描述不同的天气和气候条件提供了丰富的词汇。 Sunny 晴朗 Cloudy 多云 Overcast 阴天 Partly Cloudy 局部多云 Clear 清晰 Foggy 雾 Misty 薄雾 Hazy 朦胧 Rainy 下雨 Showers …...

【nginx实践连载-3】发布VSTO应用

要使用 Nginx 发布 VSTO 应用程序&#xff0c;需要将 ClickOnce 发布文件夹部署到 Nginx 服务器上。以下是一些步骤&#xff1a; 将 ClickOnce 发布文件夹复制到 Nginx 服务器上。确认 Nginx 配置文件中有一个指向 ClickOnce 发布文件夹的位置块。确保Nginx 配置文件中启用了 …...

【前端工程化面试题】使用 webpack 来优化前端性能/ webpack的功能

这个题目实际上就是来回答 webpack 是干啥的&#xff0c;你对webpack的理解&#xff0c;都是一个问题。 &#xff08;1&#xff09;对 webpack 的理解 webpack 为啥提出 webpack 是啥 webpack 的主要功能 前端开发通常是基于模块化的&#xff0c;为了提高开发效率&#xff0…...

思迈特再获国家权威认证:代码自主率98.78%

日前&#xff0c;思迈特软件自主研发的商业智能与数据分析软件&#xff08;Smartbi Insight&#xff09;通过中国赛宝实验室&#xff08;工业和信息化部电子第五研究所&#xff09;代码扫描测试&#xff0c;Smartbi Insight V11版本扫描测得代码自主率为98.78%的好成绩&#xf…...

JavaScript排序

直接看代码 <table border"1" cellspacing"0"><thead class"tou"><tr><td>选择按钮</td><td>汽车编号</td><td>汽车图片</td><td>汽车系列名称</td><td>汽车能源</…...

【读书笔记】ICS设备及应用攻击(一)

工控系统通常是由互联设备所构成的大型复杂系统&#xff0c;这些设备包括类似于人机界面&#xff08;HMI&#xff09;、PLC、传感器、执行器以及其他使用协商好的协议进行相互通信的设备。所有交互背后的驱动力都是软件&#xff0c;软件为工控系统中几乎所有部分的运行提供支撑…...