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

【Ubuntu18.04】Autoware.ai安装

Autoware.ai安装

  • 引言
  • 1 ROS安装
  • 2 Ubuntu18.04安装Qt5.14.2
  • 3 安装GCC、G++
  • 4 Autoware.ai-1.14.0安装与编译
    • 4.1 源码的编译
      • 4.1.1 python2.7环境
      • 4.1,2 针对Ubuntu 18.04 / Melodic的依赖包安装
      • 4.1.3 先安装一些缺的ros依赖
      • 4.1.4 安装eigen3.3.7
      • 4.1.5 安装opencv 3.4.16
      • 4.1.6 编译
      • 4.1.7 运行
    • 4.2 Docker Autoware环境搭建
    • 4.3 运行 Autoware
    • 4.4 ROSBAG Demo

引言

Autoware是世界上第一个自动驾驶all-in-one的开源软件,基于Apache2协议,在ROS机器人操作系统基础上开发而来。主要有Autoware.ai、Autoware.Auto、Autoware.Universe三个版本
Autoware的三个版本简介
AI版本是基于ROS1.0实现的,十分适合于自动驾驶初学者,也适合有快速验证科研需求的高校实验室,因此本文主要介绍Autoware.ai的安装。

1 ROS安装

参考笔者的博客即可:【ROS】Ubuntu18.04安装Ros

2 Ubuntu18.04安装Qt5.14.2

QT官网下载qt-opensource-linux-x64-5.14.2.run
在这里插入图片描述
执行如下的安装步骤:

sudo chmod -R 777 qt-opensource-linux-x64-5.14.2.run
sudo ./qt-opensource-linux-x64-5.14.2.run  //将Qt安装在/opt目录
# 配置环境:Qt 安装完成后,先别打开,因为还需要安装其他工具以及库文件
sudo apt-get install gcc g++   //安装 linux 下编程的编译器
sudo apt-get install libqt4-dev  //不然编译时会出现错误“cannot find -lgl
sudo apt-get install build-essential //它可以使得我们的程序知道头文件和库函数放在哪个位置

添加环境变量

# 1 对profile进行修改
sudo gedit /etc/profile
# 2 添加环境变量
export QTDIR=/opt/Qt5.14.2/5.14.2
export PATH=$QTDIR/gcc_64/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/gcc_64/lib:$LD_LIBRARY_PATH
# 3 生效
source /etc/profile

查看版本

qmake -v

参考链接:Ubuntu18.04安装Qt5.14.2

3 安装GCC、G++

sudo apt-get install gcc-7 gcc-7-multilib
sudo apt-get install g++-7 g++-7-multilib

如果已经安装了GCC、G++但版本不够,升级一下:

sudo apt-get install -y gcc-7
sudo apt-get install -y g++-7
cd /usr/bin
sudo rm gcc
sudo ln -s gcc-7 gcc
sudo rm g++
sudo ln -s g++-7 g++

4 Autoware.ai-1.14.0安装与编译

安装官网链接链接:

Autoware的GitLab 仓库
硬件支持:

首选 i7 处理器,i5 也可以 (8)
16GB - 32GB 运行内存
至少 30GB 硬盘存储空间 (推荐使用固态硬盘)
显卡 NVIDIA GTX GeForce GPU (980M或更高性能)

笔者的安装流程如下:
在这里插入图片描述
3个方面入手学习:
(1) 编译安装,docker和源码
如果要源码编译,建议使用ubuntu18.04,doker编译,要有gpu编译,需要配匿doker-nvidia,配置过程参考htos://blog,sdn,net/gg_15409121/artidle/details/126384319
(2) ui界面的使用
(3)与carla联合仿真

4.1 源码的编译

官网安装教程:https://gitlab.com/autowarefoundation/autoware.ai/autoware/-/wikis/Source-Build
以下是笔者的安装流程:
建议使用Ubuntu18.04并安装好cuda
下载好源码,这里用1.14.0版本:
🔗1:GitHub
🔗2:autoware仓库

注意不要在conda里面运行

conda deactivate

step1: 下载解压进入目录执行

cd autoware-1.14.0
# 创建工作区
mkdir -p src 
# 将Autoware.AI下载到工作区
vcs import src < autoware.ai.repos

