【基于Ubuntu20.04的Autoware.universe安装过程】方案二:双系统 | 详细记录 | 全过程图文 by.Akaxi

news2025/4/19 18:20:25

目录

一、Autoware.universe背景

Part-1:安装双系统教程

二、查看Windows引导方式

三、制作安装盘

四、设置电脑配置

1.关闭bitlocker

2.压缩硬盘分区

3.关闭Secure Boot

4.关闭intel RST

5.BIOS设置U盘引导

五、安装Ubuntu20.04

1.ventoy引导

2.安装配置

3.安装类型

4.完成安装

Part-2:在Ubuntu20.04上安装Autoware.universe

六、安装ROS2 Galactic

七、安装ros2_dev_tools

八、安装rmw_implementation

1.下载Qv2ray

2.安装Git

3.克隆Autoware到本地

4.自动安装相关依赖

5.安装rmw_implementation

九、安装pacmod

十、安装autoware_core

十一、安装autoware universe dependencies

1.指令安装(慢且不推荐)

2.官网下载安装(快且推荐)

十二、安装pre_commit

十三、安装CUDA

1.指令安装CUDA

2.问题解决

十四、安装cuDNN and TensorRT

十五、下载Universe代码

十六、安装 Autoware ROS依赖包

1.失败案例

2.成功案例

问题1

问题2

十七、编译空间

1.colcon编译的时老是卡死

2.trtexec_vendor包错误


一、Autoware.universe背景

Autoware是一个基于ROS(机器人操作系统)开发的,开源的自动驾驶软件栈。它可以用于为各种各样的车辆,如汽车和卡车等,开发和部署先进辅助驾驶系统(ADAS)

Autoware版本:

Ai:基于ROS1

Auto:基于ROS2

Universe:商用/二次开发

官方文档:https://autowarefoundation.github.io/autoware.universe/main/

Part-1:安装双系统教程

参考视频链接:

https://www.bilibili.com/video/BV1Cc41127B9/?p=2&spm_id_from=pageDriver&vd_source=ce97c013e2f83de15ffb12fba99c812d

最终效果:

可参考我这篇博客:【Windows11通过移动硬盘安装Ubuntu20.04双系统】保姆级教程 | ventoy | BIOS | Ubuntu20.04 | 全过程图文by.Akaxi_ventoy ubuntu-CSDN博客

二、查看Windows引导方式

首先需要查看电脑的BIOS模式,在搜索栏输入“系统信息”

BIOS是计算机系统中的基本固件程序,负责初始化硬件设备、引导操作系统以及提供一些基本的配置选项。

在系统信息可以看到BIOS模式是“UEFI”,那么可以进行进行接下来的步骤,如果显示是“传统”,则需要另行操作,具体参考视频:Windows 和 Ubuntu 双系统的安装和卸载_哔哩哔哩_bilibili

然后将移动硬盘插入笔记本电脑

同样搜索“磁盘管理”

可以看到插入的移动硬盘大小931.48个G

然后右键点击移动硬盘,点击属性

点击“卷”,看看自己的移动硬盘的磁盘分区格式是不是GPT,如果是MBR需要转换成GPT。

三、制作安装盘

SourceURL:file:///home/akaxi-autoware/桌面/【Dora项目】记录-1.30.docx

我们需要一个U盘作为安装盘,在安装盘内提前下载Ubuntu20.04的镜像文件,这样电脑在启动后BIOS会利用U盘作为引导,进行Ubuntu的安装。

首先下载Ubuntu20.04,在华为云网站下载镜像文件

http://repo.huaweicloud.com/ubuntu-releases/

选择这个Ubuntu20.04版本

选择此桌面版,点击下载到Windows系统下

然后需要下载制作启动盘U盘的软件:ventoy

在Gitee上找到此软件,点击下载到Windows系统下

【ventoy】Ventoy 发行版 - Gitee.com

选择ventoy-1.0.96-windows.zip压缩包下载

