RK3568 OH5.1 源码编译及问题
安装编译器和二进制工具
在源码根目录下执行prebuilts脚本,安装编译器及二进制工具。
bash build/prebuilts_download.sh
在源码根目录执行如下指令安装hb编译工具:
python3 -m pip install --user build/hb
使用build.sh脚本编译源码
- 进入源码根目录,执行如下命令进行版本编译。
x86系统编译:
./build.sh --product-name {product_name} --ccache
ARM系统编译:
./build.sh --product-name {product_name} --ccache --target-cpu arm64
说明: {product_name}为当前支持的产品名称,例如Hi3516DV300、rk3568等。
- 检查编译结果
Please refer to: https://gitee.com/openharmony/developtools_integration_verification/tree/master/tools/startup_guard/rules/NO-Config-Cmds-In-Init/README.md
Do NO-Config-SystemParameter-In-INIT rule checking now:
[NOT ALLOWED]: DAC overallocated memoryPlease refer to: https://gitee.com/openharmony/developtools_integration_verification/tree/master/tools/startup_guard/rules/NO-Config-SystemParameter-In-INIT/README.md
Do NO-User-Group_In-Init rule checking now:
[NOT ALLOWED]: quickfix has different passwd and group valuesPlease refer to: https://gitee.com/openharmony/developtools_integration_verification/tree/master/tools/startup_guard/rules/NO-User-Group_In-Init/README.md
Do NO-Plug-In_Module-Init rule checking now:
[NOT ALLOWED]: libmodule_update_init.z.so is not in whitelists
[NOT ALLOWED]: the dependent shared library libhisysevent.z.so of librebootmodule.z.so is not in whitelistPlease refer to: https://gitee.com/openharmony/developtools_integration_verification/tree/master/tools/startup_guard/rules/NO-Plug-In_Module-Init/README.md
Please modify according to README.md
[OHOS INFO] rk3568 build success
[OHOS INFO] Cost Time: 2:58:42
=====build successful=====
2025-05-19 22:57:23
++++++++++++++++++++++++++++++++++++++++
编译完成后,log中显示如下:
[OHOS INFO] rk3568 build success
[OHOS INFO] Cost Time: 2:58:42
=====build successful=====
编译所生成的文件都归档在out/{device_name}/目录下,结果镜像输出在out/{device_name}/packages/phone/images/ 目录下。
使用hb编译
hb set
hb build
执行hb set选择产品,然后执行hb build进行编译。
编译
编译RK3568
./build.sh --product-name rk3568 --ccache 或者
./build.sh --p rk3568 --ccache
编译生成固件如下:
out/rk3568/packages/phone/images/
├── boot_linux.img
├── chip_ckm.img
├── chip_prod.img
├── config.cfg
├── eng_system.img
├── MiniLoaderAll.bin
├── parameter.txt
├── ramdisk.img
├── resource.img
├── sys_prod.img
├── system.img
├── uboot.img
├── updater.img
├── userdata.img
└── vendor.img
编译OH 5.1.0 出错 ld.lld: error: undefined symbol: ff_hwcontext_type_vulkan
[OHOS ERROR] [NINJA] [49516/91184] SOLINK thirdparty/ffmpeg/libohosffmpeg.z.so
[OHOS ERROR] [NINJA] FAILED: thirdparty/ffmpeg/libohosffmpeg.z.so lib.unstripped/thirdparty/ffmpeg/libohosffmpeg.z.so
[OHOS ERROR] [NINJA] /usr/bin/env "../../build/toolchain/gcc_solink_wrapper.py" --readelf="../../prebuilts/clang/ohos/linux-x86_64/llvm/bin/llvm-readobj" --nm="../../prebuilts/clang/ohos/linux-x86_64/llvm/bin/llvm-nm" --strip=../../prebuilts/clang/ohos/linux-x86_64/llvm/bin/llvm-strip --strip-debug-whitelist=../../build/toolchain/strip_debug_whitelist.txt --sofile="./lib.unstripped/thirdparty/ffmpeg/libohosffmpeg.z.so" --output="thirdparty/ffmpeg/libohosffmpeg.z.so" --clang-base-dir="/home/xgj/ws/OpenHarmony-v5.1.0-Release/OpenHarmony/prebuilts/clang/ohos" --mini-debug -- ../../prebuilts/clang/ohos/linux-x86_64/llvm/bin/clang++ -shared -Wl,--pack-dyn-relocs=android+relr -Wl,--fatal-warnings -Wl,--build-id=md5 -fPIC -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -Wl,--as-needed -fuse-ld=lld -Wl,--icf=all -Wl,--color-diagnostics -flto=thin -Wl,--thinlto-jobs=16 -Wl,--thinlto-cache-dir=thinlto-cache -Wl,--lto-O0 -march=armv7-a -Wl,--no-undefined -Wl,--exclude-libs=libunwind_llvm.a -Wl,--exclude-libs=libc++_static.a -Wl,--exclude-libs=libvpx_assembly_arm.a --target=arm-linux-ohos -Werror -Wl,--warn-shared-textrel -Wl,-O2 -Wl,--gc-sections -Wl,--gdb-index --sysroot=obj/third_party/musl -nostdlib -Lobj/third_party/musl/usr/lib/arm-linux-ohos -L../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/clang/15.0.4/lib/arm-linux-ohos -Wl,--warn-shared-textrel -fsanitize-trap=all -ftrap-function=abort -o "./lib.unstripped/thirdparty/ffmpeg/libohosffmpeg.z.so" @"thirdparty/ffmpeg/libohosffmpeg.z.so.rsp" -Wl,-soname="libohosffmpeg.z.so"
[OHOS ERROR] [NINJA] ld.lld: error: undefined symbol: ff_hwcontext_type_vulkan
[OHOS ERROR] [NINJA] >>> referenced by hwcontext.c:0 (../../third_party/ffmpeg/libavutil/hwcontext.c:0)
[OHOS ERROR] [NINJA] >>> thinlto-cache/llvmcache-C8050A3CD6401B4BEBAEBAC2259B116F368BCFD6:(av_hwdevice_iterate_types)
[OHOS ERROR] [NINJA] >>> referenced by hwcontext.c:0 (../../third_party/ffmpeg/libavutil/hwcontext.c:0)
[OHOS ERROR] [NINJA] >>> thinlto-cache/llvmcache-C8050A3CD6401B4BEBAEBAC2259B116F368BCFD6:(av_hwdevice_ctx_alloc)
[OHOS ERROR] [NINJA] clang-15: error: linker command failed with exit code 1 (use -v to see invocation)[OHOS INFO] User Cpu%: 0.3%[OHOS INFO] System Cpu%: 0.9%[OHOS INFO] Idle CPU%: 98.8%[OHOS INFO] Total Memory: 31.4GB[OHOS INFO] Free Memory: 4.8GB[OHOS INFO] Swap Memory: 2.0GB[OHOS INFO] Filesystem: tmpfs, Size: 3.2G, Used: 3.3M, Available: 3.2G, Use%: 1%, Mounted on: /run[OHOS INFO] Filesystem: /dev/sda3, Size: 491G, Used: 428G, Available: 39G, Use%: 92%, Mounted on: /[OHOS INFO] Filesystem: tmpfs, Size: 16G, Used: 0, Available: 16G, Use%: 0%, Mounted on: /dev/shm[OHOS INFO] Filesystem: tmpfs, Size: 5.0M, Used: 0, Available: 5.0M, Use%: 0%, Mounted on: /run/lock[OHOS INFO] Filesystem: tmpfs, Size: 16G, Used: 0, Available: 16G, Use%: 0%, Mounted on: /run/qemu[OHOS INFO] Filesystem: /dev/sda2, Size: 512M, Used: 6.1M, Available: 506M, Use%: 2%, Mounted on: /boot/efi[OHOS INFO] Filesystem: tmpfs, Size: 3.2G, Used: 72K, Available: 3.2G, Use%: 1%, Mounted on: /run/user/128[OHOS INFO] Filesystem: tmpfs, Size: 3.2G, Used: 60K, Available: 3.2G, Use%: 1%, Mounted on: /run/user/1000[OHOS ERROR] [NINJA] Traceback (most recent call last):
[OHOS ERROR] [NINJA] File "/home/xgj/ws/OpenHarmony-v5.1.0-Release/OpenHarmony/build/hb/containers/status.py", line 47, in wrapper
[OHOS ERROR] [NINJA] return func(*args, **kwargs)
[OHOS ERROR] [NINJA] ^^^^^^^^^^^^^^^^^^^^^
[OHOS ERROR] [NINJA] File "/home/xgj/ws/OpenHarmony-v5.1.0-Release/OpenHarmony/build/hb/modules/ohos_build_module.py", line 70, in run
[OHOS ERROR] [NINJA] raise exception
[OHOS ERROR] [NINJA] File "/home/xgj/ws/OpenHarmony-v5.1.0-Release/OpenHarmony/build/hb/modules/ohos_build_module.py", line 67, in run
[OHOS ERROR] [NINJA] super().run()
[OHOS ERROR] [NINJA] File "/home/xgj/ws/OpenHarmony-v5.1.0-Release/OpenHarmony/build/hb/modules/interface/build_module_interface.py", line 70, in run
[OHOS ERROR] [NINJA] raise exception
[OHOS ERROR] [NINJA] File "/home/xgj/ws/OpenHarmony-v5.1.0-Release/OpenHarmony/build/hb/modules/interface/build_module_interface.py", line 68, in run
[OHOS ERROR] [NINJA] self._ninja()
[OHOS ERROR] [NINJA] File "/home/xgj/ws/OpenHarmony-v5.1.0-Release/OpenHarmony/build/hb/util/timer_util.py", line 30, in inner
[OHOS ERROR] [NINJA] res = func(*arg, **kwarg)
[OHOS ERROR] [NINJA] ^^^^^^^^^^^^^^^^^^^
[OHOS ERROR] [NINJA] File "/home/xgj/ws/OpenHarmony-v5.1.0-Release/OpenHarmony/build/hb/modules/interface/build_module_interface.py", line 125, in _ninja
[OHOS ERROR] [NINJA] self._target_compilation()
[OHOS ERROR] [NINJA] File "/home/xgj/ws/OpenHarmony-v5.1.0-Release/OpenHarmony/build/hb/modules/ohos_build_module.py", line 112, in _target_compilation
[OHOS ERROR] [NINJA] self.target_compiler.run()
[OHOS ERROR] [NINJA] File "/home/xgj/ws/OpenHarmony-v5.1.0-Release/OpenHarmony/build/hb/services/ninja.py", line 39, in run
[OHOS ERROR] [NINJA] self._execute_ninja_cmd()
[OHOS ERROR] [NINJA] File "/home/xgj/ws/OpenHarmony-v5.1.0-Release/OpenHarmony/build/hb/services/ninja.py", line 70, in _execute_ninja_cmd
[OHOS ERROR] [NINJA] SystemUtil.exec_command(
[OHOS ERROR] [NINJA] File "/home/xgj/ws/OpenHarmony-v5.1.0-Release/OpenHarmony/build/hb/util/system_util.py", line 128, in exec_command
[OHOS ERROR] [NINJA] LogUtil.get_failed_log(log_path)
[OHOS ERROR] [NINJA] File "/home/xgj/ws/OpenHarmony-v5.1.0-Release/OpenHarmony/build/hb/util/log_util.py", line 209, in get_failed_log
[OHOS ERROR] [NINJA] LogUtil.get_compiler_failed_log(log_path)
[OHOS ERROR] [NINJA] File "/home/xgj/ws/OpenHarmony-v5.1.0-Release/OpenHarmony/build/hb/util/log_util.py", line 196, in get_compiler_failed_log
[OHOS ERROR] [NINJA] raise OHOSException(
[OHOS ERROR] [NINJA] exceptions.ohos_exception.OHOSException: COMPILE Failed! Please check error in /home/xgj/ws/OpenHarmony-v5.1.0-Release/OpenHarmony/out/rk3568/error.log, and for more build information in /home/xgj/ws/OpenHarmony-v5.1.0-Release/OpenHarmony/out/rk3568/build.log
[OHOS ERROR] [NINJA][OHOS ERROR] [NINJA] Code: 4000
[OHOS ERROR] [NINJA]
[OHOS ERROR] [NINJA] Reason: COMPILE Failed! Please check error in /home/xgj/ws/OpenHarmony-v5.1.0-Release/OpenHarmony/out/rk3568/error.log, and for more build information in /home/xgj/ws/OpenHarmony-v5.1.0-Release/OpenHarmony/out/rk3568/build.log
[OHOS ERROR] [NINJA]
[OHOS ERROR] [NINJA] Error Type: Ninja build error
[OHOS ERROR] [NINJA]
[OHOS ERROR] [NINJA] Description: An unknown error occurred while executing 'ninja -C'.
[OHOS ERROR] [NINJA]
[OHOS ERROR] [NINJA] Solution: no solution
[OHOS ERROR] [NINJA]
=====build error=====
无论使用站点下载或者repo方式下载源码编译都出现这个错误,而别人编译是没有这个错误的。
怀疑是环境问题或源码不全,试下用如下方式看是否能解决:
1. 删除out目录,清除缓存 再次编译
rm -rf ./out
rm -rf ~/.ccache
hb clean
ccache -C
执行编译命令
2. 如果还报错
重新同步一下源码,并预编译 :
repo sync -c -j16
repo forall -c ‘git lfs pull’
bash build/prebuilts_download.sh --skip-ssl
重复 1 里面的的步骤再次编译…
用了上述操作依然解决不了。
以前编译过4.1源码,环境应该是没问题的。
被搞郁闷了,别人编译都是一次过,没这问题。
按照错误提示ff_hwcontext_type_vulkan和by hwcontext.c进去源码分析错误原因,全局搜索ff_hwcontext_type_vulkan在哪里定义和使用了的,发现是在third_party/ffmpeg/libavutil/hwcontext_vulkan.c中定义,都有定义,为啥还会编译错误呢?看third_party/ffmpeg/libavutil/hwcontext.c:
static const HWContextType * const hw_table[] = {
#if CONFIG_CUDA&ff_hwcontext_type_cuda,
#endif
#if CONFIG_D3D11VA&ff_hwcontext_type_d3d11va,
#endif
#if CONFIG_LIBDRM&ff_hwcontext_type_drm,
#endif
#if CONFIG_DXVA2&ff_hwcontext_type_dxva2,
#endif
#if CONFIG_OPENCL&ff_hwcontext_type_opencl,
#endif
#if CONFIG_QSV&ff_hwcontext_type_qsv,
#endif
#if CONFIG_VAAPI&ff_hwcontext_type_vaapi,
#endif
#if CONFIG_VDPAU&ff_hwcontext_type_vdpau,
#endif
#if CONFIG_VIDEOTOOLBOX&ff_hwcontext_type_videotoolbox,
#endif
#if CONFIG_MEDIACODEC&ff_hwcontext_type_mediacodec,
#endif
#if CONFIG_VULKAN&ff_hwcontext_type_vulkan,
#endifNULL,
};
在这里看到ff_hwcontext_type_vulkan是在这里被使用的,链接找不到,说明CONFIG_VULKAN被配置成了1,但是ffmpeg的关于vulkan的功能又被禁用了,所以链接时找不到ff_hwcontext_type_vulkan?
找到CONFIG_VULKAN定义的地方,是在out/rk3568/gen/third_party/ffmpeg/include/config.h文件,在这里还可以看到Makefile:out/rk3568/gen/third_party/ffmpeg/include/config.mak
对比以前编译成功的4.1代码中的这2个文件发现,4.1配置如下,config.mak、config.h:
!CONFIG_VULKAN=yes
#define CONFIG_VULKAN 0
而我编译OH5.1这2个配置确实这样的:
CONFIG_VULKAN=yes
#define CONFIG_VULKAN 1
也对比同事编译的生成的配置也是和4.1的一样。搞不懂为啥我编译生成就变了呢,源码也没修改过,这应该就是一直编译出链接现这个错误的原因了。
那去分析ffmpeg配置。
third_party/ffmpeg/BUILD.gn是产生编译ninja编译文件的,其中调用//third_party/ffmpeg/ohos_config.sh进行配置ffmpeg。
action("gen_config_header") {if (current_os == "ios") {script = "//third_party/ffmpeg/ios_config.sh"} else if (current_os == "android" && host_os == "mac") {script = "//third_party/ffmpeg/android_mac_config.sh"} else {script = "//third_party/ffmpeg/ohos_config.sh"}if (!is_cross_platform_build) {if (ffmpeg_selected_platform == "aarch64") {print("third_party:ffmpeg # external_deps //third_party/musl:soft_libc_musl_static")external_deps = [ "musl:soft_libc_musl_static" ]}}
分析对比third_party/ffmpeg/ohos_config.sh发现和OH4.1、同事的文件是一样的。懵逼了。
只能分析ohos_config.sh了,该文件里有2处定义FFmpeg配置的地方
第一处在文件18行,配置–disable-vulkan:
FF_CONFIG_OPTIONS="......--disable-vulkan......"
第二处在文件130行,没有配置–disable-vulkan。
尝试在该配置加入–disable-vulkan,然后编译,嗨,编译成功了。
至于为啥和别的配置一样却编译出现这个问题就搞不懂了,见鬼了。
相关文章:
RK3568 OH5.1 源码编译及问题
安装编译器和二进制工具 在源码根目录下执行prebuilts脚本,安装编译器及二进制工具。 bash build/prebuilts_download.sh在源码根目录执行如下指令安装hb编译工具: python3 -m pip install --user build/hb使用build.sh脚本编译源码 进入源码根目录&…...
【razor】回环结构导致的控制信令错位:例如发送端收到 SR的问题
一、razor的echo程序 根据对 yuanrongxi/razor 仓库的代码和 echo 测试程序相关实现的分析,下面详细解读 echo 程序中 RTCP sender report(SR)、receiver report(RR)回显的问题及项目的解决方式。 1. 问题背景 在 RTP/RTCP 体系下,SR(Sender Report)由发送端周期性发…...
leetcode hot100:三、解题思路大全:哈希(两数之和、字母异位词分组、最长连续序列)、双指针(移动零、盛最多水的容器、三数之和、接雨水)
哈希 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返…...
MySQL 8.0 OCP 1Z0-908 161-170题
Q161.Examine this command, which executes successfully: cluster.addInstance ( ‘:’,{recoveryMethod: ‘clone’ 1}) Which three statements are true? (Choose three.) A)The account used to perform this recovery needs the BACKUP_ ADMIN privilege. B)A target i…...
onlyoffice 源码 调试说明 -ARM和x86双模式安装支持
很多用户在调试onlyoffice源码最大的问题是如何搭建环境,这个难度很高,下面提供一键安装的方式,让普通用户也能快速调试源码。 OnlyOffice Document Server 基于源码运行的容器调试模式,凭借 Docker 容器化技术的核心优势,为开发者提供了跨平台、高兼容性…...
workflow:高效的流式工作架构
引言 workflow是sougou的一款开源框架 主要是以请求回应的模式解决各自网络/IO任务而发明的 一.workflow的任务流 1.workflow都封装了哪些任务流 以请求回应的模式来解释 ① 网络层 服务端 在服务端的request 相当于发送了一个获取客户端请求的请求,response相当…...
音视频之H.265/HEVC速率控制
H.265/HEVC系列文章: 1、音视频之H.265/HEVC编码框架及编码视频格式 2、音视频之H.265码流分析及解析 3、音视频之H.265/HEVC预测编码 4、音视频之H.265/HEVC变换编码 5、音视频之H.265/HEVC量化 6、音视频之H.265/HEVC环路后处理 7、音视频之H.265/HEVC熵编…...
jsmpeg+java+ffmpeg 调用摄像头RTSP流播放
原理就是这样,明白吧。本次用springboot netty起这个2个服务,执行拉代码执行即可 <!-- netty --><dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.68.Final</ver…...
深度剖析ZooKeeper
1. ZooKeeper架构总览 ZooKeeper 是一个分布式协调服务,广泛用于分布式系统中的配置管理、命名服务、分布式锁和领导选举等场景。以下是对 ZooKeeper 架构、通信机制、容错处理、数据一致性与可靠性等方面的详细剖析。 一、ZooKeeper 主从集群 ZooKeeper 采用 主从…...
Zookeeper 集群安装与脚本化管理详解
安装之前:先关闭所有服务器的防火墙!!!!!!!!!!!! systemctl stop firewalld 关闭防火墙 systemctl disable firewalld 开机不启动防火…...
第10天-Python操作MySQL数据库全攻略:从基础连接到高级应用
一、环境准备 1. 安装MySQL驱动 bash 复制 下载 # 官方推荐驱动 pip install mysql-connector-python# 或使用PyMySQL(兼容性更好) pip install pymysql 2. 创建测试数据库 sql 复制 下载 CREATE DATABASE python_db; USE python_db;CREATE TABLE users (id INT AU…...
Spring Cloud Gateway深度解析:原理、架构与生产实践
文章目录 前言一、概述二、核心架构设计及设计原理2.1 分层架构模型网络层(I/O模型)核心处理层 2.2 核心组件协作流程路由定位阶段过滤器执行阶段 2.3 响应式编程模型实现Reactor上下文传递背压处理机制 2.4 动态路由设计原理2.5 异常处理体系2.6 关键路…...
Trae 04.22版本深度解析:Agent能力升级与MCP市场对复杂任务执行的革新
我正在参加Trae「超级体验官」创意实践征文,本文所使用的 Trae 免费下载链接:Trae - AI 原生 IDE 目录 引言 一、Trae 04.22版本概览 二、统一对话体验的深度整合 2.1 Chat与Builder面板合并 2.2 统一对话的优势 三、上下文能力的显著增强 3.1 W…...
股指期货模型,简单易懂的套利策略
在股指期货投资领域,有不少实用的模型和策略,今天咱们就用大白话来唠唠其中几个重要的概念。 一、跨期套利:合约间的“差价游戏” 跨期套利简单来说,就是投资者以赚取期货合约之间的价差为目的,在同一个期货品种的不…...
MySQL 故障排查与生产环境优化
目录 1. MySQL单实例故障排查 2. MySQL 主从故障排查 3. MySQL 优化 3.1 硬件方面 3.2 MySQL 配置文件 3.3 SQL 方面 1. MySQL单实例故障排查 (1) 故障现象1 ERROR 2002 (HY000): Cant connect to local MySQL server through socket /data/mysql…...
Java泛型 的详细知识总结
一、泛型的核心作用 类型安全:在编译期检查类型匹配,避免运行时的ClassCastException。代码复用:通过泛型逻辑统一处理多种数据类型。消除强制转换:减少显式的类型转换代码。 二、泛型基础语法 1. 泛型类/接口 定义:…...
k8s 配置 Kafka SASL_SSL双重认证
说明 kafka提供了多种安全认证机制,主要分为SASL和SSL两大类。 SASL: 是一种身份验证机制,用于在客户端和服务器之间进行身份验证的过程,其中SASL/PLAIN是基于账号密码的认证方式。 SSL: 是一种加密协议,…...
电商虚拟户:重构资金管理逻辑,解锁高效归集与智能分账新范式
一、电商虚拟户的底层架构与核心价值 在数字经济浪潮下,电商交易的复杂性与日俱增,传统账户体系已难以满足平台企业对资金管理的精细化需求。电商虚拟户作为基于银行或持牌支付机构账户体系的创新解决方案,通过构建“主账户子账户”的虚拟账户…...
从混乱到高效:我们是如何重构 iOS 上架流程的(含 Appuploader实践)
从混乱到高效:我们是如何重构 iOS 上架流程的 在开发团队中,有一类看不见却至关重要的问题:环境依赖。 特别是 iOS App 的发布流程,往往牢牢绑死在一台特定的 Mac 上。每次需要发版本,都要找到“那台 Mac”ÿ…...
01 基本介绍及Pod基础
01 查看各种资源 01-1 查看K8s集群的内置资源 [rootmaster01 ~]# kubectl api-resources NAME SHORTNAMES APIVERSION NAMESPACED KIND bindings v1 …...
DAY31-文件的规范拆分和写法
知识点回顾 规范的文件命名规范的文件夹管理机器学习项目的拆分编码格式和类型注解 (一)文件拆分 思考:如何把一个文件,拆分成多个具有着独立功能的文件,然后通过import的方式,来调用这些文件。这样具有几个…...
[创业之路-369]:企业战略管理案例分析-9-战略制定-差距分析的案例之华为
一、综合案例 在战略制定中,华为通过差距分析明确战略方向,以应对市场挑战和实现长期发展目标。 以下为具体案例与分析: 1、案例背景 华为在通信设备领域崛起过程中,始终将差距分析作为战略制定的核心环节。面对国际竞争对手&…...
【华为鸿蒙电脑】首款鸿蒙电脑发布:MateBook Fold 非凡大师 MateBook Pro,擎云星河计划启动
文章目录 前言一、HUAWEI MateBook Fold 非凡大师(一)非凡设计(二)非凡显示(三)非凡科技(四)非凡系统(五)非凡体验 二、HUAWEI MateBook Pro三、预热…...
深入理解Redis Cluster:架构、原理与实践
Redis 是一个高性能的键值存储数据库,广泛应用于缓存、会话存储、消息队列等场景。随着数据量和并发量的增长,单机 Redis 可能面临性能瓶颈和单点故障问题。为了解决这些问题,Redis 提供了 Redis Cluster,一种分布式解决方案&…...
分析 redis 的 exists 命令有一个参数和多个参数的区别
在 redis 中,exists 命令是用来查询某个或多个 key 是否存在的,返回存在的 key 的个数。 由于 redis 是按照键值对方式存储数据的,于是一个 key 只能对应一组数据,那么上述的 key 的个数指的即是需要查询的 key 中有几个 key 是存…...
[概率论基本概念1]什么是经验分布
一、说明 描述一个概率模型,有密度函数很好描述。如果写不出密度函数,退而用分布函数也能完整刻画,因此,分布函数表示比密度函数表示更加宽泛普适。本片讲述经验分布拟合分布函数的基础概念。 二、经验分布直观解释 在统计学中…...
使用Java实现Navicat密码的加密与解密
在日常开发过程中,我们有时需要处理各种软件保存的凭据信息,比如数据库连接密码等。这篇文章将介绍如何使用Java对Navicat保存的数据库密码进行加密和解密。 一、背景介绍 Navicat是一款强大的数据库管理工具,支持多种数据库系统。为了保护…...
怎么样进行定量分析
本文章将教会你如何对实验结果进行定量分析,其需要一定的论文基础,文末有论文撰写小技巧,不要看基础原理的人可以直接调到文章末尾。 一、什么是定量分析 定量分析是一种基于数据和数学模型的分析方法,它在众多领域中发挥着至关…...
python学习day2
今天主要学习了变量的数据类型,以及如何使用格式化符号进行输出。 一、认识数据类型 在python里为了应对不同的业务需求,也把数据分为不同的类型。 代码如下: """ 1、按类型将不同的变量存储在不同的类型数据 2、验证这些…...
FreeMarker
概述:FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序…...
JDK 21新特性详解
JDK 21新特性详解:现代Java开发的重大更新 Java开发工具包(JDK)21作为最新的长期支持(LTS)版本,于2023年9月发布,带来了许多令人兴奋的新特性。作为Java开发者,了解这些新功能对于保持技术竞争力至关重要。本文将详细介绍JDK 21中…...
使用MCP驱动IDA pro分析样本
最近国外的牛人开发了一个ida pro的mcp server,项目的地址为mrexodia/ida-pro-mcp: MCP Server for IDA Pro,实现了通过自然对话来分析样本。 今天我们试用一下。 MCP Server for IDA Pro项目简介 这个mcp server提供下面这些工具,基本涵盖…...
Web前端开发:@media(媒体查询)
什么是媒体查询? 媒体查询是CSS3的一个功能,允许你根据设备的特性(如屏幕宽度、设备方向、分辨率等)应用不同的CSS样式。简单来说,就是让网页在不同设备上(手机、平板、电脑)自动调整布局和样式…...
psotgresql18 源码编译安装
环境: 系统:centos7.9 数据库:postgresql18beta1 #PostgreSQL 18 已转向 DocBook XML 构建体系(SGML 未来将被弃用)。需要安装 XML 工具链,如下: yum install -y docbook5-style-xsl libxsl…...
如何在VSCode中更换默认浏览器:完整指南
引言 作为前端开发者,我们经常需要在VSCode中快速预览HTML文件。默认情况下,VSCode会使用系统默认浏览器打开文件,但有时我们可能需要切换到其他浏览器进行测试。本文将详细介绍如何在VSCode中更换默认浏览器。 方法一:使用VSCo…...
Python Day26 学习
继续NumPy的学习 数组的索引 一维数组的索引 创建及输出 arr1d np.arange(10) # 数组: [0 1 2 3 4 5 6 7 8 9] arr1d array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 取出数组的第一个元素,最后一个元素 代码实现 arr1d[0] arr1d[-1] 取出数组中索引为3&#x…...
2025年PMP 学习二十一 14章 项目立项管理
2025年PMP 学习二十一 14章 项目立项管理 项目立项管理 项目建议 (Project Proposal)项目可行性分析 (Project Feasibility Analysis)项目审批 (Project Approval)项目招投标 (Project Tendering)项目合同谈判和签订 (Project Contract Negotiation and Signing) 文章目录 20…...
Ubuntu开机自启服务
一、准备启动脚本 在你的项目文件夹(例如 /home/ubuntu/Plant_Diease_Recongnization_Server_1)中创建一个启动脚本 run_ui_main.sh: #!/usr/bin/env bash # run_ui_main.sh:激活 yolov8 环境并启动 ui_main.py# 设置 Anaconda/…...
使用Docker部署React应用与Nginx
这个教程将帮助您使用Docker部署一个带有React的Nginx容器,并通过卷(volumes)将本地代码绑定到Docker容器中。这种设置非常适合开发环境,因为它允许您在本地编辑代码,而容器中的应用会自动更新。 步骤概述 创建Nginx配置文件创建Dockerfile…...
基于SpringBoot的小型民营加油站管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
Triton介绍和各平台支持情况分析
文章目录 💞Triton介绍🧠 Triton 是什么?🔍 Triton 的核心特点🚀 Triton 在 PyTorch 中的作用📦 Triton 的典型使用场景🧪 示例:Triton 编写的向量加法(GPU 并行…...
HTTPS核心机制拆解
目录 引言 HTTPS和HTTP的区别 常见加密方式 数据摘要 数字证书与数据签名 HTTPS请求过程 结语 引言 HTTPS是什么?是一个应用层协议,在HTTP协议的基础上引入了一层加密层。为什么需要HTTPS?答案是显而易见的,要加密…...
我的食物信使女友
第一章:初识那是一个普通的周三下午,阳光透过咖啡馆的玻璃窗洒在木质的桌子上,空气中弥漫着咖啡的香气和轻柔的爵士乐。我坐在角落的一个位置,手中捧着一本已经翻了几十页的小说,但心思却完全不在文字上。我的生活就像…...
【D1,2】 贪心算法刷题
文章目录 不同路径 II整数拆分 不同路径 II 初始化的时候不能整列初始化为1,因为如果有障碍物,后面的都不能到达 也不能整列初始化为0,因为状态转移的时候第一行第一列都没有检查,因此不能部分初始化 整数拆分 需要考虑几种情况…...
C++多态的详细讲解
【本节目标】 1. 多态的概念 2. 多态的定义及实现 3. 抽象类 4. 多态的原理 5. 单继承和多继承关系中的虚函数表 前言 需要声明的,本博客中的代码及解释都是在 vs2013 下的 x86 程序中,涉及的指针都是 4bytes 。 如果要其他平台下,部…...
UE5在Blueprint中判断不同平台
在Unreal Engine 5的蓝图中,可以通过以下方法判断当前运行的平台(如Android、Windows、iOS等),并根据平台执行不同的逻辑: 方法1:使用 Get Platform Name 节点 步骤: 在蓝图图表中右键点击&am…...
多卡跑ollama run deepseek-r1
# 设置环境变量并启动模型 export CUDA_VISIBLE_DEVICES0,1,2,3 export OLLAMA_SCHED_SPREAD1 # 启用多卡负载均衡 ollama run deepseek-r1:32b 若 deepseek-r1:32b 的显存需求未超过单卡容量(如单卡 24GB),Ollama 不会自动启用多卡 在run…...
MAC电脑中右键后复制和拷贝的区别
在Mac电脑中,右键菜单中的“复制”和“拷贝”操作在功能上有所不同: 复制 功能:在选定的位置创建一个与原始文件相同的副本。快捷键:CommandD用于在当前位置快速复制文件,CommandC用于将内容复制到剪贴板。效果&…...
打卡第二十二天
知识点回顾: LDA线性判别PCA主成分分析t-SNE降维 还有一些其他的降维方式,也就是最重要的词向量的加工,我们未来再说。 作业: 自由作业:探索下什么时候用到降维?降维的主要应用?或者让AI给你出…...
【Unity 2023 新版InputSystem系统】新版InputSystem 如何进行人物移动(包括配置、代码详细实现过程)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、InputSystem配置二、GameInput 游戏输入脚本1.实现思路2.完整代码三、Player 游戏人物移动脚本1.实现思路2.完整代码四、场景脚本设置1.组件设置五、问题解决1.人物一直下落2.人物跳跃时,…...