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

构建全志 T113 Tina SDK

1、环境配置:

准备一个 Ubuntu 系统,可以是 WSL,虚拟机等,建议版本是 20.04。

1.1、安装必要的软件

进入系统后,输入下方命令安装需要的工具 :

sudo apt update -y sudo apt full-upgrade -y sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libfuse-dev libglib2.0-dev libgmp3-dev \
libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev libreadline-dev \
libssl-dev libtool lrzsz mkisofs msmtp ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 \
python3-pyelftools python3-setuptools qemu-utils rsync scons squashfs-tools subversion swig texinfo \
uglifyjs upx-ucl unzip vim make make-guile gcc g++ wget xmlto xxd zlib1g-dev

 

1.2、安装 repo:

repo 是 Google 开发的用于管理 Android 版本库的一个工具,repo 是使用 Python 对 git 进行了一定的封装,并不是用于取代 git,它简化了对多个 git 版本库的管理。用 repo 管理的版本库都需要使用 git 命令来进行操作。

因此,使用 repo 工具之前,请先确保已经安装 git。

为什么要用 repo? 项目模块化/组件化之后各模块也作为独立的 git 仓库从主项目里剥离了去,各模块各自管理自己的版本。

下载 repo 文件

sudo curl -o /usr/bin/repo https://storage.googleapis.com/git-repo-downloads/repo

设置执行权限

sudo chmod a+x /usr/bin/repo

检查是否成功安装

repo --version

1.3、更换为国内镜像源

echo export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo' >> ~/.bashrc​
source ~/.bashrc

1.4、配置保存身份认证:

新版本 git 默认加强了安全性,身份认证不会保存,导致拉取 repo 需要多次输入密码,可以用下列命令配置。

git config --global credential.helper store

2、SDK 拉取

2.1、新建一个目录用来存放 SDK

mkdir tina-sdkcd tina-sdk

2.2、初始化仓库

使用 repo init 命令初始化仓库,tina-d1-h 的仓库地址是 https://sdk.aw-ol.com/git_repo/D1_Tina_Open/manifest.git 需要执行命令:

​repo init -u https://sdk.aw-ol.com/git_repo/D1_Tina_Open/manifest.git -b master -m tina-d1-h.xml

如果提示 Username for 'https://sdk.aw-ol.com': 请输入 全志在线开发者论坛 的用户名和密码 。

需要自己先去全志在线开发者论坛创建一个账号,先之前的经验贴说要升到 v2 才有权限下载,升一级还是容易的,但是经过测试现在是创建账号后就能下载。

2.3、使用命令 repo sync 拉取 SDK,由于 SDK 普遍较大,拉取可能需要一定的时间

repo sync

2.4、使用命令 repo start 创建开发环境分支

repo start product-smartx-d1-h-tina-stable-v2.0 --all

3、SDK 配置

3.1、当前克隆项目运行 source build/envsetup.sh 会存在以下报错:

