【正点原子Linux连载】第四章 SDK包的使用 摘自【正点原子】ATK-DLRV1126系统开发手册

news2024/12/22 23:13:50

1)实验平台:正点原子RV1126 Linux开发板
2)平台购买地址:https://detail.tmall.com/item.htm?id=692176265749
3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html

第四章 SDK包的使用

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

4.1 SDK包源码简要
首先建议大家在编译SDK之前,先到正点原子资料网站下载ATK-DLRV1126开发板最新的SDK包,地址为:http://www.openedv.com/docs/boards/arm-linux/RV1126%20Linux.html,点击下载链接进入下载网站,如下图所示:
在这里插入图片描述

图4.1.1 ATK-DLRV1126下载链接图
在上图红色框住的为SDK下载链接地址,进入百度云下载完整的SDK包,下完成后如下图所示:
在这里插入图片描述

图4.1.2 SDK完整目录图
进入01、程序源码01、正点原子SDK源码目录,里面有一个atk-rv1126_linux_release_v1.1_20221207.tar.bz2文件,此文件是正点原子维护的RV1126 SDK包,把此包拷贝到Ubuntu系统里面,在Ubuntu下解压出来,进入工程目录有下图的文件目录,如下图所示:
在这里插入图片描述

图4.1.1 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包编译完成后就会创建)。
4.1.1 rv1126模块代码目录相关说明
什么叫做模块代码?一个完整的SDK包除了kernel、u-boot、buildroot之外,还需要提供上层的第三方库和APP,第三方库和APP合起来叫做模块代码。像阿尔法开发板或者ATK-CLMP157B开发板只有3座大山(kernel、u-boot和buildroot),没有模块代码,这样开发起来很麻烦。有了模块代码后,我们做产品就很容易了。比如:在rv1126上做人脸识别可以参考rockface模块代码。也可以做监控摄像头可以参考common_algorithm、ipc-daemon、ipcweb-backend和ipcweb-ng等等。一个SDK包包含了很多产品的应用代码。
在这里插入图片描述

表4.1.1.1 rv1126模块功能表格
4.1.2 rv1126开发相关文档说明
本小节就列出官方开发文档说明:(默认的路径为:开发板光盘A-基础资料08、rv1126参考资料)。
摄像头的驱动开发文档为:RV1126_RV1109CameraRockchip_Driver_Guide_VI_CN_v1.0.8.pdf。
后续更新……
4.2 SDK包下的脚本使用
在4.1小节讲解SDK包的源码目录下有4个重要的脚本,本小节就教大家如何使用这些脚本进行编译。
build.sh脚本使用
瑞芯微官方使用build.sh脚本来控制整个SDK包的编译和打包镜像,可以使用“-h”或者“help”命令来查看支持那些参数。运行以下命令即可查看:
./build.sh lunch
第一运行的时候必须要指定板级的配置信息(瑞芯微很多芯片都是基于此SDK进行开发的,所以要告诉SDK包我们使用什么芯片),运行结果如下:
在这里插入图片描述

图4.2.1 板级配置文件选择图
查看build.sh使用帮助,命令如下所示:
./build.sh -h //或者./build.sh help
运行结果如下所示:
在这里插入图片描述

图4.2.2 帮助命令参数
上图可以build.sh支持很多参数,不是所有参数都可以使用的。在rv1126上比较常用的参数有:uboot、lunch、kernel、all、buildroot和recovery等等。下面我们说下常用的参数,如下表格所示:
在这里插入图片描述

表4.2.1 build.sh参数表格
envsetup.sh 脚本使用
envsetup.sh脚本主要的作用是,使能buildroot的配置文件。在RV1126这个芯片里,一共可以选择的配置文件有3种分别为:文件系统的配置文件,recovery分区的配置文件(此分区主要是用作升级和复原的文件系统,它也是一个文件系统)和libs的配置文件(生成一些库,方便我们写应用层代码做测试,导出文件系统的库文件)。运行命令如下所示:
./envsetup.sh
运行结果如下图所示:
在这里插入图片描述

