DP读书:鲲鹏处理器 架构与编程(十二)鲲鹏软件实战案例Docker+KVM的部署

news/2024/7/21 11:20:26 标签: 架构, 云原生, harmonyos, linux, 笔记, 华为云, 开放原子

10min速通了解鲲鹏软件实战案例

  • 云服务器源码移植与编译
    • 配置云服务器
    • Porting Advisor代码移植
    • 搭建交叉编译环境
    • x86云服务器交叉编译 OpenSSL
    • 鲲鹏云服务器上编译 OpenSSL
  • Docker的安装与应用
    • 安装Docker
    • Docker运行与验证
    • Docker常用命令
    • 卸载Docker
    • 安装适配鲲鹏架构的Docker镜像
  • KVM 的安装与应用
    • 安装 KVM
    • 安装虚拟机
    • 配置虚拟机
    • 克隆与修改虚拟机
    • 启动与关闭虚拟机
    • 常用命令
    • QEMU的安装与应用
    • Andriod模拟器的安装与使用
    • 鲲鹏加速引擎的安装与测试
    • 鲲鹏加速引擎

云服务器源码移植与编译

配置云服务器

配置云服务器需要执行以下步骤:

  1. 登陆云服务器,方法包括使用远程桌面连接工具和Web SSH连接工具。
  2. 选择合适的操作系统,推荐选择Linux操作系统。
  3. 进行网络设置。
  4. 安装宝塔Linux面板,以便方便地向云服务器传输文件。
  5. 安装code-server,实现在浏览器上访问vscode,编写代码。

Porting Advisor代码移植

Porting
Advisor是一个工具,旨在帮助开发人员将软件应用程序从一种平台或架构移植到另一种平台或架构。它提供了一种快速、简便的方式来评估移植的可行性并确定潜在的挑战和风险。

在使用Porting Advisor之前,您需要提供有关要移植的软件应用程序的信息,例如源代码、构建脚本、依赖项和配置文件等。然后,Porting Advisor会分析这些信息并提供有关潜在问题的报告。

报告将包括与代码移植相关的各种问题,例如不兼容的API、缺少的库、编译器错误、性能问题等。根据问题的类型和严重程度,Porting Advisor还可以提供一些建议和解决方案,以帮助您解决这些问题。

搭建交叉编译环境

要搭建交叉编译环境,需要按照以下步骤进行操作:

  1. 下载适合的交叉编译工具链,例如arm-linux-gcc-3.4.1.tar.bz2。
  2. 将下载好的交叉编译工具链拷贝到/usr/local/arm/目录下。
  3. 解压交叉编译工具链,使用以下命令:tar jxvf arm-linux-gcc-3.4.1.tar.bz2
  4. 配置环境变量,打开.bashrc文件,添加以下语句:export PATH=$PATH:/usr/local/arm/3.4.1
  5. 重新加载.bashrc文件,使用命令:source ~/.bashrC
  6. 验证交叉编译环境是否安装成功,使用命令:arm-linux-gcc -v,如果出现版本信息则说明安装成功。

完成以上步骤后,您就成功地搭建了交叉编译环境。

x86云服务器交叉编译 OpenSSL

要在x86云服务器上进行交叉编译OpenSSL,您需要遵循以下步骤:

  1. 安装交叉编译工具链。确保您的x86云服务器上已经安装了适用于目标架构(例如ARM)的交叉编译工具链。您可以从相应的供应商或开发者网站下载并安装适合您的需求的工具链。
  2. 下载OpenSSL源代码。访问OpenSSL官方网站或下载适当的版本,并将其解压缩到您的x86云服务器上的某个目录。
  3. 配置交叉编译选项。进入OpenSSL源代码目录,并编辑名为" Configure"的文件。根据您的需求进行必要的修改,例如设置正确的目标架构和编译器路径。
  4. 执行配置脚本。运行以下命令以配置OpenSSL的交叉编译选项:
./Configure target_arch --交叉编译选项

其中,“target_arch"是您的目标架构的名称,而”–交叉编译选项"是您希望添加的其他配置选项,例如启用某些功能或优化级别。
5. 构建交叉编译的OpenSSL。在配置完成后,运行以下命令以构建交叉编译的OpenSSL:

make CC=arm-linux-gcc

确保将"arm-linux-gcc"替换为您实际使用的交叉编译器名称。
6. 安装交叉编译的OpenSSL。运行以下命令以将编译好的OpenSSL安装到您的系统中:

make install

这将将OpenSSL库和其他文件复制到适当的目标位置。

完成以上步骤后,您应该成功地在x86云服务器上交叉编译了OpenSSL。请注意,具体的步骤可能因您的操作系统和目标架构而有所不同,因此请根据实际情况进行调整。

鲲鹏云服务器上编译 OpenSSL

在鲲鹏云服务器上编译OpenSSL的步骤如下:

  1. 进入OpenSSL压缩包所在的目录,使用解压命令将其解压到当前目录:
tar zxvf openssl-1.1.0l.tar.gz
  1. 进入OpenSSL源代码所在目录:
cd openssl-1.1.0l
  1. 执行以下命令进行配置文件生成和结构体预编译:
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
  1. 执行以下命令进行代码编译:
make
  1. 执行以下命令进行测试,确保编译成功:
make test
  1. 执行以下命令进行安装:
sudo make install
  1. 根据所需的配置进行修改,如修改默认的证书存储目录。
  2. 使用以下命令进行测试,如果返回OpenSSL的版本信息,则证明安装成功:
openssl version

以上步骤仅供参考,具体操作请根据实际情况进行调整。

Docker的安装与应用

安装Docker

要安装Docker,你可以按照以下步骤进行操作:

步骤1:准备条件
在安装Docker之前,请确保满足以下条件:

  • 确认你的操作系统是64位版本的,并且已经更新到最新的稳定版本。
  • 如果你使用的是Windows系统,请确保已经启用了虚拟化功能(例如BIOS中的Intel VT-x或AMD-V)。

步骤2:下载Docker安装程序
可以从官方网站下载Docker安装程序。访问 https://www.docker.com/get-started,选择适合你操作系统的版本,并下载安装程序。

步骤3:安装Docker
运行下载的安装程序,按照提示进行安装。安装过程中可能需要提供管理员权限。

步骤4:验证安装
安装完成后,打开终端(Mac和Linux系统)或命令提示符(Windows系统),输入以下命令来验证Docker是否安装成功:

docker --version

如果安装成功,将会显示Docker的版本信息。

步骤5:运行Docker
现在你已经成功安装了Docker,可以通过命令来启动Docker服务:

  • 在Mac或Linux系统上,运行以下命令:
sudo systemctl start docker
  • 在Windows系统上,可以在开始菜单中找到Docker图标并启动Docker Desktop。

至此,你已经成功安装并启动了Docker。现在你可以使用Docker来部署和管理容器了。如有需要,你还可以学习更多关于Docker的使用方法和命令。希望这些步骤能够帮助到你!

Docker运行与验证

当你已经成功安装 Docker 后,可以按照以下步骤来运行和验证 Docker:

步骤1:启动 Docker
在终端(Mac 和 Linux)或命令提示符(Windows)中输入以下命令来启动 Docker 服务:

sudo systemctl start docker     # 对于 Mac 或 Linux

或者

docker desktop                  # 对于 Windows

步骤2:拉取一个镜像
Docker 镜像是用于创建容器的基础文件。你可以从 Docker Hub 上拉取一个现有的镜像来测试。

例如,我们可以拉取一个名为 “hello-world” 的镜像。在终端或命令提示符中输入以下命令:

docker pull hello-world

步骤3:运行容器
拉取完镜像后,可以使用以下命令来运行容器:

docker run hello-world

这将会在 Docker 中创建并运行一个新容器。容器会输出一些信息,并验证 Docker 是否正确安装和运行。

步骤4:查看容器列表
在终端或命令提示符中输入以下命令来查看当前正在运行的容器列表:

docker ps

如果存在正在运行的容器,它们将会被列出。

步骤5:停止容器
如果你想停止一个正在运行的容器,可以使用以下命令:

docker stop <容器ID>

其中,“<容器ID>” 是要停止的容器的唯一标识符。你可以在 docker ps 命令的输出中找到容器的 ID。