报错如下: 部分连接超时
在这里插入图片描述
解决方法:

git config --global  --unset https.https://github.com.proxy 
git config --global  --unset http.https://github.com.proxy 

参考链接: https://blog.csdn.net/qq_31375855/article/details/121838533
成功运行,则显示如下:

在这里插入图片描述

step2: 继续执行:

rosdep update

报错1:如果rosdep update报错:index-v4.yaml
在这里插入图片描述
注意:先查看自己的ros版本,指令如下:

roscore

在这里插入图片描述
如笔者的ros版本是melodic,按照如下链接对报错进行修改:
index-v4.yaml文件解决:https://zhuanlan.zhihu.com/p/479551543

报错2:再次运行rosdep update报错如下:
在这里插入图片描述

./python3/dist-packages/rosdistro/_init_.py文件内,将里面的语句
DEFAULT_INDEX_URL = ‘https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml’
改成:
DEFAULT_INDEX_URL = ‘file:/opt/ros/rosdistro/index-v4.yaml’
再rosdep update就ok了。

注意:文件位置因人而异,可以直接查找rosdistro文件夹所在位置
在这里插入图片描述

最后成功,显示如下:
在这里插入图片描述
step3: 继续执行:

# 官网指令
rosdep install -y --from-paths src --ignore-src --rosdistro SROS DISTRO
# 笔者成功运行指令,melodic是笔者安装的ros版本
rosdep install -y --from-paths src --ignore-src --rosdistro=melodic -y

在这里插入图片描述

报错如下:这是笔者按照官网教程执行出现的错误,若按照笔者上述流程应该不会有报错。

在这里插入图片描述
解决方法:

sudo apt-get install ros-melodic-nmea-msgs  # ros-melodic+需要安装的依赖包(报错中[]的内容,并将下“_”改成“-”)
sudo apt-get install ros-melodic-image-view2
# 以此类推逐一下载,直到再次运行如下指令,并出现如图的结果
rosdep install -y --from-paths src --ignore-src --rosdistro=melodic -y

All required rosdeps installed successfully

在这里插入图片描述
代表此问题解决!

4.1.1 python2.7环境

先查看python2和python3的版本信息
python2 --version
which python2
python3 --version
which python3
查看当前系统的python版本
python --version
依次装载python2和python3
sudo update-alternatives --install /usr/bin/pthon python /usr/bin/python2 0
sudo update-alternatives --install /usr/bin/pthon python /usr/bin/python3 1
查看update-alternatives维护的python列表
sudo update-alternatives --list python
python2和python3相互切换
sudo update-alternatives --config python

在这里插入图片描述

4.1,2 针对Ubuntu 18.04 / Melodic的依赖包安装

sudo apt update
sudo apt install -y python-catkin-pkg python-rosdep ros-$ROS_DISTRO-catkin
sudo apt install -y python3-pip python3-colcon-common-extensions python3-setuptools python3-vcstool
pip3 install -U setuptools
pip install catkin_pkg -i https://pypi.tuna.tsinghua.edu.cn/simple/
sudo apt install libglew-dev

在这里插入图片描述

4.1.3 先安装一些缺的ros依赖

sudo apt-get update
sudo apt-get install ros-melodic-jsk-recognition-msgs ros-melodic-jsk-rviz-plugins ros-melodic-nmea-msgs ros-melodic-rqt-gui ros-melodic-rqt-gui-py ros-melodic-nmea-navsat-driver ros-melodic-velodyne-pointcloud ros-melodic-grid-map-cv ros-melodic-grid-map-msgs ros-melodic-grid-map-ros ros-melodic-automotive-navigation-msgs ros-melodic-rosbash ros-melodic-autoware-msgs ros-melodic-automotive-platform-msgs ros-melodic-qpoases-vendor ros-melodic-xacro
sudo apt-get install ros-melodic-controller-manager ros-melodic-robot-state-publisher ros-melodic-joint-state-controller ros-melodic-gps-common ros-melodic-geodesy

在这里插入图片描述
在这里插入图片描述

4.1.4 安装eigen3.3.7

下载链接:https://gitlab.com/libeigen/eigen/-/releases/3.3.7
在这里插入图片描述
下载完成后,在压缩包所在目录打开终端