图4.2.3 envsetup的运行结果
Buildroot的输出目录下只能有一个“.config”文件,所以我们配置不同的如果我们要修改文件系统的配置文件,需要先使用./envsetup.sh 选择1这个配置,就会在输出目录下生成“.config”文件,运行结果如下图所示:
在这里插入图片描述

图4.2.4 选择文件系统的配置
图中红色框的内容“/home/alientek/atk-rv1126/buildroot/output/alientek_rv1126/.config”是配置文件的绝对路径,此时的配置文件只能配置文件系统,不能配置recovery和libs。使能完成后,在源码目录下可以当作buildroot的源码目录,比如我们可以进行文件系统的图形配置文件,运行以下代码即可:
make menuconfig
如下图所示:
在这里插入图片描述

图4.2.5图形化配置文件
mkfirmware.sh 脚本使用
mkfirmware.sh脚本主要的作用是,把uboot、kernel、文件系统等等进行打包和生成镜像。使用方法请看4.11小节。
rkflash.sh脚本使用
rkflash.sh脚本主要的作用是,在linux系统下进行固件的烧录,使用方法请看3.9小节。
4.3 板级文件说明
BoardConfig-alientek-rv1126.mk是正点原子为ATK-DLRV1126开发板添加的板级信息,在源码目录下device/rockchip/rv1126_rv1109/BoardConfig-alientek-rv1126.mk,此文件包含整个SDK包所需要的配置信息,文件内容如下所示:
示例代码 4.3.1 BoardConfig-alientek-rv1126.mk文件内容