解压后,点击ventoy

这里需要将U盘插入笔记本电脑

点击打开

需要选择制作的盘,这里选择U盘,然后安装包内的Ventoy版本如果是MBR,需要修改成GPT

点击左上角“配置选项”-“分区类型”-“GPT”

随后点击安装

Kuku安装~

成功!可以看到U盘名字变成了“Ventoy”完成启动盘制作~

然后将之前下载的Ubuntu20.04镜像文件拷贝到U盘中,至此安装盘制作完成!!!

四、设置电脑配置

1.关闭bitlocker

搜索“设备加密”

点击关闭设备加密

这里解密时间取决于之前硬盘加密大小

这里需要大概30mim,嘎嘎开始解密,不解密的话,如果你多次安装失败,会触发蓝屏琐数据,到时候会很麻烦,这里直接关掉,不会对电脑造成任何影响,反而方便我们之后的操作。

显示关闭就完成啦

2.压缩硬盘分区

将移动硬盘插入笔记本电脑

搜索磁盘管理

右击硬盘大小,点击压缩卷

这里输入200 X 1024 = 204800 M【200个G大小】

这样就压缩好啦~

3.关闭Secure Boot

插入U盘和移动硬盘,两个都插上喔,接下来的设置的安装都别拔下来啦,省心。

重启电脑,疯狂按F2键或者Fn+F2键进入笔记本的BIOS设置界面【进入方式取决于电脑型号】

然后关闭Secure Boot

4.关闭intel RST

然后在Configuration找到SATA Controller Mode,改为AHCI

5.BIOS设置U盘引导

在Boot里找到EFI启动项,把USB的U盘作为BIOS的第一引导,就需要将其设置到第一位置,于是这里选择U盘按F6,Move item up list。

可以看到现在U盘作为BIOS的第一引导了,完成啦~~~然后保存退出,电脑即将重启,马上进入Ubuntu20.04的安装!!!!

按F10保存且退出,Yes确认!!!

五、安装Ubuntu20.04

1.ventoy引导

电脑重启后,进入U盘引导,可以看到是我们之前将U盘设置的ventoy,里面装有Ubuntu20.04的iso镜像文件,回车继续

回车选择此iso镜像

选择Boot in normal mode,回车

然后系统就检查镜像完整性,即将进入安装啦~

2.安装配置

选择系统语言为中文(简体)

点击安装Ubuntu

选择键盘布局为Chinese选择Chinese,点击继续~

选择无线网络:现在咱先不连接无线网络,继续

更新和其他软件,选择“正常安装”然后选择“为图形或无线硬件,以及其他媒体格式安装第三方软件”,点击继续

安装类型我们一定要选择“其他选项”,这样才能给移动硬盘安装上Ubuntu20.04哦~

3.安装类型

找到我们之前在Windows下给移动硬盘压缩的分区,这里根据“设备”是空闲,“大小”是之前设置的200G大小左右,找到它,点击~

可以看到设备是“空闲”,大小“214749MB”差不多是200G,就它啦!!!然后将它挂在到根目录上~

点击它,创建分区,分区类型是“主分区”,分区位置是“空间起始位置”,挂载点是“/”【/是根目录】,点击完成~

然后再找到设备类型是“efi”,已安装文件是“Windows Boot Manager”的分区,选择它为Windows Boot Manager就可以啦~

将改动写入磁盘,继续

4.完成安装

选择时间为shanghai

点击继续

然后设置用户名字,我就叫“akaxi-autoware”,计算机的名字叫“akaxi-PC”,密码一定要记住啦,之后终端运行程序经常会输入密码哟~

嘎嘎安装~大概15min

安装完成,重启电脑噜!!!

笔记本重启啦,成功进入Ubuntu系统啦,这里拔掉U盘,然后回车进入系统

输入密码后进入Ubuntu系统成功啦~~~通过移动硬盘安装Ubuntu20.04成功~撒花!!!