//解压
sudo tar -xzvf eigen-3.3.7.tar.gz
//安装
cd eigen-3.3.7
mkdir build
cd build
cmake ..
sudo make install

在这里插入图片描述
安装后头文件安装在/usr/local/include/eigen3/
在这里插入图片描述

4.1.5 安装opencv 3.4.16

https://blog.csdn.net/qq_58879770/article/details/127037125

4.1.6 编译

colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

4.1.7 运行

source install/setup.bash
roslaunch runtime_manager runtime_manager.launch

4.2 Docker Autoware环境搭建

创建工作空间

mkdir -p autoware.ai/src
cd autoware.ai

下载Autoware.AI的工作区配置

wget -O autoware.ai.repos "https://gitlab.com/autowarefoundation/autoware.ai/autoware/raw/master/autoware.ai.repos?inline=false"
vcs import src < autoware.ai.repos

使用rosdep安装依赖项

rosdep update

报错1:ROS rosdep update更新失败
在这里插入图片描述
解决方法:

sudo pip install rosdepc
sudo rosdepc init
rosdepc update

再下载依赖

# rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
rosdep install -y --from-paths src --ignore-src --rosdistro=melodic -y

执行成功则显示如下:
在这里插入图片描述

使用CUDA支持编译工作空间

AUTOWARE_COMPILE_WITH_CUDA=1 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

报错如下
在这里插入图片描述
但是在部分报错的包一般是不会用到的,可以在指令后面加入参数【–continue-on-error】忽略报错,到在后面的应用时有需要再添加。
重新执行指令如下:

AUTOWARE_COMPILE_WITH_CUDA=1 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release --continue-on-error

在这里插入图片描述

4.3 运行 Autoware

For Autoware version 1.12.0 and Newer
更早的版本运行指令详见ROSBAG Demo

cd ./autoware.ai
source install/setup.bash
roslaunch runtime_manager runtime_manager.launch

在这里插入图片描述
又启动一个Autoware的终端如下:
在这里插入图片描述
Autoware的界面如下:
在这里插入图片描述
参考链接:
链接1:Autoware 安装(源码)过程 与 踩坑记录(Ubuntu18.04)
链接2:NVIDIA Jetson Nano主机的autoware的学习与demo运行-第7章-Autoware源码安装
链接3:【Autoware】2小时安装Autoware1.13(保姆级教程)

4.4 ROSBAG Demo

官网链接:ROSBAG Demo
在这里插入图片描述

相关文章:

【Ubuntu18.04】Autoware.ai安装

Autoware.ai安装 引言1 ROS安装2 Ubuntu18.04安装Qt5.14.23 安装GCC、G4 Autoware.ai-1.14.0安装与编译4.1 源码的编译4.1.1 python2.7环境4.1,2 针对Ubuntu 18.04 / Melodic的依赖包安装4.1.3 先安装一些缺的ros依赖4.1.4 安装eigen3.3.74.1.5 安装opencv 3.4.164.1.6 编译4.1…...

SpringMVC 学习(一)Servlet

本系列文章为【狂神说 Java 】视频的课堂笔记&#xff0c;若有需要可配套视频学习。 1. Hello Servlet (1) 创建父工程 删除src文件夹 引入一些基本的依赖 <!--依赖--> <dependencies><dependency><groupId>junit</groupId><artifactId>…...

26943-2011 升降式高杆照明装置 课堂随笔

声明 本文是学习GB-T 26943-2011 升降式高杆照明装置. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了升降式高杆照明装置的技术要求、试验方法、检验规则以及标志、包装、运输及贮 存等。 本标准适用于公路、广场、机场、港口、…...

洛谷题解 | AT_abc321_c Primes on Interval

目录 题目翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 样例 #3样例输入 #3样例输出 #3 题目简化题目思路AC代码 题目翻译 【题目描述】 你决定用素数定理来做一个调查. 众所周知, 素数又被称为质数&#xff0c;其含义就是除了数…...

Quartus医院病房呼叫系统病床呼叫Verilog,源代码下载