1   #!/bin/bash
2 
3   # Target arch
4   export RK_ARCH=arm
5   # Uboot defconfig
6   export RK_UBOOT_DEFCONFIG=alientek_rv1126
7   # Uboot image format type: fit(flattened image tree)
8   export RK_UBOOT_FORMAT_TYPE=fit
9   # Kernel defconfig
10  export RK_KERNEL_DEFCONFIG=alientek_rv1126_defconfig
11  # Kernel defconfig fragment
12  export RK_KERNEL_DEFCONFIG_FRAGMENT=
13  # Kernel dts
14  export RK_KERNEL_DTS=rv1126-alientek
15  # boot image type
16  export RK_BOOT_IMG=zboot.img
17  # kernel image path
18  export RK_KERNEL_IMG=kernel/arch/arm/boot/zImage
19  # kernel image format type: fit(flattened image tree)
20  export RK_KERNEL_FIT_ITS=boot.its
21  # parameter for GPT table
22  export RK_PARAMETER=parameter-buildroot-fit.txt
23  # Buildroot config
24  export RK_CFG_BUILDROOT=alientek_rv1126
25  # Recovery config
26  export RK_CFG_RECOVERY=alientek_rv1126_recovery
27  # Recovery image format type: fit(flattened image tree)
28  export RK_RECOVERY_FIT_ITS=boot4recovery.its
29  # ramboot config
30  export RK_CFG_RAMBOOT=
31  # Pcba config
32  export RK_CFG_PCBA=
33  # Build jobs
34  export RK_JOBS=2
35  # target chip
36  export RK_TARGET_PRODUCT=rv1126_rv1109
37  # Set rootfs type, including ext2 ext4 squashfs
38  export RK_ROOTFS_TYPE=ext4
39  # rootfs image path
40  export RK_ROOTFS_IMG=rockdev/rootfs.${RK_ROOTFS_TYPE}
41  # Set ramboot image type
42  export RK_RAMBOOT_TYPE=
43  # Set oem partition type, including ext2 squashfs
44  export RK_OEM_FS_TYPE=ext2
45  # Set userdata partition type, including ext2, fat
46  export RK_USERDATA_FS_TYPE=ext2
47  #OEM config
48  export RK_OEM_DIR=oem_ipc
49  # OEM build on buildroot
50  export RK_OEM_BUILDIN_BUILDROOT=YES
51  #userdata config, if not define this, system will format by RK_USERDATA_FS_TYPE
52  export RK_USERDATA_DIR=userdata_normal
53  #misc image
54  export RK_MISC=wipe_all-misc.img
55  #choose enable distro module
56  export RK_DISTRO_MODULE=
57  # Define pre-build script for this board
58  export RK_BOARD_PRE_BUILD_SCRIPT=app-build.sh
59  # Define package-file for update.img
60  export RK_PACKAGE_FILE=rv1126_rv1109-package-file
第4行:开发板的架构为ARM。
第6行:Uboot的配置文件为alientek_rv1126_defconfig。
第8行:Uboot的镜像格式为fit。
第10行:kernel的配置文件为alientek_rv1126_defconfig。
第14行:kernel的设备树为rv1126-alientek.dts。
第16行:内核的镜像类型为zboot.img(此文件包含zImage、设备树和logo)。
第18行:内核镜像文件为zImage。
第20行:kernel镜像的加载位置配置文件为boot.its。
第22行:开发板的分区文件,emmc会按照此分区文件进行分区。
第24行:buildroot的默认配置文件为alientek_rv1126_defconfig。
第26行:recovery的默认配置文件为alientek_rv1126_recovery_defconfig。
第28行:recovery镜像的加载位置配置文件为boot4recovery.its。
第34行:以2进程进行编译。
第36行:指定芯片为rv1126_rv1109。
第38行,文件系统的格式为ext4,只读文件系统可以设置为spuashfs格式。
第40行,文件系统的路径保存到rockdev/rootfs.ext4。
第44行,oem分区的格式类型为ext2,只读oem可以设置为spuashfs。
第46行,userdata分区的格式类型为ext2。
第48行,oem的配置文件夹为oem_ipc,在device/rockchip/oem目录下。
第50行,在buildroot上创建oem。
第52行,userdata的配置文件夹为userdata_normal,在device/rockchip/userdata/目录下。
第54行,misc分区使用img文件为wipe_all-misc.img。
第58行,模块编译的先后顺序,由app-build.sh文件控制。
第60行,打包的配置文件为rv1126_rv1109-package-file。
从上面的配置文件看出来,RK官方都是使用XXXX.mk文件,如果我们要基于原厂的SDK包进行开发,首先要先配置此文件。

4.4 全自动编译
编译前必须看3.1小节,重点是第51页安装软件。
第一次编译的时候需要下载很多压缩包,有些压缩包下载不了的,所以笔者把下载好的压缩包打包成dl.tar.gz,这样大家编译的时候不用下载了。此文件在开发板光盘A-基础资料01、程序源码02、buildroot下载源码包bl.tar.gz,此压缩包拷贝到Ubuntu系统下,这边笔者拷贝到家目录。在源码目录下运行此命令进行创建dl目录:
mkdir buildroot/dl/ -p
运行结果如下图所示:
在这里插入图片描述

图4.4.1 创建dl目录
创建完成后,把dl.tar.gz解压到buildroot/dl目录下,如下命令所示:
tar -axvf ~/dl.tar.gz -C buildroot/dl/
运行结果如下图所示:
在这里插入图片描述

图4.4.2解压dl.tar.gz文件
RK官方提供了一按键编译功能,使用一条命令即可编译出镜像文件,在官方的源码目录下运行以下命令即可:
./build.sh lunch //选择1
./build.sh
编译成功后运行结果如下图所示:
在这里插入图片描述

图4.4.1 全自动编译

4.5 U-Boot编译和配置
4.5.1 uboot的编译
RK官方提供了很方便的编译方法,直接运行以下./build.sh uboot命令可以编译uboot。运行命令如下所示:
./build.sh uboot
运行结果如下图所示:
在这里插入图片描述