Part-2:在Ubuntu20.04上安装Autoware.universe

六、安装ROS2 Galactic

鱼香ros一键安装,输入指令一键安装

http://wget http://fishros.com/install -O fishros && . fishros

输入1,一键安装ROS2

依次输入1-2更换源并清理第三方源

依次输入3-1选择安装galactic(ROS2)桌面版,因为Autoware.Universe是基于ROS2的galactic所以需要下载喔~

一顿嘎嘎安装,耐心等待精度条走到100%喔~(大概5min)

七、安装ros2_dev_tools

输入指令嘎嘎安装

sudo apt update && sudo apt install -y \
  build-essential \
  cmake \
  git \
  python3-colcon-common-extensions \
  python3-flake8 \
  python3-pip \
  python3-pytest-cov \
  python3-rosdep \
  python3-setuptools \
  python3-vcstool \
  wget

输入后,完成安装

再输入:

python3 -m pip install -U \
  flake8-blind-except \
  flake8-builtins \
  flake8-class-newline \
  flake8-comprehensions \
  flake8-deprecated \
  flake8-docstrings \
  flake8-import-order \
  flake8-quotes \
  pytest-repeat \
  pytest-rerunfailures \
  pytest \
  setuptools

输入指令后会出现报错,依次输入指令解决:

【1】sudo mkdir -p /etc/ros/rosdep/sources.list.d/
【2】sudo curl -o /etc/ros/rosdep/sources.list.d/20-default.list https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
【3】export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml
【4】rosdep update --include-eol-distros
【5】echo 'export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml' >> ~/.bashrc

再次输入指令,即可成功下载~

这里大概率会报错:

ERROR: launchpadlib 1.10.13 requires testresources, which is not installed.

输入指令

sudo apt install python3-testresources

解决啦

梅开三度,再输入一遍指令,测试安装成功否~

八、安装rmw_implementation

1.下载Qv2ray

【参考链接】https://ivpsr.com/2162.html

需要下载Qv2ray软件与其内核文件,下面两个文件:

1.Qv2ray-v2.7.0-linux-x64.AppImage

Github链接:https://github.com/Qv2ray/Qv2ray/releases

2.v2ray-linux-64.zip 

Github链接:https://github.com/v2fly/v2ray-core/releases/tag/v4.31.0

将两个文件放到主目录下,注意要将zip文件解压,在界面点击右键在终端打开

输入指令添加权限:

chmod a+x Qv2ray-v2.7.0-linux-x64.AppImage

输入指令打开Qv2ray软件

./Qv2ray-v2.7.0-linux-x64.AppImage【执行Qv2ray】

选择首选项

按照上述步骤配置内核

然后设置订阅,完成订阅确认后,点击你的订阅分组,右键更新订阅,就可以看到节点啦

2.安装Git

输入指令安装Git,这里很可能Git已经被安装过了,所以已经是最新版,保险起见还是指令安装一下

3.克隆Autoware到本地

输入指令安装autoware到本地文件夹

mkdir autoware_universe
cd autoware_universe/
git clone https://github.com/autowarefoundation/autoware.git -b galactic

这里很可能报错链接超时,这里就需要打开Qv2ray,并且配置一下端口

指令打开Qv2ray:

./Qv2ray-v2.7.0-linux-x64.AppImage

打开后链接到节点喔~~

然后需要配置git端口指令输入:

git config --global http.proxy 127.0.0.1:XXXX

git config --global https.proxy 127.0.0.1:XXXX

【这里的XXXX需要根据自己情况设置,在Ubuntu右上角设置,网络代理】

点击网络代理

可以看到HTTP和HTTPS的代理端口,相应的将修改Git端口指令改为对于端口号,我的就是:

git config --global http.proxy 127.0.0.1:8889

git config --global https.proxy 127.0.0.1:8889

输入配置端口指令后,再次执行克隆指令,就可以将autoware克隆到本地啦!!!

4.自动安装相关依赖