bash: build/envsetup.sh: line 1: syntax error near unexpected token `$'{\r''

bash: build/envsetup.sh: line 1: `function hmm() { 

解决方法:使用 dos2unix 批量将文件转换为 unix 格式 。

sudo apt install dos2unix find -type f | xargs dos2unix

3.2、合入 100ASK 的 T113-S3 补丁

由于全志默认的 SDK 没有提供 T113 的支持,所以需要打百问网的 T113 补丁。

此处需要在根目录操作,否则会污染下载到的tina-sdk。

cd ~​
git clone https://github.com/DongshanPI/100ASK_T113-Pro_TinaSDK.gitcd 100ASK_T113-Pro_TinaSDK git submodule update --init # 替换实际的tina-sdk路径cp ./* -rfvd ~/tina-sdk 

3.3、初始化编译环境

cd tina-sdksource build/envsetup.sh lunch You're building on Linux 
Lunch menu... pick a combo: 1. d1-h_nezha-tina 2. d1-h_nezha_min-tina 3. d1s_nezha-tina 4. t113_100ask-tina 
Which would you like? [Default d1s_nezha]: 4 

按照以上步骤进入编译环境后,输入以下命令可进入linux内核配置:

make kernel_menuconfig

输入下列命令,可以进入Tina配置界面:

make menuconfig

4、修改配置文件

系统分区配置:

;---------------------------------------------------------------------------------------------------
; 说明: 脚本中的字符串区分大小写,用户可以修改"="后面的数值,但是不要修改前面的字符串
;---------------------------------------------------------------------------------------------------;---------------------------------------------------------------------------------------------------
;                                   固件下载参数配置
;---------------------------------------------------------------------------------------------------
;***************************************************************************************************
;    mbr的大小, 以Kbyte为单位
;***************************************************************************************************
[mbr]
size = 16384;***************************************************************************************************
;                                              分区配置
;
;
;  partition 定义范例:
;    [partition]                ;  //表示是一个分区
;    name        = USERFS2      ; //分区名称
;    size        = 16384        ; //分区大小 单位: 扇区.分区表示个数最多2^31 * 512 = 2T
;    downloadfile = "123.fex"   ; //下载文件的路径和名称,可以使用相对路径,相对是指相对于image.cfg文件所在分区。也可以使用绝对路径
;    keydata     = 1            ; //私有数据分区,重新量产数据将不丢失
;    encrypt     = 1            ; //采用加密方式烧录,将提供数据加密,但损失烧录速度
;    user_type   = ?            ; //私有用法
;    verify      = 1            ; //要求量产完成后校验是否正确
;
; 注:1、name唯一, 不允许同名
;     2、name最大12个字符
;     3、size = 0, 将创建一个无大小的空分区
;     4、align to logical block size(504 sectors), leb size = 2*(1 nand phy block size - 1 phy page size)
;***************************************************************************************************
[partition_start][partition]name         = boot-resourcesize         = 504downloadfile = "boot-resource.fex"user_type    = 0x8000[partition]name         = envsize         = 504downloadfile = "env.fex"user_type    = 0x8000[partition]name         = env-redundsize         = 504downloadfile = "env.fex"user_type    = 0x8000[partition]name         = bootsize         = 10080downloadfile = "boot.fex"user_type    = 0x8000[partition]name         = rootfssize         = 126000downloadfile = "rootfs.fex"user_type    = 0x8000;[partition]
;    name         = dsp0
;    size         = 2048
;    downloadfile = "dsp0.fex"
;    user_type    = 0x8000;[partition]
;    name         = recovery
;    size         = 16128
;    ;downloadfile = "recovery.fex"
;    user_type    = 0x8000[partition]name         = privatesize         = 10240user_type    = 0x8000[partition]name         = rootfs_datasize         = 10240user_type    = 0x8000[partition]name         = UDISKname         = rootfs_datasize         = 10240user_type    = 0x8000

替换:tina-sdk/device/config/chips/t113/configs/100ask/sys_partition.fex。

5、修改 U-Boot 打印串口

5.1、修改配置文件

从 device/config/chips/t113/configs/100ask/BoardConfig.mk 中找到使用的 U-Boot 配置,将其打印串口改为 UART3,可以发现使用的 U-Boot 配置为 sun8iw20p1_uart3_defconfig。

找到文件并修改 tina-sdk/lichee/brandy-2.0/u-boot-2018/configs/sun8iw20p1_uart3_defconfig,将 CONFIG_CONS_INDEX 的值改为 4(串口号+1)。

找到并修改 tina-sdk/device/config/chips/t113/configs/100ask/sys_config.fex 文件,按图配置串口号和所用的引脚。

查看数据手册引脚复用,发现 PE8 和 PE9 的串口功能是 FUNC5,所以 uart_debug_tx/rx 的配置为 <5><1><default><default>。

5.2、修改设备树

修改设备树,找到 tina-sdk/device/config/chips/t113/configs/100ask/board.dts 文件,在 pio 节点下配置 uart3 的引脚复用功能。

开启 uart3。

5.3、修改寄存器地址

修改 uboot 环境变量文件 tina-sdk/device/config/chips/t113/configs/100ask/env.cfg。

earlyprintk=sunxi-uart,0x02500000 需要修改为 UART3 的地址,查阅手册可知为 0x02500C00。

12849b33-3786-417e-b2fe-7736c04d4b38-image.png

输入make kernel_menuconfig 找到 Kernel low-level debugging functions 进行勾选。

6、解决编译报错问题

6.1、configure: error: XML::Parser perl module is required for intltool 

输入make menuconfig,在 Libraries 目录下关闭 libxkbcommon 和 xkeyboard-config。

6.2、Qt下载失败问题

如果不需要使用 Qt 的话,输入 make menuconfig 关闭 Qt。

6.3、OpenSSH编译问题

修改 tina-sdk/package/network/openssh/Makefile,直接将版本修改为 8.9p1,即可解决编译问题。

7、编译,打包,烧入

输入下列命令,开始构建系统 :

# -j16 指的是使用16线程编译,实际编译时可按照电脑配置来选择使用多少线程编译。
make -j16

 输入下列命令,开始单独构建 U-Boot:

mboot

输入下列命令,开始单独构建内核(构建系统会顺带构建内核):

mkernel 

输入下列命令,开始打包系统 :

pack 

将 SD 卡插入电脑,打开 PhoenixCard.exe,点击固件,加载 img 固件,然后选择启动卡,再点击烧卡即可,需要注意的是,一定要选择启动卡,否则会启动失败!

烧入软件为 PhoenixCard,链接如下,还有一些 T113 的开发文档:

链接: https://pan.baidu.com/s/1hWomuwc-f8OFpt_LMr4Oqg?pwd=ej2v

提取码: ej2v

8、文件系统只读解决方法

这个问题是因为根文件系统是 SquashFS 类型,且挂载为只读 (ro),需要使用 OverlayFS 让文件系统支持写操作。

默认 Tina-Linux 配置可能没有选中 e2fsprogs 包,导致第一次开机无法执行 ext4 格式化数据分区,只要在配置中开启 e2fsprogs 即可,OverlayFS 文件系统可以类似达到把只读文件系统改为可写文件系统的效果。

8.1、make menuconfig 打开 e2fsprog

8.2、make kernel_menuconfig 打开 ext4

8.3、修改设备树

如果你的原理图中 SD 卡如下图所示,则需要修改设备树,否则不需要修改设备树。

在百问网的补丁包基础上修改了串口之后烧录系统启动后会发现 can't open blockdev,原因是因为默认检测低电平为 SD 卡插入。

但是 SD 卡座 det 脚为高电平有效,所以这边不再使用 det 脚检测 SD 卡,而是使用轮询方式修改设备树,把 cd-gpios 注释掉,然后取消broken-cd的注销。

修改 tina-sdk/device/config/chips/t113/configs/100ask/board.dts 文件。

9、没有 eth0 网络接口解决方法

修改 tina-sdk/device/config/chips/t113/configs/100ask/board.dts 文件后,重新编译打包。

9.1、找到 pio 节点中的子节点 gmac0_pins_a 和 gmac0_pins_b

# 修改前:

gmac0_pins_a: gmac@0 {
        allwinner,pins = "PE0", "PE1", "PE2", "PE3", "PE4",
                 "PE5", "PE6", "PE7","PE8", "PE9";
        allwinner,function = "gmac0";
        allwinner,muxsel = <8>;
        allwinner,drive = <1>;
        allwinner,pull = <0>;
    };

gmac0_pins_b: gmac@1 {
        allwinner,pins = "PE0", "PE1", "PE2", "PE3", "PE4",
                 "PE5", "PE6", "PE7","PE8", "PE9";
        allwinner,function = "gpio_in";
        allwinner,muxsel = <0>;
        allwinner,drive = <1>;
        allwinner,pull = <0>;
    };

# 修改后:gmac0_pins_a: gmac@0 {allwinner,pins = "PG0", "PG1", "PG2", "PG3","PG4", "PG5", "PG6","PG7","PG8","PG9",  "PG10","PG11","PG12","PG13","PG14", "PG15";allwinner,function = "gmac0";allwinner,muxsel = <8>;allwinner,drive = <1>;allwinner,pull = <0>;};gmac0_pins_b: gmac@1 {allwinner,pins = "PG0", "PG1", "PG2", "PG3","PG4","PG5", "PG6","PG7","PG8","PG9", "PG10", "PG11","PG12","PG13","PG14", "PG15";allwinner,function = "gpio_in";allwinner,muxsel = <0>;allwinner,drive = <1>;allwinner,pull = <0>;};

9.2、找到 gmac0 节点

# 修改前:

&gmac0 {
    pinctrl-0 = <&gmac0_pins_a>;
    pinctrl-1 = <&gmac0_pins_b>;
    pinctrl-names = "default", "sleep";
    phy-mode = "rmii";
    use_ephy25m = <0>;
    tx-delay = <3>;
    rx-delay = <0>;
    phy-rst = <&pio PE 10 GPIO_ACTIVE_HIGH>;
    status = "okay";
};

# 修改后:&gmac0 {pinctrl-0 = <&gmac0_pins_a>;pinctrl-1 = <&gmac0_pins_b>;pinctrl-names = "default", "sleep";phy-mode = "rgmii";use_ephy25m = <0>;gmac-power0-vol = <3300000>;tx-delay = <4>;rx-delay = <15>;
//    phy-rst = <&gpio_ext 2 GPIO_ACTIVE_HIGH>;status = "okay";
};