这些步骤将帮助你运行和验证 Docker。当你熟悉了 Docker 的基本用法后,你可以开始构建、部署和管理自己的容器化应用程序。如有需要,请继续学习更多关于 Docker 的知识和命令。祝你使用愉快!

Docker常用命令

以下是一些常用的 Docker 命令,以帮助你进行容器化应用程序的构建、部署和管理:

  1. 镜像相关命令:
  • docker images:列出本地的镜像。
  • docker pull <镜像名>:从 Docker Hub 拉取指定的镜像。
  • docker build -t <镜像名> <Dockerfile路径>:根据 Dockerfile 构建自定义镜像。
  1. 容器相关命令:
  • docker run <镜像名>:创建并运行一个新容器。
  • docker ps:列出当前正在运行的容器。
  • docker stop <容器ID>:停止指定的容器。
  • docker start <容器ID>:启动已经停止的容器。
  • docker restart <容器ID>:重启指定的容器。
  • docker rm <容器ID>:移除指定的容器。
  • docker exec -it <容器ID> <命令>:在运行中的容器中执行指定的命令。
  1. 存储卷相关命令:
  • docker volume create <卷名>:创建一个新的存储卷。
  • docker volume ls:列出当前存在的存储卷。
  • docker volume inspect <卷名>:查看指定存储卷的详细信息。
  • docker volume rm <卷名>:删除指定的存储卷。
  1. 网络相关命令:
  • docker network create <网络名>:创建一个新的 Docker 网络。
  • docker network ls:列出当前存在的 Docker 网络。
  • docker network inspect <网络名>:查看指定 Docker 网络的详细信息。
  • docker network rm <网络名>:删除指定的 Docker 网络。
  1. 日志和信息相关命令:
  • docker logs <容器ID>:查看指定容器的日志。
  • docker inspect <容器或镜像ID>:查看指定容器或镜像的详细信息。

这只是一部分常用的 Docker 命令,还有更多命令可以用于各种用例和需求。你可以通过 docker --help 命令或者查阅 Docker 官方文档来获取更详细的帮助和了解更多功能。

请注意,在每个命令中,<镜像名><容器ID><卷名><网络名> 都需要替换为实际的名称或标识符。希望这些命令能够对你有所帮助!

卸载Docker

如果你想卸载 Docker,可以按照以下步骤进行操作:

步骤1:停止 Docker 服务
在终端(Mac 和 Linux)或命令提示符(Windows)中,输入以下命令来停止 Docker 服务:

sudo systemctl stop docker     # 对于 Mac 或 Linux

或者

docker desktop stop           # 对于 Windows

步骤2:删除 Docker 软件包
根据你使用的操作系统,执行以下适当的命令来删除 Docker 软件包:

  • 对于 Ubuntu 或 Debian 等基于apt的系统:
sudo apt-get purge docker-ce docker-ce-cli containerd.io
  • 对于 CentOS 或 Fedora 等基于yum的系统:
sudo yum remove docker-ce docker-ce-cli containerd.io
  • 对于 macOS,删除 Docker.app 应用程序。

  • 对于 Windows,通过控制面板中的程序和功能,找到 Docker Desktop 并卸载它。

步骤3:删除 Docker 数据和配置文件(可选)
如果你希望完全删除 Docker 相关的数据和配置文件,你可以继续执行以下步骤。请注意,这将会删除所有的 Docker 镜像、容器、存储卷等相关数据,因此请确保你已备份了重要的数据。

  • 对于 Ubuntu 或 Debian 等基于apt的系统:
sudo rm -rf /var/lib/docker
  • 对于 CentOS 或 Fedora 等基于yum的系统:
sudo rm -rf /var/lib/docker
  • 对于 macOS,执行以下命令来删除 Docker 数据:
rm -rf ~/Library/Containers/com.docker.docker
rm -rf ~/Library/Application\ Support/Docker\ Desktop/
rm -rf ~/Library/Group\ Containers/group.com.docker
  • 对于 Windows,执行以下命令来删除 Docker 数据(在 PowerShell 中):