进入下载好的autoware_universe文件夹下的autoware

cd autoware

再自动安装相关依赖

./setup-dev-env.sh

然后就是嘎嘎自动配置相关环境

让输入密码记得输入喔

最后,出现此报错就说明完成啦!后面会手动配置环境的~

5.安装rmw_implementation

配置一下环境变量

cd autoware_universe/
source amd64.env

【1】sudo apt update
【2】rmw_implementation_dashed=$(eval sed -e "s/_/-/g" <<< "${rmw_implementation}")
sudo apt install ros-${rosdistro}-${rmw_implementation_dashed}
【3】echo '' >> ~/.bashrc && echo "export RMW_IMPLEMENTATION=${rmw_implementation}" >> ~/.bashrc

完成~

九、安装pacmod

依次输入指令执行安装

【1】cd autoware_universe/
【2】source amd64.env
【3】sudo apt install apt-transport-https
【4】sudo sh -c 'echo "deb [trusted=yes] https://s3.amazonaws.com/autonomoustuff-repo/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/autonomoustuff-public.list'
【5】sudo apt update
【6】sudo apt install ros-${rosdistro}-pacmod3

十、安装autoware_core

pip3 install gdown

十一、安装autoware universe dependencies

1.指令安装(慢且不推荐)

输入指令安装autoware universe dependencies

【1】sudo apt install geographiclib-tools
【2】sudo geographiclib-get-geoids egm2008-1

嘎嘎下载(大概5小时)

中途可能多次关闭,但是会重新连接,耐心等待即可(ps:144MB的东西搞这么久服了)

下载需要4-5小时,取决于节点网络与站点网络,因为在下载到90%的时候突然犯病失败,心态炸了的我打算另辟蹊径,想着能不能自行安装,因为之前通过虚拟机指令安装成功,所以有下载的具体信息,所以采用了下面的方法(推荐)。

2.官网下载安装(快且推荐)

【官网】https://sourceforge.net/projects/geographiclib/postdownload

输入上面的官网链接,即可进入下载

记得科学上网,嘎嘎下载,网速快仅需1分钟

下载后,把压缩包解压

将下载解压的3个文件复制到/usr/share/GeographicLib/geoids目录下,完成啦,是不是轻松加愉快

【可以通过指令移动3个文件】

【1】sudo mv /home/akaxi-autoware/egm2008-1/geoids/egm2008-1.pgm /usr/share/GeographicLib/geoids
【2】sudo mv /home/akaxi-autoware/egm2008-1/geoids/egm2008-1.pgm.aux.xml /usr/share/GeographicLib/geoids
【3】sudo mv /home/akaxi-autoware/egm2008-1/geoids/egm2008-1.wld /usr/share/GeographicLib/geoids

成功~~撒花

十二、安装pre_commit

输入指令安装

【1】clang_format_version=14.0.6
【2】pip3 install pre-commit clang-format==${clang_format_version}

成功!

继续继续输入指令:

sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt install golang

嘎嘎下载

完成!!!加油~~

十三、安装CUDA

1.指令安装CUDA

输入指令安装

【1】cd autoware_universe/
【2】source amd64.env
【3】wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin

【4】sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
【5】sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub
【6】sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
【7】sudo apt-get update
【8】cuda_version_dashed=$(eval sed -e "s/[.]/-/g" <<< "${cuda_version}")
【9】sudo apt install cuda-${cuda_version_dashed} --no-install-recommends

2.问题解决

输入指令查看显卡:

nvidia-smi

这里我的笔记本支持CUDA版本12以上~

接下来到官网进行下载,选择需要的CUDA最好是env中写的11.6.2版本下载

【官网链接】https://developer.nvidia.com/cuda-toolkit-archive

输入lscpu查看电脑架构

选择架构后得到指令,在终端输入喔,我的是

【1】wget https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda_11.6.2_510.47.03_linux.run
【2】sudo sh cuda_11.6.2_510.47.03_linux.run

