DP读书:鲲鹏处理器 架构与编程(十二)鲲鹏软件实战案例
10min速通了解鲲鹏软件实战案例
- 云服务器源码移植与编译
- 配置云服务器
- Porting Advisor代码移植
- 搭建交叉编译环境
- x86云服务器交叉编译 OpenSSL
- 鲲鹏云服务器上编译 OpenSSL
- Docker的安装与应用
- 安装Docker
- Docker运行与验证
- Docker常用命令
- 卸载Docker
- 安装适配鲲鹏架构的Docker镜像
- KVM 的安装与应用
- 安装 KVM
- 安装虚拟机
- 配置虚拟机
- 克隆与修改虚拟机
- 启动与关闭虚拟机
- 常用命令
- QEMU的安装与应用
- Andriod模拟器的安装与使用
- 鲲鹏加速引擎的安装与测试
- 鲲鹏加速引擎
云服务器源码移植与编译
配置云服务器
配置云服务器需要执行以下步骤:
- 登陆云服务器,方法包括使用远程桌面连接工具和Web SSH连接工具。
- 选择合适的操作系统,推荐选择Linux操作系统。
- 进行网络设置。
- 安装宝塔Linux面板,以便方便地向云服务器传输文件。
- 安装code-server,实现在浏览器上访问vscode,编写代码。
Porting Advisor代码移植
Porting
Advisor是一个工具,旨在帮助开发人员将软件应用程序从一种平台或架构移植到另一种平台或架构。它提供了一种快速、简便的方式来评估移植的可行性并确定潜在的挑战和风险。
在使用Porting Advisor之前,您需要提供有关要移植的软件应用程序的信息,例如源代码、构建脚本、依赖项和配置文件等。然后,Porting Advisor会分析这些信息并提供有关潜在问题的报告。报告将包括与代码移植相关的各种问题,例如不兼容的API、缺少的库、编译器错误、性能问题等。根据问题的类型和严重程度,Porting Advisor还可以提供一些建议和解决方案,以帮助您解决这些问题。
搭建交叉编译环境
要搭建交叉编译环境,需要按照以下步骤进行操作:
- 下载适合的交叉编译工具链,例如arm-linux-gcc-3.4.1.tar.bz2。
- 将下载好的交叉编译工具链拷贝到
/usr/local/arm/
目录下。 - 解压交叉编译工具链,使用以下命令:
tar jxvf arm-linux-gcc-3.4.1.tar.bz2
。 - 配置环境变量,打开.bashrc文件,添加以下语句:
export PATH=$PATH:/usr/local/arm/3.4.1
。 - 重新加载.bashrc文件,使用命令:
source ~/.bashrC
。 - 验证交叉编译环境是否安装成功,使用命令:
arm-linux-gcc -v
,如果出现版本信息则说明安装成功。
完成以上步骤后,您就成功地搭建了交叉编译环境。
x86云服务器交叉编译 OpenSSL
要在x86云服务器上进行交叉编译OpenSSL,您需要遵循以下步骤:
- 安装交叉编译工具链。确保您的x86云服务器上已经安装了适用于目标架构(例如ARM)的交叉编译工具链。您可以从相应的供应商或开发者网站下载并安装适合您的需求的工具链。
- 下载OpenSSL源代码。访问OpenSSL官方网站或下载适当的版本,并将其解压缩到您的x86云服务器上的某个目录。
- 配置交叉编译选项。进入OpenSSL源代码目录,并编辑名为" Configure"的文件。根据您的需求进行必要的修改,例如设置正确的目标架构和编译器路径。
- 执行配置脚本。运行以下命令以配置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的步骤如下:
- 进入OpenSSL压缩包所在的目录,使用解压命令将其解压到当前目录:
tar zxvf openssl-1.1.0l.tar.gz
- 进入OpenSSL源代码所在目录:
cd openssl-1.1.0l
- 执行以下命令进行配置文件生成和结构体预编译:
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
- 执行以下命令进行代码编译:
make
- 执行以下命令进行测试,确保编译成功:
make test
- 执行以下命令进行安装:
sudo make install
- 根据所需的配置进行修改,如修改默认的证书存储目录。
- 使用以下命令进行测试,如果返回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 命令,以帮助你进行容器化应用程序的构建、部署和管理:
- 镜像相关命令:
docker images
:列出本地的镜像。docker pull <镜像名>
:从 Docker Hub 拉取指定的镜像。docker build -t <镜像名> <Dockerfile路径>
:根据 Dockerfile 构建自定义镜像。
- 容器相关命令:
docker run <镜像名>
:创建并运行一个新容器。docker ps
:列出当前正在运行的容器。docker stop <容器ID>
:停止指定的容器。docker start <容器ID>
:启动已经停止的容器。docker restart <容器ID>
:重启指定的容器。docker rm <容器ID>
:移除指定的容器。docker exec -it <容器ID> <命令>
:在运行中的容器中执行指定的命令。
- 存储卷相关命令:
docker volume create <卷名>
:创建一个新的存储卷。docker volume ls
:列出当前存在的存储卷。docker volume inspect <卷名>
:查看指定存储卷的详细信息。docker volume rm <卷名>
:删除指定的存储卷。
- 网络相关命令:
docker network create <网络名>
:创建一个新的 Docker 网络。docker network ls
:列出当前存在的 Docker 网络。docker network inspect <网络名>
:查看指定 Docker 网络的详细信息。docker network rm <网络名>
:删除指定的 Docker 网络。
- 日志和信息相关命令:
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镜像可以参考以下步骤:
- 拉取镜像:
docker pull --platform arm64 mysql
- 查看镜像:
docker images
- 确认平台为ARM64的镜像ID。
- 创建一个新的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的步骤如下:
- 确保已经安装了图形化界面(如X window)。
- 通过ping命令确认主机可以上网。
- 安装KVM相关软件包及其依赖项。在RHEL/CentOS系统上,可以运行以下命令:
yum -y install qemu-kvm python-virtinst virt-manager virt-top virt-viewer libvirt libvirt-client virt-install bridge-utils
- 检查CPU是否支持虚拟化。运行以下命令:
grep -E 'svm|vmx' /proc/cpuinfo
如果输出任何一行,则表示CPU支持虚拟化。
5. 安装KVM。运行以下命令:
modprobe -r kvm_intel ; modprobe kvm_intel
- 启动虚拟化和设置开机自启。运行以下命令:
systemctl start libvirtd
systemctl enable libvirtd
- 配置网络环境。创建一个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. 使用虚拟机。打开虚拟机软件,选中安装的虚拟机系统,点击启动即可。
可以参考以上步骤来安装和使用虚拟机。
配置虚拟机
配置虚拟机可以参考以下步骤:
- 打开虚拟机软件,选择已经创建的虚拟机,点击“编辑虚拟机设置”按钮。
- 在虚拟机设置窗口中,可以配置虚拟机的内存、硬盘、网络等参数。根据需要调整每个参数的值,确保配置符合要求。
- 配置虚拟机的内存。根据虚拟机的用途和性能,设置合适的内存大小。如果计算机的内存不足,可以调整虚拟机的内存容量。
- 配置虚拟机的硬盘。需要选择合适的硬盘容量和文件格式。可以根据需要创建新的硬盘分区或调整已有分区的容量。
- 配置虚拟机的网络。可以选择桥接模式或NAT模式等不同的网络连接方式。根据实际情况进行选择和配置。
- 安装虚拟机操作系统。在虚拟机设置完成后,可以安装虚拟机操作系统。根据需要选择合适的操作系统版本,按照提示进行安装即可。
- 配置虚拟机的光驱。如果需要从光驱启动虚拟机,需要配置虚拟机的光驱,并添加启动光盘的镜像文件。
- 配置完毕后,点击“确定”按钮保存设置。
以上是配置虚拟机的一般步骤,具体操作可以根据不同的虚拟机软件和操作系统有所差异。可以参考虚拟机软件的使用手册或相关教程进行操作。
克隆与修改虚拟机
KVM(Kernel-based Virtual Machine)是一个基于Linux内核的虚拟化解决方案,允许在Linux主机上创建和管理虚拟机。以下是一些常用的KVM命令:
-
创建虚拟机:
- 创建虚拟机配置文件:
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
- 创建虚拟机配置文件:
-
启动、停止和重启虚拟机:
- 启动虚拟机:
virsh start <虚拟机名称>
- 关闭虚拟机:
virsh shutdown <虚拟机名称>
- 强制关闭虚拟机:
virsh destroy <虚拟机名称>
- 重启虚拟机:
virsh reboot <虚拟机名称>
- 启动虚拟机:
-
查看虚拟机列表:
virsh list
-
查看虚拟机详情:
virsh dominfo <虚拟机名称>
-
进入虚拟机控制台:
virsh console <虚拟机名称>
-
排除虚拟机自动启动:
virsh autostart --disable <虚拟机名称>
-
删除虚拟机:
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的一般步骤:
-
安装QEMU:
- 对于Ubuntu或Debian系统,打开终端并执行以下命令:
sudo apt-get update sudo apt-get install qemu
- 对于Fedora系统,打开终端并执行以下命令:
sudo dnf install qemu
- 对于Ubuntu或Debian系统,打开终端并执行以下命令:
-
验证安装:
在终端中输入以下命令来验证QEMU是否正确安装:qemu-system-x86_64 --version
-
创建虚拟机磁盘镜像:
使用以下命令创建一个空白的虚拟机磁盘镜像(例如ext4格式):qemu-img create -f qcow2 <镜像文件名>.qcow2 <大小>
其中,“<镜像文件名>” 是你想要创建的镜像文件的名称,“<大小>” 是镜像文件的大小(例如10G)。
-
启动虚拟机:
使用以下命令来启动虚拟机并加载镜像:qemu-system-x86_64 -hda <镜像文件名>.qcow2
这将启动一个x86_64架构的虚拟机,并加载指定的镜像文件。
这只是QEMU的基本用法示例。QEMU还提供了许多其他功能和选项,例如网络设置、添加设备、启动ISO映像等等。你可以通过QEMU的官方文档或其他教程来了解更多详细的使用方法和命令。
需要注意的是,在使用QEMU时,可能需要一些硬件支持和配置。此外,为了更好地模拟其他体系结构的虚拟机,可能需要安装相应的固件和操作系统映像。
官方文档https://www.qemu.org/
Andriod模拟器的安装与使用
安装和使用 Android 模拟器可以让你在计算机上运行和测试 Android 应用程序。以下是一般步骤:
-
安装 Java Development Kit(JDK):
- 前往 Oracle 官网下载并安装适用于你的操作系统的 JDK。
-
下载和安装 Android Studio:
- 访问 Android 开发者官网(https://developer.android.com/studio)并下载 Android Studio。
- 执行安装程序,并按照指示完成安装过程。
-
启动 Android Studio:
- 打开已安装的 Android Studio。
- 完成首次启动的设置向导。
-
安装 Android 虚拟设备(Virtual Device):
- 在 Android Studio 的欢迎界面,点击 “Configure”(配置)并选择 “AVD Manager”(虚拟设备管理器)。
- 点击 “Create Virtual Device”(创建虚拟设备)。
- 选择所需的设备类型和版本,并点击 “Next”(下一步)。
- 下载和安装选择的 Android 系统镜像(若没有已安装的)。
- 配置虚拟设备的其他选项(如内存大小、屏幕分辨率等),然后点击 “Finish”(完成)。
-
启动 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/
相关文章:

DP读书:鲲鹏处理器 架构与编程(十二)鲲鹏软件实战案例
10min速通了解鲲鹏软件实战案例 云服务器源码移植与编译配置云服务器Porting Advisor代码移植搭建交叉编译环境x86云服务器交叉编译 OpenSSL鲲鹏云服务器上编译 OpenSSL Docker的安装与应用安装DockerDocker运行与验证Docker常用命令卸载Docker安装适配鲲鹏架构的Docker镜像 KV…...

前端 -- 基础 VSCode 工具生成骨架标签新增代码 解释详解
目录 文档类型声明标签 Lang 语言种类 字符集 文档类型声明标签 <!DOCTYPE> 文档类型声明,作用就是告诉浏览器 当前的页面是 使用哪种 HTML 版本 来显示的网页 HTML 版本也很多呀 ,比如 : HTML5 ,HTML4,XHTML 等…...

爬虫逆向实战(二十三)--某准网数据
一、数据接口分析 主页地址:某准网 1、抓包 通过抓包可以发现数据接口是api_to/search/company_v2.json 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现b参数和kiv参数是加密参数 请求头是否加密? 无响应是否加…...

ruoyi--数据权限
这篇文章我先和大家分析一下 RuoYi-Vue 脚手架中 DataScope 注解的实现原理,在 TienChin 项目视频中到时候还会有深入讲解。 1. 思路分析 首先我们先来捋一捋这里的权限实现的思路。 DataScope 注解处理的内容叫做数据权限,就是说你这个用户登录后能够…...
快速开发平台是什么?和传统开发平台相比有哪些区别?
本文可以从【快速开发平台的价值、和传统平台的区别、使用感受】三个方面来说明。 首先,我们要清楚快速开发平台是什么: 快速开发平台也称为低代码或无代码平台,旨在通过可视化工具、拖放式界面和预构建组件,使应用程序的开发过…...

Android基于JNI的Java与C++互调
java调用C++: #include <jni.h> //导出c函数格式 extern "C" JNIEXPORT //供JNI调用 JNICALL 函数名格式 Java_包名_类名_函数名(包名.替换为_) Java_com_example_getapplist_MainActivity_stringFromJNI 包名:com_example_getapplist 类名:MainActi…...

【算法与数据结构】513、LeetCode找树左下角的值
文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:这道题用层序遍历来做比较简单,最底层最左边节点就是层序遍历当中最底层元素容器的第一个值…...

React——组件缓存 react-activation
1、安装依赖 npm i -S react-activation 2、包裹根组件 import { AliveScope } from "react-activation"<AliveScope><App /> </AliveScope> 3、缓存组件 import { KeepAlive } from "react-activation"export default () > {co…...

EV代码签名证书是什么?
在数字世界中,很多软件和应用都需要进行代码签名,以确保其来源可靠和安全,EV代码签名证书恰好都能做到,那么EV代码签名证书是什么?它有什么功能特点呢?下面的内容可以给到答案。 EV代码签名证书是什么&…...

融媒行业落地客户旅程编排,详解数字化用户运营实战
移动互联网时代是流量红利的时代,企业常用低成本的方式进行获客,“增长黑客”的概念大范围传播。与此同时,机构媒体受到传播环境的影响,也开始启动全行业的媒体融合转型。在此背景下,2015 年神策数据成立,核…...

PDF制作成翻页电子书
在日常工作中,大部分人使用的都是PDF文档发送给客户,但是PDF文档通常是静态的,缺乏交互性和视觉吸引力。那你有没有想过把它转换成翻页的电子书呢? 小编将告诉你操作步骤,非常简单 1.搜索FLBOOK在线制作电子杂志平台 …...

多线程
1. 线程池 1.1 线程状态介绍 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。线程对象在不同的时期有不同的状态。那么Java中的线程存在哪几种状态呢?Java中的线程 状态被定义在了java.lang.Thread.Stat…...

BingChat与ChatGPT比较,哪个聊天机器人能让你获益更多?
人工智能领域的最新进展为普通人创造新的收入来源提供了更多机会。今年早些时候,微软对OpenAI进行了大量投资。此后,微软在Microsoft Edge浏览器中推出了自家的聊天机器人Bing Chat。 在论坛和社交媒体上,你可以发现这两个AI工具都吸引了很…...

Qt读写ini配置文件(QSettings)、XML
1、ini相关的 总结:Qt读写ini配置文件(QSettings) - 布丁Plus - 博客园 (cnblogs.com) Qt读写ini文件(含源码注释)_qt ini文件读写_lw向北.的博客-CSDN博客 2、XML相关的 Qt读写XML文件(含源码注释)_qt写xml_lw向北…...

JVM知识点(二)
1、G1垃圾收集器 -XX:MaxGCPauseMillis10,G1的参数,表示在任意1s时间内,停顿时间不能超过10ms;G1将堆切分成很多小堆区(Region),每一个Region可以是Eden、Survivor或Old区;这些区在…...

代码随想录算法训练营day44 | LeetCode 518. 零钱兑换 II 377. 组合总和 Ⅳ
今晚学习了完全背包的做法,和01背包的差别具体来说就是一个可以重复,一个不可以重复。体现在数组的遍历中来说就是完全背包不能用二维数组做法(因为二维dp数组一定不会重复,但是还没验证过),只能用一维dp数…...

Vue2向Vue3过度核心技术工程化开发和脚手架
目录 1 工程化开发和脚手架1.1 开发Vue的两种方式1.2.脚手架Vue CLI 2 项目目录介绍和运行流程2.1 项目目录介绍2.2 运行流程 3 组件化开发4 根组件 App.vue4.1 根组件介绍4.2 组件是由三部分构成4.3 总结 5 普通组件的注册使用-局部注册5.1 特点:5.2 步骤ÿ…...

Expected all tensors to be on the same device, but found at least two devices
Expected all tensors to be on the same device, but found at least two devices, 原因是计算的过程中,两个不同类型的变量在一起进行运算,即一个变量存储在gpu中,一个变量存储在cpu中,两个变量的存储位置冲突,导致无…...

Mysql备份命令Mysqldump导入、导出以及压缩成zip、gz格式
1、导出 命令:mysqldump -u用户名 -p数据库密码 数据库名 > 文件名 如果用户名需要密码,则需要在此命令执行后输入一次密码核对;如果数据库用户名不需要密码,则不要加“-p”参数,导入的时候相同。注意输入的用户名…...

App卡帧与BlockCanary
作者:图个喜庆 一,前言 app卡帧一直是性能优化的一个重要方面,虽然现在手机硬件性能越来越高,明显的卡帧现象越来越少,但是了解卡帧相关的知识还是非常有必要的。 本文分两部分从app卡帧的原理出发,讨论屏…...

bpmnjs Properties-panel拓展(ExtensionElements拓展篇)
接上文bpmnjs Properties-panel拓展(属性设置篇),继续记录下第三个拓展需求的实现。 需求简述 在ExclusiveGateway标签的extensionElements标签中增加子标签<activiti:executionListener>子标签,可增加复数子标签。子标签…...

虚拟机的使用
首先需要安装VMware软件,这是虚拟机,在里面可以实现在windows的笔记本上运行包括,windows11和linux系统的开发和研究。 VMware是一种虚拟化技术,可以让你在一台物理计算机上运行多个操作系统和应用程序,而不需要重启或…...

CSS Flex布局
前言 Flex布局(弹性盒子布局) 是一种用于在容器中进行灵活和自适应布局的CSS布局模型。通过使用Flex布局,可以更方便地实现各种不同尺寸和比例的布局,使元素在容器内自动调整空间分配。 Flex-组成 Flex布局由以下几个主要组成部分…...

Virtual
虚拟接口可以用作编写操作系统和驱动程序独立测试的一种方式。任何连接到同一通道(来自同一Python进程)的VirtualBus实例都将相互接收消息。 如果消息应跨进程或主机边界发送,请考虑使用多播IP接口,并参考虚拟接口对不同虚拟接口进行比较和一般性讨论。 Example import …...

6、监测数据采集物联网应用开发步骤(5.2)
监测数据采集物联网应用开发步骤(5.1) 包含4个类数据库连接(com.zxy.db_Self.ConnectionPool_Self.py)、数据库操作类(com.zxy.db_Self.Db_Common_Self.py)、数据库管理类(com.zxy.db_Self.DBManager_Self.py…...

解释 Git 的基本概念和使用方式
该文为AI自动生成,InsCode AI 创作助手 Git 是一种版本控制工具,用于跟踪代码或文件的更改历史记录。以下是 Git 的基本概念和使用方式: 仓库 (Repository):仓库是一个存储项目代码和历史记录的地方,可以在本地或远程…...

不同ubuntu系统下的不同ros系统可以互相通讯吗
可以的,不同版本的Ubuntu系统和ROS版本的机器仍然可以实现ROS节点之间的通信。 主要的原因有:1. ROS节点间通信是通过ROS master实现的。不同机器上的ROS节点都可以连接到同一个ROS master,从而实现通信。 2. ROS消息系统可以兼容不同的ROS版本。即使节点使用的ROS版本不同,也…...

数学建模-模型详解(2)
微分模型 当谈到微分模型时,通常指的是使用微分方程来描述某个系统的动态行为。微分方程是描述变量之间变化率的数学方程。微分模型可以用于解决各种实际问题,例如物理学、工程学、生物学等领域。 微分模型可以分为两类:常微分方程和偏微分…...

IT运维:使用数据分析平台监控DELL服务器
概述 在企业日常运维中,我们有着大量的服务器设备,设备故障一般可以通过常用的监控软件实现自动告警,但如果在管理运维中我们要做的不仅仅是发现故障,处理硬件故障,我们还需要进一步的了解,今年一共出现了多…...

Spring Cloud Alibaba-Sentinel规则
1 流控规则 流量控制,其原理是监控应用流量的QPS(每秒查询率) 或并发线程数等指标,当达到指定的阈值时 对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。 第1步: 点击簇点链路,我们就可以看到访…...