Remove-Item -Recurse -Force $Env:ProgramData\Docker
Remove-Item -Recurse -Force $Env:ProgramFiles\Docker
Remove-Item -Recurse -Force $Env:USERPROFILE\.docker

完成以上步骤后,Docker 将会被完全卸载。请确保在卸载 Docker 之前备份任何重要的数据。希望这些步骤对你有所帮助!

安装适配鲲鹏架构的Docker镜像

安装适配鲲鹏架构的Docker镜像可以参考以下步骤:

  1. 拉取镜像:
docker pull --platform arm64 mysql
  1. 查看镜像:
docker images
  1. 确认平台为ARM64的镜像ID。
  2. 创建一个新的Docker镜像,使用ARM64的镜像ID:
docker commit -m "message" -a "author" <container ID> <image name>:<tag>

以上步骤中,“message”和“author”可以替换为相应的信息,“container ID”可以通过docker ps -a命令获取,“image name”可以自定义,但需要确保符合Docker的命名规则,“tag”可以自定义版本号。

KVM 的安装与应用

安装 KVM

https://www.linux-kvm.org/page/Main_Page
安装KVM的步骤如下:

  1. 确保已经安装了图形化界面(如X window)。
  2. 通过ping命令确认主机可以上网。
  3. 安装KVM相关软件包及其依赖项。在RHEL/CentOS系统上,可以运行以下命令:
yum -y install qemu-kvm python-virtinst virt-manager virt-top virt-viewer libvirt libvirt-client virt-install bridge-utils
  1. 检查CPU是否支持虚拟化。运行以下命令:
grep -E 'svm|vmx' /proc/cpuinfo

如果输出任何一行,则表示CPU支持虚拟化。
5. 安装KVM。运行以下命令:

modprobe -r kvm_intel ; modprobe kvm_intel
  1. 启动虚拟化和设置开机自启。运行以下命令:
systemctl start libvirtd
systemctl enable libvirtd
  1. 配置网络环境。创建一个ifcfg-br0文件,内容如下:
TYPE=Bridge
NAME=br0
DEVICENAME=eth0
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.1.1
NETMASK=255.255.255.0
STP=yes
DELAY=0

修改原来的ifcfg-eth0文件,将它的引导项删除,内容如下:

TYPE=Ethernet
NAME=eth0
DEVICENAME=eth0
ONBOOT=yes
BOOTPROTO=none
HWADDR=XX:XX:XX:XX:XX:XX
NM_CONTROLLED=yes
AUTOConnectScript=/usr/sbin/nm-connection-editor --edit $NM_CONNECTIONS[Connection[device]]
CONNECTIVITY_CHECK=yes

重启网络服务,运行以下命令:

systemctl restart network

安装虚拟机

安装虚拟机可以参考以下步骤:

1. 下载适合的虚拟机软件,如VMware、VirtualBox等,注意软件版本的兼容性,最好选择最新版本。
2. 安装虚拟机软件,下载完成后,双击安装文件,按照提示完成安装。期间需要设置虚拟机软件的安装路径等信息,可以按照自己的需要进行选择。
3. 添加虚拟机系统。安装虚拟机软件后,需要添加虚拟机操作系统。在虚拟机软件中,选中“添加虚拟机”选项,按照提示步骤进行操作。需要选择操作系统类型、版本等信息,可根据自己的需求进行选择。
4. 配置虚拟机。添加完成虚拟机系统后,可以对虚拟机进行配置。需要指定虚拟机的内存、硬盘容量等信息。根据虚拟机使用的需要进行设置,注意不要占用过多计算机资源。
5. 安装虚拟机系统。虚拟机配置完成后,需要在虚拟机中安装操作系统。操作方法和在实际机器上安装一致,根据提示安装即可。
6. 使用虚拟机。打开虚拟机软件,选中安装的虚拟机系统,点击启动即可。

可以参考以上步骤来安装和使用虚拟机。

配置虚拟机