开始下载3.2G大小的文件,比较耗时间喔,大概20分钟

如果遇到下载暂停中断,显示s段错误(核心已转移),重复输入第一条指令下载试试,实在不行参考博客

【s段错误链接】https://blog.csdn.net/seaflyren/article/details/104131269

下载成功!!!

输入第二条指令安装

sudo sh cuda_11.6.2_510.47.03_linux.run

【这里输入指令需要等待一会儿~】

选择继续,然后回车

输入accept接受

回车,将安装驱动取消【不要取消!不要取消!不要取消!后面测试取消驱动安装失败啦】

选择安装,回车【Driver项目不要取消哈】

【耐心等待5min左右~~】

完成~

接下来配置一下环境变量,输入指令

sudo gedit ~/.bashrc

在打开的.bashrc最后添加下面两行喔:

export PATH=/usr/local/cuda-11.6/bin${PATH:+:${PATH}} 
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

保存后关闭

输入指令ncvv -V检查安装是否成功~

【如果输入指令显示未安装,在前面的驱动安装是否取消了,不要取消喔】

十四、安装cuDNN and TensorRT

输入指令安装CuDNN和TensorRT

【1】cd autoware_universe/
【2】source amd64.env
【3】sudo apt-get install libcudnn8=${cudnn_version} libcudnn8-dev=${cudnn_version}

【4】sudo apt-mark hold libcudnn8 libcudnn8-dev
【5】sudo apt-get install libnvinfer8=${tensorrt_version} libnvonnxparsers8=${tensorrt_version} libnvparsers8=${tensorrt_version} libnvinfer-plugin8=${tensorrt_version} libnvinfer-dev=${tensorrt_version} libnvonnxparsers-dev=${tensorrt_version} libnvparsers-dev=${tensorrt_version} libnvinfer-plugin-dev=${tensorrt_version}

输入Y继续下载喔

完成,继续输入指令下载

【6】sudo apt-mark hold libnvinfer8 libnvonnxparsers8 libnvparsers8 libnvinfer-plugin8 libnvinfer-dev libnvonnxparsers-dev libnvparsers-dev libnvinfer-plugin-dev

成功!!!

十五、下载Universe代码

新建一个src文件夹

右键在终端打开,输入指令打开autoware.repos文件进行修改

sudo gedit autoware.repos

在第27和第28行之间插入下面的代码

universe/external/open_planner:
    type: git
    url: https://github.com/ZATiTech/open_planner.git
    version: main

保存后退出,然后挂上节点

./Qv2ray-v2.7.0-linux-x64.AppImage【执行Qv2ray】

配置一下Git端口

git config --global http.proxy 127.0.0.1:8889
git config --global https.proxy 127.0.0.1:8889

执行指令

vcs import src < autoware.repos

成功!

可以看到src文件下成功下载universe代码咯!!!

十六、安装 Autoware ROS依赖包

1.失败案例

指令更新更新 rosdep 数据库

rosdep update

这里其实是失败的,,skip跳过了很多,回溯前面【第七章安装ros2_dev_tools】解决

【1】sudo mkdir -p /etc/ros/rosdep/sources.list.d/
【2】sudo curl -o /etc/ros/rosdep/sources.list.d/20-default.list https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
【3】export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml
【4】rosdep update --include-eol-distros
【5】echo 'export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml' >> ~/.bashrc

安装ROS依赖

【1】source /opt/ros/galactic/setup.bash
【2】rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO

如果遇到问题:

【解决链接】https://blog.csdn.net/weixin_50518868/article/details/119717777

用下面指令下载,把[XXX]里面的东西补上

sudo apt-get install ros-galactic-【缺少的依赖】

我缺少:
ros-galactic-velodyne_monitor
ros-galactic-pointcloud_preprocessor
ros-galactic-tier4_api_utils
ros-galactic-web_controller
ros-galactic-vehicle_info_util
【注意把_换成-】

