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

【RV1126 学习】SDK/ U-Boot/kernel/rootfs 编译学习

文章目录

  • RV1126芯片介绍
    • rv1126 模块代码目录相关说明
  • SDK 包下的脚本使用
    • build.sh 脚本使用
    • envsetup.sh 脚本使用
    • mkfirmware.sh 脚本使用
    • rkflash.sh 脚本使用
  • U-Boot 编译和配置
    • uboot 的配置修改编译操作
  • kernel 的修改编译
  • rootfs 编译和配置
    • buildroot 配置
    • busybox 配置

RV1126芯片介绍

RV1126 是 Rockchip 推出的一款编解码芯片,CPU 为 4 核 ARM Cortex-A7 32 位,专用于面向人工智能的机械视觉领域,支持 4K 编解码,支持 8 路 1080P 同时进行编解码,内置 2.0TOPS的 NPU。像这种专用芯片,芯片厂商都会给出芯片的 SDK 包进行二次开发,用它来开发有很多好处,比如:不用安装一下特殊的软件和库,自带交叉工具链、文件系统和第三方库,可以直接编译出系统镜像,开发环境搭建比较容易等等。但是开发自由度不够高,更新软件版本很麻烦,代码里有很多私货(芯片厂商自己定义的代码)等等
在这里插入图片描述

在这里插入图片描述

