【Jetson Xavier NX 开发板深度学习环境和ROS配置流程】

news2024/10/6 10:36:08

【Jetson Xavier NX 开发板深度学习环境和ROS配置流程】

  • 1.基本介绍
  • 2. 预先准备
  • 3. NX系统基本环境搭建
    • 3.1 安装 NVIDIA SDK管理器
    • 3.2 准备硬件
    • 3.3 NX刷机
      • 3.3.1 配置开发环境
      • 3.3.2 查看组件并接受许可
      • 3.3.3 开始安装
    • 3.4 设置SSD启动
      • 3.4.1 设置您已安装的SSD
      • 3.4.2 将根源从eMMC复制到SSD
      • 3.4.3 启用从SSD启动
    • 3.5 Jetson SDK Components
    • 3.6 NX相关组件安装
      • 3.6.1 版本检查命令行
      • 3.6.2 换源
      • 3.6.3 python3及pip3安装
      • 3.6.4 远程桌面控制软件NoMachine
      • 3.6.5 安装Jetson-stats管理工具
  • 4. 深度学习环境配置
    • 4.1 强化学习环境配置
      • 4.1.1 Miniconda安装

1.基本介绍

NX开发板全名Jetson Xavier NX(后简称为NX),是NVIDIA英伟达提供的模组和开发者套件,保持Jetson Nano小巧尺寸的同时拥有相当于Jetson TX2的10倍以上的高性能。
在这里插入图片描述

其预制基于ARM架构下的Ubuntu系统,提供GPU环境,大大提升了强化学习算法的训练速度。


在这里插入图片描述

为实现强化学习算法在NX上成功运行,需要配置相应的环境。其主要难点在于ARM架构下强化学习相关平台的调用,例如Pytorch和Tensorflow的安装。由于官方基本不提供ARM架构下的软件支持,NVIDIA推出了一系列安装包以使得强化学习平台适配NX。
NX开发板深度学习环境和普通Ubuntu电脑配置有所区别

NX开发板先配置cuda/cudnn基准环境(固定),后配置conda
普通Ubuntu电脑先配置conda基准环境,后建环境可配置多种cuda/cudnn

2. 预先准备


我购买是这一套包含主板和其他附属外设

京东地址:https://item.m.jd.com/product/10020215075135.html?utm_campaign=t_1001328990

●国产NX 8+16

●128G M.2 接口的固态硬盘

●支持DP或HDMI接口的外接显示器

●USB键鼠(NX需要外接显示器及键鼠实现输出、输入)

3. NX系统基本环境搭建

3.1 安装 NVIDIA SDK管理器

接下需要你在安装有ubuntu 系统的电脑内配置 sdkmanager 工具,可直接安装 u 盘资料里面提供的 sdkmanager 安装文件,或者在 ubuntu 系统访问官方网址下载对应版本https://developer.nvidia.com/nvidia-sdk-manager,注册NVIDIA 开发者账号后就可以下载,使用网易、新浪、Yeah 邮箱等注册,详情可看指导视频。

3.2 准备硬件

DC 电源端口接入 19V 电源, Micro-usb 端口接入配套的 Micro USB 线连到上一步骤配置好ubuntu 系统的电脑上,载板引脚 FC REC 与 GND 用跳线短接进入恢复模式即进入了刷机状态。(从右往左短接第二个和第三个引脚)
在这里插入图片描述

3.3 NX刷机

在 ubuntu 系统上打开一个终端,输入sdkmanager登录 NVIDIA 账号,选择登录方式为 Developer 账户(跳转到 NVIDIA 网页登录确认)。

3.3.1 配置开发环境

在 Step 01 Development Environment 窗口中,选择以下内容:

  1. 从 Product Category 面板中,选择 Jetson。
  2. 在 Hardware Configuration
    中,选择主机和目标硬件(不用勾选 Host Machine)。

(如果连接了 Jetson 设备,虚拟机会弹出一个连接 USB 设备的窗口 ,选择连接到虚拟机。

SDK Manager

将在“目标硬件”下拉列表中自动选择它(Jetson Xavier NX)。如果未自动检测到设备,单击刷新,确保Detected。若仍不行可以尝试换根数据线,一定要确保自动检测到硬件设备才可进行下一步;)


在 Target Operating System 中,选择操作系统和 JetPack 版本,我的设备是 Jetson Xavier NX ,选择的是 Jetpack4.5.1 版本,大家根据情况自行选择;
在这里插入图片描述
单击继续以进行下一步。