名称&#xff1a;医院病房呼叫系统病床呼叫 软件&#xff1a;Quartus 语言&#xff1a;Verilog 要求&#xff1a; 1、用1~6个开关模拟6个病房的呼叫输入信号,1号优先级最高;1~6优先级依次降低; 2、 用一个数码管显示呼叫信号的号码;没信号呼叫时显示0;有多个信号呼叫时,显…...

ip的标准分类---分类的Ip

分类的 IP 即将 IP 地址划分为若干个固定类&#xff0c;每一类地址都由两个固定长度的字段组成。 其中第一个字段是网络号&#xff08;net-id&#xff09;&#xff0c;它标志主机或路由器所连接的网络。一个网络号在整个因特网内必须是唯一的。 第二个字段是主机号&#xf…...

理解并掌握C#的Channel:从使用案例到源码解读(一)

引言 在C#的并发编程中&#xff0c;Channel是一种非常强大的数据结构&#xff0c;用于在生产者和消费者之间进行通信。本文将首先通过一个实际的使用案例&#xff0c;介绍如何在C#中使用Channel&#xff0c;然后深入到Channel的源码中&#xff0c;解析其内部的实现机制。 使用案…...

如何让git命令仅针对当前目录

背景 我们有时候建的git仓库是这样的&#xff0c;a目录下有b、c、d三个模块&#xff08;文件夹&#xff09;。有时候只想查看b下面的变化&#xff0c;而使用 git status、git diff 的时候会把c和d的变化都列出来&#xff0c;要怎么只查b目录的变化&#xff1f; 操作 要查b目…...

【0223】源码剖析smgr底层设计机制(3)

1. smgr设计机制 PG内核中smgr完整磁盘存储介质的管理是通过下面三部分实现的。 1.1 函数指针结构体 f_smgr 函数指针结构体 f_smgr。 通过该函数指针类型,可完成类似于UNIX系统中的VFD功能,上层只需要调用open()、read()、write()等系统函数,用户不必去关系底层的文件系统…...

Visual Studio 2019 C# winform CefSharp 中播放视频及全屏播放

VS C# winform CefSharp 浏览器控件&#xff0c;默认不支持视频播放&#xff0c;好在有大佬魔改了dll&#xff0c;支持流媒体视频播放。虽然找了很久&#xff0c;好歹还是找到了一个版本100.0.230的dll&#xff08;资源放在文末&#xff09; 首先创建一个项目 第二、引入CefSha…...

天选之子Linux是如何发展起来的?为何对全球IT行业的影响如此之大?

天选之子Linux是如何发展起来的&#xff1f;为何对全球IT行业的影响如此之大&#xff1f; 前言一、UNIX发展史二、Linux发展历史三、开源四、官网五、 企业应用现状六、发行版本 前言 上面这副图是博主历时半小时完成的&#xff0c;给出了Linxu的一些发展背景。球球给位看官老…...

MDK报错:Undefined symbol assert_failed报错解决策略

MDK报错&#xff1a;Undefined symbol assert_failed报错解决策略 &#x1f3af;&#x1fa95;在全网搜索相关MDK编译报错:Error: L6218E: Undefined symbol assert_param (referred from xxx.o). ✨有些问题看似很简单&#xff0c;可能产生的问题是由于不经意的细节原因导致。…...

LLM - Make Causal Mask 构造因果关系掩码

目录 一.引言 二.make_causal_mask 1.完整代码 2.Torch.full 3.torch.view 4.torch.masked_fill_ 5.past_key_values_length 6.Test Main 三.总结 一.引言 Causal Mask 主要用于限定模型的可视范围&#xff0c;防止模型看到未来的数据。在具体应用中&#xff0c;Caus…...

Python函数式编程(一)概念和itertools

Python函数式编程是一种编程范式&#xff0c;它强调使用纯函数来处理数据。函数是程序的基本构建块&#xff0c;并且尽可能避免或最小化可变状态和副作用。在函数式编程中&#xff0c;函数被视为一等公民&#xff0c;可以像值一样传递和存储。 函数式编程概念 编程语言支持通…...

Guava限流器原理浅析

文章目录 基本知识限流器的类图使用示例 原理解析限流整体流程问题驱动1、限流器创建的时候会初始化令牌吗&#xff1f;2、令牌是如何放到桶里的&#xff1f;3、如果要获取的令牌数大于桶里的令牌数会怎么样4、令牌数量的更新会有并发问题吗 总结 实际工作中难免有限流的场景。…...