那我的指令就是
sudo apt-get install ros-galactic-velodyne-monitor ros-galactic-pointcloud-preprocessor ros-galactic-tier4-api-utils ros-galactic-web-controller ros-galactic-pointcloud-preprocessor ros-galactic-velodyne-monitor ros-galactic-tier4-api-utils ros-galactic-vehicle-info-util

【但是提示我未定义到软件依赖项目,搜寻各大CSDN等博客未果,于是重头再来,删掉src,回退第十五章】

2.成功案例

先挂载节点【执行Qv2ray】

./Qv2ray-v2.7.0-linux-x64.AppImage

配置一下Git端口

git config --global http.proxy 127.0.0.1:8889
git config --global https.proxy 127.0.0.1:8889

更新rosdep

rosdep update --include-eol-distros

下载

【1】source /opt/ros/galactic/setup.bash
【2】rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO

【如果不成功,还是像前面的失败案例一样,把src文件删掉,重新按照十五章下载Universe代码,试试用mkdir src指令创建src文件夹,再来一次~】

这里下载open3d比较慢需要2小时左右

下载完open3d后,会下载各种依赖,还需要大概2小时~

回溯前面的报错,是这两个问题:

问题1

解决问题1:

pip install --upgrade --user setuptools==58.3.0

问题2

解决问题2,输入指令解决

pip install --upgrade setuptools

成功啦~~~~耗时4-5小时

十七、编译空间

输入指令开始编译: 

colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release

1.colcon编译的时老是卡死

【解决办法】

https://fishros.org.cn/forum/topic/116/colcon%E7%BC%96%E8%AF%91%E5%AF%BC%E8%87%B4%E7%B3%BB%E7%BB%9F%E5%8D%A1%E6%AD%BB%E9%97%AE%E9%A2%98-cpu100-%E6%88%96-%E5%86%85%E5%AD%98-100

给出参考指令:

colcon build --parallel-workers 6

colcon build --executor sequential

colcon编译时依次构建,不按照并行构建,下面的指令:

【也许可以】colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --executor sequential

2.trtexec_vendor包错误

只编译了48个包,现在科学上网试试。

先挂载节点【执行Qv2ray】

./Qv2ray-v2.7.0-linux-x64.AppImage

配置一下Git端口

git config --global http.proxy 127.0.0.1:8889

git config --global https.proxy 127.0.0.1:8889

再编译试试

显示网络问题

【解决办法】https://blog.csdn.net/yz2630570484/article/details/132902294#t17

编译报错:

trtexec_vendor包编译未通过导致编译失败,为trtexec_vendor包中git clone的依赖库下载失败(网络问题)

在autoware/src中找到对应程序包,将cmakelist中34行:

GIT_REPOSITORY https://github.com/NVIDIA/TensorRT

网址前添加代理https://ghproxy.com/,修改为:

GIT_REPOSITORY https://ghproxy.com/https://github.com/NVIDIA/TensorRT

保存后退出,删除编文件 build、log和install,重新编译即可

使用指令找到trtexec_vendor包

sudo find . -name "trtexec_vendor"

在路径:

~/autoware_universe/autoware/src/universe/autoware.universe/common/trtexec_vendor找到CMakeList.txt文件哦

打开后

在第39行找到:
GIT_REPOSITORY https://github.com/NVIDIA/TensorRT
改为:
GIT_REPOSITORY https://ghproxy.com/https://github.com/NVIDIA/TensorRT

保存后退出哦

删除编译文件 build、log和install,重新编译即可

取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy

编译完成后进行测试,待进行~~

2024.2.25

渝北仙桃数据谷

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

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

相关文章

代码随想录算法训练营Day27 || leetCode 93.复原IP地址 || 78.子集 || 90.子集II

93.复原IP地址 与分割回文串的代码相近&#xff0c;先写出判断函数&#xff0c;之后以判断结果为标准&#xff0c;执行回溯的代码。此题中使用点的个数来决定回溯的终止&#xff0c;需要学习一下。 class Solution { private:vector<string> result;bool isValid(const …