图4.5.1.1 编译uboot图
编译完成后,会在u-boot目录下生成uboot.img文件和rv1126_spl_loader_v1.08.108.bin文件,uboot.img文件就是我们要烧录的img镜像,rv1126_spl_loader_v1.08.108.bin是启动引导uboot的文件,就是在第3.7.2章节里的MiniLoaderAll.bin文件。查看结果如下所示:
在这里插入图片描述

图4.5.1.2 查看编译后的Uboot目录
4.5.2 uboot和SPL文件单独烧录
把这两个文件拷贝到Windows下,打开RKDevTool工具,导入配置选项“ATK-DLRV1126出厂系统配置.cfg”到软件里面,ATK-DLRV1126开发板进入LOADER模式(不能进入MASKROM)。在方框里面对“1”和“3”勾选上, Loader分区配置rv1126_spl_loader_v1.08.108.bin;Uboot分区配置uboot.img。配置结果如下图所示:
在这里插入图片描述

图4.5.2.1 上位机单独烧录uboot图
点击执行即可烧录。烧录完成后系统会自动重启,看看打印信息就知道有没有编译成功了,如下图所示:
在这里插入图片描述

图4.5.2.2 新烧录的uboot启动信息
图4.5.2.2中的红色框里打印日期为“2022-11-15 18:42:58”。
4.5.3 uboot的配置
如果想要配置自己的uboot,可以运行以下命令进行操作,在SDK源码目录下:
cd u-boot //跳转到uboot目录下
make alientek_rv1126_defconfig //选择要修改Uboot配置文件,从板级文件知道
make menuconfig //进入图形界面配置
运行结果如下所示:
在这里插入图片描述

图4.5.3 menuconfig图形配置
从图4.5.3中可以看出RK官方是使用2017.09月份的uboot进行修改,我们就可以配置自己的Uboot了,配置完运行以下命令进行保存配置文件。
make savedefconfig //把.config 保存为defconfig
cp defconfig configs/alientek_rv1126_defconfig //更新修改好的配置文件到alientek_rv1126_defconfig
./make.sh uboot //编译uboot
配置完成后我们可以直接用build.sh脚本进行编译了,就会生成我们想要的uboot.img文件和rv1126_spl_loader_v1.08.108.bin。可以把这几条命令写成脚本,就方便我们测试了。
4.6 kernel编译和配置
4.6.1 kernel的编译
编译kernel和uboot一样命令很简单,运行以下命令即可编译:
./build.sh kernel
运行此命令结果如下所示:
在这里插入图片描述

图4.6.1.1编译kernel图
在这里插入图片描述

图4.6.1.2 设备树的电源域配置
图4.6.2中警告是build.sh打印出来的提醒我们注意设备树的电源域(图4.6.1.2)和硬件要一致,如果电压不一致可能会烧CPU,千万、千万、千万不要修改电源域的配置。
编译完成后在“kernel”目录下生成zboot.img(配置文件里面决定生成为zboot.img)。可以跳转到内核里面,运行“ls”命令查看,结果如下所示:
在这里插入图片描述

图4.6.1.3 kernel文件夹目录
4.6.2 kernel的烧录
和单独烧录uboot系统一样,先把zboot.img文件拷贝到Windows系统里面,ATK-DLRV1126开发板进入LOADER模式,打开烧录软件,在方框里面对“6”勾选上,Boot分区配置zboot.img。配置结果如下图所示:
在这里插入图片描述

图4.6.2.1 上位机烧录kernel配置图
点击运行即可进行烧录。烧录成功会自动重启,我们查看打印信息内核有没有替换成功,如下图所示:
在这里插入图片描述

图4.6.2.2 内核烧录成功打印信息
4.6.3 kernel 的配置
如果想修改内核,也可以运行以下命令进行修改:
cd kernel/ //跳转到kernel
make ARCH=arm alientek_rv1126_defconfig //选择要修改的kernel配置文件
make ARCH=arm menuconfig //进入图形界面配置
运行结果如下所示:
在这里插入图片描述