配置虚拟机可以参考以下步骤:

  1. 打开虚拟机软件,选择已经创建的虚拟机,点击“编辑虚拟机设置”按钮。
  2. 在虚拟机设置窗口中,可以配置虚拟机的内存、硬盘、网络等参数。根据需要调整每个参数的值,确保配置符合要求。
  3. 配置虚拟机的内存。根据虚拟机的用途和性能,设置合适的内存大小。如果计算机的内存不足,可以调整虚拟机的内存容量。
  4. 配置虚拟机的硬盘。需要选择合适的硬盘容量和文件格式。可以根据需要创建新的硬盘分区或调整已有分区的容量。
  5. 配置虚拟机的网络。可以选择桥接模式或NAT模式等不同的网络连接方式。根据实际情况进行选择和配置。
  6. 安装虚拟机操作系统。在虚拟机设置完成后,可以安装虚拟机操作系统。根据需要选择合适的操作系统版本,按照提示进行安装即可。
  7. 配置虚拟机的光驱。如果需要从光驱启动虚拟机,需要配置虚拟机的光驱,并添加启动光盘的镜像文件。
  8. 配置完毕后,点击“确定”按钮保存设置。

以上是配置虚拟机的一般步骤,具体操作可以根据不同的虚拟机软件和操作系统有所差异。可以参考虚拟机软件的使用手册或相关教程进行操作。

克隆与修改虚拟机

KVM(Kernel-based Virtual Machine)是一个基于Linux内核的虚拟化解决方案,允许在Linux主机上创建和管理虚拟机。以下是一些常用的KVM命令:

  1. 创建虚拟机:

    • 创建虚拟机配置文件:
      virt-install --name <虚拟机名称> --ram <内存大小> --vcpus <虚拟CPU数量> --disk path=<磁盘路径>,size=<磁盘大小> --cdrom <光盘镜像路径> --os-variant <操作系统类型>
      
    • 开启图形化用户界面(可选):
      --graphics vnc,listen=<监听地址>,port=<端口号>
      
    • 示例:
      virt-install --name myvm --ram 2048 --vcpus 2 --disk path=/var/lib/libvirt/images/myvm.qcow2,size=20 --cdrom /path/to/iso/image.iso --os-variant ubuntu20.04 --graphics vnc,listen=0.0.0.0,port=5900
      
  2. 启动、停止和重启虚拟机:

    • 启动虚拟机:
      virsh start <虚拟机名称>
      
    • 关闭虚拟机:
      virsh shutdown <虚拟机名称>
      
    • 强制关闭虚拟机:
      virsh destroy <虚拟机名称>
      
    • 重启虚拟机:
      virsh reboot <虚拟机名称>
      
  3. 查看虚拟机列表:

    virsh list
    
  4. 查看虚拟机详情:

    virsh dominfo <虚拟机名称>
    
  5. 进入虚拟机控制台:

    virsh console <虚拟机名称>
    
  6. 排除虚拟机自动启动:

    virsh autostart --disable <虚拟机名称>
    
  7. 删除虚拟机:

    virsh undefine <虚拟机名称>
    

这些命令只是一部分KVM命令的示例,KVM提供了更多命令和选项用于管理虚拟机、网络和存储等资源。你可以通过查阅KVM官方文档或使用 virsh --help 命令获取更详细的帮助和了解更多功能。

请注意,在每个命令中,“<虚拟机名称>” 、“<磁盘路径>” 等需要替换为实际的名称或路径。希望这些命令能够对你有所帮助!

启动与关闭虚拟机

在KVM中,你可以使用virsh命令行工具来启动和关闭虚拟机。以下是启动和关闭虚拟机的命令:

启动虚拟机:

virsh start <虚拟机名称>

关闭虚拟机:

virsh shutdown <虚拟机名称>

强制关闭虚拟机(相当于断电):

virsh destroy <虚拟机名称>

重启虚拟机:

virsh reboot <虚拟机名称>

需要注意的是,“<虚拟机名称>” 是你要启动或关闭的虚拟机的名称。你可以使用以下命令查看虚拟机的列表:

virsh list --all

这将显示所有已创建的虚拟机及其状态。

启动虚拟机时,它会加载虚拟机配置并执行启动过程。关闭虚拟机时,它会正常关机。强制关闭虚拟机时,它立即停止运行,就像直接断电一样。重启虚拟机会先关闭然后再启动虚拟机。

请确保你有适当的权限来执行这些KVM命令,例如使用sudo或以root用户身份运行。

