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

yocto5.2开发任务手册-7 升级配方

此文为机器辅助翻译,仅供个人学习使用,如有翻译不当之处欢迎指正

7 升级配方

随着时间的推移,上游开发者会为图层配方构建的软件发布新版本。建议使配方保持与上游版本发布同步更新。

虽然有多种升级配方的方法,但您可能需要先检查配方的升级状态。可以使用 devtool check-upgrade-status 命令执行此操作。有关更多信息,请参阅《Yocto 项目参考手册》中的 “检查配方的升级状态” 章节。

本节其余部分介绍三种升级配方的方法:可以使用自动升级助手 (AUH) 设置自动版本升级;也可以使用 devtool upgrade 设置半自动版本升级;最后,还可以通过手动编辑配方来升级配方。

7,1 使用自动升级助手 (AUH)

AUH 实用程序与 OpenEmbedded 构建系统配合使用,可根据上游发布的新版本自动为配方生成升级。当您希望创建自动执行升级的服务并(可选)通过电子邮件发送结果时,可使用 AUH。

AUH 允许您一次性更新多个配方。您还可以选择使用镜像执行构建和集成测试,将结果保存到硬盘,并(可选)将结果通过电子邮件发送给配方维护者。最后,AUH 会在图层树中为配方所做的更改创建包含适当提交消息的 Git 提交。

[!NOTE]
在某些情况下,不应使用 AUH 升级配方,而应改用 devtool upgrade 或手动升级配方:

  • 当 AUH 无法完成升级序列时。这种情况通常是由于配方携带的自定义补丁无法自动重新定基于新版本导致的。在这种情况下,devtool upgrade 允许您手动解决冲突。

  • 当出于任何原因需要更全面地控制升级过程时。例如,当您希望为测试进行特殊安排时。

以下步骤介绍如何设置 AUH 实用程序:

1.确保开发主机已设置:需要确保开发主机已配置为使用 Yocto 项目。有关如何设置主机的信息,请参阅 “准备构建主机” 章节。

2.确保 Git 已配置:AUH 实用程序需要配置 Git,因为 AUH 使用 Git 保存升级内容。因此,必须配置 Git 用户和电子邮件。以下命令显示当前配置:

$ git config --list

若未配置用户和电子邮件,可使用以下命令设置

$ git config --global user.name some_name
$ git config --global user.email username@domain.com

3.克隆 AUH 存储库:要使用 AUH,必须将存储库克隆到开发主机上。以下命令使用 Git 在系统上创建存储库的本地副本:

$ git clone git://git.yoctoproject.org/auto-upgrade-helper
Cloning into 'auto-upgrade-helper'... remote: Counting objects: 768, done.
remote: Compressing objects: 100% (300/300), done.
remote: Total 768 (delta 499), reused 703 (delta 434)
Receiving objects: 100% (768/768), 191.47 KiB | 98.00 KiB/s, done.
Resolving deltas: 100% (499/499), done.
Checking connectivity... done.

[!NOTE]
AUH 不属于 OpenEmbedded-Core(OE-Core)或 Poky 存储库。

4.创建专用构建目录:运行oe-init-build-env脚本,创建一个专门用于运行 AUH 实用程序的全新构建目录:

$ cd poky
$ source oe-init-build-env your_AUH_build_directory

不建议重复使用现有构建目录及其配置,因为现有设置可能导致 AUH 失败或行为异常。

5.在本地配置文件中进行设置:在刚为 AUH 创建的构建目录的local.conf文件中需要进行几项设置。请进行以下配置:

  • 若要启用构建历史记录(可选),需要在conf/local.conf文件中添加以下行:
INHERIT =+ "buildhistory"
BUILDHISTORY_COMMIT = "1"

通过此配置且升级成功后,构建历史 “差异” 文件将出现在构建目录的 upgrade-helper/work/recipe/buildhistory-diff.txt 中。

  • 若要启用通过 testimage 类进行测试(可选),需要在 conf/local.conf 文件中进行以下设置:
IMAGE_CLASSES += "testimage"
  • 如果您的发行版未像 Poky 那样默认启用 ptest,则需要在 local.conf 文件中进行以下设置。
DISTRO_FEATURES:append = " ptest"