3.3.2 查看组件并接受许可

在 Step 02 Details and License 窗口中,您可以展开主机组件和目标组件面板以查看将安装在系统上的组件,这里因为核心模组 eMMC 只有 16G,我们只选择 Jetson OS 主机组件。
在这里插入图片描述
如果希望安装文件下载到默认路径以外的位置,可以手动选择 change 安装路径;
选择我接受,以接受许可协议的条款和条件;选择继续下一步。

3.3.3 开始安装

在安装开始之前,SDK Manager 会提示输入 ubuntu 主机密码。
在这里插入图片描述
如果需要查看IP,登录路由器查看即可
在这里插入图片描述

然后会显示软件下载和安装的进度,这时可以把短接的跳线拔了
在这里插入图片描述
下载完成
在这里插入图片描述
刷机完成后,断开电源,接上显示屏连接线,再通电启动就能进入 ubuntu 系统设置界面。
官网 SDK Manager 教程 https://docs.nvidia.com/sdk-manager/install-with-sdkm-jetson/index.html

3.4 设置SSD启动

产品配套的资料 U 盘里面有挂载 SSD 配套的视频教程,也可以参考视频教程配置,改成以 SSD

3.4.1 设置您已安装的SSD

运行系统可以加快读取速度,让使用上更顺畅。
安装您的 并启动,然后打开菜单并进行搜索 Disks
在这里插入图片描述
启动磁盘应用程序,您将看到安装好的 128G 固态硬盘,单击右上角三条横项选项,选择格式化(Format Disk),选择预设的 GPT,再次确认要格式化(Format),接着输入系统密码,授权进行格式化。
在这里插入图片描述
单击+号进行分区,选择主分区的大小,本文建议主分区容量为 112GB,大家可以根据自身需求做调整,单击 NEXT进行下一步。
在这里插入图片描述
给分区起个名称,类型要选择 Ext4,然后单击 Create,提示输入系统密码,设置完成。
在这里插入图片描述
现在,您已成功创建分区,但它还没有挂载。让我们使用命令安装它,幸运的是,Jetson 系统已经将这些命令集成到外壳脚本中。让我们运行它,使系统启动从 SSD 启动。

3.4.2 将根源从eMMC复制到SSD

先更新一下系统软件,方便进入github
在这里插入图片描述

首先,复制该项目,打开一个终端,输入

git clone https://github.com/jetsonhacks/rootOnNVMe.git

进入目录

cd rootOnNVMe

根源文件复制到您的 SSD

./copy-rootfs-ssd.sh

3.4.3 启用从SSD启动

运行./setup-service.sh 后重新启动系统以使服务生效。
重启系统后桌面左侧列表出现如下红色 SD 文件夹表示 SSD 挂载成功。
在这里插入图片描述
这样所有16G的系统盘就迁移到了SSD固态硬盘中,后期开发再也不会遇到存储空间不够的情况。如果NX不能正常启动,就把SSD固态硬盘拆下来格式化在装上去就会退回到NX刷机的系统。

3.5 Jetson SDK Components

接下来开始第二次刷机,就会在SSD固态硬盘中安装这些组件,如cuda、cudnn
版本:

Jetpack 4.5.1 》cuda 10.2》cudnn 8.0

在这里插入图片描述

这次刷机完成之后就可以打开终端重启sudo reboot,接下来会检查安装的效果。

3.6 NX相关组件安装

3.6.1 版本检查命令行

驱动版本:head -n 1 /etc/nv_tegra_release

内核版本:uname -r

操作系统:lsb_release -i -r

CUDA版本:nvcc -V

cuDNN版本:dpkg -l libcudnn8

opencv版本:dpkg -l libopencv

Tensorrt版本:dpkg -l tensorrt

若无法查询到CUDA和cuDNN版本,解决方法如下:

利用gedit打开 ~ 路径下.bashrc文件,终端输入:

sudo vim ~./bashrc

在文件的最后添加以下内容(按i进入编辑模式,按esc退出编辑模式,按:wq保存文件后回车即可退出(注意有冒号)):

export PATH=/usr/local/cuda-10.2/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda-10.2

重新执行.bashrc文件,直接生效;

source ~./bashrc

此时即可利用前述命令查看CUDA和CUDNN版本。

3.6.2 换源