参考文章链接:https://www.cnblogs.com/TheGathering/p/18137803

以上就是构建 T113 Tina-SDK 的全部内容,如果有什么疑问或者建议欢迎在评论区里提出来嗷。

相关文章:

构建全志 T113 Tina SDK

1、环境配置&#xff1a; 准备一个 Ubuntu 系统&#xff0c;可以是 WSL&#xff0c;虚拟机等&#xff0c;建议版本是 20.04。 1.1、安装必要的软件 进入系统后&#xff0c;输入下方命令安装需要的工具 &#xff1a; sudo apt update -y sudo apt full-upgrade -y sudo apt i…...

yolov5 yolov6 yolov7 yolov8 yolov9目标检测、目标分类 目标切割 性能对比

文章目录 YOLOv1-YOLOv8之间的对比如下表所示&#xff1a;一、YOLO算法的核心思想1. YOLO系列算法的步骤2. Backbone、Neck和Head 二、YOLO系列的算法1.1 模型介绍1.2 网络结构1.3 实现细节1.4 性能表现 2. YOLOv2&#xff08;2016&#xff09;2.1 改进部分2.2 网络结构 3. YOL…...

经典问题——华测

1、没有 token 的情况下&#xff0c;接口的自动化测试可以通过哪些方式处理&#xff1f; 确认接口是否有其他认证机制&#xff1a; 如果使用的是 Basic Auth、Session ID 等传统方式&#xff0c;可以在请求中直接传递相关认证信息&#xff08;如用户名和密码、Cookie 等&…...