6.可选地启动 vncserver:如果您在没有 X11 会话的服务器上运行,需要启动 vncserver:

$ vncserver :1
$ export DISPLAY=:1

7.创建并编辑 AUH 配置文件:需要在构建目录中创建upgrade-helper/upgrade-helper.conf配置文件。可在 AUH 源存储库中找到示例配置文件。

通读示例文件并根据需要进行配置。例如,如果如前所述在local.conf中启用了构建历史记录,则必须在upgrade-helper.conf中也启用它。

此外,如果使用 Poky 提供的位于meta-yocto中的默认maintainers.inc文件,且未在upgrade-helper.conf配置中设置 “maintainers_whitelist” 或 “global_maintainer_override”,并在 AUH 命令行中指定 “-e all”,该实用程序会自动向所有默认维护者发送电子邮件。请避免这种情况。

以下示例说明如何使用 AUH:

升级特定配方:要升级某个特定配方,使用以下格式:

$ upgrade-helper.py recipe_name

例如,此命令升级xmodmap配方:

$ upgrade-helper.py xmodmap

将特定配方升级到特定版本:要将特定配方升级到某个特定版本,使用以下格式:

$ upgrade-helper.py recipe_name -t version

例如,此命令将 xmodmap 配方升级到 1.2.3 版本:

$ upgrade-helper.py xmodmap -t 1.2.3

升级所有配方至最新版本并抑制电子邮件通知:要将所有配方升级到最新版本并抑制电子邮件通知,使用以下命令:

$ upgrade-helper.py all

升级所有配方至最新版本并发送电子邮件通知:要将所有配方升级到最新版本,并向每个尝试升级的配方维护者发送电子邮件以及状态邮件,使用以下命令:

$ upgrade-helper.py -e all

运行 AUH 实用程序后,可在 AUH 构建目录中找到结果:

${BUILDDIR}/upgrade-helper/timestamp

AUH 实用程序还会在图层树中为成功的升级尝试创建配方更新提交。

您可以通过使用 cron 作业轻松设置定期运行 AUH 实用程序,示例可参考该实用程序附带的 weeklyjob.sh 文件。

7,2 使用 devtool upgrade

如前所述,将配方升级到较新版本的另一种方法是使用 devtool upgrade。有关 devtool upgrade 的常规信息,请参阅《Yocto 项目应用开发和可扩展软件开发工具包(eSDK)手册》中的 “使用 devtool upgrade 创建支持软件新版本的配方版本” 部分。

要查看 devtool upgrade 的所有可用命令行选项,使用以下帮助命令:

$ devtool upgrade -h

如果您想了解配方当前在上游的版本而不尝试升级本地版本,可使用以下命令:

$ devtool latest-version recipe_name

如前一节描述 AUH 时所述,devtool upgrade 的自动化程度低于 AUH。具体来说,devtool upgrade 仅适用于命令行中指定的单个配方,无法使用镜像执行构建和集成测试,也不会自动为源代码树中的更改生成提交。尽管存在这些 “限制”,devtool upgrade 仍会将配方文件更新为新的上游版本,并根据需要尝试重新定基配方包含的自定义补丁。

[!NOTE]
AUH 在幕后大量使用了 devtool upgrade,因此可以将 AUH 视为 devtool upgrade 的 “包装器” 应用程序。

典型场景涉及使用 Git 克隆构建操作期间使用的上游存储库。由于您过去已构建过该配方,该图层可能已添加到您的配置中。如果由于某种原因该图层尚未添加,您可以使用 “bitbake-layers” 脚本轻松添加。例如,假设您使用 meta-openembedded 存储库中 meta-oe 图层的 nano.bb 配方。在此示例中,假定该图层已克隆到以下路径:

/home/scottrif/meta-openembedded

从构建目录执行以下命令可将该图层添加到构建配置(即 ${BUILDDIR}/conf/bblayers.conf):