c语言经典测试题5

1.题1 t0; while(printf("*")) { t; if (t<3) break; }关于上述代码描述正确的是&#xff1f; A: 其中循环控制表达式与0等价 B: 其中循环控制表达式与0等价 C: 其中循环控制表达式是不合法的 D: 以上说法都不对 我们来分析一下&#xff1a;printf的返回值…

一个具有强大PDF处理能力的.Net开源项目

PDF具有跨平台、可读性强、不可修改性、无需特定阅读软件、内容安全等好处&#xff0c;在工作中经常都会用到。 所以&#xff0c;我们在项目开发中&#xff0c;经常需要生成PDF的文件&#xff0c;或者把Html、Xml等文件转化为PDF格式。 今天给大家推荐一个具有PDF处理能力的.…

消息队列-RabbitMQ:延迟队列、rabbitmq 插件方式实现延迟队列、整合SpringBoot

十六、延迟队列 1、延迟队列概念 延时队列内部是有序的&#xff0c;最重要的特性就体现在它的延时属性上&#xff0c;延时队列中的元素是希望在指定时间到了以后或之前取出和处理&#xff0c;简单来说&#xff0c;延时队列就是用来存放需要在指定时间被处理的元素的队列。 延…

20240113----重返学习-`nginx/conf/nginx.conf`的https证书配置说明