希望这些命令对你有所帮助!如果你有其他问题,请随时提问。

常用命令

在KVM中,你可以使用virsh命令行工具来启动和关闭虚拟机。以下是启动和关闭虚拟机的命令:

启动虚拟机:

virsh start <虚拟机名称>

关闭虚拟机:

virsh shutdown <虚拟机名称>

强制关闭虚拟机(相当于断电):

virsh destroy <虚拟机名称>

重启虚拟机:

virsh reboot <虚拟机名称>

需要注意的是,“<虚拟机名称>” 是你要启动或关闭的虚拟机的名称。你可以使用以下命令查看虚拟机的列表:

virsh list --all

这将显示所有已创建的虚拟机及其状态。

启动虚拟机时,它会加载虚拟机配置并执行启动过程。关闭虚拟机时,它会正常关机。强制关闭虚拟机时,它立即停止运行,就像直接断电一样。重启虚拟机会先关闭然后再启动虚拟机。

请确保你有适当的权限来执行这些KVM命令,例如使用sudo或以root用户身份运行。

希望这些命令对你有所帮助!如果你有其他问题,请随时提问。

QEMU的安装与应用

QEMU(Quick EMUlator)是一款开源的虚拟化软件,可以模拟多种硬件体系结构,并在其中运行操作系统。https://www.qemu.org/
以下是在Linux系统上安装和使用QEMU的一般步骤:

  1. 安装QEMU:

    • 对于Ubuntu或Debian系统,打开终端并执行以下命令:
      sudo apt-get update
      sudo apt-get install qemu
      
    • 对于Fedora系统,打开终端并执行以下命令:
      sudo dnf install qemu
      
  2. 验证安装:
    在终端中输入以下命令来验证QEMU是否正确安装:

    qemu-system-x86_64 --version
    
  3. 创建虚拟机磁盘镜像:
    使用以下命令创建一个空白的虚拟机磁盘镜像(例如ext4格式):

    qemu-img create -f qcow2 <镜像文件名>.qcow2 <大小>
    

    其中,“<镜像文件名>” 是你想要创建的镜像文件的名称,“<大小>” 是镜像文件的大小(例如10G)。

  4. 启动虚拟机:
    使用以下命令来启动虚拟机并加载镜像:

    qemu-system-x86_64 -hda <镜像文件名>.qcow2
    

    这将启动一个x86_64架构的虚拟机,并加载指定的镜像文件。

这只是QEMU的基本用法示例。QEMU还提供了许多其他功能和选项,例如网络设置、添加设备、启动ISO映像等等。你可以通过QEMU的官方文档或其他教程来了解更多详细的使用方法和命令。

需要注意的是,在使用QEMU时,可能需要一些硬件支持和配置。此外,为了更好地模拟其他体系结构的虚拟机,可能需要安装相应的固件和操作系统映像。

官方文档https://www.qemu.org/

Andriod模拟器的安装与使用