$ bitbake-layers add-layer /home/scottrif/meta-openembedded/meta-oe
NOTE: Starting bitbake server...
Parsing recipes: 100% |##########################################| Time: 0:00:55
Parsing of 1431 .bb files complete (0 cached, 1431 parsed). 2040 targets, 56 skipped, 0 masked, 0 errors.
Removing 12 recipes from the x86_64 sysroot: 100% |##############| Time: 0:00:00
Removing 1 recipes from the x86_64_i586 sysroot: 100% |##########| Time: 0:00:00
Removing 5 recipes from the i586 sysroot: 100% |#################| Time: 0:00:00
Removing 5 recipes from the qemux86 sysroot: 100% |##############| Time: 0:00:00

在这个示例中,假设上游的 nano.bb 配方版本号为 2.9.3,而本地存储库中的版本为 2.7.4。从构建目录执行以下命令可自动为您升级该配方:

$ devtool upgrade nano -V 2.9.3
NOTE: Starting bitbake server...
NOTE: Creating workspace layer in /home/scottrif/poky/build/workspace
Parsing recipes: 100% |##########################################| Time: 0:00:46
Parsing of 1431 .bb files complete (0 cached, 1431 parsed). 2040 targets, 56 skipped, 0 masked, 0 errors.
NOTE: Extracting current version source...
NOTE: Resolving any missing task queue dependencies...
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
NOTE: Tasks Summary: Attempted 74 tasks of which 72 didn't need to be rerun and all succeeded.
Adding changed files: 100% |#####################################| Time: 0:00:00
NOTE: Upgraded source extracted to /home/scottrif/poky/build/workspace/sources/nano
NOTE: New recipe is /home/scottrif/poky/build/workspace/recipes/nano/nano_2.9.3.bb

[!NOTE]
使用 -V 选项并非必需。省略版本号会使 devtool upgrade 将配方升级到最新版本。

继续此示例,您可以使用 devtool build 来构建新升级的配方。

$ devtool build nano
NOTE: Starting bitbake server...
Loading cache: 100% |################################################################################################| Time: 0:00:01
Loaded 2040 entries from dependency cache.
Parsing recipes: 100% |##############################################################################################| Time: 0:00:00
Parsing of 1432 .bb files complete (1431 cached, 1 parsed). 2041 targets, 56 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies...
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
NOTE: nano: compiling from external source tree /home/scottrif/poky/build/workspace/sources/nano
NOTE: Tasks Summary: Attempted 520 tasks of which 304 didn't need to be rerun and all succeeded.

在 devtool upgrade 工作流程中,您可以部署和测试重新构建的软件。不过,在此示例中,一旦工作区中的源代码处于干净状态,运行 devtool finish 会清理工作区。这通常意味着使用 Git 来暂存和提交升级过程生成的更改。

一旦代码树干净,您可以在 ${BUILDDIR}/workspace/sources/nano 目录中使用以下命令清理相关内容:

$ devtool finish nano meta-oe
NOTE: Starting bitbake server...
Loading cache: 100% |################################################################################################| Time: 0:00:00
Loaded 2040 entries from dependency cache.
Parsing recipes: 100% |##############################################################################################| Time: 0:00:01
Parsing of 1432 .bb files complete (1431 cached, 1 parsed). 2041 targets, 56 skipped, 0 masked, 0 errors.
NOTE: Adding new patch 0001-nano.bb-Stuff-I-changed-when-upgrading-nano.bb.patch
NOTE: Updating recipe nano_2.9.3.bb
NOTE: Removing file /home/scottrif/meta-openembedded/meta-oe/recipes-support/nano/nano_2.7.4.bb
NOTE: Moving recipe file to /home/scottrif/meta-openembedded/meta-oe/recipes-support/nano
NOTE: Leaving source tree /home/scottrif/poky/build/workspace/sources/nano as-is; if you no longer need it then please delete it manually

使用 devtool finish 命令会清理工作区,并根据您的提交创建一个补丁文件。在此示例中,该工具会将所有补丁文件放回源目录中名为 nano 的子目录中。

7,3 手动升级配方

如果由于某种原因您选择不使用自动升级助手(AUH)或 devtool upgrade 来升级配方,则可以手动编辑配方文件以更新版本。

[!NOTE]
手动更新多个配方的扩展性较差,且涉及许多步骤。建议通过 AUH 或 devtool upgrade 升级配方版本,这两种工具均可自动化部分步骤,并为手动流程提供指导。