⚫ app : 存放上层应用程序的目录。
⚫ buildroot :SDK 包使用的文件系统为 buildroot。
⚫ build.sh :编译用的脚本,使用方法后面会教。
⚫ device/rockchip :存放每个平台的一些编译和打包固件的脚步和预备文件。
⚫ docs :存放 RK 开发指导文件、平台支持列表、工具使用文档、Linux 开发指南等。
⚫ envsetup.sh :要修改文件系统时候要设置的环境脚本。
⚫ external : 存放相关的库,包括音频,视频等。
⚫ kernel :kernel 源码。
⚫ makefile :整个 SDK 包编译的 Makefile。
⚫ mkfirmware.sh :固件打包使用的脚本,默认在当前路径下的 rockdev 目录。
⚫ prebuilts : 存放交叉编译工具链。
⚫ rkbin: 存放固件和工具。
⚫ rkflash.sh : linux 下的系统烧录脚本。
⚫ tools :存放固件和工具的目录。
⚫ u-boot :U-boot 源码目录。
⚫ rockdev:存放编译输出固件的目录(整个 SDK 包编译完成后就会创建

rv1126 模块代码目录相关说明

什么叫做模块代码?一个完整的 SDK 包除了 kernel、u-boot、buildroot 之外,还需要提供上层的第三方库和 APP,第三方库和 APP 合起来叫做模块代码。

SDK 包下的脚本使用

build.sh 脚本使用

查看 build.sh 使用帮助

morgan@morgan-machine:~/Work/rv1126$ ./build.sh lunch -h
Usage: build.sh [OPTIONS]
Available options:
BoardConfig*.mk    -switch to specified board config
lunch              -list current SDK boards and switch to specified board config
uboot              -build uboot
spl                -build spl
loader             -build loader
kernel             -build kernel
modules            -build kernel modules
toolchain          -build toolchain
rootfs             -build default rootfs, currently build buildroot as default
buildroot          -build buildroot rootfs
ramboot            -build ramboot image
multi-npu_boot     -build boot image for multi-npu board
yocto              -build yocto rootfs
debian             -build debian10 buster/x11 rootfs
distro             -build debian10 buster/wayland rootfs
pcba               -build pcba
recovery           -build recovery
all                -build uboot, kernel, rootfs, recovery image
cleanall           -clean uboot, kernel, rootfs, recovery
firmware           -pack all the image we need to boot up system
updateimg          -pack update image
otapackage         -pack ab update otapackage image (update_ota.img)
sdpackage          -pack update sdcard package image (update_sdcard.img)
save               -save images, patches, commands used to debug
allsave            -build all & firmware & updateimg & save
check              -check the environment of building
info               -see the current board building information
app/<pkg>          -build packages in the dir of app/*
external/<pkg>     -build packages in the dir of external/*

实际编译测试使用耗时

morgan@morgan-machine:~/Work/rv1126$ time ./build.sh
processing board option: allsave
processing option: allsave
.....
vccio7-supply 
regulator-min-microvolt =  1800mV
regulator-max-microvolt =  1800mV
Running build_allsave succeeded.real	116m26.217s
user	244m36.079s
sys		41m30.641s

envsetup.sh 脚本使用

envsetup.sh 脚本主要的作用是,使能 buildroot 的配置文件。在 RV1126 这个芯片里,一共可以选择的配置文件有 3 种分别为:文件系统的配置文件,recovery 分区的配置文件(此分区主要是用作升级和复原的文件系统,它也是一个文件系统)和 libs 的配置文件(生成一些库,方便
我们写应用层代码做测试,导出文件系统的库文件)。

mkfirmware.sh 脚本使用

mkfirmware.sh 脚本主要的作用是,把 uboot、kernel、文件系统等等进行打包和生成镜像。

rkflash.sh 脚本使用

rkflash.sh 脚本主要的作用是,在 linux 系统下进行固件的烧录

U-Boot 编译和配置

RK 官方提供了很方便的编译方法,直接运行以下./build.sh uboot 命令可以编译 uboot。

morgan@morgan-machine:~/Work/rv1126$ ./build.sh uboot

编译完成后,会在 u-boot 目录下生成 uboot.img 文件和 rv1126_spl_loader_v1.08.108.bin 文件,uboot.img 文件就是我们要烧录的 img 镜像,rv1126_spl_loader_v1.08.108.bin 是启动引导uboot 的文件
在这里插入图片描述

uboot 的配置修改编译操作

选择要修改 Uboot 配置文件,从板级文件知道

 morgan@morgan-machine:~/Work/rv1126/u-boot$ make alientek_rv1126_defconfig

进入图形界面配置

morgan@morgan-machine:~/Work/rv1126/u-boot$ make menuconfig

把.config 保存为 defconfig

morgan@morgan-machine:~/Work/rv1126/u-boot$ make savedefconfig
scripts/kconfig/conf  --savedefconfig=defconfig Kconfig

更新修改好的配 置文件到alientek_rv1126_defconfig

morgan@morgan-machine:~/Work/rv1126/u-boot$ cp defconfig configs/alientek_rv1126_defconfig

重新编译 uboot

morgan@morgan-machine:~/Work/rv1126$ ./build.sh uboot

在这里插入图片描述
红色框里打印日期为“2024-01-12 22:34:42

kernel 的修改编译

选择要修改的 kernel 配置文件

morgan@morgan-machine:~/Work/rv1126/kernel$ make ARCH=arm alientek_rv1126_defconfig
#
# configuration written to .config
#

进入图形界面配置

morgan@morgan-machine:~/Work/rv1126/kernel$ make ARCH=arm alientek_rv1126_defconfig

把.config 保存为 defconfig

morgan@morgan-machine:~/Work/rv1126/kernel$ make ARCH=arm savedefconfig
scripts/kconfig/conf  --savedefconfig=defconfig Kconfig

更 新 修 改 好 的 配 置 文 件 到 alientek_rv1126_defconfig

 cp defconfig arch/arm/configs/alientek_rv1126_defconfig 

编译内核

 morgan@morgan-machine:~/Work/rv1126$ ./build.sh kernel

在这里插入图片描述

配置完成后我们可以直接用 build.sh kernel 脚本进行编译了,就会生成我们想要的 zboot.img 文件
烧录成功会自动重启,我们查看打印信息内核有没有替换成功
在这里插入图片描述

rootfs 编译和配置

buildroot 配置

在 SDK 包源码目录下,运行以下命令进行配置 buildroot:
配置 buildroot 对应 defconfig

morgan@morgan-machine:~/Work/rv1126$ source envsetup.sh alientek_rv1126
Top of tree: /home/morgan/Work/rv1126
===========================================#TARGET_BOARD=rv1126
#OUTPUT_DIR=output/alientek_rv1126
#CONFIG=alientek_rv1126_defconfig===========================================
make: 进入目录“/home/morgan/Work/rv1126/buildroot”GEN     /home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/Makefile
/home/morgan/Work/rv1126/buildroot/build/defconfig_hook.py -m /home/morgan/Work/rv1126/buildroot/configs/alientek_rv1126_defconfig /home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig
BR2_DEFCONFIG='' KCONFIG_AUTOCONFIG=/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/build/buildroot-config/auto.conf KCONFIG_AUTOHEADER=/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/build/buildroot-config/autoconf.h KCONFIG_TRISTATE=/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/build/buildroot-config/tristate.config BR2_CONFIG=/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.config HOST_GCC_VERSION="9" BUILD_DIR=/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/build SKIP_LEGACY= BR2_DEFCONFIG=/home/morgan/Work/rv1126/buildroot/configs/alientek_rv1126_defconfig /home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/build/buildroot-config/conf --defconfig=/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig Config.in
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:142:warning: override: reassigning to symbol BR2_PACKAGE_RKWIFIBT
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:179:warning: override: reassigning to symbol BR2_PACKAGE_UPDATE
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:185:warning: override: reassigning to symbol BR2_PACKAGE_RKSCRIPT
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:208:warning: override: reassigning to symbol BR2_TARGET_GENERIC_HOSTNAME
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:209:warning: override: reassigning to symbol BR2_TARGET_GENERIC_ISSUE
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:210:warning: override: reassigning to symbol BR2_TARGET_GENERIC_ROOT_PASSWD
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:235:warning: override: reassigning to symbol BR2_PACKAGE_ALSA_UTILS
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:236:warning: override: reassigning to symbol BR2_PACKAGE_ALSA_UTILS_ALSACONF
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:237:warning: override: reassigning to symbol BR2_PACKAGE_ALSA_UTILS_AMIXER
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:238:warning: override: reassigning to symbol BR2_PACKAGE_ALSA_UTILS_APLAY
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:239:warning: override: reassigning to symbol BR2_PACKAGE_ALSA_PLUGINS
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:240:warning: override: reassigning to symbol BR2_PACKAGE_LIBMAD
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:243:warning: override: reassigning to symbol BR2_PACKAGE_ALSA_CONFIG
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:251:warning: override: reassigning to symbol BR2_PACKAGE_LIBV4L
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:252:warning: override: reassigning to symbol BR2_PACKAGE_LIBV4L_UTILS
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:253:warning: override: reassigning to symbol BR2_PACKAGE_CAMERA_ENGINE
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:315:warning: override: reassigning to symbol BR2_PACKAGE_MPP
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:316:warning: override: reassigning to symbol BR2_PACKAGE_MPP_ALLOCATOR_DRM
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:318:warning: override: reassigning to symbol BR2_PACKAGE_LINUX_RGA
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:343:warning: override: reassigning to symbol BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:344:warning: override: reassigning to symbol BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:345:warning: override: reassigning to symbol BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:351:warning: override: reassigning to symbol BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEORATE
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:352:warning: override: reassigning to symbol BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VORBIS
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:353:warning: override: reassigning to symbol BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OGG
/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.rockchipconfig:558:warning: override: reassigning to symbol BR2_PACKAGE_NTP_NTPD
#
# configuration written to /home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/.config
#
make: 离开目录“/home/morgan/Work/rv1126/buildroot”

进入图形化界面

morgan@morgan-machine:~/Work/rv1126$ make menuconfig

配置完成好保存。运行以下命令进行保存和重新编译(注意:buildroot 有时候不能生成一些配置选项,要运行./build.sh cleanall 命令清除,在编译)

保存配置文件到 buildroot/configs/alientek_rv1126_defconfig

morgan@morgan-machine:~/Work/rv1126$ make savedefconfig
umask 0022 && make -C /home/morgan/Work/rv1126/buildroot O=/home/morgan/Work/rv1126/buildroot/output/alientek_rv1126 savedefconfigGEN     /home/morgan/Work/rv1126/buildroot/output/alientek_rv1126/Makefile
grep "#include" /home/morgan/Work/rv1126/buildroot/configs/alientek_rv1126_defconfig > /home/morgan/Work/rv1126/buildroot/configs/alientek_rv1126_defconfig.split || true
cat /home/morgan/Work/rv1126/buildroot/configs/alientek_rv1126_defconfig >> /home/morgan/Work/rv1126/buildroot/configs/alientek_rv1126_defconfig.split
/home/morgan/Work/rv1126/buildroot/build/defconfig_hook.py -s /home/morgan/Work/rv1126/buildroot/configs/alientek_rv1126_defconfig.split /home/morgan/Work/rv1126/buildroot/configs/alientek_rv1126_defconfig
rm /home/morgan/Work/rv1126/buildroot/configs/alientek_rv1126_defconfig.split

编译

morgan@morgan-machine:~/Work/rv1126$ ./build.sh rootfs

busybox 配置

在 SDK 包源码目录下,运行以下命令进行配置 busybox
/配置 buildroot 对应 defconfig

morgan@morgan-machine:~/Work/rv1126$ source envsetup.sh alientek_rv1126

进入图形化界面

morgan@morgan-machine:~/Work/rv1126$ make busybox-menuconfig

保存刚刚修改的配置

morgan@morgan-machine:~/Work/rv1126$ make busybox-menuconfig

重新编译文件系统

相关文章:

【RV1126 学习】SDK/ U-Boot/kernel/rootfs 编译学习

文章目录 RV1126芯片介绍rv1126 模块代码目录相关说明 SDK 包下的脚本使用build.sh 脚本使用envsetup.sh 脚本使用mkfirmware.sh 脚本使用rkflash.sh 脚本使用 U-Boot 编译和配置uboot 的配置修改编译操作 kernel 的修改编译rootfs 编译和配置buildroot 配置busybox 配置 RV112…...

Golang 使用 AST 获取方法和参数名以及应用举例

背景 在做一些自动生成的代码工作时&#xff0c;有时需要知道方法以及对应的参数名 如果仅是方法&#xff0c;利用反射机制就可以解决 而参数名&#xff0c;程序编译后&#xff0c;已经丢失 可以通过 AST 事先获取方法的参数名 有了方法、参数名&#xff0c;加上反射&…...

DC-DC变换集成电路芯片B34063——工作电压范围宽,静态电流小

B34063为一单片DC-DC变换集成电路&#xff0c;内含温度补偿的参考电压源(1.25V)、比较器、能有效限制电流及控制工作周期的振荡器,驱动器及大电流输出开关管等&#xff0c;外配少量元件&#xff0c;就能组成升压、降压及电压反转型DC-DC变换器。 主要特点&#xff1a; ● 工作…...

强力推荐:本地文件加密软件—超详细加密步骤来了!

在数字化时代&#xff0c;数据安全问题日益受到人们的关注。 为了保护个人和企业的重要信息不被泄露&#xff0c;越来越多的人开始使用文件加密软件。 尤其是常常会有数据泄露风险的企业更是需要一款非常给力的加密工具来保护企业数据安全。 一、选择合适的加密软件 在选择加…...

在qml中,ListModel可以与WorkerScript一起使用,从多个线程访问列表模型

在QML中&#xff0c;您可以使用ListModel和WorkerScript一起实现多线程访问列表模型。以下是一个简单的例子&#xff0c;演示了如何在QML中使用这两个元素&#xff1a; import QtQuick 2.15 import QtQuick.Controls 2.15ApplicationWindow {visible: truewidth: 400height: 3…...

rocketmq实现延迟消息

SpringBoot整合RocketMQ发送延时消息 springboot rocketmq 延迟消息 Windows下RocketMQ安装及可视化界面搭建 Java 客户端 RocketMQ延迟消息 项目背景 项目中有延时消息的需求&#xff0c;综合考量RocketMQ比较适合。 RocketMQ支持多维度的延迟级别 支持多种消息类型 基…...

vue倒计时60秒改变按钮状态效果demo(整理)

你可以使用Vue的计时器和绑定状态的方法来实现这个功能。 首先&#xff0c;在data中添加一个计时器countdown&#xff0c;初始值为0。 data() {return {countdown: 0} }<template><div><button click"startCountdown" :disabled"countdown > …...

多区域isis配置实验

一、预习&#xff1a; IS-IS&#xff1a;Intermediate System to Intermediate System&#xff0c;中间系统到中间系统&#xff0c;是ISO为它的CLNP&#xff08;ConnectionLess Network Protocol&#xff09;设计的一种动态路由协议&#xff0c;后来为了提供对IP路由的支持&…...

Ubuntu 22.04.3 LTS arm64 aarch64 ISO jammy-desktop-arm64.iso 下载

Ubuntu 22.04.3 LTS (Jammy Jellyfish) Daily Build 参考 Are there official Ubuntu ARM / aarch64 desktop images? - Ask Ubuntu...

软件测试面试必备知识

随着软件测试领域对于技术要求越来越清晰&#xff0c;到现在测试人员在市场上的岗位需求也变得越来越复杂。极大部分的企业都开始对自动化测试岗位有了更多的需要。自然而然&#xff0c;面试就相对于非常重要了。 网络上有着各式各样的测试框架的存在&#xff0c;我也不知道我…...

4.4 媒资管理模块 - 分布式任务处理介绍、视频处理技术方案

媒资管理模块 - 视频处理 文章目录 媒资管理模块 - 视频处理一、视频转码1.1 视频转码介绍1.2 FFmpeg 基本使用1.2.1 下载安装配置1.2.2 转码测试 1.3 工具类1.3.1 VideoUtil1.3.2 Mp4VideoUtil1.3.3 测试工具类 二、分布式任务处理2.1 分布式任务调度2.2 XXL-JOB 配置执行器 中…...

K8S集群重新初始化--详细过程

K8S集群重新初始化 0、当前环境1、master节点1.1、在master节点执行下面reset命令&#xff1a;1.2、手动清除配置信息&#xff0c;这一步很关键&#xff1a;1.3、重新引导集群1.4、创建配置目录&#xff0c;并复制权限配置文件到用户目录下&#xff1a;1.5 查看集群状态1.6 安装…...

服务器 Linux常见指令

删除文件 删除文件 单个删除&#xff1a;rm -f 文件名 rm -f 2018_12_26.stderrout.log.060121612 --执行完成即将这个文件删除删除文件夹 rm -rf 路径/目录名tar命令 压缩 tar -cvf [文件名].tar [文件目录] //打包成.tar文件 tar -jcvf [文件名].tar.bz2 [文件目录]…...

C++合并K个有序链表

本篇博客介绍如何使用C合并k个有序链表&#xff0c;在代码中会用到std::priority_queue&#xff0c;首先需要介绍一下std::priority_queue的用法&#xff0c;介绍完std::priority_queue后将介绍如何使用std::priority_queue来辅助合并k个有序链表。 一、C priority_queue用法介…...

win10在启动游戏时报错,提示“d3dx9_25.dll文件丢失”,怎么办?d3dx9_25.dll丢失如何自动修复

一、d3dx9_25.dll文件是什么&#xff1f; d3dx9_25.dll是DirectX的一部分&#xff0c;DirectX是一种由微软开发的专门处理与多媒体、游戏程序和视频相关的应用程序接口。d3dx9_25.dll文件是DirectX9中一个重要的dll文件&#xff0c;主要负责处理3D图形程序&#xff0c;作用是帮…...

16. 蒙特卡洛强化学习基本概念与算法框架

文章目录 1. 是什么2. 有何优点3. 基本概念3.1 立即回报3.2 累积回报3.3 状态值函数3.4 行为值函数3.4 回合&#xff08;或完整轨迹&#xff0c;episode&#xff09;3.5 多个回合&#xff08;或完整轨迹&#xff09;的描述 4.MC强化学习问题的正式描述5. 蒙特卡洛&#xff08;M…...

QT中程序执行时间精准计算的三种方法及对比

一.QT程序在提升程序性能的调试中经常要计算一段程序的执行时间&#xff0c;下面介绍两种简单的实现方式&#xff0c;精确度都可以达到ms。 1.方式一 &#xff08;1&#xff09;代码&#xff1a; #include <QDateTime> qDebug() << "Current_date_and_tim…...

js下载方法分享*

JavaScript可以使用浏览器的API实现文件的下载&#xff0c;以下是一种常用的方法&#xff1a; 假设你已经有了一个文件 URL&#xff0c;你可以创建一个新的 a 标签&#xff0c;并将 href 属性设置为文件的 URL&#xff0c;然后模拟点击这个标签以开始下载。 function downloa…...

C# Stopwatch类_性能_时间计时器

文章只含部分属性方法等&#xff0c;有想了解全面的在下面链接中可以查看&#xff1a;.NET API browser Stopwatch 类 (System.Diagnostics) | Microsoft Learn 一、什么是Stopwatch Stopwatch&#xff1a;提供一组方法和属性&#xff0c;可以准确的测量运行时间。使用的时候需…...

鸿蒙原生应用再添新丁!天眼查 入局鸿蒙

鸿蒙原生应用再添新丁&#xff01;天眼查 入局鸿蒙 来自 HarmonyOS 微博1月12日消息&#xff0c;#天眼查启动鸿蒙原生应用开发#作为累计用户数超6亿的头部商业信息查询平台&#xff0c;天眼查可以为商家企业&#xff0c;职场人士以及普通消费者等用户便捷和安全地提供查询海量…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...