树莓派超全系列教程文档--(33)树莓派启动选项
树莓派启动选项
- 启动选项
- `start_file` ,`fixup_file`
- `cmdline`
- `kernel`
- `arm_64bit`
- `ramfsfile`
- `ramfsaddr`
- `initramfs`
- `auto_initramfs`
- `disable_poe_fan`
- `disable_splash`
- `enable_uart`
- `force_eeprom_read`
- `os_prefix`
- `otg_mode` (仅限Raspberry Pi 4)
- `overlay_prefix`
- 配置属性
- `boot_ramdisk`
- `boot_load_flags`
- `enable_rp1_uart`
- `pciex4_reset`
- `uart_2ndstage`
- `erase_eeprom`
- `eeprom_write_protect`
- `os_check`
- `bootloader_update`
- 安全引导配置属性
- `program_pubkey`
- `revoke_devkey`
- `program_rpiboot_gpio`
- `program_jtag_lock`
文章来源: http://raspberry.dns8844.cn/documentation
原文网址
启动选项
start_file
,fixup_file
这些选项指定在引导步骤前传输到 VideoCore GPU 的固件文件。
start_file
指定要使用的 VideoCore 固件文件。
fixup_file
指定用于修改 start_file 中使用的内存位置以匹配GPU内存拆分的文件。
start_file
和 fixup_file
是匹配的一对,使用不匹配的文件导致板子无法启动。这是一个高级选项,因此我们建议您使用 start_x
和 start_debug
而不是此选项。
NOTE: 不能以这种方式选择裁剪固件( start*cd.elf
和 fixup*cd.dat
)- 系统将无法启动。启用裁剪固件的唯一方法是指定 gpu_mem=16
。裁剪固件删除了对编解码器、3D和调试日志记录的支持,并将初始早期启动帧缓冲区限制为1080p @16bpp - 尽管KMS可以在稍后阶段用32bpp 4K帧缓冲区替换它,就像任何固件一样。
NOTE: Raspberry Pi 5, Compute Module 5, 和Raspberry Pi 500固件独立存储在引导加载程序EEPROM中。
cmdline
cmdline
是引导分区上用于读取内核命令行字符串的替代文件名;默认值为 cmdline.txt
。
kernel
kernel
是引导分区上用于加载内核的替代文件名。Raspberry Pi 1、Zero 和 Zero W 以及Raspberry Pi Compute Module 1 的默认值为 kernel.img
。Raspberry Pi 2、3、3+ 和 Zero 2 W 以及 Raspberry Pi Compute Module 3 和 3+ 的默认值为 kernel7.img
。Raspberry Pi 4 和 400 以及 Raspberry Pi Compute Module 4的默认值为 kernel8.img
,如果设置 arm_64bit
为 0,则使用 kernel7l.img
。
Raspberry Pi 5, Compute Module 5, 和 Raspberry Pi 500 固件默认加载 kernel_2712.img
,因为此内核包含特定于 Raspberry Pi 5 的优化(例如16K页面大小)。如果此文件不存在,则将加载通用64位内核( kernel8.img
)。
arm_64bit
如果设置为1,内核将以64位模式启动。设置为0选择32位模式。
在64位模式下,固件将选择适当的内核(例如 kernel8.img
),除非定义了显式的 kernel
选项,在这种情况下使用该选项。
在Pi 4系列(Pi4B、Pi 400、CM4和CM4S)上默认为1,在所有其他平台上默认为0。但是,如果显式 kernel
选项中给出的名称与已知内核之一匹配,则将相应地设置 arm_64bit
。
64 位内核有以下几种形式:
- 未压缩的映像文件
- 映像的 gzip 压缩包
这两种形式都可以使用 img
文件扩展名;引导加载程序使用文件开头的签名字节识别存档。
以下 Raspberry Pi 型号支持此标记:
- 2B rev 1.2
- 3B
- 3A+
- 3B+
- 4B
- 400
- 2 W
- Compute Module 3
- Compute Module 3+
- Compute Module 4
- Compute Module 4S
从 Raspberry Pi 5, Compute Module 5, 和 Raspberry Pi 500 以后的型号 仅 支持 64 位内核。这些型号不支持此标记。
ramfsfile
ramfsfile
是要加载的 ramfs
的引导分区上的可选文件名。
NOTE: 较新的固件支持加载多个 ramfs
文件。您应该用逗号分隔多个文件名,注意不要超过80个字符的行长限制。所有加载的文件都在内存中连接起来,并被视为单个 ramfs
blob。更多信息在 论坛上。
ramfsaddr
ramfsaddr
是应该加载 ramfsfile
的内存地址。
initramfs
initramfs
命令同时指定了 ramfs 文件名 和 内存地址。它在一个参数中同时执行 ramfsfile
和 ramfsaddr
的操作。地址也可以是 followkernel
(或 0
),以便将其放在内核映像之后的内存中。示例值如下 initramfs initramf.gz 0x00800000
或 initramfs init.gz followkernel
。与 ramfsfile
一样,较新的固件允许通过逗号分隔多个文件名来加载多个文件。
NOTE: 此选项使用与所有其他选项不同的语法,您不应在此处使用 =
字符。
auto_initramfs
如果 auto_initramfs
设置为1,则使用与内核选择相同的规则查找initramfs文件。
disable_poe_fan
默认情况下,即使没有连接 PoE HAT,也会在启动时对 I2C 总线进行探测。将该选项设置为 1 将禁止通过 I2C(ID_SD 和 ID_SC)引脚控制 PoE HAT 风扇。如果不使用 PoE HAT,这将有助于缩短启动时间。
disable_splash
如果将 disable_splash
设置为 1
,则启动时不会显示彩虹闪屏。默认值为 0
。
enable_uart
enable_uart=1
(与 cmdline.txt
中的 console=serial0,115200
结合使用)要求内核创建一个串行控制台,可通过 GPIO 14 和 15(40 针接头的针脚 8 和 10)访问。编辑 cmdline.txt
,删除 quiet
行后,内核的启动信息也会出现在该行。另请参阅 uart_2ndstage
。
force_eeprom_read
将该选项设为 0
,可防止固件在上电时尝试读取 I2C HAT EEPROM(连接到引脚 ID_SD 和 ID_SC)。另请参阅 disable_poe_fan
。
os_prefix
os_prefix
是一个可选设置,允许在同一卡上安装的多个版本的内核和设备树文件之间进行选择。操作系统文件指的是内核、initramfs、cmdline.txt、.dtbs 和 overlays。前缀通常是目录名,但也可以是文件名的一部分,如 “test-”。因此,目录前缀必须包括尾部的 /
字符。
为了降低系统无法启动的可能性,固件首先测试提供的前缀值的可行性 — 除非在新位置/名称处可以找到指定的内核和.dtb,否则前缀将被忽略(设置为"")。这种可行性测试的一个特殊情况应用于覆盖,如果 +${os_prefix}${overlay_prefix}+
存在,它只会从 +${os_prefix}${overlay_prefix}README+
加载(其中overlay_prefix, overlay_prefix
的默认值是 overlay/
),否则它会忽略 os_prefix
并将覆盖视为共享。
(固件在检查前缀时检查密钥文件而不是目录的存在的原因有两个:前缀可能不是目录,并且并非所有引导方法都支持测试目录的存在。)
NOTE: 任何用户指定的操作系统文件都可以通过使用绝对路径(相对于引导分区)绕过所有前缀 - 只需使用 kernel=/my_common_kernel.img
另请参见 overlay_prefix, overlay_prefix
和 upstream_kernel
。
otg_mode
(仅限Raspberry Pi 4)
USB On-The-Go(通常缩写为OTG)是一项功能,允许支持带有适当OTG电缆的USB设备将自己配置为USB主机。在较旧的Raspberry Pi上,一个USB 2控制器用于USB主机和设备模式。
旗舰产品从Raspberry Pi 4B 和 键盘系列产品 从 Raspberry Pi 400(不是CM4或CM4IO)以后添加了一个高性能USB 3控制器,通过PCIe连接,以驱动主USB端口。传统的USB 2控制器仍然可以在USB-C电源连接器上用作设备( otg_mode=0
,默认值)。
otg_mode=1
请求将功能更强大的XHCI USB 2控制器用作该USB-C连接器上的可以替换的主机控制器。
NOTE: Raspberry Pi OS 在 /boot/firmware/config.txt
中的[CM4]配置中已经默认添加此设置。
overlay_prefix
指定加载overlays的子目录/前缀,默认为 overlays/
(注意尾部的 /
)。如果与 os_prefix,os_prefix
结合使用, os_prefix
将在 overlay_prefix
之前,例如, dtoverlay=disable-bt
将尝试加载 +${os_prefix}${overlay_prefix}disable-bt.dtbo+
。
NOTE: 除非存在 +${os_prefix}${overlay_prefix}README+
,否则overlays将与主操作系统共享(即忽略 os_prefix
)。
配置属性
Raspberry Pi 5 需要一个 config.txt
文件,以表明分区是可启动的。
boot_ramdisk
如果该属性设置为 1
,则引导加载程序将尝试加载一个名为 boot.img
的内存盘文件,其中包含 boot filesystem。随后的文件(如 start4.elf
)将从内存盘读取,而不是原始启动文件系统。
boot_ramdisk
的主要用途是支持 安全启动
,不过,未签名的 boot.img
文件对网络启动或 RPIBOOT
配置也很有用。
- ramdisk 文件的最大大小为 96MB。
boot.img
文件是原始磁盘.img
文件。建议使用无 MBR 的普通 FAT32 分区格式。- 在操作系统启动之前,ramdisk 文件系统的内存会被释放。
- 如果选择 TRYBOOT,引导加载程序将搜索
tryboot.img
而不是boot.img
。 - 另请参阅 autoboot.txt。
有关 secure-boot
和创建 boot.img
文件的更多信息,请参阅 USBBOOT.
Default: 0
boot_load_flags
自定义固件(裸机)的实验属性。
位 0 (0x1) 表示 .elf 文件是定制固件。这将禁用任何兼容性检查(例如,是否支持 USB MSD 启动),并在启动可执行文件前重置 PCIe。
与 Raspberry Pi 5 无关,因为它没有 start.elf
文件。
Default: 0x0
enable_rp1_uart
设置为 1
时,固件会将 RP1 UART0 初始化为 115200bps,并且在启动操作系统前不会复位 RP1(可使用 pciex4_reset=1
单独配置)。
这使得在早期启动代码(例如在裸机调试期间)中更容易在 40 针上获得 UART 输出。
Default: 0x0
pciex4_reset
仅限 Raspberry Pi 5。
默认情况下,RP1
使用的 PCIe x4 控制器会在启动操作系统前复位。如果将该参数设置为 0
,则重置将被禁用,操作系统或裸机代码可从引导加载程序继承 PCIe 配置设置。
Default: 1
uart_2ndstage
如果 uart_2ndstage
为 1
,则启用 UART 的调试记录。该选项也会在 start.elf
中自动启用 UART 日志记录。Boot options 页面对此也有说明。
BOOT_UART "属性也会启用引导加载器 UART 日志,但除非同时设置了 uart_2ndstage=1
,否则不会在 start.elf
中启用 UART 日志。
Default: 0
erase_eeprom
如果 erase_eeprom
设置为 1
,那么 recovery.bin
将擦除整个 SPI EEPROM,而不是烧录引导程序映像。此属性对正常启动没有影响。
Default: 0
eeprom_write_protect
配置 EEPROM 写入状态寄存器
。可将其设置为将整个 EEPROM 标记为写保护,或清除写保护。
该选项必须与控制 EEPROM 写状态寄存器
更新的 EEPROM /WP
引脚结合使用。 除非同时配置了 写入状态寄存器
,否则将 /WP
拉低(CM4 的 EEPROM_nWP
或 Raspberry Pi 4 的 TP5
)不会对 EEPROM 进行写保护。
详情请参见 Winbond W25x40cl 或 Winbond W25Q16JV 数据手册。
recovery.bin
的 config.txt
中的 eeprom_write_protect
设置。
NOTE: flashrom
不支持清除写保护区域,如果定义了写保护区域,将无法更新 EEPROM。
在 Raspberry Pi 5 上,/WP
默认为低电平,因此一旦配置了 写状态寄存器
,就会启用写保护。要清除写保护,可通过连接 TP14
和 TP1
将 /WP
拉高。
Default: -1
os_check
在 Raspberry Pi 5 上,固件会自动检查兼容的设备树文件,然后再尝试从当前分区启动。否则,不兼容的旧内核将被加载,然后挂起。
要禁用此检查(例如用于裸机开发),请在 config.txt 中设置 os_check=0
。
Default: 1
bootloader_update
该选项可设置为 0,以阻止自更新,而无需更新 EEPROM 配置。在通过网络启动更新多个 Raspberry Pi 时,该选项有时非常有用,因为可以对每个 Raspberry Pi 进行控制(例如,通过 config.txt
中的序列号过滤器)。
Default: 1
安全引导配置属性
如何使用 Raspberry Pi 安全启动
本白皮书介绍如何在基于 Raspberry Pi 4 的设备上实现安全启动。有关我们实现安全启动实施方法的概述,请参阅 Raspberry Pi 4 安全启动 白皮书。安全启动系统适用于基于 buildroot
的操作系统镜像;不建议或不支持将其用于 Raspberry Pi OS。
下面的 config.txt
属性用于对 secure-boot
OTP 设置进行编程。这些更改是不可逆的,只能在刷新引导加载程序 EEPROM 映像时通过 RPIBOOT
进行编程。这可确保 “安全启动” 无法通过远程或意外插入过期 SD 卡映像进行设置。
有关启用 secure-boot
的更多信息,请参阅 USBBOOT 库中的 安全启动须知 和 安全启动指引。
program_pubkey
如果该属性设置为 1
,那么 recovery.bin
将把 EEPROM 映像中公钥的哈希值写入 OTP。 设置后,引导加载程序将拒绝使用不同 RSA 密钥签名的 EEPROM 映像或未签名的映像。
Default: 0
revoke_devkey
如果该属性设置为 1
,recovery.bin
将向 OTP 写入一个值,防止 ROM 加载不支持 安全启动
的旧版本第二阶段引导加载程序。这可以防止通过恢复到旧版本的引导加载程序来关闭 secure-boot
。
Default: 0
program_rpiboot_gpio
Compute Module有一个专用的 nRPIBOOT
跳线,用于选择 RPIBOOT
模式。带有 EEPROM 的旗舰版和键盘版 Raspberry Pi 设备没有专用的 nRPIBOOT
跳线。要在旗舰版和键盘版设备上选择 RPIBOOT
模式,请将下列 GPIO 引脚之一拉低:
2
4
5
6
7
8
该属性不依赖于secure-boot
,但要确认该 GPIO 配置不会与任何可能在启动期间将 GPIO 拉低的 HAT 冲突。
为了安全起见,只能通过 RPIBOOT
对该属性进行编程,因此必须首先使用 erase_eeprom
清除引导加载程序 EEPROM。这将导致 BCM2711 ROM 故障切换到 RPIBOOT
模式,从而允许设置该选项。
在 BCM2712 上,您也可以通过按住电源按钮并同时连接 USB-C 电源来强制启动 RPIBOOT
模式。
Default: {nbsp}
program_jtag_lock
如果该属性设置为 1
,则 recovery.bin
将编程一个 OTP 值,阻止使用 VideoCore JTAG。该选项要求同时设置 program_pubkey
和 revoke_devkey
。该选项可能会阻止故障分析,只有在设备经过全面测试后才可设置。
Default: 0
上一篇 – 树莓派超全系列教程文档–(32)config.txt常用音频配置
下一篇 – 树莓派超全系列教程文档–(34)树莓派配置GPIO
相关文章:
树莓派超全系列教程文档--(33)树莓派启动选项
树莓派启动选项 启动选项start_file ,fixup_filecmdlinekernelarm_64bitramfsfileramfsaddrinitramfsauto_initramfsdisable_poe_fandisable_splashenable_uartforce_eeprom_reados_prefixotg_mode (仅限Raspberry Pi 4)overlay_prefix配置属…...
dotnet core webapi 实现 异常处理中间件
目录 第一步:创建异常处理中间件类(自定义响应格式) 第二步:在 Program.cs 中使用中间件 三、效果 第一步:创建异常处理中间件类(自定义响应格式) public static class ExceptionMiddleware…...
实现Azure Function安全地请求企业内部API返回数据
需要编写一个Function在Azure云上运行,它需要访问企业内部的API获取JSON格式的数据,企业有网关和防火墙,API有公司的okta身份认证,通过公司的域账号来授权访问,现在需要创建一个专用的域账号,让Function访问…...
实现Azure Databricks安全地请求企业内部API返回数据
需要编写一个Databricks在Azure云上运行,它需要访问企业内部的API获取JSON格式的数据,企业有网关和防火墙,API有公司的okta身份认证,通过公司的域账号来授权访问,现在需要创建一个专用的域账号,让Databrick…...
结合建筑业务讲述TOGAF标准处理哪种架构
TOGAF标准处理哪种架构 内容介绍业务架构业务策略,治理,组织和关键业务流程数据架构组织的逻辑和物理数据资产以及数据管理资源的结构应用架构待部署的各个应用程序,它们之间的交互以及与组织核心业务流程的关系的蓝图技术架构支持业务&#…...
深度学习--卷积神经网络CNN原理
文章目录 一、CNN图像原理1、了解CNN如何处理图像 二、CNN图像识别1、画面不变性2、主要表现1)平移不变性2)尺度不变性3)旋转不变性 3、传统神经网络1)数据预处理2)特征提取3)搭建神经网络模型4)…...
PostgreSQL 常用客户端工具
PostgreSQL 常用客户端工具 PostgreSQL 拥有丰富的客户端工具生态系统,以下是各类常用工具的详细分类和介绍: 一 图形化客户端工具 1.1 跨平台工具 工具名称特点适用场景许可证pgAdmin官方出品,功能全面开发/运维PostgreSQLDBeaver支持多…...
PostgreSQL数据库yum方式安装详解
PostgreSQL数据库yum方式安装 1. 基础环境配置2. 前期安装准备3. 软件安装3.1 YUM方式安装(PG 13)3.1.1 安装rpm仓库3.1.2 安装软件包PG133.1.3 初始化数据库3.1.4 启动数据库3.1.5 开机自启动3.1.6 编辑环境变量 4. 安装后配置 1. 基础环境配置 2. 前期…...
浅析vue2和vue3的区别
以下是 Vue 2 和 Vue 3 的主要区别: 一、核心特性 1. 响应式机制 Vue 2: 基于 Object.defineProperty 实现响应式。无法检测对象属性的新增和删除,需要使用 Vue.set 或 $set。Vue 3: 使用 Proxy 替代 Object.defineProperty。能够直接检测对象属性的新增和删除,无需额外方…...
【Linux我做主】make和makefile自动化构建
make和makefile自动化构建 make和makefile自动化构建github地址前言背景介绍为什么需要make和makefile? make和makefile解析什么是make和makefile依赖关系和依赖方法核心语法结构简单演示编译清理 多阶段编译示例 make时执行的顺序场景1:clean目标在前(特…...
spring boot应用部署IIS
Windows IIS 部署 Spring Boot 应用详细指南 本文档提供了在 Windows Server 上使用 IIS 部署 Spring Boot 应用的完整步骤和最佳实践。 目录 概述前期准备Spring Boot 应用准备安装配置必要组件配置 IIS 站点配置反向代理配置 Windows 服务配置应用自启动HTTPS 配置日志配置…...
Linux系统之部署TestNet资产管理系统
Linux系统之部署TestNet资产管理系统 一、TestNet 介绍1.1 TestNet简介1.2 主要特点1.3 主要使用场景 二、本次实践规划2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、部署TestNet系统4.1 下载T…...
@EnableAsync+@Async源码学习笔记之六
接上文,我们本文分析 AsyncExecutionAspectSupport 的源码: package org.springframework.aop.interceptor;import java.lang.reflect.Method; import java.util.Map; import java.util.concurrent.Callable; import java.util.concurrent.CompletableFu…...
SQL系列:常用函数
1、【MySQL】合并字段函数(列转行) 它可以将两个字段中的数据合并到一个字段中。 1)CONCAT函数 CONCAT函数可以将多个字段中的数据合并到一个字段中。它的语法格式如下: SELECT CONCAT(字段1,字段2,...字段N) FROM 表名;SELEC…...
Git 中修改某个特定的commit提交内容
在 Git 中修改某个特定的提交(commit)通常需要使用 交互式变基(Interactive Rebase) 或 修改提交(Commit Amend)。以下是不同场景下的具体操作步骤: 一、修改最近的提交(最新提交&am…...
FHS --- linux目录结构(部分目录解释)
根目录(/) 的意义和内容 : 根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录也与开机/还原/系统修复等动作有关 。 由于系统开机时需要特定的开机软件、核心档案、开机所需程序…...
不带无线网卡的Linux开发板上网方法
I.MX6ULL通过网线上网 设置WLAN共享修改开发板的IP 在使用I.MX6ULL-MINI开发板学习Linux的时候,有时需要更新或者下载一些资源包,但是开发板本身是不带无线网卡或者WIFI芯片的,尝试使用网口连接笔记本,笔记本通过无线网卡连接WIFI…...
图书管理系统C语言
图书管理系统C语言代码示例。 该系统可以实现图书信息(包含图书编号、书名、作者、出版社、价格、库存数量)的录入、显示、查询、修改、删除等功能,还具备一定的错误处理和输入验证。 #include <stdio.h> #include <stdlib.h> …...
关于大型语言模型的“生物学”
我知道我们已经聊过很多次,关于LLM是怎么运作的,它们的影响力,还有它们的使用场景。但尽管现在有那么多讲LLM的文章,它们本质上还是个黑箱。 但我们真正要问自己的问题是,为什么理解这些系统的内部结构很重要…...
图像预处理-图像边缘检测(流程)
一.高斯滤波 因为图像边缘检测就是把像素值有差异的地方提取出来,所以噪声会有很大影响,因此需要对图像进行平滑处理,高斯滤波是流程中常用的方法。 二.计算图像的梯度与方向 过程中通常使用sobel算子进行梯度计算,在OpenCV中&am…...
解锁思想道德修养的奥秘:用思维导图开启智慧之旅
在我们的成长过程中,思想道德修养如同基石,奠定了我们为人处世、面对生活挑战的基本态度和准则。而如何高效地梳理和掌握思想道德修养的丰富内容呢?思维导图这一强大工具为我们提供了独特视角和便捷途径。 思想道德修养的关键板块 道德理论…...
swagger的简介及使用方法
Swagger 是一个用于描述、生成、文档化和测试 RESTful API 的开源工具集。它可以自动生成 API 文档,帮助开发者理解和使用 API。Swagger 由 Swagger.io 提供,并已经发展成了一套广泛应用于 API 设计和文档的标准。 Swagger 项目的历史可以追溯到 2010 年…...
解决Ubuntu图形化界面操作适配问题
1 缘起 使用Ubuntu GNOME图形化系统作为开发机, 遇到与Windows操作不一致的地方,比如PyCharm、IntelliJ时无法正确代码跳转, 如CtrlAltLeft,CtrlAltRight无法正常在代码级别跳转,只能在文件级别跳转。 基于这个开端&a…...
End-to-End从混沌到秩序:基于LLM的Pipeline将非结构化数据转化为知识图谱
摘要:本文介绍了一种将非结构化数据转换为知识图谱的端到端方法。通过使用大型语言模型(LLM)和一系列数据处理技术,我们能够从原始文本中自动提取结构化的知识。这一过程包括文本分块、LLM 提示设计、三元组提取、归一化与去重,最终利用 NetworkX 和 ipycytoscape 构建并可…...
使用Ingress发布应用程序
使用Ingress发布应用程序 文章目录 使用Ingress发布应用程序[toc]一、什么是Ingress二、定义Ingress三、什么是Ingress控制器四、部署nginx Ingress控制器1.了解nginx Ingress控制器的部署方式2.安装nginx Ingress控制器3.本地实际测试 五、使用Ingress对外发布应用程序1.使用D…...
llama-factory微调报错:
报错信息 [INFO] [utils.py:789:see_memory_usage] CPU Virtual Memory: used 81.51 GB, percent 64.9% W0419 10:14:27.573000 108354 site-packages/torch/distributed/elastic/multiprocessing/api.py:897] Sending process 108373 closing signal SIGTERM W0419 10:14:27…...
【LLaMAFactory】LoRa + 魔搭 微调大模型实战
前言 环境准备 之前是在colab上玩,这次在国内的环境上玩玩。 魔搭:https://www.modelscope.cn/ 现在注册,有100小时的GPU算力使用。注册好了之后: 魔搭社区 这里使用qwen2.5-7B-Instruct模型,这里后缀Instruct是指…...
【愚公系列】《Python网络爬虫从入门到精通》054-Scrapy 文件下载
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! …...
db中查询关于null的sql该怎么写
正确示例 # 等于null select * from 表名 where 字段名 is NULL; # 不等于null select * from 表名 where 字段名 is not NULL;若需要同时判断字段不等于某个值且不为null select * from users where age ! 30 and age is not null; select * from users where age ! 30 or a…...
React 文章列表
自定义hook 在src/hooks文件夹下封装 useChannel.js // 获取频道列表的逻辑 import { useEffect , useState } from "react" import { getChannelAPI } from "/apis/article"function useChannel(){// 获取频道的逻辑 const [channelList,setChannelList…...
中间件--ClickHouse-12--案例-1-日志分析和监控
1、案例背景 一家互联网公司需要实时分析其服务器日志、应用日志和用户行为日志,以快速发现潜在问题并优化系统性能。 2、需求分析 目标:实时分析日志数据,快速发现问题并优化系统性能。数据来源: 服务器日志:如 Ng…...
QML中的3D功能--自定义着色器开发
在 Qt 3D 中使用自定义着色器可以实现高度定制化的渲染效果。以下是完整的自定义着色器开发方案。 一、基础着色器创建 1. 创建自定义材质 qml import Qt3D.Core 2.15 import Qt3D.Render 2.15 import Qt3D.Extras 2.15Entity {components: [Transform { translation: Qt.v…...
如何防止接口被刷
目录 🛡️ 一、常见的防刷策略分类 🔧 二、技术实现细节 ✅ 1. 基于 IP 限流 ✅ 2. 给接口加验证码 ✅ 3. 使用 Token 限制接口访问权限 ✅ 4. 给接口加冷却时间(验证码类经典) ✅ 5. 使用滑动窗口限流算法(更精…...
18、TimeDiff论文笔记
TimeDiff **1. 背景与动机****2. 扩散模型基础****3. TimeDiff 模型****3.1 前向扩散过程****3.2 后向去噪过程** 4、TimeDiff(架构)原理训练推理其他关键点解释 DDPM(相关数学)1、正态分布2、条件概率1. **与多个条件相关**&…...
docker底层原理
一句话,dockerfile里面的一行指令,就是一个layer层 docker底层原理 在机器上安装docker服务器端的程序,就会在机器上自动创建以下目录,默认安装路径是/var/lib/ docker服务器端的工作目录的作用如下,镜像的每一层的元数…...
YOLO拓展-NMS算法
1.概述 NMS(non maximum suppression)即非极大值抑制,其本质就是搜索局部极大值,抑制非极大值元素,可以理解为局部最大搜索。 这里不讨论通用的NMS算法(参考论文《Efficient Non-Maximum Suppression》对1维和2维数据…...
Docker Swarm 容器与普通 Docker 容器的网卡差异
问题背景 在 Docker Swarm 网络空间启动的容器有两张网卡(eth0 和 eth1),而普通 Docker 容器只有一张网卡(eth0)。以下通过分析 ip addr show 和 ip link show 的输出,解释原因。 命令输出解析 Docker S…...
【Linux】线程ID、线程管理、与线程互斥
📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🌐 C 语言 上篇文章: 【Linux】线程:从原理到实战,全面掌握多线程编程!-CSDN博客 下…...
服务器简介(含硬件外观接口介绍)
服务器(Server)是指提供资源、服务、数据或应用程序的计算机系统或设备。它通常比普通的个人计算机更强大、更可靠,能够长时间无间断运行,支持多个用户或客户端的请求。简单来说,服务器就是专门用来存储、管理和提供数…...
自动驾驶---决策规划之导航增强端到端
1 背景 自动驾驶算法通常包括几个子任务,包括3D物体检测、地图分割、运动预测、3D占用预测和规划。近年来,端到端方法将多个独立任务整合到多任务学习中,优化整个系统,包括中间表示,以实现最终的规划任务。随着端到端技…...
Datawhale AI春训营 世界科学智能大赛--合成生物赛道:蛋白质固有无序区域预测 小白经验总结
一、报名大赛 二、跑通baseline 在魔塔社区创建实例,根据教程完成速通第一个分数~ Datawhale-学用 AI,从此开始 三、优化实例(这里是我的学习优化过程) 1.先将官方给的的模型训练实例了解一遍(敲一敲代码) 训练模…...
基于Java(Struts2 + Hibernate + Spring)+MySQL实现的(Web)在线预约系统
基于Struts2 Hibernate Spring的在线预约系统 1.引言 1.1编写目的 针对医院在线预约挂号系统,提供详细的设计说明,包括系统的需求、功能模块、界面设计、设计方案等,以辅助开发人员顺利进行系统的开发并让项目相关者可以对这个系统进行分…...
PHP获取大文件行数
在PHP中获取大文件的行数时,直接读取整个文件到内存中可能会导致内存溢出,特别是对于非常大的文件。因此,最有效的方法是逐行读取文件并计数。以下是一些实现方法: 方法一:使用 fgets() fgets() 函数逐行读取文件&am…...
2024年网站开发语言选择指南:PHP/Java/Node.js/Python如何选型?
2024年网站开发语言选择指南:PHP/Java/Node.js/Python如何选型? 一、8大主流Web开发语言技术对比 1. PHP开发:中小型网站的首选方案 最新版本:PHP 8.3(2023年11月发布)核心优势: 全球78%的网站…...
Win7模拟器2025中文版:重温经典,掌上电脑体验
随着科技的快速发展,现代操作系统变得越来越高级,但许多用户仍然怀念经典的Windows 7系统。如果你也想重温那种熟悉的操作体验,Win7模拟器2025中文版 是一个不错的选择。这款软件能够让你在手机上轻松实现Windows 7系统的模拟,带来…...
HTML5+CSS3小实例:CSS立方体
实例:CSS立方体 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0&q…...
使用 Vite 快速搭建现代化 React 开发环境
1.检查环境 说明:检测环境,node版本为18.20.6。 2.创建命令 说明:创建命令,选择对应的选项。 npm create vitelatest 3.安装依赖 说明:安装相关依赖。 npm i...
Linux网络编程——基于ET模式下的Reactor
一、前言 上篇文章中我们已经讲解了多路转接剩下的两个接口:poll和epoll,并且知道了epoll的两种工作模式分别是 LT模式和ET模式,下来我们就实现的是一个简洁版的 Reactor,即半同步半异步I/O,在linux网络中,…...
【现代深度学习技术】循环神经网络04:循环神经网络
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重…...
1. 认识DartGoogle为Flutter选择了Dart语言已经是既
1. 认识Dart Google为Flutter选择了Dart语言已经是既定的事实,无论你多么想用你熟悉的语言,比如JavaScript、TypeScript、ArkTS等来开发Flutter,至少目前都是不可以的。 Dart 是由谷歌开发的计算机编程语言,它可以被应用于 Web/…...