要手动升级配方版本,请遵循以下一般步骤:

  1. 更改版本:重命名配方,使版本(即配方名称中的 PV 部分)适当更改。如果版本未包含在配方名称中,则直接在配方内部更新 PV 的值。

  2. 根据需要更新 SRCREV:如果配方构建的源代码是从 Git 或其他版本控制系统获取的,请更新 SRCREV 以指向与新版本匹配的提交哈希值。

  3. 构建软件:尝试使用 BitBake 构建配方。典型的构建失败包括以下情况:

    • 针对新版本更新了许可证声明。在这种情况下,您需要审查许可证的任何变更,并根据需要更新LICENSELIC_FILES_CHKSUM的值。
    • 旧版本配方所包含的自定义补丁可能无法应用于新版本。对于这些情况,您需要审查失败原因。如果升级后的软件版本已修复相关问题,可能不再需要补丁。如果补丁仍必要但应用失败,则需要将其重新定基到新版本。

[!NOTE]
许可证变更通常影响不大。例如,许可证文本的版权年份可能发生了变化。

  1. 可选择尝试为多个架构构建:一旦成功为给定架构构建新软件,您可以通过更改MACHINE变量并重新构建软件,测试其他架构的构建情况。如果该配方将公开发布,此可选步骤尤为重要。

  2. 检查上游变更日志或发行说明:查看这些内容可了解是否有可能破坏向后兼容性的新功能。如有必要,需采取措施缓解或消除该情况。

  3. 可选创建可引导镜像并测试:若需要,可通过将新软件引导至实际硬件进行测试。

  4. 在图层存储库中为变更创建提交:在所有构建成功且测试通过后,可为包含已升级配方的图层中的任何变更创建提交。

相关文章:

yocto5.2开发任务手册-7 升级配方

此文为机器辅助翻译,仅供个人学习使用,如有翻译不当之处欢迎指正 7 升级配方 随着时间的推移,上游开发者会为图层配方构建的软件发布新版本。建议使配方保持与上游版本发布同步更新。 虽然有多种升级配方的方法,但您可能需要先…...

LangPDF: Empowering Your PDFs with Intelligent Language Processing

LangPDF: Empowering Your PDFs with Intelligent Language Processing Unlock Global Communication: AI-Powered PDF Translation and Beyond In an interconnected world, seamless multilingual document management is not just an advantage—it’s a necessity. LangP…...

DDS(数据分发服务) 和 P2P(点对点网络) 的详细对比

1. 核心特性对比 维度 DDS P2P 实时性 微秒级延迟,支持硬实时(如自动驾驶) 毫秒至秒级,依赖网络环境(如文件传输) 架构 去中心化发布/订阅模型,节点自主发现 完全去中心化,节…...

TC8:SOMEIP_ETS_029-030

SOMEIP_ETS_029: echoUINT8Array16Bitlength 目的 检查当method echoUINT8Array16BitLength的参数中长度字段为16bit时,SOME/IP协议层是否能对参数进行序列化和反序列化。 对于可变长度的数组而言,必须用长度字段表示数组长度。否则接收方无法判断有效数据。 SOMEIP_ETS_02…...

Elasticsearch索引全生命周期管理指南之一

#作者:猎人 文章目录 一、索引常规操作二、索引mapping和别名管理 一、索引常规操作 索引数据特点: 索引中的数据随着时间,持续不断增长 按照时间序列划分索引的好处&挑战: 按照时间进行划分索引,会使得管理更加…...

本土DevOps革命:Gitee如何撬动中国企业的数字化转型新动能

在数字化浪潮席卷全球的背景下,中国企业正面临前所未有的转型压力与机遇。随着《数据安全法》和《个人信息保护法》的全面实施,以及信创产业政策的深入推进,研发工具链的自主可控已成为关乎企业核心竞争力的战略命题。在这一关键赛道上&#…...

ARM服务器解决方案

ARM服务器解决方案已成为异构计算领域的重要技术路径,其核心优势与多元化场景适配性正加速产业渗透。以下为关键要点分析: 一、核心优势与架构设计 能效比优化‌ ARM架构基于RISC指令集,单节点功耗可控制在15W以下,较x86架构能效…...

【暗光图像增强】【基于CNN的方法】2020-AAAI-EEMEFN