图4.6.3.1 kernel menuconfig配置图形界面
从图4.6.3.1中可以看出RK官方是使用4.19.111版本的kernel进行修改,我们就可以配置自己的kernel了,配置完运行以下命令进行保存配置文件。
make ARCH=arm savedefconfig //把.config保存为defconfig
cp defconfig arch/arm/configs/alientek_rv1126_defconfig //更新修改好的配置文件到alientek_rv1126_defconfig
cd … //跳转到源码目录
./build.sh kernel //编译内核
配置完成后我们可以直接用build.sh kernel脚本进行编译了,就会生成我们想要的zboot.img文件。可以把这几条命令写成脚本,就方便我们测试了。
4.6.4 logo的修改
在源码目录下,进入内核目录,运行以下命令:
ls
运行结果如下所示:
在这里插入图片描述

图4.6.4.1 查看kernel源码目录内容
在图4.6.4.1中红色框住的两个bmp文件就是启动的logo。logo.bmp为uboot的logo;logo_kernel.bmp为内核的logo。如果要替换自己的logo替换这两个文件即可。然后重新编译内核。注意:两个文件的8位的bmp格式的图片。
4.7 recovery编译和配置
Recovery不是必须要的功能,板级配置了此功能,所以我们也需要编译。
4.7.1 recovery编译
编译recovery的命令也是很简单的,命令如下图所示:
./build.sh recovery
运行此命令结果如下所示:
在这里插入图片描述

图4.7.1.1 编译recovery图
如果编译不过通常是网络问题,这边笔者把要下载的软件包放到:开发板光盘A-基础资料01、程序源码02、buildroot源码包dl.tar.bz2,把此文件解压到buildroot/dl目录(如果没有此目录可以自行创建)。编译完成就会生成buildroot/output/alientek_rv1126_recovery/images/recovery.img文件。运行以下命令可以查看文件有么有生成:
ls buildroot/output/alientek_rv1126_recovery/images/recovery.img
运行结果如下图所示:
在这里插入图片描述

图4.7.1.1 查看recovery.img文件的生成
4.7.2 recovery的烧录
先把recovery.img文件拷贝到Windows系统里面,ATK-DLRV1126开发板进入LOADER模式,打开烧录软件,在方框里面对“7”勾选上,Recovery分区配置recovery.img。配置如下图所示:
在这里插入图片描述

图4.7.2.1 recovery烧录配置
4.7.3 recovery的配置
在SDK包的源码目录下,运行以下命令即可配置recovery:
source envsetup.sh alientek_rv1126_recovery //配置recovery的板级信息
make menuconfig //进入图形界面配置
运行结果如下图所示:
在这里插入图片描述

图4.7.3.1 配置recovery图
从图中可以看出recovery也是一个文件系统,只是此系统RK官方做了修改,是用buildroot 2018.02做的。配置完成后我们可以运行以下代码就行保存:
make savedefconfig //保存到buildroot/configs/alientek_rv1126_recovery_defconfig里
./build.sh recovery //重新编译recovery
保存成功后,可以直接运行./build.sh recovery进行编译。
4.8 rootfs编译和配置
4.8.1 rootfs的编译
编译文件系统,还是一条命令解决,命令如下图所示:
./build.sh rootfs
编译结果如下所示:
在这里插入图片描述

图4.8.1.1 编译rootfs图
编译完成就会在源码目录下创建一个“rockdev”文件夹,跳转到此目录下查看究竟生成了那些文件,查看结果如下图所示:
在这里插入图片描述