【视觉惯性SLAM:十二、ORB-SLAM2:局部建图线程】

局部建图线程是ORB-SLAM2的核心模块之一&#xff0c;其主要任务是以局部关键帧为中心&#xff0c;维护和优化局部地图&#xff0c;并不断生成新的地图点&#xff0c;使得地图能够逐渐扩展和保持鲁棒性。以下将从具体的几个方面介绍ORB-SLAM2中的局部建图线程&#xff0c;包括处…...

Spring Boot对访问密钥加解密——HMAC-SHA256

HMAC-SHA256 简介 HMAC-SHA256 是一种基于 哈希函数 的消息认证码&#xff08;Message Authentication Code, MAC&#xff09;&#xff0c;它结合了哈希算法&#xff08;如 SHA-256&#xff09;和一个密钥&#xff0c;用于验证消息的完整性和真实性。 HMAC 是 “Hash-based M…...

Linux高级--2.4.2 linux TCP 系列操作函数 -- 深层理解

一、操作函数简介 在 Linux 中&#xff0c;TCP&#xff08;传输控制协议&#xff09;操作涉及多种系统调用和函数&#xff0c;通常用来创建套接字、连接、发送/接收数据、关闭连接等。以下是一些常用的 TCP 操作函数和它们的简要说明&#xff1a; 1. socket() 函数原型: int…...

小程序租赁系统开发指南与实现策略

内容概要 在如今这个快节奏的时代&#xff0c;小程序租赁系统的开发正逐渐成为许多商家提升服务质量与效率的重要选择。在设计这样一个系统时&#xff0c;首先要明白它的核心目标&#xff1a;便捷、安全。用户希望在最短的时间内找到需要的物品&#xff0c;而商家则希望通过这…...

威胁建模助力企业“建防御 抓运营”

本文为安全知识图谱技术白皮书《践行安全知识图谱&#xff0c;携手迈进认知智能》精华解读系列第六篇——威胁建模技术&#xff0c;重点介绍基于知识图谱的威胁建模应用。 如何做好威胁建模 如今&#xff0c;随着技术的变化&#xff0c;攻防技术不对等和攻防双方关注面不同&a…...