安装和使用 Android 模拟器可以让你在计算机上运行和测试 Android 应用程序。以下是一般步骤:

  1. 安装 Java Development Kit(JDK):

    • 前往 Oracle 官网下载并安装适用于你的操作系统的 JDK。
  2. 下载和安装 Android Studio:

    • 访问 Android 开发者官网(https://developer.android.com/studio)并下载 Android Studio。
    • 执行安装程序,并按照指示完成安装过程。
  3. 启动 Android Studio:

    • 打开已安装的 Android Studio。
    • 完成首次启动的设置向导。
  4. 安装 Android 虚拟设备(Virtual Device):

    • 在 Android Studio 的欢迎界面,点击 “Configure”(配置)并选择 “AVD Manager”(虚拟设备管理器)。
    • 点击 “Create Virtual Device”(创建虚拟设备)。
    • 选择所需的设备类型和版本,并点击 “Next”(下一步)。
    • 下载和安装选择的 Android 系统镜像(若没有已安装的)。
    • 配置虚拟设备的其他选项(如内存大小、屏幕分辨率等),然后点击 “Finish”(完成)。
  5. 启动 Android 模拟器:

    • 在 AVD Manager 中,选择你想要启动的虚拟设备,并点击 “Start”(启动)。
    • 等待模拟器启动完成。

一旦 Android 模拟器启动,你就可以在其中运行和测试你的 Android 应用程序。你还可以安装其他应用程序、调试应用程序等。

需要注意的是,运行 Android 模拟器可能需要一些计算机硬件资源(如内存、处理器等),因此确保你的计算机满足最低系统要求。

如需更详细的说明,请参考 Android 开发者官方文档。https://developer.android.google.cn/guide?hl=zh-cn

鲲鹏加速引擎的安装与测试

官方文档https://www.hikunpeng.com/zh/

鲲鹏加速引擎

见官方文档https://www.hikunpeng.com/zh/


http://www.niftyadmin.cn/n/4991330.html

相关文章

关于微信小程序的生命周期

关于微信小程序的生命周期 onLaunch 官网App.vue/App.uvue | uni-app官网 问题描述&#xff1a;我现在有个小程序 取名为a 有个用户b 从来没有打开过小程序 那么他第一次打开小程序的时候会触发onLaunch 然后用户b退出了小程序 那么用户 b重新打开小程序的时候会触发 onL…

全网首发!大众宝来高尔夫polo领驭迈腾帕萨特奥迪A4A6B6B7等老车机增加带蓝牙控制的AUX解码模块,支持小程序原车按钮控制,支持外接高品质蓝牙模块

文章目录 前言1、设计指标2、PCB设计3、程序设计4、调试4.1蓝牙控制AUX解码板4.2自定义车机按钮控制其他高品质蓝牙音频模块4.3小程序使用 5、模块与车机连接方法6、结语 前言 ​ 之前写过四篇关于车机增加音频输入的方法。 1、07宝来经典车机CD收音机&#xff08;RC668&…

求解整数规划问题的割平面法和分支定界法

文章目录 整数规划割平面法分支定界法代码实现 整数规划 整数规划问题是优化变量必须取整数值的线性或非线性规划问题&#xff0c;不过&#xff0c;在大多数情况下&#xff0c;整数规划问题指的是整数线性规划问题。 其数学模型为 m i n f ( x ) c T x s.t A x b x ≥ 0 x…

ASP.NET Core 的 Routing

ASP.NET Core 的 Routing ASP.NET Core 的 controllers 使用Routing 中间件匹配客户端的 url 请求&#xff0c;然后映射到对应的 controller 的处理方法&#xff08;Action&#xff09;上。 Actions 可以是 常规路由 或 属性路由 的映射。 MVC App一般使用常规路由。 REST API…

【视觉SLAM入门】6.1. (基于直接法的视觉里程计)LK光流法,代码解读, 直接法,特征点法对比,稀疏,半稠密,稠密地图

"刺卵掷地&#xff0c;逐蝇弃笔" 0. 数据集1. 光流法(Optical Flow)1.1. 光流1.2. LK光流法1.3 关键代码&#xff1a;1.4 特点 2. 直接法(Direct Methods)2.1 分类比较2.2 优缺点 前置事项&#xff1a; 特征点耗时&#xff0c;丢弃有用信息&#xff0c;特征缺失&…

我的创作纪念日 —— 一年之期

前言 大家好&#xff01;我是荔枝嘿~看到官方私信才发现原来时间又过去了一年&#xff0c;荔枝也在CSDN中创作满一年啦&#xff0c;虽然中间因为种种原因并没有经常输出博文哈哈&#xff0c;但荔枝一直在坚持创作嘿嘿。记得去年的同一时间我也同样写了一篇总结文哈哈哈&#x…

Cenos7安装小火车程序动画

一&#xff1a;替换安装源 #先安装一下 epel源,因为安装包在epel源中。 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo [rootwww ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo --2023-09-01 18:5…

剑指 Offer 49. 丑数(C++实现)

剑指 Offer 49. 丑数https://leetcode.cn/problems/chou-shu-lcof/ 对每个丑数 分别乘2、乘3、乘5 即可得到后续丑数 其中只需要对计算出来的丑数结果进行去重即可 int nthUglyNumber(int n) {// base caseif (n < 1){return -1;}if (n 1){return 1;}vector<int> res…