图4.8.1.2 查看rockdev目录
上图可以看出生成了“demo.img”、“oem.img”和“rootfs.ext4”,rootfs.ext4其实就是文件系统rootfs.img。rootfs.ext4文件就是一个软连接“…/buildroot/output/rockchip_rv1126_rv1109/images/rootfs.ext2”文件。
4.8.2 rootfs的烧录
先把rootfs.ext4、oem.img和demo.img文件拷贝到Windows系统里面,ATK-DLRV1126开发板进入LOADER模式,打开烧录软件,在方框里面对“5”、“8”和“10”勾选上,在配置我们要烧录的文件,rootfs分区配置rootfs.ext4;oem分区配置oem.img;demo分区配置demo.img。配置如下图所示:
在这里插入图片描述

图4.7.2.1 文件系统相关的配置
点击执行即可烧录rootfs、oem和demo。
4.8.3 rootfs的配置
buildroot配置
在SDK包源码目录下,运行以下命令进行配置buildroot:
source envsetup.sh alientek_rv1126 //配置buildroot对应defconfig
make menuconfig //进入图形化界面
运行结果如下所示:
在这里插入图片描述

图4.8.3.1 buildroot配置图
配置完成好保存。运行以下命令进行保存和重新编译(注意:buildroot有时候不能生成一些配置选项,要运行./build.sh cleanall 命令清除,在编译)
make savedefconfig //保存配置文件到buildroot/configs/alientek_rv1126_defconfig
./build.sh rootfs
busybox配置
在SDK包源码目录下,运行以下命令进行配置busybox:
source envsetup.sh alientek_rv1126 //配置buildroot对应defconfig
make busybox-menuconfig //进入图形化界面
运行结果如下所示:
在这里插入图片描述

图4.8.3.2 busybox配置图
配置完成后,放回最上层,如图4.8.3.2中所示,选择“save Configuration to an Alternate File”进行保存到“.config”文件。运行以下命令进行保存刚刚修改的配置。
make busybox-update-config
将修改保存到配置文件 board/rockchip/common/base/busybox.config。重新编译文件系统即可。
4.9 编译第三方库或者APP
整个SDK包里面包含了很多第三方库和APP,如果想单独编译这些可以运行以下命令即可,运行以下命令即可:
./build.sh external/mpp app/mediaserver
./build.sh rootfs
编译完成后可以重新烧录rootfs.img。
4.10 编译BSP包
我们可以编译出只包含音视频编解码库、NPU库以及头文件。注意:BSP包不包含文件系统的。
source envsetup.sh alientek_rv1126_libs
make -j12
编译BSP生成的目录buildroot/output/alientek_rv1126_libs/BSP。
4.11 固件打包
在上几章节中我们生成了很多的img文件,每次都要在不同的目录下拷贝很麻烦,官方提供了一个脚本,运行脚本命令如下所示(在SDK源码目录下运行):
source envsetup.sh alientek_rv1126 //选择环境变量alientek_rv1126
./mkfirmware.sh
运行结果如下图所示:
在这里插入图片描述

图4.11.1 固件打包
打包成功会在源码目录下新建一个“rockdev”目录,把需要烧录的文件打包进里面。我们可以把这些文件通过FTP拷贝到对应的Windows目录下进行烧录。也可以使用rkflash.sh脚本在Ubuntu进行烧录。到这里SDK已经编译完成了,我们就跳转到“rockdev”目录下查看生成了那些文件,运行“ls -l”查看文件,如下图所示:
在这里插入图片描述

图4.11.2 rockdev目录文件
可以看出很多文件都是通过软连接,简单的讲解每个文件的作用:
boot.img:里面包含了设备树、kernel和logo。注:里面有多个设备树文件。
demo.img:正点原子官方出厂demo。
MiniLoaderAll.bin:此文件负责初始化DDR,引导Uboot。相当于SPL或者TF-A。
misc.img:常用来作为系统升级时或者恢复出厂设置时使用。
oem.img:提供给厂商用的分区文件,像RK把他们自己库都放到这里。
parameter.txt:分区相关的文件。
recovery.img:升级相关的文件系统。
rootfs.img:buildroot的文件系统。
uboot.img:里面包含uboot和设备树。
update.img:整个SDK的img。
userdata.img:用户分区。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习周报-20230203