第四十二章 持久对象和SQL - 用于创建持久类和表的选项

文章目录 第四十二章 持久对象和SQL - 用于创建持久类和表的选项用于创建持久类和表的选项访问数据 第四十二章 持久对象和SQL - 用于创建持久类和表的选项 用于创建持久类和表的选项 要创建持久类及其对应的 SQL 表&#xff0c;可以执行以下任一操作&#xff1a; 使用 IDE …...

集合-ArrayList源码分析(面试)

系列文章目录 1.集合-Collection-CSDN博客​​​​​​ 2.集合-List集合-CSDN博客 3.集合-ArrayList源码分析(面试)_喜欢吃animal milk的博客-CSDN博客 目录 系列文章目录 前言 一 . 什么是ArrayList? 二 . ArrayList集合底层原理 总结 前言 大家好,今天给大家讲一下Arra…...

跨类型文本文件,反序列化与类型转换的思考

文章目录 应用场景序列化 - 对象替换原内容&#xff0c;方便使用编写程序取得结果数组 序列化 - JSON 应用场景 在编写热更新的时候&#xff0c;我发现了一个古早的 ini 文件&#xff0c;记录了许多有用的数据 由于使用的语言年份较新&#xff0c;没有办法较好地对 ini 文件的…...

ubuntu20安装nvidia驱动

1. 查看显卡型号 lspci | grep -i nvidia 我的输出&#xff1a; 01:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1080] (rev a1) 01:00.1 Audio device: NVIDIA Corporation GP104 High Definition Audio Controller (rev a1) 07:00.0 VGA comp…...

gma 2 成书计划

随着 gma 2 整体构建完成。下一步计划针对库内所有功能完成一个用户指南&#xff08;非网站&#xff09;。 封皮 主要章节 章节完成度相关链接第 1 章 GMA 概述已完成第 2 章 地理空间数据操作已完成第 3 章 坐标参考系统已完成第 4 章 地理空间制图已完成第 5 章 数学运算模…...

从零手搓一个【消息队列】项目设计、需求分析、模块划分、目录结构

文章目录 一、需求分析1, 项目简介2, BrokerServer 核心概念3, BrokerServer 提供的核心 API4, 交换机类型5, 持久化存储6, 网络通信7, TCP 连接的复用8, 需求分析小结 二、模块划分三、目录结构 提示&#xff1a;是正在努力进步的小菜鸟一只&#xff0c;如有大佬发现文章欠佳之…...

【Spring Cloud】深入探索 Nacos 注册中心的原理,服务的注册与发现,服务分层模型,负载均衡策略,微服务的权重设置,环境隔离

文章目录 前言一、初识 Nacos 注册中心1.1 什么是 Nacos1.2 Nacos 的安装&#xff0c;配置&#xff0c;启动 二、服务的注册与发现三、Nacos 服务分层模型3.1 Nacos 的服务分级存储模型3.2 服务跨集群调用问题3.3 服务集群属性设置3.4 修改负载均衡策略为集群策略 四、根据服务…...

No156.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…...

如何在PIL图像和PyTorch Tensor之间进行相互转换,使用pytorch进行PIL和tensor之间的数据转换

目录 引言PIL简介PyTorch和Torchvision简介PIL转换为TensorTensor转换为PIL实例代码和解释结论参考文献 &#x1f4dd; 引言 在计算机视觉领域&#xff0c;使用图像处理库对图像进行预处理是非常常见的。其中&#xff0c;Python Imaging Library&#xff08;PIL&#xff09;以…...

STM32F4X UCOSIII任务消息队列

STM32F4X UCOSIII任务消息队列 任务消息队列和内核消息队列对比内核消息队列内核消息队列 UCOSIII任务消息队列API任务消息队列发送函数任务消息队列接收函数 UCOSIII任务消息队列例程 之前的章节中讲解过消息队列这个机制&#xff0c;UCOSIII除了有内核消息队列之外&#xff0…...

8个居家兼职,帮助自己在家搞副业