EEMEFN:Low-Light Image Enhancement via Edge-Enhanced Multi-Exposure Fusion Network EEMEFN:基于边缘增强多重曝光融合网络的低光照图像增强 AAAI 2020 论文链接 0.论文摘要 本研究专注于极低光照条件下的图像增强技术,旨在提升图像亮度…...

嵌入式EasyRTC音视频实时通话SDK在工业制造领域的智能巡检/AR协作等应用

一、背景 在数字化浪潮席卷全球的当下,远程监控与驾驶技术已深度渗透至工业巡检、智能交通等核心领域。然而,传统方案普遍面临实时性瓶颈、高延迟传输及交互体验匮乏等痛点,严重制约行业智能化转型。EasyRTC作为前沿的实时音视频通信技术&am…...

uniapp-商城-58-后台 新增商品(属性子级的添加和更新)

前面对父级属性的添加进行了分析,这里再来继续做属性子级的数据添加,包含页面逻辑以及后台处理的逻辑。当然这里还是在前面的云对象的方式进行的。 本文介绍了在云对象green-mall-sku中添加子级属性的实现过程。首先,通过updateChild接口处理…...

基于springboot+vue的机场乘客服务系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7数据库工具:Navicat12开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9 系统展示 用户管理 航班信…...

npm和nvm和nrm有什么区别

npm 全称:Node Package Manager。 作用: 包管理:用于安装、共享、分发代码,管理项目依赖关系。项目管理:创建和管理 package.json 文件,记录项目依赖和配置信息。脚本执行:运行项目中的脚本&…...

几种排序方式的C语言实现(冒泡、选择、插入、希尔等)

## 分类 存储器类型: - 内排序(数据规模小 内存) - 外排序(数据库 磁盘) 是否基于元素之间的比较 - 基数排序 - 其他排序:冒泡、选择、插入、快速、归并、希尔、堆…… 时间复杂度 - O&#…...

【MATLAB例程】线性卡尔曼滤波的程序,三维状态量和观测量,较为简单,可用于理解多维KF,附代码下载链接

本文所述代码实现了一个 三维状态的扩展卡尔曼滤波 (Extended Kalman Filter, EKF) 算法。通过生成过程噪声和观测噪声,对真实状态进行滤波估计,同时对比了滤波前后状态量的误差和误差累积分布曲线。 文章目录 简介运行结果MATLAB源代码 简介 代码分为以…...

芯片测试之X-ray测试

原理: X-ray是利用阴极射线管产生高能量电子与金属靶撞击,在撞击过程中,因电子突然减速,其损失的动能会以X-Ray形式放出。而对于样品无法以外观方式观测的位置,利用X-Ray穿透不同密度物质后其光强度的变化,…...

机器学习中的特征工程:解锁模型性能的关键

在机器学习领域,模型的性能往往取决于数据的质量和特征的有效性。尽管深度学习模型在某些任务中能够自动提取特征,但在大多数传统机器学习任务中,特征工程仍然是提升模型性能的关键环节。本文将深入探讨特征工程的重要性、常用方法以及在实际…...

【学习笔记】机器学习(Machine Learning) | 第七章|神经网络(1)