文章目录一 在rhel7系统使用Mariadb一 联系和区别二 需求三 部署安装3.1 环境准备3.2 安装软件包3.3 启动服务3.4 设置防火墙策略四 创建用户和库表4.1 登录数据库4.2 创建用户4.3 创建数据库和表五 备份和恢复5.1 备份 com 数据库5.2 模拟误删除操作5.3 恢复表二 使用grep忽略…

如何建立异形板框的内缩和外扩

如何建立异形板框的内缩和外扩 首先把需要内缩和外扩的外形图设置在信号层(比如TOP),把线宽改为0mil(方便计算)。然后选择外形图,执行命令TJ,就可以得到内缩和外扩图形。然后把生成的图形修改到…

Linux-查找文件、软链接、打包压缩和软件安装

查找文件find软链接ln打包和压缩tar软件安装apt-get1.查找文件find命令功能强大,通常用来在特定的目录下搜索符合条件的文件序号命令作用01find[路径] -name"*.py"查找指定路径下扩展名是.py的文件,包括子目录如果省略路径,表示在当…

最新整理Spring面试题2023

Spring面试专题 1.Spring应该很熟悉吧?来介绍下你的Spring的理解 有些同学可能会抢答,不熟悉!!! 好了,不开玩笑,面对这个问题我们应该怎么来回答呢?我们给大家梳理这个几个维度来回答 1.1 Spring的发展历程 先介绍…

【C++入门】引用详解(引用的特性、引用的使用、引用与指针的区别)

文章目录1 引用概念2 引用特性3 使用场景4 常引用5 传值与传引用的效率比较5.1 值和引用作为函数参数的性能比较5.2 值和引用作为返回值类型的性能比较6 引用和指针的区别1 引用概念 引用不是新定义一个变量,而是给已存在的变量取了一个别名,编译器不会为…

浅谈网络流

网络 网络是一张单向图 , 每条边都有一个权值 c(u,v)c(u,v)c(u,v) 表示边 (u,v)(u,v)(u,v) 的容量. 特别的 , 图上有源点 (s)(s)(s) 和汇点 (t)(t)(t). 网络流 在一张网络上 , 从源点流出 , 最终流入汇点的流. f(u,v)f(u,v)f(u,v) 表示 (u,v)(u,v)(u,v) 的流量. 满足 : 容…

【测试总结系列-1】质量保障之测试左移和右移

在开发一个系统或者说软件,需求分析、软件设计、程序编码、软件测试、运行维护,这些阶段必不可少。整个周期中,作为测试人员,不是只在测试阶段才能发挥作用,也不是仅有测试对软件质量负责,一个项目团队&…

关于图片上传和在页面显示问题

最近在工作中遇到一个关于图片上传的问题。根据之前项目的经验,我知道目前这个公司上传图片有两种方式, 一种是把图片上传到公司服务器上,然后把图片放在服务器上的地址存在数据库中,要获得图片的时候直接从库中拿地址就行了另一…

分析网络抓包用 python 更高效

Abstract分析网络抓包用 python 更高效AuthorsWalter FanCategorylearning noteStatusv1.0Updated2023-01-10LicenseCC-BY-NC-ND 4.0 网络抓包分析用的最多的两大工具是 tcpdump 和 wireshark. 一般我们通过 tcpdump 或者 wireshark 来捕获网络包为 *.pcap 或者 *.pcapng 文件 …

Elasticsearch:在 Elasticsearch 中按距离有效地对地理点进行排序

计算搜索中两点之间的距离有很多用例。 如果你正在处理地理数据,那么无论你从事何种业务,这都必然会出现。 然后,在对这些点进行排序时,你可能需要考虑距离,因为……好吧,为什么不呢? 所以这里…