越来越多的人开始追求居家工作的机会&#xff0c;无论是为了获得更多收入以改善生活质量&#xff0c;还是为了更好地平衡工作和家庭的关系&#xff0c;居家兼职已成为一种趋势。而在家中从事副业不仅能够为我们带来额外的收入&#xff0c;更重要的是&#xff0c;它可以让我们在…...

管理与系统思维

技术管理者不仅仅需要做事情&#xff0c;还需要以系统思维的方式推动组织变革&#xff0c;从而帮助团队和个人做到更好。原文: Management and Systems Thinking 图片来源: Dall-E "除非管理者考虑到组织的系统性&#xff0c;否则大多数提高绩效的努力都将注定失败。"…...

电死人的是电流还是电压?

先说答案&#xff0c;是电流。 这个有两个派别&#xff0c;一个是电流派&#xff0c;一个是电压派。 举个例子&#xff0c;拿我们的头发或者指甲之类的高电阻物质去接触高压&#xff0c;你会发现基本没有什么作用&#xff1b;还有就是冬天我们脱毛衣的时候&#xff0c;噼里啪啦…...

mac 编译问题记录

1、mac 编译提示 Unsupported option ‘--no-pie‘ Linux 上用 --no-pie mac 上用 -no-pie 2、mac 找不到 malloc.h 使用 #include <sys/malloc.h> Mac上使用malloc函数报错_mac malloc.h-CSDN博客...

centos 7.9同时安装JDK1.8和openjdk11两个版本

1.使用的原因 在服务器上&#xff0c;有些情况因为有一些系统比较老&#xff0c;所以需要使用JDK8版本&#xff0c;但随着时间的发展&#xff0c;新的软件出来&#xff0c;一般都会使用比较新的JDK版本。所以就出现了我们标题的需求&#xff0c;一个系统内同时安装两个不同的版…...

网站建设维护课件ppt/广州seo网站排名

有n个灯&#xff0c;k个人&#xff0c;第一个人把所有灯都打开&#xff0c;第二个人按下所有编号为2的倍数的开关&#xff08;这些灯将被关掉&#xff09;&#xff0c;第三个人按下编号是3的倍数的开关&#xff08;其中关掉的灯将2被打开&#xff0c;开着的灯将关闭&#xff09…...

君临天下游戏网站开发者/长沙网站优化公司

一切都要从Python这门编程语言说起…… 去年教育部考试中心发布了“关于全国计算机等级&#xff08;NCRE&#xff09;体系调整”的通知&#xff0c;决定自2018年3月起&#xff0c;在计算机二级考试加入了“Python语言程序员设计”科目&#xff1b; 早些消息&#xff0c;浙江省…...

tq网站建设/百度网站怎么提升排名

Java是面向对象的程序设计语言&#xff0c;Java语言提供了定义类&#xff0c;定义属性、方法等基本功能。类可以被认为是一种自定义数据类型&#xff0c;可以使用类来定义变量&#xff0c;定义的变量为引用类型的变量&#xff0c;它会引用到类的对象&#xff0c;对象由类负责创…...

磐安建设局网站/海外品牌推广

质谱可以用来测量样品中带电分子(离子)的丰度&#xff08;即一个特定的质荷比 m/z的离子计数&#xff09;。 但是&#xff0c;当许多离子具有相同或非常相似的 m/z&#xff0c;光凭借质谱是很难或不可能进行区分的。因此&#xff0c;MS 经常与其他分离技术相结合&#xff0c;基…...

国际交易所app下载/抖音搜索优化

回文字符串 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB 难度&#xff1a;4描述 所谓回文字符串&#xff0c;就是一个字符串&#xff0c;从左到右读和从右到左读是完全一样的&#xff0c;比如"aba"。当然&#xff0c;我们给你的问题不会再简单到判…...

app定制开发的公司/安卓优化大师手机版

JavaWeb 应用设计及实战 目录 上一章 下一章 上一个任务/上一节 下一个任务/下一节 目录 任务3&#xff1a;使用原生 JSON 格式构建响应数据 6.3.1 认识 JSON 1.定义 JSON 对象 2. 定义 JSON 数组 6.3.2 定义使用 JSON 格式的数据 示例4 HTML 关键代码&#xff…...