机器学习(Machine Learning) 简要声明 基于吴恩达教授(Andrew Ng)课程视频 BiliBili课程资源 文章目录 机器学习(Machine Learning)简要声明 机器学习之深度学习神经网络入门一、神经网络的起源与发展二、神经元模型(…...

反向传播算法:神经网络的核心优化方法,一文打通任督二脉

搞神经网络训练,**反向传播(Backpropagation)**是最核心的算法。 没有它,模型就只能瞎猜参数,训练基本白搭。 这篇文章不整公式推导,不搞花架子,咱就把最关键的几个问题讲明白: 反向传播到底是干啥的? 它是怎么一步步更新参数的? 哪些坑你必须避免? 一、反向传播是…...

neo4j框架:java安装教程

安装使用neo4j需要事先安装好java,java版本的选择是一个犯难的问题。本文总结了在安装java和使用Java过程中遇到的问题以及相应的解决方法。 Java的安装包可以在java官方网站Java Downloads | Oracle 中国进行下载 以java 8为例,选择最后一行的x64 compr…...

基于React的高德地图api教程007:椭圆的绘制、编辑和删除

文章目录 7、椭圆绘制7.1 绘制椭圆7.1.1 设置圆心7.1.2 确定短半轴7.1.3 确定长半轴7.1.4 实时显示椭圆形状7.2 修改椭圆7.2.1 修改椭圆属性信息7.2.2 修改椭圆形状7.3 删除椭圆7.4 定位椭圆7.5 代码下载7.07、椭圆绘制 7.1 绘制椭圆 7.1.1 设置圆心 第一次点击地图设置圆心…...

Python多线程实战:提升并发效率的秘诀

一、前言:为什么需要多任务处理? 在实际开发中,我们经常需要让程序同时执行多个任务,例如: 同时下载多个文件;在后台运行耗时计算的同时保持界面响应;并发处理网络请求等。 Python 提供了多种…...

将嵌入映射到 Elasticsearch 字段类型:semantic_text、dense_vector、sparse_vector

作者: Andre Luiz 讨论如何以及何时使用 semantic_text、dense_vector 或 sparse_vector,以及它们与嵌入生成的关系。 通过这个自定进度的 Search AI 实践学习亲自体验向量搜索。你可以开始免费云试用,或者在本地机器上尝试 Elastic。 多年来…...

RabbitMQ 消息模式实战:从简单队列到复杂路由(四)

模式对比与选择 各模式特点对比 简单队列模式:结构最为简单,生产者直接将消息发送到队列,消费者从队列中获取消息,实现一对一的消息传递。其优势在于易于理解和实现,代码编写简单,适用于初学者和简单业务…...

OpenCV CUDA模块中矩阵操作------归一化与变换操作

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 OpenCV 的 CUDA 模块中,normalize 和 rectStdDev 函数用于对矩阵进行归一化处理和基于积分图计算矩形区域的标准差。 函数介绍 …...

1Panel应用推荐:Beszel轻量级服务器监控平台

1Panel(github.com/1Panel-dev/1Panel)是一款现代化、开源的Linux服务器运维管理面板,它致力于通过开源的方式,帮助用户简化建站与运维管理流程。为了方便广大用户快捷安装部署相关软件应用,1Panel特别开通应用商店&am…...

谷歌地图代理 | 使用 HTML 和矢量模式 API 更轻松地创建 Web 地图

在过去的一年里,谷歌对 Maps JavaScript API 进行了两项重要更新,以便更轻松地采用我们最新、最好的地图:HTML 地图和矢量模式 API。今天谷歌地图亚太区最大代理商之一的 Cloud Ace云一 为大家介绍一下更新的具体内容。 联系我们 - Cloud Ac…...

最新开源 TEN VAD 与 Turn Detection 让 Voice Agent 对话更拟人 | 社区来稿

关键词:对话式 AI | 语音智能体 | Voice Agent | VAD | 轮次检测 | 声网 | TEN GPT-4o 所展示对话式 AI 的新高度,正一步步把我们在电影《Her》中看到的 AI 语音体验变成现实。AI 的语音交互正在变得更丰富、更流畅、更易用,成为构建多模态智…...

「Mac畅玩AIGC与多模态40」开发篇35 - 用 Python 开发服务对接 SearxNG 与本地知识库

一、概述 本篇介绍如何使用 Python 构建一个集成本地聚合搜索引擎 SearxNG 与本地知识库的双通道服务接口,返回标准结构化 JSON 数据,并用于对接智能体插件系统。该接口适用于本地 Agent 应用开发与 Dify 插件集成场景。 二、目标说明 使用 Flask 实现…...

【Boost搜索引擎】构建Boost站内搜索引擎实践

目录 1. 搜索引擎的相关宏观原理 2. 正排索引 vs 倒排索引 - 搜索引擎具体原理 3. 编写数据去标签与数据清洗的模块 Parser 去标签 编写parser 用boost枚举文件名 解析html 提取title ​编辑 去标签 构建URL 将解析内容写入文件中 4. 编写建立索引的模块 Index 建…...

记参加一次数学建模

题目请到全国大学生数学建模竞赛下载查看。 注:过程更新了很多文件,所有这里贴上的有些内容不是最新的(而是草稿)。 注:我们队伍并没有获奖,文章内容仅供一乐。 从这次比赛,给出以下赛前建议 …...

【gRPC】HTTP/2协议,HTTP/1.x中线头阻塞问题由来,及HTTP/2中的解决方案,RPC、Protobuf、HTTP/2 的关系及核心知识点汇总

HTTP/2协议特点 gRPC基于HTTP/2协议,原因: 多路复用:允许在同一个TCP连接上并行传输多个请求和响应,即多个gRPC调用可以通过同一个连接同时进行,避免了HTTP/1.x中常见的线头阻塞问题,减少了连接建立和关闭…...

mac中加载C++动态库文件

前言 需要再mac系统下运行C开发的程序,通过摸索,初步实现了一版,大致记录下 1. 前提准备 安装OpenCV 使用Homebrew安装OpenCV: brew install opencv确认安装路径: brew --prefix opencv默认路径为/opt/homebrew/…...

Apollo Client 1.6.0 + @RefreshScope + @Value 刷新问题解析

问题描述 在使用 Apollo Client 1.6.0 结合 Spring Cloud 的 RefreshScope 和 Value 注解时,遇到以下问题: 项目启动时第一次属性注入成功后续配置变更时,Value 属性会刷新,但总是刷新为第一次的旧值,而不是最新的配…...

大语言模型 09 - 从0开始训练GPT 0.25B参数量 补充知识之数据集 Pretrain SFT RLHF

写在前面 GPT(Generative Pre-trained Transformer)是目前最广泛应用的大语言模型架构之一,其强大的自然语言理解与生成能力背后,是一个庞大而精细的训练流程。本文将从宏观到微观,系统讲解GPT的训练过程,…...

文本分类任务Qwen3-0.6B与Bert:实验见解

文本分类任务Qwen3-0.6B与Bert:实验见解 前言 最近在知乎上刷到一个很有意思的提问Qwen3-0.6B这种小模型有什么实际意义和用途。查看了所有回答,有人提到小尺寸模型在边缘设备场景中的优势(低延迟)、也有人提出小模型只是为了开…...

Mysql、Oracle、Sql Server、达梦之间sql的差异

1&#xff1a;分页查询 Sql Server&#xff1a; <bind name"startRow" value"(page - 1) * limit 1"/> <bind name"endRow" value"page * limit"/> SELECT *FROM (SELECT ROW_NUMBER() OVER (<if test"sortZd!…...

STM32外设AD-DMA+定时读取模板

STM32外设AD-DMA定时读取模板 一&#xff0c;方法引入二&#xff0c;CubeMX配置三&#xff0c;变量声明四&#xff0c;代码实现 (单通道) 一&#xff0c;方法引入 轮询法虽然简单&#xff0c;但 CPU 一直在忙着等待&#xff0c;效率太低。为了让 CPU 能在 ADC 转换的同时处理其…...

SQL里where条件的顺序影响索引使用吗?

大家好&#xff0c;我是锋哥。今天分享关于【SQL里where条件的顺序影响索引使用吗&#xff1f;】面试题。希望对大家有帮助&#xff1b; SQL里where条件的顺序影响索引使用吗&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 SQL 查询中&#xff0c;W…...

Java 接口中实现异步处理的方法

在Java中,接口本身不能直接实现逻辑(接口中的方法默认是抽象的,JDK 8+允许通过default方法提供非抽象实现,但通常不用于复杂的异步处理)。异步处理的逻辑需要在实现接口的类中通过多线程、异步框架或回调机制来实现。以下是几种常见的在接口实现类中实现异步处理<...

数值分析证明题

文章目录 第一题第二题第三题第四题第五题第六题第七题第八题第九题 第一题 例 给出 cos ⁡ x \cos x cosx&#xff0c; x ∈ [ 0 ∘ , 9 0 ∘ ] x\in[0^{\circ},90^{\circ}] x∈[0∘,90∘]的函数表&#xff0c;步长 h 1 ′ ( 1 60 ) ∘ h 1 (\frac{1}{60})^{\circ} h1′…...

深入理解二叉树:遍历、存储与算法实现

在之前的博客系列中&#xff0c;我们系统地探讨了多种线性表数据结构&#xff0c;包括顺序表、栈和队列等经典结构&#xff0c;并通过代码实现了它们的核心功能。从今天开始&#xff0c;我们将开启一个全新的数据结构篇章——树结构。与之前讨论的线性结构不同&#xff0c;树形…...

Python web 开发 Flask HTTP 服务

Flask 是一个轻量级的 Web 应用框架&#xff0c;它基于 Python 编写&#xff0c;特别适合构建简单的 Web 应用和 RESTful API。Flask 的设计理念是提供尽可能少的约定和配置&#xff0c;从而让开发者能够灵活地构建自己的 Web 应用。 https://andi.cn/page/622189.html...

【AI】用Dify实现一个模拟面试的功能

前言 Dify&#xff0c;一个将LLM转换为实际工作流的工具&#xff0c;以及火了一段时间了&#xff0c;但直到最近才开始研究它的使用&#xff08;主要前段时间在忙着自己的独立开发项目&#xff09;&#xff0c;我发现它的功能基本上满足了我对大语言模型&#xff0c;从仅对话转…...

研华服务器ASMB-825主板无法识别PCIE-USB卡(笔记本)

系统下无法识别到USB卡&#xff0c;排除硬件问题&#xff0c;系统问题。 最后在BIOS中更改此PCIE端口参数为X4X4X4X4&#xff0c;设置完成后可正常使用USB卡。 底部有问题详细解析。 针对研华主板ASMB-825安装绿联PCIE-USB卡无法识别的问题&#xff0c;结合BIOS设置调整的解决过…...

Redisson 四大核心机制实现原理详解

一、可重入锁&#xff08;Reentrant Lock&#xff09; 可重入锁是什么&#xff1f; 通俗定义 可重入锁类似于一把“智能锁”&#xff0c;它能识别当前的锁持有者是否是当前线程&#xff1a; 如果是&#xff0c;则允许线程重复获取锁&#xff08;重入&#xff09;&#xff0c;并…...

云计算与大数据进阶 | 26、解锁云架构核心:深度解析可扩展数据库的5大策略与挑战(上)

在云应用/服务的 5 层架构里&#xff0c;数据库服务层稳坐第 4 把交椅&#xff0c;堪称其中的 “硬核担当”。它的复杂程度常常让人望而生畏&#xff0c;不少人都将它视为整个架构中的 “终极挑战”。 不过&#xff0c;也有人觉得可扩展存储系统才是最难啃的 “硬骨头”&#…...

Android从单体架构迁移到模块化架构。你会如何设计模块划分策略?如何处理模块间的通信和依赖关系

从单体架构迁移到模块化架构。可能有些小伙伴已经深陷单体架构的泥潭&#xff0c;代码耦合得跟一团麻线似的&#xff0c;改个小功能都能牵一发而动全身&#xff1b;也可能有些团队在协作时&#xff0c;经常因为代码冲突或者职责不清搞得焦头烂额。相信我&#xff0c;这些问题我…...

基于MATLAB的人脸识别,实现PCA降维,用PCA特征进行SVM训练

基于MATLAB的人脸识别完整流程&#xff0c;包含PCA降维和SVM分类的实现。我们以经典的ORL人脸数据库为例&#xff0c;演示从数据加载到结果评估的全过程。 1. 数据准备与预处理​ 1.1 下载数据集​ 下载ORL人脸数据库&#xff08;40人10张&#xff0c;共400张图像&#xff09…...

AI 赋能 Copula 建模:大语言模型驱动的相关性分析革新

技术点目录 R及Python语言及相关性研究初步二元Copula理论与实践&#xff08;一&#xff09;二元Copula理论与实践&#xff08;二&#xff09;【R语言为主】Copula函数的统计检验与选择【R语言为主】高维数据与Vine Copula 【R语言】正则Vine Copula&#xff08;一&#xff09;…...

机器学习与人工智能:NLP分词与文本相似度分析

DIY AI & ML NLP — Tokenization & Text Similarity by Jacob Ingle in Data Science Collective 本文所使用的数据是在 Creative Commons license 下提供的。尽管我们已尽力确保信息的准确性和完整性&#xff0c;但我们不对数据的完整性或可靠性做任何保证。数据的使…...