算法训练营DAY48|121. 买卖股票的最佳时机、122.买卖股票的最佳时机II

这一期到了买卖股票专题,买卖股票的有一些题型,可以使用贪心算法来求解,甚至有时候比动态规划更简单一些,但是本期是讲动态规划的运用,所以不做对于贪心的分析。今天只讲两道例题,其中第二题是第一题的变种…

[NeurIPS 2017] Poincaré Embeddings for Learning Hierarchical Representations

ContentsIntroductionPoincar EmbeddingsThe Limitations of Euclidean Space for Hierarchical DataEmbedding Hierarchies in Hyperbolic SpaceEvaluationReferencesIntroduction 如今,表征学习变得越来越重要 (e.g. word embedding, embeddings of graphs, embe…

如何在电脑上安装 Windows 版桌面编辑器 v7.3

线上编辑器的桌面端版本不需要持续的互联网连接,还可在计算机上处理脱机文件。因此,如果您需要此类功能,可从我们的网站中下载并安装桌面编辑器。 ONLYOFFICE桌面编辑器最新版 最近 ONLYOFFICE 发布了 v7.3,最新版本的桌面编辑器…

SpringBoot+Vue点餐系统

简介:本项目采用了基本的springbootvue设计的点餐。系统。详情请看截图。经测试,本项目正常运行。本项目适用于Java毕业设计、课程设计学习参考等用途。 项目描述 项目名称SpringBootVue点餐系统源码作者LHL项目类型Java EE项目 (前后分离&a…

ESP-IDF:命令模式测试

ESP-IDF:命令模式 /命令模式/ /设计模式之开闭原则&#xff0c;对增加开放对修改关闭/ #include #include class ClientCommands{ //统一管理命令&#xff0c;这是比观察者模式多出来的地方 public: void AddMoney(){ cout<<“add money”<<endl; } void AddEqu…

图解LeetCode——1145. 二叉树着色游戏(难道:中等)

一、题目 有两位极客玩家参与了一场「二叉树着色」的游戏。游戏中&#xff0c;给出二叉树的根节点 root&#xff0c;树上总共有 n 个节点&#xff0c;且 n 为奇数&#xff0c;其中每个节点上的值从 1 到 n 各不相同。 最开始时&#xff1a; 「一号」玩家从 [1, n] 中取一个值…

Ubuntu22.04安装nvidia显卡驱动

Ubuntu22.04安装nvidia显卡驱动 目录 方法一&#xff1a;使用官方的NVIDIA驱动进行手动安装&#xff08;稳定、靠谱&#xff09; 方法二&#xff1a;使用系统自带的“软件和更新”程序-附加驱动更新&#xff08;需要联网&#xff0c;稳定性无法验证&#xff09; 浓缩极简方法…

MySQL入门篇-视图简介

备注:测试数据库版本为MySQL 8.0 这个blog我们来聊聊MySQL视图。 前言: 视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中&#xff0c;是一个虚表。 即数据库中只存放视图的定义而不存放视图对应的数据&#xff0c;这些数据仍存放在导出视图的基本表中。 视…

[Windows] 微信超级管家,自动好友回复、计数、自动同意、群发、好友导出、消息日志、无限多开

简介 微信超级管家是一款大神针对微信制作的工具&#xff0c;它的主要功能包括了自动回复、好友计数、自动同意、群发、好友导出、消息日志、无限多开等等&#xff0c;让你拥有无限潜力哈&#xff0c;经常使用微信电脑版的朋友一定会用的上。 下载 微信超级管家 软件功能 1…

安全测试之浅析静态应用

SAST&#xff0c;Static Application Security Testing&#xff0c;即静态应用安全测试&#xff0c;也叫静态分析&#xff0c;是一种测试方法&#xff0c;一直是应用程序安全性工作的核心部分。根据Forrester的 The State Of Application Security, 2022一文的预测&#xff0c;…