[嵌入式系统-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 在配置方面有些许差异,但它们都提供了强大的配置工具和灵活的配置选项,让用户可以根据需要定制适合自己项目的操作系统。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于虚拟化的一切

茶还是咖啡? Xbox 还是 PlayStation? Chrome 还是 Firefox? 我们习惯于做出棘手的选择。在云计算中,选择 Linux 还是 Windows 也不例外,通常涉及成本、灵活性和项目特定要求。虽然 Linux 具有开源和经济高效的优势&…

半理想架构的Doherty功率放大器理论与仿真-基于GAN器件CGH40010F

半理想架构的Doherty功率放大器理论与仿真-基于GAN器件CGH40010F 理想架构的Doherty功率放大器理论与仿真中已经介绍了如何在ADS中使用理想电流源来对DPA的架构进行仿真。但是理想的电流源太理想了,电压、电流的许多行为都是需要自己使用数学公式去严格定义&#x…

集团企业大数据应用:突破痛点,释放数据价值

在数字经济日益崛起的背景下,集团企业以其管理范围广泛、业务领域多元化和分支机构复杂化的特性,在市场竞争中扮演着重要角色。为了维持和提升这种竞争力,大数据应用成为了集团企业不可或缺的战略工具。然而,在实际应用中&#xf…

武汉灰京文化浅谈手游崛起的新游戏时代

随着智能手机性能的不断提升,手游正逐渐迈向与主机和PC游戏相媲美的领域。高性能处理器、强大的图形处理能力以及智能化技术的融合,使得手游可以实现更高画质和更流畅的操作体验。而虚拟现实(VR)和增强现实(AR&#xf…

模型可视化

模型标题可视化 可视化工具:Graphiz、Netron、ZetaneEngine 7.2.2Graphiz可视化工具 Graphiz是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形,使用它可以非常方便地对任何图形进行可视化。 Graphiz的使用步骤包括创…

Oracle 基础入门指南

一、什么是Oracle? Oracle是一款由美国Oracle公司开发的关系型数据库管理系统。它支持SQL查询语言,并提供了丰富的功能和工具,用于管理大规模数据存储、处理和访问。Oracle被广泛应用于企业级应用中,包括金融、电信、零售等各行各…

阿里云服务器部署配置选择全攻略

阿里云服务器配置怎么选择?根据实际使用场景选择,个人搭建网站可选2核2G配置,访问量大的话可以选择2核4G配置,企业部署Java、Python等开发环境可以选择2核8G配置,企业数据库、Web应用或APP可以选择4核8G配置或4核16G配…

测试用例执行计划 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C 题目描述 某个产品当前迭代周期内有N个特性(F1, F2, ..., FN)需要进行覆盖测试,每个特性都被评估了对应的优先级,特性使用其…

Python六级考试笔记

Python六级考试笔记【源源老师】 六级标准 一、 掌握文件操作及数据格式化。 二、 掌握数据可视化操作。 三、 理解类与对象的概念,初步掌握类与对象的使用。 四、 掌握SQLite数据库基础编程。 五、 掌握简单的使用tkinter的GUI设计。 ​ 1. 文件操作 &#xff0…

海外网红营销指南:打造情感共鸣的6大策略解析

随着全球互联网的发展,海外网红营销已经成为品牌推广的一种重要方式。然而,在竞争激烈的市场中,要让品牌在海外市场脱颖而出,仅仅依靠产品本身的特点和广告的宣传已经不再足够。情感共鸣,作为一种更为深刻、更为有力的…

春节专题|产业7问:区块链厂商的现在和未来——数字资产厂商

2023转瞬即逝,不同于加密领域沉寂一整年后在年末集中爆发,对于我国的区块链厂商而言,稳中求胜才是关键词,在平稳发展的基调下,产业洗牌也悄无声息的到来。 从产业总体而言,在经过了接近3年的快速发展后&…

『运维备忘录』之 CMD 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大…

C高级D5作业

1.#!/bin/bash read -p "请输入一个字符>>" -n 1 c echo case $c in [[:lower:]]) echo "小写" ;; [[:upper:]]) echo "大写" ;; [1-9]) echo "数字" ;; …

使用Python生成二维码的完整指南

无边落木萧萧下,不如跟着可莉一起游~ 可莉将这篇博客收录在了:《Python》 可莉推荐的优质博主首页:Kevin ’ s blog 本文将介绍如何使用Python中的qrcode库来生成二维码。通过简单的代码示例和详细解释,读者将学习如何在Python中轻…

第五次作业:LMDeploy 的量化和部署

参考文档:https://github.com/InternLM/tutorial/blob/main/lmdeploy/lmdeploy.md 基础作业: 使用 LMDeploy 以本地对话、网页Gradio、API服务中的一种方式部署 InternLM-Chat-7B 模型,生成 300 字的小故事(需截图) …

Leetcode-589. N 叉树的前序遍历

题目: 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。 示例 1: 输入:root [1,null,3,2,4,…

【机器学习】机器学习常见算法详解第4篇:KNN算法计算过程(已分享,附代码)

本系列文章md笔记(已分享)主要讨论机器学习算法相关知识。机器学习算法文章笔记以算法、案例为驱动的学习,伴随浅显易懂的数学知识,让大家掌握机器学习常见算法原理,应用Scikit-learn实现机器学习算法的应用&#xff0…

Checklist系列:JVM自检四十问,万字整理,推荐收藏

基础 请简单的介绍一下jvm? JVM 全称:Java Virtual Machine(Java虚拟机)简介:JVM是一种虚拟机,它使计算机能够运行Java程序以及用其他语言编写并编译为Java字节码的程序。Java的设计理念之一是"一次编…

桌面文件删除了怎么恢复?恢复文件,3个小秘诀!

在日常使用电脑的过程中,很多用户会习惯性的将文件保存在电脑桌面上。因此不可避免会出现桌面文件丢失的情况。这或许会对我们的工作和学习造成影响。 桌面文件删除了怎么恢复?如果你还没有掌握正确的恢复方法。记得继续往下看,下文有实用的…

C语言—数组一维(含冒泡排序)

1.用数组存储10个整型数&#xff0c;通过键盘输入一个数&#xff0c;找出该数在数组中的下标值&#xff1b; /*1.用数组存储10个整型数&#xff0c;通过键盘输入一个数&#xff0c;找出该数在数组中的下标值&#xff1b;*/#include <stdio.h>int main(void) {int nums[…