一般国内使用Ubuntu系统无法定位软件包就是网络问题,这种情况就采用换源的方法解决。因此添加国内清华源,首先需要备份原本的source.list文件,防止误操作后无法恢复,后期可恢复。

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak    #备份原文件
sudo gedit /etc/apt/sources.list

然后删除所有内容,复制下列内容到到sources.list后保存

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe

之后打开终端输入:

sudo apt-get update

换源成功!注意处理器是aarch64架构的Ubuntu 18.04.2 LTS系统类型的,要使用与之匹配的源。

3.6.3 python3及pip3安装

NX开发套件中预装的python版本为2.7,但由于现在强化学习用到的更多的版本为python3,在此介绍直接安装python3的方法,下一节将介绍如何在NX中利用anaconda配置python3及强化学习环境。

直接在终端输入:

sudo apt-get install python3-pip python3-dev

之后将pip升级为最新版:

python3 -m pip install --upgrade pip  #升级pip

3.6.4 远程桌面控制软件NoMachine

软件下载地址:https://www.nomachine.com/

注意NX开发板要选择对应的NoMachine for ARM版

下载后安装即可使用。

Ubuntu系统下安装deb文件命令:

sudo dpkg -i nomachine_6.10.12_1_arm64.deb 

如果需要安装qq,官网地址:https://im.qq.com/linuxqq/index.shtml
在这里插入图片描述

安装方法一直

sudo dpkg -i 《qq文件名》

3.6.5 安装Jetson-stats管理工具

利用该软件可以查看cpu 电源,gpu的使用 频率和调度等情况。

在pip配置好的情况下,直接在终端pip3安装:

pip3 install jetson-stats

安装好后输入:

jtop

即可查看NX开发套件的各项资源使用情况,用鼠标查看和控制NX的相关外设,按 q 结束退出。

在这里插入图片描述
6.功耗模式选择,风扇输出速度控制
在这里插入图片描述
7.NX系统环境信息

4. 深度学习环境配置

4.1 强化学习环境配置

运行强化学习需要的基本环境有:python3、tensorflow、pytorch及其他依赖等。通常利用anaconda对不同项目进行管理,conda可以为不同的项目创建不同的虚拟环境,不同的虚拟环境中python版本和依赖均可不同。便于项目的管理、运行和迁移。NX通常以强化学习算法的运行平台而不是算法的训练平台出现,因此不需要利用conda对环境进行管理。且由于conda中的许多命令不支持arm架构下的算法环境,通常不采用此方法。接下来的环境配置将基于前文中已做换源处理的系统python3展开,直接在终端进行配置即可。同时,对conda的安装和使用也做简要介绍,配置者可根据需要灵活运用。

4.1.1 Miniconda安装

下载链接:

https://docs.conda.io/en/latest/miniconda.html

创建文件夹:mkdir miniconda

下载安装包至文件夹中并转到文件夹:cd miniconda

安装:

bash Miniconda3-latest-Linux-x86_64.sh
安装过程中会弹出软件协议条款,直接按下Ctrl+C便可以跳过阅读过程,直接按照提示,输入yes,然后按回车键,同意软件协议条款。接下来继续按回车,将miniconda安装到电脑上。安装好之后,出现提示:

图片
这一步务必输入yes,保证安装之后的正常使用。重启终端之后,就可以正常使用miniconda了。

重启终端,然后分别执行如下命令,更换conda和pip的软件源,提高软件的下载安装速度:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
再次重启终端之后,你会发现每次打开终端默认都会自动进入到miniconda的base环境中,终端中多了“base”字样。将拖慢终端打开速度,并且有可能干扰到其它软件的安装。每次打开终端之后先执行conda deactivate命令退出则非常麻烦。执行如下命令,便可以解决终端每次打开都进入conda的base环境的问题:

conda config --set auto_activate_base false
创建conda环境:

conda create -n RL python=3.7
其中RL为创建的虚拟环境名称,可自定义。

查看conda环境:

conda env list
激活conda环境:

conda activate RL
关闭conda环境:

conda deactivate RL
删除conda环境:

conda env remove --name RL
值得注意的是,conda环境在现有的源中已无法直接在ARM结构下创建python3.6的虚拟环境,因此前文所写为3.7。若采用conda环境配置后续环境,需要注意python版本与Pytorch、Tensorflow等的版本对应关系!接下来的安装与配置均建立在系统环境基础上,不建立在conda环境基础上。

2) Pytorch安装