20240113----重返学习-nginx/conf/nginx.conf的https证书配置说明 文件说明 不同域名的多虚拟主机配置 server {listen 443 ssl;#在443端口上监听SSL/TLS流量;server_name localhost;#指定服务器名称&#xff0c;应该与域名匹配;ssl_certificate fangchaoduan.com.pem;#指定SS…

数据安全之路:深入了解MySQL的行锁与表锁机制

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 数据安全之路&#xff1a;深入了解MySQL的行锁与表锁机制 前言基础innodb中锁与索引的关系如何避免表锁 前言 在当今数据密集的应用中&#xff0c;数据库锁成为了确保数据一致性和并发操作的关键工具…

Java 拦截器深入了解学习

Java 拦截器深入了解学习 命运总是不如愿。 但往往是在无数的痛苦中&#xff0c;在重重的矛盾和艰难中&#xff0c;才使人成熟起来&#xff0c;坚强起来;虽然这些东西在实际感受中给人带来的并不都是欢乐。 ————路遥《平凡的世界》 什么是拦截器&#xff08;Interceptor&am…

【C++】C++对C语言的关系,拓展及命名空间的使用

文章目录 &#x1f4dd;C简述C融合了3种不同的编程方式&#xff1a;C和C语言关系是啥呢&#xff1f;C标准 &#x1f320;C应用&#x1f320;C语言优点第一个C程序 &#x1f320;命名空间&#x1f320;命名空间的使用命名空间的定义 &#x1f320;怎么使用命名空间中的内容呢&am…

强化学习入门到不想放弃-3

第三节我们主要讲一下SARSA模型 上节课的链接:强化学习入门到不想放弃-2 (qq.com) 有模型的概念:简单理解,上节课我讲的就是有模型,就是可以开上帝视角,知道全局地图 无模型的概念: 打CS,但是看不到地图的情况,全凭自己探索 今天的讲解环境还是和上节课一样,如下…

Movelt使用笔记-Movelt Setup Assistant

目录 Setup Assistant配置1 Start 加载urdf模型3 Virtual joints 虚拟关节5 Robot Poses 机器人位姿7 Passive Joints 被动关节8 Controllers 控制器9 Simulation 仿真10 3D Perception 3D感知11 Author Information 作者信息12 Configuration Files 配置文件启动MoveIt!Setup…

【Python笔记-设计模式】前端控制器模式

一、说明 常作为MVC&#xff08;Model-View-Controller&#xff09;模式的一部分&#xff0c;用来处理用户请求并将其分发给相应的处理程序&#xff08;即路由匹配&#xff09;。 (一) 解决问题 将请求的处理流程集中管理&#xff0c;统一处理所有的请求 (二) 使用场景 需…

学习或从事鸿蒙开发工作,有学历要求吗?

目前安卓有2,000万的开发者。本科及以上学历占比为35%&#xff1b;iOS有2,400万开发者&#xff0c;本科及以上学历占比为40% 绝大多数的前端开发者都是大专及以下学历&#xff0c;在2023年华为开发者大会上余承东透露华为的开发者目前有200万&#xff0c;但鸿蒙开发者统计的数据…

3.WEB渗透测试-前置基础知识-快速搭建渗透环境(上)

上一个内容&#xff1a;2.WEB渗透测试-前置基础知识-web基础知识和操作系统-CSDN博客 1.安装虚拟机系统 linux Kali官网下载地址&#xff1a; https://www.kali.org/get-kali/#kali-bare-metal Centos官网下载地址&#xff1a; https://www.centos.org/download/ Deepin官网下…

每个学计算机同学都应该有个创业梦

推荐计算机专业必看的两部电影 经典记录片电影《社交网络》推荐理由豆瓣评分电影简介 德国犯罪喜剧《如何在网上卖迷幻药》推荐理由剧情简介 两部电影主角对比 经典记录片电影《社交网络》 纪录扎克伯格&#xff0c;7年时间&#xff0c;从一名大学生摇身变成亿万富翁的故事 推荐…

解读OpenAI Sora文生视频技术原理

OpenAI Sora文生视频&#xff08;图像看作单帧视频&#xff09;一放出就炸翻整个AI 圈&#xff0c;也是ChatGPT掀起GenAI热潮时隔一年后&#xff0c;OpenAI再次史诗级的更新。OpenAI 随后公布的技术综述[文献1]&#xff0c;难掩其勃勃雄心&#xff1a;视频生成模型作为世界模拟…

Matlab自学笔记二十七:详解格式化文本sprintf各参数设置方法

1.一个程序引例 上篇文章已经介绍了格式化文本的初步应用&#xff0c;程序示例如下&#xff1a; sprintf(|%f\n|%.2f\n|%8.2f,pi*ones(1,3)) 2.格式化操作符各字段的含义解析 格式化操作符可以有六个字段&#xff0c;只有主字符%和转换格式是必需的&#xff0c;其他都是可选…

CSS3中盒子居中

&#xff08;1&#xff09;利用定位&#xff08;子绝父相&#xff09;、margin-left、和margin-top实现 &#xff08;2&#xff09;利用定位&#xff08;子绝父相&#xff09;、transfrom属性实现 &#xff08;3&#xff09;利用flex布局实现盒子居中

中科大计网学习记录笔记(十五):可靠数据传输的原理

前前言&#xff1a;看过本节的朋友应该都知道本节长度长的吓人&#xff0c;但其实内容含量和之前的差不多&#xff0c;老师在本节课举的例子和解释比较多&#xff0c;所以大家坚持看完是一定可以理解透彻的。本节课大部分是在提出问题和解决问题&#xff0c;先明确出现的问题是…

Ubuntu22.04和Windows10双系统安装

概要 本篇演示Ubuntu22.04和Windows10双系统的安装。先安装Ubuntu22.04&#xff0c;再安装Windows10。 一、说明 1、电脑 笔者的电脑品牌是acer(宏碁/宏基) 电脑开机按F2进入BIOS 电脑开机按F12进入Boot Manager 2、U盘启动盘 需要用到两个U盘启动盘 &#xff08;1&a…

IO进程线程day7作业

使用消息队列完成两个进程间相互通信 代码&#xff1a; msgsnd.c #include<myhead.h>//定义消息类型 struct msgbuf {long mtype;char mtext[1024]; };//宏表示消息正文大小 #define MSGSIZE sizeof(struct msgbuf)-sizeof(long)int main(int argc, const char *argv[…