soular使用教程

用 soular 配置你的组织&#xff0c;工作更高效&#xff01;以下是快速上手的简单步骤&#xff1a; &#xfeff; 1. 账号管理 可以对账号信息进行多方面管理&#xff0c;包括分配不同的部门、用户组等&#xff0c;从而确保账号权限和职责的清晰分配。 &#xfeff; 1.1 用…...

WPF编程excel表格操作

WPF编程excel表格操作 摘要NPOI安装封装代码测试代码 摘要 Excel操作几种方式 使用开源库NPOI(常用&#xff0c;操作丰富)使用Microsoft.Office.Interop.Excel COM组件(兼容性问题)使用OpenXml(效率高)使用OleDb(过时) NPOI安装 封装代码 using System; using System.IO; u…...

银河麒麟操作系统安装达梦数据库(超详细)

目录 引言1. 前期准备1.1 安装麒麟系统1.2 下载达梦数据库安装包&#xff08;DM8&#xff09;1.3 上传安装包到麒麟系统1.4 挂载安装包&#xff08;iso&#xff09;文件1.5 配置安装用户和组1.6 创建安装路径及修改权限1.7 设置临时安装目录 2. 安装达梦数据库&#xff08;DM8&…...

SpringCloudAlibaba实战入门之路由网关Gateway初体验(十一)

Spring Cloud 原先整合 Zuul 作为网关组件,Zuul 由 Netflix 公司提供的,现在已经不维护了。后面 Netflix 公司又出来了一个 Zuul2.0 网关,但由于一直没有发布稳定版本,所以 Spring Cloud 等不及了就自己推出一个网关,已经不打算整合 zuul2.0 了。 一、什么是网关 1、顾明…...

struct sock

struct sock是套接口在网络层的表示,它包含了套接字在网络通信中的各种状态和参数。以下是对struct sock的详细解析: 定义与位置 struct sock通常在内核源代码的某个头文件中定义,例如include/net/sock.h。它是网络通信中非常重要的数据结构,用于在内核中表示一个套接字。…...

77、将adaface的mtcnn模型npy文件转成atlas310p模型,并进行推理

基本思想:将adaface的mtcnn模型npy文件转成atlas310p模型进行推理。同时比对结果 ubuntu@ubuntu:~$ git clone https://github.com/mk-minchul/AdaFace.git Cloning into AdaFace... remote: Enumerating objects: 236, done. remote: Counting objects: 100% (109/109), don…...

Docker应用-项目部署及DockerCompose

文章目录 Docker应用-项目部署1. 项目部署-后端1.1 修改配置1.2 项目打包1.3 编写Dockerfile1.4 创建镜像1.5 创建并运行容器1.6 测试 2. 项目部署-前端2.1 html前端静态目录2.2 nginx.config编写2.3 部署宿主机服务器2.4 创建容器并挂载2.5 测试 3. DockerCompose3.1 基本语法…...

Java重要面试名词整理(十一):网络编程

文章目录 概念网络协议计算机网络是什么&#xff1f;定义和分类计算机网络发展简史 计算机网络体系结构OSI七层模型TCP/IP模型TCP/IP协议族IP、TCP和UDPARPTCP/IP网络传输中的数据地址和端口号**端口号的确定** TCP特性TCP三次握手TCP四次挥手&#xff08;分手&#xff09; UDP…...

html + css 淘宝网实战

之前有小伙伴说&#xff0c;淘宝那么牛逼你会写代码&#xff0c;能帮我做一个一样的淘宝网站吗&#xff0c;好呀&#xff0c;看我接下来如何给你做一个淘宝首页。hahh,开个玩笑。。。学习而已。 在进行html css编写之前 先了解下网页的组成和网页元素的尺寸吧 1.网页的组成 …...

Linux打包压缩解压 --- 打包tar命令(归档)

一、tar命令打包&#xff08;归档&#xff09; 在 Linux 中&#xff0c;tar 是一种用于归档文件的工具。通过此命令可将多个文件或目录组合成单个档案文件&#xff0c;可以搭配gzip和bzip等压缩命令让文件体积更小&#xff0c;在配置服务器前备份服务器现有配置&#xff0c;会…...

流架构的读书笔记(2)

流架构的读书笔记&#xff08;2&#xff09; 一、建模工具之一沃德利地图 推测技术的发展,交流和辩论思想的最有力的方法是沃德利地图 沃德利地图的制作步骤 1确定范围和用户需求 2确定满足用户需求所需的组件 3在一条范围从全新到被人们接受的演进轴上评估这些组成 部分的演…...

Xshell远程连接提示“找不到匹配的host key算法“问题处理

1.问题描述 Xshell连接远程服务器node1&#xff0c;提示找不到匹配的host key算法&#xff1b;但是用同机房的其他服务器可以使用ssh连接到这个node1机器&#xff1b; 2.问题处理 问题处理尝试了很多方法&#xff0c;可能大家遇到的有所不同&#xff0c;可以尝试一下本文中的…...

Qt C++关于QSpinBox、QDoubleSpinBox的输入框内鼠标点击事件无法触发截取信号的解决办法

项目场景&#xff1a; 基于Qt C 开发鼠标点击spinbox的触发任务时&#xff0c;我基于QSpinBox继承开发了一个新类&#xff0c;用于弹出自定义键盘。 问题描述 在鼠标点击spinbox的边框以及上下键的时候&#xff0c;能够触发覆写的mousePressEvent&#xff0c;但是一旦鼠标点击…...

【ES6复习笔记】Symbol 类型及其应用(9)

一、Symbol 简介 Symbol 是 JavaScript 中的一种基本数据类型&#xff0c;它表示唯一的标识符。Symbol 的主要目的是防止属性名冲突&#xff0c;尤其是在多个代码库或模块中共享对象时。Symbol 值可以用作对象的属性名&#xff0c;这样可以确保属性名是唯一的&#xff0c;不会…...

深度学习笔记(4)——视频理解

视频理解 视频理解的问题:视频太大了 解决方案:在切片上训练,低FPS,低分辨率 测试的时候:在不同的clips上运行模型,取平均预测结果 视频由图片序列组成: 单帧CNN模型 训练普通的2D CNN模型,对每一帧进行分类&#xff0c;通常是视频分类的一个非常强的基线方法。 Late Fusio…...

Flink定时器

flink的定时器都是基于事件时间&#xff08;event time&#xff09;或事件处理时间&#xff08;processing time&#xff09;的变化来触发响应的。对一部分新手玩家来说&#xff0c;可能不清楚事件时间和事件处理时间的区别。我这里先说一下我的理解&#xff0c;防止下面懵逼。…...

springboot餐厅点餐系统丨源码+数据库+万字文档+PPT

作者简介&#xff1a; 作者&#xff1a;学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”&#xff0c;支持远程部署调试、运行安装。 技术框架 开发语言&#xff1a;Java 框架&#xff1a;springbo…...

记一个itertools排列组合和列表随机排序的例子

朋友不知道哪里弄来了一长串单词列表&#xff0c;一定要搞个单词不重复的组合。那么这个时候我们就可以想到读书时所学的排列组合知识了&#xff0c;而这个在Python中可以怎么实现呢&#xff1f;我记录如下&#xff1a; 使用itertools模块实现排列组合 在 Python 中&#xff…...

Intent--组件通信

组件通信1 获取子活动的返回值 创建Activity时实现自动注册&#xff01;【Activity必须要注册才能使用】 默认 LinearLayout 布局&#xff0c;注意 xml 中约束布局的使用&#xff1b; 若需要更改 线性布局 只需要将标签更改为 LinearLayout 即可&#xff0c;记得 设置线性布局…...

数据分析与应用:如何分析7日动销率和滞销率?

目录 0 需求描述 1 数据准备 1.1 订单明细表 1.2 商品信息表 2 SQL实现 3 问题分析与总结...

信息系统管理工程第8章思维导图

软考信管第8章的思维导图也实在是太长了&#xff0c;制作的耗时远超过之前的预计。给你看看思维导图的全貌如下&#xff0c;看看你能够在手机上滚动多少个屏幕 当你看到这段文字的时候&#xff0c;证明你把思维导图从上到下看完了&#xff0c;的确很长吧&#xff0c;第8章的教程…...

5-pandas常用操作2

前言 一、df.max() 计算每列最大值 二、df.apply() 1.可以传函数 代码如下&#xff08;示例&#xff09;&#xff1a; # lambda 匿名函数自定义 f lambda x:x.max()-x.min() # x参数 冒号后是返回值 df.apply(f) # 默认axis0,所以这里是按列求最大值-最小值2.可以直…...

【HarmonyOS之旅】ArkTS语法(一)

目录 1 -> 基本UI描述 1.1 -> 基本概念 1.2 -> UI描述规范 1.2.1 -> 无参数构造配置 1.2.2 -> 必选参数构造配置 1.2.3 -> 属性配置 1.2.4 -> 事件配置 1.2.5 -> 子组件配置 2 -> 状态管理 2.1 -> 基本概念 2.2 -> 页面级变量的状…...

基于Spring Boot + Vue3实现的在线商品竞拍管理系统源码+文档

前言 基于Spring Boot Vue3实现的在线商品竞拍管理系统是一种现代化的前后端分离架构的应用程序&#xff0c;它结合了Java后端框架Spring Boot和JavaScript前端框架Vue.js的最新版本&#xff08;Vue 3&#xff09;。该系统允许用户在线参与商品竞拍&#xff0c;并提供管理后台…...

解决k8s部署dashboard时一直处于Pending状态的问题

直接用离线包就行 命令 [rootk8s-master ~]# docker load -i calico-image-v3.25.0.tar [rootk8s-master ~]# kubectl apply -f calico.yaml链接在https://download.csdn.net/download/weixin_42759398/90192045 [rootk8s-master ~]# docker load -i calico-image-v3.25.0.t…...

【新方法】通过清华镜像源加速 PyTorch GPU 2.5安装及 CUDA 版本选择指南

下面详细介绍所提到的两条命令&#xff0c;它们的作用及如何在你的 Python 环境中加速 PyTorch 等库的安装。 1. 设置清华镜像源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple这条命令的作用是将 pip &#xff08;Python 的包管理工具&#xf…...

Excel批量设置行高,Excel表格设置自动换行后打印显示不全,Excel表格设置最合适的行高后打印显示不全,完美解决方案!!!

文章目录 说个问题&#xff08;很严重&#xff01;&#xff01;&#xff01;&#xff09;写个方案会Python看这里Python环境搭建不存在多行合并存在多行合并 不会Python看这里 说个问题&#xff08;很严重&#xff01;&#xff01;&#xff01;&#xff09; 平时处理Excel表格…...

高阶数据结构之并查

并查集的概念 之前我们曾学过树&#xff0c;二叉树、二叉搜索树、红黑树、AVL树等&#xff0c;而并查集可以看做是这些树的集合&#xff0c;也就是森林&#xff0c;它也是一种树型结构&#xff0c;不过是顺序的树型结构&#xff0c;如果有学过堆的同学应该会很熟悉。 它的作用是…...

Pandas04

Pandas01 Pandas02 Pandas03 文章目录 内容回顾1 数据的合并和变形1.1 df.append (了解)1.2 pd.concat1.3 merge 连接 类似于SQL的join1.4 join (了解) 2 变形2.1 转置2.2 透视表 3 MatPlotLib数据可视化3.1 MatPlotLib API 套路 &为什么要可视化3.2 单变量可视化3.3 双变量…...

ECMAScript 标准解析及应用

摘要&#xff1a; 本文深入解析了 ECMAScript 标准&#xff0c;包括其发展历程、核心语法、数据类型、对象模型、函数特性等方面。详细阐述了如何在实际的 Web 开发和 JavaScript 编程中应用这些特性&#xff0c;通过具体的代码示例展示了 ECMAScript 标准在构建高效、健壮的应…...

2025最新版Java面试八股文大全

一、Java并发面试题 1、 ThreadLocal 1.1 谈谈你对ThreadLocal的理解&#xff1f; ThreadLocal的作用主要是做数据隔离&#xff0c;填充的数据只属于当前线程&#xff0c;变量的数据对别的线程而言是相对隔离的。它不是针对程序的全局变量&#xff0c;只是针对当前线程的全局…...

从零开始学AI,完成AI 企业知识库的AI问答搭建

1&#xff1a;本地安装一个ollama玩下&#xff0c;ollama下载模型默认路径为C盘&#xff0c;但该盘空间不足。 解决方案&#xff1a;添加系统环境变量OLLAMA_MODELS&#xff0c;设置其值为新的路径。 2&#xff1a;安装完成后&#xff0c;访问http://127.0.0.1:11434/ 查看服务…...

路过石岩浪心古村

周末常去的七彩城堡儿童乐园附近经常有老房子&#xff0c;没想到老房子最多的地方还是浪心古村。而且越看越有历史。 见到一座写着《序西书室》的房子&#xff0c;我最开始以为是一个古代的学校。但是查了百度更加不知道什么意思了哈。‌“序西书室”‌是指《文心雕龙》中的一个…...

【Leecode】Leecode刷题之路第93天之复原IP地址

题目出处 93-复原IP地址-题目描述 题目描述 个人解法 思路&#xff1a; todo代码示例&#xff1a;&#xff08;Java&#xff09; todo复杂度分析 todo官方解法 93-复原IP地址-官方解法 方法1&#xff1a;回溯 思路&#xff1a; 代码示例&#xff1a;&#xff08;Java&…...

121. 买卖股票的最佳时机

题目链接&#xff1a;https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/description/?envTypestudy-plan-v2&envIdtop-100-liked 算法思路&#xff1a; 虽然已经提示我们使用贪心算法了&#xff0c;但是我最开始的时候却不知道怎么使用&#xff0c;因为如果…...

Python Polars快速入门指南:LazyFrames

前文已经介绍了Polars的Dataframe, Contexts 和 Expressions&#xff0c;本文继续介绍Polars的惰性API。惰性API是该库最强大的功能之一&#xff0c;使用惰性API可以设定一系列操作&#xff0c;而无需立即运行它们。相反&#xff0c;这些操作被保存为计算图&#xff0c;只在必要…...

OpenCV-Python实战(10)——形态学

1、腐蚀 cv2.erode() 可以删除图像中的噪音点。 可以删除毛边。 分割图像&#xff08;当图像连接的不够紧密时&#xff09; 。 img cv2.erode(src*,kernel*,anchor*,iterations*,borderType*,borderValue*)img&#xff1a;目标图像。 src&#xff1a;原始图像。 kernel&…...

在Windows上读写Linux磁盘镜像的一种方法

背景 嵌入式开发中&#xff0c;经常会把系统的Linux磁盘镜像保存到Windows上&#xff0c;以便上传到网盘备份或发送给工厂&#xff0c;但是如果想读取/修改镜像中的某个文件&#xff0c;一般有2种方案&#xff1a; 直接访问 就是用虚拟磁盘软件将镜像文件挂载成磁盘&#xf…...

基于STM32F103控制L298N驱动两相四线步进电机

文章目录 前言一、模块参数二、接口说明三、准备工作四、直流电机驱动引脚接线效果展示 五、两相四线步进电机驱动步进电机相关概念拍数驱动时序引脚接线效果展示 六、参考示例 前言 L298N 是一种常见的双 H 桥电机驱动模块&#xff0c;广泛用于驱动直流电机和步进电机。它基于…...

Blazor开发中注册功能设计研究

Blazor开发中注册功能设计是为了用户可以高效、安全地完成注册并登录系统。以高效和用户友好为目标,结合校验、注册和登录功能,为用户提供一个完整的账户管理流程,同时保障系统安全性和稳定性。注册页面应该结构清晰、布局合理,既满足基本注册功能,又通过响应式设计与视觉…...

Docker安装体验kuboard-k8s多集群管理工具

文章目录 1.kuboard是什么&#xff1f;2.docker安装命令2.1 Linux上docker环境安装命令2.2 Windows上docker环境安装命令 3.登录访问3.1首页访问地址3.2 默认账号密码3.3 登录页3.4 首页 4总结 1.kuboard是什么&#xff1f; 参看官网: https://kuboard.cn/gitHub项目地址&…...

组建基于IPV6的网络

现在很多单位使用IPV6的网络&#xff0c;地址资源紧张的状况得到了缓解&#xff0c;很多单位目前采用双栈运行&#xff0c;就是网络设备上同时跑IPV4和IPV6。 IPV6的网络与IPV4网络的配置与IPV4基本相同&#xff0c;注意地址规则与格式的不同。 长度&#xff1a;     IPv6地…...