官方下载链接:https://forums.developer.nvidia.com/t/pytorch-for-jetson-version-1-11-now-available/72048

安装依赖:

sudo pip3 install -U pip testresources setuptools
sudo apt-get install libopenblas-base libopenmpi-dev
sudo pip3 install mpi4py
sudo pip3 install Cython
下载Pytorch-1.6.0的.whl文件:https://forums.developer.nvidia.com/t/pytorch-for-jetson-version-1-6-0-now-available/72048

下载完成拷贝到NX后,进行安装,注意文件存放位置和执行命令的位置相一致,输入命令:

pip3 install torch-1.6.0-cp36-cp36m-linux_aarch64.whl
安装完成后测试:

python

import torch
print(torch.cuda.is_available()) #测试cuda是否能用
True #返回Ture说明cuda能用
安装torchvision:

sudo apt-get install libjpeg-dev zlib1g-dev
git clone --branch v0.7.0 https://github.com/pytorch/vision torchvision
如果git下载失败,可以使用码云将https://github.com/pytorch/vision导入,然后如图选择,选择完成后进行下载。

图片
cd进入到目录中,git命令下载时修改了文件名称,为torchvision(码云默认下载为vision,无修改)cd路径自行判断。

cd vision
sudo python3 setup.py install
安装到最后需要pillow包,最后可能会下载失败。但是torchvision已经安装成功了,输入命令pip3 list可以看到。

pip3 install ‘pillow<7’
安装pillow包即可。

验证程序:

import torch
print(torch.version)
print('CUDA available: ’ + str(torch.cuda.is_available()))
print('cuDNN version: ’ + str(torch.backends.cudnn.version()))
a = torch.cuda.FloatTensor(2).zero_()
print('Tensor a = ’ + str(a))
b = torch.randn(2).cuda()
print('Tensor b = ’ + str(b))
c = a + b
print('Tensor c = ’ + str©)

3) Tensorflow安装

官方教程:https://forums.developer.nvidia.com/t/official-tensorflow-for-jetson-agx-xaviernx/141306

查看jetpack版本:

sudo apt-cache show nvidia-jetpack
安装依赖:

sudo apt-get update
sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran
sudo apt-get install python3-pip
sudo pip3 install -U pip testresources setuptools
sudo pip3 install -U numpy1.16.1 future0.17.1 mock3.0.5 h5py2.9.0 keras_preprocessing1.0.5 keras_applications1.0.8 gast==0.2.2 futures protobuf pybind11
安装tensorflow:

Tensorflow与nv和jetpack版本对应表如下:

https://docs.nvidia.com/deeplearning/frameworks/install-tf-jetson-platform-release-notes/tf-jetson-rel.html#tf-jetson-rel

tensorflow-gpu已更名为tensorflow,因此根据官方教程安装:

sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v44 ‘tensorflow<2’

4) Pycharm安装

由于采用ARM架构,NX中的Pycharm安装首先需要配置java环境,终端输入:

sudo apt-cache search openjdk
sudo apt-get install openjdk-8-jdk
安装结束后可输入 java -version 确认是否安装成功

输入which javac
输入file /usr/bin/javac
输入file /etc/alternatives/javac
输入file /usr/lib/jvm/java-8-openjdk-arm64/bin/javac
输入sudo gedit ~/.bashrc
在文件的最下方输入:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64
export JRE_HOME= J A V A H O M E / j r e e x p o r t C L A S S P A T H = : {JAVA_HOME}/jre export CLASSPATH=: JAVAHOME/jreexportCLASSPATH=:{JAVA_HOME}/lib: J R E H O M E / l i b e x p o r t P A T H = {JRE_HOME}/lib export PATH= JREHOME/libexportPATH={JAVA_HOME}/bin:$PATH
保存后,关闭gedit

输入

source ~/.bashrc
Java环境配置完成!

Pycharm安装包官方下载链接:https://www.jetbrains.com/pycharm/download/#section=linux

网盘链接:

链接:https://pan.baidu.com/s/1tQfSeoO8WmpgHKX6q_51fA

提取码:4umy
在下载位置输入解压命令

tar -zxvf pycharm-community-2020.1.1.tar.gz
解压完成后输入

sudo mv pycharm-community-2020.1.1/ /opt
将安装文件移动到opt下。

输入

/opt/pycharm-community-2020.1.1/bin/pycharm.sh
启动Pycharm

安装过程中的数据分享选择Don’t Send,设置选择Skip Remaining and Set Defaults,安装成功!

打开Pycharm后将其锁定在左侧菜单栏中,以便下次打开。

若未锁定则通过/opt/pycharm-community-2020.1.1/bin/pycharm.sh打开

Pycharm安装完成后若遇到不报错但无法运行强化学习代码的情况,例如Illegal instruction(core dumped)问题,解决方法如下:

终端输入

sudo vi ~/.bashrc
在最后添加:

export OPENBLAS_CORETYPE=ARMV8
然后再输入

source ~/.bashrc
即可成功运行!

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

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

相关文章

do-while(0)语句到底有什么用?

前言 在一个群里面看到一个人问&#xff0c;do-while(0)语句有什么用&#xff1f;do-while(0)这个程序最终结果不应该就是程序只跑一次&#xff0c;那么写和不写有什么区别呢&#xff1f; do-while(0)在复杂宏定义上的优点 为什么需要复杂宏 &#xff08;1&#xff09;在讲解d…

tinyxml2.cpp:(.text+0x71e8): undefined reference to `stdout

-target aarch64-linux-android21 > -target aarch64-linux-android24 问题解决 修改QT配置&#xff0c;默认为21改为24 &#xff0c;因为stdout stdin stderr 在android23之后才实现 编译成功&#xff0c;问题解决

C语言——详解函数栈帧的创建和销毁

函数栈帧 前言&#xff1a;一、认识相关寄存器和汇编指令1.寄存器&#xff08;寄存器是集成在cpu上的&#xff09;2.汇编指令 二、函数栈帧创建和销毁的过程1.main函数的调用2.函数栈帧的创建3.函数栈帧的销毁 前言&#xff1a; 为了深入学习C语言&#xff0c;也为了方便理解&…

仅在python虚拟环境中安装CUDA、CUDNN、PaddlePaddle-gpu

0、前言 在配置深度学习环境时&#xff0c;若想使用GPU加速&#xff0c;就需要安装CUDA、CUDNN&#xff0c;然而在系统中安装的话&#xff0c;若不同框架需要的版本不同&#xff0c;就会比较麻烦。因此&#xff0c;一种比较方便的做法是&#xff1a;利用conda管理不同的python…

arcgis实现DEM镶嵌和去白点

目录 镶嵌去白点 镶嵌 arcgis中直接选择镶嵌就行&#xff0c;然后选择其中一幅进行输出就好 去白点 镶嵌好之后&#xff0c;就会出现白色的&#xff0c;好像没有数据&#xff0c;为nodata 解决办法&#xff1a;可以使用arcgis中的焦点统计&#xff0c;计算邻域进行插值&…

terser用于ES6的压缩JS工具

https://www.npmjs.com/package/terser uglify-es不再维护&#xff0c;uglify-js也不支持ES6。 terser是uglify-es的一个分支&#xff0c;主要保留了与uglify和uglify-js3. npm install terser -gterser [input files] [options] terser-webpack-plugin 使用terser-webpack-pl…

生成式 AI 将如何颠覆数据分析?

生成式 AI 对数据分析的颠覆式变革 想象这样一个场景&#xff0c;您能够像与人交谈一样和计算机进行交流。在这个场景中&#xff0c;您不需要学习复杂的技术&#xff0c;通过自然语言就能够整理数据、分析复杂的数据集、并生成报告。几年前&#xff0c;这可能还是科幻小说中的画…

手把手教你实现SpringBoot的监控!

任何一个服务如果没有监控&#xff0c;那就是两眼一抹黑&#xff0c;无法知道当前服务的运行情况&#xff0c;也就无法对可能出现的异常状况进行很好的处理&#xff0c;所以对任意一个服务来说&#xff0c;监控都是必不可少的。 就目前而言&#xff0c;大部分微服务应用都是基…

【C#】并行编程实战:实现数据并行(1)

本教程对应学习工程&#xff1a;魔术师Dix / HandsOnParallelProgramming GitCode 到目前为止&#xff0c;我们已经掌握了并行编程、任务和任务并行的基础知识。本章将讨论并行编程的另一个重要方面&#xff0c;即数据并行。 任务并行可以为每个参与线程创建一个单独的…

SpringSecurity认证流程(超级详细)

1 .前言 最近开发项目的时候遇到了和SpringSecurity相关的一些问题&#xff0c;但是之前并没有去了解过SpringSecurity&#xff0c;导致改系统安全权限验证的时候就比较吃力了&#xff0c;目前项目开发大多都直接用脚手架直接开发&#xff0c;系统安全权限验证已经形成了&…

漏洞复现|和信创天云桌面系统存在任意文件上传目录遍历漏洞

一、 阅读须知 一切从降低已有潜在威胁出发&#xff0c;所有发布的技术文章仅供参考&#xff0c;未经授权请勿利用文章中的技术内容对任何计算机系统进行入侵操作&#xff0c;否则对他人或单位而造成的直接或间接后果和损失&#xff0c;均由使用者本人负责。 郑重声明&#x…

2019年全国硕士研究生入学统一考试管理类专业学位联考数学试题——纯题目版

2019 年 1 月份管综初数真题 一、问题求解&#xff08;本大题共 5 小题&#xff0c;每小题 3 分&#xff0c;共 45 分&#xff09;下列每题给出 5 个选项中&#xff0c;只有一个是符合要求的&#xff0c;请在答题卡上将所选择的字母涂黑。 1、某车间计划 10 天完成一项任务&a…

网络变压器/网络滤波器 国产化替代一般需要签订哪一些相关文件

Hqst华强盛导读&#xff1a;网络变压器/网络滤波器 国产化替代一般需要签订哪一些相关文件 在国内推广和应用国产替代网络变压器/滤波器时&#xff0c;需要签定一系列的文件&#xff0c;以确保网络变压器/滤波器的质量和安全&#xff0c;同时遵守国家相关的法律法规和政策规定…

JS实现选择图片剪裁及保存

JS实现选择图片剪裁及保存 以下是一个简单的示例代码&#xff0c;实现了显示一个文件上传框和一个canvas元素。用户可以选择一张图片文件后&#xff0c;该图像将显示在canvas中&#xff0c;并且用户可以通过鼠标拖拽来选取需要剪裁的区域。单击“剪裁”按钮&#xff0c;程序会…

8.11 TCP链接管理与UDP协议

目录 TCP的链接管理 TCP包头 连接的建立——”三次握手” 连接的释放——“四次挥手” 保活计时器 UDP协议 计算机网络体系结构 UDP协议 UDP的主要特点 UDP是面向报文的 TCP的链接管理 TCP包头 连接的建立——”三次握手” TCP 建立连接的过程叫做握手。 采用三报文…

java进阶—重要概念反射

反射概念 反射: 它是java中的一个很重要的概念,是框架设计的灵魂 框架呢&#xff1f;就是一个半成品软件&#xff0c;我们在这半成品上进行开发&#xff0c;比如我们经常提到spring springmvc springboot spingcloud 等等 也许有的小伙伴会说&#xff0c;框架别人都写好了&a…

Tdengine 时序数据库-安装与客户端连接

使用 TDengine 时序数据库的版本是 2.4.0.0 使用的安装RPM的安装方便安装 TDengine-server-2.4.0.0-Linux-x64.rpm 1. 安装指令: rpm -ivh TDengine-server-2.4.0.0-Linux-x64.rpm [rootnode3 server]# rpm -ivh TDengine-server-2.4.0.0-Linux-x64.rpm Verifying... …

python的格式化输出

print中的占位符(%-fomatting) print中的%d,%s等&#xff0c;只是一个占位符&#xff0c;等正确内容到了再查进去。 注意&#xff1a;变量值和打印内容之间不能有逗号隔开。 使用fomat方法 format底层可以理解成一个字典&#xff0c;默认key是按顺序从0开始&#xff0c;指定key…

nginxWebUI runCmd RCE漏洞复现

0x01 产品简介 nginxWebUI是一款图形化管理nginx配置的工具&#xff0c;能通过网页快速配置nginx的各种功能&#xff0c;包括HTTP和TCP协议转发、反向代理、负载均衡、静态HTML服务器以及SSL证书的自动申请、续签和配置&#xff0c;配置完成后可以一键生成nginx.conf文件&#…

网络变压器卷盘(封装载带)封膜压力标准

Hqst华强盛导读&#xff1a;网络变压器封装载带封膜压力标准通常是根据具体产品的封装材料和尺寸来确定的。 网络变压器封装载带封膜压力标准通常是根据具体产品的封装材料和尺寸来确定的。一般来说&#xff0c;封装载带的封膜压力应该足够大&#xff0c;以确保封装过程中封膜…